<?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>170380</bug_id>
          
          <creation_ts>2017-04-01 00:00:06 -0700</creation_ts>
          <short_desc>WebAssembly: make our implementation closer to the metal, for speed</short_desc>
          <delta_ts>2017-04-03 10:34:40 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>159775</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="JF Bastien">jfbastien</reporter>
          <assigned_to name="JF Bastien">jfbastien</assigned_to>
          <cc>buildbot</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1293440</commentid>
    <comment_count>0</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-04-01 00:00:06 -0700</bug_when>
    <thetext>𝔚𝔢𝔟𝔄𝔰𝔰𝔢𝔪𝔟𝔩𝔶 should be 𝔪𝔢𝔱𝔞𝔩. Being 𝔪𝔢𝔱𝔞𝔩 and 𝔩𝔬𝔴-𝔩𝔢𝔳𝔢𝔩 makes us ＦＡＳＴ.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293441</commentid>
    <comment_count>1</comment_count>
      <attachid>306041</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-04-01 00:00:50 -0700</bug_when>
    <thetext>Created attachment 306041
𝔚𝔢𝔟𝔄𝔰𝔰𝔢𝔪𝔟𝔩𝔶.patch

This should make 𝔚𝔢𝔟𝔄𝔰𝔰𝔢𝔪𝔟𝔩𝔶 much faster.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293442</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-04-01 00:02:50 -0700</bug_when>
    <thetext>Attachment 306041 did not pass style-queue:


ERROR: Source/JavaScriptCore/ChangeLog:1:  ChangeLog entry has no bug number  [changelog/bugnumber] [5]
Total errors found: 1 in 79 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293474</commentid>
    <comment_count>3</comment_count>
      <attachid>306041</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-04-01 11:34:19 -0700</bug_when>
    <thetext>Comment on attachment 306041
𝔚𝔢𝔟𝔄𝔰𝔰𝔢𝔪𝔟𝔩𝔶.patch

🎉</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293656</commentid>
    <comment_count>4</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-04-03 09:26:37 -0700</bug_when>
    <thetext>It&apos;s unfortunate that GTK and Windows builds do not support 𝔩𝔬𝔴-𝔩𝔢𝔳𝔢𝔩 and 𝔪𝔢𝔱𝔞𝔩 code, when MacOS and iOS do. I guess we&apos;ll have to give up some of our potential performance edge for the sake of maintainability.

I&apos;ll revisit this idea exactly a year from when I originally proposed it.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>306041</attachid>
            <date>2017-04-01 00:00:50 -0700</date>
            <delta_ts>2017-04-03 10:34:40 -0700</delta_ts>
            <desc>𝔚𝔢𝔟𝔄𝔰𝔰𝔢𝔪𝔟𝔩𝔶.patch</desc>
            <filename>𝔚𝔢𝔟𝔄𝔰𝔰𝔢𝔪𝔟𝔩𝔶.patch</filename>
            <type>text/plain</type>
            <size>288133</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSA0Y2FkOGFjOTk1YWZmYWNjOGZhYWY1ZDRjNzRmOGJiMDc5OWY3OTU5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBGcmksIDMxIE1hciAyMDE3IDIzOjM0OjU0IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gPT9VVEYt
OD9xPz1GMD05RD05ND05QT1GMD05RD05ND1BMj1GMD05RD05ND05Rj89CiA9P1VURi04P3E/PUYw
PTlEPTk0PTg0PUYwPTlEPTk0PUIwPUYwPTlEPTk0PUIwPUYwPTlEPTk0PUEyPUYwPTlEPTk0PUFB
Pz0KID0/VVRGLTg/cT89RjA9OUQ9OTQ9OUY9RjA9OUQ9OTQ9QTk9RjA9OUQ9OTQ9QjY/PQpNSU1F
LVZlcnNpb246IDEuMApDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKQ29u
dGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAoKLS0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICB8IDUyOSArKysrKysrKysrKysrKysrKysrKysK
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwIHwgICAy
ICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwICAgICAgICAgICAgICB8
ICAgNiArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgICAgICAgICAgICAgICAgICAg
ICAgfCAgMTAgKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGVCYXNl
LmggICAgIHwgICAyICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3Bw
ICAgICAgICAgICB8ICAgMiArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxs
SW5saW5lcy5oICAgICAgfCAgIDQgKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcCAgIHwgIDEyICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oICAgICB8ICAxNCArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNUeXBlLmggICAgICAgICAgICAgfCAgIDYgKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmNwcCAgICAgICAgICAgICAgIHwgICA2ICstCiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5oICAgICAgICAgICAgICAgICB8ICAgNCArLQogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vSlNXZWJBc3NlbWJseS5jcHAgICAgICAgfCAgMTQgKy0KIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL0pTV2ViQXNzZW1ibHkuaCAgICAgICAgIHwgICA2ICstCiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAgICB8ICA0MCArLQog
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJpbmRpbmcuY3BwICAgICAgICAgfCAgMjAg
Ky0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Db250ZXh0LmggICAgICAgICAgIHwg
ICA0ICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5LmggICAgICAgICAg
ICB8ICAgMiArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZVBhcnNlci5j
cHAgICAgfCAgIDIgKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QbGFuLmggICAg
ICAgICAgICAgIHwgICAyICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGxhbklu
bGluZXMuaCAgICAgICB8ICAgNCArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVRo
dW5rcy5jcHAgICAgICAgICAgfCAgIDQgKy0KIC4uLi9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pT
V2ViQXNzZW1ibHlDYWxsZWUuY3BwIHwgIDEyICstCiAuLi4vSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9KU1dlYkFzc2VtYmx5Q2FsbGVlLmggICB8ICAgOCArLQogLi4uL3dhc20vanMvSlNXZWJBc3Nl
bWJseUNvZGVCbG9jay5jcHAgICAgICAgICAgICAgfCAgMjYgKy0KIC4uLi93YXNtL2pzL0pTV2Vi
QXNzZW1ibHlDb2RlQmxvY2suaCAgICAgICAgICAgICAgIHwgIDM2ICstCiAuLi4vd2FzbS9qcy9K
U1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yLmNwcCAgICAgICAgICB8ICAxMiArLQogLi4uL3dhc20v
anMvSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvci5oICAgICAgICAgICAgfCAgMTAgKy0KIC4uLi9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlIZWxwZXJzLmggIHwgIDE2ICstCiAu
Li4vd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwICAgICAgICAgICAgICB8ICA3NCAr
LS0KIC4uLi9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5oIHwg
IDQ2ICstCiAuLi4vd2FzbS9qcy9KU1dlYkFzc2VtYmx5TGlua0Vycm9yLmNwcCAgICAgICAgICAg
ICB8ICAxMiArLQogLi4uL3dhc20vanMvSlNXZWJBc3NlbWJseUxpbmtFcnJvci5oICAgICAgICAg
ICAgICAgfCAgMTAgKy0KIC4uLi9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlN
ZW1vcnkuY3BwIHwgIDI2ICstCiAuLi4vSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2Vt
Ymx5TWVtb3J5LmggICB8ICAxMCArLQogLi4uL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJB
c3NlbWJseU1vZHVsZS5jcHAgfCAgMjYgKy0KIC4uLi9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pT
V2ViQXNzZW1ibHlNb2R1bGUuaCAgIHwgIDIyICstCiAuLi4vd2FzbS9qcy9KU1dlYkFzc2VtYmx5
UnVudGltZUVycm9yLmNwcCAgICAgICAgICB8ICAgOCArLQogLi4uL3dhc20vanMvSlNXZWJBc3Nl
bWJseVJ1bnRpbWVFcnJvci5oICAgICAgICAgICAgfCAgIDggKy0KIC4uLi9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlUYWJsZS5jcHAgIHwgIDI4ICstCiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5VGFibGUuaCB8ICAxNCArLQogLi4uL3dhc20v
anMvV2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvci5jcHAgfCAgMzIgKy0KIC4uLi93
YXNtL2pzL1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3IuaCAgIHwgIDEwICstCiAu
Li4vd2FzbS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZS5jcHAgICB8ICAxNCAr
LQogLi4uL3dhc20vanMvV2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGUuaCAgICAgfCAg
IDYgKy0KIC4uLi9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3Bw
IHwgIDM4ICstCiAuLi4vSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9u
LmggICB8ICAyMiArLQogLi4uL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9y
LmNwcCAgICAgfCAgMzYgKy0KIC4uLi93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1
Y3Rvci5oICAgICAgIHwgIDE2ICstCiAuLi4vd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlUHJv
dG90eXBlLmNwcCAgICAgICB8ICAxNCArLQogLi4uL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5j
ZVByb3RvdHlwZS5oICAgICAgICAgfCAgIDYgKy0KIC4uLi93YXNtL2pzL1dlYkFzc2VtYmx5TGlu
a0Vycm9yQ29uc3RydWN0b3IuY3BwICAgIHwgIDMyICstCiAuLi4vd2FzbS9qcy9XZWJBc3NlbWJs
eUxpbmtFcnJvckNvbnN0cnVjdG9yLmggICAgICB8ICAxMCArLQogLi4uL3dhc20vanMvV2ViQXNz
ZW1ibHlMaW5rRXJyb3JQcm90b3R5cGUuY3BwICAgICAgfCAgMTQgKy0KIC4uLi93YXNtL2pzL1dl
YkFzc2VtYmx5TGlua0Vycm9yUHJvdG90eXBlLmggICAgICAgIHwgICA2ICstCiAuLi4vd2FzbS9q
cy9XZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmNwcCAgICAgICB8ICAzMiArLQogLi4uL3dh
c20vanMvV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvci5oICAgICAgICAgfCAgMTAgKy0KIC4u
Li93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmNwcCAgICAgICAgIHwgIDIyICst
CiAuLi4vd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5oICAgICAgICAgICB8ICAg
NiArLQogLi4uL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5jcHAgICAgICAg
fCAgNDAgKy0KIC4uLi93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IuaCAgICAg
ICAgIHwgIDEwICstCiAuLi4vd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZS5jcHAg
ICAgICAgICB8ICAyMCArLQogLi4uL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUu
aCAgICAgICAgICAgfCAgIDYgKy0KIC4uLi93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3Jk
LmNwcCAgICAgICAgICAgIHwgIDc0ICstLQogLi4uL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVS
ZWNvcmQuaCAgICAgICAgICAgICAgfCAgMTYgKy0KIC4uLi93YXNtL2pzL1dlYkFzc2VtYmx5UHJv
dG90eXBlLmNwcCAgICAgICAgICAgICAgIHwgIDI2ICstCiAuLi4vSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseVByb3RvdHlwZS5oICB8ICAgNiArLQogLi4uL3dhc20vanMvV2ViQXNz
ZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5jcHAgfCAgMzIgKy0KIC4uLi93YXNtL2pzL1dl
YkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3IuaCAgIHwgIDEwICstCiAuLi4vd2FzbS9q
cy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZS5jcHAgICB8ICAxNCArLQogLi4uL3dh
c20vanMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUuaCAgICAgfCAgIDYgKy0KIC4u
Li93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5jcHAgICAgICAgIHwgIDMyICst
CiAuLi4vd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3IuaCAgICAgICAgICB8ICAx
MCArLQogLi4uL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5jcHAgICAgICAgICAg
fCAgMzAgKy0KIC4uLi93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUuaCAgICAgICAg
ICAgIHwgICA2ICstCiAuLi4vd2FzbS9qcy9XZWJBc3NlbWJseVRvSlNDYWxsZWUuY3BwICAgICAg
ICAgICAgICB8ICAxOCArLQogLi4uL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlU
b0pTQ2FsbGVlLmggfCAgMTQgKy0KIC4uLi93YXNtL2pzL1dlYkFzc2VtYmx5V3JhcHBlckZ1bmN0
aW9uLmNwcCAgICAgICAgIHwgIDI0ICstCiAuLi4vd2FzbS9qcy9XZWJBc3NlbWJseVdyYXBwZXJG
dW5jdGlvbi5oICAgICAgICAgICB8ICAxMCArLQogNzkgZmlsZXMgY2hhbmdlZCwgMTE3OSBpbnNl
cnRpb25zKCspLCA2NTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXgg
MjViOTdmMi4uZGMzZTc4NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTMy
IEBACisyMDE3LTAzLTMxICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KKworICAg
ICAgICBXZWJBc3NlbWJseTogbWFrZSBvdXIgaW1wbGVtZW50YXRpb24gY2xvc2VyIHRvIHRoZSBt
ZXRhbCwgZm9yIHNwZWVkCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBpbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwOgorICAgICAgICAoSlNDOjpT
dGFja1Zpc2l0b3I6OkZyYW1lOjpjYWxsZWVTYXZlUmVnaXN0ZXJzKToKKyAgICAgICAgKiBqaXQv
UmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OndlYkFzc2VtYmx5T3duZXIpOgorICAgICAgICAo
SlNDOjpsaW5rRm9yKToKKyAgICAgICAgKEpTQzo6bGlua1BvbHltb3JwaGljQ2FsbCk6CisgICAg
ICAgICoganNjLmNwcDoKKyAgICAgICAgKGNhbGxXYXNtRnVuY3Rpb24pOgorICAgICAgICAoZnVu
Y3Rpb25UZXN0V2FzbU1vZHVsZUZ1bmN0aW9ucyk6CisgICAgICAgIChmdW5jdGlvbldlYkFzc2Vt
Ymx5TWVtb3J5TW9kZSk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlQmFzZS5oOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNDZWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjppc0FueVdh
c21DYWxsZWUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsSW5saW5lcy5oOgorICAgICAgICAo
SlNDOjpUb0pTQ2FsbGVlKToKKyAgICAgICAgKEpTQzo6aXNXZWJBc3NlbWJseVRvSlNDYWxsZWUp
OiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAg
ICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlLmg6CisgICAgICAgICogcnVudGlt
ZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5o
OgorICAgICAgICAqIHdhc20vSlNXZWJBc3NlbWJseS5jcHA6CisgICAgICAgIChKU0M6Ojo6Y3Jl
YXRlKToKKyAgICAgICAgKEpTQzo6OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjo6
OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6OjpKUyk6CisgICAgICAgIChKU0M6OkpT
V2ViQXNzZW1ibHk6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1i
bHk6OmNyZWF0ZVN0cnVjdHVyZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1i
bHk6OmZpbmlzaENyZWF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJs
eTo6SlNXZWJBc3NlbWJseSk6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9KU1dlYkFzc2VtYmx5
Lmg6CisgICAgICAgICogd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6
Oldhc206OkIzSVJHZW5lcmF0b3I6OnJlc3RvcmVXZWJBc3NlbWJseUdsb2JhbFN0YXRlKToKKyAg
ICAgICAgKEpTQzo6V2FzbTo6Y3JlYXRlSlNUb1dhc21XcmFwcGVyKToKKyAgICAgICAgKiB3YXNt
L1dhc21CaW5kaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6bWF0ZXJpYWxpemVJbXBvcnRK
U0NlbGwpOgorICAgICAgICAoSlNDOjpXYXNtOjp3YXNtVG9Kcyk6CisgICAgICAgIChKU0M6Oldh
c206Ondhc21Ub1dhc20pOgorICAgICAgICAqIHdhc20vV2FzbUNvbnRleHQuaDoKKyAgICAgICAg
KiB3YXNtL1dhc21NZW1vcnkuaDoKKyAgICAgICAgKiB3YXNtL1dhc21Nb2R1bGVQYXJzZXIuY3Bw
OgorICAgICAgICAqIHdhc20vV2FzbVBsYW4uaDoKKyAgICAgICAgKiB3YXNtL1dhc21QbGFuSW5s
aW5lcy5oOgorICAgICAgICAoSlNDOjpXYXNtOjpQbGFuOjppbml0aWFsaXplQ2FsbGVlcyk6Cisg
ICAgICAgICogd2FzbS9XYXNtVGh1bmtzLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6dGhyb3dF
eGNlcHRpb25Gcm9tV2FzbVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2Vi
QXNzZW1ibHlDYWxsZWUuY3BwOgorICAgICAgICAoSlNDOjpDYWxsZWUpOgorICAgICAgICAoSlND
OjpDYWxsZWU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Q2FsbGVlOjpkZXN0cm95
KToKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUNhbGxlZTo6SlNXZWJBc3NlbWJseUNhbGxl
ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlDYWxsZWU6OmZpbmlzaENy
ZWF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUNhbGxlZTo6ZGVz
dHJveSk6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q2FsbGVlLmg6
CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlDYWxsZWU6OmNyZWF0ZSk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlDYWxsZWU6OmNyZWF0ZVN0cnVjdHVyZSk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlDYWxsZWU6OmVudHJ5cG9pbnQpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5Q2FsbGVlOjpjYWxsZWVTYXZlUmVnaXN0
ZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxvY2su
Y3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
OmluaXRpYWxpemUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmRlc3Ryb3kpOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OmlzU2FmZVRvUnVuKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpVbmNvbmRpdGlvbmFs
RmluYWxpemVyOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSk6CisgICAgICAgIChKU0M6OkpTV2Vi
QXNzZW1ibHlDb2RlQmxvY2s6OkpTV2ViQXNzZW1ibHlDb2RlQmxvY2spOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5Q29kZUJsb2NrOjppbml0aWFsaXplKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUNvZGVCbG9jazo6ZGVzdHJveSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlDb2RlQmxvY2s6OmlzU2FmZVRvUnVuKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUNvZGVCbG9jazo6dmlzaXRDaGlsZHJl
bik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlDb2RlQmxvY2s6OlVuY29u
ZGl0aW9uYWxGaW5hbGl6ZXI6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KTogRGVsZXRlZC4KKyAg
ICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6
SlNXZWJBc3NlbWJseUNvZGVCbG9jazo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
SlNXZWJBc3NlbWJseUNvZGVCbG9jazo6Y3JlYXRlU3RydWN0dXJlKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6SlNXZWJBc3NlbWJseUNvZGVCbG9jazo6ZnVuY3Rpb25JbXBvcnRDb3VudCk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlDb2RlQmxvY2s6Om1vZGUpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5Q29kZUJsb2NrOjptb2R1bGUpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5Q29kZUJsb2NrOjppbml0aWFsaXplZCk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlDb2RlQmxvY2s6OnBsYW4pOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5Q29kZUJsb2NrOjpydW5uYWJsZSk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlDb2RlQmxvY2s6OmVycm9yTWVz
c2FnZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlDb2RlQmxvY2s6Ompz
RW50cnlwb2ludENhbGxlZUZyb21GdW5jdGlvbkluZGV4U3BhY2UpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpKU1dlYkFzc2VtYmx5Q29kZUJsb2NrOjp3YXNtRW50cnlwb2ludENhbGxlZUZyb21G
dW5jdGlvbkluZGV4U3BhY2UpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5
Q29kZUJsb2NrOjpzZXRKU0VudHJ5cG9pbnRDYWxsZWUpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpKU1dlYkFzc2VtYmx5Q29kZUJsb2NrOjpzZXRXYXNtRW50cnlwb2ludENhbGxlZSk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlDb2RlQmxvY2s6OmNhbGxlZXMpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5Q29kZUJsb2NrOjp3YXNtVG9Kc0NhbGxT
dHViRm9ySW1wb3J0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUNvZGVC
bG9jazo6b2Zmc2V0T2ZJbXBvcnRXYXNtVG9KU1N0dWIpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpKU1dlYkFzc2VtYmx5Q29kZUJsb2NrOjpvZmZzZXRPZkNhbGxlZXMpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5Q29kZUJsb2NrOjphbGxvY2F0aW9uU2l6ZSk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlDb2RlQmxvY2s6OmltcG9ydFdhc21Ub0pT
U3R1Yik6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29tcGlsZUVy
cm9yLmNwcDoKKyAgICAgICAgKEpTQzo6Q29tcGlsZUVycm9yOjpjcmVhdGUpOgorICAgICAgICAo
SlNDOjpDb21waWxlRXJyb3IpOgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5Q29tcGlsZUVy
cm9yOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5Q29tcGls
ZUVycm9yOjpKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6Y3JlYXRlSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcik6IERlbGV0ZWQuCisgICAgICAgICog
d2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yLmg6CisgICAgICAgIChKU0M6OkpTV2Vi
QXNzZW1ibHlDb21waWxlRXJyb3I6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9q
cy9KU1dlYkFzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoSlNDOjppc1dlYkFzc2VtYmx5SG9z
dEZ1bmN0aW9uKToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHA6
CisgICAgICAgIChKU0M6Okluc3RhbmNlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlND
OjpJbnN0YW5jZSk6CisgICAgICAgIChKU0M6Okluc3RhbmNlOjpmaW5pc2hDcmVhdGlvbik6Cisg
ICAgICAgIChKU0M6Okluc3RhbmNlOjpkZXN0cm95KToKKyAgICAgICAgKEpTQzo6SW5zdGFuY2U6
OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpJbnN0YW5jZTo6YWRkVW5pdGlhbGl6ZWRD
b2RlQmxvY2spOgorICAgICAgICAoSlNDOjpJbnN0YW5jZTo6ZmluYWxpemVDcmVhdGlvbik6Cisg
ICAgICAgIChKU0M6Okluc3RhbmNlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2U6OmNyZWF0ZVN0cnVjdHVyZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpT
V2ViQXNzZW1ibHlJbnN0YW5jZTo6SlNXZWJBc3NlbWJseUluc3RhbmNlKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUluc3RhbmNlOjpmaW5pc2hDcmVhdGlvbik6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6ZGVzdHJveSk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6dmlzaXRDaGlsZHJlbik6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6YWRkVW5pdGlh
bGl6ZWRDb2RlQmxvY2spOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5SW5z
dGFuY2U6OmZpbmFsaXplQ3JlYXRpb24pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU1dlYkFz
c2VtYmx5SW5zdGFuY2U6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9qcy9KU1dl
YkFzc2VtYmx5SW5zdGFuY2UuaDoKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUluc3RhbmNl
Ojpjb2RlQmxvY2spOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5SW5zdGFu
Y2U6OmluaXRpYWxpemVkKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUlu
c3RhbmNlOjptb2R1bGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5SW5z
dGFuY2U6OmltcG9ydEZ1bmN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNXZWJBc3Nl
bWJseUluc3RhbmNlOjptZW1vcnkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2U6OnNldE1lbW9yeSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTV2ViQXNz
ZW1ibHlJbnN0YW5jZTo6bWVtb3J5TW9kZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTV2Vi
QXNzZW1ibHlJbnN0YW5jZTo6dGFibGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU1dlYkFz
c2VtYmx5SW5zdGFuY2U6OmxvYWRJMzJHbG9iYWwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpK
U1dlYkFzc2VtYmx5SW5zdGFuY2U6OmxvYWRJNjRHbG9iYWwpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmxvYWRGMzJHbG9iYWwpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmxvYWRGNjRHbG9iYWwpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OnNldEdsb2JhbCk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0T2ZNZW1vcnkp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5SW5zdGFuY2U6Om9mZnNldE9m
VGFibGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5SW5zdGFuY2U6Om9m
ZnNldE9mQ2FsbGVlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUluc3Rh
bmNlOjpvZmZzZXRPZkdsb2JhbHMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2U6Om9mZnNldE9mVk0pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU1dlYkFz
c2VtYmx5SW5zdGFuY2U6Om9mZnNldE9mQ29kZUJsb2NrKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6SlNXZWJBc3NlbWJseUluc3RhbmNlOjpvZmZzZXRPZkltcG9ydEZ1bmN0aW9ucyk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0T2ZJbXBvcnRG
dW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6
YWxsb2NhdGlvblNpemUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5SW5z
dGFuY2U6OmltcG9ydEZ1bmN0aW9ucyk6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9qcy9KU1dl
YkFzc2VtYmx5TGlua0Vycm9yLmNwcDoKKyAgICAgICAgKEpTQzo6TGlua0Vycm9yOjpjcmVhdGUp
OgorICAgICAgICAoSlNDOjpMaW5rRXJyb3IpOgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5
TGlua0Vycm9yOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5
TGlua0Vycm9yOjpKU1dlYkFzc2VtYmx5TGlua0Vycm9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6Y3JlYXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcik6IERlbGV0ZWQuCisgICAgICAgICogd2Fz
bS9qcy9KU1dlYkFzc2VtYmx5TGlua0Vycm9yLmg6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1i
bHlMaW5rRXJyb3I6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9qcy9KU1dlYkFz
c2VtYmx5TWVtb3J5LmNwcDoKKyAgICAgICAgKEpTQzo6TWVtb3J5OjpjcmVhdGUpOgorICAgICAg
ICAoSlNDOjpNZW1vcnk6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6Ok1lbW9yeSk6
CisgICAgICAgIChKU0M6Ok1lbW9yeTo6YnVmZmVyKToKKyAgICAgICAgKEpTQzo6TWVtb3J5Ojpn
cm93KToKKyAgICAgICAgKEpTQzo6TWVtb3J5OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChK
U0M6Ok1lbW9yeTo6ZGVzdHJveSk6CisgICAgICAgIChKU0M6Ok1lbW9yeTo6dmlzaXRDaGlsZHJl
bik6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlNZW1vcnk6OmNyZWF0ZSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlNZW1vcnk6OmNyZWF0ZVN0cnVjdHVyZSk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlNZW1vcnk6OkpTV2ViQXNzZW1ibHlN
ZW1vcnkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5TWVtb3J5OjpidWZm
ZXIpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5TWVtb3J5Ojpncm93KTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseU1lbW9yeTo6ZmluaXNoQ3JlYXRp
b24pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5TWVtb3J5OjpkZXN0cm95
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseU1lbW9yeTo6dmlzaXRDaGls
ZHJlbik6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVtb3J5Lmg6
CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlNZW1vcnk6Om1lbW9yeSk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlNZW1vcnk6Om9mZnNldE9mTWVtb3J5KTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseU1lbW9yeTo6b2Zmc2V0T2ZTaXplKTogRGVs
ZXRlZC4KKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlNb2R1bGUuY3BwOgorICAgICAg
ICAoSlNDOjpNb2R1bGU6OmNyZWF0ZVN0dWIpOgorICAgICAgICAoSlNDOjpNb2R1bGU6OmNyZWF0
ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6Ok1vZHVsZSk6CisgICAgICAgIChKU0M6Ok1vZHVs
ZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpNb2R1bGU6OmRlc3Ryb3kpOgorICAg
ICAgICAoSlNDOjpNb2R1bGU6OnNldENvZGVCbG9jayk6CisgICAgICAgIChKU0M6Ok1vZHVsZTo6
dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlNb2R1bGU6OmNyZWF0
ZVN0dWIpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5TW9kdWxlOjpjcmVh
dGVTdHJ1Y3R1cmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5TW9kdWxl
OjpKU1dlYkFzc2VtYmx5TW9kdWxlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNXZWJBc3Nl
bWJseU1vZHVsZTo6ZmluaXNoQ3JlYXRpb24pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU1dl
YkFzc2VtYmx5TW9kdWxlOjpkZXN0cm95KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNXZWJB
c3NlbWJseU1vZHVsZTo6c2V0Q29kZUJsb2NrKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNX
ZWJBc3NlbWJseU1vZHVsZTo6dmlzaXRDaGlsZHJlbik6IERlbGV0ZWQuCisgICAgICAgICogd2Fz
bS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmg6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlN
b2R1bGU6Om1vZHVsZUluZm9ybWF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNXZWJB
c3NlbWJseU1vZHVsZTo6ZXhwb3J0U3ltYm9sVGFibGUpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpKU1dlYkFzc2VtYmx5TW9kdWxlOjpzaWduYXR1cmVJbmRleEZyb21GdW5jdGlvbkluZGV4U3Bh
Y2UpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5TW9kdWxlOjpjYWxsZWUp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5TW9kdWxlOjpjb2RlQmxvY2sp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5TW9kdWxlOjpzb3VyY2UpOiBE
ZWxldGVkLgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5jcHA6
CisgICAgICAgIChKU0M6OlJ1bnRpbWVFcnJvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6UnVu
dGltZUVycm9yKToKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcjo6Y3Jl
YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcjo6
SlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcik6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9qcy9K
U1dlYkFzc2VtYmx5UnVudGltZUVycm9yLmg6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlS
dW50aW1lRXJyb3I6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9qcy9KU1dlYkFz
c2VtYmx5VGFibGUuY3BwOgorICAgICAgICAoSlNDOjpUYWJsZTo6Y3JlYXRlKToKKyAgICAgICAg
KEpTQzo6VGFibGU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OlRhYmxlKToKKyAg
ICAgICAgKEpTQzo6VGFibGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6VGFibGU6
OmRlc3Ryb3kpOgorICAgICAgICAoSlNDOjpUYWJsZTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAg
IChKU0M6OlRhYmxlOjpncm93KToKKyAgICAgICAgKEpTQzo6VGFibGU6OmNsZWFyRnVuY3Rpb24p
OgorICAgICAgICAoSlNDOjpUYWJsZTo6c2V0RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpKU1dl
YkFzc2VtYmx5VGFibGU6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTV2ViQXNz
ZW1ibHlUYWJsZTo6Y3JlYXRlU3RydWN0dXJlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNX
ZWJBc3NlbWJseVRhYmxlOjpKU1dlYkFzc2VtYmx5VGFibGUpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpKU1dlYkFzc2VtYmx5VGFibGU6OmZpbmlzaENyZWF0aW9uKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6SlNXZWJBc3NlbWJseVRhYmxlOjpkZXN0cm95KTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6SlNXZWJBc3NlbWJseVRhYmxlOjp2aXNpdENoaWxkcmVuKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6SlNXZWJBc3NlbWJseVRhYmxlOjpncm93KTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6SlNXZWJBc3NlbWJseVRhYmxlOjpjbGVhckZ1bmN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6SlNXZWJBc3NlbWJseVRhYmxlOjpzZXRGdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAg
ICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5VGFibGUuaDoKKyAgICAgICAgKEpTQzo6SlNXZWJBc3Nl
bWJseVRhYmxlOjptYXhpbXVtKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJs
eVRhYmxlOjpzaXplKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseVRhYmxl
OjpnZXRGdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlUYWJs
ZTo6b2Zmc2V0T2ZTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseVRh
YmxlOjpvZmZzZXRPZkZ1bmN0aW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTV2ViQXNz
ZW1ibHlUYWJsZTo6aXNWYWxpZFNpemUpOiBEZWxldGVkLgorICAgICAgICAqIHdhc20vanMvV2Vi
QXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkNvbXBp
bGVFcnJvcik6CisgICAgICAgIChKU0M6OkNvbXBpbGVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGUp
OgorICAgICAgICAoSlNDOjpDb21waWxlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJl
KToKKyAgICAgICAgKEpTQzo6Q29tcGlsZUVycm9yQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9u
KToKKyAgICAgICAgKEpTQzo6Q29tcGlsZUVycm9yQ29uc3RydWN0b3IpOgorICAgICAgICAoSlND
OjpDb21waWxlRXJyb3JDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YSk6CisgICAgICAgIChK
U0M6OkNvbXBpbGVFcnJvckNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YSk6CisgICAgICAgIChKU0M6
OmNvbnN0cnVjdEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpjYWxsSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcik6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OldlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0
ZVN0cnVjdHVyZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5Q29tcGlsZUVy
cm9yQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
V2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvcjo6V2ViQXNzZW1ibHlDb21waWxlRXJy
b3JDb25zdHJ1Y3Rvcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5Q29tcGls
ZUVycm9yQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpXZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YSk6IERl
bGV0ZWQuCisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVj
dG9yLmg6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlw
ZS5jcHA6CisgICAgICAgIChKU0M6OkNvbXBpbGVFcnJvclByb3RvdHlwZTo6Y3JlYXRlKToKKyAg
ICAgICAgKEpTQzo6Q29tcGlsZUVycm9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAg
ICAgICAoSlNDOjpDb21waWxlRXJyb3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKEpTQzo6Q29tcGlsZUVycm9yUHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1i
bHlDb21waWxlRXJyb3JQcm90b3R5cGU6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OldlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZTo6Zmlu
aXNoQ3JlYXRpb24pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseUNvbXBpbGVF
cnJvclByb3RvdHlwZTo6V2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGUpOiBEZWxldGVk
LgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGUuaDoK
KyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwOgorICAgICAgICAoSlND
OjpGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAo
SlNDOjpGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb246
OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24p
OgorICAgICAgICAoSlNDOjpjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbik6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OldlYkFzc2VtYmx5RnVuY3Rpb246OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OldlYkFzc2VtYmx5RnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZSk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OldlYkFzc2VtYmx5RnVuY3Rpb246OldlYkFzc2VtYmx5RnVuY3Rpb24pOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseUZ1bmN0aW9uOjp2aXNpdENoaWxkcmVu
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlGdW5jdGlvbjo6ZmluaXNoQ3Jl
YXRpb24pOiBEZWxldGVkLgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5o
OgorICAgICAgICAoSlNDOjpGdW5jdGlvbjo6aW5zdGFuY2UpOgorICAgICAgICAoSlNDOjpGdW5j
dGlvbjo6b2Zmc2V0T2ZJbnN0YW5jZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uOjpvZmZzZXRP
Zldhc21FbnRyeVBvaW50Q29kZSk6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5RnVuY3Rpb246
Omluc3RhbmNlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlGdW5jdGlvbjo6
c2lnbmF0dXJlSW5kZXgpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseUZ1bmN0
aW9uOjp3YXNtRW50cnlwb2ludCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5
RnVuY3Rpb246OmpzRW50cnlwb2ludCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OldlYkFzc2Vt
Ymx5RnVuY3Rpb246Om9mZnNldE9mSW5zdGFuY2UpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpX
ZWJBc3NlbWJseUZ1bmN0aW9uOjpvZmZzZXRPZldhc21FbnRyeVBvaW50Q29kZSk6IERlbGV0ZWQu
CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpJbnN0YW5jZSk6CisgICAgICAgIChKU0M6Okluc3RhbmNlQ29uc3RydWN0
b3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6Okluc3RhbmNlQ29uc3RydWN0b3I6OmNyZWF0ZVN0
cnVjdHVyZSk6CisgICAgICAgIChKU0M6Okluc3RhbmNlQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0
aW9uKToKKyAgICAgICAgKEpTQzo6SW5zdGFuY2VDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6
Okluc3RhbmNlQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEpOgorICAgICAgICAoSlNDOjpJ
bnN0YW5jZUNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YSk6CisgICAgICAgIChKU0M6Okluc3RhbmNl
Q29uc3RydWN0b3I6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RKU1dl
YkFzc2VtYmx5SW5zdGFuY2UpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpjYWxsSlNXZWJBc3Nl
bWJseUluc3RhbmNlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlJbnN0YW5j
ZUNvbnN0cnVjdG9yOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJs
eUluc3RhbmNlQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OldlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3I6Oldl
YkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Oldl
YkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERh
dGEpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0
b3I6OnZpc2l0Q2hpbGRyZW4pOiBEZWxldGVkLgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1i
bHlJbnN0YW5jZUNvbnN0cnVjdG9yLmg6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUlu
c3RhbmNlUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SW5zdGFuY2VQcm90b3R5cGU6OmNy
ZWF0ZSk6CisgICAgICAgIChKU0M6Okluc3RhbmNlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUp
OgorICAgICAgICAoSlNDOjpJbnN0YW5jZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAoSlNDOjpJbnN0YW5jZVByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5
SW5zdGFuY2VQcm90b3R5cGU6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OldlYkFz
c2VtYmx5SW5zdGFuY2VQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OldlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZTo6V2Vi
QXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZSk6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9qcy9X
ZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmg6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3Nl
bWJseUxpbmtFcnJvckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6TGlua0Vycm9yKToK
KyAgICAgICAgKEpTQzo6TGlua0Vycm9yQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgIChK
U0M6OkxpbmtFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlND
OjpMaW5rRXJyb3JDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpM
aW5rRXJyb3JDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkxpbmtFcnJvckNvbnN0cnVjdG9y
OjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKEpTQzo6TGlua0Vycm9yQ29uc3RydWN0b3I6
OmdldENhbGxEYXRhKToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0SlNXZWJBc3NlbWJseUxpbmtF
cnJvcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OmNhbGxKU1dlYkFzc2VtYmx5TGlua0Vycm9y
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlMaW5rRXJyb3JDb25zdHJ1Y3Rv
cjo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlMaW5rRXJyb3JD
b25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2Vi
QXNzZW1ibHlMaW5rRXJyb3JDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpXZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0cnVjdG9yOjpXZWJBc3NlbWJs
eUxpbmtFcnJvckNvbnN0cnVjdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2ViQXNzZW1i
bHlMaW5rRXJyb3JDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YSk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OldlYkFzc2VtYmx5TGlua0Vycm9yQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKTog
RGVsZXRlZC4KKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5TGlua0Vycm9yQ29uc3RydWN0
b3IuaDoKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5TGlua0Vycm9yUHJvdG90eXBlLmNw
cDoKKyAgICAgICAgKEpTQzo6TGlua0Vycm9yUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAo
SlNDOjpMaW5rRXJyb3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6
OkxpbmtFcnJvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpMaW5r
RXJyb3JQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseUxpbmtFcnJvclByb3Rv
dHlwZTo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlMaW5rRXJy
b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Oldl
YkFzc2VtYmx5TGlua0Vycm9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OldlYkFzc2VtYmx5TGlua0Vycm9yUHJvdG90eXBlOjpXZWJBc3NlbWJseUxp
bmtFcnJvclByb3RvdHlwZSk6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJs
eUxpbmtFcnJvclByb3RvdHlwZS5oOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlNZW1v
cnlDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Ok1lbW9yeSk6CisgICAgICAgIChKU0M6
Ok1lbW9yeUNvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpNZW1vcnlDb25zdHJ1
Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6TWVtb3J5Q29uc3RydWN0b3I6
OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6TWVtb3J5Q29uc3RydWN0b3IpOgorICAg
ICAgICAoSlNDOjpNZW1vcnlDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YSk6CisgICAgICAg
IChKU0M6Ok1lbW9yeUNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YSk6CisgICAgICAgIChKU0M6Ok1l
bW9yeUNvbnN0cnVjdG9yOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0
SlNXZWJBc3NlbWJseU1lbW9yeSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OmNhbGxKU1dlYkFz
c2VtYmx5TWVtb3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlNZW1vcnlD
b25zdHJ1Y3Rvcjo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlN
ZW1vcnlDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6V2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yOjpXZWJBc3NlbWJs
eU1lbW9yeUNvbnN0cnVjdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlN
ZW1vcnlDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OldlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3I6OmdldENhbGxEYXRhKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvcjo6dmlzaXRDaGlsZHJl
bik6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVj
dG9yLmg6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5jcHA6
CisgICAgICAgIChKU0M6OmdldE1lbW9yeSk6CisgICAgICAgIChKU0M6OndlYkFzc2VtYmx5TWVt
b3J5UHJvdG9GdW5jR3Jvdyk6CisgICAgICAgIChKU0M6OndlYkFzc2VtYmx5TWVtb3J5UHJvdG9G
dW5jQnVmZmVyKToKKyAgICAgICAgKEpTQzo6TWVtb3J5UHJvdG90eXBlOjpjcmVhdGUpOgorICAg
ICAgICAoSlNDOjpNZW1vcnlQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChK
U0M6Ok1lbW9yeVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpNZW1v
cnlQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZTo6
Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5
cGU6OmNyZWF0ZVN0cnVjdHVyZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5
TWVtb3J5UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OldlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlOjpXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZSk6
IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5o
OgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5jcHA6Cisg
ICAgICAgIChKU0M6Ok1vZHVsZSk6CisgICAgICAgIChKU0M6Ok1vZHVsZUNvbnN0cnVjdG9yOjpj
cmVhdGVNb2R1bGUpOgorICAgICAgICAoSlNDOjpNb2R1bGVDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToK
KyAgICAgICAgKEpTQzo6TW9kdWxlQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAg
ICAgIChKU0M6Ok1vZHVsZUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChK
U0M6Ok1vZHVsZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6TW9kdWxlQ29uc3RydWN0b3I6
OmdldENvbnN0cnVjdERhdGEpOgorICAgICAgICAoSlNDOjpNb2R1bGVDb25zdHJ1Y3Rvcjo6Z2V0
Q2FsbERhdGEpOgorICAgICAgICAoSlNDOjpNb2R1bGVDb25zdHJ1Y3Rvcjo6dmlzaXRDaGlsZHJl
bik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEpTV2ViQXNzZW1ibHlNb2R1bGUpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpjYWxsSlNXZWJBc3NlbWJseU1vZHVsZSk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OldlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3I6OmNyZWF0ZU1vZHVsZSk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3I6OmNyZWF0
ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3I6
OmNyZWF0ZVN0cnVjdHVyZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5TW9k
dWxlQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
V2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvcjo6V2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rv
cik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3I6
OmdldENvbnN0cnVjdERhdGEpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseU1v
ZHVsZUNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Oldl
YkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3I6OnZpc2l0Q2hpbGRyZW4pOiBEZWxldGVkLgorICAg
ICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5oOgorICAgICAgICAq
IHdhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjp3
ZWJBc3NlbWJseU1vZHVsZVByb3RvQ3VzdG9tU2VjdGlvbnMpOgorICAgICAgICAoSlNDOjp3ZWJB
c3NlbWJseU1vZHVsZVByb3RvSW1wb3J0cyk6CisgICAgICAgIChKU0M6OndlYkFzc2VtYmx5TW9k
dWxlUHJvdG9FeHBvcnRzKToKKyAgICAgICAgKEpTQzo6TW9kdWxlUHJvdG90eXBlOjpjcmVhdGUp
OgorICAgICAgICAoSlNDOjpNb2R1bGVQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAg
ICAgIChKU0M6Ok1vZHVsZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlND
OjpNb2R1bGVQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseU1vZHVsZVByb3Rv
dHlwZTo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlNb2R1bGVQ
cm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OldlYkFz
c2VtYmx5TW9kdWxlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OldlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlOjpXZWJBc3NlbWJseU1vZHVsZVByb3Rv
dHlwZSk6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVByb3Rv
dHlwZS5oOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwOgor
ICAgICAgICAoSlNDOjpNb2R1bGVSZWNvcmQ6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChK
U0M6Ok1vZHVsZVJlY29yZDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6TW9kdWxlUmVjb3JkKToK
KyAgICAgICAgKEpTQzo6TW9kdWxlUmVjb3JkOjpkZXN0cm95KToKKyAgICAgICAgKEpTQzo6TW9k
dWxlUmVjb3JkOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6Ok1vZHVsZVJlY29yZDo6
dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6Ok1vZHVsZVJlY29yZDo6bGluayk6CisgICAg
ICAgIChKU0M6OmRhdGFTZWdtZW50RmFpbCk6CisgICAgICAgIChKU0M6Ok1vZHVsZVJlY29yZDo6
ZXZhbHVhdGUpOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6Y3JlYXRl
U3RydWN0dXJlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlNb2R1bGVSZWNv
cmQ6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5TW9kdWxlUmVj
b3JkOjpXZWJBc3NlbWJseU1vZHVsZVJlY29yZCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Oldl
YkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpkZXN0cm95KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmZpbmlzaENyZWF0aW9uKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OnZpc2l0Q2hpbGRyZW4pOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6bGluayk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpldmFsdWF0ZSk6IERlbGV0
ZWQuCisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5oOgorICAgICAg
ICAqIHdhc20vanMvV2ViQXNzZW1ibHlQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjp3ZWJB
c3NlbWJseUNvbXBpbGVGdW5jKToKKyAgICAgICAgKEpTQzo6cmVzb2x2ZSk6CisgICAgICAgIChK
U0M6Omluc3RhbnRpYXRlKToKKyAgICAgICAgKEpTQzo6Y29tcGlsZUFuZEluc3RhbnRpYXRlKToK
KyAgICAgICAgKEpTQzo6d2ViQXNzZW1ibHlJbnN0YW50aWF0ZUZ1bmMpOgorICAgICAgICAoSlND
OjpQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OlByb3RvdHlwZTo6Y3JlYXRlU3Ry
dWN0dXJlKToKKyAgICAgICAgKEpTQzo6UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAg
ICAgIChKU0M6OlByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5UHJvdG90eXBl
OjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseVByb3RvdHlwZTo6
Y3JlYXRlU3RydWN0dXJlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlQcm90
b3R5cGU6OmZpbmlzaENyZWF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2ViQXNzZW1i
bHlQcm90b3R5cGU6OldlYkFzc2VtYmx5UHJvdG90eXBlKTogRGVsZXRlZC4KKyAgICAgICAgKiB3
YXNtL2pzL1dlYkFzc2VtYmx5UHJvdG90eXBlLmg6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3Nl
bWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6UnVudGltZUVy
cm9yKToKKyAgICAgICAgKEpTQzo6UnVudGltZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OlJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgor
ICAgICAgICAoSlNDOjpSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgor
ICAgICAgICAoSlNDOjpSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OlJ1
bnRpbWVFcnJvckNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKEpTQzo6
UnVudGltZUVycm9yQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKToKKyAgICAgICAgKEpTQzo6Y29u
c3RydWN0SlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OmNhbGxKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
V2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6V2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3Ry
dWN0dXJlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlSdW50aW1lRXJyb3JD
b25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXZWJB
c3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yOjpXZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNv
bnN0cnVjdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlSdW50aW1lRXJy
b3JDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OldlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKTogRGVsZXRl
ZC4KKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3Iu
aDoKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlLmNw
cDoKKyAgICAgICAgKEpTQzo6UnVudGltZUVycm9yUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAg
ICAoSlNDOjpSdW50aW1lRXJyb3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAg
IChKU0M6OlJ1bnRpbWVFcnJvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAo
SlNDOjpSdW50aW1lRXJyb3JQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseVJ1
bnRpbWVFcnJvclByb3RvdHlwZTo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2Vi
QXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlOjpmaW5pc2hD
cmVhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5UnVudGltZUVycm9y
UHJvdG90eXBlOjpXZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZSk6IERlbGV0ZWQuCisg
ICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZS5oOgorICAg
ICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAg
KEpTQzo6VGFibGUpOgorICAgICAgICAoSlNDOjpUYWJsZUNvbnN0cnVjdG9yOjpjcmVhdGUpOgor
ICAgICAgICAoSlNDOjpUYWJsZUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAg
ICAoSlNDOjpUYWJsZUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6
OlRhYmxlQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpUYWJsZUNvbnN0cnVjdG9yOjpnZXRD
b25zdHJ1Y3REYXRhKToKKyAgICAgICAgKEpTQzo6VGFibGVDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERh
dGEpOgorICAgICAgICAoSlNDOjpUYWJsZUNvbnN0cnVjdG9yOjp2aXNpdENoaWxkcmVuKToKKyAg
ICAgICAgKEpTQzo6Y29uc3RydWN0SlNXZWJBc3NlbWJseVRhYmxlKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6Y2FsbEpTV2ViQXNzZW1ibHlUYWJsZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OldlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvcjo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6V2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3I6OmZpbmlzaENy
ZWF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVj
dG9yOjpXZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3IpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpXZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3I6OmdldENhbGxEYXRh
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yOjp2
aXNpdENoaWxkcmVuKTogRGVsZXRlZC4KKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5VGFi
bGVDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlUYWJsZVByb3Rv
dHlwZS5jcHA6CisgICAgICAgIChKU0M6OmdldFRhYmxlKToKKyAgICAgICAgKEpTQzo6d2ViQXNz
ZW1ibHlUYWJsZVByb3RvRnVuY0xlbmd0aCk6CisgICAgICAgIChKU0M6OndlYkFzc2VtYmx5VGFi
bGVQcm90b0Z1bmNHcm93KToKKyAgICAgICAgKEpTQzo6d2ViQXNzZW1ibHlUYWJsZVByb3RvRnVu
Y0dldCk6CisgICAgICAgIChKU0M6OndlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNTZXQpOgorICAg
ICAgICAoSlNDOjpUYWJsZVByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6VGFibGVQ
cm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OlRhYmxlUHJvdG90eXBl
OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OlRhYmxlUHJvdG90eXBlKToKKyAgICAg
ICAgKEpTQzo6V2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZTo6Y3JlYXRlKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6V2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZTo6ZmluaXNo
Q3JlYXRpb24pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseVRhYmxlUHJvdG90
eXBlOjpXZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlKTogRGVsZXRlZC4KKyAgICAgICAgKiB3YXNt
L2pzL1dlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUuaDoKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFz
c2VtYmx5VG9KU0NhbGxlZS5jcHA6CisgICAgICAgIChKU0M6OlRvSlNDYWxsZWU6OmNyZWF0ZSk6
CisgICAgICAgIChKU0M6OlRvSlNDYWxsZWU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChK
U0M6OlRvSlNDYWxsZWUpOgorICAgICAgICAoSlNDOjpUb0pTQ2FsbGVlOjpmaW5pc2hDcmVhdGlv
bik6CisgICAgICAgIChKU0M6OlRvSlNDYWxsZWU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAo
SlNDOjpXZWJBc3NlbWJseVRvSlNDYWxsZWU6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OldlYkFzc2VtYmx5VG9KU0NhbGxlZTo6Y3JlYXRlU3RydWN0dXJlKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6V2ViQXNzZW1ibHlUb0pTQ2FsbGVlOjpXZWJBc3NlbWJseVRvSlNDYWxsZWUp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseVRvSlNDYWxsZWU6OmZpbmlzaENy
ZWF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlUb0pTQ2FsbGVlOjp2
aXNpdENoaWxkcmVuKTogRGVsZXRlZC4KKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5VG9K
U0NhbGxlZS5oOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24u
Y3BwOgorICAgICAgICAoSlNDOjpXcmFwcGVyRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpXcmFw
cGVyRnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OldyYXBwZXJGdW5jdGlvbjo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpXcmFwcGVyRnVuY3Rpb246OmNyZWF0ZVN0cnVj
dHVyZSk6CisgICAgICAgIChKU0M6OldyYXBwZXJGdW5jdGlvbjo6dmlzaXRDaGlsZHJlbik6Cisg
ICAgICAgIChKU0M6OmNhbGxXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbik6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OldlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uOjpXZWJBc3NlbWJseVdyYXBw
ZXJGdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5V3JhcHBlckZ1
bmN0aW9uOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseVdyYXBw
ZXJGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXZWJB
c3NlbWJseVdyYXBwZXJGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6V2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb246OnZpc2l0Q2hpbGRyZW4pOiBEZWxl
dGVkLgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uaDoKKyAg
ICAgICAgKEpTQzo6V2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb246OnNpZ25hdHVyZUluZGV4KTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb246Ondhc21F
bnRyeXBvaW50KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlXcmFwcGVyRnVu
Y3Rpb246OmZ1bmN0aW9uKTogRGVsZXRlZC4KKwogMjAxNy0wMy0zMSAgU2FhbSBCYXJhdGkgIDxz
YmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJBc3NlbWJseTogTWFrZSBvdXIgY2FsbHMg
b3V0IHRvIEpTIFBJQyBmcmllbmRseQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcAppbmRleCBhYWU2ZGFhLi42NDJjNTAyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcApA
QCAtMjU1LDcgKzI1NSw3IEBAIFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBTdGFja1Zpc2l0b3I6OkZy
YW1lOjpjYWxsZWVTYXZlUmVnaXN0ZXJzKCkKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAg
aWYgKGlzV2FzbUZyYW1lKCkpIHsKICAgICAgICAgaWYgKEpTQ2VsbCogY2FsbGVlID0gdGhpcy0+
Y2FsbGVlKCkpIHsKLSAgICAgICAgICAgIGlmIChKU1dlYkFzc2VtYmx5Q2FsbGVlKiB3YXNtQ2Fs
bGVlID0ganNEeW5hbWljQ2FzdDxKU1dlYkFzc2VtYmx5Q2FsbGVlKj4oKmNhbGxlZS0+dm0oKSwg
Y2FsbGVlKSkKKyAgICAgICAgICAgIGlmIChKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLw
nZSq8J2Un/CdlKnwnZS2Q2FsbGVlKiB3YXNtQ2FsbGVlID0ganNEeW5hbWljQ2FzdDxKU/CdlJrw
nZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2Q2FsbGVlKj4oKmNhbGxlZS0+
dm0oKSwgY2FsbGVlKSkKICAgICAgICAgICAgICAgICByZXR1cm4gd2FzbUNhbGxlZS0+Y2FsbGVl
U2F2ZVJlZ2lzdGVycygpOwogICAgICAgICAgICAgLy8gT3RoZXIgd2FzbSBjYWxsZWVzIChlLmcs
IHN0dWJzKSBkb24ndCB1c2UgY2FsbGVlIHNhdmUgcmVnaXN0ZXJzLCBzbyBub3RoaW5nIG5lZWRz
CiAgICAgICAgICAgICAvLyB0byBiZSByZXN0b3JlZCBmb3IgdGhlbS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1JlcGF0Y2guY3BwCmluZGV4IGEwMzRjNWRlLi5kMGNmODVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTU4MCw3ICs1ODAsNyBAQCBzdGF0aWMgSlNDZWxs
KiB3ZWJBc3NlbWJseU93bmVyKEpTQ2VsbCogY2FsbGVlKQogewogI2lmIEVOQUJMRShXRUJBU1NF
TUJMWSkKICAgICAvLyBFYWNoIFdlYkFzc2VtYmx5Lkluc3RhbmNlIHNoYXJlcyB0aGUgc3R1YnMg
ZnJvbSB0aGVpciBXZWJBc3NlbWJseS5Nb2R1bGUsIHdoaWNoIGFyZSB0aGVyZWZvcmUgdGhlIGFw
cHJvcHJpYXRlIG93bmVyLgotICAgIHJldHVybiBqc0Nhc3Q8V2ViQXNzZW1ibHlUb0pTQ2FsbGVl
Kj4oY2FsbGVlKS0+bW9kdWxlKCk7CisgICAgcmV0dXJuIGpzQ2FzdDzwnZSa8J2UovCdlJ/wnZSE
8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtlRvSlNDYWxsZWUqPihjYWxsZWUpLT5tb2R1bGUo
KTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGNhbGxlZSk7CiAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKQEAgLTU5OSw3ICs1OTksNyBAQCB2b2lkIGxpbmtGb3IoCiAgICAgQ29k
ZUJsb2NrKiBjYWxsZXJDb2RlQmxvY2sgPSBjYWxsZXJGcmFtZS0+Y29kZUJsb2NrKCk7CiAKICAg
ICAvLyBXZWJBc3NlbWJseSAtPiBKUyBzdHVicyBkb24ndCBoYXZlIGEgdmFsaWQgQ29kZUJsb2Nr
LgotICAgIEpTQ2VsbCogb3duZXIgPSBpc1dlYkFzc2VtYmx5VG9KU0NhbGxlZShjYWxsZXJGcmFt
ZS0+Y2FsbGVlKCkpID8gd2ViQXNzZW1ibHlPd25lcihjYWxsZXJGcmFtZS0+Y2FsbGVlKCkpIDog
Y2FsbGVyQ29kZUJsb2NrOworICAgIEpTQ2VsbCogb3duZXIgPSBpc/CdlJrwnZSi8J2Un/CdlITw
nZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2VG9KU0NhbGxlZShjYWxsZXJGcmFtZS0+Y2FsbGVl
KCkpID8gd2ViQXNzZW1ibHlPd25lcihjYWxsZXJGcmFtZS0+Y2FsbGVlKCkpIDogY2FsbGVyQ29k
ZUJsb2NrOwogICAgIEFTU0VSVChvd25lcik7CiAKICAgICBBU1NFUlQoIWNhbGxMaW5rSW5mby5p
c0xpbmtlZCgpKTsKQEAgLTcxOSw3ICs3MTksNyBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwo
CiAgICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSA9IGV4ZWMtPmNhbGxlckZyYW1lKCk7CiAgICAg
Vk0mIHZtID0gY2FsbGVyRnJhbWUtPnZtKCk7CiAgICAgQ29kZUJsb2NrKiBjYWxsZXJDb2RlQmxv
Y2sgPSBjYWxsZXJGcmFtZS0+Y29kZUJsb2NrKCk7Ci0gICAgYm9vbCBpc1dlYkFzc2VtYmx5ID0g
aXNXZWJBc3NlbWJseVRvSlNDYWxsZWUoY2FsbGVyRnJhbWUtPmNhbGxlZSgpKTsKKyAgICBib29s
IGlzV2ViQXNzZW1ibHkgPSBpc/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/Cd
lKnwnZS2VG9KU0NhbGxlZShjYWxsZXJGcmFtZS0+Y2FsbGVlKCkpOwogCiAgICAgLy8gV2ViQXNz
ZW1ibHkgLT4gSlMgc3R1YnMgZG9uJ3QgaGF2ZSBhIHZhbGlkIENvZGVCbG9jay4KICAgICBKU0Nl
bGwqIG93bmVyID0gaXNXZWJBc3NlbWJseSA/IHdlYkFzc2VtYmx5T3duZXIoY2FsbGVyRnJhbWUt
PmNhbGxlZSgpKSA6IGNhbGxlckNvZGVCbG9jazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggNTUy
MmQ4Mi4uN2I2NTNmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTMxNTcsNyArMzE1Nyw3IEBA
IHN0YXRpYyBKU1ZhbHVlIGJveChFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgSlNWYWx1ZSB3YXNt
VmFsdWUpCiB9CiAKIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTY4NTgyLgotc3RhdGljIEpTVmFsdWUgY2FsbFdhc21GdW5jdGlvbihWTSogdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTV2ViQXNzZW1ibHlDYWxsZWUqIHdhc21DYWxs
ZWUsIGNvbnN0IEFyZ0xpc3QmIGJveGVkQXJncykKK3N0YXRpYyBKU1ZhbHVlIGNhbGxXYXNtRnVu
Y3Rpb24oVk0qIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU/CdlJrwnZSi8J2U
n/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2Q2FsbGVlKiB3YXNtQ2FsbGVlLCBjb25z
dCBBcmdMaXN0JiBib3hlZEFyZ3MpCiB7CiAgICAgSlNWYWx1ZSBmaXJzdEFyZ3VtZW50OwogICAg
IGludCBhcmdDb3VudCA9IDE7CkBAIC0zMjA3LDcgKzMyMDcsNyBAQCBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblRlc3RXYXNtTW9kdWxlRnVuY3Rpb25zKEV4ZWNT
dGF0ZSogZQogICAgIHsKICAgICAgICAgdW5zaWduZWQgbGFzdEluZGV4ID0gVUlOVF9NQVg7CiAg
ICAgICAgIHBsYW4tPmluaXRpYWxpemVDYWxsZWVzKAotICAgICAgICAgICAgWyZdICh1bnNpZ25l
ZCBjYWxsZWVJbmRleCwgSlNXZWJBc3NlbWJseUNhbGxlZSoganNFbnRyeXBvaW50Q2FsbGVlLCBK
U1dlYkFzc2VtYmx5Q2FsbGVlKiB3YXNtRW50cnlwb2ludENhbGxlZSkgeworICAgICAgICAgICAg
WyZdICh1bnNpZ25lZCBjYWxsZWVJbmRleCwgSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi
8J2UqvCdlJ/wnZSp8J2UtkNhbGxlZSoganNFbnRyeXBvaW50Q2FsbGVlLCBKU/CdlJrwnZSi8J2U
n/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2Q2FsbGVlKiB3YXNtRW50cnlwb2ludENh
bGxlZSkgewogICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFjYWxsZWVJbmRleCB8fCAo
Y2FsbGVlSW5kZXggLSAxID09IGxhc3RJbmRleCkpOwogICAgICAgICAgICAgICAgIGNhbGxlZXMu
YXBwZW5kKGpzRW50cnlwb2ludENhbGxlZSk7CiAgICAgICAgICAgICAgICAga2VlcEFsaXZlLmFw
cGVuZCh3YXNtRW50cnlwb2ludENhbGxlZSk7CkBAIC0zMjM4LDcgKzMyMzgsNyBAQCBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblRlc3RXYXNtTW9kdWxlRnVuY3Rp
b25zKEV4ZWNTdGF0ZSogZQogICAgICAgICAgICAgSlNWYWx1ZSBjYWxsUmVzdWx0OwogICAgICAg
ICAgICAgewogICAgICAgICAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKLSAgICAgICAgICAgICAgICBjYWxsUmVzdWx0ID0gY2FsbFdhc21GdW5jdGlvbigmdm0s
IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwganNDYXN0PEpTV2ViQXNzZW1ibHlDYWxsZWUq
PihjYWxsZWVzLmF0KGkpKSwgYm94ZWRBcmdzKTsKKyAgICAgICAgICAgICAgICBjYWxsUmVzdWx0
ID0gY2FsbFdhc21GdW5jdGlvbigmdm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwganND
YXN0PEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZDYWxsZWUq
PihjYWxsZWVzLmF0KGkpKSwgYm94ZWRBcmdzKTsKICAgICAgICAgICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgSlNWYWx1
ZSBleHBlY3RlZCA9IGJveChleGVjLCB2bSwgcmVzdWx0KTsKQEAgLTMyNjcsOSArMzI2Nyw5IEBA
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uV2ViQXNzZW1ibHlN
ZW1vcnlNb2RlKEV4ZWNTdGF0ZSogZXhlCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIldlYkFzc2VtYmx5TWVtb3J5TW9kZSBzaG91bGQg
b25seSBiZSBjYWxsZWQgaWYgdGhlIHVzZVdlYkFzc2VtYmx5IG9wdGlvbiBpcyBzZXQiKSk7CiAK
ICAgICBpZiAoSlNPYmplY3QqIG9iamVjdCA9IGV4ZWMtPmFyZ3VtZW50KDApLmdldE9iamVjdCgp
KSB7Ci0gICAgICAgIGlmIChhdXRvKiBtZW1vcnkgPSBqc0R5bmFtaWNDYXN0PEpTV2ViQXNzZW1i
bHlNZW1vcnkqPih2bSwgb2JqZWN0KSkKKyAgICAgICAgaWYgKGF1dG8qIG1lbW9yeSA9IGpzRHlu
YW1pY0Nhc3Q8SlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utk1l
bW9yeSo+KHZtLCBvYmplY3QpKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1N0cmluZygmdm0sIG1ha2VTdHJpbmcobWVtb3J5LT5tZW1vcnkoKS5tb2RlKCkpKSk7Ci0gICAg
ICAgIGlmIChhdXRvKiBpbnN0YW5jZSA9IGpzRHluYW1pY0Nhc3Q8SlNXZWJBc3NlbWJseUluc3Rh
bmNlKj4odm0sIG9iamVjdCkpCisgICAgICAgIGlmIChhdXRvKiBpbnN0YW5jZSA9IGpzRHluYW1p
Y0Nhc3Q8SlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utkluc3Rh
bmNlKj4odm0sIG9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
U3RyaW5nKCZ2bSwgbWFrZVN0cmluZyhpbnN0YW5jZS0+bWVtb3J5TW9kZSgpKSkpOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZUJh
c2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGVCYXNlLmgKaW5k
ZXggNjI4MTZhNS4uMTAxNDJhNTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGVjdXRhYmxlQmFzZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0V4ZWN1dGFibGVCYXNlLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgQ29kZUJsb2NrOwog
Y2xhc3MgRXZhbENvZGVCbG9jazsKIGNsYXNzIEZ1bmN0aW9uQ29kZUJsb2NrOwogY2xhc3MgSlNT
Y29wZTsKLWNsYXNzIEpTV2ViQXNzZW1ibHlNb2R1bGU7CitjbGFzcyBKU/CdlJrwnZSi8J2Un/Cd
lITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2TW9kdWxlOwogY2xhc3MgTExJbnRPZmZzZXRz
RXh0cmFjdG9yOwogY2xhc3MgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jazsKIGNsYXNzIFByb2dyYW1D
b2RlQmxvY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAppbmRleCAz
ZGZjMjg1Li4xZWMwNDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NlbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5j
cHAKQEAgLTI5OCw3ICsyOTgsNyBAQCBKU1ZhbHVlIEpTQ2VsbDo6Z2V0UHJvdG90eXBlKEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKikKIGJvb2wgSlNDZWxsOjppc0FueVdhc21DYWxsZWUoVk0mIHZtKSBj
b25zdAogewogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLSAgICByZXR1cm4gaW5oZXJpdHModm0s
IEpTV2ViQXNzZW1ibHlDYWxsZWU6OmluZm8oKSkgfHwgaXNXZWJBc3NlbWJseVRvSlNDYWxsZWUo
dGhpcyk7CisgICAgcmV0dXJuIGluaGVyaXRzKHZtLCBKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2U
sPCdlKLwnZSq8J2Un/CdlKnwnZS2Q2FsbGVlOjppbmZvKCkpIHx8IGlz8J2UmvCdlKLwnZSf8J2U
hPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZUb0pTQ2FsbGVlKHRoaXMpOwogI2Vsc2UKICAg
ICBVTlVTRURfUEFSQU0odm0pOwogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAppbmRleCA5NTA5MzU2Li4xYTc1MTc3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCkBAIC0z
NDYsOSArMzQ2LDkgQEAgaW5saW5lIEpTT2JqZWN0KiBKU0NlbGw6OnRvT2JqZWN0KEV4ZWNTdGF0
ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICByZXR1cm4gdG9PYmpl
Y3RTbG93KGV4ZWMsIGdsb2JhbE9iamVjdCk7CiB9CiAKLWlubGluZSBib29sIGlzV2ViQXNzZW1i
bHlUb0pTQ2FsbGVlKGNvbnN0IEpTQ2VsbCogY2VsbCkKK2lubGluZSBib29sIGlz8J2UmvCdlKLw
nZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZUb0pTQ2FsbGVlKGNvbnN0IEpTQ2Vs
bCogY2VsbCkKIHsKLSAgICByZXR1cm4gY2VsbC0+dHlwZSgpID09IFdlYkFzc2VtYmx5VG9KU0Nh
bGxlZVR5cGU7CisgICAgcmV0dXJuIGNlbGwtPnR5cGUoKSA9PSDwnZSa8J2UovCdlJ/wnZSE8J2U
sPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtlRvSlNDYWxsZWVUeXBlOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcAppbmRleCBiY2JjYjZiLi42OGU2ZWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC04ODUsMTIgKzg4NSwxMiBAQCBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+IGpzTmFtZSwg
bG93ZXJOYW1lICMjIENvbnN0cnVjdAogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIGlm
IChPcHRpb25zOjp1c2VXZWJBc3NlbWJseSgpKSB7Ci0gICAgICAgIGF1dG8qIHdlYkFzc2VtYmx5
UHJvdG90eXBlID0gV2ViQXNzZW1ibHlQcm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywgV2ViQXNz
ZW1ibHlQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5
cGUuZ2V0KCkpKTsKLSAgICAgICAgbV93ZWJBc3NlbWJseVN0cnVjdHVyZS5zZXQodm0sIHRoaXMs
IEpTV2ViQXNzZW1ibHk6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgd2ViQXNzZW1ibHlQcm90
b3R5cGUpKTsKLSAgICAgICAgbV93ZWJBc3NlbWJseU1vZHVsZVJlY29yZFN0cnVjdHVyZS5zZXQo
dm0sIHRoaXMsIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRo
aXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSk7Ci0gICAgICAgIG1fd2ViQXNzZW1ibHlGdW5j
dGlvblN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIFdlYkFzc2VtYmx5RnVuY3Rpb246OmNyZWF0ZVN0
cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOwotICAgICAgICBt
X3dlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uU3RydWN0dXJlLnNldCh2bSwgdGhpcywgV2ViQXNz
ZW1ibHlXcmFwcGVyRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlv
blByb3RvdHlwZS5nZXQoKSkpOwotICAgICAgICBhdXRvKiB3ZWJBc3NlbWJseSA9IEpTV2ViQXNz
ZW1ibHk6OmNyZWF0ZSh2bSwgdGhpcywgbV93ZWJBc3NlbWJseVN0cnVjdHVyZS5nZXQoKSk7Cisg
ICAgICAgIGF1dG8qIHdlYkFzc2VtYmx5UHJvdG90eXBlID0g8J2UmvCdlKLwnZSf8J2UhPCdlLDw
nZSw8J2UovCdlKrwnZSf8J2UqfCdlLZQcm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywg8J2UmvCd
lKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZQcm90b3R5cGU6OmNyZWF0ZVN0
cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKTsKKyAgICAgICAgbV93
ZWJBc3NlbWJseVN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDw
nZSw8J2UovCdlKrwnZSf8J2UqfCdlLY6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgd2ViQXNz
ZW1ibHlQcm90b3R5cGUpKTsKKyAgICAgICAgbV93ZWJBc3NlbWJseU1vZHVsZVJlY29yZFN0cnVj
dHVyZS5zZXQodm0sIHRoaXMsIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/Cd
lKnwnZS2TW9kdWxlUmVjb3JkOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJv
dG90eXBlLmdldCgpKSk7CisgICAgICAgIG1fd2ViQXNzZW1ibHlGdW5jdGlvblN0cnVjdHVyZS5z
ZXQodm0sIHRoaXMsIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2
RnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5n
ZXQoKSkpOworICAgICAgICBtX3dlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uU3RydWN0dXJlLnNl
dCh2bSwgdGhpcywg8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZX
cmFwcGVyRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3Rv
dHlwZS5nZXQoKSkpOworICAgICAgICBhdXRvKiB3ZWJBc3NlbWJseSA9IEpT8J2UmvCdlKLwnZSf
8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLY6OmNyZWF0ZSh2bSwgdGhpcywgbV93ZWJB
c3NlbWJseVN0cnVjdHVyZS5nZXQoKSk7CiAgICAgICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJXZWJBc3NlbWJseSIpLCB3ZWJB
c3NlbWJseSwgRG9udEVudW0pOwogCiAjZGVmaW5lIENSRUFURV9XRUJBU1NFTUJMWV9DT05TVFJV
Q1RPUihjYXBpdGFsTmFtZSwgbG93ZXJOYW1lLCBwcm9wZXJOYW1lLCBpbnN0YW5jZVR5cGUsIGpz
TmFtZSwgcHJvdG90eXBlQmFzZSkgZG8geyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCBlMzc5ZTVlLi4yY2RlOGQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTEzNywxMyAr
MTM3LDEzIEBAIHN0cnVjdCBIYXNoVGFibGU7CiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAj
ZGVmaW5lIEZPUl9FQUNIX1dFQkFTU0VNQkxZX0NPTlNUUlVDVE9SX1RZUEUobWFjcm8pIFwKLSAg
ICBtYWNybyhXZWJBc3NlbWJseUNvbXBpbGVFcnJvciwgd2ViQXNzZW1ibHlDb21waWxlRXJyb3Is
IFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yLCBXZWJBc3NlbWJseUNvbXBpbGVFcnJvciwgQ29tcGls
ZUVycm9yLCBlcnJvcikgXAotICAgIG1hY3JvKFdlYkFzc2VtYmx5SW5zdGFuY2UsICAgICB3ZWJB
c3NlbWJseUluc3RhbmNlLCAgICAgV2ViQXNzZW1ibHlJbnN0YW5jZSwgICAgIFdlYkFzc2VtYmx5
SW5zdGFuY2UsICAgICBJbnN0YW5jZSwgICAgIG9iamVjdCkgXAotICAgIG1hY3JvKFdlYkFzc2Vt
Ymx5TGlua0Vycm9yLCAgICB3ZWJBc3NlbWJseUxpbmtFcnJvciwgICAgV2ViQXNzZW1ibHlMaW5r
RXJyb3IsICAgIFdlYkFzc2VtYmx5TGlua0Vycm9yLCAgICBMaW5rRXJyb3IsICAgIGVycm9yKSBc
Ci0gICAgbWFjcm8oV2ViQXNzZW1ibHlNZW1vcnksICAgICAgIHdlYkFzc2VtYmx5TWVtb3J5LCAg
ICAgICBXZWJBc3NlbWJseU1lbW9yeSwgICAgICAgV2ViQXNzZW1ibHlNZW1vcnksICAgICAgIE1l
bW9yeSwgICAgICAgb2JqZWN0KSBcCi0gICAgbWFjcm8oV2ViQXNzZW1ibHlNb2R1bGUsICAgICAg
IHdlYkFzc2VtYmx5TW9kdWxlLCAgICAgICBXZWJBc3NlbWJseU1vZHVsZSwgICAgICAgV2ViQXNz
ZW1ibHlNb2R1bGUsICAgICAgIE1vZHVsZSwgICAgICAgb2JqZWN0KSBcCi0gICAgbWFjcm8oV2Vi
QXNzZW1ibHlSdW50aW1lRXJyb3IsIHdlYkFzc2VtYmx5UnVudGltZUVycm9yLCBXZWJBc3NlbWJs
eVJ1bnRpbWVFcnJvciwgV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IsIFJ1bnRpbWVFcnJvciwgZXJy
b3IpIFwKLSAgICBtYWNybyhXZWJBc3NlbWJseVRhYmxlLCAgICAgICAgd2ViQXNzZW1ibHlUYWJs
ZSwgICAgICAgIFdlYkFzc2VtYmx5VGFibGUsICAgICAgICBXZWJBc3NlbWJseVRhYmxlLCAgICAg
ICAgVGFibGUsICAgICAgICBvYmplY3QpCisgICAgbWFjcm8o8J2UmvCdlKLwnZSf8J2UhPCdlLDw
nZSw8J2UovCdlKrwnZSf8J2UqfCdlLZDb21waWxlRXJyb3IsIHdlYkFzc2VtYmx5Q29tcGlsZUVy
cm9yLCDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtkNvbXBpbGVF
cnJvciwg8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZDb21waWxl
RXJyb3IsIENvbXBpbGVFcnJvciwgZXJyb3IpIFwKKyAgICBtYWNybyjwnZSa8J2UovCdlJ/wnZSE
8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utkluc3RhbmNlLCAgICAgd2ViQXNzZW1ibHlJbnN0
YW5jZSwgICAgIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2SW5z
dGFuY2UsICAgICDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utklu
c3RhbmNlLCAgICAgSW5zdGFuY2UsICAgICBvYmplY3QpIFwKKyAgICBtYWNybyjwnZSa8J2UovCd
lJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtkxpbmtFcnJvciwgICAgd2ViQXNzZW1i
bHlMaW5rRXJyb3IsICAgIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnw
nZS2TGlua0Vycm9yLCAgICDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp
8J2UtkxpbmtFcnJvciwgICAgTGlua0Vycm9yLCAgICBlcnJvcikgXAorICAgIG1hY3JvKPCdlJrw
nZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2TWVtb3J5LCAgICAgICB3ZWJB
c3NlbWJseU1lbW9yeSwgICAgICAg8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf
8J2UqfCdlLZNZW1vcnksICAgICAgIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2U
n/CdlKnwnZS2TWVtb3J5LCAgICAgICBNZW1vcnksICAgICAgIG9iamVjdCkgXAorICAgIG1hY3Jv
KPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2TW9kdWxlLCAgICAg
ICB3ZWJBc3NlbWJseU1vZHVsZSwgICAgICAg8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCd
lKrwnZSf8J2UqfCdlLZNb2R1bGUsICAgICAgIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLw
nZSq8J2Un/CdlKnwnZS2TW9kdWxlLCAgICAgICBNb2R1bGUsICAgICAgIG9iamVjdCkgXAorICAg
IG1hY3JvKPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2UnVudGlt
ZUVycm9yLCB3ZWJBc3NlbWJseVJ1bnRpbWVFcnJvciwg8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw
8J2UovCdlKrwnZSf8J2UqfCdlLZSdW50aW1lRXJyb3IsIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2U
sPCdlKLwnZSq8J2Un/CdlKnwnZS2UnVudGltZUVycm9yLCBSdW50aW1lRXJyb3IsIGVycm9yKSBc
CisgICAgbWFjcm8o8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZU
YWJsZSwgICAgICAgIHdlYkFzc2VtYmx5VGFibGUsICAgICAgICDwnZSa8J2UovCdlJ/wnZSE8J2U
sPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtlRhYmxlLCAgICAgICAg8J2UmvCdlKLwnZSf8J2UhPCd
lLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZUYWJsZSwgICAgICAgIFRhYmxlLCAgICAgICAgb2Jq
ZWN0KQogI2Vsc2UKICNkZWZpbmUgRk9SX0VBQ0hfV0VCQVNTRU1CTFlfQ09OU1RSVUNUT1JfVFlQ
RShtYWNybykKICNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTVHlwZS5oCmluZGV4IDYyZTM3NzIuLmE5MzliZjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCkBAIC01Myw3ICs1Myw3IEBAIGVudW0gSlNUeXBlIDog
dWludDhfdCB7CiAgICAgSlNTb3VyY2VDb2RlVHlwZSwKICAgICBKU1NjcmlwdEZldGNoZXJUeXBl
LAogCi0gICAgV2ViQXNzZW1ibHlUb0pTQ2FsbGVlVHlwZSwKKyAgICDwnZSa8J2UovCdlJ/wnZSE
8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtlRvSlNDYWxsZWVUeXBlLAogCiAgICAgLy8gVGhl
IE9iamVjdFR5cGUgdmFsdWUgbXVzdCBjb21lIGJlZm9yZSBhbnkgSlNUeXBlIHRoYXQgaXMgYSBz
dWJjbGFzcyBvZiBKU09iamVjdC4KICAgICBPYmplY3RUeXBlLApAQCAtOTcsOSArOTcsOSBAQCBl
bnVtIEpTVHlwZSA6IHVpbnQ4X3QgewogICAgIEpTTWFwVHlwZSwKICAgICBKU1NldFR5cGUsCiAK
LSAgICBXZWJBc3NlbWJseUZ1bmN0aW9uVHlwZSwKKyAgICDwnZSa8J2UovCdlJ/wnZSE8J2UsPCd
lLDwnZSi8J2UqvCdlJ/wnZSp8J2UtkZ1bmN0aW9uVHlwZSwKIAotICAgIExhc3RKU0NPYmplY3RU
eXBlID0gV2ViQXNzZW1ibHlGdW5jdGlvblR5cGUsCisgICAgTGFzdEpTQ09iamVjdFR5cGUgPSDw
nZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtkZ1bmN0aW9uVHlwZSwK
ICAgICBNYXhKU1R5cGUgPSAwYjExMTExMTExLAogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uY3BwCmluZGV4IGY5ZmY5MDYuLjQyNWY5MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5jcHAKQEAgLTIzNyw5ICsyMzcsOSBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVh
cFR5cGUgaGVhcFR5cGUpCiAgICAgcHJvZ3JhbUV4ZWN1dGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlz
LCBQcm9ncmFtRXhlY3V0YWJsZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkp
OwogICAgIGZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogI2lmIEVOQUJM
RShXRUJBU1NFTUJMWSkKLSAgICB3ZWJBc3NlbWJseUNhbGxlZVN0cnVjdHVyZS5zZXQoKnRoaXMs
IEpTV2ViQXNzZW1ibHlDYWxsZWU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkp
KTsKLSAgICB3ZWJBc3NlbWJseVRvSlNDYWxsZWVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBXZWJBc3Nl
bWJseVRvSlNDYWxsZWU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKLSAg
ICB3ZWJBc3NlbWJseUNvZGVCbG9ja1N0cnVjdHVyZS5zZXQoKnRoaXMsIEpTV2ViQXNzZW1ibHlD
b2RlQmxvY2s6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKKyAgICB3ZWJB
c3NlbWJseUNhbGxlZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDw
nZSw8J2UovCdlKrwnZSf8J2UqfCdlLZDYWxsZWU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwg
anNOdWxsKCkpKTsKKyAgICB3ZWJBc3NlbWJseVRvSlNDYWxsZWVTdHJ1Y3R1cmUuc2V0KCp0aGlz
LCDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtlRvSlNDYWxsZWU6
OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKKyAgICB3ZWJBc3NlbWJseUNv
ZGVCbG9ja1N0cnVjdHVyZS5zZXQoKnRoaXMsIEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2U
ovCdlKrwnZSf8J2UqfCdlLZDb2RlQmxvY2s6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNO
dWxsKCkpKTsKICNlbmRpZgogICAgIG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3RydWN0dXJlLnNl
dCgqdGhpcywgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywg
MCwganNOdWxsKCkpKTsKICAgICByZWdFeHBTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBSZWdFeHA6OmNy
ZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5oCmluZGV4IDhiOWU2NjUuLjI2NDY1MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uaApAQCAtMTAzLDcgKzEwMyw3IEBAIGNsYXNzIEludGVycHJldGVyOwogY2xhc3MgSlNDdXN0
b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbjsKIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogY2xhc3MgSlNP
YmplY3Q7Ci1jbGFzcyBKU1dlYkFzc2VtYmx5SW5zdGFuY2U7CitjbGFzcyBKU/CdlJrwnZSi8J2U
n/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2SW5zdGFuY2U7CiBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CiBjbGFzcyBOYXRpdmVFeGVjdXRhYmxlOwogY2xhc3MgUHJvbWlzZURl
ZmVycmVkVGltZXI7CkBAIC0zMDQsNyArMzA0LDcgQEAgcHVibGljOgogICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA0NDEKICAgICBFeGVjU3RhdGUqIHRv
cENhbGxGcmFtZSB7IG51bGxwdHIgfTsKICAgICAvLyBGSVhNRTogU2F2ZSB0aGlzIHN0YXRlIGVs
c2V3aGVyZSB0byBhbGxvdyBQSUMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjk3NzMKLSAgICBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIHdhc21Db250ZXh0IHsgbnVs
bHB0ciB9OworICAgIEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCd
lLZJbnN0YW5jZSogd2FzbUNvbnRleHQgeyBudWxscHRyIH07CiAgICAgU3Ryb25nPFN0cnVjdHVy
ZT4gc3RydWN0dXJlU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHN0cnVjdHVyZVJh
cmVEYXRhU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHRlcm1pbmF0ZWRFeGVjdXRp
b25FcnJvclN0cnVjdHVyZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L0pTV2ViQXNzZW1ibHkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vSlNXZWJBc3Nl
bWJseS5jcHAKaW5kZXggNDdiYzU4My4uOTI2N2I0YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vSlNXZWJBc3NlbWJseS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vSlNXZWJBc3NlbWJseS5jcHAKQEAgLTMyLDI5ICszMiwyOSBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAotU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEpTV2Vi
QXNzZW1ibHkpOworU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEpT8J2U
mvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLYpOwogCi1jb25zdCBDbGFz
c0luZm8gSlNXZWJBc3NlbWJseTo6c19pbmZvID0geyAiV2ViQXNzZW1ibHkiLCAmQmFzZTo6c19p
bmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTV2ViQXNzZW1ibHkpIH07Citjb25zdCBDbGFz
c0luZm8gSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utjo6c19p
bmZvID0geyAiV2ViQXNzZW1ibHkiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLYpIH07CiAK
LUpTV2ViQXNzZW1ibHkqIEpTV2ViQXNzZW1ibHk6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCitKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCd
lKLwnZSq8J2Un/CdlKnwnZS2KiBKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2U
n/CdlKnwnZS2OjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQogewotICAgIGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PEpTV2ViQXNzZW1ibHk+KHZtLmhlYXApKSBKU1dlYkFzc2VtYmx5KHZtLCBzdHJ1Y3R1cmUpOwor
ICAgIGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpT8J2UmvCdlKLw
nZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLY+KHZtLmhlYXApKSBKU/CdlJrwnZSi
8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2KHZtLCBzdHJ1Y3R1cmUpOwogICAg
IG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVybiBvYmplY3Q7CiB9CiAKLVN0
cnVjdHVyZSogSlNXZWJBc3NlbWJseTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCitTdHJ1Y3R1cmUqIEpT8J2U
mvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLY6OmNyZWF0ZVN0cnVjdHVy
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBl
KQogewogICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90
b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKIH0K
IAotdm9pZCBKU1dlYkFzc2VtYmx5OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit2b2lkIEpT8J2U
mvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLY6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgQVNTRVJUKGlu
aGVyaXRzKHZtLCBpbmZvKCkpKTsKIH0KIAotSlNXZWJBc3NlbWJseTo6SlNXZWJBc3NlbWJseShW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDw
nZSi8J2UqvCdlJ/wnZSp8J2Utjo6SlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCd
lJ/wnZSp8J2UtihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogSlNOb25GaW5h
bE9iamVjdCh2bSwgc3RydWN0dXJlKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vSlNXZWJBc3NlbWJseS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
SlNXZWJBc3NlbWJseS5oCmluZGV4IDJlNzAyNDcuLjVlMGMwNDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL0pTV2ViQXNzZW1ibHkuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9KU1dlYkFzc2VtYmx5LmgKQEAgLTU3LDExICs1NywxMSBAQAogCiBuYW1l
c3BhY2UgSlNDIHsKIAotY2xhc3MgSlNXZWJBc3NlbWJseSA6IHB1YmxpYyBKU05vbkZpbmFsT2Jq
ZWN0IHsKK2NsYXNzIEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCd
lLYgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU05v
bkZpbmFsT2JqZWN0IEJhc2U7CiAKLSAgICBzdGF0aWMgSlNXZWJBc3NlbWJseSogY3JlYXRlKFZN
JiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgSlPwnZSa8J2UovCd
lJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtiogY3JlYXRlKFZNJiwgSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqKTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogCiAgICAgREVDTEFSRV9JTkZPOwpA
QCAtNzAsNyArNzAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYp
OwogCiBwcml2YXRlOgotICAgIEpTV2ViQXNzZW1ibHkoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBK
U/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2KFZNJiwgU3RydWN0
dXJlKik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAppbmRleCAwMjBhYmQ1Li4wZDdiOTE3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3Bw
CkBAIC0zNTgsMTIgKzM1OCwxMiBAQCB2b2lkIEIzSVJHZW5lcmF0b3I6OnJlc3RvcmVXZWJBc3Nl
bWJseUdsb2JhbFN0YXRlKGNvbnN0IE1lbW9yeUluZm9ybWF0aW9uJiBtZW1vcgogCiAgICAgICAg
IHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbcGlubmVkUmVnc10gKENDYWxsSGVscGVycyYgaml0
LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAg
ICAgIEdQUlJlZyBiYXNlTWVtb3J5ID0gcGlubmVkUmVncy0+YmFzZU1lbW9yeVBvaW50ZXI7Ci0g
ICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocGFyYW1zWzBdLmdw
cigpLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6Om9mZnNldE9mTWVtb3J5KCkpLCBiYXNlTWVtb3J5
KTsKKyAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhwYXJhbXNb
MF0uZ3ByKCksIEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZJ
bnN0YW5jZTo6b2Zmc2V0T2ZNZW1vcnkoKSksIGJhc2VNZW1vcnkpOwogICAgICAgICAgICAgY29u
c3QgYXV0byYgc2l6ZVJlZ3MgPSBwaW5uZWRSZWdzLT5zaXplUmVnaXN0ZXJzOwogICAgICAgICAg
ICAgQVNTRVJUKHNpemVSZWdzLnNpemUoKSA+PSAxKTsKICAgICAgICAgICAgIEFTU0VSVCghc2l6
ZVJlZ3NbMF0uc2l6ZU9mZnNldCk7IC8vIFRoZSBmb2xsb3dpbmcgY29kZSBhc3N1bWVzIHdlIHN0
YXJ0IGF0IDAsIGFuZCBjYWxjdWxhdGVzIHN1YnNlcXVlbnQgc2l6ZSByZWdpc3RlcnMgcmVsYXRp
dmUgdG8gMC4KLSAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhi
YXNlTWVtb3J5LCBKU1dlYkFzc2VtYmx5TWVtb3J5OjpvZmZzZXRPZlNpemUoKSksIHNpemVSZWdz
WzBdLnNpemVSZWdpc3Rlcik7Ci0gICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6
OkFkZHJlc3MoYmFzZU1lbW9yeSwgSlNXZWJBc3NlbWJseU1lbW9yeTo6b2Zmc2V0T2ZNZW1vcnko
KSksIGJhc2VNZW1vcnkpOworICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKGJhc2VNZW1vcnksIEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf
8J2UqfCdlLZNZW1vcnk6Om9mZnNldE9mU2l6ZSgpKSwgc2l6ZVJlZ3NbMF0uc2l6ZVJlZ2lzdGVy
KTsKKyAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlTWVt
b3J5LCBKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2TWVtb3J5
OjpvZmZzZXRPZk1lbW9yeSgpKSwgYmFzZU1lbW9yeSk7CiAgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAxOyBpIDwgc2l6ZVJlZ3Muc2l6ZSgpOyArK2kpCiAgICAgICAgICAgICAgICAgaml0
LmFkZDY0KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKC1zaXplUmVnc1tpXS5zaXplT2Zmc2V0
KSwgc2l6ZVJlZ3NbMF0uc2l6ZVJlZ2lzdGVyLCBzaXplUmVnc1tpXS5zaXplUmVnaXN0ZXIpOwog
ICAgICAgICB9KTsKQEAgLTQ0NSw3ICs0NDUsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZEdy
b3dNZW1vcnkoRXhwcmVzc2lvblR5cGUgZGVsdGEsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpCiAg
ICAgICAgIFZNJiB2bSA9ICp3YXNtQ29udGV4dC0+dm0oKTsKICAgICAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgICAgIEpTV2ViQXNzZW1ibHlNZW1vcnkq
IHdhc21NZW1vcnkgPSB3YXNtQ29udGV4dC0+bWVtb3J5KCk7CisgICAgICAgIEpT8J2UmvCdlKLw
nZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZNZW1vcnkqIHdhc21NZW1vcnkgPSB3
YXNtQ29udGV4dC0+bWVtb3J5KCk7CiAKICAgICAgICAgaWYgKGRlbHRhIDwgMCkKICAgICAgICAg
ICAgIHJldHVybiAtMTsKQEAgLTQ3MiwxMCArNDcyLDEwIEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6
YWRkR3Jvd01lbW9yeShFeHByZXNzaW9uVHlwZSBkZWx0YSwgRXhwcmVzc2lvblR5cGUmIHJlc3Vs
dCkKIAogYXV0byBCM0lSR2VuZXJhdG9yOjphZGRDdXJyZW50TWVtb3J5KEV4cHJlc3Npb25UeXBl
JiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKLSAgICBWYWx1ZSogbWVtb3J5T2JqZWN0ID0g
bV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBwb2lu
dGVyVHlwZSgpLCBvcmlnaW4oKSwgbV9pbnN0YW5jZVZhbHVlLCBKU1dlYkFzc2VtYmx5SW5zdGFu
Y2U6Om9mZnNldE9mTWVtb3J5KCkpOworICAgIFZhbHVlKiBtZW1vcnlPYmplY3QgPSBtX2N1cnJl
bnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIHBvaW50ZXJUeXBl
KCksIG9yaWdpbigpLCBtX2luc3RhbmNlVmFsdWUsIEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw
8J2UovCdlKrwnZSf8J2UqfCdlLZJbnN0YW5jZTo6b2Zmc2V0T2ZNZW1vcnkoKSk7CiAKLSAgICBz
dGF0aWNfYXNzZXJ0KHNpemVvZihkZWNsdHlwZShzdGF0aWNfY2FzdDxKU1dlYkFzc2VtYmx5SW5z
dGFuY2UqPihudWxscHRyKS0+bWVtb3J5KCktPm1lbW9yeSgpLnNpemUoKSkpID09IHNpemVvZih1
aW50NjRfdCksICJjb2RlZ2VuIHJlbGllcyBvbiB0aGlzIHNpemUiKTsKLSAgICBWYWx1ZSogc2l6
ZSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZCwg
SW50NjQsIG9yaWdpbigpLCBtZW1vcnlPYmplY3QsIEpTV2ViQXNzZW1ibHlNZW1vcnk6Om9mZnNl
dE9mU2l6ZSgpKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihkZWNsdHlwZShzdGF0aWNfY2Fz
dDxKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2SW5zdGFuY2Uq
PihudWxscHRyKS0+bWVtb3J5KCktPm1lbW9yeSgpLnNpemUoKSkpID09IHNpemVvZih1aW50NjRf
dCksICJjb2RlZ2VuIHJlbGllcyBvbiB0aGlzIHNpemUiKTsKKyAgICBWYWx1ZSogc2l6ZSA9IG1f
Y3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZCwgSW50NjQs
IG9yaWdpbigpLCBtZW1vcnlPYmplY3QsIEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCd
lKrwnZSf8J2UqfCdlLZNZW1vcnk6Om9mZnNldE9mU2l6ZSgpKTsKICAgICAKICAgICBjb25zdGV4
cHIgdWludDMyX3Qgc2hpZnRWYWx1ZSA9IDE2OwogICAgIHN0YXRpY19hc3NlcnQoUGFnZUNvdW50
OjpwYWdlU2l6ZSA9PSAxIDw8IHNoaWZ0VmFsdWUsICJUaGlzIG11c3QgaG9sZCBmb3IgdGhlIGNv
ZGUgYmVsb3cgdG8gYmUgY29ycmVjdC4iKTsKQEAgLTQ5Niw3ICs0OTYsNyBAQCBhdXRvIEIzSVJH
ZW5lcmF0b3I6OnNldExvY2FsKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSB2YWx1ZSkg
LT4gUGFydGlhbFJlcwogCiBhdXRvIEIzSVJHZW5lcmF0b3I6OmdldEdsb2JhbCh1aW50MzJfdCBp
bmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdAogewotICAgIFZh
bHVlKiBnbG9iYWxzQXJyYXkgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVl
PihtX3Byb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIG9yaWdpbigpLCBtX2luc3RhbmNlVmFsdWUs
IEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0T2ZHbG9iYWxzKCkpOworICAgIFZhbHVlKiBn
bG9iYWxzQXJyYXkgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3By
b2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIG9yaWdpbigpLCBtX2luc3RhbmNlVmFsdWUsIEpT8J2U
mvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZJbnN0YW5jZTo6b2Zmc2V0
T2ZHbG9iYWxzKCkpOwogICAgIHJlc3VsdCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVt
b3J5VmFsdWU+KG1fcHJvYywgTG9hZCwgdG9CM1R5cGUobV9pbmZvLmdsb2JhbHNbaW5kZXhdLnR5
cGUpLCBvcmlnaW4oKSwgZ2xvYmFsc0FycmF5LCBpbmRleCAqIHNpemVvZihSZWdpc3RlcikpOwog
ICAgIHJldHVybiB7IH07CiB9CkBAIC01MDQsNyArNTA0LDcgQEAgYXV0byBCM0lSR2VuZXJhdG9y
OjpnZXRHbG9iYWwodWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBh
cnRpYWwKIGF1dG8gQjNJUkdlbmVyYXRvcjo6c2V0R2xvYmFsKHVpbnQzMl90IGluZGV4LCBFeHBy
ZXNzaW9uVHlwZSB2YWx1ZSkgLT4gUGFydGlhbFJlc3VsdAogewogICAgIEFTU0VSVCh0b0IzVHlw
ZShtX2luZm8uZ2xvYmFsc1tpbmRleF0udHlwZSkgPT0gdmFsdWUtPnR5cGUoKSk7Ci0gICAgVmFs
dWUqIGdsb2JhbHNBcnJheSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+
KG1fcHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwgb3JpZ2luKCksIG1faW5zdGFuY2VWYWx1ZSwg
SlNXZWJBc3NlbWJseUluc3RhbmNlOjpvZmZzZXRPZkdsb2JhbHMoKSk7CisgICAgVmFsdWUqIGds
b2JhbHNBcnJheSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJv
YywgTG9hZCwgcG9pbnRlclR5cGUoKSwgb3JpZ2luKCksIG1faW5zdGFuY2VWYWx1ZSwgSlPwnZSa
8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utkluc3RhbmNlOjpvZmZzZXRP
Zkdsb2JhbHMoKSk7CiAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4o
bV9wcm9jLCBTdG9yZSwgb3JpZ2luKCksIHZhbHVlLCBnbG9iYWxzQXJyYXksIGluZGV4ICogc2l6
ZW9mKFJlZ2lzdGVyKSk7CiAgICAgcmV0dXJuIHsgfTsKIH0KQEAgLTg5MCw5ICs4OTAsOSBAQCBh
dXRvIEIzSVJHZW5lcmF0b3I6OmFkZENhbGwodWludDMyX3QgZnVuY3Rpb25JbmRleCwgY29uc3Qg
U2lnbmF0dXJlJiBzaWduYXR1cmUsCiAKICAgICBpZiAobV9pbmZvLmlzSW1wb3J0ZWRGdW5jdGlv
bkZyb21GdW5jdGlvbkluZGV4U3BhY2UoZnVuY3Rpb25JbmRleCkpIHsKICAgICAgICAgLy8gRklY
TUUgaW1wb3J0cyBjYW4gYmUgbGlua2VkIGhlcmUsIGluc3RlYWQgb2YgZ2VuZXJhdGluZyBhIHBh
dGNocG9pbnQsIGJlY2F1c2UgYWxsIGltcG9ydCBzdHVicyBhcmUgZ2VuZXJhdGVkIGJlZm9yZSBC
MyBjb21waWxhdGlvbiBzdGFydHMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjY0NjIKLSAgICAgICAgVmFsdWUqIGZ1bmN0aW9uSW1wb3J0ID0gbV9jdXJyZW50Qmxv
Y2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBv
cmlnaW4oKSwgbV9pbnN0YW5jZVZhbHVlLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6Om9mZnNldE9m
SW1wb3J0RnVuY3Rpb24oZnVuY3Rpb25JbmRleCkpOworICAgICAgICBWYWx1ZSogZnVuY3Rpb25J
bXBvcnQgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExv
YWQsIHBvaW50ZXJUeXBlKCksIG9yaWdpbigpLCBtX2luc3RhbmNlVmFsdWUsIEpT8J2UmvCdlKLw
nZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZJbnN0YW5jZTo6b2Zmc2V0T2ZJbXBv
cnRGdW5jdGlvbihmdW5jdGlvbkluZGV4KSk7CiAgICAgICAgIFZhbHVlKiBqc1R5cGVPZkltcG9y
dCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZDha
LCBvcmlnaW4oKSwgZnVuY3Rpb25JbXBvcnQsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkp
OwotICAgICAgICBWYWx1ZSogaXNXYXNtQ2FsbCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8
VmFsdWU+KG1fcHJvYywgRXF1YWwsIG9yaWdpbigpLCBqc1R5cGVPZkltcG9ydCwgbV9jdXJyZW50
QmxvY2stPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIFdlYkFzc2Vt
Ymx5RnVuY3Rpb25UeXBlKSk7CisgICAgICAgIFZhbHVlKiBpc1dhc21DYWxsID0gbV9jdXJyZW50
QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBFcXVhbCwgb3JpZ2luKCksIGpzVHlwZU9m
SW1wb3J0LCBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4obV9wcm9jLCBv
cmlnaW4oKSwg8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZGdW5j
dGlvblR5cGUpKTsKIAogICAgICAgICBCYXNpY0Jsb2NrKiBpc1dhc21CbG9jayA9IG1fcHJvYy5h
ZGRCbG9jaygpOwogICAgICAgICBCYXNpY0Jsb2NrKiBpc0pTQmxvY2sgPSBtX3Byb2MuYWRkQmxv
Y2soKTsKQEAgLTkyMCw5ICs5MjAsOSBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZENhbGwodWlu
dDMyX3QgZnVuY3Rpb25JbmRleCwgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsCiAgICAgICAg
IC8vIGltcGxlbWVudCB0aGUgSUMgdG8gYmUgb3ZlciBXYXNtOjpDb250ZXh0Ki4KICAgICAgICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDM3NQogICAgICAg
ICBWYWx1ZSogY29kZUJsb2NrID0gaXNKU0Jsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1f
cHJvYywKLSAgICAgICAgICAgIExvYWQsIHBvaW50ZXJUeXBlKCksIG9yaWdpbigpLCBtX2luc3Rh
bmNlVmFsdWUsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0T2ZDb2RlQmxvY2soKSk7Cisg
ICAgICAgICAgICBMb2FkLCBwb2ludGVyVHlwZSgpLCBvcmlnaW4oKSwgbV9pbnN0YW5jZVZhbHVl
LCBKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2SW5zdGFuY2U6
Om9mZnNldE9mQ29kZUJsb2NrKCkpOwogICAgICAgICBWYWx1ZSoganVtcERlc3RpbmF0aW9uID0g
aXNKU0Jsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywKLSAgICAgICAgICAgIExv
YWQsIHBvaW50ZXJUeXBlKCksIG9yaWdpbigpLCBjb2RlQmxvY2ssIEpTV2ViQXNzZW1ibHlDb2Rl
QmxvY2s6Om9mZnNldE9mSW1wb3J0V2FzbVRvSlNTdHViKG1faW5mby5pbnRlcm5hbEZ1bmN0aW9u
Q291bnQoKSwgZnVuY3Rpb25JbmRleCkpOworICAgICAgICAgICAgTG9hZCwgcG9pbnRlclR5cGUo
KSwgb3JpZ2luKCksIGNvZGVCbG9jaywgSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2U
qvCdlJ/wnZSp8J2UtkNvZGVCbG9jazo6b2Zmc2V0T2ZJbXBvcnRXYXNtVG9KU1N0dWIobV9pbmZv
LmludGVybmFsRnVuY3Rpb25Db3VudCgpLCBmdW5jdGlvbkluZGV4KSk7CiAgICAgICAgIFZhbHVl
KiBqc0NhbGxSZXN1bHQgPSB3YXNtQ2FsbGluZ0NvbnZlbnRpb24oKS5zZXR1cENhbGwobV9wcm9j
LCBpc0pTQmxvY2ssIG9yaWdpbigpLCBhcmdzLCB0b0IzVHlwZShyZXR1cm5UeXBlKSwKICAgICAg
ICAgICAgIFsmXSAoUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50KSB7CiAgICAgICAgICAgICAg
ICAgcGF0Y2hwb2ludC0+ZWZmZWN0cy53cml0ZXNQaW5uZWQgPSB0cnVlOwpAQCAtOTc4LDExICs5
NzgsMTEgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QoY29uc3QgU2lnbmF0
dXJlJiBzaWduYXR1cmUsIFNpZ25hdHVyZUluZGV4IHMKICAgICBFeHByZXNzaW9uVHlwZSBjYWxs
YWJsZUZ1bmN0aW9uQnVmZmVyU2l6ZTsKICAgICB7CiAgICAgICAgIEV4cHJlc3Npb25UeXBlIHRh
YmxlID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2Fk
LCBwb2ludGVyVHlwZSgpLCBvcmlnaW4oKSwKLSAgICAgICAgICAgIG1faW5zdGFuY2VWYWx1ZSwg
SlNXZWJBc3NlbWJseUluc3RhbmNlOjpvZmZzZXRPZlRhYmxlKCkpOworICAgICAgICAgICAgbV9p
bnN0YW5jZVZhbHVlLCBKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnw
nZS2SW5zdGFuY2U6Om9mZnNldE9mVGFibGUoKSk7CiAgICAgICAgIGNhbGxhYmxlRnVuY3Rpb25C
dWZmZXIgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExv
YWQsIHBvaW50ZXJUeXBlKCksIG9yaWdpbigpLAotICAgICAgICAgICAgdGFibGUsIEpTV2ViQXNz
ZW1ibHlUYWJsZTo6b2Zmc2V0T2ZGdW5jdGlvbnMoKSk7CisgICAgICAgICAgICB0YWJsZSwgSlPw
nZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtlRhYmxlOjpvZmZzZXRP
ZkZ1bmN0aW9ucygpKTsKICAgICAgICAgY2FsbGFibGVGdW5jdGlvbkJ1ZmZlclNpemUgPSBtX2N1
cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIEludDMyLCBv
cmlnaW4oKSwKLSAgICAgICAgICAgIHRhYmxlLCBKU1dlYkFzc2VtYmx5VGFibGU6Om9mZnNldE9m
U2l6ZSgpKTsKKyAgICAgICAgICAgIHRhYmxlLCBKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCd
lKLwnZSq8J2Un/CdlKnwnZS2VGFibGU6Om9mZnNldE9mU2l6ZSgpKTsKICAgICB9CiAKICAgICAv
LyBDaGVjayB0aGUgaW5kZXggd2UgYXJlIGxvb2tpbmcgZm9yIGlzIHZhbGlkLgpAQCAtMTIyNiwx
NiArMTIyNiwxNiBAQCBzdGF0aWMgdm9pZCBjcmVhdGVKU1RvV2FzbVdyYXBwZXIoQ29tcGlsYXRp
b25Db250ZXh0JiBjb21waWxhdGlvbkNvbnRleHQsIFdhc21JbgogICAgICAgICBHUFJSZWcgYmFz
ZU1lbW9yeSA9IHBpbm5lZFJlZ3MuYmFzZU1lbW9yeVBvaW50ZXI7CiAKICAgICAgICAgaWYgKCF1
c2VGYXN0VExTRm9yQ29udGV4dCgpKQotICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKHdhc21Db250ZXh0R1BSLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6Om9mZnNl
dE9mTWVtb3J5KCkpLCBiYXNlTWVtb3J5KTsKKyAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxs
SGVscGVyczo6QWRkcmVzcyh3YXNtQ29udGV4dEdQUiwgSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCd
lLDwnZSi8J2UqvCdlJ/wnZSp8J2Utkluc3RhbmNlOjpvZmZzZXRPZk1lbW9yeSgpKSwgYmFzZU1l
bW9yeSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgaml0LmxvYWRXYXNtQ29udGV4dChi
YXNlTWVtb3J5KTsKLSAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVz
cyhiYXNlTWVtb3J5LCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6Om9mZnNldE9mTWVtb3J5KCkpLCBi
YXNlTWVtb3J5KTsKKyAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVz
cyhiYXNlTWVtb3J5LCBKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnw
nZS2SW5zdGFuY2U6Om9mZnNldE9mTWVtb3J5KCkpLCBiYXNlTWVtb3J5KTsKICAgICAgICAgfQog
ICAgICAgICBjb25zdCBhdXRvJiBzaXplUmVncyA9IHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyczsK
ICAgICAgICAgQVNTRVJUKHNpemVSZWdzLnNpemUoKSA+PSAxKTsKICAgICAgICAgQVNTRVJUKCFz
aXplUmVnc1swXS5zaXplT2Zmc2V0KTsgLy8gVGhlIGZvbGxvd2luZyBjb2RlIGFzc3VtZXMgd2Ug
c3RhcnQgYXQgMCwgYW5kIGNhbGN1bGF0ZXMgc3Vic2VxdWVudCBzaXplIHJlZ2lzdGVycyByZWxh
dGl2ZSB0byAwLgotICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFz
ZU1lbW9yeSwgSlNXZWJBc3NlbWJseU1lbW9yeTo6b2Zmc2V0T2ZTaXplKCkpLCBzaXplUmVnc1sw
XS5zaXplUmVnaXN0ZXIpOwotICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJl
c3MoYmFzZU1lbW9yeSwgSlNXZWJBc3NlbWJseU1lbW9yeTo6b2Zmc2V0T2ZNZW1vcnkoKSksIGJh
c2VNZW1vcnkpOworICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFz
ZU1lbW9yeSwgSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utk1l
bW9yeTo6b2Zmc2V0T2ZTaXplKCkpLCBzaXplUmVnc1swXS5zaXplUmVnaXN0ZXIpOworICAgICAg
ICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZU1lbW9yeSwgSlPwnZSa8J2U
ovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utk1lbW9yeTo6b2Zmc2V0T2ZNZW1v
cnkoKSksIGJhc2VNZW1vcnkpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgc2l6
ZVJlZ3Muc2l6ZSgpOyArK2kpCiAgICAgICAgICAgICBqaXQuYWRkNjQoQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tMzIoLXNpemVSZWdzW2ldLnNpemVPZmZzZXQpLCBzaXplUmVnc1swXS5zaXplUmVn
aXN0ZXIsIHNpemVSZWdzW2ldLnNpemVSZWdpc3Rlcik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJpbmRpbmcuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUJpbmRpbmcuY3BwCmluZGV4IGUyY2RlMTMuLmJmOWJiOTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CaW5kaW5nLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQmluZGluZy5jcHAKQEAgLTQ2LDcgKzQ2LDcg
QEAgc3RhdGljIHZvaWQgbWF0ZXJpYWxpemVJbXBvcnRKU0NlbGwoSklUJiBqaXQsIHVuc2lnbmVk
IGltcG9ydEluZGV4LCBHUFJSZWcgcmVzdWwKIHsKICAgICAvLyBXZSdyZSBjYWxsaW5nIG91dCBv
ZiB0aGUgY3VycmVudCBXZWJBc3NlbWJseS5JbnN0YW5jZS4gVGhhdCBJbnN0YW5jZSBoYXMgYSBs
aXN0IG9mIGFsbCBpdHMgaW1wb3J0IGZ1bmN0aW9ucy4KICAgICBqaXQubG9hZFdhc21Db250ZXh0
KHJlc3VsdCk7Ci0gICAgaml0LmxvYWRQdHIoSklUOjpBZGRyZXNzKHJlc3VsdCwgSlNXZWJBc3Nl
bWJseUluc3RhbmNlOjpvZmZzZXRPZkltcG9ydEZ1bmN0aW9uKGltcG9ydEluZGV4KSksIHJlc3Vs
dCk7CisgICAgaml0LmxvYWRQdHIoSklUOjpBZGRyZXNzKHJlc3VsdCwgSlPwnZSa8J2UovCdlJ/w
nZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utkluc3RhbmNlOjpvZmZzZXRPZkltcG9ydEZ1
bmN0aW9uKGltcG9ydEluZGV4KSksIHJlc3VsdCk7CiB9CiAKIHN0YXRpYyBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgd2FzbVRvSnMoVk0qIHZtLCBCYWc8Q2FsbExpbmtJbmZvPiYgY2FsbExpbmtJbmZv
cywgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXgsIHVuc2lnbmVkIGltcG9ydEluZGV4KQpA
QCAtOTMsMTMgKzkzLDEzIEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgd2FzbVRvSnMo
Vk0qIHZtLCBCYWc8Q2FsbExpbmtJbmZvPiYgY2FsbExpbmtJbmZvcywKICAgICAgICAgICAgIGpp
dC5sb2FkV2FzbUNvbnRleHQoR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKIAogICAgICAgICAgICAg
Ly8gU3RvcmUgQ2FsbGVlLgotICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKEdQUkluZm86OmFyZ3VtZW50R1BSMSwgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpvZmZz
ZXRPZkNhbGxlZSgpKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKyAgICAgICAgICAgIGppdC5s
b2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjphcmd1bWVudEdQUjEsIEpT8J2U
mvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZJbnN0YW5jZTo6b2Zmc2V0
T2ZDYWxsZWUoKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMik7CiAgICAgICAgICAgICBqaXQuc3Rv
cmVQdHIoR1BSSW5mbzo6YXJndW1lbnRHUFIyLCBKSVQ6OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZy
YW1lUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6
ZW9mKFJlZ2lzdGVyKSkpKTsKIAogICAgICAgICAgICAgYXV0byBjYWxsID0gaml0LmNhbGwoKTsK
ICAgICAgICAgICAgIGppdC5qdW1wVG9FeGNlcHRpb25IYW5kbGVyKCp2bSk7CiAKLSAgICAgICAg
ICAgIHZvaWQgKCp0aHJvd0JhZEk2NCkoRXhlY1N0YXRlKiwgSlNXZWJBc3NlbWJseUluc3RhbmNl
KikgPSBbXSAoRXhlY1N0YXRlKiBleGVjLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIHdhc21Db250
ZXh0KSAtPiB2b2lkIHsKKyAgICAgICAgICAgIHZvaWQgKCp0aHJvd0JhZEk2NCkoRXhlY1N0YXRl
KiwgSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utkluc3RhbmNl
KikgPSBbXSAoRXhlY1N0YXRlKiBleGVjLCBKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLw
nZSq8J2Un/CdlKnwnZS2SW5zdGFuY2UqIHdhc21Db250ZXh0KSAtPiB2b2lkIHsKICAgICAgICAg
ICAgICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICAgICAgICAgICAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKIApAQCAtMjU2LDcgKzI1Niw3IEBAIHN0YXRp
YyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgd2FzbVRvSnMoVk0qIHZtLCBCYWc8Q2FsbExpbmtJbmZv
PiYgY2FsbExpbmtJbmZvcywKICAgICB9CiAKICAgICBqaXQubG9hZFdhc21Db250ZXh0KEdQUklu
Zm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KEdQUkluZm86OmFyZ3VtZW50R1BSMCwgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpvZmZzZXRPZkNh
bGxlZSgpKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBqaXQubG9hZFB0cihDQ2FsbEhl
bHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBKU/CdlJrwnZSi8J2Un/CdlITw
nZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2SW5zdGFuY2U6Om9mZnNldE9mQ2FsbGVlKCkpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgIGppdC5zdG9yZVB0cihHUFJJbmZvOjphcmd1bWVu
dEdQUjAsIEpJVDo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgQ2FsbEZyYW1l
U2xvdDo6Y2FsbGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSkpOwogCiAg
ICAgR1BSUmVnIGltcG9ydEpTQ2VsbEdQUlJlZyA9IEdQUkluZm86OnJlZ1QwOyAvLyBDYWxsZWUg
bmVlZHMgdG8gYmUgaW4gcmVnVDAgZm9yIHNsb3cgcGF0aCBiZWxvdy4KQEAgLTQyOSwyNSArNDI5
LDI1IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgd2FzbVRvV2FzbSh1bnNpZ25lZCBp
bXBvcnRJbmRleCkKIAogICAgIEdQUlJlZyBzY3JhdGNoID0gR1BSSW5mbzo6bm9uUHJlc2VydmVk
Tm9uQXJndW1lbnRHUFI7CiAKLSAgICAvLyBCMydzIGNhbGwgY29kZWdlbiBlbnN1cmVzIHRoYXQg
dGhlIEpTQ2VsbCBpcyBhIFdlYkFzc2VtYmx5RnVuY3Rpb24uCisgICAgLy8gQjMncyBjYWxsIGNv
ZGVnZW4gZW5zdXJlcyB0aGF0IHRoZSBKU0NlbGwgaXMgYSDwnZSa8J2UovCdlJ/wnZSE8J2UsPCd
lLDwnZSi8J2UqvCdlJ/wnZSp8J2UtkZ1bmN0aW9uLgogICAgIG1hdGVyaWFsaXplSW1wb3J0SlND
ZWxsKGppdCwgaW1wb3J0SW5kZXgsIHNjcmF0Y2gpOwogCiAgICAgLy8gR2V0IHRoZSBjYWxsZWUn
cyBXZWJBc3NlbWJseS5JbnN0YW5jZSBhbmQgc2V0IGl0IGFzIFdhc21Db250ZXh0LiBUaGUgY2Fs
bGVyIHdpbGwgdGFrZSBjYXJlIG9mIHJlc3RvcmluZyBpdHMgb3duIEluc3RhbmNlLgogICAgIEdQ
UlJlZyBiYXNlTWVtb3J5ID0gcGlubmVkUmVncy5iYXNlTWVtb3J5UG9pbnRlcjsKICAgICBBU1NF
UlQoYmFzZU1lbW9yeSAhPSBzY3JhdGNoKTsKLSAgICBqaXQubG9hZFB0cihKSVQ6OkFkZHJlc3Mo
c2NyYXRjaCwgV2ViQXNzZW1ibHlGdW5jdGlvbjo6b2Zmc2V0T2ZJbnN0YW5jZSgpKSwgYmFzZU1l
bW9yeSk7IC8vIEluc3RhbmNlKi4KKyAgICBqaXQubG9hZFB0cihKSVQ6OkFkZHJlc3Moc2NyYXRj
aCwg8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZGdW5jdGlvbjo6
b2Zmc2V0T2ZJbnN0YW5jZSgpKSwgYmFzZU1lbW9yeSk7IC8vIEluc3RhbmNlKi4KICAgICBqaXQu
c3RvcmVXYXNtQ29udGV4dChiYXNlTWVtb3J5KTsKIAogICAgIC8vIEZJWE1FIHRoZSBmb2xsb3dp
bmcgY29kZSBhc3N1bWVzIHRoYXQgYWxsIFdlYkFzc2VtYmx5Lkluc3RhbmNlIGhhdmUgdGhlIHNh
bWUgcGlubmVkIHJlZ2lzdGVycy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2Mjk1MgogICAgIC8vIFNldCB1cCB0aGUgY2FsbGVlJ3MgYmFzZU1lbW9yeSByZWdpc3Rl
ciBhcyB3ZWxsIGFzIHRoZSBtZW1vcnkgc2l6ZSByZWdpc3RlcnMuCi0gICAgaml0LmxvYWRQdHIo
SklUOjpBZGRyZXNzKGJhc2VNZW1vcnksIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0T2ZN
ZW1vcnkoKSksIGJhc2VNZW1vcnkpOyAvLyBKU1dlYkFzc2VtYmx5TWVtb3J5Ki4KKyAgICBqaXQu
bG9hZFB0cihKSVQ6OkFkZHJlc3MoYmFzZU1lbW9yeSwgSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCd
lLDwnZSi8J2UqvCdlJ/wnZSp8J2Utkluc3RhbmNlOjpvZmZzZXRPZk1lbW9yeSgpKSwgYmFzZU1l
bW9yeSk7IC8vIEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZN
ZW1vcnkqLgogICAgIGNvbnN0IGF1dG8mIHNpemVSZWdzID0gcGlubmVkUmVncy5zaXplUmVnaXN0
ZXJzOwogICAgIEFTU0VSVChzaXplUmVncy5zaXplKCkgPj0gMSk7CiAgICAgQVNTRVJUKHNpemVS
ZWdzWzBdLnNpemVSZWdpc3RlciAhPSBiYXNlTWVtb3J5KTsKICAgICBBU1NFUlQoc2l6ZVJlZ3Nb
MF0uc2l6ZVJlZ2lzdGVyICE9IHNjcmF0Y2gpOwogICAgIEFTU0VSVCghc2l6ZVJlZ3NbMF0uc2l6
ZU9mZnNldCk7IC8vIFRoZSBmb2xsb3dpbmcgY29kZSBhc3N1bWVzIHdlIHN0YXJ0IGF0IDAsIGFu
ZCBjYWxjdWxhdGVzIHN1YnNlcXVlbnQgc2l6ZSByZWdpc3RlcnMgcmVsYXRpdmUgdG8gMC4KLSAg
ICBqaXQubG9hZFB0cihKSVQ6OkFkZHJlc3MoYmFzZU1lbW9yeSwgSlNXZWJBc3NlbWJseU1lbW9y
eTo6b2Zmc2V0T2ZTaXplKCkpLCBzaXplUmVnc1swXS5zaXplUmVnaXN0ZXIpOyAvLyBNZW1vcnkg
c2l6ZS4KLSAgICBqaXQubG9hZFB0cihKSVQ6OkFkZHJlc3MoYmFzZU1lbW9yeSwgSlNXZWJBc3Nl
bWJseU1lbW9yeTo6b2Zmc2V0T2ZNZW1vcnkoKSksIGJhc2VNZW1vcnkpOyAvLyBXYXNtTWVtb3J5
Ojp2b2lkKi4KKyAgICBqaXQubG9hZFB0cihKSVQ6OkFkZHJlc3MoYmFzZU1lbW9yeSwgSlPwnZSa
8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utk1lbW9yeTo6b2Zmc2V0T2ZT
aXplKCkpLCBzaXplUmVnc1swXS5zaXplUmVnaXN0ZXIpOyAvLyBNZW1vcnkgc2l6ZS4KKyAgICBq
aXQubG9hZFB0cihKSVQ6OkFkZHJlc3MoYmFzZU1lbW9yeSwgSlPwnZSa8J2UovCdlJ/wnZSE8J2U
sPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utk1lbW9yeTo6b2Zmc2V0T2ZNZW1vcnkoKSksIGJhc2VN
ZW1vcnkpOyAvLyBXYXNtTWVtb3J5Ojp2b2lkKi4KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBp
IDwgc2l6ZVJlZ3Muc2l6ZSgpOyArK2kpIHsKICAgICAgICAgQVNTRVJUKHNpemVSZWdzW2ldLnNp
emVSZWdpc3RlciAhPSBiYXNlTWVtb3J5KTsKICAgICAgICAgQVNTRVJUKHNpemVSZWdzW2ldLnNp
emVSZWdpc3RlciAhPSBzY3JhdGNoKTsKQEAgLTQ1NSw3ICs0NTUsNyBAQCBzdGF0aWMgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmIHdhc21Ub1dhc20odW5zaWduZWQgaW1wb3J0SW5kZXgpCiAgICAgfQog
CiAgICAgLy8gVGFpbCBjYWxsIGludG8gdGhlIGNhbGxlZSBXZWJBc3NlbWJseSBmdW5jdGlvbi4K
LSAgICBqaXQubG9hZFB0cihKSVQ6OkFkZHJlc3Moc2NyYXRjaCwgV2ViQXNzZW1ibHlGdW5jdGlv
bjo6b2Zmc2V0T2ZXYXNtRW50cnlQb2ludENvZGUoKSksIHNjcmF0Y2gpOworICAgIGppdC5sb2Fk
UHRyKEpJVDo6QWRkcmVzcyhzY3JhdGNoLCDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2U
qvCdlJ/wnZSp8J2UtkZ1bmN0aW9uOjpvZmZzZXRPZldhc21FbnRyeVBvaW50Q29kZSgpKSwgc2Ny
YXRjaCk7CiAgICAgaml0Lmp1bXAoc2NyYXRjaCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVm
ZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21Db250ZXh0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
Q29udGV4dC5oCmluZGV4IGQ3OGJjMzAuLjhkODc0MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21Db250ZXh0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUNvbnRleHQuaApAQCAtMzEsMTQgKzMxLDE0IEBACiAKIG5hbWVzcGFjZSBKU0Mg
ewogCi1jbGFzcyBKU1dlYkFzc2VtYmx5SW5zdGFuY2U7CitjbGFzcyBKU/CdlJrwnZSi8J2Un/Cd
lITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2SW5zdGFuY2U7CiBjbGFzcyBWTTsKIAogbmFt
ZXNwYWNlIFdhc20gewogCiAvLyBGSVhNRTogV2UgbWlnaHQgd2FudCB0aGlzIHRvIGJlIHNvbWV0
aGluZyBlbHNlIGF0IHNvbWUgcG9pbnQ6CiAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTcwMjYwCi11c2luZyBDb250ZXh0ID0gSlNXZWJBc3NlbWJseUluc3RhbmNl
OwordXNpbmcgQ29udGV4dCA9IEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf
8J2UqfCdlLZJbnN0YW5jZTsKIAogaW5saW5lIGJvb2wgdXNlRmFzdFRMUygpCiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5LmgKaW5kZXggNmYwOTIwMC4uMzUyNjcxNyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnkuaApAQCAtNzYsNyArNzYsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIE1lbW9yeU1vZGUgbGFzdEFsbG9jYXRlZE1vZGUoKTsKICAgICBN
ZW1vcnlNb2RlIG1vZGUoKSBjb25zdCB7IHJldHVybiBtX21vZGU7IH0KIAotICAgIC8vIGdyb3co
KSBzaG91bGQgb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgSlNXZWJBc3NlbWJseU1lbW9yeSBvYmpl
Y3Qgc2luY2UgdGhhdCBvYmplY3QgbmVlZHMgdG8gdXBkYXRlIGludGVybmFsCisgICAgLy8gZ3Jv
dygpIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBKU/CdlJrwnZSi8J2Un/CdlITwnZSw
8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2TWVtb3J5IG9iamVjdCBzaW5jZSB0aGF0IG9iamVjdCBu
ZWVkcyB0byB1cGRhdGUgaW50ZXJuYWwKICAgICAvLyBwb2ludGVycyB3aXRoIHRoZSBjdXJyZW50
IGJhc2UgYW5kIHNpemUuCiAgICAgYm9vbCBncm93KFBhZ2VDb3VudCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGVQYXJzZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZVBhcnNlci5jcHAKaW5kZXggMjIzOTEyMi4u
N2VhMzNmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVs
ZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZVBh
cnNlci5jcHAKQEAgLTI3MSw3ICsyNzEsNyBAQCBhdXRvIE1vZHVsZVBhcnNlcjo6cGFyc2VUYWJs
ZUhlbHBlcihib29sIGlzSW1wb3J0KSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgUGFydGlhbFJlc3Vs
dCBsaW1pdHMgPSBwYXJzZVJlc2l6YWJsZUxpbWl0cyhpbml0aWFsLCBtYXhpbXVtKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWxpbWl0cykpCiAgICAgICAgIHJldHVybiBsaW1pdHMuZ2V0VW5leHBlY3Rl
ZCgpOwotICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIUpTV2ViQXNzZW1ibHlUYWJsZTo6aXNWYWxp
ZFNpemUoaW5pdGlhbCksICJUYWJsZSdzIGluaXRpYWwgcGFnZSBjb3VudCBvZiAiLCBpbml0aWFs
LCAiIGlzIGludmFsaWQiKTsKKyAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFKU/CdlJrwnZSi8J2U
n/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2VGFibGU6OmlzVmFsaWRTaXplKGluaXRp
YWwpLCAiVGFibGUncyBpbml0aWFsIHBhZ2UgY291bnQgb2YgIiwgaW5pdGlhbCwgIiBpcyBpbnZh
bGlkIik7CiAKICAgICBBU1NFUlQoIW1heGltdW0gfHwgKm1heGltdW0gPj0gaW5pdGlhbCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QbGFuLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGxhbi5oCmluZGV4IDYzMjEyOGQuLjM4YzY4NzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QbGFuLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBsYW4uaApAQCAtMzksNyArMzksNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgQ2FsbExpbmtJbmZvOwogY2xhc3MgSlNHbG9iYWxPYmpl
Y3Q7Ci1jbGFzcyBKU1dlYkFzc2VtYmx5Q2FsbGVlOworY2xhc3MgSlPwnZSa8J2UovCdlJ/wnZSE
8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtkNhbGxlZTsKIGNsYXNzIEpTUHJvbWlzZURlZmVy
cmVkOwogCiBuYW1lc3BhY2UgV2FzbSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtUGxhbklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21QbGFuSW5saW5lcy5oCmluZGV4IDQ4MjBjMTIuLjhjNWIxN2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QbGFuSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21QbGFuSW5saW5lcy5oCkBAIC0zOSwxMCArMzksMTAgQEAgdm9p
ZCBQbGFuOjppbml0aWFsaXplQ2FsbGVlcyhjb25zdCBGdW5jdG9yJiBjYWxsYmFjaykKICAgICBm
b3IgKHVuc2lnbmVkIGludGVybmFsRnVuY3Rpb25JbmRleCA9IDA7IGludGVybmFsRnVuY3Rpb25J
bmRleCA8IG1fd2FzbUludGVybmFsRnVuY3Rpb25zLnNpemUoKTsgKytpbnRlcm5hbEZ1bmN0aW9u
SW5kZXgpIHsKICAgICAgICAgV2FzbUludGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uID0gbV93YXNt
SW50ZXJuYWxGdW5jdGlvbnNbaW50ZXJuYWxGdW5jdGlvbkluZGV4XS5nZXQoKTsKIAotICAgICAg
ICBKU1dlYkFzc2VtYmx5Q2FsbGVlKiBqc0VudHJ5cG9pbnRDYWxsZWUgPSBKU1dlYkFzc2VtYmx5
Q2FsbGVlOjpjcmVhdGUobV92bSwgV1RGTW92ZShmdW5jdGlvbi0+anNUb1dhc21FbnRyeXBvaW50
KSk7CisgICAgICAgIEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCd
lLZDYWxsZWUqIGpzRW50cnlwb2ludENhbGxlZSA9IEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw
8J2UovCdlKrwnZSf8J2UqfCdlLZDYWxsZWU6OmNyZWF0ZShtX3ZtLCBXVEZNb3ZlKGZ1bmN0aW9u
LT5qc1RvV2FzbUVudHJ5cG9pbnQpKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hQ
b2ludGVyKGZ1bmN0aW9uLT5qc1RvV2FzbUNhbGxlZU1vdmVMb2NhdGlvbiwganNFbnRyeXBvaW50
Q2FsbGVlKTsKIAotICAgICAgICBKU1dlYkFzc2VtYmx5Q2FsbGVlKiB3YXNtRW50cnlwb2ludENh
bGxlZSA9IEpTV2ViQXNzZW1ibHlDYWxsZWU6OmNyZWF0ZShtX3ZtLCBXVEZNb3ZlKGZ1bmN0aW9u
LT53YXNtRW50cnlwb2ludCkpOworICAgICAgICBKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCd
lKLwnZSq8J2Un/CdlKnwnZS2Q2FsbGVlKiB3YXNtRW50cnlwb2ludENhbGxlZSA9IEpT8J2UmvCd
lKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZDYWxsZWU6OmNyZWF0ZShtX3Zt
LCBXVEZNb3ZlKGZ1bmN0aW9uLT53YXNtRW50cnlwb2ludCkpOwogICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6cmVwYXRjaFBvaW50ZXIoZnVuY3Rpb24tPndhc21DYWxsZWVNb3ZlTG9jYXRpb24sIHdh
c21FbnRyeXBvaW50Q2FsbGVlKTsKIAogICAgICAgICBjYWxsYmFjayhpbnRlcm5hbEZ1bmN0aW9u
SW5kZXgsIGpzRW50cnlwb2ludENhbGxlZSwgd2FzbUVudHJ5cG9pbnRDYWxsZWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVRodW5rcy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVGh1bmtzLmNwcAppbmRleCAzZDMzOWRkLi5iOGFjMWFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVGh1bmtzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVGh1bmtzLmNwcApAQCAtNjIsOCAr
NjIsOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgdGhyb3dFeGNlcHRpb25Gcm9tV2FzbVRodW5r
R2VuZXJhdG9yKCkKICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUoKnZtKTsKICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB3
YXNtQ29udGV4dC0+Z2xvYmFsT2JqZWN0KCk7CiAKLSAgICAgICAgICAgIEpTV2ViQXNzZW1ibHlS
dW50aW1lRXJyb3IqIGVycm9yID0gSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcjo6Y3JlYXRlKAot
ICAgICAgICAgICAgICAgIGV4ZWMsICp2bSwgZ2xvYmFsT2JqZWN0LT5XZWJBc3NlbWJseVJ1bnRp
bWVFcnJvclN0cnVjdHVyZSgpLCBXYXNtOjplcnJvck1lc3NhZ2VGb3JFeGNlcHRpb25UeXBlKHR5
cGUpKTsKKyAgICAgICAgICAgIEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf
8J2UqfCdlLZSdW50aW1lRXJyb3IqIGVycm9yID0gSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDw
nZSi8J2UqvCdlJ/wnZSp8J2UtlJ1bnRpbWVFcnJvcjo6Y3JlYXRlKAorICAgICAgICAgICAgICAg
IGV4ZWMsICp2bSwgZ2xvYmFsT2JqZWN0LT7wnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2U
qvCdlJ/wnZSp8J2UtlJ1bnRpbWVFcnJvclN0cnVjdHVyZSgpLCBXYXNtOjplcnJvck1lc3NhZ2VG
b3JFeGNlcHRpb25UeXBlKHR5cGUpKTsKICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMs
IHRocm93U2NvcGUsIGVycm9yKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q2FsbGVlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlDYWxsZWUuY3BwCmluZGV4IDc0ZmVhZjMu
LmU5ODE4MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2Vi
QXNzZW1ibHlDYWxsZWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pT
V2ViQXNzZW1ibHlDYWxsZWUuY3BwCkBAIC0zMywxMyArMzMsMTMgQEAKIAogbmFtZXNwYWNlIEpT
QyB7CiAKLWNvbnN0IENsYXNzSW5mbyBKU1dlYkFzc2VtYmx5Q2FsbGVlOjpzX2luZm8gPSB7ICJX
ZWJBc3NlbWJseUNhbGxlZSIsIG51bGxwdHIsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNXZWJB
c3NlbWJseUNhbGxlZSkgfTsKK2NvbnN0IENsYXNzSW5mbyBKU/CdlJrwnZSi8J2Un/CdlITwnZSw
8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2Q2FsbGVlOjpzX2luZm8gPSB7ICJXZWJBc3NlbWJseUNh
bGxlZSIsIG51bGxwdHIsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlPwnZSa8J2UovCdlJ/wnZSE
8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtkNhbGxlZSkgfTsKIAotSlNXZWJBc3NlbWJseUNh
bGxlZTo6SlNXZWJBc3NlbWJseUNhbGxlZShWTSYgdm0pCitKU/CdlJrwnZSi8J2Un/CdlITwnZSw
8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2Q2FsbGVlOjpKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2U
sPCdlKLwnZSq8J2Un/CdlKnwnZS2Q2FsbGVlKFZNJiB2bSkKICAgICA6IEJhc2Uodm0sIHZtLndl
YkFzc2VtYmx5Q2FsbGVlU3RydWN0dXJlLmdldCgpKQogeyB9CiAKLXZvaWQgSlNXZWJBc3NlbWJs
eUNhbGxlZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBXYXNtOjpFbnRyeXBvaW50JiYgZW50cnlw
b2ludCkKK3ZvaWQgSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2U
tkNhbGxlZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBXYXNtOjpFbnRyeXBvaW50JiYgZW50cnlw
b2ludCkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAKQEAgLTQ3LDExICs0Nywx
MSBAQCB2b2lkIEpTV2ViQXNzZW1ibHlDYWxsZWU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgV2Fz
bTo6RW50cnlwb2ludCYmIGVudHJ5cG9pbnQpCiAgICAgV2FzbTo6cmVnaXN0ZXJDb2RlKG1fZW50
cnlwb2ludC5jb21waWxhdGlvbi0+Y29kZVJlZigpLmV4ZWN1dGFibGVNZW1vcnkoKS0+c3RhcnQo
KSwgbV9lbnRyeXBvaW50LmNvbXBpbGF0aW9uLT5jb2RlUmVmKCkuZXhlY3V0YWJsZU1lbW9yeSgp
LT5lbmQoKSk7CiB9CiAKLXZvaWQgSlNXZWJBc3NlbWJseUNhbGxlZTo6ZGVzdHJveShKU0NlbGwq
IGNlbGwpCit2b2lkIEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCd
lLZDYWxsZWU6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogewotICAgIEpTV2ViQXNzZW1ibHlDYWxs
ZWUqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU1dlYkFzc2VtYmx5Q2FsbGVlKj4oY2VsbCk7
CisgICAgSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtkNhbGxl
ZSogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2U
ovCdlKrwnZSf8J2UqfCdlLZDYWxsZWUqPihjZWxsKTsKICAgICBXYXNtOjp1bnJlZ2lzdGVyQ29k
ZSh0aGlzT2JqZWN0LT5tX2VudHJ5cG9pbnQuY29tcGlsYXRpb24tPmNvZGVSZWYoKS5leGVjdXRh
YmxlTWVtb3J5KCktPnN0YXJ0KCksIHRoaXNPYmplY3QtPm1fZW50cnlwb2ludC5jb21waWxhdGlv
bi0+Y29kZVJlZigpLmV4ZWN1dGFibGVNZW1vcnkoKS0+ZW5kKCkpOwotICAgIHRoaXNPYmplY3Qt
PkpTV2ViQXNzZW1ibHlDYWxsZWU6On5KU1dlYkFzc2VtYmx5Q2FsbGVlKCk7CisgICAgdGhpc09i
amVjdC0+SlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtkNhbGxl
ZTo6fkpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZDYWxsZWUo
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q2FsbGVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q2FsbGVlLmgKaW5kZXggYThhM2RjYS4uM2EzZTFlYSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNh
bGxlZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlD
YWxsZWUuaApAQCAtMzQsMTQgKzM0LDE0IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBK
U1dlYkFzc2VtYmx5Q2FsbGVlIDogcHVibGljIEpTQ2VsbCB7CitjbGFzcyBKU/CdlJrwnZSi8J2U
n/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2Q2FsbGVlIDogcHVibGljIEpTQ2VsbCB7
CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlz
SW1tb3J0YWw7CiAKLSAgICBzdGF0aWMgSlNXZWJBc3NlbWJseUNhbGxlZSogY3JlYXRlKFZNJiB2
bSwgV2FzbTo6RW50cnlwb2ludCYmIGVudHJ5cG9pbnQpCisgICAgc3RhdGljIEpT8J2UmvCdlKLw
nZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZDYWxsZWUqIGNyZWF0ZShWTSYgdm0s
IFdhc206OkVudHJ5cG9pbnQmJiBlbnRyeXBvaW50KQogICAgIHsKLSAgICAgICAgSlNXZWJBc3Nl
bWJseUNhbGxlZSogY2FsbGVlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNXZWJBc3Nl
bWJseUNhbGxlZT4odm0uaGVhcCkpIEpTV2ViQXNzZW1ibHlDYWxsZWUodm0pOworICAgICAgICBK
U/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2Q2FsbGVlKiBjYWxs
ZWUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2U
sPCdlKLwnZSq8J2Un/CdlKnwnZS2Q2FsbGVlPih2bS5oZWFwKSkgSlPwnZSa8J2UovCdlJ/wnZSE
8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtkNhbGxlZSh2bSk7CiAgICAgICAgIGNhbGxlZS0+
ZmluaXNoQ3JlYXRpb24odm0sIFdURk1vdmUoZW50cnlwb2ludCkpOwogICAgICAgICByZXR1cm4g
Y2FsbGVlOwogICAgIH0KQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAg
IEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBXYXNtOjpFbnRyeXBv
aW50JiYpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTV2ViQXNzZW1ibHlDYWxsZWUoVk0mKTsK
KyAgICBKU19FWFBPUlRfUFJJVkFURSBKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq
8J2Un/CdlKnwnZS2Q2FsbGVlKFZNJik7CiAKICAgICBXYXNtOjpFbnRyeXBvaW50IG1fZW50cnlw
b2ludDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dl
YkFzc2VtYmx5Q29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pT
V2ViQXNzZW1ibHlDb2RlQmxvY2suY3BwCmluZGV4IDNlN2YwNTMuLmMyYWJlZTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxvY2su
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2Rl
QmxvY2suY3BwCkBAIC0zNiw5ICszNiw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1jb25zdCBD
bGFzc0luZm8gSlNXZWJBc3NlbWJseUNvZGVCbG9jazo6c19pbmZvID0geyAiV2ViQXNzZW1ibHlD
b2RlQmxvY2siLCBudWxscHRyLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTV2ViQXNzZW1ibHlD
b2RlQmxvY2spIH07Citjb25zdCBDbGFzc0luZm8gSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDw
nZSi8J2UqvCdlJ/wnZSp8J2UtkNvZGVCbG9jazo6c19pbmZvID0geyAiV2ViQXNzZW1ibHlDb2Rl
QmxvY2siLCBudWxscHRyLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpT8J2UmvCdlKLwnZSf8J2U
hPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZDb2RlQmxvY2spIH07CiAKLUpTV2ViQXNzZW1i
bHlDb2RlQmxvY2s6OkpTV2ViQXNzZW1ibHlDb2RlQmxvY2soVk0mIHZtLCBKU1dlYkFzc2VtYmx5
TW9kdWxlKiBvd25lciwgIFdhc206Ok1lbW9yeU1vZGUgbW9kZSwgUmVmPFdhc206OlBsYW4+JiYg
cGxhbiwgdW5zaWduZWQgY2FsbGVlQ291bnQpCitKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCd
lKLwnZSq8J2Un/CdlKnwnZS2Q29kZUJsb2NrOjpKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCd
lKLwnZSq8J2Un/CdlKnwnZS2Q29kZUJsb2NrKFZNJiB2bSwgSlPwnZSa8J2UovCdlJ/wnZSE8J2U
sPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utk1vZHVsZSogb3duZXIsICBXYXNtOjpNZW1vcnlNb2Rl
IG1vZGUsIFJlZjxXYXNtOjpQbGFuPiYmIHBsYW4sIHVuc2lnbmVkIGNhbGxlZUNvdW50KQogICAg
IDogQmFzZSh2bSwgdm0ud2ViQXNzZW1ibHlDb2RlQmxvY2tTdHJ1Y3R1cmUuZ2V0KCkpCiAgICAg
LCBtX3BsYW4oV1RGTW92ZShwbGFuKSkKICAgICAsIG1fbW9kZShtb2RlKQpAQCAtNDgsMTAgKzQ4
LDEwIEBAIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2s6OkpTV2ViQXNzZW1ibHlDb2RlQmxvY2soVk0m
IHZtLCBKU1dlYkFzc2VtYmx5TW9kdWxlKiBvd25lCiAgICAgQVNTRVJUKCFtb2R1bGUoKS0+Y29k
ZUJsb2NrKG1vZGUpKTsKICAgICBtb2R1bGUoKS0+c2V0Q29kZUJsb2NrKHZtLCBtb2RlLCB0aGlz
KTsKIAotICAgIG1lbXNldChjYWxsZWVzKCksIDAsIG1fY2FsbGVlQ291bnQgKiBzaXplb2YoV3Jp
dGVCYXJyaWVyPEpTV2ViQXNzZW1ibHlDYWxsZWU+KSAqIDIpOworICAgIG1lbXNldChjYWxsZWVz
KCksIDAsIG1fY2FsbGVlQ291bnQgKiBzaXplb2YoV3JpdGVCYXJyaWVyPEpT8J2UmvCdlKLwnZSf
8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZDYWxsZWU+KSAqIDIpOwogfQogCi12b2lk
IEpTV2ViQXNzZW1ibHlDb2RlQmxvY2s6OmluaXRpYWxpemUoKQordm9pZCBKU/CdlJrwnZSi8J2U
n/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2Q29kZUJsb2NrOjppbml0aWFsaXplKCkK
IHsKICAgICBpZiAoaW5pdGlhbGl6ZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNzYsNyArNzYs
NyBAQCB2b2lkIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2s6OmluaXRpYWxpemUoKQogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX3dhc21FeGl0U3R1YnMuc2l6ZSgpOyBpKyspCiAgICAgICAg
IGltcG9ydFdhc21Ub0pTU3R1YihtX2NhbGxlZUNvdW50LCBpKSA9IG1fd2FzbUV4aXRTdHVic1tp
XS53YXNtVG9Kcy5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKIAotICAgIHBsYW4oKS5pbml0
aWFsaXplQ2FsbGVlcyhbJl0gKHVuc2lnbmVkIGNhbGxlZUluZGV4LCBKU1dlYkFzc2VtYmx5Q2Fs
bGVlKiBqc0VudHJ5cG9pbnRDYWxsZWUsIEpTV2ViQXNzZW1ibHlDYWxsZWUqIHdhc21FbnRyeXBv
aW50Q2FsbGVlKSB7CisgICAgcGxhbigpLmluaXRpYWxpemVDYWxsZWVzKFsmXSAodW5zaWduZWQg
Y2FsbGVlSW5kZXgsIEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCd
lLZDYWxsZWUqIGpzRW50cnlwb2ludENhbGxlZSwgSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDw
nZSi8J2UqvCdlJ/wnZSp8J2UtkNhbGxlZSogd2FzbUVudHJ5cG9pbnRDYWxsZWUpIHsKICAgICAg
ICAgc2V0SlNFbnRyeXBvaW50Q2FsbGVlKHZtLCBjYWxsZWVJbmRleCwganNFbnRyeXBvaW50Q2Fs
bGVlKTsKICAgICAgICAgc2V0V2FzbUVudHJ5cG9pbnRDYWxsZWUodm0sIGNhbGxlZUluZGV4LCB3
YXNtRW50cnlwb2ludENhbGxlZSk7CiAgICAgfSk7CkBAIC04NCwxMiArODQsMTIgQEAgdm9pZCBK
U1dlYkFzc2VtYmx5Q29kZUJsb2NrOjppbml0aWFsaXplKCkKICAgICBtX3BsYW4gPSBudWxscHRy
OwogfQogCi12b2lkIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2s6OmRlc3Ryb3koSlNDZWxsKiBjZWxs
KQordm9pZCBKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2Q29k
ZUJsb2NrOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKIHsKLSAgICBzdGF0aWNfY2FzdDxKU1dlYkFz
c2VtYmx5Q29kZUJsb2NrKj4oY2VsbCktPkpTV2ViQXNzZW1ibHlDb2RlQmxvY2s6On5KU1dlYkFz
c2VtYmx5Q29kZUJsb2NrKCk7CisgICAgc3RhdGljX2Nhc3Q8SlPwnZSa8J2UovCdlJ/wnZSE8J2U
sPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtkNvZGVCbG9jayo+KGNlbGwpLT5KU/CdlJrwnZSi8J2U
n/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2Q29kZUJsb2NrOjp+SlPwnZSa8J2UovCd
lJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtkNvZGVCbG9jaygpOwogfQogCi1ib29s
IEpTV2ViQXNzZW1ibHlDb2RlQmxvY2s6OmlzU2FmZVRvUnVuKEpTV2ViQXNzZW1ibHlNZW1vcnkq
IG1lbW9yeSkgY29uc3QKK2Jvb2wgSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCd
lJ/wnZSp8J2UtkNvZGVCbG9jazo6aXNTYWZlVG9SdW4oSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCd
lLDwnZSi8J2UqvCdlJ/wnZSp8J2Utk1lbW9yeSogbWVtb3J5KSBjb25zdAogewogICAgIGlmICgh
cnVubmFibGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTExLDkgKzExMSw5IEBAIGJv
b2wgSlNXZWJBc3NlbWJseUNvZGVCbG9jazo6aXNTYWZlVG9SdW4oSlNXZWJBc3NlbWJseU1lbW9y
eSogbWVtb3J5KSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBKU1dlYkFzc2Vt
Ymx5Q29kZUJsb2NrOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCit2b2lkIEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCd
lLZDb2RlQmxvY2s6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlz
aXRvcikKIHsKLSAgICBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrKiB0aGlzT2JqZWN0ID0ganNDYXN0
PEpTV2ViQXNzZW1ibHlDb2RlQmxvY2sqPihjZWxsKTsKKyAgICBKU/CdlJrwnZSi8J2Un/CdlITw
nZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2Q29kZUJsb2NrKiB0aGlzT2JqZWN0ID0ganNDYXN0
PEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZDb2RlQmxvY2sq
PihjZWxsKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8o
KSk7CiAKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwpAQCAt
MTI0LDEwICsxMjQsMTAgQEAgdm9pZCBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrOjp2aXNpdENoaWxk
cmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hZGRV
bmNvbmRpdGlvbmFsRmluYWxpemVyKCZ0aGlzT2JqZWN0LT5tX3VuY29uZGl0aW9uYWxGaW5hbGl6
ZXIpOwogfQogCi12b2lkIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2s6OlVuY29uZGl0aW9uYWxGaW5h
bGl6ZXI6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KCkKK3ZvaWQgSlPwnZSa8J2UovCdlJ/wnZSE
8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtkNvZGVCbG9jazo6VW5jb25kaXRpb25hbEZpbmFs
aXplcjo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoKQogewotICAgIEpTV2ViQXNzZW1ibHlDb2Rl
QmxvY2sqIHRoaXNPYmplY3QgPSBiaXR3aXNlX2Nhc3Q8SlNXZWJBc3NlbWJseUNvZGVCbG9jayo+
KAotICAgICAgICBiaXR3aXNlX2Nhc3Q8Y2hhcio+KHRoaXMpIC0gT0JKRUNUX09GRlNFVE9GKEpT
V2ViQXNzZW1ibHlDb2RlQmxvY2ssIG1fdW5jb25kaXRpb25hbEZpbmFsaXplcikpOworICAgIEpT
8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZDb2RlQmxvY2sqIHRo
aXNPYmplY3QgPSBiaXR3aXNlX2Nhc3Q8SlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2U
qvCdlJ/wnZSp8J2UtkNvZGVCbG9jayo+KAorICAgICAgICBiaXR3aXNlX2Nhc3Q8Y2hhcio+KHRo
aXMpIC0gT0JKRUNUX09GRlNFVE9GKEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrw
nZSf8J2UqfCdlLZDb2RlQmxvY2ssIG1fdW5jb25kaXRpb25hbEZpbmFsaXplcikpOwogICAgIGZv
ciAoYXV0byBpdGVyID0gdGhpc09iamVjdC0+bV9jYWxsTGlua0luZm9zLmJlZ2luKCk7ICEhaXRl
cjsgKytpdGVyKQogICAgICAgICAoKml0ZXIpLT52aXNpdFdlYWsoKnRoaXNPYmplY3QtPnZtKCkp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3Nl
bWJseUNvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3Nl
bWJseUNvZGVCbG9jay5oCmluZGV4IDdjNmFjZjAuLjJkMWEyZDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxvY2suaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmgKQEAg
LTM3LDIxICszNywyMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgSlNXZWJBc3NlbWJs
eU1vZHVsZTsKLWNsYXNzIEpTV2ViQXNzZW1ibHlNZW1vcnk7CitjbGFzcyBKU/CdlJrwnZSi8J2U
n/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2TW9kdWxlOworY2xhc3MgSlPwnZSa8J2U
ovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utk1lbW9yeTsKIAogbmFtZXNwYWNl
IFdhc20gewogY2xhc3MgUGxhbjsKIH0KIAotY2xhc3MgSlNXZWJBc3NlbWJseUNvZGVCbG9jayA6
IHB1YmxpYyBKU0NlbGwgeworY2xhc3MgSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2U
qvCdlJ/wnZSp8J2UtkNvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogcHVibGljOgogICAgIHR5
cGVkZWYgSlNDZWxsIEJhc2U7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOwogCi0gICAg
c3RhdGljIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2sqIGNyZWF0ZShWTSYgdm0sIEpTV2ViQXNzZW1i
bHlNb2R1bGUqIG93bmVyLCBXYXNtOjpNZW1vcnlNb2RlIG1vZGUsIFJlZjxXYXNtOjpQbGFuPiYm
IHBsYW4sIHVuc2lnbmVkIGNhbGxlZUNvdW50LCB1bnNpZ25lZCBmdW5jdGlvbkltcG9ydENvdW50
KQorICAgIHN0YXRpYyBKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnw
nZS2Q29kZUJsb2NrKiBjcmVhdGUoVk0mIHZtLCBKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCd
lKLwnZSq8J2Un/CdlKnwnZS2TW9kdWxlKiBvd25lciwgV2FzbTo6TWVtb3J5TW9kZSBtb2RlLCBS
ZWY8V2FzbTo6UGxhbj4mJiBwbGFuLCB1bnNpZ25lZCBjYWxsZWVDb3VudCwgdW5zaWduZWQgZnVu
Y3Rpb25JbXBvcnRDb3VudCkKICAgICB7Ci0gICAgICAgIGF1dG8qIHJlc3VsdCA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPEpTV2ViQXNzZW1ibHlDb2RlQmxvY2s+KHZtLmhlYXAsIGFsbG9j
YXRpb25TaXplKGNhbGxlZUNvdW50LCBmdW5jdGlvbkltcG9ydENvdW50KSkpIEpTV2ViQXNzZW1i
bHlDb2RlQmxvY2sodm0sIG93bmVyLCBtb2RlLCBXVEZNb3ZlKHBsYW4pLCBjYWxsZWVDb3VudCk7
CisgICAgICAgIGF1dG8qIHJlc3VsdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpT8J2U
mvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZDb2RlQmxvY2s+KHZtLmhl
YXAsIGFsbG9jYXRpb25TaXplKGNhbGxlZUNvdW50LCBmdW5jdGlvbkltcG9ydENvdW50KSkpIEpT
8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZDb2RlQmxvY2sodm0s
IG93bmVyLCBtb2RlLCBXVEZNb3ZlKHBsYW4pLCBjYWxsZWVDb3VudCk7CiAgICAgICAgIHJlc3Vs
dC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAg
LTYzLDkgKzYzLDkgQEAgcHVibGljOgogCiAgICAgdW5zaWduZWQgZnVuY3Rpb25JbXBvcnRDb3Vu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fd2FzbUV4aXRTdHVicy5zaXplKCk7IH0KICAgICBXYXNtOjpN
ZW1vcnlNb2RlIG1vZGUoKSBjb25zdCB7IHJldHVybiBtX21vZGU7IH0KLSAgICBKU1dlYkFzc2Vt
Ymx5TW9kdWxlKiBtb2R1bGUoKSBjb25zdCB7IHJldHVybiBtX21vZHVsZS5nZXQoKTsgfQorICAg
IEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZNb2R1bGUqIG1v
ZHVsZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlLmdldCgpOyB9CiAKLSAgICAvLyBEb24ndCBj
YWxsIGludGlhbGl6ZSBkaXJlY3RseSwgdGhpcyBzaG91bGQgYmUgY2FsbGVkIGZvciB5b3UsIGFz
IG5lZWRlZCwgYnkgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpmaW5hbGl6ZUNyZWF0aW9uLgorICAg
IC8vIERvbid0IGNhbGwgaW50aWFsaXplIGRpcmVjdGx5LCB0aGlzIHNob3VsZCBiZSBjYWxsZWQg
Zm9yIHlvdSwgYXMgbmVlZGVkLCBieSBKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq
8J2Un/CdlKnwnZS2SW5zdGFuY2U6OmZpbmFsaXplQ3JlYXRpb24uCiAgICAgdm9pZCBpbml0aWFs
aXplKCk7CiAgICAgYm9vbCBpbml0aWFsaXplZCgpIGNvbnN0IHsgcmV0dXJuICFtX3BsYW47IH0K
IApAQCAtNzMsOSArNzMsOSBAQCBwdWJsaWM6CiAKICAgICBib29sIHJ1bm5hYmxlKCkgY29uc3Qg
eyByZXR1cm4gaW5pdGlhbGl6ZWQoKSAmJiAhbV9lcnJvck1lc3NhZ2U7IH0KICAgICBTdHJpbmcm
IGVycm9yTWVzc2FnZSgpIHsgQVNTRVJUKCFydW5uYWJsZSgpKTsgcmV0dXJuIG1fZXJyb3JNZXNz
YWdlOyB9Ci0gICAgYm9vbCBpc1NhZmVUb1J1bihKU1dlYkFzc2VtYmx5TWVtb3J5KikgY29uc3Q7
CisgICAgYm9vbCBpc1NhZmVUb1J1bihKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq
8J2Un/CdlKnwnZS2TWVtb3J5KikgY29uc3Q7CiAKLSAgICBKU1dlYkFzc2VtYmx5Q2FsbGVlKiBq
c0VudHJ5cG9pbnRDYWxsZWVGcm9tRnVuY3Rpb25JbmRleFNwYWNlKHVuc2lnbmVkIGZ1bmN0aW9u
SW5kZXhTcGFjZSkKKyAgICBKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/Cd
lKnwnZS2Q2FsbGVlKiBqc0VudHJ5cG9pbnRDYWxsZWVGcm9tRnVuY3Rpb25JbmRleFNwYWNlKHVu
c2lnbmVkIGZ1bmN0aW9uSW5kZXhTcGFjZSkKICAgICB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGZ1bmN0aW9uSW5kZXhTcGFjZSA+PSBmdW5jdGlvbkltcG9ydENvdW50KCkpOwogICAgICAgICB1
bnNpZ25lZCBjYWxsZWVJbmRleCA9IGZ1bmN0aW9uSW5kZXhTcGFjZSAtIGZ1bmN0aW9uSW1wb3J0
Q291bnQoKTsKQEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gY2FsbGVl
cygpW2NhbGxlZUluZGV4XS5nZXQoKTsKICAgICB9CiAKLSAgICBKU1dlYkFzc2VtYmx5Q2FsbGVl
KiB3YXNtRW50cnlwb2ludENhbGxlZUZyb21GdW5jdGlvbkluZGV4U3BhY2UodW5zaWduZWQgZnVu
Y3Rpb25JbmRleFNwYWNlKQorICAgIEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrw
nZSf8J2UqfCdlLZDYWxsZWUqIHdhc21FbnRyeXBvaW50Q2FsbGVlRnJvbUZ1bmN0aW9uSW5kZXhT
cGFjZSh1bnNpZ25lZCBmdW5jdGlvbkluZGV4U3BhY2UpCiAgICAgewogICAgICAgICBSRUxFQVNF
X0FTU0VSVChmdW5jdGlvbkluZGV4U3BhY2UgPj0gZnVuY3Rpb25JbXBvcnRDb3VudCgpKTsKICAg
ICAgICAgdW5zaWduZWQgY2FsbGVlSW5kZXggPSBmdW5jdGlvbkluZGV4U3BhY2UgLSBmdW5jdGlv
bkltcG9ydENvdW50KCk7CkBAIC05MSwxOSArOTEsMTkgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gY2FsbGVlcygpW2NhbGxlZUluZGV4ICsgbV9jYWxsZWVDb3VudF0uZ2V0KCk7CiAgICAgfQog
Ci0gICAgdm9pZCBzZXRKU0VudHJ5cG9pbnRDYWxsZWUoVk0mIHZtLCB1bnNpZ25lZCBjYWxsZWVJ
bmRleCwgSlNXZWJBc3NlbWJseUNhbGxlZSogY2FsbGVlKQorICAgIHZvaWQgc2V0SlNFbnRyeXBv
aW50Q2FsbGVlKFZNJiB2bSwgdW5zaWduZWQgY2FsbGVlSW5kZXgsIEpT8J2UmvCdlKLwnZSf8J2U
hPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZDYWxsZWUqIGNhbGxlZSkKICAgICB7CiAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxlZUluZGV4IDwgbV9jYWxsZWVDb3VudCk7CiAgICAgICAg
IGNhbGxlZXMoKVtjYWxsZWVJbmRleF0uc2V0KHZtLCB0aGlzLCBjYWxsZWUpOwogICAgIH0KIAot
ICAgIHZvaWQgc2V0V2FzbUVudHJ5cG9pbnRDYWxsZWUoVk0mIHZtLCB1bnNpZ25lZCBjYWxsZWVJ
bmRleCwgSlNXZWJBc3NlbWJseUNhbGxlZSogY2FsbGVlKQorICAgIHZvaWQgc2V0V2FzbUVudHJ5
cG9pbnRDYWxsZWUoVk0mIHZtLCB1bnNpZ25lZCBjYWxsZWVJbmRleCwgSlPwnZSa8J2UovCdlJ/w
nZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtkNhbGxlZSogY2FsbGVlKQogICAgIHsKICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbGVlSW5kZXggPCBtX2NhbGxlZUNvdW50KTsKICAgICAg
ICAgY2FsbGVlcygpW2NhbGxlZUluZGV4ICsgbV9jYWxsZWVDb3VudF0uc2V0KHZtLCB0aGlzLCBj
YWxsZWUpOwogICAgIH0KIAotICAgIFdyaXRlQmFycmllcjxKU1dlYkFzc2VtYmx5Q2FsbGVlPiog
Y2FsbGVlcygpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxXcml0ZUJhcnJpZXI8SlNXZWJBc3NlbWJs
eUNhbGxlZT4qPihiaXR3aXNlX2Nhc3Q8Y2hhcio+KHRoaXMpICsgb2Zmc2V0T2ZDYWxsZWVzKCkp
OyB9CisgICAgV3JpdGVCYXJyaWVyPEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrw
nZSf8J2UqfCdlLZDYWxsZWU+KiBjYWxsZWVzKCkgeyByZXR1cm4gYml0d2lzZV9jYXN0PFdyaXRl
QmFycmllcjxKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2Q2Fs
bGVlPio+KGJpdHdpc2VfY2FzdDxjaGFyKj4odGhpcykgKyBvZmZzZXRPZkNhbGxlZXMoKSk7IH0K
IAogICAgIHZvaWQqIHdhc21Ub0pzQ2FsbFN0dWJGb3JJbXBvcnQodW5zaWduZWQgaW1wb3J0SW5k
ZXgpCiAgICAgewpAQCAtMTE0LDEyICsxMTQsMTIgQEAgcHVibGljOgogICAgIHN0YXRpYyBwdHJk
aWZmX3Qgb2Zmc2V0T2ZJbXBvcnRXYXNtVG9KU1N0dWIodW5zaWduZWQgY2FsbGVlQ291bnQsIHVu
c2lnbmVkIGltcG9ydEluZGV4KQogICAgIHsKICAgICAgICAgcmV0dXJuIG9mZnNldE9mQ2FsbGVl
cygpCi0gICAgICAgICAgICArIChzaXplb2YoV3JpdGVCYXJyaWVyPEpTV2ViQXNzZW1ibHlDYWxs
ZWU+KSAqIGNhbGxlZUNvdW50ICogMikKKyAgICAgICAgICAgICsgKHNpemVvZihXcml0ZUJhcnJp
ZXI8SlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtkNhbGxlZT4p
ICogY2FsbGVlQ291bnQgKiAyKQogICAgICAgICAgICAgKyAoc2l6ZW9mKHZvaWQqKSAqIGltcG9y
dEluZGV4KTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgSlNXZWJBc3NlbWJseUNvZGVCbG9jayhW
TSYsIEpTV2ViQXNzZW1ibHlNb2R1bGUqLCBXYXNtOjpNZW1vcnlNb2RlLCBSZWY8V2FzbTo6UGxh
bj4mJiwgdW5zaWduZWQgY2FsbGVlQ291bnQpOworICAgIEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDw
nZSw8J2UovCdlKrwnZSf8J2UqfCdlLZDb2RlQmxvY2soVk0mLCBKU/CdlJrwnZSi8J2Un/CdlITw
nZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2TW9kdWxlKiwgV2FzbTo6TWVtb3J5TW9kZSwgUmVm
PFdhc206OlBsYW4+JiYsIHVuc2lnbmVkIGNhbGxlZUNvdW50KTsKICAgICBERUNMQVJFX0VYUE9S
VF9JTkZPOwogICAgIHN0YXRpYyBjb25zdCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOwog
ICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CkBAIC0xMjcsMTMgKzEyNywxMyBAQCBw
cml2YXRlOgogCiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkNhbGxlZXMoKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjxzaXplb2YoV3JpdGVCYXJy
aWVyPEpTV2ViQXNzZW1ibHlDYWxsZWU+KT4oc2l6ZW9mKEpTV2ViQXNzZW1ibHlDb2RlQmxvY2sp
KTsKKyAgICAgICAgcmV0dXJuIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjxzaXplb2YoV3JpdGVC
YXJyaWVyPEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZDYWxs
ZWU+KT4oc2l6ZW9mKEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCd
lLZDb2RlQmxvY2spKTsKICAgICB9CiAKICAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXpl
KHVuc2lnbmVkIGNhbGxlZUNvdW50LCB1bnNpZ25lZCBmdW5jdGlvbkltcG9ydENvdW50KQogICAg
IHsKICAgICAgICAgcmV0dXJuIG9mZnNldE9mQ2FsbGVlcygpCi0gICAgICAgICAgICArIChzaXpl
b2YoV3JpdGVCYXJyaWVyPEpTV2ViQXNzZW1ibHlDYWxsZWU+KSAqIGNhbGxlZUNvdW50ICogMikK
KyAgICAgICAgICAgICsgKHNpemVvZihXcml0ZUJhcnJpZXI8SlPwnZSa8J2UovCdlJ/wnZSE8J2U
sPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtkNhbGxlZT4pICogY2FsbGVlQ291bnQgKiAyKQogICAg
ICAgICAgICAgKyAoc2l6ZW9mKHZvaWQqKSAqIGZ1bmN0aW9uSW1wb3J0Q291bnQpOwogICAgIH0K
IApAQCAtMTQ2LDcgKzE0Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIHZvaWQgZmluYWxpemVVbmNv
bmRpdGlvbmFsbHkoKSBvdmVycmlkZTsKICAgICB9OwogCi0gICAgV3JpdGVCYXJyaWVyPEpTV2Vi
QXNzZW1ibHlNb2R1bGU+IG1fbW9kdWxlOworICAgIFdyaXRlQmFycmllcjxKU/CdlJrwnZSi8J2U
n/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2TW9kdWxlPiBtX21vZHVsZTsKICAgICBV
bmNvbmRpdGlvbmFsRmluYWxpemVyIG1fdW5jb25kaXRpb25hbEZpbmFsaXplcjsKICAgICBCYWc8
Q2FsbExpbmtJbmZvPiBtX2NhbGxMaW5rSW5mb3M7CiAgICAgVmVjdG9yPFdhc206Oldhc21FeGl0
U3R1YnM+IG1fd2FzbUV4aXRTdHViczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvci5jcHAKaW5kZXggNjMxYmJi
Ny4uZjYxYTkwNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNX
ZWJBc3NlbWJseUNvbXBpbGVFcnJvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvci5jcHAKQEAgLTMyLDI4ICszMiwyOCBAQAog
CiBuYW1lc3BhY2UgSlNDIHsKIAotSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvciogSlNXZWJBc3Nl
bWJseUNvbXBpbGVFcnJvcjo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQorSlPwnZSa8J2UovCdlJ/wnZSE
8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtkNvbXBpbGVFcnJvciogSlPwnZSa8J2UovCdlJ/w
nZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtkNvbXBpbGVFcnJvcjo6Y3JlYXRlKEV4ZWNT
dGF0ZSogZXhlYywgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKQogewotICAgIGF1dG8qIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8SlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcj4odm0uaGVhcCkpIEpTV2ViQXNzZW1ibHlDb21w
aWxlRXJyb3Iodm0sIHN0cnVjdHVyZSk7CisgICAgYXV0byogaW5zdGFuY2UgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/Cd
lKnwnZS2Q29tcGlsZUVycm9yPih2bS5oZWFwKSkgSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDw
nZSi8J2UqvCdlJ/wnZSp8J2UtkNvbXBpbGVFcnJvcih2bSwgc3RydWN0dXJlKTsKICAgICBpbnN0
YW5jZS0+bV9zb3VyY2VBcHBlbmRlciA9IGRlZmF1bHRTb3VyY2VBcHBlbmRlcjsKICAgICBib29s
IHVzZUN1cnJlbnRGcmFtZSA9IHRydWU7CiAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKGV4
ZWMsIHZtLCBtZXNzYWdlLCB1c2VDdXJyZW50RnJhbWUpOwogICAgIHJldHVybiBpbnN0YW5jZTsK
IH0KIAotSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcjo6SlNXZWJBc3NlbWJseUNvbXBpbGVFcnJv
cihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCd
lLDwnZSi8J2UqvCdlJ/wnZSp8J2UtkNvbXBpbGVFcnJvcjo6SlPwnZSa8J2UovCdlJ/wnZSE8J2U
sPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtkNvbXBpbGVFcnJvcihWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlKQogICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQogewogfQogCi1jb25zdCBDbGFz
c0luZm8gSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcjo6c19pbmZvID0geyAiV2ViQXNzZW1ibHku
Q29tcGlsZUVycm9yIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1dl
YkFzc2VtYmx5Q29tcGlsZUVycm9yKSB9OworY29uc3QgQ2xhc3NJbmZvIEpT8J2UmvCdlKLwnZSf
8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZDb21waWxlRXJyb3I6OnNfaW5mbyA9IHsg
IldlYkFzc2VtYmx5LkNvbXBpbGVFcnJvciIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtkNv
bXBpbGVFcnJvcikgfTsKIAogICAgIAotSlNPYmplY3QqIGNyZWF0ZUpTV2ViQXNzZW1ibHlDb21w
aWxlRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkK
K0pTT2JqZWN0KiBjcmVhdGVKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/Cd
lKnwnZS2Q29tcGlsZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpCiB7CiAgICAgQVNTRVJUKCFtZXNzYWdlLmlzRW1wdHkoKSk7CiAgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKLSAg
ICByZXR1cm4gSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcjo6Y3JlYXRlKGV4ZWMsIHZtLCBnbG9i
YWxPYmplY3QtPldlYkFzc2VtYmx5Q29tcGlsZUVycm9yU3RydWN0dXJlKCksIG1lc3NhZ2UpOwor
ICAgIHJldHVybiBKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2
Q29tcGlsZUVycm9yOjpjcmVhdGUoZXhlYywgdm0sIGdsb2JhbE9iamVjdC0+8J2UmvCdlKLwnZSf
8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZDb21waWxlRXJyb3JTdHJ1Y3R1cmUoKSwg
bWVzc2FnZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvci5oCmluZGV4
IGY2Y2Q5ODcuLmIyZmFiOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL0pTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yLmgKQEAgLTMxLDEyICszMSwxMiBA
QAogCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvciA6
IHB1YmxpYyBFcnJvckluc3RhbmNlIHsKK2NsYXNzIEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw
8J2UovCdlKrwnZSf8J2UqfCdlLZDb21waWxlRXJyb3IgOiBwdWJsaWMgRXJyb3JJbnN0YW5jZSB7
CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBFcnJvckluc3RhbmNlIEJhc2U7CiAKLSAgICBzdGF0aWMg
SlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvciogY3JlYXRlKEV4ZWNTdGF0ZSosIFZNJiwgU3RydWN0
dXJlKiwgY29uc3QgU3RyaW5nJik7Ci0gICAgc3RhdGljIEpTV2ViQXNzZW1ibHlDb21waWxlRXJy
b3IqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IEpTVmFsdWUgbWVzc2FnZSkKKyAgICBzdGF0aWMgSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDw
nZSi8J2UqvCdlJ/wnZSp8J2UtkNvbXBpbGVFcnJvciogY3JlYXRlKEV4ZWNTdGF0ZSosIFZNJiwg
U3RydWN0dXJlKiwgY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGljIEpT8J2UmvCdlKLwnZSf8J2U
hPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZDb21waWxlRXJyb3IqIGNyZWF0ZShFeGVjU3Rh
dGUqIGV4ZWMsIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTVmFsdWUgbWVzc2FnZSkK
ICAgICB7CiAgICAgICAgIHJldHVybiBjcmVhdGUoZXhlYywgdm0sIHN0cnVjdHVyZSwgbWVzc2Fn
ZS5pc1VuZGVmaW5lZCgpID8gU3RyaW5nKCkgOiBtZXNzYWdlLnRvV1RGU3RyaW5nKGV4ZWMpKTsK
ICAgICB9CkBAIC00NCwxMCArNDQsMTAgQEAgcHVibGljOgogICAgIERFQ0xBUkVfSU5GTzsKIAog
cHJvdGVjdGVkOgotICAgIEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IoVk0mLCBTdHJ1Y3R1cmUq
KTsKKyAgICBKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2Q29t
cGlsZUVycm9yKFZNJiwgU3RydWN0dXJlKik7CiB9OwogCi1KU09iamVjdCogY3JlYXRlSlNXZWJB
c3NlbWJseUNvbXBpbGVFcnJvcihFeGVjU3RhdGUqLCBWTSYsIGNvbnN0IFN0cmluZyYpOworSlNP
YmplY3QqIGNyZWF0ZUpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCd
lLZDb21waWxlRXJyb3IoRXhlY1N0YXRlKiwgVk0mLCBjb25zdCBTdHJpbmcmKTsKIAogfSAvLyBu
YW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L0pTV2ViQXNzZW1ibHlIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9K
U1dlYkFzc2VtYmx5SGVscGVycy5oCmluZGV4IDU3OGE2OWYuLmVkYTI0NDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlIZWxwZXJzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUhlbHBlcnMuaApA
QCAtODksMjIgKzg5LDIyIEBAIEFMV0FZU19JTkxJTkUgUmVmUHRyPEFycmF5QnVmZmVyPiBjcmVh
dGVTb3VyY2VCdWZmZXJGcm9tVmFsdWUoVk0mIHZtLCBFeGVjU3RhdGUqCiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKLUFMV0FZU19JTkxJTkUgYm9vbCBpc1dlYkFzc2VtYmx5SG9zdEZ1bmN0aW9u
KFZNJiB2bSwgSlNPYmplY3QqIG9iamVjdCwgV2ViQXNzZW1ibHlGdW5jdGlvbiomIHdhc21GdW5j
dGlvbiwgV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24qJiB3YXNtV3JhcHBlckZ1bmN0aW9uKQor
QUxXQVlTX0lOTElORSBib29sIGlzV2ViQXNzZW1ibHlIb3N0RnVuY3Rpb24oVk0mIHZtLCBKU09i
amVjdCogb2JqZWN0LCDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2U
tkZ1bmN0aW9uKiYgd2FzbUZ1bmN0aW9uLCDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2U
qvCdlJ/wnZSp8J2UtldyYXBwZXJGdW5jdGlvbiomIHdhc21XcmFwcGVyRnVuY3Rpb24pCiB7Ci0g
ICAgaWYgKG9iamVjdC0+aW5oZXJpdHModm0sIFdlYkFzc2VtYmx5RnVuY3Rpb246OmluZm8oKSkp
IHsKLSAgICAgICAgd2FzbUZ1bmN0aW9uID0ganNDYXN0PFdlYkFzc2VtYmx5RnVuY3Rpb24qPihv
YmplY3QpOworICAgIGlmIChvYmplY3QtPmluaGVyaXRzKHZtLCDwnZSa8J2UovCdlJ/wnZSE8J2U
sPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtkZ1bmN0aW9uOjppbmZvKCkpKSB7CisgICAgICAgIHdh
c21GdW5jdGlvbiA9IGpzQ2FzdDzwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/w
nZSp8J2UtkZ1bmN0aW9uKj4ob2JqZWN0KTsKICAgICAgICAgd2FzbVdyYXBwZXJGdW5jdGlvbiA9
IG51bGxwdHI7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICBpZiAob2JqZWN0LT5p
bmhlcml0cyh2bSwgV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb246OmluZm8oKSkpIHsKLSAgICAg
ICAgd2FzbVdyYXBwZXJGdW5jdGlvbiA9IGpzQ2FzdDxXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlv
bio+KG9iamVjdCk7CisgICAgaWYgKG9iamVjdC0+aW5oZXJpdHModm0sIPCdlJrwnZSi8J2Un/Cd
lITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2V3JhcHBlckZ1bmN0aW9uOjppbmZvKCkpKSB7
CisgICAgICAgIHdhc21XcmFwcGVyRnVuY3Rpb24gPSBqc0Nhc3Q88J2UmvCdlKLwnZSf8J2UhPCd
lLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZXcmFwcGVyRnVuY3Rpb24qPihvYmplY3QpOwogICAg
ICAgICB3YXNtRnVuY3Rpb24gPSBudWxscHRyOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1BTFdBWVNfSU5MSU5FIGJvb2wgaXNXZWJBc3NlbWJs
eUhvc3RGdW5jdGlvbihWTSYgdm0sIEpTVmFsdWUgdmFsdWUsIFdlYkFzc2VtYmx5RnVuY3Rpb24q
JiB3YXNtRnVuY3Rpb24sIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uKiYgd2FzbVdyYXBwZXJG
dW5jdGlvbikKK0FMV0FZU19JTkxJTkUgYm9vbCBpc1dlYkFzc2VtYmx5SG9zdEZ1bmN0aW9uKFZN
JiB2bSwgSlNWYWx1ZSB2YWx1ZSwg8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf
8J2UqfCdlLZGdW5jdGlvbiomIHdhc21GdW5jdGlvbiwg8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw
8J2UovCdlKrwnZSf8J2UqfCdlLZXcmFwcGVyRnVuY3Rpb24qJiB3YXNtV3JhcHBlckZ1bmN0aW9u
KQogewogICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtMTE0LDggKzExNCw4IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBpc1dlYkFzc2VtYmx5SG9zdEZ1
bmN0aW9uKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSwgV2ViQXNzZW1ibHlGCiAKIEFMV0FZU19JTkxJ
TkUgYm9vbCBpc1dlYkFzc2VtYmx5SG9zdEZ1bmN0aW9uKFZNJiB2bSwgSlNPYmplY3QqIG9iamVj
dCkKIHsKLSAgICBXZWJBc3NlbWJseUZ1bmN0aW9uKiB1bnVzZWQ7Ci0gICAgV2ViQXNzZW1ibHlX
cmFwcGVyRnVuY3Rpb24qIHVudXNlZDI7CisgICAg8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2U
ovCdlKrwnZSf8J2UqfCdlLZGdW5jdGlvbiogdW51c2VkOworICAgIPCdlJrwnZSi8J2Un/CdlITw
nZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2V3JhcHBlckZ1bmN0aW9uKiB1bnVzZWQyOwogICAg
IHJldHVybiBpc1dlYkFzc2VtYmx5SG9zdEZ1bmN0aW9uKHZtLCBvYmplY3QsIHVudXNlZCwgdW51
c2VkMik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pT
V2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9K
U1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwCmluZGV4IGYxMmQxY2YuLjY5MmJiMzBkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2Uu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0
YW5jZS5jcHAKQEAgLTQyLDE0ICs0MiwxNCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotY29uc3Qg
Q2xhc3NJbmZvIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6c19pbmZvID0geyAiV2ViQXNzZW1ibHku
SW5zdGFuY2UiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTV2ViQXNz
ZW1ibHlJbnN0YW5jZSkgfTsKK2NvbnN0IENsYXNzSW5mbyBKU/CdlJrwnZSi8J2Un/CdlITwnZSw
8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2SW5zdGFuY2U6OnNfaW5mbyA9IHsgIldlYkFzc2VtYmx5
Lkluc3RhbmNlIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU/CdlJrw
nZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2SW5zdGFuY2UpIH07CiAKLVN0
cnVjdHVyZSogSlNXZWJBc3NlbWJseUluc3RhbmNlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK1N0cnVjdHVy
ZSogSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utkluc3RhbmNl
OjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHByb3RvdHlwZSkKIHsKICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFn
cyksIGluZm8oKSk7CiB9CiAKLUpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6SlNXZWJBc3NlbWJseUlu
c3RhbmNlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIG51bUltcG9ydEZ1
bmN0aW9ucykKK0pT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZJ
bnN0YW5jZTo6SlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utklu
c3RhbmNlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIG51bUltcG9ydEZ1
bmN0aW9ucykKICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKICAgICAsIG1fdm0oJnZtKQogICAg
ICwgbV9udW1JbXBvcnRGdW5jdGlvbnMobnVtSW1wb3J0RnVuY3Rpb25zKQpAQCAtNTcsNyArNTcs
NyBAQCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OkpTV2ViQXNzZW1ibHlJbnN0YW5jZShWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZwogICAgIG1lbXNldChpbXBvcnRGdW5jdGlvbnMo
KSwgMCwgbV9udW1JbXBvcnRGdW5jdGlvbnMgKiBzaXplb2YoV3JpdGVCYXJyaWVyPEpTT2JqZWN0
PikpOwogfQogCi12b2lkIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCBKU1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1bGUsIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0
KiBtb2R1bGVOYW1lc3BhY2VPYmplY3QpCit2b2lkIEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw
8J2UovCdlKrwnZSf8J2UqfCdlLZJbnN0YW5jZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU/Cd
lJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2TW9kdWxlKiBtb2R1bGUs
IEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiBtb2R1bGVOYW1lc3BhY2VPYmplY3QpCiB7CiAgICAg
QmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygp
KSk7CkBAIC03MiwxNCArNzIsMTQgQEAgdm9pZCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSwgSlNXZWJBc3NlbWJseU1vZHVsZSogbW9kdWxlLAogICAgIHB1dERp
cmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJleHBvcnRzIiksIG1vZHVsZU5h
bWVzcGFjZU9iamVjdCwgTm9uZSk7CiB9CiAKLXZvaWQgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpk
ZXN0cm95KEpTQ2VsbCogY2VsbCkKK3ZvaWQgSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi
8J2UqvCdlJ/wnZSp8J2Utkluc3RhbmNlOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKIHsKLSAgICBz
dGF0aWNfY2FzdDxKU1dlYkFzc2VtYmx5SW5zdGFuY2UqPihjZWxsKS0+SlNXZWJBc3NlbWJseUlu
c3RhbmNlOjp+SlNXZWJBc3NlbWJseUluc3RhbmNlKCk7CisgICAgc3RhdGljX2Nhc3Q8SlPwnZSa
8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utkluc3RhbmNlKj4oY2VsbCkt
PkpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZJbnN0YW5jZTo6
fkpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZJbnN0YW5jZSgp
OwogfQogCi12b2lkIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwq
IGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQordm9pZCBKU/CdlJrwnZSi8J2Un/CdlITwnZSw
8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2SW5zdGFuY2U6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBj
ZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTV2ViQXNzZW1ibHlJbnN0YW5jZSo+KGNlbGwpOworICAgIGF1dG8qIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utklu
c3RhbmNlKj4oY2VsbCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0
LCBpbmZvKCkpOwogCiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9y
KTsKQEAgLTk0LDI2ICs5NCwyNiBAQCB2b2lkIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6dmlzaXRD
aGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgICAgICB2aXNp
dG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5pbXBvcnRGdW5jdGlvbnMoKVtpXSk7CiB9CiAKLXZvaWQg
SlNXZWJBc3NlbWJseUluc3RhbmNlOjphZGRVbml0aWFsaXplZENvZGVCbG9jayhWTSYgdm0sIFJl
ZjxXYXNtOjpQbGFuPiBwbGFuKQordm9pZCBKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLw
nZSq8J2Un/CdlKnwnZS2SW5zdGFuY2U6OmFkZFVuaXRpYWxpemVkQ29kZUJsb2NrKFZNJiB2bSwg
UmVmPFdhc206OlBsYW4+IHBsYW4pCiB7Ci0gICAgYXV0byogY29kZUJsb2NrID0gSlNXZWJBc3Nl
bWJseUNvZGVCbG9jazo6Y3JlYXRlKAorICAgIGF1dG8qIGNvZGVCbG9jayA9IEpT8J2UmvCdlKLw
nZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZDb2RlQmxvY2s6OmNyZWF0ZSgKICAg
ICAgICAgdm0sIG1vZHVsZSgpLCBtZW1vcnlNb2RlKCksIFdURk1vdmUocGxhbiksIG1vZHVsZSgp
LT5tb2R1bGVJbmZvcm1hdGlvbigpLmludGVybmFsRnVuY3Rpb25Db3VudCgpLCBtb2R1bGUoKS0+
bW9kdWxlSW5mb3JtYXRpb24oKS5pbXBvcnRGdW5jdGlvbkNvdW50KCkpOwogICAgIG1fY29kZUJs
b2NrLnNldCh2bSwgdGhpcywgY29kZUJsb2NrKTsKICAgICBBU1NFUlQoIWNvZGVCbG9jay0+aW5p
dGlhbGl6ZWQoKSk7CiB9CiAKLXZvaWQgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpmaW5hbGl6ZUNy
ZWF0aW9uKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjKQordm9pZCBKU/CdlJrwnZSi8J2Un/CdlITw
nZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2SW5zdGFuY2U6OmZpbmFsaXplQ3JlYXRpb24oVk0m
IHZtLCBFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgIGNvZGVCbG9jaygpLT5pbml0aWFsaXplKCk7CiAKICAgICBpZiAoIWNv
ZGVCbG9jaygpLT5ydW5uYWJsZSgpKSB7Ci0gICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNj
b3BlLCBKU1dlYkFzc2VtYmx5TGlua0Vycm9yOjpjcmVhdGUoZXhlYywgdm0sIGdsb2JhbE9iamVj
dCgpLT5XZWJBc3NlbWJseUxpbmtFcnJvclN0cnVjdHVyZSgpLCBjb2RlQmxvY2soKS0+ZXJyb3JN
ZXNzYWdlKCkpKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIEpT8J2UmvCd
lKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZMaW5rRXJyb3I6OmNyZWF0ZShl
eGVjLCB2bSwgZ2xvYmFsT2JqZWN0KCktPvCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq
8J2Un/CdlKnwnZS2TGlua0Vycm9yU3RydWN0dXJlKCksIGNvZGVCbG9jaygpLT5lcnJvck1lc3Nh
Z2UoKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUKGNvZGVC
bG9jaygpLT5pc1NhZmVUb1J1bihtZW1vcnkoKSkpOwogCi0gICAgYXV0byogbW9kdWxlUmVjb3Jk
ID0ganNDYXN0PFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkKj4obV9tb2R1bGVOYW1lc3BhY2VPYmpl
Y3QtPm1vZHVsZVJlY29yZCgpKTsKKyAgICBhdXRvKiBtb2R1bGVSZWNvcmQgPSBqc0Nhc3Q88J2U
mvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZNb2R1bGVSZWNvcmQqPiht
X21vZHVsZU5hbWVzcGFjZU9iamVjdC0+bW9kdWxlUmVjb3JkKCkpOwogICAgIG1vZHVsZVJlY29y
ZC0+bGluayhleGVjLCBtb2R1bGUoKSwgdGhpcyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgdm9pZCgpKTsKIApAQCAtMTIyLDcgKzEyMiw3IEBAIHZvaWQgSlNXZWJBc3NlbWJseUlu
c3RhbmNlOjpmaW5hbGl6ZUNyZWF0aW9uKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjKQogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiB9CiAKLUpTV2ViQXNzZW1ibHlJbnN0
YW5jZSogSlNXZWJBc3NlbWJseUluc3RhbmNlOjpjcmVhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4
ZWMsIEpTV2ViQXNzZW1ibHlNb2R1bGUqIGpzTW9kdWxlLCBKU09iamVjdCogaW1wb3J0T2JqZWN0
LCBTdHJ1Y3R1cmUqIGluc3RhbmNlU3RydWN0dXJlKQorSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCd
lLDwnZSi8J2UqvCdlJ/wnZSp8J2Utkluc3RhbmNlKiBKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2U
sPCdlKLwnZSq8J2Un/CdlKnwnZS2SW5zdGFuY2U6OmNyZWF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSog
ZXhlYywgSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utk1vZHVs
ZSoganNNb2R1bGUsIEpTT2JqZWN0KiBpbXBvcnRPYmplY3QsIFN0cnVjdHVyZSogaW5zdGFuY2VT
dHJ1Y3R1cmUpCiB7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
OwpAQCAtMTM4LDEzICsxMzgsMTMgQEAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2U6OmNyZWF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlMKICAgICBpZiAo
bW9kdWxlSW5mb3JtYXRpb24uaW1wb3J0cy5zaXplKCkgJiYgIWltcG9ydE9iamVjdCkKICAgICAg
ICAgcmV0dXJuIGV4Y2VwdGlvbihjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJj
YW4ndCBtYWtlIFdlYkFzc2VtYmx5Lkluc3RhbmNlIGJlY2F1c2UgdGhlcmUgaXMgbm8gaW1wb3J0
cyBPYmplY3QgYW5kIHRoZSBXZWJBc3NlbWJseS5Nb2R1bGUgcmVxdWlyZXMgaW1wb3J0cyIpKSk7
CiAKLSAgICBJZGVudGlmaWVyIG1vZHVsZUtleSA9IElkZW50aWZpZXI6OmZyb21VaWQoUHJpdmF0
ZU5hbWUoUHJpdmF0ZU5hbWU6OkRlc2NyaXB0aW9uLCAiV2ViQXNzZW1ibHlJbnN0YW5jZSIpKTsK
LSAgICBXZWJBc3NlbWJseU1vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkID0gV2ViQXNzZW1ibHlN
b2R1bGVSZWNvcmQ6OmNyZWF0ZShleGVjLCB2bSwgZ2xvYmFsT2JqZWN0LT53ZWJBc3NlbWJseU1v
ZHVsZVJlY29yZFN0cnVjdHVyZSgpLCBtb2R1bGVLZXksIG1vZHVsZUluZm9ybWF0aW9uKTsKKyAg
ICBJZGVudGlmaWVyIG1vZHVsZUtleSA9IElkZW50aWZpZXI6OmZyb21VaWQoUHJpdmF0ZU5hbWUo
UHJpdmF0ZU5hbWU6OkRlc2NyaXB0aW9uLCAi8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCd
lKrwnZSf8J2UqfCdlLZJbnN0YW5jZSIpKTsKKyAgICDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDw
nZSi8J2UqvCdlJ/wnZSp8J2Utk1vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkID0g8J2UmvCdlKLw
nZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZNb2R1bGVSZWNvcmQ6OmNyZWF0ZShl
eGVjLCB2bSwgZ2xvYmFsT2JqZWN0LT53ZWJBc3NlbWJseU1vZHVsZVJlY29yZFN0cnVjdHVyZSgp
LCBtb2R1bGVLZXksIG1vZHVsZUluZm9ybWF0aW9uKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIG51bGxwdHIpOwogCiAgICAgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIG1v
ZHVsZU5hbWVzcGFjZSA9IG1vZHVsZVJlY29yZC0+Z2V0TW9kdWxlTmFtZXNwYWNlKGV4ZWMpOwog
ICAgIC8vIEZJWE1FOiBUaGVzZSBvYmplY3RzIGNvdWxkIGJlIHByZXR0eSBiaWcgd2Ugc2hvdWxk
IHRyeSB0byB0aHJvdyBPT00gaGVyZS4KLSAgICBhdXRvKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPEpTV2ViQXNzZW1ibHlJbnN0YW5jZT4odm0uaGVhcCwgYWxsb2NhdGlv
blNpemUobW9kdWxlSW5mb3JtYXRpb24uaW1wb3J0RnVuY3Rpb25Db3VudCgpKSkpIEpTV2ViQXNz
ZW1ibHlJbnN0YW5jZSh2bSwgaW5zdGFuY2VTdHJ1Y3R1cmUsIG1vZHVsZUluZm9ybWF0aW9uLmlt
cG9ydEZ1bmN0aW9uQ291bnQoKSk7CisgICAgYXV0byogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnw
nZS2SW5zdGFuY2U+KHZtLmhlYXAsIGFsbG9jYXRpb25TaXplKG1vZHVsZUluZm9ybWF0aW9uLmlt
cG9ydEZ1bmN0aW9uQ291bnQoKSkpKSBKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq
8J2Un/CdlKnwnZS2SW5zdGFuY2Uodm0sIGluc3RhbmNlU3RydWN0dXJlLCBtb2R1bGVJbmZvcm1h
dGlvbi5pbXBvcnRGdW5jdGlvbkNvdW50KCkpOwogICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlv
bih2bSwganNNb2R1bGUsIG1vZHVsZU5hbWVzcGFjZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBudWxscHRyKTsKIApAQCAtMTc0LDEyICsxNzQsMTIgQEAgSlNXZWJBc3Nl
bWJseUluc3RhbmNlKiBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0ZShWTSYgdm0sIEV4ZWNT
dGF0ZSogZXhlYywgSlMKICAgICAgICAgICAgIC8vIDQuIElmIGkgaXMgYSBmdW5jdGlvbiBpbXBv
cnQ6CiAgICAgICAgICAgICAvLyBpLiBJZiBJc0NhbGxhYmxlKHYpIGlzIGZhbHNlLCB0aHJvdyBh
IFdlYkFzc2VtYmx5LkxpbmtFcnJvci4KICAgICAgICAgICAgIGlmICghdmFsdWUuaXNGdW5jdGlv
bigpKQotICAgICAgICAgICAgICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlSlNXZWJBc3NlbWJs
eUxpbmtFcnJvcihleGVjLCB2bSwgQVNDSUlMaXRlcmFsKCJpbXBvcnQgZnVuY3Rpb24gbXVzdCBi
ZSBjYWxsYWJsZSIpKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbihjcmVhdGVK
U/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2TGlua0Vycm9yKGV4
ZWMsIHZtLCBBU0NJSUxpdGVyYWwoImltcG9ydCBmdW5jdGlvbiBtdXN0IGJlIGNhbGxhYmxlIikp
KTsKIAogICAgICAgICAgICAgSlNPYmplY3QqIGZ1bmN0aW9uID0ganNDYXN0PEpTT2JqZWN0Kj4o
dmFsdWUpOwogICAgICAgICAgICAgLy8gaWkuIElmIHYgaXMgYW4gRXhwb3J0ZWQgRnVuY3Rpb24g
RXhvdGljIE9iamVjdDoKLSAgICAgICAgICAgIFdlYkFzc2VtYmx5RnVuY3Rpb24qIHdhc21GdW5j
dGlvbjsKLSAgICAgICAgICAgIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uKiB3YXNtV3JhcHBl
ckZ1bmN0aW9uOworICAgICAgICAgICAg8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrw
nZSf8J2UqfCdlLZGdW5jdGlvbiogd2FzbUZ1bmN0aW9uOworICAgICAgICAgICAg8J2UmvCdlKLw
nZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZXcmFwcGVyRnVuY3Rpb24qIHdhc21X
cmFwcGVyRnVuY3Rpb247CiAgICAgICAgICAgICBpZiAoaXNXZWJBc3NlbWJseUhvc3RGdW5jdGlv
bih2bSwgZnVuY3Rpb24sIHdhc21GdW5jdGlvbiwgd2FzbVdyYXBwZXJGdW5jdGlvbikpIHsKICAg
ICAgICAgICAgICAgICAvLyBhLiBJZiB0aGUgc2lnbmF0dXJlIG9mIHYgZG9lcyBub3QgbWF0Y2gg
dGhlIHNpZ25hdHVyZSBvZiBpLCB0aHJvdyBhIFdlYkFzc2VtYmx5LkxpbmtFcnJvci4KICAgICAg
ICAgICAgICAgICBXYXNtOjpTaWduYXR1cmVJbmRleCBpbXBvcnRlZFNpZ25hdHVyZUluZGV4OwpA
QCAtMTkyLDcgKzE5Miw3IEBAIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogSlNXZWJBc3NlbWJseUlu
c3RhbmNlOjpjcmVhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpTCiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIFdhc206OlNpZ25hdHVyZUluZGV4IGV4cGVjdGVkU2lnbmF0
dXJlSW5kZXggPSBtb2R1bGVJbmZvcm1hdGlvbi5pbXBvcnRGdW5jdGlvblNpZ25hdHVyZUluZGlj
ZXNbaW1wb3J0LmtpbmRJbmRleF07CiAgICAgICAgICAgICAgICAgaWYgKGltcG9ydGVkU2lnbmF0
dXJlSW5kZXggIT0gZXhwZWN0ZWRTaWduYXR1cmVJbmRleCkKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGV4Y2VwdGlvbihjcmVhdGVKU1dlYkFzc2VtYmx5TGlua0Vycm9yKGV4ZWMsIHZtLCBB
U0NJSUxpdGVyYWwoImltcG9ydGVkIGZ1bmN0aW9uJ3Mgc2lnbmF0dXJlIGRvZXNuJ3QgbWF0Y2gg
dGhlIHByb3ZpZGVkIFdlYkFzc2VtYmx5IGZ1bmN0aW9uJ3Mgc2lnbmF0dXJlIikpKTsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbihjcmVhdGVKU/CdlJrwnZSi8J2Un/CdlITw
nZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2TGlua0Vycm9yKGV4ZWMsIHZtLCBBU0NJSUxpdGVy
YWwoImltcG9ydGVkIGZ1bmN0aW9uJ3Mgc2lnbmF0dXJlIGRvZXNuJ3QgbWF0Y2ggdGhlIHByb3Zp
ZGVkIFdlYkFzc2VtYmx5IGZ1bmN0aW9uJ3Mgc2lnbmF0dXJlIikpKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIC8vIGlpaS4gT3RoZXJ3aXNlOgogICAgICAgICAgICAgLy8gYS4gTGV0IGNs
b3N1cmUgYmUgYSBuZXcgaG9zdCBmdW5jdGlvbiBvZiB0aGUgZ2l2ZW4gc2lnbmF0dXJlIHdoaWNo
IGNhbGxzIHYgYnkgY29lcmNpbmcgV2ViQXNzZW1ibHkgYXJndW1lbnRzIHRvIEphdmFTY3JpcHQg
YXJndW1lbnRzIHZpYSBUb0pTVmFsdWUgYW5kIHJldHVybnMgdGhlIHJlc3VsdCwgaWYgYW55LCBi
eSBjb2VyY2luZyB2aWEgVG9XZWJBc3NlbWJseVZhbHVlLgpAQCAtMjA5LDIyICsyMDksMjIgQEAg
SlNXZWJBc3NlbWJseUluc3RhbmNlKiBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0ZShWTSYg
dm0sIEV4ZWNTdGF0ZSogZXhlYywgSlMKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFoYXNU
YWJsZUltcG9ydCk7IC8vIFRoaXMgc2hvdWxkIGJlIGd1YXJhbnRlZWQgYnkgYSB2YWxpZGF0aW9u
IGZhaWx1cmUuCiAgICAgICAgICAgICAvLyA3LiBPdGhlcndpc2UgKGkgaXMgYSB0YWJsZSBpbXBv
cnQpOgogICAgICAgICAgICAgaGFzVGFibGVJbXBvcnQgPSB0cnVlOwotICAgICAgICAgICAgSlNX
ZWJBc3NlbWJseVRhYmxlKiB0YWJsZSA9IGpzRHluYW1pY0Nhc3Q8SlNXZWJBc3NlbWJseVRhYmxl
Kj4odm0sIHZhbHVlKTsKKyAgICAgICAgICAgIEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2U
ovCdlKrwnZSf8J2UqfCdlLZUYWJsZSogdGFibGUgPSBqc0R5bmFtaWNDYXN0PEpT8J2UmvCdlKLw
nZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZUYWJsZSo+KHZtLCB2YWx1ZSk7CiAg
ICAgICAgICAgICAvLyBpLiBJZiB2IGlzIG5vdCBhIFdlYkFzc2VtYmx5LlRhYmxlIG9iamVjdCwg
dGhyb3cgYSBXZWJBc3NlbWJseS5MaW5rRXJyb3IuCiAgICAgICAgICAgICBpZiAoIXRhYmxlKQot
ICAgICAgICAgICAgICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlSlNXZWJBc3NlbWJseUxpbmtF
cnJvcihleGVjLCB2bSwgQVNDSUlMaXRlcmFsKCJUYWJsZSBpbXBvcnQgaXMgbm90IGFuIGluc3Rh
bmNlIG9mIFdlYkFzc2VtYmx5LlRhYmxlIikpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZXhj
ZXB0aW9uKGNyZWF0ZUpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCd
lLZMaW5rRXJyb3IoZXhlYywgdm0sIEFTQ0lJTGl0ZXJhbCgiVGFibGUgaW1wb3J0IGlzIG5vdCBh
biBpbnN0YW5jZSBvZiBXZWJBc3NlbWJseS5UYWJsZSIpKSk7CiAKICAgICAgICAgICAgIHVpbnQz
Ml90IGV4cGVjdGVkSW5pdGlhbCA9IG1vZHVsZUluZm9ybWF0aW9uLnRhYmxlSW5mb3JtYXRpb24u
aW5pdGlhbCgpOwogICAgICAgICAgICAgdWludDMyX3QgYWN0dWFsSW5pdGlhbCA9IHRhYmxlLT5z
aXplKCk7CiAgICAgICAgICAgICBpZiAoYWN0dWFsSW5pdGlhbCA8IGV4cGVjdGVkSW5pdGlhbCkK
LSAgICAgICAgICAgICAgICByZXR1cm4gZXhjZXB0aW9uKGNyZWF0ZUpTV2ViQXNzZW1ibHlMaW5r
RXJyb3IoZXhlYywgdm0sIEFTQ0lJTGl0ZXJhbCgiVGFibGUgaW1wb3J0IHByb3ZpZGVkIGFuICdp
bml0aWFsJyB0aGF0IGlzIHRvbyBzbWFsbCIpKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGV4
Y2VwdGlvbihjcmVhdGVKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnw
nZS2TGlua0Vycm9yKGV4ZWMsIHZtLCBBU0NJSUxpdGVyYWwoIlRhYmxlIGltcG9ydCBwcm92aWRl
ZCBhbiAnaW5pdGlhbCcgdGhhdCBpcyB0b28gc21hbGwiKSkpOwogCiAgICAgICAgICAgICBpZiAo
c3RkOjpvcHRpb25hbDx1aW50MzJfdD4gZXhwZWN0ZWRNYXhpbXVtID0gbW9kdWxlSW5mb3JtYXRp
b24udGFibGVJbmZvcm1hdGlvbi5tYXhpbXVtKCkpIHsKICAgICAgICAgICAgICAgICBzdGQ6Om9w
dGlvbmFsPHVpbnQzMl90PiBhY3R1YWxNYXhpbXVtID0gdGFibGUtPm1heGltdW0oKTsKICAgICAg
ICAgICAgICAgICBpZiAoIWFjdHVhbE1heGltdW0pCi0gICAgICAgICAgICAgICAgICAgIHJldHVy
biBleGNlcHRpb24oY3JlYXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihleGVjLCB2bSwgQVNDSUlM
aXRlcmFsKCJUYWJsZSBpbXBvcnQgZG9lcyBub3QgaGF2ZSBhICdtYXhpbXVtJyBidXQgdGhlIG1v
ZHVsZSByZXF1aXJlcyB0aGF0IGl0IGRvZXMiKSkpOworICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZXhjZXB0aW9uKGNyZWF0ZUpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf
8J2UqfCdlLZMaW5rRXJyb3IoZXhlYywgdm0sIEFTQ0lJTGl0ZXJhbCgiVGFibGUgaW1wb3J0IGRv
ZXMgbm90IGhhdmUgYSAnbWF4aW11bScgYnV0IHRoZSBtb2R1bGUgcmVxdWlyZXMgdGhhdCBpdCBk
b2VzIikpKTsKICAgICAgICAgICAgICAgICBpZiAoKmFjdHVhbE1heGltdW0gPiAqZXhwZWN0ZWRN
YXhpbXVtKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXhjZXB0aW9uKGNyZWF0ZUpTV2Vi
QXNzZW1ibHlMaW5rRXJyb3IoZXhlYywgdm0sIEFTQ0lJTGl0ZXJhbCgiSW1wb3J0ZWQgVGFibGUn
cyAnbWF4aW11bScgaXMgbGFyZ2VyIHRoYW4gdGhlIG1vZHVsZSdzIGV4cGVjdGVkICdtYXhpbXVt
JyIpKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlSlPwnZSa
8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtkxpbmtFcnJvcihleGVjLCB2
bSwgQVNDSUlMaXRlcmFsKCJJbXBvcnRlZCBUYWJsZSdzICdtYXhpbXVtJyBpcyBsYXJnZXIgdGhh
biB0aGUgbW9kdWxlJ3MgZXhwZWN0ZWQgJ21heGltdW0nIikpKTsKICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgLy8gaWkuIEFwcGVuZCB2IHRvIHRhYmxlcy4KQEAgLTIzOCwyMyArMjM4LDIz
IEBAIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogSlNXZWJBc3NlbWJseUluc3RhbmNlOjpjcmVhdGUo
Vk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpTCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCgh
aGFzTWVtb3J5SW1wb3J0KTsgLy8gVGhpcyBzaG91bGQgYmUgZ3VhcmFudGVlZCBieSBhIHZhbGlk
YXRpb24gZmFpbHVyZS4KICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1vZHVsZUluZm9ybWF0
aW9uLm1lbW9yeSk7CiAgICAgICAgICAgICBoYXNNZW1vcnlJbXBvcnQgPSB0cnVlOwotICAgICAg
ICAgICAgSlNXZWJBc3NlbWJseU1lbW9yeSogbWVtb3J5ID0ganNEeW5hbWljQ2FzdDxKU1dlYkFz
c2VtYmx5TWVtb3J5Kj4odm0sIHZhbHVlKTsKKyAgICAgICAgICAgIEpT8J2UmvCdlKLwnZSf8J2U
hPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZNZW1vcnkqIG1lbW9yeSA9IGpzRHluYW1pY0Nh
c3Q8SlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utk1lbW9yeSo+
KHZtLCB2YWx1ZSk7CiAgICAgICAgICAgICAvLyBpLiBJZiB2IGlzIG5vdCBhIFdlYkFzc2VtYmx5
Lk1lbW9yeSBvYmplY3QsIHRocm93IGEgV2ViQXNzZW1ibHkuTGlua0Vycm9yLgogICAgICAgICAg
ICAgaWYgKCFtZW1vcnkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbihjcmVhdGVK
U1dlYkFzc2VtYmx5TGlua0Vycm9yKGV4ZWMsIHZtLCBBU0NJSUxpdGVyYWwoIk1lbW9yeSBpbXBv
cnQgaXMgbm90IGFuIGluc3RhbmNlIG9mIFdlYkFzc2VtYmx5Lk1lbW9yeSIpKSk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbihjcmVhdGVKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2U
sPCdlKLwnZSq8J2Un/CdlKnwnZS2TGlua0Vycm9yKGV4ZWMsIHZtLCBBU0NJSUxpdGVyYWwoIk1l
bW9yeSBpbXBvcnQgaXMgbm90IGFuIGluc3RhbmNlIG9mIFdlYkFzc2VtYmx5Lk1lbW9yeSIpKSk7
CiAKICAgICAgICAgICAgIFdhc206OlBhZ2VDb3VudCBkZWNsYXJlZEluaXRpYWwgPSBtb2R1bGVJ
bmZvcm1hdGlvbi5tZW1vcnkuaW5pdGlhbCgpOwogICAgICAgICAgICAgV2FzbTo6UGFnZUNvdW50
IGltcG9ydGVkSW5pdGlhbCA9IG1lbW9yeS0+bWVtb3J5KCkuaW5pdGlhbCgpOwogICAgICAgICAg
ICAgaWYgKGltcG9ydGVkSW5pdGlhbCA8IGRlY2xhcmVkSW5pdGlhbCkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gZXhjZXB0aW9uKGNyZWF0ZUpTV2ViQXNzZW1ibHlMaW5rRXJyb3IoZXhlYywgdm0s
IEFTQ0lJTGl0ZXJhbCgiTWVtb3J5IGltcG9ydCBwcm92aWRlZCBhbiAnaW5pdGlhbCcgdGhhdCBp
cyBzbWFsbGVyIHRoYW4gdGhlIG1vZHVsZSdzIGRlY2xhcmVkICdpbml0aWFsJyBpbXBvcnQgbWVt
b3J5IHNpemUiKSkpOworICAgICAgICAgICAgICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlSlPw
nZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtkxpbmtFcnJvcihleGVj
LCB2bSwgQVNDSUlMaXRlcmFsKCJNZW1vcnkgaW1wb3J0IHByb3ZpZGVkIGFuICdpbml0aWFsJyB0
aGF0IGlzIHNtYWxsZXIgdGhhbiB0aGUgbW9kdWxlJ3MgZGVjbGFyZWQgJ2luaXRpYWwnIGltcG9y
dCBtZW1vcnkgc2l6ZSIpKSk7CiAKICAgICAgICAgICAgIGlmIChXYXNtOjpQYWdlQ291bnQgZGVj
bGFyZWRNYXhpbXVtID0gbW9kdWxlSW5mb3JtYXRpb24ubWVtb3J5Lm1heGltdW0oKSkgewogICAg
ICAgICAgICAgICAgIFdhc206OlBhZ2VDb3VudCBpbXBvcnRlZE1heGltdW0gPSBtZW1vcnktPm1l
bW9yeSgpLm1heGltdW0oKTsKICAgICAgICAgICAgICAgICBpZiAoIWltcG9ydGVkTWF4aW11bSkK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbihjcmVhdGVKU1dlYkFzc2VtYmx5
TGlua0Vycm9yKGV4ZWMsIHZtLCBBU0NJSUxpdGVyYWwoIk1lbW9yeSBpbXBvcnQgZGlkIG5vdCBo
YXZlIGEgJ21heGltdW0nIGJ1dCB0aGUgbW9kdWxlIHJlcXVpcmVzIHRoYXQgaXQgZG9lcyIpKSk7
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlSlPwnZSa8J2UovCd
lJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtkxpbmtFcnJvcihleGVjLCB2bSwgQVND
SUlMaXRlcmFsKCJNZW1vcnkgaW1wb3J0IGRpZCBub3QgaGF2ZSBhICdtYXhpbXVtJyBidXQgdGhl
IG1vZHVsZSByZXF1aXJlcyB0aGF0IGl0IGRvZXMiKSkpOwogCiAgICAgICAgICAgICAgICAgaWYg
KGltcG9ydGVkTWF4aW11bSA+IGRlY2xhcmVkTWF4aW11bSkKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGV4Y2VwdGlvbihjcmVhdGVKU1dlYkFzc2VtYmx5TGlua0Vycm9yKGV4ZWMsIHZtLCBB
U0NJSUxpdGVyYWwoIk1lbW9yeSBpbXBvcnQgcHJvdmlkZWQgYSAnbWF4aW11bScgdGhhdCBpcyBs
YXJnZXIgdGhhbiB0aGUgbW9kdWxlJ3MgZGVjbGFyZWQgJ21heGltdW0nIGltcG9ydCBtZW1vcnkg
c2l6ZSIpKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlSlPw
nZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtkxpbmtFcnJvcihleGVj
LCB2bSwgQVNDSUlMaXRlcmFsKCJNZW1vcnkgaW1wb3J0IHByb3ZpZGVkIGEgJ21heGltdW0nIHRo
YXQgaXMgbGFyZ2VyIHRoYW4gdGhlIG1vZHVsZSdzIGRlY2xhcmVkICdtYXhpbXVtJyBpbXBvcnQg
bWVtb3J5IHNpemUiKSkpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvLyBpaS4gQXBw
ZW5kIHYgdG8gbWVtb3JpZXMuCkBAIC0yNzAsOSArMjcwLDkgQEAgSlNXZWJBc3NlbWJseUluc3Rh
bmNlKiBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhl
YywgSlMKICAgICAgICAgICAgIEFTU0VSVChtb2R1bGVJbmZvcm1hdGlvbi5nbG9iYWxzW2ltcG9y
dC5raW5kSW5kZXhdLm11dGFiaWxpdHkgPT0gV2FzbTo6R2xvYmFsOjpJbW11dGFibGUpOwogICAg
ICAgICAgICAgLy8gaWkuIElmIHRoZSBnbG9iYWxfdHlwZSBvZiBpIGlzIGk2NCBvciBUeXBlKHYp
IGlzIG5vdCBOdW1iZXIsIHRocm93IGEgV2ViQXNzZW1ibHkuTGlua0Vycm9yLgogICAgICAgICAg
ICAgaWYgKG1vZHVsZUluZm9ybWF0aW9uLmdsb2JhbHNbaW1wb3J0LmtpbmRJbmRleF0udHlwZSA9
PSBXYXNtOjpJNjQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbihjcmVhdGVKU1dl
YkFzc2VtYmx5TGlua0Vycm9yKGV4ZWMsIHZtLCBBU0NJSUxpdGVyYWwoImltcG9ydGVkIGdsb2Jh
bCBjYW5ub3QgYmUgYW4gaTY0IikpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZXhjZXB0aW9u
KGNyZWF0ZUpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZMaW5r
RXJyb3IoZXhlYywgdm0sIEFTQ0lJTGl0ZXJhbCgiaW1wb3J0ZWQgZ2xvYmFsIGNhbm5vdCBiZSBh
biBpNjQiKSkpOwogICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc051bWJlcigpKQotICAgICAgICAg
ICAgICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihleGVj
LCB2bSwgQVNDSUlMaXRlcmFsKCJpbXBvcnRlZCBnbG9iYWwgbXVzdCBiZSBhIG51bWJlciIpKSk7
CisgICAgICAgICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbihjcmVhdGVKU/CdlJrwnZSi8J2Un/Cd
lITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2TGlua0Vycm9yKGV4ZWMsIHZtLCBBU0NJSUxp
dGVyYWwoImltcG9ydGVkIGdsb2JhbCBtdXN0IGJlIGEgbnVtYmVyIikpKTsKICAgICAgICAgICAg
IC8vIGlpaS4gQXBwZW5kIFRvV2ViQXNzZW1ibHlWYWx1ZSh2KSB0byBpbXBvcnRzLgogICAgICAg
ICAgICAgQVNTRVJUKG51bUltcG9ydEdsb2JhbHMgPT0gaW1wb3J0LmtpbmRJbmRleCk7CiAgICAg
ICAgICAgICBzd2l0Y2ggKG1vZHVsZUluZm9ybWF0aW9uLmdsb2JhbHNbaW1wb3J0LmtpbmRJbmRl
eF0udHlwZSkgewpAQCAtMzA4LDcgKzMwOCw3IEBAIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogSlNX
ZWJBc3NlbWJseUluc3RhbmNlOjpjcmVhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpTCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbihjcmVhdGVPdXRPZk1lbW9yeUVycm9yKGV4
ZWMpKTsKIAogICAgICAgICAgICAgaW5zdGFuY2UtPm1fbWVtb3J5LnNldCh2bSwgaW5zdGFuY2Us
Ci0gICAgICAgICAgICAgICAgSlNXZWJBc3NlbWJseU1lbW9yeTo6Y3JlYXRlKHZtLCBleGVjLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCktPldlYkFzc2VtYmx5TWVtb3J5U3RydWN0dXJlKCksIG1lbW9y
eS5yZWxlYXNlTm9uTnVsbCgpKSk7CisgICAgICAgICAgICAgICAgSlPwnZSa8J2UovCdlJ/wnZSE
8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utk1lbW9yeTo6Y3JlYXRlKHZtLCBleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCktPvCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/Cd
lKnwnZS2TWVtb3J5U3RydWN0dXJlKCksIG1lbW9yeS5yZWxlYXNlTm9uTnVsbCgpKSk7CiAgICAg
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIG51bGxwdHIpOwogICAgICAg
ICB9CiAgICAgfQpAQCAtMzIyLDkgKzMyMiw5IEBAIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogSlNX
ZWJBc3NlbWJseUluc3RhbmNlOjpjcmVhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpTCiAg
ICAgICAgIGlmICghIW1vZHVsZUluZm9ybWF0aW9uLnRhYmxlSW5mb3JtYXRpb24gJiYgIWhhc1Rh
YmxlSW1wb3J0KSB7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghbW9kdWxlSW5mb3JtYXRp
b24udGFibGVJbmZvcm1hdGlvbi5pc0ltcG9ydCgpKTsKICAgICAgICAgICAgIC8vIFdlIGNyZWF0
ZSBhIFRhYmxlIHdoZW4gaXQncyBhIFRhYmxlIGRlZmluaXRpb24uCi0gICAgICAgICAgICBKU1dl
YkFzc2VtYmx5VGFibGUqIHRhYmxlID0gSlNXZWJBc3NlbWJseVRhYmxlOjpjcmVhdGUoZXhlYywg
dm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+V2ViQXNzZW1ibHlUYWJsZVN0cnVjdHVy
ZSgpLAorICAgICAgICAgICAgSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/w
nZSp8J2UtlRhYmxlKiB0YWJsZSA9IEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrw
nZSf8J2UqfCdlLZUYWJsZTo6Y3JlYXRlKGV4ZWMsIHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCktPvCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2VGFibGVT
dHJ1Y3R1cmUoKSwKICAgICAgICAgICAgICAgICBtb2R1bGVJbmZvcm1hdGlvbi50YWJsZUluZm9y
bWF0aW9uLmluaXRpYWwoKSwgbW9kdWxlSW5mb3JtYXRpb24udGFibGVJbmZvcm1hdGlvbi5tYXhp
bXVtKCkpOwotICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIGFsd2F5cyBiZSBhYmxlIHRvIGFsbG9j
YXRlIGEgSlNXZWJBc3NlbWJseVRhYmxlIHdlJ3ZlIGRlZmluZWQuCisgICAgICAgICAgICAvLyBX
ZSBzaG91bGQgYWx3YXlzIGJlIGFibGUgdG8gYWxsb2NhdGUgYSBKU/CdlJrwnZSi8J2Un/CdlITw
nZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2VGFibGUgd2UndmUgZGVmaW5lZC4KICAgICAgICAg
ICAgIC8vIElmIGl0J3MgZGVmaW5lZCB0byBiZSB0b28gbGFyZ2UsIHdlIHNob3VsZCBoYXZlIHRo
cm93biBhIHZhbGlkYXRpb24gZXJyb3IuCiAgICAgICAgICAgICBBU1NFUlQoIXRocm93U2NvcGUu
ZXhjZXB0aW9uKCkpOwogICAgICAgICAgICAgQVNTRVJUKHRhYmxlKTsKQEAgLTMzNCw3ICszMzQs
NyBAQCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6Y3JlYXRl
KFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKUwogICAgIAogICAgIGlmICghaW5zdGFuY2UtPm1l
bW9yeSgpKSB7CiAgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBoYXZlIGEgZHVtbXkgbWVtb3J5LCBz
byB0aGF0IHdhc20gLT4gd2FzbSB0aHVua3MgYXZvaWQgY2hlY2tpbmcgZm9yIGEgbnVsbHB0ciBN
ZW1vcnkgd2hlbiB0cnlpbmcgdG8gc2V0IHBpbm5lZCByZWdpc3RlcnMuCi0gICAgICAgIGluc3Rh
bmNlLT5tX21lbW9yeS5zZXQodm0sIGluc3RhbmNlLCBKU1dlYkFzc2VtYmx5TWVtb3J5OjpjcmVh
dGUodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+V2ViQXNzZW1ibHlNZW1vcnlTdHJ1
Y3R1cmUoKSwgYWRvcHRSZWYoKihuZXcgV2FzbTo6TWVtb3J5KCkpKSkpOworICAgICAgICBpbnN0
YW5jZS0+bV9tZW1vcnkuc2V0KHZtLCBpbnN0YW5jZSwgSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCd
lLDwnZSi8J2UqvCdlJ/wnZSp8J2Utk1lbW9yeTo6Y3JlYXRlKHZtLCBleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCktPvCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2
TWVtb3J5U3RydWN0dXJlKCksIGFkb3B0UmVmKCoobmV3IFdhc206Ok1lbW9yeSgpKSkpKTsKICAg
ICB9CiAgICAgCiAgICAgLy8gR2xvYmFscwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuaAppbmRleCBkZTZkYmVhLi5jZWFmZGQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5
SW5zdGFuY2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2Vt
Ymx5SW5zdGFuY2UuaApAQCAtMzYsMzcgKzM2LDM3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogY2xh
c3MgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q7Ci1jbGFzcyBKU1dlYkFzc2VtYmx5TW9kdWxlOwot
Y2xhc3MgV2ViQXNzZW1ibHlUb0pTQ2FsbGVlOworY2xhc3MgSlPwnZSa8J2UovCdlJ/wnZSE8J2U
sPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utk1vZHVsZTsKK2NsYXNzIPCdlJrwnZSi8J2Un/CdlITw
nZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2VG9KU0NhbGxlZTsKIAogbmFtZXNwYWNlIFdhc20g
ewogY2xhc3MgUGxhbjsKIH0KIAogCi1jbGFzcyBKU1dlYkFzc2VtYmx5SW5zdGFuY2UgOiBwdWJs
aWMgSlNEZXN0cnVjdGlibGVPYmplY3QgeworY2xhc3MgSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCd
lLDwnZSi8J2UqvCdlJ/wnZSp8J2Utkluc3RhbmNlIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0IHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IEJhc2U7CiAK
LSAgICBzdGF0aWMgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBjcmVhdGUoVk0mLCBFeGVjU3RhdGUq
LCBKU1dlYkFzc2VtYmx5TW9kdWxlKiwgSlNPYmplY3QqIGltcG9ydE9iamVjdCwgU3RydWN0dXJl
Kik7CisgICAgc3RhdGljIEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2U
qfCdlLZJbnN0YW5jZSogY3JlYXRlKFZNJiwgRXhlY1N0YXRlKiwgSlPwnZSa8J2UovCdlJ/wnZSE
8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utk1vZHVsZSosIEpTT2JqZWN0KiBpbXBvcnRPYmpl
Y3QsIFN0cnVjdHVyZSopOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShW
TSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAKICAgICBERUNMQVJFX0VYUE9SVF9JTkZP
OwogCi0gICAgSlNXZWJBc3NlbWJseUNvZGVCbG9jayogY29kZUJsb2NrKCkgY29uc3QgeyByZXR1
cm4gbV9jb2RlQmxvY2suZ2V0KCk7IH0KKyAgICBKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCd
lKLwnZSq8J2Un/CdlKnwnZS2Q29kZUJsb2NrKiBjb2RlQmxvY2soKSBjb25zdCB7IHJldHVybiBt
X2NvZGVCbG9jay5nZXQoKTsgfQogICAgIGJvb2wgaW5pdGlhbGl6ZWQoKSBjb25zdCB7IHJldHVy
biBjb2RlQmxvY2soKSAmJiBjb2RlQmxvY2soKS0+aW5pdGlhbGl6ZWQoKTsgfQogICAgIHZvaWQg
YWRkVW5pdGlhbGl6ZWRDb2RlQmxvY2soVk0mLCBSZWY8V2FzbTo6UGxhbj4pOwogICAgIHZvaWQg
ZmluYWxpemVDcmVhdGlvbihWTSYsIEV4ZWNTdGF0ZSopOwogCi0gICAgSlNXZWJBc3NlbWJseU1v
ZHVsZSogbW9kdWxlKCkgY29uc3QgeyByZXR1cm4gbV9tb2R1bGUuZ2V0KCk7IH0KKyAgICBKU/Cd
lJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2TW9kdWxlKiBtb2R1bGUo
KSBjb25zdCB7IHJldHVybiBtX21vZHVsZS5nZXQoKTsgfQogCiAgICAgSlNPYmplY3QqIGltcG9y
dEZ1bmN0aW9uKHVuc2lnbmVkIGlkeCkgeyBSRUxFQVNFX0FTU0VSVChpZHggPCBtX251bUltcG9y
dEZ1bmN0aW9ucyk7IHJldHVybiBpbXBvcnRGdW5jdGlvbnMoKVtpZHhdLmdldCgpOyB9CiAKLSAg
ICBKU1dlYkFzc2VtYmx5TWVtb3J5KiBtZW1vcnkoKSB7IHJldHVybiBtX21lbW9yeS5nZXQoKTsg
fQotICAgIHZvaWQgc2V0TWVtb3J5KFZNJiB2bSwgSlNXZWJBc3NlbWJseU1lbW9yeSogdmFsdWUp
IHsgQVNTRVJUKCFtZW1vcnkoKSk7IG1fbWVtb3J5LnNldCh2bSwgdGhpcywgdmFsdWUpOyB9Cisg
ICAgSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utk1lbW9yeSog
bWVtb3J5KCkgeyByZXR1cm4gbV9tZW1vcnkuZ2V0KCk7IH0KKyAgICB2b2lkIHNldE1lbW9yeShW
TSYgdm0sIEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZNZW1v
cnkqIHZhbHVlKSB7IEFTU0VSVCghbWVtb3J5KCkpOyBtX21lbW9yeS5zZXQodm0sIHRoaXMsIHZh
bHVlKTsgfQogICAgIFdhc206Ok1lbW9yeU1vZGUgbWVtb3J5TW9kZSgpIHsgcmV0dXJuIG1lbW9y
eSgpLT5tZW1vcnkoKS5tb2RlKCk7IH0KIAotICAgIEpTV2ViQXNzZW1ibHlUYWJsZSogdGFibGUo
KSB7IHJldHVybiBtX3RhYmxlLmdldCgpOyB9CisgICAgSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCd
lLDwnZSi8J2UqvCdlJ/wnZSp8J2UtlRhYmxlKiB0YWJsZSgpIHsgcmV0dXJuIG1fdGFibGUuZ2V0
KCk7IH0KIAogICAgIGludDMyX3QgbG9hZEkzMkdsb2JhbCh1bnNpZ25lZCBpKSBjb25zdCB7IHJl
dHVybiBtX2dsb2JhbHMuZ2V0KClbaV07IH0KICAgICBpbnQ2NF90IGxvYWRJNjRHbG9iYWwodW5z
aWduZWQgaSkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxzLmdldCgpW2ldOyB9CkBAIC03NCwxOCAr
NzQsMTggQEAgcHVibGljOgogICAgIGRvdWJsZSBsb2FkRjY0R2xvYmFsKHVuc2lnbmVkIGkpIGNv
bnN0IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxkb3VibGU+KGxvYWRJNjRHbG9iYWwoaSkpOyB9CiAg
ICAgdm9pZCBzZXRHbG9iYWwodW5zaWduZWQgaSwgaW50NjRfdCBiaXRzKSB7IG1fZ2xvYmFscy5n
ZXQoKVtpXSA9IGJpdHM7IH0KIAotICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZNZW1vcnko
KSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNXZWJBc3NlbWJseUluc3RhbmNlLCBtX21lbW9y
eSk7IH0KLSAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mVGFibGUoKSB7IHJldHVybiBPQkpF
Q1RfT0ZGU0VUT0YoSlNXZWJBc3NlbWJseUluc3RhbmNlLCBtX3RhYmxlKTsgfQotICAgIHN0YXRp
YyBwdHJkaWZmX3Qgb2Zmc2V0T2ZDYWxsZWUoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNX
ZWJBc3NlbWJseUluc3RhbmNlLCBtX2NhbGxlZSk7IH0KLSAgICBzdGF0aWMgcHRyZGlmZl90IG9m
ZnNldE9mR2xvYmFscygpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU1dlYkFzc2VtYmx5SW5z
dGFuY2UsIG1fZ2xvYmFscyk7IH0KLSAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mVk0oKSB7
IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNXZWJBc3NlbWJseUluc3RhbmNlLCBtX3ZtKTsgfQot
ICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZDb2RlQmxvY2soKSB7IHJldHVybiBPQkpFQ1Rf
T0ZGU0VUT0YoSlNXZWJBc3NlbWJseUluc3RhbmNlLCBtX2NvZGVCbG9jayk7IH0KLSAgICBzdGF0
aWMgc2l6ZV90IG9mZnNldE9mSW1wb3J0RnVuY3Rpb25zKCkgeyByZXR1cm4gV1RGOjpyb3VuZFVw
VG9NdWx0aXBsZU9mPHNpemVvZihXcml0ZUJhcnJpZXI8SlNDZWxsPik+KHNpemVvZihKU1dlYkFz
c2VtYmx5SW5zdGFuY2UpKTsgfQorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZNZW1vcnko
KSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi
8J2UqvCdlJ/wnZSp8J2Utkluc3RhbmNlLCBtX21lbW9yeSk7IH0KKyAgICBzdGF0aWMgcHRyZGlm
Zl90IG9mZnNldE9mVGFibGUoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlPwnZSa8J2UovCd
lJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utkluc3RhbmNlLCBtX3RhYmxlKTsgfQor
ICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZDYWxsZWUoKSB7IHJldHVybiBPQkpFQ1RfT0ZG
U0VUT0YoSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utkluc3Rh
bmNlLCBtX2NhbGxlZSk7IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mR2xvYmFscygp
IHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLw
nZSq8J2Un/CdlKnwnZS2SW5zdGFuY2UsIG1fZ2xvYmFscyk7IH0KKyAgICBzdGF0aWMgcHRyZGlm
Zl90IG9mZnNldE9mVk0oKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlPwnZSa8J2UovCdlJ/w
nZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utkluc3RhbmNlLCBtX3ZtKTsgfQorICAgIHN0
YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZDb2RlQmxvY2soKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VU
T0YoSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utkluc3RhbmNl
LCBtX2NvZGVCbG9jayk7IH0KKyAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9mSW1wb3J0RnVuY3Rp
b25zKCkgeyByZXR1cm4gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPHNpemVvZihXcml0ZUJhcnJp
ZXI8SlNDZWxsPik+KHNpemVvZihKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2U
n/CdlKnwnZS2SW5zdGFuY2UpKTsgfQogICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZJbXBvcnRG
dW5jdGlvbihzaXplX3QgaW1wb3J0RnVuY3Rpb25OdW0pIHsgcmV0dXJuIG9mZnNldE9mSW1wb3J0
RnVuY3Rpb25zKCkgKyBpbXBvcnRGdW5jdGlvbk51bSAqIHNpemVvZihzaXplb2YoV3JpdGVCYXJy
aWVyPEpTQ2VsbD4pKTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgSlNXZWJBc3NlbWJseUluc3RhbmNl
KFZNJiwgU3RydWN0dXJlKiwgdW5zaWduZWQgbnVtSW1wb3J0RnVuY3Rpb25zKTsKLSAgICB2b2lk
IGZpbmlzaENyZWF0aW9uKFZNJiwgSlNXZWJBc3NlbWJseU1vZHVsZSosIEpTTW9kdWxlTmFtZXNw
YWNlT2JqZWN0Kik7CisgICAgSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/w
nZSp8J2Utkluc3RhbmNlKFZNJiwgU3RydWN0dXJlKiwgdW5zaWduZWQgbnVtSW1wb3J0RnVuY3Rp
b25zKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlPwnZSa8J2UovCdlJ/wnZSE8J2U
sPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utk1vZHVsZSosIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0
Kik7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKICAgICBzdGF0aWMgdm9pZCB2
aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKQEAgLTk4LDEyICs5OCwxMiBA
QCBwcml2YXRlOgogICAgIFZNKiBtX3ZtOwogICAgIFdyaXRlQmFycmllcjxKU09iamVjdD4qIGlt
cG9ydEZ1bmN0aW9ucygpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxXcml0ZUJhcnJpZXI8SlNPYmpl
Y3Q+Kj4oYml0d2lzZV9jYXN0PGNoYXIqPih0aGlzKSArIG9mZnNldE9mSW1wb3J0RnVuY3Rpb25z
KCkpOyB9CiAKLSAgICBXcml0ZUJhcnJpZXI8SlNXZWJBc3NlbWJseU1vZHVsZT4gbV9tb2R1bGU7
Ci0gICAgV3JpdGVCYXJyaWVyPEpTV2ViQXNzZW1ibHlDb2RlQmxvY2s+IG1fY29kZUJsb2NrOwor
ICAgIFdyaXRlQmFycmllcjxKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/Cd
lKnwnZS2TW9kdWxlPiBtX21vZHVsZTsKKyAgICBXcml0ZUJhcnJpZXI8SlPwnZSa8J2UovCdlJ/w
nZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtkNvZGVCbG9jaz4gbV9jb2RlQmxvY2s7CiAg
ICAgV3JpdGVCYXJyaWVyPEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0PiBtX21vZHVsZU5hbWVzcGFj
ZU9iamVjdDsKLSAgICBXcml0ZUJhcnJpZXI8SlNXZWJBc3NlbWJseU1lbW9yeT4gbV9tZW1vcnk7
Ci0gICAgV3JpdGVCYXJyaWVyPEpTV2ViQXNzZW1ibHlUYWJsZT4gbV90YWJsZTsKLSAgICBXcml0
ZUJhcnJpZXI8V2ViQXNzZW1ibHlUb0pTQ2FsbGVlPiBtX2NhbGxlZTsKKyAgICBXcml0ZUJhcnJp
ZXI8SlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utk1lbW9yeT4g
bV9tZW1vcnk7CisgICAgV3JpdGVCYXJyaWVyPEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2U
ovCdlKrwnZSf8J2UqfCdlLZUYWJsZT4gbV90YWJsZTsKKyAgICBXcml0ZUJhcnJpZXI88J2UmvCd
lKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZUb0pTQ2FsbGVlPiBtX2NhbGxl
ZTsKICAgICBNYWxsb2NQdHI8dWludDY0X3Q+IG1fZ2xvYmFsczsKICAgICB1bnNpZ25lZCBtX251
bUltcG9ydEZ1bmN0aW9uczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9KU1dlYkFzc2VtYmx5TGlua0Vycm9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlMaW5rRXJyb3IuY3BwCmluZGV4IDkyNzk4NTguLmRlNTNi
YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1i
bHlMaW5rRXJyb3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2Vi
QXNzZW1ibHlMaW5rRXJyb3IuY3BwCkBAIC0zMiwyOCArMzIsMjggQEAKIAogbmFtZXNwYWNlIEpT
QyB7CiAKLUpTV2ViQXNzZW1ibHlMaW5rRXJyb3IqIEpTV2ViQXNzZW1ibHlMaW5rRXJyb3I6OmNy
ZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSkKK0pT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf
8J2UqfCdlLZMaW5rRXJyb3IqIEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf
8J2UqfCdlLZMaW5rRXJyb3I6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBhdXRvKiBpbnN0
YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTV2ViQXNzZW1ibHlMaW5rRXJyb3I+
KHZtLmhlYXApKSBKU1dlYkFzc2VtYmx5TGlua0Vycm9yKHZtLCBzdHJ1Y3R1cmUpOworICAgIGF1
dG8qIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlPwnZSa8J2UovCdlJ/w
nZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtkxpbmtFcnJvcj4odm0uaGVhcCkpIEpT8J2U
mvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZMaW5rRXJyb3Iodm0sIHN0
cnVjdHVyZSk7CiAgICAgaW5zdGFuY2UtPm1fc291cmNlQXBwZW5kZXIgPSBkZWZhdWx0U291cmNl
QXBwZW5kZXI7CiAgICAgYm9vbCB1c2VDdXJyZW50RnJhbWUgPSB0cnVlOwogICAgIGluc3RhbmNl
LT5maW5pc2hDcmVhdGlvbihleGVjLCB2bSwgbWVzc2FnZSwgdXNlQ3VycmVudEZyYW1lKTsKICAg
ICByZXR1cm4gaW5zdGFuY2U7CiB9CiAKLUpTV2ViQXNzZW1ibHlMaW5rRXJyb3I6OkpTV2ViQXNz
ZW1ibHlMaW5rRXJyb3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK0pT8J2UmvCdlKLw
nZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZMaW5rRXJyb3I6OkpT8J2UmvCdlKLw
nZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZMaW5rRXJyb3IoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKIHsKIH0KIAotY29u
c3QgQ2xhc3NJbmZvIEpTV2ViQXNzZW1ibHlMaW5rRXJyb3I6OnNfaW5mbyA9IHsgIldlYkFzc2Vt
Ymx5LkxpbmtFcnJvciIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNX
ZWJBc3NlbWJseUxpbmtFcnJvcikgfTsKK2NvbnN0IENsYXNzSW5mbyBKU/CdlJrwnZSi8J2Un/Cd
lITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2TGlua0Vycm9yOjpzX2luZm8gPSB7ICJXZWJB
c3NlbWJseS5MaW5rRXJyb3IiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZMaW5rRXJyb3Ip
IH07CiAKICAgICAKLUpTT2JqZWN0KiBjcmVhdGVKU1dlYkFzc2VtYmx5TGlua0Vycm9yKEV4ZWNT
dGF0ZSogZXhlYywgVk0mIHZtLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCitKU09iamVjdCogY3Jl
YXRlSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtkxpbmtFcnJv
cihFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAg
IEFTU0VSVCghbWVzc2FnZS5pc0VtcHR5KCkpOwogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7Ci0gICAgcmV0dXJuIEpTV2ViQXNz
ZW1ibHlMaW5rRXJyb3I6OmNyZWF0ZShleGVjLCB2bSwgZ2xvYmFsT2JqZWN0LT5XZWJBc3NlbWJs
eUxpbmtFcnJvclN0cnVjdHVyZSgpLCBtZXNzYWdlKTsKKyAgICByZXR1cm4gSlPwnZSa8J2UovCd
lJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtkxpbmtFcnJvcjo6Y3JlYXRlKGV4ZWMs
IHZtLCBnbG9iYWxPYmplY3QtPvCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/Cd
lKnwnZS2TGlua0Vycm9yU3RydWN0dXJlKCksIG1lc3NhZ2UpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNz
ZW1ibHlMaW5rRXJyb3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNz
ZW1ibHlMaW5rRXJyb3IuaAppbmRleCA0MTcyZTY0Li42Zjg5YTAwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TGlua0Vycm9yLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUxpbmtFcnJvci5oCkBA
IC0zMSwxMiArMzEsMTIgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIEpTV2ViQXNzZW1i
bHlMaW5rRXJyb3IgOiBwdWJsaWMgRXJyb3JJbnN0YW5jZSB7CitjbGFzcyBKU/CdlJrwnZSi8J2U
n/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2TGlua0Vycm9yIDogcHVibGljIEVycm9y
SW5zdGFuY2UgewogcHVibGljOgogICAgIHR5cGVkZWYgRXJyb3JJbnN0YW5jZSBCYXNlOwogCi0g
ICAgc3RhdGljIEpTV2ViQXNzZW1ibHlMaW5rRXJyb3IqIGNyZWF0ZShFeGVjU3RhdGUqLCBWTSYs
IFN0cnVjdHVyZSosIGNvbnN0IFN0cmluZyYpOwotICAgIHN0YXRpYyBKU1dlYkFzc2VtYmx5TGlu
a0Vycm9yKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBKU1ZhbHVlIG1lc3NhZ2UpCisgICAgc3RhdGljIEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDw
nZSw8J2UovCdlKrwnZSf8J2UqfCdlLZMaW5rRXJyb3IqIGNyZWF0ZShFeGVjU3RhdGUqLCBWTSYs
IFN0cnVjdHVyZSosIGNvbnN0IFN0cmluZyYpOworICAgIHN0YXRpYyBKU/CdlJrwnZSi8J2Un/Cd
lITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2TGlua0Vycm9yKiBjcmVhdGUoRXhlY1N0YXRl
KiBleGVjLCBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1ZhbHVlIG1lc3NhZ2UpCiAg
ICAgewogICAgICAgICByZXR1cm4gY3JlYXRlKGV4ZWMsIHZtLCBzdHJ1Y3R1cmUsIG1lc3NhZ2Uu
aXNVbmRlZmluZWQoKSA/IFN0cmluZygpIDogbWVzc2FnZS50b1dURlN0cmluZyhleGVjKSk7CiAg
ICAgfQpAQCAtNDQsMTAgKzQ0LDEwIEBAIHB1YmxpYzoKICAgICBERUNMQVJFX0lORk87CiAKIHBy
b3RlY3RlZDoKLSAgICBKU1dlYkFzc2VtYmx5TGlua0Vycm9yKFZNJiwgU3RydWN0dXJlKik7Cisg
ICAgSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtkxpbmtFcnJv
cihWTSYsIFN0cnVjdHVyZSopOwogfTsKIAotSlNPYmplY3QqIGNyZWF0ZUpTV2ViQXNzZW1ibHlM
aW5rRXJyb3IoRXhlY1N0YXRlKiwgVk0mLCBjb25zdCBTdHJpbmcmKTsKK0pTT2JqZWN0KiBjcmVh
dGVKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2TGlua0Vycm9y
KEV4ZWNTdGF0ZSosIFZNJiwgY29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5
TWVtb3J5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlN
ZW1vcnkuY3BwCmluZGV4IDMzNjljMGUuLjRmZDkzODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1vcnkuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1vcnkuY3BwCkBAIC0zNSwyMiAr
MzUsMjIgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNvbnN0IENsYXNzSW5mbyBKU1dlYkFzc2Vt
Ymx5TWVtb3J5OjpzX2luZm8gPSB7ICJXZWJBc3NlbWJseS5NZW1vcnkiLCAmQmFzZTo6c19pbmZv
LCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTV2ViQXNzZW1ibHlNZW1vcnkpIH07Citjb25zdCBD
bGFzc0luZm8gSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utk1l
bW9yeTo6c19pbmZvID0geyAiV2ViQXNzZW1ibHkuTWVtb3J5IiwgJkJhc2U6OnNfaW5mbywgMCwg
Q1JFQVRFX01FVEhPRF9UQUJMRShKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2U
n/CdlKnwnZS2TWVtb3J5KSB9OwogCi1KU1dlYkFzc2VtYmx5TWVtb3J5KiBKU1dlYkFzc2VtYmx5
TWVtb3J5OjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmPFdhc206Ok1l
bW9yeT4mJiBtZW1vcnkpCitKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/Cd
lKnwnZS2TWVtb3J5KiBKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnw
nZS2TWVtb3J5OjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmPFdhc206
Ok1lbW9yeT4mJiBtZW1vcnkpCiB7Ci0gICAgYXV0byogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxKU1dlYkFzc2VtYmx5TWVtb3J5Pih2bS5oZWFwKSkgSlNXZWJBc3NlbWJs
eU1lbW9yeSh2bSwgc3RydWN0dXJlLCBXVEZNb3ZlKG1lbW9yeSkpOworICAgIGF1dG8qIGluc3Rh
bmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCd
lLDwnZSi8J2UqvCdlJ/wnZSp8J2Utk1lbW9yeT4odm0uaGVhcCkpIEpT8J2UmvCdlKLwnZSf8J2U
hPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZNZW1vcnkodm0sIHN0cnVjdHVyZSwgV1RGTW92
ZShtZW1vcnkpKTsKICAgICBpbnN0YW5jZS0+bV9tZW1vcnktPmNoZWNrKCk7CiAgICAgaW5zdGFu
Y2UtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gaW5zdGFuY2U7CiB9CiAKLVN0cnVj
dHVyZSogSlNXZWJBc3NlbWJseU1lbW9yeTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCitTdHJ1Y3R1cmUqIEpT
8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZNZW1vcnk6OmNyZWF0
ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
cHJvdG90eXBlKQogewogICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5m
bygpKTsKIH0KIAotSlNXZWJBc3NlbWJseU1lbW9yeTo6SlNXZWJBc3NlbWJseU1lbW9yeShWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWY8V2FzbTo6TWVtb3J5PiYmIG1lbW9yeSkKK0pT
8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZNZW1vcnk6OkpT8J2U
mvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZNZW1vcnkoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmPFdhc206Ok1lbW9yeT4mJiBtZW1vcnkpCiAgICAgOiBC
YXNlKHZtLCBzdHJ1Y3R1cmUpCiAgICAgLCBtX21lbW9yeShXVEZNb3ZlKG1lbW9yeSkpCiB7CkBA
IC01OSw3ICs1OSw3IEBAIEpTV2ViQXNzZW1ibHlNZW1vcnk6OkpTV2ViQXNzZW1ibHlNZW1vcnko
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmPFdhc206CiAgICAgbV9tZW1vcnlTaXpl
ID0gbV9tZW1vcnktPnNpemUoKTsKIH0KIAotSlNBcnJheUJ1ZmZlciogSlNXZWJBc3NlbWJseU1l
bW9yeTo6YnVmZmVyKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK0pTQXJy
YXlCdWZmZXIqIEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZN
ZW1vcnk6OmJ1ZmZlcihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAg
ICAgaWYgKG1fYnVmZmVyV3JhcHBlcikKICAgICAgICAgcmV0dXJuIG1fYnVmZmVyV3JhcHBlci5n
ZXQoKTsKQEAgLTczLDcgKzczLDcgQEAgSlNBcnJheUJ1ZmZlciogSlNXZWJBc3NlbWJseU1lbW9y
eTo6YnVmZmVyKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICByZXR1
cm4gbV9idWZmZXJXcmFwcGVyLmdldCgpOwogfQogCi1XYXNtOjpQYWdlQ291bnQgSlNXZWJBc3Nl
bWJseU1lbW9yeTo6Z3JvdyhWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgdWludDMyX3QgZGVsdGEs
IGJvb2wgc2hvdWxkVGhyb3dFeGNlcHRpb25zT25GYWlsdXJlKQorV2FzbTo6UGFnZUNvdW50IEpT
8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZNZW1vcnk6Omdyb3co
Vk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIHVpbnQzMl90IGRlbHRhLCBib29sIHNob3VsZFRocm93
RXhjZXB0aW9uc09uRmFpbHVyZSkKIHsKICAgICAvLyBOb3RlOiBXZSBjYW4gb25seSB1c2UgZXhl
YyBpZiBzaG91bGRUaHJvd0V4Y2VwdGlvbnNPbkZhaWx1cmUgaXMgdHJ1ZS4KICAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTEyMCwyMyArMTIwLDIzIEBA
IFdhc206OlBhZ2VDb3VudCBKU1dlYkFzc2VtYmx5TWVtb3J5Ojpncm93KFZNJiB2bSwgRXhlY1N0
YXRlKiBleGVjLCB1aW50MzJfdCBkZWx0CiAgICAgcmV0dXJuIG9sZFBhZ2VDb3VudDsKIH0KIAot
dm9pZCBKU1dlYkFzc2VtYmx5TWVtb3J5OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit2b2lkIEpT
8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZNZW1vcnk6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAg
QVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKIH0KIAotdm9pZCBKU1dlYkFzc2VtYmx5TWVt
b3J5OjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKK3ZvaWQgSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCd
lLDwnZSi8J2UqvCdlJ/wnZSp8J2Utk1lbW9yeTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCiB7Ci0g
ICAgYXV0byBtZW1vcnkgPSBzdGF0aWNfY2FzdDxKU1dlYkFzc2VtYmx5TWVtb3J5Kj4oY2VsbCk7
CisgICAgYXV0byBtZW1vcnkgPSBzdGF0aWNfY2FzdDxKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2U
sPCdlKLwnZSq8J2Un/CdlKnwnZS2TWVtb3J5Kj4oY2VsbCk7CiAgICAgQVNTRVJUKG1lbW9yeS0+
Y2xhc3NJbmZvKCkgPT0gaW5mbygpKTsKIAotICAgIG1lbW9yeS0+SlNXZWJBc3NlbWJseU1lbW9y
eTo6fkpTV2ViQXNzZW1ibHlNZW1vcnkoKTsKKyAgICBtZW1vcnktPkpT8J2UmvCdlKLwnZSf8J2U
hPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZNZW1vcnk6On5KU/CdlJrwnZSi8J2Un/CdlITw
nZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2TWVtb3J5KCk7CiB9CiAKLXZvaWQgSlNXZWJBc3Nl
bWJseU1lbW9yeTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQordm9pZCBKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2
TWVtb3J5Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
CiB7Ci0gICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1dlYkFzc2VtYmx5TWVtb3J5Kj4o
Y2VsbCk7CisgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU/CdlJrwnZSi8J2Un/CdlITw
nZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2TWVtb3J5Kj4oY2VsbCk7CiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogCiAgICAgQmFzZTo6dmlzaXRD
aGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1vcnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1vcnkuaAppbmRleCAyMTkzNjk5Li5lOWJlYjkw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5
TWVtb3J5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJs
eU1lbW9yeS5oCkBAIC0zNywxMSArMzcsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBBcnJh
eUJ1ZmZlcjsKIGNsYXNzIEpTQXJyYXlCdWZmZXI7CiAKLWNsYXNzIEpTV2ViQXNzZW1ibHlNZW1v
cnkgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgeworY2xhc3MgSlPwnZSa8J2UovCdlJ/w
nZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utk1lbW9yeSA6IHB1YmxpYyBKU0Rlc3RydWN0
aWJsZU9iamVjdCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0Rlc3RydWN0aWJsZU9iamVjdCBC
YXNlOwogCi0gICAgc3RhdGljIEpTV2ViQXNzZW1ibHlNZW1vcnkqIGNyZWF0ZShWTSYsIFN0cnVj
dHVyZSosIFJlZjxXYXNtOjpNZW1vcnk+JiYpOworICAgIHN0YXRpYyBKU/CdlJrwnZSi8J2Un/Cd
lITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2TWVtb3J5KiBjcmVhdGUoVk0mLCBTdHJ1Y3R1
cmUqLCBSZWY8V2FzbTo6TWVtb3J5PiYmKTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogCiAgICAgREVDTEFSRV9F
WFBPUlRfSU5GTzsKQEAgLTUwLDExICs1MCwxMSBAQCBwdWJsaWM6CiAgICAgSlNBcnJheUJ1ZmZl
ciogYnVmZmVyKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqKTsKICAgICBXYXNtOjpQYWdlQ291bnQg
Z3JvdyhWTSYsIEV4ZWNTdGF0ZSosIHVpbnQzMl90IGRlbHRhLCBib29sIHNob3VsZFRocm93RXhj
ZXB0aW9uc09uRmFpbHVyZSk7CiAKLSAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mTWVtb3J5
KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTV2ViQXNzZW1ibHlNZW1vcnksIG1fbWVtb3J5
QmFzZSk7IH0KLSAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mU2l6ZSgpIHsgcmV0dXJuIE9C
SkVDVF9PRkZTRVRPRihKU1dlYkFzc2VtYmx5TWVtb3J5LCBtX21lbW9yeVNpemUpOyB9CisgICAg
c3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZk1lbW9yeSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRP
RihKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2TWVtb3J5LCBt
X21lbW9yeUJhc2UpOyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlNpemUoKSB7IHJl
dHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCd
lJ/wnZSp8J2Utk1lbW9yeSwgbV9tZW1vcnlTaXplKTsgfQogCiBwcml2YXRlOgotICAgIEpTV2Vi
QXNzZW1ibHlNZW1vcnkoVk0mLCBTdHJ1Y3R1cmUqLCBSZWY8V2FzbTo6TWVtb3J5PiYmKTsKKyAg
ICBKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2TWVtb3J5KFZN
JiwgU3RydWN0dXJlKiwgUmVmPFdhc206Ok1lbW9yeT4mJik7CiAgICAgdm9pZCBmaW5pc2hDcmVh
dGlvbihWTSYpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAgICAgc3RhdGlj
IHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1vZHVsZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmNwcAppbmRl
eCA5ZDZmNGFmLi4zN2I0NTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmNwcApAQCAtNDEsMzQgKzQxLDM0IEBACiAKIG5h
bWVzcGFjZSBKU0MgewogCi1jb25zdCBDbGFzc0luZm8gSlNXZWJBc3NlbWJseU1vZHVsZTo6c19p
bmZvID0geyAiV2ViQXNzZW1ibHkuTW9kdWxlIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgQ1JF
QVRFX01FVEhPRF9UQUJMRShKU1dlYkFzc2VtYmx5TW9kdWxlKSB9OworY29uc3QgQ2xhc3NJbmZv
IEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZNb2R1bGU6OnNf
aW5mbyA9IHsgIldlYkFzc2VtYmx5Lk1vZHVsZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIENS
RUFURV9NRVRIT0RfVEFCTEUoSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/w
nZSp8J2Utk1vZHVsZSkgfTsKIAotSlNXZWJBc3NlbWJseU1vZHVsZSogSlNXZWJBc3NlbWJseU1v
ZHVsZTo6Y3JlYXRlU3R1YihWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBzb3VyY2UsIFJlZlB0cjxXYXNtOjpQbGFuPiYm
IHBsYW4pCitKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2TW9k
dWxlKiBKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2TW9kdWxl
OjpjcmVhdGVTdHViKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIHNvdXJjZSwgUmVmUHRyPFdhc206OlBsYW4+JiYgcGxh
bikKIHsKICAgICBBU1NFUlQoIXBsYW4tPmhhc1dvcmsoKSk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGlmIChwbGFuLT5mYWlsZWQoKSkgewotICAgICAg
ICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcjo6
Y3JlYXRlKGV4ZWMsIHZtLCBzdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgpLT5XZWJBc3NlbWJseUNv
bXBpbGVFcnJvclN0cnVjdHVyZSgpLCBwbGFuLT5lcnJvck1lc3NhZ2UoKSkpOworICAgICAgICB0
aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi
8J2UqvCdlJ/wnZSp8J2UtkNvbXBpbGVFcnJvcjo6Y3JlYXRlKGV4ZWMsIHZtLCBzdHJ1Y3R1cmUt
Pmdsb2JhbE9iamVjdCgpLT7wnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp
8J2UtkNvbXBpbGVFcnJvclN0cnVjdHVyZSgpLCBwbGFuLT5lcnJvck1lc3NhZ2UoKSkpOwogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBhdXRvKiBtb2R1bGUgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxKU1dlYkFzc2VtYmx5TW9kdWxlPih2bS5oZWFwKSkgSlNXZWJB
c3NlbWJseU1vZHVsZSh2bSwgc3RydWN0dXJlLCBXVEZNb3ZlKHNvdXJjZSkpOworICAgIGF1dG8q
IG1vZHVsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpT8J2UmvCdlKLwnZSf8J2UhPCd
lLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZNb2R1bGU+KHZtLmhlYXApKSBKU/CdlJrwnZSi8J2U
n/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2TW9kdWxlKHZtLCBzdHJ1Y3R1cmUsIFdU
Rk1vdmUoc291cmNlKSk7CiAgICAgbW9kdWxlLT5maW5pc2hDcmVhdGlvbih2bSwgV1RGTW92ZShw
bGFuKSk7CiAgICAgcmV0dXJuIG1vZHVsZTsKIH0KIAotU3RydWN0dXJlKiBKU1dlYkFzc2VtYmx5
TW9kdWxlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK1N0cnVjdHVyZSogSlPwnZSa8J2UovCdlJ/wnZSE8J2U
sPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utk1vZHVsZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiB7CiAgICAg
cmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlw
ZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogfQogCi1KU1dlYkFz
c2VtYmx5TW9kdWxlOjpKU1dlYkFzc2VtYmx5TW9kdWxlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBzb3VyY2UpCitKU/CdlJrwnZSi8J2Un/CdlITw
nZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2TW9kdWxlOjpKU/CdlJrwnZSi8J2Un/CdlITwnZSw
8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2TW9kdWxlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBzb3VyY2UpCiAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1
cmUpCiAgICAgLCBtX3NvdXJjZUJ1ZmZlcihzb3VyY2UucmVsZWFzZU5vbk51bGwoKSkKIHsKIH0K
IAotdm9pZCBKU1dlYkFzc2VtYmx5TW9kdWxlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFJlZlB0
cjxXYXNtOjpQbGFuPiYmIHBsYW4pCit2b2lkIEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2U
ovCdlKrwnZSf8J2UqfCdlLZNb2R1bGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgUmVmUHRyPFdh
c206OlBsYW4+JiYgcGxhbikKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAg
QVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKQEAgLTk2LDIzICs5NiwyMyBAQCB2b2lkIEpT
V2ViQXNzZW1ibHlNb2R1bGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgUmVmUHRyPFdhc206OlBs
YW4+JiYgcGxhbikKICAgICB9CiAKICAgICBtX2V4cG9ydFN5bWJvbFRhYmxlLnNldCh2bSwgdGhp
cywgZXhwb3J0U3ltYm9sVGFibGUpOwotICAgIG1fY2FsbGVlLnNldCh2bSwgdGhpcywgV2ViQXNz
ZW1ibHlUb0pTQ2FsbGVlOjpjcmVhdGUodm0sIHZtLndlYkFzc2VtYmx5VG9KU0NhbGxlZVN0cnVj
dHVyZS5nZXQoKSwgdGhpcykpOworICAgIG1fY2FsbGVlLnNldCh2bSwgdGhpcywg8J2UmvCdlKLw
nZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZUb0pTQ2FsbGVlOjpjcmVhdGUodm0s
IHZtLndlYkFzc2VtYmx5VG9KU0NhbGxlZVN0cnVjdHVyZS5nZXQoKSwgdGhpcykpOwogfQogCi12
b2lkIEpTV2ViQXNzZW1ibHlNb2R1bGU6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQordm9pZCBKU/Cd
lJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2TW9kdWxlOjpkZXN0cm95
KEpTQ2VsbCogY2VsbCkKIHsKLSAgICBzdGF0aWNfY2FzdDxKU1dlYkFzc2VtYmx5TW9kdWxlKj4o
Y2VsbCktPkpTV2ViQXNzZW1ibHlNb2R1bGU6On5KU1dlYkFzc2VtYmx5TW9kdWxlKCk7CisgICAg
c3RhdGljX2Nhc3Q8SlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2U
tk1vZHVsZSo+KGNlbGwpLT5KU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/Cd
lKnwnZS2TW9kdWxlOjp+SlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp
8J2Utk1vZHVsZSgpOwogICAgIFdhc206OlNpZ25hdHVyZUluZm9ybWF0aW9uOjp0cnlDbGVhbnVw
KCk7CiB9CiAKLXZvaWQgSlNXZWJBc3NlbWJseU1vZHVsZTo6c2V0Q29kZUJsb2NrKFZNJiB2bSwg
V2FzbTo6TWVtb3J5TW9kZSBtb2RlLCBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrKiBjb2RlQmxvY2sp
Cit2b2lkIEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZNb2R1
bGU6OnNldENvZGVCbG9jayhWTSYgdm0sIFdhc206Ok1lbW9yeU1vZGUgbW9kZSwgSlPwnZSa8J2U
ovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtkNvZGVCbG9jayogY29kZUJsb2Nr
KQogewogICAgIG1fY29kZUJsb2Nrc1tzdGF0aWNfY2FzdDxzaXplX3Q+KG1vZGUpXS5zZXQodm0s
IHRoaXMsIGNvZGVCbG9jayk7CiB9CiAKLXZvaWQgSlNXZWJBc3NlbWJseU1vZHVsZTo6dmlzaXRD
aGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQordm9pZCBKU/CdlJrw
nZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2TW9kdWxlOjp2aXNpdENoaWxk
cmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgSlNXZWJBc3Nl
bWJseU1vZHVsZSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1dlYkFzc2VtYmx5TW9kdWxlKj4oY2Vs
bCk7CisgICAgSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utk1v
ZHVsZSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLw
nZSq8J2Un/CdlKnwnZS2TW9kdWxlKj4oY2VsbCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogCiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlz
T2JqZWN0LCB2aXNpdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL0pTV2ViQXNzZW1ibHlNb2R1bGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L0pTV2ViQXNzZW1ibHlNb2R1bGUuaAppbmRleCA1NDlhZTgyLi4xYWNiNjYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1vZHVsZS5oCkBA
IC00MiwxNCArNDIsMTQgQEAgY2xhc3MgUGxhbjsKIH0KIAogY2xhc3MgU3ltYm9sVGFibGU7Ci1j
bGFzcyBKU1dlYkFzc2VtYmx5TWVtb3J5OwotY2xhc3MgV2ViQXNzZW1ibHlUb0pTQ2FsbGVlOwor
Y2xhc3MgSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utk1lbW9y
eTsKK2NsYXNzIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2VG9K
U0NhbGxlZTsKIAotY2xhc3MgSlNXZWJBc3NlbWJseU1vZHVsZSA6IHB1YmxpYyBKU0Rlc3RydWN0
aWJsZU9iamVjdCB7CitjbGFzcyBKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2U
n/CdlKnwnZS2TW9kdWxlIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKIHB1YmxpYzoK
ICAgICB0eXBlZGVmIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IEJhc2U7CiAKLSAgICBzdGF0aWMgSlNX
ZWJBc3NlbWJseU1vZHVsZSogY3JlYXRlU3R1YihWTSYsIEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSos
IFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBzb3VyY2UsIFJlZlB0cjxXYXNtOjpQbGFuPiYmKTsKKyAg
ICBzdGF0aWMgSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utk1v
ZHVsZSogY3JlYXRlU3R1YihWTSYsIEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4mJiBzb3VyY2UsIFJlZlB0cjxXYXNtOjpQbGFuPiYmKTsKICAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwog
CiAgICAgREVDTEFSRV9JTkZPOwpAQCAtNjAsMTggKzYwLDE4IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgICAgIHJldHVybiBtX21vZHVsZUluZm9ybWF0aW9uLT5zaWduYXR1cmVJbmRleEZyb21GdW5j
dGlvbkluZGV4U3BhY2UoZnVuY3Rpb25JbmRleFNwYWNlKTsKICAgICB9Ci0gICAgV2ViQXNzZW1i
bHlUb0pTQ2FsbGVlKiBjYWxsZWUoKSBjb25zdCB7IHJldHVybiBtX2NhbGxlZS5nZXQoKTsgfQor
ICAgIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2VG9KU0NhbGxl
ZSogY2FsbGVlKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsZWUuZ2V0KCk7IH0KIAotICAgIEpTV2Vi
QXNzZW1ibHlDb2RlQmxvY2sqIGNvZGVCbG9jayhXYXNtOjpNZW1vcnlNb2RlIG1vZGUpIHsgcmV0
dXJuIG1fY29kZUJsb2Nrc1tzdGF0aWNfY2FzdDxzaXplX3Q+KG1vZGUpXS5nZXQoKTsgfQorICAg
IEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZDb2RlQmxvY2sq
IGNvZGVCbG9jayhXYXNtOjpNZW1vcnlNb2RlIG1vZGUpIHsgcmV0dXJuIG1fY29kZUJsb2Nrc1tz
dGF0aWNfY2FzdDxzaXplX3Q+KG1vZGUpXS5nZXQoKTsgfQogCiAgICAgQXJyYXlCdWZmZXImIHNv
dXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlQnVmZmVyLmdldCgpOyB9CiAKIHByaXZhdGU6
Ci0gICAgZnJpZW5kIGNsYXNzIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2s7CisgICAgZnJpZW5kIGNs
YXNzIEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZDb2RlQmxv
Y2s7CiAKLSAgICB2b2lkIHNldENvZGVCbG9jayhWTSYsIFdhc206Ok1lbW9yeU1vZGUsIEpTV2Vi
QXNzZW1ibHlDb2RlQmxvY2sqKTsKKyAgICB2b2lkIHNldENvZGVCbG9jayhWTSYsIFdhc206Ok1l
bW9yeU1vZGUsIEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZD
b2RlQmxvY2sqKTsKIAotICAgIEpTV2ViQXNzZW1ibHlNb2R1bGUoVk0mLCBTdHJ1Y3R1cmUqLCBS
ZWZQdHI8QXJyYXlCdWZmZXI+JiYpOworICAgIEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2U
ovCdlKrwnZSf8J2UqfCdlLZNb2R1bGUoVk0mLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZm
ZXI+JiYpOwogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBSZWZQdHI8V2FzbTo6UGxhbj4m
Jik7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKICAgICBzdGF0aWMgdm9pZCB2
aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CkBAIC03OSw4ICs3OSw4IEBAIHBy
aXZhdGU6CiAgICAgUmVmPEFycmF5QnVmZmVyPiBtX3NvdXJjZUJ1ZmZlcjsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8Y29uc3QgV2FzbTo6TW9kdWxlSW5mb3JtYXRpb24+IG1fbW9kdWxlSW5mb3JtYXRp
b247CiAgICAgV3JpdGVCYXJyaWVyPFN5bWJvbFRhYmxlPiBtX2V4cG9ydFN5bWJvbFRhYmxlOwot
ICAgIFdyaXRlQmFycmllcjxKU1dlYkFzc2VtYmx5Q29kZUJsb2NrPiBtX2NvZGVCbG9ja3NbV2Fz
bTo6TnVtYmVyT2ZNZW1vcnlNb2Rlc107Ci0gICAgV3JpdGVCYXJyaWVyPFdlYkFzc2VtYmx5VG9K
U0NhbGxlZT4gbV9jYWxsZWU7CisgICAgV3JpdGVCYXJyaWVyPEpT8J2UmvCdlKLwnZSf8J2UhPCd
lLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZDb2RlQmxvY2s+IG1fY29kZUJsb2Nrc1tXYXNtOjpO
dW1iZXJPZk1lbW9yeU1vZGVzXTsKKyAgICBXcml0ZUJhcnJpZXI88J2UmvCdlKLwnZSf8J2UhPCd
lLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZUb0pTQ2FsbGVlPiBtX2NhbGxlZTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9KU1dlYkFzc2VtYmx5UnVudGltZUVycm9yLmNwcAppbmRleCA1Y2JiYzBmMC4uNDMy
YzQ3NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3Nl
bWJseVJ1bnRpbWVFcnJvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
SlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5jcHAKQEAgLTMyLDIxICszMiwyMSBAQAogCiBuYW1l
c3BhY2UgSlNDIHsKIAotSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvciogSlNXZWJBc3NlbWJseVJ1
bnRpbWVFcnJvcjo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQorSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCd
lLDwnZSi8J2UqvCdlJ/wnZSp8J2UtlJ1bnRpbWVFcnJvciogSlPwnZSa8J2UovCdlJ/wnZSE8J2U
sPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtlJ1bnRpbWVFcnJvcjo6Y3JlYXRlKEV4ZWNTdGF0ZSog
ZXhlYywgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
KQogewotICAgIGF1dG8qIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNX
ZWJBc3NlbWJseVJ1bnRpbWVFcnJvcj4odm0uaGVhcCkpIEpTV2ViQXNzZW1ibHlSdW50aW1lRXJy
b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgYXV0byogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2
UnVudGltZUVycm9yPih2bS5oZWFwKSkgSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2U
qvCdlJ/wnZSp8J2UtlJ1bnRpbWVFcnJvcih2bSwgc3RydWN0dXJlKTsKICAgICBpbnN0YW5jZS0+
bV9zb3VyY2VBcHBlbmRlciA9IGRlZmF1bHRTb3VyY2VBcHBlbmRlcjsKICAgICBib29sIHVzZUN1
cnJlbnRGcmFtZSA9IHRydWU7CiAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKGV4ZWMsIHZt
LCBtZXNzYWdlLCB1c2VDdXJyZW50RnJhbWUpOwogICAgIHJldHVybiBpbnN0YW5jZTsKIH0KIAot
SlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcjo6SlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcihWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi
8J2UqvCdlJ/wnZSp8J2UtlJ1bnRpbWVFcnJvcjo6SlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDw
nZSi8J2UqvCdlJ/wnZSp8J2UtlJ1bnRpbWVFcnJvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlKQogICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQogewogfQogCi1jb25zdCBDbGFzc0luZm8g
SlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcjo6c19pbmZvID0geyAiV2ViQXNzZW1ibHkuUnVudGlt
ZUVycm9yIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1dlYkFzc2Vt
Ymx5UnVudGltZUVycm9yKSB9OworY29uc3QgQ2xhc3NJbmZvIEpT8J2UmvCdlKLwnZSf8J2UhPCd
lLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZSdW50aW1lRXJyb3I6OnNfaW5mbyA9IHsgIldlYkFz
c2VtYmx5LlJ1bnRpbWVFcnJvciIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFC
TEUoSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtlJ1bnRpbWVF
cnJvcikgfTsKIAogICAgIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5UnVudGltZUVycm9yLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5UnVudGltZUVycm9yLmgKaW5k
ZXggMjJhOWU3ZS4uNWM1MWZmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuaApAQCAtMzEsMTIgKzMxLDEy
IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBKU1dlYkFzc2VtYmx5UnVudGltZUVycm9y
IDogcHVibGljIEVycm9ySW5zdGFuY2UgeworY2xhc3MgSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCd
lLDwnZSi8J2UqvCdlJ/wnZSp8J2UtlJ1bnRpbWVFcnJvciA6IHB1YmxpYyBFcnJvckluc3RhbmNl
IHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEVycm9ySW5zdGFuY2UgQmFzZTsKIAotICAgIHN0YXRp
YyBKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yKiBjcmVhdGUoRXhlY1N0YXRlKiwgVk0mLCBTdHJ1
Y3R1cmUqLCBjb25zdCBTdHJpbmcmKTsKLSAgICBzdGF0aWMgSlNXZWJBc3NlbWJseVJ1bnRpbWVF
cnJvciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgSlNWYWx1ZSBtZXNzYWdlKQorICAgIHN0YXRpYyBKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2U
sPCdlKLwnZSq8J2Un/CdlKnwnZS2UnVudGltZUVycm9yKiBjcmVhdGUoRXhlY1N0YXRlKiwgVk0m
LCBTdHJ1Y3R1cmUqLCBjb25zdCBTdHJpbmcmKTsKKyAgICBzdGF0aWMgSlPwnZSa8J2UovCdlJ/w
nZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtlJ1bnRpbWVFcnJvciogY3JlYXRlKEV4ZWNT
dGF0ZSogZXhlYywgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNWYWx1ZSBtZXNzYWdl
KQogICAgIHsKICAgICAgICAgcmV0dXJuIGNyZWF0ZShleGVjLCB2bSwgc3RydWN0dXJlLCBtZXNz
YWdlLmlzVW5kZWZpbmVkKCkgPyBTdHJpbmcoKSA6IG1lc3NhZ2UudG9XVEZTdHJpbmcoZXhlYykp
OwogICAgIH0KQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIERFQ0xBUkVfSU5GTzsKIAog
cHJvdGVjdGVkOgotICAgIEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IoVk0mLCBTdHJ1Y3R1cmUq
KTsKKyAgICBKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2UnVu
dGltZUVycm9yKFZNJiwgU3RydWN0dXJlKik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlUYWJs
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5VGFibGUu
Y3BwCmluZGV4IGM4MmUzNTIuLmUzMzk0YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlUYWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVRhYmxlLmNwcApAQCAtMzMsOSArMzMsOSBAQAog
CiBuYW1lc3BhY2UgSlNDIHsKIAotY29uc3QgQ2xhc3NJbmZvIEpTV2ViQXNzZW1ibHlUYWJsZTo6
c19pbmZvID0geyAiV2ViQXNzZW1ibHkuVGFibGUiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEpTV2ViQXNzZW1ibHlUYWJsZSkgfTsKK2NvbnN0IENsYXNzSW5mbyBKU/Cd
lJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2VGFibGU6OnNfaW5mbyA9
IHsgIldlYkFzc2VtYmx5LlRhYmxlIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9U
QUJMRShKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2VGFibGUp
IH07CiAKLUpTV2ViQXNzZW1ibHlUYWJsZSogSlNXZWJBc3NlbWJseVRhYmxlOjpjcmVhdGUoRXhl
Y1N0YXRlKiBleGVjLCBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1aW50MzJfdCBpbml0
aWFsLCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBtYXhpbXVtKQorSlPwnZSa8J2UovCdlJ/wnZSE
8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtlRhYmxlKiBKU/CdlJrwnZSi8J2Un/CdlITwnZSw
8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2VGFibGU6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVpbnQzMl90IGluaXRpYWwsIHN0ZDo6b3B0aW9u
YWw8dWludDMyX3Q+IG1heGltdW0pCiB7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICAgaWYgKCFpc1ZhbGlkU2l6ZShpbml0aWFsKSkgewpAQCAtNDMs
MTcgKzQzLDE3IEBAIEpTV2ViQXNzZW1ibHlUYWJsZSogSlNXZWJBc3NlbWJseVRhYmxlOjpjcmVh
dGUoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIFN0cnVjdHVyCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KIAotICAgIGF1dG8qIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8SlNXZWJBc3NlbWJseVRhYmxlPih2bS5oZWFwKSkgSlNXZWJBc3NlbWJseVRhYmxlKHZt
LCBzdHJ1Y3R1cmUsIGluaXRpYWwsIG1heGltdW0pOworICAgIGF1dG8qIGluc3RhbmNlID0gbmV3
IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2U
qvCdlJ/wnZSp8J2UtlRhYmxlPih2bS5oZWFwKSkgSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDw
nZSi8J2UqvCdlJ/wnZSp8J2UtlRhYmxlKHZtLCBzdHJ1Y3R1cmUsIGluaXRpYWwsIG1heGltdW0p
OwogICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIGluc3RhbmNl
OwogfQogCi1TdHJ1Y3R1cmUqIEpTV2ViQXNzZW1ibHlUYWJsZTo6Y3JlYXRlU3RydWN0dXJlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCitT
dHJ1Y3R1cmUqIEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZU
YWJsZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBwcm90b3R5cGUpCiB7CiAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBpbmZvKCkpOwogfQogCi1KU1dlYkFzc2VtYmx5VGFibGU6OkpTV2ViQXNzZW1ibHlU
YWJsZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1aW50MzJfdCBpbml0aWFsLCBzdGQ6
Om9wdGlvbmFsPHVpbnQzMl90PiBtYXhpbXVtKQorSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDw
nZSi8J2UqvCdlJ/wnZSp8J2UtlRhYmxlOjpKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLw
nZSq8J2Un/CdlKnwnZS2VGFibGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdWludDMy
X3QgaW5pdGlhbCwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gbWF4aW11bSkKICAgICA6IEJhc2Uo
dm0sIHN0cnVjdHVyZSkKIHsKICAgICBtX3NpemUgPSBpbml0aWFsOwpAQCAtNzIsMjAgKzcyLDIw
IEBAIEpTV2ViQXNzZW1ibHlUYWJsZTo6SlNXZWJBc3NlbWJseVRhYmxlKFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIHVpbnQzMl90IGluCiAgICAgfQogfQogCi12b2lkIEpTV2ViQXNzZW1i
bHlUYWJsZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQordm9pZCBKU/CdlJrwnZSi8J2Un/CdlITw
nZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2VGFibGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkK
IHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKHZt
LCBpbmZvKCkpKTsKIH0KIAotdm9pZCBKU1dlYkFzc2VtYmx5VGFibGU6OmRlc3Ryb3koSlNDZWxs
KiBjZWxsKQordm9pZCBKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnw
nZS2VGFibGU6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogewotICAgIHN0YXRpY19jYXN0PEpTV2Vi
QXNzZW1ibHlUYWJsZSo+KGNlbGwpLT5KU1dlYkFzc2VtYmx5VGFibGU6On5KU1dlYkFzc2VtYmx5
VGFibGUoKTsKKyAgICBzdGF0aWNfY2FzdDxKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLw
nZSq8J2Un/CdlKnwnZS2VGFibGUqPihjZWxsKS0+SlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDw
nZSi8J2UqvCdlJ/wnZSp8J2UtlRhYmxlOjp+SlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi
8J2UqvCdlJ/wnZSp8J2UtlRhYmxlKCk7CiB9CiAKLXZvaWQgSlNXZWJBc3NlbWJseVRhYmxlOjp2
aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIEpT
8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZUYWJsZTo6dmlzaXRD
aGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEpTV2Vi
QXNzZW1ibHlUYWJsZSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1dlYkFzc2VtYmx5VGFibGUqPihj
ZWxsKTsKKyAgICBKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2
VGFibGUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi
8J2UqvCdlJ/wnZSp8J2UtlRhYmxlKj4oY2VsbCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogCiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlz
T2JqZWN0LCB2aXNpdG9yKTsKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBKU1dlYkFzc2VtYmx5VGFi
bGU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAg
ICAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9qc0Z1bmN0aW9ucy5nZXQoKVtpXSk7
CiB9CiAKLWJvb2wgSlNXZWJBc3NlbWJseVRhYmxlOjpncm93KHVpbnQzMl90IG5ld1NpemUpCiti
b29sIEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZUYWJsZTo6
Z3Jvdyh1aW50MzJfdCBuZXdTaXplKQogewogICAgIGlmIChuZXdTaXplIDwgbV9zaXplKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMTYsNyArMTE2LDcgQEAgYm9vbCBKU1dlYkFzc2VtYmx5
VGFibGU6Omdyb3codWludDMyX3QgbmV3U2l6ZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9p
ZCBKU1dlYkFzc2VtYmx5VGFibGU6OmNsZWFyRnVuY3Rpb24odWludDMyX3QgaW5kZXgpCit2b2lk
IEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZUYWJsZTo6Y2xl
YXJGdW5jdGlvbih1aW50MzJfdCBpbmRleCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChpbmRleCA8
IG1fc2l6ZSk7CiAgICAgbV9qc0Z1bmN0aW9ucy5nZXQoKVtpbmRleF0gPSBXcml0ZUJhcnJpZXI8
SlNPYmplY3Q+KCk7CkBAIC0xMjQsMTQgKzEyNCwxNCBAQCB2b2lkIEpTV2ViQXNzZW1ibHlUYWJs
ZTo6Y2xlYXJGdW5jdGlvbih1aW50MzJfdCBpbmRleCkKICAgICBBU1NFUlQobV9mdW5jdGlvbnMu
Z2V0KClbaW5kZXhdLnNpZ25hdHVyZUluZGV4ID09IFdhc206OlNpZ25hdHVyZTo6aW52YWxpZElu
ZGV4KTsgLy8gV2UgcmVseSBvbiB0aGlzIGluIGNvbXBpbGVkIGNvZGUuCiB9CiAKLXZvaWQgSlNX
ZWJBc3NlbWJseVRhYmxlOjpzZXRGdW5jdGlvbihWTSYgdm0sIHVpbnQzMl90IGluZGV4LCBXZWJB
c3NlbWJseUZ1bmN0aW9uKiBmdW5jdGlvbikKK3ZvaWQgSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCd
lLDwnZSi8J2UqvCdlJ/wnZSp8J2UtlRhYmxlOjpzZXRGdW5jdGlvbihWTSYgdm0sIHVpbnQzMl90
IGluZGV4LCDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtkZ1bmN0
aW9uKiBmdW5jdGlvbikKIHsKICAgICBSRUxFQVNFX0FTU0VSVChpbmRleCA8IG1fc2l6ZSk7CiAg
ICAgbV9qc0Z1bmN0aW9ucy5nZXQoKVtpbmRleF0uc2V0KHZtLCB0aGlzLCBmdW5jdGlvbik7CiAg
ICAgbV9mdW5jdGlvbnMuZ2V0KClbaW5kZXhdID0gV2FzbTo6Q2FsbGFibGVGdW5jdGlvbihmdW5j
dGlvbi0+c2lnbmF0dXJlSW5kZXgoKSwgZnVuY3Rpb24tPndhc21FbnRyeXBvaW50KCkpOwogfQog
Ci12b2lkIEpTV2ViQXNzZW1ibHlUYWJsZTo6c2V0RnVuY3Rpb24oVk0mIHZtLCB1aW50MzJfdCBp
bmRleCwgV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24qIGZ1bmN0aW9uKQordm9pZCBKU/CdlJrw
nZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2VGFibGU6OnNldEZ1bmN0aW9u
KFZNJiB2bSwgdWludDMyX3QgaW5kZXgsIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq
8J2Un/CdlKnwnZS2V3JhcHBlckZ1bmN0aW9uKiBmdW5jdGlvbikKIHsKICAgICBSRUxFQVNFX0FT
U0VSVChpbmRleCA8IG1fc2l6ZSk7CiAgICAgbV9qc0Z1bmN0aW9ucy5nZXQoKVtpbmRleF0uc2V0
KHZtLCB0aGlzLCBmdW5jdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9KU1dlYkFzc2VtYmx5VGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL0pTV2ViQXNzZW1ibHlUYWJsZS5oCmluZGV4IDU4NzIzYWIuLjdjYzRjYzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlUYWJsZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlUYWJsZS5oCkBA
IC0zOSwxMSArMzksMTEgQEAgbmFtZXNwYWNlIFdhc20gewogc3RydWN0IENhbGxhYmxlRnVuY3Rp
b247CiB9CiAKLWNsYXNzIEpTV2ViQXNzZW1ibHlUYWJsZSA6IHB1YmxpYyBKU0Rlc3RydWN0aWJs
ZU9iamVjdCB7CitjbGFzcyBKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/Cd
lKnwnZS2VGFibGUgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogcHVibGljOgogICAg
IHR5cGVkZWYgSlNEZXN0cnVjdGlibGVPYmplY3QgQmFzZTsKIAotICAgIHN0YXRpYyBKU1dlYkFz
c2VtYmx5VGFibGUqIGNyZWF0ZShFeGVjU3RhdGUqLCBWTSYsIFN0cnVjdHVyZSosIHVpbnQzMl90
IGluaXRpYWwsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IG1heGltdW0pOworICAgIHN0YXRpYyBK
U/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2VGFibGUqIGNyZWF0
ZShFeGVjU3RhdGUqLCBWTSYsIFN0cnVjdHVyZSosIHVpbnQzMl90IGluaXRpYWwsIHN0ZDo6b3B0
aW9uYWw8dWludDMyX3Q+IG1heGltdW0pOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAKICAgICBERUNMQVJFX0lO
Rk87CkBAIC01NywxMSArNTcsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9qc0Z1bmN0
aW9ucy5nZXQoKVtpbmRleF0uZ2V0KCk7CiAgICAgfQogICAgIHZvaWQgY2xlYXJGdW5jdGlvbih1
aW50MzJfdCBpbmRleCk7Ci0gICAgdm9pZCBzZXRGdW5jdGlvbihWTSYsIHVpbnQzMl90IGluZGV4
LCBXZWJBc3NlbWJseUZ1bmN0aW9uKik7Ci0gICAgdm9pZCBzZXRGdW5jdGlvbihWTSYsIHVpbnQz
Ml90IGluZGV4LCBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbiopOworICAgIHZvaWQgc2V0RnVu
Y3Rpb24oVk0mLCB1aW50MzJfdCBpbmRleCwg8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCd
lKrwnZSf8J2UqfCdlLZGdW5jdGlvbiopOworICAgIHZvaWQgc2V0RnVuY3Rpb24oVk0mLCB1aW50
MzJfdCBpbmRleCwg8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZX
cmFwcGVyRnVuY3Rpb24qKTsKIAotICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZTaXplKCkg
eyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTV2ViQXNzZW1ibHlUYWJsZSwgbV9zaXplKTsgfQot
ICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZGdW5jdGlvbnMoKSB7IHJldHVybiBPQkpFQ1Rf
T0ZGU0VUT0YoSlNXZWJBc3NlbWJseVRhYmxlLCBtX2Z1bmN0aW9ucyk7IH0KKyAgICBzdGF0aWMg
cHRyZGlmZl90IG9mZnNldE9mU2l6ZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU/CdlJrw
nZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2VGFibGUsIG1fc2l6ZSk7IH0K
KyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mRnVuY3Rpb25zKCkgeyByZXR1cm4gT0JKRUNU
X09GRlNFVE9GKEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZU
YWJsZSwgbV9mdW5jdGlvbnMpOyB9CiAKICAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkU2l6ZSh1aW50
MzJfdCBzaXplKQogICAgIHsKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgIH0KIAogcHJp
dmF0ZToKLSAgICBKU1dlYkFzc2VtYmx5VGFibGUoVk0mLCBTdHJ1Y3R1cmUqLCB1aW50MzJfdCBp
bml0aWFsLCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBtYXhpbXVtKTsKKyAgICBKU/CdlJrwnZSi
8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2VGFibGUoVk0mLCBTdHJ1Y3R1cmUq
LCB1aW50MzJfdCBpbml0aWFsLCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBtYXhpbXVtKTsKICAg
ICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0Nl
bGwqKTsKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9y
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3IuY3BwCmluZGV4IDM0NDUyNTIu
LmVjNWExNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3IuY3BwCkBAIC0z
Nyw2MyArMzcsNjMgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNvbnN0IENsYXNzSW5mbyBXZWJB
c3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZC
YXNlOjpzX2luZm8sICZjb25zdHJ1Y3RvclRhYmxlV2ViQXNzZW1ibHlDb21waWxlRXJyb3IsIENS
RUFURV9NRVRIT0RfVEFCTEUoV2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3RvcikgfTsK
K2NvbnN0IENsYXNzSW5mbyDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp
8J2UtkNvbXBpbGVFcnJvckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNl
OjpzX2luZm8sICZjb25zdHJ1Y3RvclRhYmxlV2ViQXNzZW1ibHlDb21waWxlRXJyb3IsIENSRUFU
RV9NRVRIT0RfVEFCTEUo8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCd
lLZDb21waWxlRXJyb3JDb25zdHJ1Y3RvcikgfTsKIAotLyogU291cmNlIGZvciBXZWJBc3NlbWJs
eUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmx1dC5oCisvKiBTb3VyY2UgZm9yIPCdlJrwnZSi8J2U
n/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2Q29tcGlsZUVycm9yQ29uc3RydWN0b3Iu
bHV0LmgKICBAYmVnaW4gY29uc3RydWN0b3JUYWJsZVdlYkFzc2VtYmx5Q29tcGlsZUVycm9yCiAg
QGVuZAogICovCiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVj
dEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCd
lLDwnZSi8J2UqvCdlJ/wnZSp8J2UtkNvbXBpbGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCiB7CiAg
ICAgYXV0byYgdm0gPSBleGVjLT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIG1lc3NhZ2UgPSBleGVjLT5hcmd1bWVudCgwKTsKLSAg
ICBhdXRvKiBzdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVj
dHVyZShleGVjLCBleGVjLT5uZXdUYXJnZXQoKSwgYXNJbnRlcm5hbEZ1bmN0aW9uKGV4ZWMtPmpz
Q2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoKS0+V2ViQXNzZW1ibHlDb21waWxlRXJyb3JTdHJ1Y3R1
cmUoKSk7CisgICAgYXV0byogc3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3Vi
Y2xhc3NTdHJ1Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCksIGFzSW50ZXJuYWxGdW5jdGlv
bihleGVjLT5qc0NhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KCktPvCdlJrwnZSi8J2Un/CdlITwnZSw
8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2Q29tcGlsZUVycm9yU3RydWN0dXJlKCkpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcjo6Y3JlYXRlKGV4ZWMsIHZt
LCBzdHJ1Y3R1cmUsIG1lc3NhZ2UpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpT8J2U
mvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZDb21waWxlRXJyb3I6OmNy
ZWF0ZShleGVjLCB2bSwgc3RydWN0dXJlLCBtZXNzYWdlKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yKEV4ZWNT
dGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxKU/Cd
lJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2Q29tcGlsZUVycm9yKEV4
ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU1ZhbHVlIG1lc3NhZ2UgPSBleGVjLT5hcmd1bWVudCgw
KTsKLSAgICBTdHJ1Y3R1cmUqIGVycm9yU3RydWN0dXJlID0gYXNJbnRlcm5hbEZ1bmN0aW9uKGV4
ZWMtPmpzQ2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoKS0+V2ViQXNzZW1ibHlDb21waWxlRXJyb3JT
dHJ1Y3R1cmUoKTsKKyAgICBTdHJ1Y3R1cmUqIGVycm9yU3RydWN0dXJlID0gYXNJbnRlcm5hbEZ1
bmN0aW9uKGV4ZWMtPmpzQ2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoKS0+8J2UmvCdlKLwnZSf8J2U
hPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZDb21waWxlRXJyb3JTdHJ1Y3R1cmUoKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEVycm9ySW5zdGFuY2U6OmNyZWF0ZShleGVjLCBlcnJv
clN0cnVjdHVyZSwgbWVzc2FnZSwgbnVsbHB0ciwgVHlwZU5vdGhpbmcsIGZhbHNlKSk7CiB9CiAK
LVdlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3IqIFdlYkFzc2VtYmx5Q29tcGlsZUVy
cm9yQ29uc3RydWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBXZWJB
c3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZSogdGhpc1Byb3RvdHlwZSkKK/CdlJrwnZSi8J2U
n/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2Q29tcGlsZUVycm9yQ29uc3RydWN0b3Iq
IPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2Q29tcGlsZUVycm9y
Q29uc3RydWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCDwnZSa8J2U
ovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtkNvbXBpbGVFcnJvclByb3RvdHlw
ZSogdGhpc1Byb3RvdHlwZSkKIHsKLSAgICBhdXRvKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3I+KHZtLmhl
YXApKSBXZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOwor
ICAgIGF1dG8qIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw88J2UmvCd
lKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZDb21waWxlRXJyb3JDb25zdHJ1
Y3Rvcj4odm0uaGVhcCkpIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnw
nZS2Q29tcGlsZUVycm9yQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CiAgICAgY29uc3RydWN0
b3ItPmZpbmlzaENyZWF0aW9uKHZtLCB0aGlzUHJvdG90eXBlKTsKICAgICByZXR1cm4gY29uc3Ry
dWN0b3I7CiB9CiAKLVN0cnVjdHVyZSogV2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rv
cjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSBwcm90b3R5cGUpCitTdHJ1Y3R1cmUqIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCd
lKLwnZSq8J2Un/CdlKnwnZS2Q29tcGlsZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVy
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBl
KQogewogICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90
b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKIH0K
IAotdm9pZCBXZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlKiBwcm90b3R5cGUpCit2
b2lkIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2Q29tcGlsZUVy
cm9yQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwg8J2UmvCdlKLwnZSf8J2UhPCd
lLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZDb21waWxlRXJyb3JQcm90b3R5cGUqIHByb3RvdHlw
ZSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgQVNDSUlMaXRlcmFsKCJDb21waWxl
RXJyb3IiKSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5
TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERl
bGV0ZSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRl
KTsKIH0KIAotV2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvcjo6V2ViQXNzZW1ibHlD
b21waWxlRXJyb3JDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQor8J2U
mvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZDb21waWxlRXJyb3JDb25z
dHJ1Y3Rvcjo68J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZDb21w
aWxlRXJyb3JDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDog
QmFzZSh2bSwgc3RydWN0dXJlKQogewogfQogCi1Db25zdHJ1Y3RUeXBlIFdlYkFzc2VtYmx5Q29t
cGlsZUVycm9yQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0
RGF0YSYgY29uc3RydWN0RGF0YSkKK0NvbnN0cnVjdFR5cGUg8J2UmvCdlKLwnZSf8J2UhPCdlLDw
nZSw8J2UovCdlKrwnZSf8J2UqfCdlLZDb21waWxlRXJyb3JDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3Ry
dWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQogewotICAgIGNv
bnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0SlNXZWJBc3NlbWJseUNvbXBp
bGVFcnJvcjsKKyAgICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdEpT
8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZDb21waWxlRXJyb3I7
CiAgICAgcmV0dXJuIENvbnN0cnVjdFR5cGU6Okhvc3Q7CiB9CiAKLUNhbGxUeXBlIFdlYkFzc2Vt
Ymx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRh
JiBjYWxsRGF0YSkKK0NhbGxUeXBlIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2U
n/CdlKnwnZS2Q29tcGlsZUVycm9yQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2VsbCosIENh
bGxEYXRhJiBjYWxsRGF0YSkKIHsKLSAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxs
SlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcjsKKyAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24g
PSBjYWxsSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtkNvbXBp
bGVFcnJvcjsKICAgICByZXR1cm4gQ2FsbFR5cGU6Okhvc3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3Ry
dWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5Q29tcGls
ZUVycm9yQ29uc3RydWN0b3IuaAppbmRleCAzNGEwZTc4Li5hMWE5Mzk5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0
cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlD
b21waWxlRXJyb3JDb25zdHJ1Y3Rvci5oCkBAIC0zMiwyMyArMzIsMjMgQEAKIAogbmFtZXNwYWNl
IEpTQyB7CiAKLWNsYXNzIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlOworY2xhc3Mg
8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZDb21waWxlRXJyb3JQ
cm90b3R5cGU7CiAKLWNsYXNzIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3IgOiBw
dWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CitjbGFzcyDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDw
nZSi8J2UqvCdlJ/wnZSp8J2UtkNvbXBpbGVFcnJvckNvbnN0cnVjdG9yIDogcHVibGljIEludGVy
bmFsRnVuY3Rpb24gewogcHVibGljOgogICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNl
OwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVj
dHVyZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsKIAotICAgIHN0YXRpYyBXZWJBc3Nl
bWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBXZWJB
c3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZSopOworICAgIHN0YXRpYyDwnZSa8J2UovCdlJ/w
nZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtkNvbXBpbGVFcnJvckNvbnN0cnVjdG9yKiBj
cmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCd
lJ/wnZSp8J2UtkNvbXBpbGVFcnJvclByb3RvdHlwZSopOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAKICAgICBE
RUNMQVJFX0lORk87CiAKIHByb3RlY3RlZDoKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwg
V2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGUqKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0
aW9uKFZNJiwg8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZDb21w
aWxlRXJyb3JQcm90b3R5cGUqKTsKIAogcHJpdmF0ZToKLSAgICBXZWJBc3NlbWJseUNvbXBpbGVF
cnJvckNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7CisgICAg8J2UmvCdlKLwnZSf8J2UhPCd
lLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZDb21waWxlRXJyb3JDb25zdHJ1Y3RvcihWTSYsIFN0
cnVjdHVyZSopOwogICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlND
ZWxsKiwgQ29uc3RydWN0RGF0YSYpOwogICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShK
U0NlbGwqLCBDYWxsRGF0YSYpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlLmNw
cAppbmRleCAwNTIyZTFmLi43NDM3Yjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5
cGUuY3BwCkBAIC0zNSwzMSArMzUsMzEgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNvbnN0IENs
YXNzSW5mbyBXZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZTo6c19pbmZvID0geyAiV2Vi
QXNzZW1ibHkuQ29tcGlsZUVycm9yLnByb3RvdHlwZSIsICZCYXNlOjpzX2luZm8sICZwcm90b3R5
cGVUYWJsZVdlYkFzc2VtYmx5Q29tcGlsZUVycm9yLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFdlYkFz
c2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlKSB9OworY29uc3QgQ2xhc3NJbmZvIPCdlJrwnZSi
8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2Q29tcGlsZUVycm9yUHJvdG90eXBl
OjpzX2luZm8gPSB7ICJXZWJBc3NlbWJseS5Db21waWxlRXJyb3IucHJvdG90eXBlIiwgJkJhc2U6
OnNfaW5mbywgJnByb3RvdHlwZVRhYmxlV2ViQXNzZW1ibHlDb21waWxlRXJyb3IsIENSRUFURV9N
RVRIT0RfVEFCTEUo8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZD
b21waWxlRXJyb3JQcm90b3R5cGUpIH07CiAKLS8qIFNvdXJjZSBmb3IgV2ViQXNzZW1ibHlDb21w
aWxlRXJyb3JQcm90b3R5cGUubHV0LmgKKy8qIFNvdXJjZSBmb3Ig8J2UmvCdlKLwnZSf8J2UhPCd
lLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZDb21waWxlRXJyb3JQcm90b3R5cGUubHV0LmgKICBA
YmVnaW4gcHJvdG90eXBlVGFibGVXZWJBc3NlbWJseUNvbXBpbGVFcnJvcgogIEBlbmQKICAqLwog
Ci1XZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZSogV2ViQXNzZW1ibHlDb21waWxlRXJy
b3JQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCivwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtkNv
bXBpbGVFcnJvclByb3RvdHlwZSog8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf
8J2UqfCdlLZDb21waWxlRXJyb3JQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0gICAgYXV0byogb2JqZWN0ID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGU+KHZt
LmhlYXApKSBXZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsK
KyAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDzwnZSa8J2UovCd
lJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtkNvbXBpbGVFcnJvclByb3RvdHlwZT4o
dm0uaGVhcCkpIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2Q29t
cGlsZUVycm9yUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOwogICAgIG9iamVjdC0+ZmluaXNoQ3Jl
YXRpb24odm0pOwogICAgIHJldHVybiBvYmplY3Q7CiB9CiAKLVN0cnVjdHVyZSogV2ViQXNzZW1i
bHlDb21waWxlRXJyb3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorU3RydWN0dXJlKiDwnZSa
8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtkNvbXBpbGVFcnJvclByb3Rv
dHlwZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBwcm90b3R5cGUpCiB7CiAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBpbmZvKCkpOwogfQogCi12b2lkIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90
eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit2b2lkIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2U
sPCdlKLwnZSq8J2Un/CdlKnwnZS2Q29tcGlsZUVycm9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogfQogCi1XZWJBc3Nl
bWJseUNvbXBpbGVFcnJvclByb3RvdHlwZTo6V2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5
cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK/CdlJrwnZSi8J2Un/CdlITwnZSw8J2U
sPCdlKLwnZSq8J2Un/CdlKnwnZS2Q29tcGlsZUVycm9yUHJvdG90eXBlOjrwnZSa8J2UovCdlJ/w
nZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtkNvbXBpbGVFcnJvclByb3RvdHlwZShWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQogewog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlD
b21waWxlRXJyb3JQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlLmgKaW5kZXggZDMyOTY1MS4uMTdmMjM2YSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlDb21w
aWxlRXJyb3JQcm90b3R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZS5oCkBAIC0zMiwxMiArMzIsMTIgQEAKIAog
bmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBl
IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworY2xhc3Mg8J2UmvCdlKLwnZSf8J2UhPCdlLDw
nZSw8J2UovCdlKrwnZSf8J2UqfCdlLZDb21waWxlRXJyb3JQcm90b3R5cGUgOiBwdWJsaWMgSlNO
b25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJh
c2U7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3Ry
dWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOwogCi0gICAgc3RhdGljIFdlYkFz
c2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSopOworICAgIHN0YXRpYyDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2U
qvCdlJ/wnZSp8J2UtkNvbXBpbGVFcnJvclByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqKTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogCiAgICAgREVDTEFSRV9JTkZPOwpA
QCAtNDYsNyArNDYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYp
OwogCiBwcml2YXRlOgotICAgIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlKFZNJiwg
U3RydWN0dXJlKik7CisgICAg8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2U
qfCdlLZDb21waWxlRXJyb3JQcm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
V2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAppbmRleCBmYjcwODZiLi42OWVjNmVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNw
cApAQCAtNDcsMTMgKzQ3LDEzIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1jb25zdCBDbGFzc0lu
Zm8gV2ViQXNzZW1ibHlGdW5jdGlvbjo6c19pbmZvID0geyAiV2ViQXNzZW1ibHlGdW5jdGlvbiIs
ICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoV2ViQXNzZW1ibHlG
dW5jdGlvbikgfTsKK2NvbnN0IENsYXNzSW5mbyDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi
8J2UqvCdlJ/wnZSp8J2UtkZ1bmN0aW9uOjpzX2luZm8gPSB7ICLwnZSa8J2UovCdlJ/wnZSE8J2U
sPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0
ciwgQ1JFQVRFX01FVEhPRF9UQUJMRSjwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCd
lJ/wnZSp8J2UtkZ1bmN0aW9uKSB9OwogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxs8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2U
ovCdlKrwnZSf8J2UqfCdlLZGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
Ci0gICAgV2ViQXNzZW1ibHlGdW5jdGlvbiogd2FzbUZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxX
ZWJBc3NlbWJseUZ1bmN0aW9uKj4odm0sIGV4ZWMtPmpzQ2FsbGVlKCkpOworICAgIPCdlJrwnZSi
8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2RnVuY3Rpb24qIHdhc21GdW5jdGlv
biA9IGpzRHluYW1pY0Nhc3Q88J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2U
qfCdlLZGdW5jdGlvbio+KHZtLCBleGVjLT5qc0NhbGxlZSgpKTsKICAgICBpZiAoIXdhc21GdW5j
dGlvbikKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVj
LCBzY29wZSwgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJleHBlY3RlZCBhIFdlYkFzc2VtYmx5IGZ1
bmN0aW9uIiwgZGVmYXVsdFNvdXJjZUFwcGVuZGVyLCBydW50aW1lVHlwZUZvclZhbHVlKGV4ZWMt
PmpzQ2FsbGVlKCkpKSkpOwogICAgIFdhc206OlNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4
ID0gd2FzbUZ1bmN0aW9uLT5zaWduYXR1cmVJbmRleCgpOwpAQCAtNjYsMTQgKzY2LDE0IEBAIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxXZWJBc3NlbWJseUZ1bmN0aW9u
KEV4ZWNTdGF0ZSogZXhlYykKIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ0luZGV4ID0gMDsg
YXJnSW5kZXggPCBzaWduYXR1cmUuYXJndW1lbnRDb3VudCgpOyArK2FyZ0luZGV4KSB7CiAgICAg
ICAgICAgICBpZiAoc2lnbmF0dXJlLmFyZ3VtZW50KGFyZ0luZGV4KSA9PSBXYXNtOjpJNjQpIHsK
LSAgICAgICAgICAgICAgICBKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yKiBlcnJvciA9IEpTV2Vi
QXNzZW1ibHlSdW50aW1lRXJyb3I6OmNyZWF0ZShleGVjLCB2bSwgZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpLT5XZWJBc3NlbWJseVJ1bnRpbWVFcnJvclN0cnVjdHVyZSgpLAorICAgICAgICAg
ICAgICAgIEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZSdW50
aW1lRXJyb3IqIGVycm9yID0gSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/w
nZSp8J2UtlJ1bnRpbWVFcnJvcjo6Y3JlYXRlKGV4ZWMsIHZtLCBleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCktPvCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2UnVu
dGltZUVycm9yU3RydWN0dXJlKCksCiAgICAgICAgICAgICAgICAgICAgICJXZWJBc3NlbWJseSBm
dW5jdGlvbiB3aXRoIGFuIGk2NCBhcmd1bWVudCBjYW4ndCBiZSBjYWxsZWQgZnJvbSBKYXZhU2Ny
aXB0Iik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2Vw
dGlvbihleGVjLCBzY29wZSwgZXJyb3IpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAg
ICAgICAgIGlmIChzaWduYXR1cmUucmV0dXJuVHlwZSgpID09IFdhc206Okk2NCkgewotICAgICAg
ICAgICAgSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvciogZXJyb3IgPSBKU1dlYkFzc2VtYmx5UnVu
dGltZUVycm9yOjpjcmVhdGUoZXhlYywgdm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+
V2ViQXNzZW1ibHlSdW50aW1lRXJyb3JTdHJ1Y3R1cmUoKSwKKyAgICAgICAgICAgIEpT8J2UmvCd
lKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZSdW50aW1lRXJyb3IqIGVycm9y
ID0gSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtlJ1bnRpbWVF
cnJvcjo6Y3JlYXRlKGV4ZWMsIHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPvCdlJrw
nZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2UnVudGltZUVycm9yU3RydWN0
dXJlKCksCiAgICAgICAgICAgICAgICAgIldlYkFzc2VtYmx5IGZ1bmN0aW9uIHRoYXQgcmV0dXJu
cyBpNjQgY2FuJ3QgYmUgY2FsbGVkIGZyb20gSmF2YVNjcmlwdCIpOwogICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgZXJyb3IpKTsK
ICAgICAgICAgfQpAQCAtMTIwLDEwICsxMjAsMTAgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY2FsbFdlYkFzc2VtYmx5RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjKQogICAg
ICAgICBhcmdDb3VudCA9IGJveGVkQXJncy5zaXplKCk7CiAgICAgfQogCi0gICAgLy8gTm90ZTog
d2Ugc3BlY2lmaWNhbGx5IHVzZSB0aGUgV2ViQXNzZW1ibHlGdW5jdGlvbiBhcyB0aGUgY2FsbGVl
IHRvIGJlZ2luIHdpdGggaW4gdGhlIFByb3RvQ2FsbEZyYW1lLgorICAgIC8vIE5vdGU6IHdlIHNw
ZWNpZmljYWxseSB1c2UgdGhlIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/Cd
lKnwnZS2RnVuY3Rpb24gYXMgdGhlIGNhbGxlZSB0byBiZWdpbiB3aXRoIGluIHRoZSBQcm90b0Nh
bGxGcmFtZS4KICAgICAvLyBUaGUgcmVhc29uIGZvciB0aGlzIGlzIHRoYXQgY2FsbGluZyBpbnRv
IHRoZSBsbGludCBtYXkgc3RhY2sgb3ZlcmZsb3csIGFuZCB0aGUgc3RhY2sgb3ZlcmZsb3cKLSAg
ICAvLyBoYW5kbGVyIG1pZ2h0IHJlYWQgdGhlIGdsb2JhbCBvYmplY3QgZnJvbSB0aGUgY2FsbGVl
LiBUaGUgSlNXZWJBc3NlbWJseUNhbGxlZSBkb2Vzbid0IGhhdmUgYQotICAgIC8vIGdsb2JhbCBv
YmplY3QsIGJ1dCB0aGUgV2ViQXNzZW1ibHlGdW5jdGlvbiBkb2VzLgorICAgIC8vIGhhbmRsZXIg
bWlnaHQgcmVhZCB0aGUgZ2xvYmFsIG9iamVjdCBmcm9tIHRoZSBjYWxsZWUuIFRoZSBKU/CdlJrw
nZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2Q2FsbGVlIGRvZXNuJ3QgaGF2
ZSBhCisgICAgLy8gZ2xvYmFsIG9iamVjdCwgYnV0IHRoZSDwnZSa8J2UovCdlJ/wnZSE8J2UsPCd
lLDwnZSi8J2UqvCdlJ/wnZSp8J2UtkZ1bmN0aW9uIGRvZXMuCiAgICAgUHJvdG9DYWxsRnJhbWUg
cHJvdG9DYWxsRnJhbWU7CiAgICAgcHJvdG9DYWxsRnJhbWUuaW5pdChudWxscHRyLCB3YXNtRnVu
Y3Rpb24sIGZpcnN0QXJndW1lbnQsIGFyZ0NvdW50LCByZW1haW5pbmdBcmdzKTsKIApAQCAtMTM0
LDcgKzEzNCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxXZWJB
c3NlbWJseUZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYykKICAgICBBU1NFUlQod2FzbUZ1bmN0aW9u
LT5pbnN0YW5jZSgpID09IFdhc206OmxvYWRDb250ZXh0KHZtKSk7CiAgICAgRW5jb2RlZEpTVmFs
dWUgcmF3UmVzdWx0ID0gdm1FbnRyeVRvV2FzbSh3YXNtRnVuY3Rpb24tPmpzRW50cnlwb2ludCgp
LCAmdm0sICZwcm90b0NhbGxGcmFtZSk7CiAgICAgLy8gV2UgbmVlZCB0byBtYWtlIHN1cmUgdGhp
cyBpcyBpbiBhIHJlZ2lzdGVyIG9yIG9uIHRoZSBzdGFjayBzaW5jZSBpdCdzIHN0b3JlZCBpbiBW
ZWN0b3I8SlNWYWx1ZT4uCi0gICAgLy8gVGhpcyBwcm9iYWJseSBpc24ndCBzdHJpY3RseSBuZWNl
c3NhcnksIHNpbmNlIHRoZSBXZWJBc3NlbWJseUZ1bmN0aW9uKiBzaG91bGQga2VlcCB0aGUgaW5z
dGFuY2UKKyAgICAvLyBUaGlzIHByb2JhYmx5IGlzbid0IHN0cmljdGx5IG5lY2Vzc2FyeSwgc2lu
Y2UgdGhlIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2RnVuY3Rp
b24qIHNob3VsZCBrZWVwIHRoZSBpbnN0YW5jZQogICAgIC8vIGFsaXZlLiBCdXQgaXQncyBnb29k
IGh5Z2llbmUuCiAgICAgd2FzbUNvbnRleHQtPnVzZSgpOyAKICAgICBXYXNtOjpzdG9yZUNvbnRl
eHQodm0sIHByZXZXYXNtQ29udGV4dCk7CkBAIC0xNTgsMzEgKzE1OCwzMSBAQCBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbihFeGVjU3Rh
dGUqIGV4ZWMpCiAgICAgcmV0dXJuIEVuY29kZWRKU1ZhbHVlKCk7CiB9CiAKLVdlYkFzc2VtYmx5
RnVuY3Rpb24qIFdlYkFzc2VtYmx5RnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgU3RyaW5nJiBuYW1lLCBK
U1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmNlLCBKU1dlYkFzc2VtYmx5Q2FsbGVlKiBqc0Vu
dHJ5cG9pbnQsIEpTV2ViQXNzZW1ibHlDYWxsZWUqIHdhc21FbnRyeXBvaW50LCBXYXNtOjpTaWdu
YXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCkKK/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLw
nZSq8J2Un/CdlKnwnZS2RnVuY3Rpb24qIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq
8J2Un/CdlKnwnZS2RnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgU3RyaW5nJiBuYW1lLCBKU/CdlJrwnZSi
8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2SW5zdGFuY2UqIGluc3RhbmNlLCBK
U/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2Q2FsbGVlKiBqc0Vu
dHJ5cG9pbnQsIEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZD
YWxsZWUqIHdhc21FbnRyeXBvaW50LCBXYXNtOjpTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRl
eCkKIHsKLSAgICBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gdm0uZ2V0SG9zdEZ1bmN0
aW9uKGNhbGxXZWJBc3NlbWJseUZ1bmN0aW9uLCBOb0ludHJpbnNpYywgY2FsbEhvc3RGdW5jdGlv
bkFzQ29uc3RydWN0b3IsIG51bGxwdHIsIG5hbWUpOworICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGV4
ZWN1dGFibGUgPSB2bS5nZXRIb3N0RnVuY3Rpb24oY2FsbPCdlJrwnZSi8J2Un/CdlITwnZSw8J2U
sPCdlKLwnZSq8J2Un/CdlKnwnZS2RnVuY3Rpb24sIE5vSW50cmluc2ljLCBjYWxsSG9zdEZ1bmN0
aW9uQXNDb25zdHJ1Y3RvciwgbnVsbHB0ciwgbmFtZSk7CiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBnbG9iYWxPYmplY3QtPndlYkFzc2VtYmx5RnVuY3Rpb25TdHJ1Y3R1cmUoKTsKLSAgICBX
ZWJBc3NlbWJseUZ1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PFdlYkFzc2VtYmx5RnVuY3Rpb24+KHZtLmhlYXApKSBXZWJBc3NlbWJseUZ1bmN0aW9uKHZtLCBn
bG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgd2FzbUVudHJ5cG9pbnQsIHNpZ25hdHVyZUluZGV4KTsK
KyAgICDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtkZ1bmN0aW9u
KiBmdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPPCdlJrwnZSi8J2Un/CdlITw
nZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2RnVuY3Rpb24+KHZtLmhlYXApKSDwnZSa8J2UovCd
lJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtkZ1bmN0aW9uKHZtLCBnbG9iYWxPYmpl
Y3QsIHN0cnVjdHVyZSwgd2FzbUVudHJ5cG9pbnQsIHNpZ25hdHVyZUluZGV4KTsKICAgICBmdW5j
dGlvbi0+ZmluaXNoQ3JlYXRpb24odm0sIGV4ZWN1dGFibGUsIGxlbmd0aCwgbmFtZSwgaW5zdGFu
Y2UsIGpzRW50cnlwb2ludCwgd2FzbUVudHJ5cG9pbnQpOwotICAgIEFTU0VSVF9XSVRIX01FU1NB
R0UoIWZ1bmN0aW9uLT5pc0xhcmdlQWxsb2NhdGlvbigpLCAiV2ViQXNzZW1ibHlGdW5jdGlvbiBz
aG91bGQgYmUgYWxsb2NhdGVkIG5vdCBpbiBsYXJnZSBhbGxvY2F0aW9uIHNpbmNlIGl0IGlzIEpT
Q2FsbGVlLiIpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIWZ1bmN0aW9uLT5pc0xhcmdlQWxs
b2NhdGlvbigpLCAi8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZG
dW5jdGlvbiBzaG91bGQgYmUgYWxsb2NhdGVkIG5vdCBpbiBsYXJnZSBhbGxvY2F0aW9uIHNpbmNl
IGl0IGlzIEpTQ2FsbGVlLiIpOwogICAgIHJldHVybiBmdW5jdGlvbjsKIH0KIAotU3RydWN0dXJl
KiBXZWJBc3NlbWJseUZ1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK1N0cnVjdHVyZSog8J2UmvCd
lKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZGdW5jdGlvbjo6Y3JlYXRlU3Ry
dWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90
b3R5cGUpCiB7CiAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCk7Ci0gICAgcmV0dXJuIFN0cnVjdHVy
ZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oV2ViQXNzZW1i
bHlGdW5jdGlvblR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICByZXR1cm4gU3Ry
dWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyjwnZSa
8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtkZ1bmN0aW9uVHlwZSwgU3Ry
dWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogfQogCi1XZWJBc3NlbWJseUZ1bmN0aW9uOjpXZWJBc3Nl
bWJseUZ1bmN0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIEpTV2ViQXNzZW1ibHlDYWxsZWUqIHdhc21FbnRyeXBvaW50LCBXYXNt
OjpTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCkKK/CdlJrwnZSi8J2Un/CdlITwnZSw8J2U
sPCdlKLwnZSq8J2Un/CdlKnwnZS2RnVuY3Rpb246OvCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCd
lKLwnZSq8J2Un/CdlKnwnZS2RnVuY3Rpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDw
nZSi8J2UqvCdlJ/wnZSp8J2UtkNhbGxlZSogd2FzbUVudHJ5cG9pbnQsIFdhc206OlNpZ25hdHVy
ZUluZGV4IHNpZ25hdHVyZUluZGV4KQogICAgIDogQmFzZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1
Y3R1cmUpCiAgICAgLCBtX3dhc21FbnRyeVBvaW50Q29kZSh3YXNtRW50cnlwb2ludC0+ZW50cnlw
b2ludCgpKQogICAgICwgbV9zaWduYXR1cmVJbmRleChzaWduYXR1cmVJbmRleCkKIHsgfQogCi12
b2lkIFdlYkFzc2VtYmx5RnVuY3Rpb246OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90
VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQg8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrw
nZSf8J2UqfCdlLZGdW5jdGlvbjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQogewotICAgIFdlYkFzc2VtYmx5RnVuY3Rpb24qIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8V2ViQXNzZW1ibHlGdW5jdGlvbio+KGNlbGwpOworICAgIPCdlJrwnZSi8J2Un/CdlITw
nZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2RnVuY3Rpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZGdW5jdGlvbio+KGNl
bGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsK
ICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogICAgIHZpc2l0
b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1faW5zdGFuY2UpOwpAQCAtMTkwLDcgKzE5MCw3IEBAIHZv
aWQgV2ViQXNzZW1ibHlGdW5jdGlvbjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fd2FzbUVu
dHJ5cG9pbnQpOwogfQogCi12b2lkIFdlYkFzc2VtYmx5RnVuY3Rpb246OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSwgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgdW5zaWduZWQgbGVuZ3RoLCBj
b25zdCBTdHJpbmcmIG5hbWUsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogaW5zdGFuY2UsIEpTV2Vi
QXNzZW1ibHlDYWxsZWUqIGpzRW50cnlwb2ludCwgSlNXZWJBc3NlbWJseUNhbGxlZSogd2FzbUVu
dHJ5cG9pbnQpCit2b2lkIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnw
nZS2RnVuY3Rpb246OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgTmF0aXZlRXhlY3V0YWJsZSogZXhl
Y3V0YWJsZSwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG5hbWUsIEpT8J2UmvCdlKLw
nZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZJbnN0YW5jZSogaW5zdGFuY2UsIEpT
8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZDYWxsZWUqIGpzRW50
cnlwb2ludCwgSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtkNh
bGxlZSogd2FzbUVudHJ5cG9pbnQpCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIGV4
ZWN1dGFibGUsIGxlbmd0aCwgbmFtZSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5
RnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVu
Y3Rpb24uaAppbmRleCAwYzJhNGVkLi5jMWNhZGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5oCkBAIC0zNSwxMyArMzUsMTMg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEpTR2xvYmFsT2JqZWN0Owogc3RydWN0IFByb3Rv
Q2FsbEZyYW1lOwotY2xhc3MgV2ViQXNzZW1ibHlJbnN0YW5jZTsKK2NsYXNzIPCdlJrwnZSi8J2U
n/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2SW5zdGFuY2U7CiAKIG5hbWVzcGFjZSBC
MyB7CiBjbGFzcyBDb21waWxhdGlvbjsKIH0KIAotY2xhc3MgV2ViQXNzZW1ibHlGdW5jdGlvbiA6
IHB1YmxpYyBKU0Z1bmN0aW9uIHsKK2NsYXNzIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLw
nZSq8J2Un/CdlKnwnZS2RnVuY3Rpb24gOiBwdWJsaWMgSlNGdW5jdGlvbiB7CiBwdWJsaWM6CiAg
ICAgdHlwZWRlZiBKU0Z1bmN0aW9uIEJhc2U7CiAKQEAgLTQ5LDI5ICs0OSwyOSBAQCBwdWJsaWM6
CiAKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIFdlYkFzc2VtYmx5RnVuY3Rpb24qIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgdW5z
aWduZWQsIGNvbnN0IFN0cmluZyYsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSosIEpTV2ViQXNzZW1i
bHlDYWxsZWUqIGpzRW50cnlwb2ludCwgSlNXZWJBc3NlbWJseUNhbGxlZSogd2FzbUVudHJ5cG9p
bnQsIFdhc206OlNpZ25hdHVyZUluZGV4KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZGdW5jdGlvbiogY3Jl
YXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCwgY29uc3QgU3RyaW5nJiwgSlPwnZSa
8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utkluc3RhbmNlKiwgSlPwnZSa
8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtkNhbGxlZSoganNFbnRyeXBv
aW50LCBKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2Q2FsbGVl
KiB3YXNtRW50cnlwb2ludCwgV2FzbTo6U2lnbmF0dXJlSW5kZXgpOwogICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAK
LSAgICBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmNlKCkgY29uc3QgeyByZXR1cm4gbV9p
bnN0YW5jZS5nZXQoKTsgfQorICAgIEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrw
nZSf8J2UqfCdlLZJbnN0YW5jZSogaW5zdGFuY2UoKSBjb25zdCB7IHJldHVybiBtX2luc3RhbmNl
LmdldCgpOyB9CiAgICAgV2FzbTo6U2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXgoKSBjb25z
dCB7IHJldHVybiBtX3NpZ25hdHVyZUluZGV4OyB9CiAgICAgdm9pZCogd2FzbUVudHJ5cG9pbnQo
KSB7IHJldHVybiBtX3dhc21FbnRyeVBvaW50Q29kZTsgfQogICAgIHZvaWQqIGpzRW50cnlwb2lu
dCgpIHsgcmV0dXJuIG1fanNFbnRyeXBvaW50LT5lbnRyeXBvaW50KCk7IH0KIAotICAgIHN0YXRp
YyBwdHJkaWZmX3Qgb2Zmc2V0T2ZJbnN0YW5jZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihX
ZWJBc3NlbWJseUZ1bmN0aW9uLCBtX2luc3RhbmNlKTsgfQotICAgIHN0YXRpYyBwdHJkaWZmX3Qg
b2Zmc2V0T2ZXYXNtRW50cnlQb2ludENvZGUoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoV2Vi
QXNzZW1ibHlGdW5jdGlvbiwgbV93YXNtRW50cnlQb2ludENvZGUpOyB9CisgICAgc3RhdGljIHB0
cmRpZmZfdCBvZmZzZXRPZkluc3RhbmNlKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKPCdlJrw
nZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2RnVuY3Rpb24sIG1faW5zdGFu
Y2UpOyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZldhc21FbnRyeVBvaW50Q29kZSgp
IHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRijwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2U
qvCdlJ/wnZSp8J2UtkZ1bmN0aW9uLCBtX3dhc21FbnRyeVBvaW50Q29kZSk7IH0KIAogcHJvdGVj
dGVkOgogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3Im
KTsKIAotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBOYXRpdmVFeGVjdXRhYmxlKiwgdW5z
aWduZWQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG5hbWUsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSos
IEpTV2ViQXNzZW1ibHlDYWxsZWUqIGpzRW50cnlwb2ludCwgSlNXZWJBc3NlbWJseUNhbGxlZSog
d2FzbUVudHJ5cG9pbnQpOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBOYXRpdmVFeGVj
dXRhYmxlKiwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG5hbWUsIEpT8J2UmvCdlKLw
nZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZJbnN0YW5jZSosIEpT8J2UmvCdlKLw
nZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZDYWxsZWUqIGpzRW50cnlwb2ludCwg
SlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtkNhbGxlZSogd2Fz
bUVudHJ5cG9pbnQpOwogCiBwcml2YXRlOgotICAgIFdlYkFzc2VtYmx5RnVuY3Rpb24oVk0mLCBK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEpTV2ViQXNzZW1ibHlDYWxsZWUqLCBXYXNtOjpT
aWduYXR1cmVJbmRleCk7CisgICAg8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf
8J2UqfCdlLZGdW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgSlPwnZSa
8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtkNhbGxlZSosIFdhc206OlNp
Z25hdHVyZUluZGV4KTsKIAotICAgIFdyaXRlQmFycmllcjxKU1dlYkFzc2VtYmx5SW5zdGFuY2U+
IG1faW5zdGFuY2U7CisgICAgV3JpdGVCYXJyaWVyPEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw
8J2UovCdlKrwnZSf8J2UqfCdlLZJbnN0YW5jZT4gbV9pbnN0YW5jZTsKICAgICB2b2lkKiBtX3dh
c21FbnRyeVBvaW50Q29kZTsgLy8gQ2FjaGUgY29kZSBwb2ludGVyOiBhbGxvd3MgdGhlIHdhc20g
LT4gd2FzbSBzdHViIHRvIGRvIGEgc2luZ2xlIGxvYWQgYW5kIGp1bXAgaW5zdGVhZCBvZiBoYXZp
bmcgZGVwZW5kZW50IGxvYWRzLgotICAgIFdyaXRlQmFycmllcjxKU1dlYkFzc2VtYmx5Q2FsbGVl
PiBtX2pzRW50cnlwb2ludDsKLSAgICBXcml0ZUJhcnJpZXI8SlNXZWJBc3NlbWJseUNhbGxlZT4g
bV93YXNtRW50cnlwb2ludDsKKyAgICBXcml0ZUJhcnJpZXI8SlPwnZSa8J2UovCdlJ/wnZSE8J2U
sPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtkNhbGxlZT4gbV9qc0VudHJ5cG9pbnQ7CisgICAgV3Jp
dGVCYXJyaWVyPEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZD
YWxsZWU+IG1fd2FzbUVudHJ5cG9pbnQ7CiAgICAgLy8gSXQncyBzYWZlIHRvIGp1c3QgaG9sZCB0
aGUgcmF3IHNpZ25hdHVyZUluZGV4IGJlY2F1c2Ugd2UgaGF2ZSBhIHJlZmVyZW5jZQogICAgIC8v
IHRvIG91ciBJbnN0YW5jZSwgd2hpY2ggcG9pbnRzIHRvIHRoZSBNb2R1bGUgdGhhdCBleHBvcnRl
ZCB1cywgd2hpY2gKICAgICAvLyBlbnN1cmVzIHRoYXQgdGhlIGFjdHVhbCBTaWduYXR1cmUgZG9l
c24ndCBnZXQgZGVhbGxvY2F0ZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmNwcAppbmRl
eCAwNDFkZDM1Li5lMDdlNDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5jcHAKQEAg
LTQ3LDIyICs0NywyMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotY29uc3QgQ2xhc3NJbmZvIFdl
YkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFz
ZTo6c19pbmZvLCAmY29uc3RydWN0b3JUYWJsZVdlYkFzc2VtYmx5SW5zdGFuY2UsIENSRUFURV9N
RVRIT0RfVEFCTEUoV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yKSB9OworY29uc3QgQ2xh
c3NJbmZvIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2SW5zdGFu
Y2VDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCAmY29u
c3RydWN0b3JUYWJsZVdlYkFzc2VtYmx5SW5zdGFuY2UsIENSRUFURV9NRVRIT0RfVEFCTEUo8J2U
mvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZJbnN0YW5jZUNvbnN0cnVj
dG9yKSB9OwogCi0vKiBTb3VyY2UgZm9yIFdlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5s
dXQuaAorLyogU291cmNlIGZvciDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/w
nZSp8J2Utkluc3RhbmNlQ29uc3RydWN0b3IubHV0LmgKICBAYmVnaW4gY29uc3RydWN0b3JUYWJs
ZVdlYkFzc2VtYmx5SW5zdGFuY2UKICBAZW5kCiAgKi8KIAogdXNpbmcgV2FzbTo6UGxhbjsKIAot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJs
eUluc3RhbmNlKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNvbnN0cnVjdEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2U
qfCdlLZJbnN0YW5jZShFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgYXV0byYgdm0gPSBleGVjLT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8v
IElmIG1vZHVsZU9iamVjdCBpcyBub3QgYSBXZWJBc3NlbWJseS5Nb2R1bGUgaW5zdGFuY2UsIGEg
VHlwZUVycm9yIGlzIHRocm93bi4KLSAgICBKU1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1bGUgPSBq
c0R5bmFtaWNDYXN0PEpTV2ViQXNzZW1ibHlNb2R1bGUqPih2bSwgZXhlYy0+YXJndW1lbnQoMCkp
OworICAgIEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZNb2R1
bGUqIG1vZHVsZSA9IGpzRHluYW1pY0Nhc3Q8SlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi
8J2UqvCdlJ/wnZSp8J2Utk1vZHVsZSo+KHZtLCBleGVjLT5hcmd1bWVudCgwKSk7CiAgICAgaWYg
KCFtb2R1bGUpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24o
ZXhlYywgc2NvcGUsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoImZpcnN0IGFy
Z3VtZW50IHRvIFdlYkFzc2VtYmx5Lkluc3RhbmNlIG11c3QgYmUgYSBXZWJBc3NlbWJseS5Nb2R1
bGUiKSwgZGVmYXVsdFNvdXJjZUFwcGVuZGVyLCBydW50aW1lVHlwZUZvclZhbHVlKGV4ZWMtPmFy
Z3VtZW50KDApKSkpKTsKIApAQCAtNzIsMTAgKzcyLDEwIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlJbnN0YW5jZShFeGVjU3RhdGUq
IGV4CiAgICAgaWYgKCFpbXBvcnRBcmd1bWVudC5pc1VuZGVmaW5lZCgpICYmICFpbXBvcnRPYmpl
Y3QpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywg
c2NvcGUsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoInNlY29uZCBhcmd1bWVu
dCB0byBXZWJBc3NlbWJseS5JbnN0YW5jZSBtdXN0IGJlIHVuZGVmaW5lZCBvciBhbiBPYmplY3Qi
KSwgZGVmYXVsdFNvdXJjZUFwcGVuZGVyLCBydW50aW1lVHlwZUZvclZhbHVlKGltcG9ydEFyZ3Vt
ZW50KSkpKTsKICAgICAKLSAgICBTdHJ1Y3R1cmUqIGluc3RhbmNlU3RydWN0dXJlID0gSW50ZXJu
YWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0
KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+V2ViQXNzZW1ibHlJbnN0YW5jZVN0cnVj
dHVyZSgpKTsKKyAgICBTdHJ1Y3R1cmUqIGluc3RhbmNlU3RydWN0dXJlID0gSW50ZXJuYWxGdW5j
dGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCksIGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCd
lKrwnZSf8J2UqfCdlLZJbnN0YW5jZVN0cnVjdHVyZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOwogCi0gICAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSA9
IEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6Y3JlYXRlKHZtLCBleGVjLCBtb2R1bGUsIGltcG9ydE9i
amVjdCwgaW5zdGFuY2VTdHJ1Y3R1cmUpOworICAgIEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw
8J2UovCdlKrwnZSf8J2UqfCdlLZJbnN0YW5jZSogaW5zdGFuY2UgPSBKU/CdlJrwnZSi8J2Un/Cd
lITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2SW5zdGFuY2U6OmNyZWF0ZSh2bSwgZXhlYywg
bW9kdWxlLCBpbXBvcnRPYmplY3QsIGluc3RhbmNlU3RydWN0dXJlKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgLy8gVGhlcmUgYXJlIHRocmVlIHBvc3NpYmxl
IGNhc2VzOgpAQCAtMTAyLDUyICsxMDIsNTIgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJseUluc3RhbmNlKEV4ZWNTdGF0ZSogZXgKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGluc3RhbmNlKTsKIH0KIAotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEpTV2ViQXNzZW1ibHlJbnN0YW5jZShFeGVjU3RhdGUq
IGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSlPwnZSa8J2U
ovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utkluc3RhbmNlKEV4ZWNTdGF0ZSog
ZXhlYykKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29u
c3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJX
ZWJBc3NlbWJseS5JbnN0YW5jZSIpKTsKIH0KIAotV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVj
dG9yKiBXZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlKiB0aGlzUHJvdG90
eXBlKQor8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZJbnN0YW5j
ZUNvbnN0cnVjdG9yKiDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2U
tkluc3RhbmNlQ29uc3RydWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
LCDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utkluc3RhbmNlUHJv
dG90eXBlKiB0aGlzUHJvdG90eXBlKQogewotICAgIGF1dG8qIGNvbnN0cnVjdG9yID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yPih2bS5o
ZWFwKSkgV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAg
IGF1dG8qIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw88J2UmvCdlKLw
nZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZJbnN0YW5jZUNvbnN0cnVjdG9yPih2
bS5oZWFwKSkg8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZJbnN0
YW5jZUNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOwogICAgIGNvbnN0cnVjdG9yLT5maW5pc2hD
cmVhdGlvbih2bSwgdGhpc1Byb3RvdHlwZSk7CiAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwogfQog
Ci1TdHJ1Y3R1cmUqIFdlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0
dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5
cGUpCitTdHJ1Y3R1cmUqIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnw
nZS2SW5zdGFuY2VDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiB7CiAgICAgcmV0dXJuIFN0
cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2Jq
ZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogfQogCi12b2lkIFdlYkFzc2VtYmx5
SW5zdGFuY2VDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBXZWJBc3NlbWJseUlu
c3RhbmNlUHJvdG90eXBlKiBwcm90b3R5cGUpCit2b2lkIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2U
sPCdlKLwnZSq8J2Un/CdlKnwnZS2SW5zdGFuY2VDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utkluc3Rh
bmNlUHJvdG90eXBlKiBwcm90b3R5cGUpCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0s
IEFTQ0lJTGl0ZXJhbCgiSW5zdGFuY2UiKSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBEb250RW51bSB8
IERvbnREZWxldGUgfCBSZWFkT25seSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9u
dEVudW0gfCBEb250RGVsZXRlKTsKIH0KIAotV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9y
OjpXZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKK/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2SW5zdGFu
Y2VDb25zdHJ1Y3Rvcjo68J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCd
lLZJbnN0YW5jZUNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAg
OiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCiB7CiB9CiAKLUNvbnN0cnVjdFR5cGUgV2ViQXNzZW1ibHlJ
bnN0YW5jZUNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERh
dGEmIGNvbnN0cnVjdERhdGEpCitDb25zdHJ1Y3RUeXBlIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2U
sPCdlKLwnZSq8J2Un/CdlKnwnZS2SW5zdGFuY2VDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0
YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQogewotICAgIGNvbnN0cnVj
dERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0SlNXZWJBc3NlbWJseUluc3RhbmNlOwor
ICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0SlPwnZSa8J2UovCd
lJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utkluc3RhbmNlOwogICAgIHJldHVybiBD
b25zdHJ1Y3RUeXBlOjpIb3N0OwogfQogCi1DYWxsVHlwZSBXZWJBc3NlbWJseUluc3RhbmNlQ29u
c3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBjYWxsRGF0YSkKK0NhbGxU
eXBlIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2SW5zdGFuY2VD
b25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQogewot
ICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxKU1dlYkFzc2VtYmx5SW5zdGFuY2U7
CisgICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY2FsbEpT8J2UmvCdlKLwnZSf8J2UhPCd
lLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZJbnN0YW5jZTsKICAgICByZXR1cm4gQ2FsbFR5cGU6
Okhvc3Q7CiB9CiAKLXZvaWQgV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yOjp2aXNpdENo
aWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIPCdlJrwnZSi
8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2SW5zdGFuY2VDb25zdHJ1Y3Rvcjo6
dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAg
IGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8V2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9y
Kj4oY2VsbCk7CisgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDzwnZSa8J2UovCdlJ/wnZSE
8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utkluc3RhbmNlQ29uc3RydWN0b3IqPihjZWxsKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAg
QmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1
Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5j
ZUNvbnN0cnVjdG9yLmgKaW5kZXggMDE1ZmNjYi4uYWJiOGMyMCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNv
bnN0cnVjdG9yLmgKQEAgLTMyLDI3ICszMiwyNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xh
c3MgSlNXZWJBc3NlbWJseUluc3RhbmNlOwotY2xhc3MgSlNXZWJBc3NlbWJseU1vZHVsZTsKLWNs
YXNzIFdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGU7CitjbGFzcyBKU/CdlJrwnZSi8J2Un/Cd
lITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2SW5zdGFuY2U7CitjbGFzcyBKU/CdlJrwnZSi
8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2TW9kdWxlOworY2xhc3Mg8J2UmvCd
lKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZJbnN0YW5jZVByb3RvdHlwZTsK
IAotY2xhc3MgV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFs
RnVuY3Rpb24geworY2xhc3Mg8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2U
qfCdlLZJbnN0YW5jZUNvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewogcHVi
bGljOgogICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOwogICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3Rh
dGljUHJvcGVydHlUYWJsZTsKIAotICAgIHN0YXRpYyBXZWJBc3NlbWJseUluc3RhbmNlQ29uc3Ry
dWN0b3IqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIFdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5
cGUqKTsKKyAgICBzdGF0aWMg8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2U
qfCdlLZJbnN0YW5jZUNvbnN0cnVjdG9yKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCDwnZSa8J2U
ovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utkluc3RhbmNlUHJvdG90eXBlKik7
CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmpl
Y3QqLCBKU1ZhbHVlKTsKIAogICAgIERFQ0xBUkVfSU5GTzsKIAotICAgIHN0YXRpYyBKU1dlYkFz
c2VtYmx5SW5zdGFuY2UqIGNyZWF0ZUluc3RhbmNlKEV4ZWNTdGF0ZSosIEpTV2ViQXNzZW1ibHlN
b2R1bGUqLCBKU09iamVjdCogaW1wb3J0T2JqZWN0LCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMg
SlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utkluc3RhbmNlKiBj
cmVhdGVJbnN0YW5jZShFeGVjU3RhdGUqLCBKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLw
nZSq8J2Un/CdlKnwnZS2TW9kdWxlKiwgSlNPYmplY3QqIGltcG9ydE9iamVjdCwgU3RydWN0dXJl
Kik7CiAKIHByb3RlY3RlZDoKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgV2ViQXNzZW1i
bHlJbnN0YW5jZVByb3RvdHlwZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCDwnZSa
8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utkluc3RhbmNlUHJvdG90eXBl
Kik7CiAKIHByaXZhdGU6Ci0gICAgV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yKFZNJiwg
U3RydWN0dXJlKik7CisgICAg8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2U
qfCdlLZJbnN0YW5jZUNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7CiAgICAgc3RhdGljIENv
bnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7CiAg
ICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CiAgICAg
c3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZVBy
b3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUlu
c3RhbmNlUHJvdG90eXBlLmNwcAppbmRleCA0Nzc3YTYxLi41NGJiN2UzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3Rh
bmNlUHJvdG90eXBlLmNwcApAQCAtMzUsMzEgKzM1LDMxIEBACiAKIG5hbWVzcGFjZSBKU0Mgewog
Ci1jb25zdCBDbGFzc0luZm8gV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZTo6c19pbmZvID0g
eyAiV2ViQXNzZW1ibHkuSW5zdGFuY2UucHJvdG90eXBlIiwgJkJhc2U6OnNfaW5mbywgJnByb3Rv
dHlwZVRhYmxlV2ViQXNzZW1ibHlJbnN0YW5jZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShXZWJBc3Nl
bWJseUluc3RhbmNlUHJvdG90eXBlKSB9OworY29uc3QgQ2xhc3NJbmZvIPCdlJrwnZSi8J2Un/Cd
lITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2SW5zdGFuY2VQcm90b3R5cGU6OnNfaW5mbyA9
IHsgIldlYkFzc2VtYmx5Lkluc3RhbmNlLnByb3RvdHlwZSIsICZCYXNlOjpzX2luZm8sICZwcm90
b3R5cGVUYWJsZVdlYkFzc2VtYmx5SW5zdGFuY2UsIENSRUFURV9NRVRIT0RfVEFCTEUo8J2UmvCd
lKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZJbnN0YW5jZVByb3RvdHlwZSkg
fTsKIAotLyogU291cmNlIGZvciBXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmx1dC5oCisv
KiBTb3VyY2UgZm9yIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2
SW5zdGFuY2VQcm90b3R5cGUubHV0LmgKICBAYmVnaW4gcHJvdG90eXBlVGFibGVXZWJBc3NlbWJs
eUluc3RhbmNlCiAgQGVuZAogICovCiAKLVdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUqIFdl
YkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCivwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2U
qvCdlJ/wnZSp8J2Utkluc3RhbmNlUHJvdG90eXBlKiDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDw
nZSi8J2UqvCdlJ/wnZSp8J2Utkluc3RhbmNlUHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewotICAgIGF1dG8qIG9iamVjdCA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGU+
KHZtLmhlYXApKSBXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOwor
ICAgIGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPPCdlJrwnZSi8J2U
n/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2SW5zdGFuY2VQcm90b3R5cGU+KHZtLmhl
YXApKSDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utkluc3RhbmNl
UHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOwogICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0p
OwogICAgIHJldHVybiBvYmplY3Q7CiB9CiAKLVN0cnVjdHVyZSogV2ViQXNzZW1ibHlJbnN0YW5j
ZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCitTdHJ1Y3R1cmUqIPCdlJrwnZSi8J2Un/CdlITw
nZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2SW5zdGFuY2VQcm90b3R5cGU6OmNyZWF0ZVN0cnVj
dHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90
eXBlKQogewogICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBw
cm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsK
IH0KIAotdm9pZCBXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0pCit2b2lkIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2
SW5zdGFuY2VQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBCYXNlOjpm
aW5pc2hDcmVhdGlvbih2bSk7CiB9CiAKLVdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGU6Oldl
YkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
K/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2SW5zdGFuY2VQcm90
b3R5cGU6OvCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2SW5zdGFu
Y2VQcm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEJhc2Uodm0s
IHN0cnVjdHVyZSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUuaAppbmRleCBlYmRiZTk4Li5k
ZGJlN2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3Nl
bWJseUluc3RhbmNlUHJvdG90eXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5oCkBAIC0zMiwxMiArMzIsMTIgQEAKIAog
bmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIFdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUgOiBw
dWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitjbGFzcyDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDw
nZSi8J2UqvCdlJ/wnZSp8J2Utkluc3RhbmNlUHJvdG90eXBlIDogcHVibGljIEpTTm9uRmluYWxP
YmplY3QgewogcHVibGljOgogICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOwogICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZs
YWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsKIAotICAgIHN0YXRpYyBXZWJBc3NlbWJseUlu
c3RhbmNlUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSop
OworICAgIHN0YXRpYyDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2U
tkluc3RhbmNlUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSopOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFs
T2JqZWN0KiwgSlNWYWx1ZSk7CiAKICAgICBERUNMQVJFX0lORk87CkBAIC00Niw3ICs0Niw3IEBA
IHByb3RlY3RlZDoKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CiAKIHByaXZhdGU6Ci0g
ICAgV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOworICAgIPCd
lJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2SW5zdGFuY2VQcm90b3R5
cGUoVk0mLCBTdHJ1Y3R1cmUqKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlMaW5rRXJyb3JDb25z
dHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUxp
bmtFcnJvckNvbnN0cnVjdG9yLmNwcAppbmRleCA3YWNjMmFiLi5hODk1ZTk5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0
cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eUxpbmtFcnJvckNvbnN0cnVjdG9yLmNwcApAQCAtMzcsNjMgKzM3LDYzIEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCi1jb25zdCBDbGFzc0luZm8gV2ViQXNzZW1ibHlMaW5rRXJyb3JDb25zdHJ1Y3Rv
cjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCAmY29uc3RydWN0b3JUYWJs
ZVdlYkFzc2VtYmx5TGlua0Vycm9yLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFdlYkFzc2VtYmx5TGlu
a0Vycm9yQ29uc3RydWN0b3IpIH07Citjb25zdCBDbGFzc0luZm8g8J2UmvCdlKLwnZSf8J2UhPCd
lLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZMaW5rRXJyb3JDb25zdHJ1Y3Rvcjo6c19pbmZvID0g
eyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCAmY29uc3RydWN0b3JUYWJsZVdlYkFzc2VtYmx5
TGlua0Vycm9yLCBDUkVBVEVfTUVUSE9EX1RBQkxFKPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCd
lKLwnZSq8J2Un/CdlKnwnZS2TGlua0Vycm9yQ29uc3RydWN0b3IpIH07CiAKLS8qIFNvdXJjZSBm
b3IgV2ViQXNzZW1ibHlMaW5rRXJyb3JDb25zdHJ1Y3Rvci5sdXQuaAorLyogU291cmNlIGZvciDw
nZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtkxpbmtFcnJvckNvbnN0
cnVjdG9yLmx1dC5oCiAgQGJlZ2luIGNvbnN0cnVjdG9yVGFibGVXZWJBc3NlbWJseUxpbmtFcnJv
cgogIEBlbmQKICAqLwogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25z
dHJ1Y3RKU1dlYkFzc2VtYmx5TGlua0Vycm9yKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDw
nZSw8J2UovCdlKrwnZSf8J2UqfCdlLZMaW5rRXJyb3IoRXhlY1N0YXRlKiBleGVjKQogewogICAg
IGF1dG8mIHZtID0gZXhlYy0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICAgSlNWYWx1ZSBtZXNzYWdlID0gZXhlYy0+YXJndW1lbnQoMCk7Ci0gICAg
YXV0byogc3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1
cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCksIGFzSW50ZXJuYWxGdW5jdGlvbihleGVjLT5qc0Nh
bGxlZSgpKS0+Z2xvYmFsT2JqZWN0KCktPldlYkFzc2VtYmx5TGlua0Vycm9yU3RydWN0dXJlKCkp
OworICAgIGF1dG8qIHN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNz
U3RydWN0dXJlKGV4ZWMsIGV4ZWMtPm5ld1RhcmdldCgpLCBhc0ludGVybmFsRnVuY3Rpb24oZXhl
Yy0+anNDYWxsZWUoKSktPmdsb2JhbE9iamVjdCgpLT7wnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDw
nZSi8J2UqvCdlJ/wnZSp8J2UtkxpbmtFcnJvclN0cnVjdHVyZSgpKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEpTV2ViQXNzZW1ibHlMaW5rRXJyb3I6OmNyZWF0ZShleGVjLCB2bSwgc3RydWN0dXJl
LCBtZXNzYWdlKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU/CdlJrwnZSi8J2Un/Cd
lITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2TGlua0Vycm9yOjpjcmVhdGUoZXhlYywgdm0s
IHN0cnVjdHVyZSwgbWVzc2FnZSkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjYWxsSlNXZWJBc3NlbWJseUxpbmtFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSlPwnZSa8J2UovCdlJ/wnZSE8J2U
sPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtkxpbmtFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCiB7CiAg
ICAgSlNWYWx1ZSBtZXNzYWdlID0gZXhlYy0+YXJndW1lbnQoMCk7Ci0gICAgU3RydWN0dXJlKiBl
cnJvclN0cnVjdHVyZSA9IGFzSW50ZXJuYWxGdW5jdGlvbihleGVjLT5qc0NhbGxlZSgpKS0+Z2xv
YmFsT2JqZWN0KCktPldlYkFzc2VtYmx5TGlua0Vycm9yU3RydWN0dXJlKCk7CisgICAgU3RydWN0
dXJlKiBlcnJvclN0cnVjdHVyZSA9IGFzSW50ZXJuYWxGdW5jdGlvbihleGVjLT5qc0NhbGxlZSgp
KS0+Z2xvYmFsT2JqZWN0KCktPvCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/Cd
lKnwnZS2TGlua0Vycm9yU3RydWN0dXJlKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShF
cnJvckluc3RhbmNlOjpjcmVhdGUoZXhlYywgZXJyb3JTdHJ1Y3R1cmUsIG1lc3NhZ2UsIG51bGxw
dHIsIFR5cGVOb3RoaW5nLCBmYWxzZSkpOwogfQogCi1XZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0
cnVjdG9yKiBXZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgV2ViQXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5cGUqIHRoaXNQ
cm90b3R5cGUpCivwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utkxp
bmtFcnJvckNvbnN0cnVjdG9yKiDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/w
nZSp8J2UtkxpbmtFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwg8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZMaW5r
RXJyb3JQcm90b3R5cGUqIHRoaXNQcm90b3R5cGUpCiB7Ci0gICAgYXV0byogY29uc3RydWN0b3Ig
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxXZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0cnVj
dG9yPih2bS5oZWFwKSkgV2ViQXNzZW1ibHlMaW5rRXJyb3JDb25zdHJ1Y3Rvcih2bSwgc3RydWN0
dXJlKTsKKyAgICBhdXRvKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2TGlua0Vycm9yQ29u
c3RydWN0b3I+KHZtLmhlYXApKSDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/w
nZSp8J2UtkxpbmtFcnJvckNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOwogICAgIGNvbnN0cnVj
dG9yLT5maW5pc2hDcmVhdGlvbih2bSwgdGhpc1Byb3RvdHlwZSk7CiAgICAgcmV0dXJuIGNvbnN0
cnVjdG9yOwogfQogCi1TdHJ1Y3R1cmUqIFdlYkFzc2VtYmx5TGlua0Vycm9yQ29uc3RydWN0b3I6
OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgcHJvdG90eXBlKQorU3RydWN0dXJlKiDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi
8J2UqvCdlJ/wnZSp8J2UtkxpbmtFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKIHsK
ICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBl
LCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiB9CiAKLXZv
aWQgV2ViQXNzZW1ibHlMaW5rRXJyb3JDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBXZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlwZSogcHJvdG90eXBlKQordm9pZCDwnZSa8J2U
ovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtkxpbmtFcnJvckNvbnN0cnVjdG9y
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq
8J2Un/CdlKnwnZS2TGlua0Vycm9yUHJvdG90eXBlKiBwcm90b3R5cGUpCiB7CiAgICAgQmFzZTo6
ZmluaXNoQ3JlYXRpb24odm0sIEFTQ0lJTGl0ZXJhbCgiTGlua0Vycm9yIikpOwogICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHBy
b3RvdHlwZSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOwogICAgIHB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVy
KDEpLCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7CiB9CiAKLVdlYkFzc2VtYmx5
TGlua0Vycm9yQ29uc3RydWN0b3I6OldlYkFzc2VtYmx5TGlua0Vycm9yQ29uc3RydWN0b3IoVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLw
nZSq8J2Un/CdlKnwnZS2TGlua0Vycm9yQ29uc3RydWN0b3I6OvCdlJrwnZSi8J2Un/CdlITwnZSw
8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2TGlua0Vycm9yQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKIHsKIH0KIAotQ29u
c3RydWN0VHlwZSBXZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3RE
YXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCitDb25zdHJ1Y3RUeXBl
IPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2TGlua0Vycm9yQ29u
c3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYgY29uc3Ry
dWN0RGF0YSkKIHsKLSAgICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVj
dEpTV2ViQXNzZW1ibHlMaW5rRXJyb3I7CisgICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rp
b24gPSBjb25zdHJ1Y3RKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnw
nZS2TGlua0Vycm9yOwogICAgIHJldHVybiBDb25zdHJ1Y3RUeXBlOjpIb3N0OwogfQogCi1DYWxs
VHlwZSBXZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YShKU0NlbGwq
LCBDYWxsRGF0YSYgY2FsbERhdGEpCitDYWxsVHlwZSDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDw
nZSi8J2UqvCdlJ/wnZSp8J2UtkxpbmtFcnJvckNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YShKU0Nl
bGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCiB7Ci0gICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9u
ID0gY2FsbEpTV2ViQXNzZW1ibHlMaW5rRXJyb3I7CisgICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0
aW9uID0gY2FsbEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZM
aW5rRXJyb3I7CiAgICAgcmV0dXJuIENhbGxUeXBlOjpIb3N0OwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0cnVj
dG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUxpbmtFcnJv
ckNvbnN0cnVjdG9yLmgKaW5kZXggYzcwMGM2My4uYmM5ZDdkMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlMaW5rRXJyb3JDb25zdHJ1Y3Rvci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TGlua0Vycm9y
Q29uc3RydWN0b3IuaApAQCAtMzIsMjMgKzMyLDIzIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1j
bGFzcyBXZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlwZTsKK2NsYXNzIPCdlJrwnZSi8J2Un/Cd
lITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2TGlua0Vycm9yUHJvdG90eXBlOwogCi1jbGFz
cyBXZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rp
b24geworY2xhc3Mg8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZM
aW5rRXJyb3JDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKIHB1YmxpYzoK
ICAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1By
b3BlcnR5VGFibGU7CiAKLSAgICBzdGF0aWMgV2ViQXNzZW1ibHlMaW5rRXJyb3JDb25zdHJ1Y3Rv
ciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgV2ViQXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5cGUq
KTsKKyAgICBzdGF0aWMg8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCd
lLZMaW5rRXJyb3JDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwg8J2UmvCdlKLw
nZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZMaW5rRXJyb3JQcm90b3R5cGUqKTsK
ICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVj
dCosIEpTVmFsdWUpOwogCiAgICAgREVDTEFSRV9JTkZPOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdm9p
ZCBmaW5pc2hDcmVhdGlvbihWTSYsIFdlYkFzc2VtYmx5TGlua0Vycm9yUHJvdG90eXBlKik7Cisg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLw
nZSq8J2Un/CdlKnwnZS2TGlua0Vycm9yUHJvdG90eXBlKik7CiAKIHByaXZhdGU6Ci0gICAgV2Vi
QXNzZW1ibHlMaW5rRXJyb3JDb25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSopOworICAgIPCdlJrw
nZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2TGlua0Vycm9yQ29uc3RydWN0
b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKICAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1
Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0
Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlwZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlw
ZS5jcHAKaW5kZXggNjg2MDYyNC4uOTY1MGZiMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5cGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TGlua0Vycm9yUHJvdG90eXBl
LmNwcApAQCAtMzUsMzEgKzM1LDMxIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1jb25zdCBDbGFz
c0luZm8gV2ViQXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5cGU6OnNfaW5mbyA9IHsgIldlYkFzc2Vt
Ymx5LkxpbmtFcnJvci5wcm90b3R5cGUiLCAmQmFzZTo6c19pbmZvLCAmcHJvdG90eXBlVGFibGVX
ZWJBc3NlbWJseUxpbmtFcnJvciwgQ1JFQVRFX01FVEhPRF9UQUJMRShXZWJBc3NlbWJseUxpbmtF
cnJvclByb3RvdHlwZSkgfTsKK2NvbnN0IENsYXNzSW5mbyDwnZSa8J2UovCdlJ/wnZSE8J2UsPCd
lLDwnZSi8J2UqvCdlJ/wnZSp8J2UtkxpbmtFcnJvclByb3RvdHlwZTo6c19pbmZvID0geyAiV2Vi
QXNzZW1ibHkuTGlua0Vycm9yLnByb3RvdHlwZSIsICZCYXNlOjpzX2luZm8sICZwcm90b3R5cGVU
YWJsZVdlYkFzc2VtYmx5TGlua0Vycm9yLCBDUkVBVEVfTUVUSE9EX1RBQkxFKPCdlJrwnZSi8J2U
n/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2TGlua0Vycm9yUHJvdG90eXBlKSB9Owog
Ci0vKiBTb3VyY2UgZm9yIFdlYkFzc2VtYmx5TGlua0Vycm9yUHJvdG90eXBlLmx1dC5oCisvKiBT
b3VyY2UgZm9yIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2TGlu
a0Vycm9yUHJvdG90eXBlLmx1dC5oCiAgQGJlZ2luIHByb3RvdHlwZVRhYmxlV2ViQXNzZW1ibHlM
aW5rRXJyb3IKICBAZW5kCiAgKi8KIAotV2ViQXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5cGUqIFdl
YkFzc2VtYmx5TGlua0Vycm9yUHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSogc3RydWN0dXJlKQor8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCd
lKrwnZSf8J2UqfCdlLZMaW5rRXJyb3JQcm90b3R5cGUqIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2U
sPCdlKLwnZSq8J2Un/CdlKnwnZS2TGlua0Vycm9yUHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewotICAgIGF1dG8qIG9iamVj
dCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5TGlua0Vycm9yUHJvdG90
eXBlPih2bS5oZWFwKSkgV2ViQXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5cGUodm0sIHN0cnVjdHVy
ZSk7CisgICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw88J2UmvCd
lKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZMaW5rRXJyb3JQcm90b3R5cGU+
KHZtLmhlYXApKSDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utkxp
bmtFcnJvclByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKICAgICBvYmplY3QtPmZpbmlzaENyZWF0
aW9uKHZtKTsKICAgICByZXR1cm4gb2JqZWN0OwogfQogCi1TdHJ1Y3R1cmUqIFdlYkFzc2VtYmx5
TGlua0Vycm9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK1N0cnVjdHVyZSog8J2UmvCdlKLw
nZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZMaW5rRXJyb3JQcm90b3R5cGU6OmNy
ZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgcHJvdG90eXBlKQogewogICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwg
aW5mbygpKTsKIH0KIAotdm9pZCBXZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlwZTo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtKQordm9pZCDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCd
lJ/wnZSp8J2UtkxpbmtFcnJvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogewog
ICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKIH0KIAotV2ViQXNzZW1ibHlMaW5rRXJyb3JQ
cm90b3R5cGU6OldlYkFzc2VtYmx5TGlua0Vycm9yUHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCivwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2U
tkxpbmtFcnJvclByb3RvdHlwZTo68J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf
8J2UqfCdlLZMaW5rRXJyb3JQcm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
ICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TGlua0Vycm9yUHJvdG90eXBlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlwZS5o
CmluZGV4IGFhNTQ2YzIuLjc3NTc0ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5TGlua0Vycm9yUHJvdG90eXBlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5cGUuaApAQCAt
MzIsMTIgKzMyLDEyIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBXZWJBc3NlbWJseUxp
bmtFcnJvclByb3RvdHlwZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK2NsYXNzIPCdlJrw
nZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2TGlua0Vycm9yUHJvdG90eXBl
IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgogICAgIHR5cGVkZWYgSlNOb25G
aW5hbE9iamVjdCBCYXNlOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFn
cyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsKIAotICAg
IHN0YXRpYyBXZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMg8J2UmvCdlKLwnZSf8J2UhPCdlLDw
nZSw8J2UovCdlKrwnZSf8J2UqfCdlLZMaW5rRXJyb3JQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKIAogICAgIERFQ0xBUkVf
SU5GTzsKQEAgLTQ2LDcgKzQ2LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oVk0mKTsKIAogcHJpdmF0ZToKLSAgICBXZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlwZShW
TSYsIFN0cnVjdHVyZSopOworICAgIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2U
n/CdlKnwnZS2TGlua0Vycm9yUHJvdG90eXBlKFZNJiwgU3RydWN0dXJlKik7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvci5jcHAKaW5kZXggY2ZlOGI5Zi4u
NzNkMWZkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNz
ZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvci5jcHAKQEAgLTQxLDE0ICs0MSwxNCBA
QAogCiBuYW1lc3BhY2UgSlNDIHsKIAotY29uc3QgQ2xhc3NJbmZvIFdlYkFzc2VtYmx5TWVtb3J5
Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgJmNvbnN0
cnVjdG9yVGFibGVXZWJBc3NlbWJseU1lbW9yeSwgQ1JFQVRFX01FVEhPRF9UQUJMRShXZWJBc3Nl
bWJseU1lbW9yeUNvbnN0cnVjdG9yKSB9OworY29uc3QgQ2xhc3NJbmZvIPCdlJrwnZSi8J2Un/Cd
lITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2TWVtb3J5Q29uc3RydWN0b3I6OnNfaW5mbyA9
IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgJmNvbnN0cnVjdG9yVGFibGVXZWJBc3NlbWJs
eU1lbW9yeSwgQ1JFQVRFX01FVEhPRF9UQUJMRSjwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi
8J2UqvCdlJ/wnZSp8J2Utk1lbW9yeUNvbnN0cnVjdG9yKSB9OwogCi0vKiBTb3VyY2UgZm9yIFdl
YkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3IubHV0LmgKKy8qIFNvdXJjZSBmb3Ig8J2UmvCdlKLw
nZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZNZW1vcnlDb25zdHJ1Y3Rvci5sdXQu
aAogIEBiZWdpbiBjb25zdHJ1Y3RvclRhYmxlV2ViQXNzZW1ibHlNZW1vcnkKICBAZW5kCiAgKi8K
IAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3Nl
bWJseU1lbW9yeShFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjb25zdHJ1Y3RKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/Cd
lKnwnZS2TWVtb3J5KEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgp
OwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMTAw
LDU1ICsxMDAsNTUgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3Ry
dWN0SlNXZWJBc3NlbWJseU1lbW9yeShFeGVjU3RhdGUqIGV4ZWMKICAgICBpZiAoIW1lbW9yeSkK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJv
d1Njb3BlLCBjcmVhdGVPdXRPZk1lbW9yeUVycm9yKGV4ZWMpKSk7CiAKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKEpTV2ViQXNzZW1ibHlNZW1vcnk6OmNyZWF0ZSh2bSwgZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpLT5XZWJBc3NlbWJseU1lbW9yeVN0cnVjdHVyZSgpLCBhZG9wdFJlZigq
bWVtb3J5LmxlYWtSZWYoKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpT8J2UmvCd
lKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZNZW1vcnk6OmNyZWF0ZSh2bSwg
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT7wnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi
8J2UqvCdlJ/wnZSp8J2Utk1lbW9yeVN0cnVjdHVyZSgpLCBhZG9wdFJlZigqbWVtb3J5LmxlYWtS
ZWYoKSkpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEpT
V2ViQXNzZW1ibHlNZW1vcnkoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY2FsbEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf
8J2UqfCdlLZNZW1vcnkoRXhlY1N0YXRlKiBleGVjKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1
bmN0aW9uVHlwZUVycm9yKGV4ZWMsIHRocm93U2NvcGUsICJXZWJBc3NlbWJseS5NZW1vcnkiKSk7
CiB9CiAKLVdlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3IqIFdlYkFzc2VtYmx5TWVtb3J5Q29u
c3RydWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBXZWJBc3NlbWJs
eU1lbW9yeVByb3RvdHlwZSogdGhpc1Byb3RvdHlwZSkKK/CdlJrwnZSi8J2Un/CdlITwnZSw8J2U
sPCdlKLwnZSq8J2Un/CdlKnwnZS2TWVtb3J5Q29uc3RydWN0b3IqIPCdlJrwnZSi8J2Un/CdlITw
nZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2TWVtb3J5Q29uc3RydWN0b3I6OmNyZWF0ZShWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2U
qvCdlJ/wnZSp8J2Utk1lbW9yeVByb3RvdHlwZSogdGhpc1Byb3RvdHlwZSkKIHsKLSAgICBhdXRv
KiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5TWVt
b3J5Q29uc3RydWN0b3I+KHZtLmhlYXApKSBXZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yKHZt
LCBzdHJ1Y3R1cmUpOworICAgIGF1dG8qIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw88J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZNZW1v
cnlDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq
8J2Un/CdlKnwnZS2TWVtb3J5Q29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CiAgICAgY29uc3Ry
dWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCB0aGlzUHJvdG90eXBlKTsKICAgICByZXR1cm4gY29u
c3RydWN0b3I7CiB9CiAKLVN0cnVjdHVyZSogV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvcjo6
Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBwcm90b3R5cGUpCitTdHJ1Y3R1cmUqIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLw
nZSq8J2Un/CdlKnwnZS2TWVtb3J5Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQogewogICAg
IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5
cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKIH0KIAotdm9pZCBX
ZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFdlYkFz
c2VtYmx5TWVtb3J5UHJvdG90eXBlKiBwcm90b3R5cGUpCit2b2lkIPCdlJrwnZSi8J2Un/CdlITw
nZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2TWVtb3J5Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwg8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZN
ZW1vcnlQcm90b3R5cGUqIHByb3RvdHlwZSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2
bSwgQVNDSUlMaXRlcmFsKCJNZW1vcnkiKSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBEb250RW51bSB8
IERvbnREZWxldGUgfCBSZWFkT25seSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9u
dEVudW0gfCBEb250RGVsZXRlKTsKIH0KIAotV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvcjo6
V2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
KQor8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZNZW1vcnlDb25z
dHJ1Y3Rvcjo68J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZNZW1v
cnlDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogQmFzZSh2
bSwgc3RydWN0dXJlKQogewogfQogCi1Db25zdHJ1Y3RUeXBlIFdlYkFzc2VtYmx5TWVtb3J5Q29u
c3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYgY29uc3Ry
dWN0RGF0YSkKK0NvbnN0cnVjdFR5cGUg8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrw
nZSf8J2UqfCdlLZNZW1vcnlDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBD
b25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQogewotICAgIGNvbnN0cnVjdERhdGEubmF0aXZl
LmZ1bmN0aW9uID0gY29uc3RydWN0SlNXZWJBc3NlbWJseU1lbW9yeTsKKyAgICBjb25zdHJ1Y3RE
YXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw
8J2UovCdlKrwnZSf8J2UqfCdlLZNZW1vcnk7CiAgICAgcmV0dXJuIENvbnN0cnVjdFR5cGU6Okhv
c3Q7CiB9CiAKLUNhbGxUeXBlIFdlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3I6OmdldENhbGxE
YXRhKEpTQ2VsbCosIENhbGxEYXRhJiBjYWxsRGF0YSkKK0NhbGxUeXBlIPCdlJrwnZSi8J2Un/Cd
lITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2TWVtb3J5Q29uc3RydWN0b3I6OmdldENhbGxE
YXRhKEpTQ2VsbCosIENhbGxEYXRhJiBjYWxsRGF0YSkKIHsKLSAgICBjYWxsRGF0YS5uYXRpdmUu
ZnVuY3Rpb24gPSBjYWxsSlNXZWJBc3NlbWJseU1lbW9yeTsKKyAgICBjYWxsRGF0YS5uYXRpdmUu
ZnVuY3Rpb24gPSBjYWxsSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp
8J2Utk1lbW9yeTsKICAgICByZXR1cm4gQ2FsbFR5cGU6Okhvc3Q7CiB9CiAKLXZvaWQgV2ViQXNz
ZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvcjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQordm9pZCDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCd
lJ/wnZSp8J2Utk1lbW9yeUNvbnN0cnVjdG9yOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwg
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxX
ZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yKj4oY2VsbCk7CisgICAgYXV0byogdGhpc09iamVj
dCA9IGpzQ2FzdDzwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utk1l
bW9yeUNvbnN0cnVjdG9yKj4oY2VsbCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0
aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwg
dmlzaXRvcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmgKaW5kZXggNDY2MDY5My4uOTliODBj
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlN
ZW1vcnlDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3IuaApAQCAtMzIsMjMgKzMyLDIzIEBACiAKIG5hbWVz
cGFjZSBKU0MgewogCi1jbGFzcyBXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZTsKK2NsYXNzIPCd
lJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2TWVtb3J5UHJvdG90eXBl
OwogCi1jbGFzcyBXZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFs
RnVuY3Rpb24geworY2xhc3Mg8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2U
qfCdlLZNZW1vcnlDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKIHB1Ymxp
YzoKICAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKICAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRp
Y1Byb3BlcnR5VGFibGU7CiAKLSAgICBzdGF0aWMgV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rv
ciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUqKTsK
KyAgICBzdGF0aWMg8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZN
ZW1vcnlDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwg8J2UmvCdlKLwnZSf8J2U
hPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZNZW1vcnlQcm90b3R5cGUqKTsKICAgICBzdGF0
aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFs
dWUpOwogCiAgICAgREVDTEFSRV9JTkZPOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihWTSYsIFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlKik7CisgICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihWTSYsIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnw
nZS2TWVtb3J5UHJvdG90eXBlKik7CiAKIHByaXZhdGU6Ci0gICAgV2ViQXNzZW1ibHlNZW1vcnlD
b25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSopOworICAgIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2U
sPCdlKLwnZSq8J2Un/CdlKnwnZS2TWVtb3J5Q29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsK
ICAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0
cnVjdERhdGEmKTsKICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2Fs
bERhdGEmKTsKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNp
dG9yJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3Nl
bWJseU1lbW9yeVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5jcHAKaW5kZXggODIyZjYzYi4uZGZjNTUxYyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlQ
cm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5TWVtb3J5UHJvdG90eXBlLmNwcApAQCAtNDQsMjEgKzQ0LDIxIEBAIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5TWVtb3J5UHJvdG9GdW5jQnVmZmVyKEV4
ZWNTdGF0ZSopCiAKIG5hbWVzcGFjZSBKU0MgewogCi1jb25zdCBDbGFzc0luZm8gV2ViQXNzZW1i
bHlNZW1vcnlQcm90b3R5cGU6OnNfaW5mbyA9IHsgIldlYkFzc2VtYmx5Lk1lbW9yeS5wcm90b3R5
cGUiLCAmQmFzZTo6c19pbmZvLCAmcHJvdG90eXBlVGFibGVXZWJBc3NlbWJseU1lbW9yeSwgQ1JF
QVRFX01FVEhPRF9UQUJMRShXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZSkgfTsKK2NvbnN0IENs
YXNzSW5mbyDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utk1lbW9y
eVByb3RvdHlwZTo6c19pbmZvID0geyAiV2ViQXNzZW1ibHkuTWVtb3J5LnByb3RvdHlwZSIsICZC
YXNlOjpzX2luZm8sICZwcm90b3R5cGVUYWJsZVdlYkFzc2VtYmx5TWVtb3J5LCBDUkVBVEVfTUVU
SE9EX1RBQkxFKPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2TWVt
b3J5UHJvdG90eXBlKSB9OwogCi0vKiBTb3VyY2UgZm9yIFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90
eXBlLmx1dC5oCisvKiBTb3VyY2UgZm9yIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq
8J2Un/CdlKnwnZS2TWVtb3J5UHJvdG90eXBlLmx1dC5oCiBAYmVnaW4gcHJvdG90eXBlVGFibGVX
ZWJBc3NlbWJseU1lbW9yeQogIGdyb3cgICB3ZWJBc3NlbWJseU1lbW9yeVByb3RvRnVuY0dyb3cg
ICBEb250RW51bXxGdW5jdGlvbiAxCiAgYnVmZmVyIHdlYkFzc2VtYmx5TWVtb3J5UHJvdG9GdW5j
QnVmZmVyIERvbnRFbnVtfEFjY2Vzc29yIDAKIEBlbmQKICovCiAKLUFMV0FZU19JTkxJTkUgSlNX
ZWJBc3NlbWJseU1lbW9yeSogZ2V0TWVtb3J5KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1
ZSkKK0FMV0FZU19JTkxJTkUgSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/w
nZSp8J2Utk1lbW9yeSogZ2V0TWVtb3J5KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkK
IHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNXZWJBc3NlbWJseU1lbW9yeSogbWVtb3J5ID0g
anNEeW5hbWljQ2FzdDxKU1dlYkFzc2VtYmx5TWVtb3J5Kj4odm0sIHZhbHVlKTsgCisgICAgSlPw
nZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utk1lbW9yeSogbWVtb3J5
ID0ganNEeW5hbWljQ2FzdDxKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/Cd
lKnwnZS2TWVtb3J5Kj4odm0sIHZhbHVlKTsgCiAgICAgaWYgKCFtZW1vcnkpIHsKICAgICAgICAg
dGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgCiAgICAgICAgICAgICBjcmVhdGVUeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJXZWJBc3NlbWJseS5NZW1vcnkucHJvdG90eXBlLmJ1
ZmZlciBnZXR0ZXIgY2FsbGVkIHdpdGggbm9uIFdlYkFzc2VtYmx5Lk1lbW9yeSB8dGhpc3wgdmFs
dWUiKSkpOwpAQCAtNzIsNyArNzIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdl
YkFzc2VtYmx5TWVtb3J5UHJvdG9GdW5jR3JvdyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAotICAgIEpTV2ViQXNzZW1ibHlNZW1vcnkqIG1lbW9yeSA9IGdldE1lbW9yeShleGVj
LCBleGVjLT50aGlzVmFsdWUoKSk7IAorICAgIEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2U
ovCdlKrwnZSf8J2UqfCdlLZNZW1vcnkqIG1lbW9yeSA9IGdldE1lbW9yeShleGVjLCBleGVjLT50
aGlzVmFsdWUoKSk7IAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsK
ICAgICAKICAgICB1aW50MzJfdCBkZWx0YSA9IHRvTm9uV3JhcHBpbmdVaW50MzIoZXhlYywgZXhl
Yy0+YXJndW1lbnQoMCkpOwpAQCAtOTAsMzAgKzkwLDMwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgd2ViQXNzZW1ibHlNZW1vcnlQcm90b0Z1bmNCdWZmZXIoRXhlY1N0YXRlKiBleGVj
KQogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1dlYkFzc2VtYmx5TWVtb3J5KiBtZW1vcnkgPSBn
ZXRNZW1vcnkoZXhlYywgZXhlYy0+dGhpc1ZhbHVlKCkpOyAKKyAgICBKU/CdlJrwnZSi8J2Un/Cd
lITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2TWVtb3J5KiBtZW1vcnkgPSBnZXRNZW1vcnko
ZXhlYywgZXhlYy0+dGhpc1ZhbHVlKCkpOyAKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIHsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShtZW1vcnktPmJ1ZmZlcihl
eGVjLT52bSgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpKTsKIH0KIAotV2ViQXNzZW1i
bHlNZW1vcnlQcm90b3R5cGUqIFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlOjpjcmVhdGUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogc3RydWN0dXJlKQor8J2UmvCdlKLwnZSf
8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZNZW1vcnlQcm90b3R5cGUqIPCdlJrwnZSi
8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2TWVtb3J5UHJvdG90eXBlOjpjcmVh
dGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewotICAg
IGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5TWVt
b3J5UHJvdG90eXBlPih2bS5oZWFwKSkgV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUodm0sIHN0
cnVjdHVyZSk7CisgICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZNZW1vcnlQcm90b3R5
cGU+KHZtLmhlYXApKSDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2U
tk1lbW9yeVByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKICAgICBvYmplY3QtPmZpbmlzaENyZWF0
aW9uKHZtKTsKICAgICByZXR1cm4gb2JqZWN0OwogfQogCi1TdHJ1Y3R1cmUqIFdlYkFzc2VtYmx5
TWVtb3J5UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK1N0cnVjdHVyZSog8J2UmvCdlKLwnZSf
8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZNZW1vcnlQcm90b3R5cGU6OmNyZWF0ZVN0
cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJv
dG90eXBlKQogewogICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygp
KTsKIH0KIAotdm9pZCBXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtKQordm9pZCDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2U
tk1lbW9yeVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogewogICAgIEJhc2U6OmZp
bmlzaENyZWF0aW9uKHZtKTsKICAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOwogfQog
Ci1XZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZTo6V2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUo
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCd
lKLwnZSq8J2Un/CdlKnwnZS2TWVtb3J5UHJvdG90eXBlOjrwnZSa8J2UovCdlJ/wnZSE8J2UsPCd
lLDwnZSi8J2UqvCdlJ/wnZSp8J2Utk1lbW9yeVByb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlKQogICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQogewogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90
eXBlLmgKaW5kZXggMmQwYTEwMi4uNGI1NWNlMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5oCkBAIC0z
MiwxMiArMzIsMTIgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIFdlYkFzc2VtYmx5TWVt
b3J5UHJvdG90eXBlIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworY2xhc3Mg8J2UmvCdlKLw
nZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZNZW1vcnlQcm90b3R5cGUgOiBwdWJs
aWMgSlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU05vbkZpbmFsT2Jq
ZWN0IEJhc2U7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFz
ZTo6U3RydWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOwogCi0gICAgc3RhdGlj
IFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSopOworICAgIHN0YXRpYyDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2U
qvCdlJ/wnZSp8J2Utk1lbW9yeVByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqKTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0m
LCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogCiAgICAgREVDTEFSRV9JTkZPOwpAQCAtNDYs
NyArNDYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwogCiBw
cml2YXRlOgotICAgIFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlKFZNJiwgU3RydWN0dXJlKik7
CisgICAg8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZNZW1vcnlQ
cm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVD
b25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eU1vZHVsZUNvbnN0cnVjdG9yLmNwcAppbmRleCAzNTk5NjIyLi5lMjIwMzA2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVj
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1v
ZHVsZUNvbnN0cnVjdG9yLmNwcApAQCAtNDYsMzEgKzQ2LDMxIEBACiAKIG5hbWVzcGFjZSBKU0Mg
ewogCi1jb25zdCBDbGFzc0luZm8gV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvcjo6c19pbmZv
ID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCAmY29uc3RydWN0b3JUYWJsZVdlYkFzc2Vt
Ymx5TW9kdWxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFdlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0
b3IpIH07Citjb25zdCBDbGFzc0luZm8g8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrw
nZSf8J2UqfCdlLZNb2R1bGVDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFz
ZTo6c19pbmZvLCAmY29uc3RydWN0b3JUYWJsZVdlYkFzc2VtYmx5TW9kdWxlLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2TW9k
dWxlQ29uc3RydWN0b3IpIH07CiAKLS8qIFNvdXJjZSBmb3IgV2ViQXNzZW1ibHlNb2R1bGVDb25z
dHJ1Y3Rvci5sdXQuaAorLyogU291cmNlIGZvciDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi
8J2UqvCdlJ/wnZSp8J2Utk1vZHVsZUNvbnN0cnVjdG9yLmx1dC5oCiAgQGJlZ2luIGNvbnN0cnVj
dG9yVGFibGVXZWJBc3NlbWJseU1vZHVsZQogIEBlbmQKICAqLwogCi1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5TW9kdWxlKEV4ZWNTdGF0
ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpT
8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZNb2R1bGUoRXhlY1N0
YXRlKiBleGVjKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogc3RydWN0dXJlID0gSW50
ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFy
Z2V0KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+V2ViQXNzZW1ibHlNb2R1bGVTdHJ1
Y3R1cmUoKSk7CisgICAgYXV0byogc3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRl
U3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCksIGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKS0+8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCd
lLZNb2R1bGVTdHJ1Y3R1cmUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKFdlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3I6OmNyZWF0ZU1v
ZHVsZShleGVjLCBleGVjLT5hcmd1bWVudCgwKSwgc3RydWN0dXJlKSk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSjwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2U
tk1vZHVsZUNvbnN0cnVjdG9yOjpjcmVhdGVNb2R1bGUoZXhlYywgZXhlYy0+YXJndW1lbnQoMCks
IHN0cnVjdHVyZSkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
YWxsSlNXZWJBc3NlbWJseU1vZHVsZShFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2U
qvCdlJ/wnZSp8J2Utk1vZHVsZShFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1
bmN0aW9uVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiV2ViQXNzZW1ibHkuTW9kdWxlIikpOwogfQog
Ci1KU1ZhbHVlIFdlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3I6OmNyZWF0ZU1vZHVsZShFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgYnVmZmVyLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK0pTVmFs
dWUg8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZNb2R1bGVDb25z
dHJ1Y3Rvcjo6Y3JlYXRlTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBidWZmZXIsIFN0
cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtODAsNDkgKzgwLDQ5IEBAIEpT
VmFsdWUgV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvcjo6Y3JlYXRlTW9kdWxlKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSBidWZmCiAKICAgICBSZWZQdHI8V2FzbTo6UGxhbj4gcGxhbiA9IGFk
b3B0UmVmKG5ldyBXYXNtOjpQbGFuKHZtLCAqc291cmNlLCBXYXNtOjpQbGFuOjpWYWxpZGF0aW9u
LCBXYXNtOjpQbGFuOjpkb250RmluYWxpemUpKTsKICAgICBpZiAoIXBsYW4tPnBhcnNlQW5kVmFs
aWRhdGVNb2R1bGUoKSkKLSAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3Bl
LCBKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yOjpjcmVhdGUoZXhlYywgdm0sIGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKS0+V2ViQXNzZW1ibHlDb21waWxlRXJyb3JTdHJ1Y3R1cmUoKSwgcGxh
bi0+ZXJyb3JNZXNzYWdlKCkpKTsKLSAgICByZXR1cm4gSlNXZWJBc3NlbWJseU1vZHVsZTo6Y3Jl
YXRlU3R1Yih2bSwgZXhlYywgc3RydWN0dXJlLCBXVEZNb3ZlKHNvdXJjZSksIFdURk1vdmUocGxh
bikpOworICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIEpT8J2UmvCd
lKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZDb21waWxlRXJyb3I6OmNyZWF0
ZShleGVjLCB2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT7wnZSa8J2UovCdlJ/wnZSE
8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtkNvbXBpbGVFcnJvclN0cnVjdHVyZSgpLCBwbGFu
LT5lcnJvck1lc3NhZ2UoKSkpOworICAgIHJldHVybiBKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2U
sPCdlKLwnZSq8J2Un/CdlKnwnZS2TW9kdWxlOjpjcmVhdGVTdHViKHZtLCBleGVjLCBzdHJ1Y3R1
cmUsIFdURk1vdmUoc291cmNlKSwgV1RGTW92ZShwbGFuKSk7CiB9CiAKLVdlYkFzc2VtYmx5TW9k
dWxlQ29uc3RydWN0b3IqIFdlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3I6OmNyZWF0ZShWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBXZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZSogdGhp
c1Byb3RvdHlwZSkKK/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2
TW9kdWxlQ29uc3RydWN0b3IqIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/Cd
lKnwnZS2TW9kdWxlQ29uc3RydWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlLCDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utk1vZHVsZVBy
b3RvdHlwZSogdGhpc1Byb3RvdHlwZSkKIHsKLSAgICBhdXRvKiBjb25zdHJ1Y3RvciA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3I+KHZtLmhl
YXApKSBXZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgIGF1
dG8qIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw88J2UmvCdlKLwnZSf
8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZNb2R1bGVDb25zdHJ1Y3Rvcj4odm0uaGVh
cCkpIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2TW9kdWxlQ29u
c3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CiAgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9u
KHZtLCB0aGlzUHJvdG90eXBlKTsKICAgICByZXR1cm4gY29uc3RydWN0b3I7CiB9CiAKLVN0cnVj
dHVyZSogV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCitTdHJ1
Y3R1cmUqIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2TW9kdWxl
Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQogewogICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKIH0KIAotdm9pZCBXZWJBc3NlbWJseU1vZHVsZUNvbnN0
cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFdlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBl
KiBwcm90b3R5cGUpCit2b2lkIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/Cd
lKnwnZS2TW9kdWxlQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwg8J2UmvCdlKLw
nZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZNb2R1bGVQcm90b3R5cGUqIHByb3Rv
dHlwZSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgQVNDSUlMaXRlcmFsKCJNb2R1
bGUiKSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFt
ZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25s
eSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMt
Pmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsK
IH0KIAotV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvcjo6V2ViQXNzZW1ibHlNb2R1bGVDb25z
dHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQor8J2UmvCdlKLwnZSf8J2UhPCd
lLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZNb2R1bGVDb25zdHJ1Y3Rvcjo68J2UmvCdlKLwnZSf
8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZNb2R1bGVDb25zdHJ1Y3RvcihWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQogewogfQog
Ci1Db25zdHJ1Y3RUeXBlIFdlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3I6OmdldENvbnN0cnVj
dERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKK0NvbnN0cnVjdFR5
cGUg8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZNb2R1bGVDb25z
dHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1
Y3REYXRhKQogewotICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0
SlNXZWJBc3NlbWJseU1vZHVsZTsKKyAgICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9
IGNvbnN0cnVjdEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZN
b2R1bGU7CiAgICAgcmV0dXJuIENvbnN0cnVjdFR5cGU6Okhvc3Q7CiB9CiAKLUNhbGxUeXBlIFdl
YkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRh
JiBjYWxsRGF0YSkKK0NhbGxUeXBlIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2U
n/CdlKnwnZS2TW9kdWxlQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRh
JiBjYWxsRGF0YSkKIHsKLSAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsSlNXZWJB
c3NlbWJseU1vZHVsZTsKKyAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsSlPwnZSa
8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utk1vZHVsZTsKICAgICByZXR1
cm4gQ2FsbFR5cGU6Okhvc3Q7CiB9CiAKLXZvaWQgV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rv
cjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQordm9p
ZCDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utk1vZHVsZUNvbnN0
cnVjdG9yOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
CiB7Ci0gICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxXZWJBc3NlbWJseU1vZHVsZUNvbnN0
cnVjdG9yKj4oY2VsbCk7CisgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDzwnZSa8J2UovCd
lJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utk1vZHVsZUNvbnN0cnVjdG9yKj4oY2Vs
bCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwog
ICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZUNvbnN0
cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVs
ZUNvbnN0cnVjdG9yLmgKaW5kZXggYTEwODQ4ZS4uNjBhOTUwMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlQ29uc3Ry
dWN0b3IuaApAQCAtMzIsMTQgKzMyLDE0IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBX
ZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZTsKK2NsYXNzIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2U
sPCdlKLwnZSq8J2Un/CdlKnwnZS2TW9kdWxlUHJvdG90eXBlOwogCi1jbGFzcyBXZWJBc3NlbWJs
eU1vZHVsZUNvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24geworY2xhc3Mg8J2U
mvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZNb2R1bGVDb25zdHJ1Y3Rv
ciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEludGVy
bmFsRnVuY3Rpb24gQmFzZTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CiAKLSAg
ICBzdGF0aWMgV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiwgU3RydWN0
dXJlKiwgV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUqKTsKKyAgICBzdGF0aWMg8J2UmvCdlKLw
nZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZNb2R1bGVDb25zdHJ1Y3RvciogY3Jl
YXRlKFZNJiwgU3RydWN0dXJlKiwg8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf
8J2UqfCdlLZNb2R1bGVQcm90b3R5cGUqKTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogCiAgICAgREVDTEFSRV9J
TkZPOwpAQCAtNDcsMTAgKzQ3LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNWYWx1ZSBjcmVh
dGVNb2R1bGUoRXhlY1N0YXRlKiwgSlNWYWx1ZSBidWZmZXIsIFN0cnVjdHVyZSopOwogCiBwcm90
ZWN0ZWQ6Ci0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIFdlYkFzc2VtYmx5TW9kdWxlUHJv
dG90eXBlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIPCdlJrwnZSi8J2Un/CdlITw
nZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2TW9kdWxlUHJvdG90eXBlKik7CiAKIHByaXZhdGU6
Ci0gICAgV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSopOworICAg
IPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2TW9kdWxlQ29uc3Ry
dWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKICAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25z
dHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKICAgICBzdGF0aWMgQ2FsbFR5cGUg
Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKICAgICBzdGF0aWMgdm9pZCB2aXNpdENo
aWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZS5jcHAKaW5k
ZXggY2VhOTdkYy4uZGQ3ODZmMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLmNwcApAQCAtNDUsOSAr
NDUsOSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseU1v
ZHVsZVByb3RvRXhwb3J0cyhFeGVjU3RhdGUqKTsKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNvbnN0
IENsYXNzSW5mbyBXZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZTo6c19pbmZvID0geyAiV2ViQXNz
ZW1ibHkuTW9kdWxlLnByb3RvdHlwZSIsICZCYXNlOjpzX2luZm8sICZwcm90b3R5cGVUYWJsZVdl
YkFzc2VtYmx5TW9kdWxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFdlYkFzc2VtYmx5TW9kdWxlUHJv
dG90eXBlKSB9OworY29uc3QgQ2xhc3NJbmZvIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLw
nZSq8J2Un/CdlKnwnZS2TW9kdWxlUHJvdG90eXBlOjpzX2luZm8gPSB7ICJXZWJBc3NlbWJseS5N
b2R1bGUucHJvdG90eXBlIiwgJkJhc2U6OnNfaW5mbywgJnByb3RvdHlwZVRhYmxlV2ViQXNzZW1i
bHlNb2R1bGUsIENSRUFURV9NRVRIT0RfVEFCTEUo8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2U
ovCdlKrwnZSf8J2UqfCdlLZNb2R1bGVQcm90b3R5cGUpIH07CiAKLS8qIFNvdXJjZSBmb3IgV2Vi
QXNzZW1ibHlNb2R1bGVQcm90b3R5cGUubHV0LmgKKy8qIFNvdXJjZSBmb3Ig8J2UmvCdlKLwnZSf
8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZNb2R1bGVQcm90b3R5cGUubHV0LmgKICBA
YmVnaW4gcHJvdG90eXBlVGFibGVXZWJBc3NlbWJseU1vZHVsZQogIGN1c3RvbVNlY3Rpb25zIHdl
YkFzc2VtYmx5TW9kdWxlUHJvdG9DdXN0b21TZWN0aW9ucyBEb250RW51bXxGdW5jdGlvbiAxCiAg
aW1wb3J0cyAgICAgICAgd2ViQXNzZW1ibHlNb2R1bGVQcm90b0ltcG9ydHMgICAgICAgIERvbnRF
bnVtfEFjY2Vzc29yIDAKQEAgLTYxLDcgKzYxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCB3ZWJBc3NlbWJseU1vZHVsZVByb3RvQ3VzdG9tU2VjdGlvbnMoRXhlY1N0YXRlKiBleGUK
ICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CiAg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1dl
YkFzc2VtYmx5TW9kdWxlKiBtb2R1bGUgPSBqc0R5bmFtaWNDYXN0PEpTV2ViQXNzZW1ibHlNb2R1
bGUqPih2bSwgZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDw
nZSw8J2UovCdlKrwnZSf8J2UqfCdlLZNb2R1bGUqIG1vZHVsZSA9IGpzRHluYW1pY0Nhc3Q8SlPw
nZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utk1vZHVsZSo+KHZtLCBl
eGVjLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFtb2R1bGUpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRlVHlwZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiV2ViQXNzZW1ibHkuTW9kdWxlLnByb3RvdHlwZS5jdXN0
b21TZWN0aW9ucyBjYWxsZWQgd2l0aCBub24gV2ViQXNzZW1ibHkuTW9kdWxlIHx0aGlzfCB2YWx1
ZSIpKSkpOwogCkBAIC05NSw3ICs5NSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
d2ViQXNzZW1ibHlNb2R1bGVQcm90b0ltcG9ydHMoRXhlY1N0YXRlKiBleGVjKQogICAgIGF1dG8q
IGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKICAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTV2ViQXNzZW1ibHlN
b2R1bGUqIG1vZHVsZSA9IGpzRHluYW1pY0Nhc3Q8SlNXZWJBc3NlbWJseU1vZHVsZSo+KHZtLCBl
eGVjLT50aGlzVmFsdWUoKSk7CisgICAgSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2U
qvCdlJ/wnZSp8J2Utk1vZHVsZSogbW9kdWxlID0ganNEeW5hbWljQ2FzdDxKU/CdlJrwnZSi8J2U
n/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2TW9kdWxlKj4odm0sIGV4ZWMtPnRoaXNW
YWx1ZSgpKTsKICAgICBpZiAoIW1vZHVsZSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKCJXZWJBc3NlbWJseS5Nb2R1bGUucHJvdG90eXBlLmltcG9ydHMgY2FsbGVk
IHdpdGggbm9uIFdlYkFzc2VtYmx5Lk1vZHVsZSB8dGhpc3wgdmFsdWUiKSkpKTsKIApAQCAtMTI3
LDcgKzEyNyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlNb2R1
bGVQcm90b0V4cG9ydHMoRXhlY1N0YXRlKiBleGVjKQogICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9
IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTV2ViQXNzZW1ibHlNb2R1bGUqIG1vZHVsZSA9
IGpzRHluYW1pY0Nhc3Q8SlNXZWJBc3NlbWJseU1vZHVsZSo+KHZtLCBleGVjLT50aGlzVmFsdWUo
KSk7CisgICAgSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utk1v
ZHVsZSogbW9kdWxlID0ganNEeW5hbWljQ2FzdDxKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCd
lKLwnZSq8J2Un/CdlKnwnZS2TW9kdWxlKj4odm0sIGV4ZWMtPnRoaXNWYWx1ZSgpKTsKICAgICBp
ZiAoIW1vZHVsZSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlv
bihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJX
ZWJBc3NlbWJseS5Nb2R1bGUucHJvdG90eXBlLmV4cG9ydHMgY2FsbGVkIHdpdGggbm9uIFdlYkFz
c2VtYmx5Lk1vZHVsZSB8dGhpc3wgdmFsdWUiKSkpKTsKIApAQCAtMTUxLDI0ICsxNTEsMjQgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseU1vZHVsZVByb3RvRXhwb3J0
cyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwog
fQogCi1XZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZSogV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5
cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CivwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utk1vZHVsZVByb3Rv
dHlwZSog8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZNb2R1bGVQ
cm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCiB7Ci0gICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
V2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGU+KHZtLmhlYXApKSBXZWJBc3NlbWJseU1vZHVsZVBy
b3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDzwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2U
tk1vZHVsZVByb3RvdHlwZT4odm0uaGVhcCkpIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLw
nZSq8J2Un/CdlKnwnZS2TW9kdWxlUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOwogICAgIG9iamVj
dC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVybiBvYmplY3Q7CiB9CiAKLVN0cnVjdHVy
ZSogV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorU3RydWN0dXJl
KiDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utk1vZHVsZVByb3Rv
dHlwZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBwcm90b3R5cGUpCiB7CiAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBpbmZvKCkpOwogfQogCi12b2lkIFdlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0pCit2b2lkIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLw
nZSq8J2Un/CdlKnwnZS2TW9kdWxlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7
CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogfQogCi1XZWJBc3NlbWJseU1vZHVsZVBy
b3RvdHlwZTo6V2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKK/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2TW9k
dWxlUHJvdG90eXBlOjrwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2U
tk1vZHVsZVByb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogQmFz
ZSh2bSwgc3RydWN0dXJlKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLmgKaW5kZXggZDViNjI3OS4u
ODcxM2FjNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNz
ZW1ibHlNb2R1bGVQcm90b3R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZS5oCkBAIC0zMiwxMiArMzIsMTIgQEAKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKLWNsYXNzIFdlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlIDogcHVibGlj
IEpTTm9uRmluYWxPYmplY3QgeworY2xhc3Mg8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCd
lKrwnZSf8J2UqfCdlLZNb2R1bGVQcm90b3R5cGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7
CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CiAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBI
YXNTdGF0aWNQcm9wZXJ0eVRhYmxlOwogCi0gICAgc3RhdGljIFdlYkFzc2VtYmx5TW9kdWxlUHJv
dG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOworICAgIHN0
YXRpYyDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utk1vZHVsZVBy
b3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKICAgICBz
dGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpT
VmFsdWUpOwogCiAgICAgREVDTEFSRV9JTkZPOwpAQCAtNDYsNyArNDYsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwogCiBwcml2YXRlOgotICAgIFdlYkFzc2Vt
Ymx5TW9kdWxlUHJvdG90eXBlKFZNJiwgU3RydWN0dXJlKik7CisgICAg8J2UmvCdlKLwnZSf8J2U
hPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZNb2R1bGVQcm90b3R5cGUoVk0mLCBTdHJ1Y3R1
cmUqKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCmluZGV4IDkz
ODdlMjUuLjI3YWM0NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAKQEAgLTQ0LDMyICs0NCwzMiBAQAog
CiBuYW1lc3BhY2UgSlNDIHsKIAotY29uc3QgQ2xhc3NJbmZvIFdlYkFzc2VtYmx5TW9kdWxlUmVj
b3JkOjpzX2luZm8gPSB7ICJXZWJBc3NlbWJseU1vZHVsZVJlY29yZCIsICZCYXNlOjpzX2luZm8s
IG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQpIH07
Citjb25zdCBDbGFzc0luZm8g8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2U
qfCdlLZNb2R1bGVSZWNvcmQ6OnNfaW5mbyA9IHsgIvCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCd
lKLwnZSq8J2Un/CdlKnwnZS2TW9kdWxlUmVjb3JkIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwg
Q1JFQVRFX01FVEhPRF9UQUJMRSjwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/w
nZSp8J2Utk1vZHVsZVJlY29yZCkgfTsKIAotU3RydWN0dXJlKiBXZWJBc3NlbWJseU1vZHVsZVJl
Y29yZDo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBwcm90b3R5cGUpCitTdHJ1Y3R1cmUqIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2U
sPCdlKLwnZSq8J2Un/CdlKnwnZS2TW9kdWxlUmVjb3JkOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKIHsKICAg
ICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBU
eXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiB9CiAKLVdlYkFz
c2VtYmx5TW9kdWxlUmVjb3JkKiBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6Y3JlYXRlKEV4ZWNT
dGF0ZSogZXhlYywgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmll
ciYgbW9kdWxlS2V5LCBjb25zdCBXYXNtOjpNb2R1bGVJbmZvcm1hdGlvbiYgbW9kdWxlSW5mb3Jt
YXRpb24pCivwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utk1vZHVs
ZVJlY29yZCog8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZNb2R1
bGVSZWNvcmQ6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZUtleSwgY29uc3QgV2FzbTo6TW9kdWxlSW5m
b3JtYXRpb24mIG1vZHVsZUluZm9ybWF0aW9uKQogewotICAgIFdlYkFzc2VtYmx5TW9kdWxlUmVj
b3JkKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5TW9k
dWxlUmVjb3JkPih2bS5oZWFwKSkgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQodm0sIHN0cnVjdHVy
ZSwgbW9kdWxlS2V5KTsKKyAgICDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/w
nZSp8J2Utk1vZHVsZVJlY29yZCogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDzwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utk1vZHVsZVJlY29y
ZD4odm0uaGVhcCkpIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2
TW9kdWxlUmVjb3JkKHZtLCBzdHJ1Y3R1cmUsIG1vZHVsZUtleSk7CiAgICAgaW5zdGFuY2UtPmZp
bmlzaENyZWF0aW9uKGV4ZWMsIHZtLCBtb2R1bGVJbmZvcm1hdGlvbik7CiAgICAgcmV0dXJuIGlu
c3RhbmNlOwogfQogCi1XZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6V2ViQXNzZW1ibHlNb2R1bGVS
ZWNvcmQoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgbW9k
dWxlS2V5KQor8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZNb2R1
bGVSZWNvcmQ6OvCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2TW9k
dWxlUmVjb3JkKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXIm
IG1vZHVsZUtleSkKICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSwgbW9kdWxlS2V5KQogewogfQog
Ci12b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKK3Zv
aWQg8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZNb2R1bGVSZWNv
cmQ6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogewotICAgIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3Jk
KiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQqPihjZWxs
KTsKLSAgICB0aGlzT2JqZWN0LT5XZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6fldlYkFzc2VtYmx5
TW9kdWxlUmVjb3JkKCk7CisgICAg8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf
8J2UqfCdlLZNb2R1bGVSZWNvcmQqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDzwnZSa8J2UovCd
lJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utk1vZHVsZVJlY29yZCo+KGNlbGwpOwor
ICAgIHRoaXNPYmplY3QtPvCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnw
nZS2TW9kdWxlUmVjb3JkOjp+8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2U
qfCdlLZNb2R1bGVSZWNvcmQoKTsKIH0KIAotdm9pZCBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6
ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIGNvbnN0IFdhc206Ok1vZHVs
ZUluZm9ybWF0aW9uJiBtb2R1bGVJbmZvcm1hdGlvbikKK3ZvaWQg8J2UmvCdlKLwnZSf8J2UhPCd
lLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZNb2R1bGVSZWNvcmQ6OmZpbmlzaENyZWF0aW9uKEV4
ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCBjb25zdCBXYXNtOjpNb2R1bGVJbmZvcm1hdGlvbiYgbW9k
dWxlSW5mb3JtYXRpb24pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYywgdm0pOwog
ICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CkBAIC03OSwyMiArNzksMjIgQEAgdm9p
ZCBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVj
LCBWTSYgdm0sIGNvbnN0IFdhc20KICAgICB9CiB9CiAKLXZvaWQgV2ViQXNzZW1ibHlNb2R1bGVS
ZWNvcmQ6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikK
K3ZvaWQg8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZNb2R1bGVS
ZWNvcmQ6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikK
IHsKLSAgICBXZWJBc3NlbWJseU1vZHVsZVJlY29yZCogdGhpc09iamVjdCA9IGpzQ2FzdDxXZWJB
c3NlbWJseU1vZHVsZVJlY29yZCo+KGNlbGwpOworICAgIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2U
sPCdlKLwnZSq8J2Un/CdlKnwnZS2TW9kdWxlUmVjb3JkKiB0aGlzT2JqZWN0ID0ganNDYXN0PPCd
lJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2TW9kdWxlUmVjb3JkKj4o
Y2VsbCk7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKICAg
ICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2luc3RhbmNlKTsKICAgICB2aXNpdG9yLmFw
cGVuZCh0aGlzT2JqZWN0LT5tX3N0YXJ0RnVuY3Rpb24pOwogfQogCi12b2lkIFdlYkFzc2VtYmx5
TW9kdWxlUmVjb3JkOjpsaW5rKEV4ZWNTdGF0ZSogZXhlYywgSlNXZWJBc3NlbWJseU1vZHVsZSog
bW9kdWxlLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmNlKQordm9pZCDwnZSa8J2UovCd
lJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utk1vZHVsZVJlY29yZDo6bGluayhFeGVj
U3RhdGUqIGV4ZWMsIEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCd
lLZNb2R1bGUqIG1vZHVsZSwgSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/w
nZSp8J2Utkluc3RhbmNlKiBpbnN0YW5jZSkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBVTlVTRURfUEFS
QU0oc2NvcGUpOwogICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKTsKIAotICAgIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGluc3Rh
bmNlLT5jb2RlQmxvY2soKTsKKyAgICBKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq
8J2Un/CdlKnwnZS2Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBpbnN0YW5jZS0+Y29kZUJsb2NrKCk7
CiAgICAgY29uc3QgV2FzbTo6TW9kdWxlSW5mb3JtYXRpb24mIG1vZHVsZUluZm9ybWF0aW9uID0g
bW9kdWxlLT5tb2R1bGVJbmZvcm1hdGlvbigpOwogCiAgICAgU3ltYm9sVGFibGUqIGV4cG9ydFN5
bWJvbFRhYmxlID0gbW9kdWxlLT5leHBvcnRTeW1ib2xUYWJsZSgpOwpAQCAtMTE4LDE4ICsxMTgs
MTggQEAgdm9pZCBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6bGluayhFeGVjU3RhdGUqIGV4ZWMs
IEpTV2ViQXNzZW1ibHlNb2R1bGUqIG1vZHVsZSwKICAgICAgICAgICAgICAgICAgICAgZXhwb3J0
ZWRWYWx1ZSA9IGZ1bmN0aW9uSW1wb3J0OwogICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAg
ICAgICAgICAgICAgICBXYXNtOjpTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1vZHVs
ZS0+c2lnbmF0dXJlSW5kZXhGcm9tRnVuY3Rpb25JbmRleFNwYWNlKGZ1bmN0aW9uSW5kZXgpOwot
ICAgICAgICAgICAgICAgICAgICBleHBvcnRlZFZhbHVlID0gV2ViQXNzZW1ibHlXcmFwcGVyRnVu
Y3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBmdW5jdGlvbkltcG9ydCwgZnVuY3Rpb25J
bmRleCwgY29kZUJsb2NrLCBzaWduYXR1cmVJbmRleCk7CisgICAgICAgICAgICAgICAgICAgIGV4
cG9ydGVkVmFsdWUgPSDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2U
tldyYXBwZXJGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uSW1wb3J0
LCBmdW5jdGlvbkluZGV4LCBjb2RlQmxvY2ssIHNpZ25hdHVyZUluZGV4KTsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIC8vICAgaWlpLiBP
dGhlcndpc2U6CiAgICAgICAgICAgICAgICAgLy8gICAgIGEuIExldCBmdW5jIGJlIGFuIEV4cG9y
dGVkIEZ1bmN0aW9uIEV4b3RpYyBPYmplY3QgY3JlYXRlZCBmcm9tIGMuCiAgICAgICAgICAgICAg
ICAgLy8gICAgIGIuIEFwcGVuZCBmdW5jIHRvIGZ1bmNzLgogICAgICAgICAgICAgICAgIC8vICAg
ICBjLiBSZXR1cm4gZnVuYy4KLSAgICAgICAgICAgICAgICBKU1dlYkFzc2VtYmx5Q2FsbGVlKiBq
c0VudHJ5cG9pbnRDYWxsZWUgPSBjb2RlQmxvY2stPmpzRW50cnlwb2ludENhbGxlZUZyb21GdW5j
dGlvbkluZGV4U3BhY2UoZXhwLmtpbmRJbmRleCk7Ci0gICAgICAgICAgICAgICAgSlNXZWJBc3Nl
bWJseUNhbGxlZSogd2FzbUVudHJ5cG9pbnRDYWxsZWUgPSBjb2RlQmxvY2stPndhc21FbnRyeXBv
aW50Q2FsbGVlRnJvbUZ1bmN0aW9uSW5kZXhTcGFjZShleHAua2luZEluZGV4KTsKKyAgICAgICAg
ICAgICAgICBKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2Q2Fs
bGVlKiBqc0VudHJ5cG9pbnRDYWxsZWUgPSBjb2RlQmxvY2stPmpzRW50cnlwb2ludENhbGxlZUZy
b21GdW5jdGlvbkluZGV4U3BhY2UoZXhwLmtpbmRJbmRleCk7CisgICAgICAgICAgICAgICAgSlPw
nZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtkNhbGxlZSogd2FzbUVu
dHJ5cG9pbnRDYWxsZWUgPSBjb2RlQmxvY2stPndhc21FbnRyeXBvaW50Q2FsbGVlRnJvbUZ1bmN0
aW9uSW5kZXhTcGFjZShleHAua2luZEluZGV4KTsKICAgICAgICAgICAgICAgICBXYXNtOjpTaWdu
YXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1vZHVsZS0+c2lnbmF0dXJlSW5kZXhGcm9tRnVu
Y3Rpb25JbmRleFNwYWNlKGV4cC5raW5kSW5kZXgpOwogICAgICAgICAgICAgICAgIGNvbnN0IFdh
c206OlNpZ25hdHVyZSYgc2lnbmF0dXJlID0gV2FzbTo6U2lnbmF0dXJlSW5mb3JtYXRpb246Omdl
dChzaWduYXR1cmVJbmRleCk7Ci0gICAgICAgICAgICAgICAgV2ViQXNzZW1ibHlGdW5jdGlvbiog
ZnVuY3Rpb24gPSBXZWJBc3NlbWJseUZ1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
c2lnbmF0dXJlLmFyZ3VtZW50Q291bnQoKSwgZXhwLmZpZWxkLCBpbnN0YW5jZSwganNFbnRyeXBv
aW50Q2FsbGVlLCB3YXNtRW50cnlwb2ludENhbGxlZSwgc2lnbmF0dXJlSW5kZXgpOworICAgICAg
ICAgICAgICAgIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2RnVu
Y3Rpb24qIGZ1bmN0aW9uID0g8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2U
qfCdlLZGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHNpZ25hdHVyZS5hcmd1bWVu
dENvdW50KCksIGV4cC5maWVsZCwgaW5zdGFuY2UsIGpzRW50cnlwb2ludENhbGxlZSwgd2FzbUVu
dHJ5cG9pbnRDYWxsZWUsIHNpZ25hdHVyZUluZGV4KTsKICAgICAgICAgICAgICAgICBleHBvcnRl
ZFZhbHVlID0gZnVuY3Rpb247CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKQEAg
LTE1OSw3ICsxNTksNyBAQCB2b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rKEV4ZWNT
dGF0ZSogZXhlYywgSlNXZWJBc3NlbWJseU1vZHVsZSogbW9kdWxlLAogICAgICAgICAgICAgICAg
IGJyZWFrOwogCiAgICAgICAgICAgICBjYXNlIFdhc206Okk2NDoKLSAgICAgICAgICAgICAgICB0
aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihl
eGVjLCB2bSwgQVNDSUlMaXRlcmFsKCJleHBvcnRlZCBnbG9iYWwgY2Fubm90IGJlIGFuIGk2NCIp
KSk7CisgICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUpT
8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZMaW5rRXJyb3IoZXhl
Yywgdm0sIEFTQ0lJTGl0ZXJhbCgiZXhwb3J0ZWQgZ2xvYmFsIGNhbm5vdCBiZSBhbiBpNjQiKSkp
OwogICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgY2FzZSBXYXNtOjpGMzI6
CkBAIC0xOTYsOSArMTk2LDkgQEAgdm9pZCBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6bGluayhF
eGVjU3RhdGUqIGV4ZWMsIEpTV2ViQXNzZW1ibHlNb2R1bGUqIG1vZHVsZSwKICAgICAgICAgICAg
IEpTT2JqZWN0KiBzdGFydEZ1bmN0aW9uID0gaW5zdGFuY2UtPmltcG9ydEZ1bmN0aW9uKHN0YXJ0
RnVuY3Rpb25JbmRleFNwYWNlKTsKICAgICAgICAgICAgIG1fc3RhcnRGdW5jdGlvbi5zZXQodm0s
IHRoaXMsIHN0YXJ0RnVuY3Rpb24pOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgSlNX
ZWJBc3NlbWJseUNhbGxlZSoganNFbnRyeXBvaW50Q2FsbGVlID0gY29kZUJsb2NrLT5qc0VudHJ5
cG9pbnRDYWxsZWVGcm9tRnVuY3Rpb25JbmRleFNwYWNlKHN0YXJ0RnVuY3Rpb25JbmRleFNwYWNl
KTsKLSAgICAgICAgICAgIEpTV2ViQXNzZW1ibHlDYWxsZWUqIHdhc21FbnRyeXBvaW50Q2FsbGVl
ID0gY29kZUJsb2NrLT53YXNtRW50cnlwb2ludENhbGxlZUZyb21GdW5jdGlvbkluZGV4U3BhY2Uo
c3RhcnRGdW5jdGlvbkluZGV4U3BhY2UpOwotICAgICAgICAgICAgV2ViQXNzZW1ibHlGdW5jdGlv
biogZnVuY3Rpb24gPSBXZWJBc3NlbWJseUZ1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgc2lnbmF0dXJlLmFyZ3VtZW50Q291bnQoKSwgInN0YXJ0IiwgaW5zdGFuY2UsIGpzRW50cnlw
b2ludENhbGxlZSwgd2FzbUVudHJ5cG9pbnRDYWxsZWUsIHNpZ25hdHVyZUluZGV4KTsKKyAgICAg
ICAgICAgIEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZDYWxs
ZWUqIGpzRW50cnlwb2ludENhbGxlZSA9IGNvZGVCbG9jay0+anNFbnRyeXBvaW50Q2FsbGVlRnJv
bUZ1bmN0aW9uSW5kZXhTcGFjZShzdGFydEZ1bmN0aW9uSW5kZXhTcGFjZSk7CisgICAgICAgICAg
ICBKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2Q2FsbGVlKiB3
YXNtRW50cnlwb2ludENhbGxlZSA9IGNvZGVCbG9jay0+d2FzbUVudHJ5cG9pbnRDYWxsZWVGcm9t
RnVuY3Rpb25JbmRleFNwYWNlKHN0YXJ0RnVuY3Rpb25JbmRleFNwYWNlKTsKKyAgICAgICAgICAg
IPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2RnVuY3Rpb24qIGZ1
bmN0aW9uID0g8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZGdW5j
dGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHNpZ25hdHVyZS5hcmd1bWVudENvdW50KCks
ICJzdGFydCIsIGluc3RhbmNlLCBqc0VudHJ5cG9pbnRDYWxsZWUsIHdhc21FbnRyeXBvaW50Q2Fs
bGVlLCBzaWduYXR1cmVJbmRleCk7CiAgICAgICAgICAgICBtX3N0YXJ0RnVuY3Rpb24uc2V0KHZt
LCB0aGlzLCBmdW5jdGlvbik7CiAgICAgICAgIH0KICAgICB9CkBAIC0yMTEsMTkgKzIxMSwxOSBA
QCB2b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rKEV4ZWNTdGF0ZSogZXhlYywgSlNX
ZWJBc3NlbWJseU1vZHVsZSogbW9kdWxlLAogdGVtcGxhdGUgPHR5cGVuYW1lIFNjb3BlLCB0eXBl
bmFtZSBNLCB0eXBlbmFtZSBOLCB0eXBlbmFtZSAuLi5BcmdzPgogTkVWRVJfSU5MSU5FIHN0YXRp
YyBKU1ZhbHVlIGRhdGFTZWdtZW50RmFpbChFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgU2NvcGUm
IHNjb3BlLCBNIG1lbW9yeVNpemUsIE4gc2VnbWVudFNpemUsIE4gb2Zmc2V0LCBBcmdzLi4uIGFy
Z3MpCiB7Ci0gICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVKU1dl
YkFzc2VtYmx5TGlua0Vycm9yKGV4ZWMsIHZtLCBtYWtlU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiSW52
YWxpZCBkYXRhIHNlZ21lbnQgaW5pdGlhbGl6YXRpb246IHNlZ21lbnQgb2YgIiksIFN0cmluZzo6
bnVtYmVyKHNlZ21lbnRTaXplKSwgQVNDSUlMaXRlcmFsKCIgYnl0ZXMgbWVtb3J5IG9mICIpLCBT
dHJpbmc6Om51bWJlcihtZW1vcnlTaXplKSwgQVNDSUlMaXRlcmFsKCIgYnl0ZXMsIGF0IG9mZnNl
dCAiKSwgU3RyaW5nOjpudW1iZXIob2Zmc2V0KSwgYXJncy4uLikpKTsKKyAgICByZXR1cm4gdGhy
b3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw
8J2UovCdlKrwnZSf8J2UqfCdlLZMaW5rRXJyb3IoZXhlYywgdm0sIG1ha2VTdHJpbmcoQVNDSUlM
aXRlcmFsKCJJbnZhbGlkIGRhdGEgc2VnbWVudCBpbml0aWFsaXphdGlvbjogc2VnbWVudCBvZiAi
KSwgU3RyaW5nOjpudW1iZXIoc2VnbWVudFNpemUpLCBBU0NJSUxpdGVyYWwoIiBieXRlcyBtZW1v
cnkgb2YgIiksIFN0cmluZzo6bnVtYmVyKG1lbW9yeVNpemUpLCBBU0NJSUxpdGVyYWwoIiBieXRl
cywgYXQgb2Zmc2V0ICIpLCBTdHJpbmc6Om51bWJlcihvZmZzZXQpLCBhcmdzLi4uKSkpOwogfQog
Ci1KU1ZhbHVlIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpldmFsdWF0ZShFeGVjU3RhdGUqIGV4
ZWMpCitKU1ZhbHVlIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2
TW9kdWxlUmVjb3JkOjpldmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAK
ICAgICB7Ci0gICAgICAgIEpTV2ViQXNzZW1ibHlNb2R1bGUqIG1vZHVsZSA9IG1faW5zdGFuY2Ut
Pm1vZHVsZSgpOwotICAgICAgICBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBt
X2luc3RhbmNlLT5jb2RlQmxvY2soKTsKKyAgICAgICAgSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCd
lLDwnZSi8J2UqvCdlJ/wnZSp8J2Utk1vZHVsZSogbW9kdWxlID0gbV9pbnN0YW5jZS0+bW9kdWxl
KCk7CisgICAgICAgIEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCd
lLZDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1faW5zdGFuY2UtPmNvZGVCbG9jaygpOwogICAgICAg
ICBjb25zdCBXYXNtOjpNb2R1bGVJbmZvcm1hdGlvbiYgbW9kdWxlSW5mb3JtYXRpb24gPSBtb2R1
bGUtPm1vZHVsZUluZm9ybWF0aW9uKCk7Ci0gICAgICAgIEpTV2ViQXNzZW1ibHlUYWJsZSogdGFi
bGUgPSBtX2luc3RhbmNlLT50YWJsZSgpOworICAgICAgICBKU/CdlJrwnZSi8J2Un/CdlITwnZSw
8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2VGFibGUqIHRhYmxlID0gbV9pbnN0YW5jZS0+dGFibGUo
KTsKICAgICAgICAgZm9yIChjb25zdCBXYXNtOjpFbGVtZW50JiBlbGVtZW50IDogbW9kdWxlSW5m
b3JtYXRpb24uZWxlbWVudHMpIHsKICAgICAgICAgICAgIC8vIEl0IHNob3VsZCBiZSBhIHZhbGlk
YXRpb24gZXJyb3IgdG8gaGF2ZSBhbnkgZWxlbWVudHMgd2l0aG91dCBhIHRhYmxlLgogICAgICAg
ICAgICAgLy8gQWxzbywgaXQgY291bGQgYmUgdGhhdCBhIHRhYmxlIHdhc24ndCBpbXBvcnRlZCwg
b3IgdGhhdCB0aGUgdGFibGUKQEAgLTI0MiwxMSArMjQyLDExIEBAIEpTVmFsdWUgV2ViQXNzZW1i
bHlNb2R1bGVSZWNvcmQ6OmV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYykKIAogICAgICAgICAgICAg
dWludDY0X3QgbGFzdFdyaXR0ZW5JbmRleCA9IHN0YXRpY19jYXN0PHVpbnQ2NF90Pih0YWJsZUlu
ZGV4KSArIHN0YXRpY19jYXN0PHVpbnQ2NF90PihlbGVtZW50LmZ1bmN0aW9uSW5kaWNlcy5zaXpl
KCkpIC0gMTsKICAgICAgICAgICAgIGlmIChsYXN0V3JpdHRlbkluZGV4ID49IHRhYmxlLT5zaXpl
KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBj
cmVhdGVKU1dlYkFzc2VtYmx5TGlua0Vycm9yKGV4ZWMsIHZtLCBBU0NJSUxpdGVyYWwoIkVsZW1l
bnQgaXMgdHJ5aW5nIHRvIHNldCBhbiBvdXQgb2YgYm91bmRzIHRhYmxlIGluZGV4IikpKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUpT
8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZMaW5rRXJyb3IoZXhl
Yywgdm0sIEFTQ0lJTGl0ZXJhbCgiRWxlbWVudCBpcyB0cnlpbmcgdG8gc2V0IGFuIG91dCBvZiBi
b3VuZHMgdGFibGUgaW5kZXgiKSkpOwogCiAgICAgICAgICAgICBmb3IgKHVpbnQzMl90IGkgPSAw
OyBpIDwgZWxlbWVudC5mdW5jdGlvbkluZGljZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAg
ICAgICAvLyBGSVhNRTogVGhpcyBlc3NlbnRpYWxseSBtZWFucyB3ZSdyZSBleHBvcnRpbmcgYW4g
aW1wb3J0LgotICAgICAgICAgICAgICAgIC8vIFdlIG5lZWQgYSBzdG9yeSBoZXJlLiBXZSBuZWVk
IHRvIGNyZWF0ZSBhIFdlYkFzc2VtYmx5RnVuY3Rpb24KKyAgICAgICAgICAgICAgICAvLyBXZSBu
ZWVkIGEgc3RvcnkgaGVyZS4gV2UgbmVlZCB0byBjcmVhdGUgYSDwnZSa8J2UovCdlJ/wnZSE8J2U
sPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtkZ1bmN0aW9uCiAgICAgICAgICAgICAgICAgLy8gZm9y
IHRoZSBpbXBvcnQuCiAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2NTUxMAogICAgICAgICAgICAgICAgIHVpbnQzMl90IGZ1bmN0aW9u
SW5kZXggPSBlbGVtZW50LmZ1bmN0aW9uSW5kaWNlc1tpXTsKQEAgLTI1NCwxMCArMjU0LDEwIEBA
IEpTVmFsdWUgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhl
YykKICAgICAgICAgICAgICAgICBpZiAoZnVuY3Rpb25JbmRleCA8IGNvZGVCbG9jay0+ZnVuY3Rp
b25JbXBvcnRDb3VudCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIEpTT2JqZWN0KiBmdW5jdGlv
bkltcG9ydCA9IGpzQ2FzdDxKU09iamVjdCo+KG1faW5zdGFuY2UtPmltcG9ydEZ1bmN0aW9uKGZ1
bmN0aW9uSW5kZXgpKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGlzV2ViQXNzZW1ibHlIb3N0
RnVuY3Rpb24odm0sIGZ1bmN0aW9uSW1wb3J0KSkgewotICAgICAgICAgICAgICAgICAgICAgICAg
V2ViQXNzZW1ibHlGdW5jdGlvbiogd2FzbUZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxXZWJBc3Nl
bWJseUZ1bmN0aW9uKj4odm0sIGZ1bmN0aW9uSW1wb3J0KTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIElmIHdlIGV2ZXIgaW1wb3J0IGEgV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24sIHdl
IHNldCB0aGUgaW1wb3J0IGFzIHRoZSB1bndyYXBwZWQgdmFsdWUuCi0gICAgICAgICAgICAgICAg
ICAgICAgICAvLyBCZWNhdXNlIGEgV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24gY2FuIG5ldmVy
IHdyYXAgYW5vdGhlciBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIHRoZSBvbmx5IHR5cGUgdGhpcyBjb3VsZCBiZSBpcyBXZWJBc3NlbWJseUZ1
bmN0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAg8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw
8J2UovCdlKrwnZSf8J2UqfCdlLZGdW5jdGlvbiogd2FzbUZ1bmN0aW9uID0ganNEeW5hbWljQ2Fz
dDzwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtkZ1bmN0aW9uKj4o
dm0sIGZ1bmN0aW9uSW1wb3J0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHdlIGV2
ZXIgaW1wb3J0IGEg8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZX
cmFwcGVyRnVuY3Rpb24sIHdlIHNldCB0aGUgaW1wb3J0IGFzIHRoZSB1bndyYXBwZWQgdmFsdWUu
CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBCZWNhdXNlIGEg8J2UmvCdlKLwnZSf8J2UhPCd
lLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZXcmFwcGVyRnVuY3Rpb24gY2FuIG5ldmVyIHdyYXAg
YW5vdGhlciDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtldyYXBw
ZXJGdW5jdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBvbmx5IHR5cGUgdGhp
cyBjb3VsZCBiZSBpcyDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2U
tkZ1bmN0aW9uLgogICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQod2FzbUZ1
bmN0aW9uKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlLT5zZXRGdW5jdGlvbih2bSwg
dGFibGVJbmRleCwgd2FzbUZ1bmN0aW9uKTsKICAgICAgICAgICAgICAgICAgICAgICAgICsrdGFi
bGVJbmRleDsKQEAgLTI2NSwxOSArMjY1LDE5IEBAIEpTVmFsdWUgV2ViQXNzZW1ibHlNb2R1bGVS
ZWNvcmQ6OmV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICAgICAgICAgIHRhYmxlLT5zZXRGdW5jdGlvbih2bSwgdGFibGVJbmRleCwK
LSAgICAgICAgICAgICAgICAgICAgICAgIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uOjpjcmVh
dGUodm0sIG1faW5zdGFuY2UtPmdsb2JhbE9iamVjdCgpLCBmdW5jdGlvbkltcG9ydCwgZnVuY3Rp
b25JbmRleCwgY29kZUJsb2NrLCBzaWduYXR1cmVJbmRleCkpOworICAgICAgICAgICAgICAgICAg
ICAgICAg8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZXcmFwcGVy
RnVuY3Rpb246OmNyZWF0ZSh2bSwgbV9pbnN0YW5jZS0+Z2xvYmFsT2JqZWN0KCksIGZ1bmN0aW9u
SW1wb3J0LCBmdW5jdGlvbkluZGV4LCBjb2RlQmxvY2ssIHNpZ25hdHVyZUluZGV4KSk7CiAgICAg
ICAgICAgICAgICAgICAgICsrdGFibGVJbmRleDsKICAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgSlNXZWJBc3NlbWJseUNh
bGxlZSoganNFbnRyeXBvaW50Q2FsbGVlID0gY29kZUJsb2NrLT5qc0VudHJ5cG9pbnRDYWxsZWVG
cm9tRnVuY3Rpb25JbmRleFNwYWNlKGZ1bmN0aW9uSW5kZXgpOwotICAgICAgICAgICAgICAgIEpT
V2ViQXNzZW1ibHlDYWxsZWUqIHdhc21FbnRyeXBvaW50Q2FsbGVlID0gY29kZUJsb2NrLT53YXNt
RW50cnlwb2ludENhbGxlZUZyb21GdW5jdGlvbkluZGV4U3BhY2UoZnVuY3Rpb25JbmRleCk7Cisg
ICAgICAgICAgICAgICAgSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp
8J2UtkNhbGxlZSoganNFbnRyeXBvaW50Q2FsbGVlID0gY29kZUJsb2NrLT5qc0VudHJ5cG9pbnRD
YWxsZWVGcm9tRnVuY3Rpb25JbmRleFNwYWNlKGZ1bmN0aW9uSW5kZXgpOworICAgICAgICAgICAg
ICAgIEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZDYWxsZWUq
IHdhc21FbnRyeXBvaW50Q2FsbGVlID0gY29kZUJsb2NrLT53YXNtRW50cnlwb2ludENhbGxlZUZy
b21GdW5jdGlvbkluZGV4U3BhY2UoZnVuY3Rpb25JbmRleCk7CiAgICAgICAgICAgICAgICAgY29u
c3QgV2FzbTo6U2lnbmF0dXJlJiBzaWduYXR1cmUgPSBXYXNtOjpTaWduYXR1cmVJbmZvcm1hdGlv
bjo6Z2V0KHNpZ25hdHVyZUluZGV4KTsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogU2F5IHdl
IGV4cG9ydCBsb2NhbCBmdW5jdGlvbiAiZm9vIiBhdCBmdW5jdGlvbiBpbmRleCAwLgogICAgICAg
ICAgICAgICAgIC8vIFdoYXQgaWYgd2UgYWxzbyBzZXQgaXQgdG8gdGhlIHRhYmxlIGFuIEVsZW1l
bnQgdy8gaW5kZXggMC4KICAgICAgICAgICAgICAgICAvLyBEb2VzIChuZXcgSW5zdGFuY2UoLi4u
KSkuZXhwb3J0cy5mb28gPT09IHRhYmxlLmdldCgwKT8KICAgICAgICAgICAgICAgICAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1ODI1Ci0gICAgICAgICAgICAg
ICAgV2ViQXNzZW1ibHlGdW5jdGlvbiogZnVuY3Rpb24gPSBXZWJBc3NlbWJseUZ1bmN0aW9uOjpj
cmVhdGUoCisgICAgICAgICAgICAgICAg8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrw
nZSf8J2UqfCdlLZGdW5jdGlvbiogZnVuY3Rpb24gPSDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDw
nZSi8J2UqvCdlJ/wnZSp8J2UtkZ1bmN0aW9uOjpjcmVhdGUoCiAgICAgICAgICAgICAgICAgICAg
IHZtLCBtX2luc3RhbmNlLT5nbG9iYWxPYmplY3QoKSwgc2lnbmF0dXJlLmFyZ3VtZW50Q291bnQo
KSwgU3RyaW5nKCksIG1faW5zdGFuY2UuZ2V0KCksIGpzRW50cnlwb2ludENhbGxlZSwgd2FzbUVu
dHJ5cG9pbnRDYWxsZWUsIHNpZ25hdHVyZUluZGV4KTsKIAogICAgICAgICAgICAgICAgIHRhYmxl
LT5zZXRGdW5jdGlvbih2bSwgdGFibGVJbmRleCwgZnVuY3Rpb24pOwpAQCAtMjg4LDcgKzI4OCw3
IEBAIEpTVmFsdWUgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmV2YWx1YXRlKEV4ZWNTdGF0ZSog
ZXhlYykKIAogICAgIHsKICAgICAgICAgY29uc3QgVmVjdG9yPFdhc206OlNlZ21lbnQ6OlB0cj4m
IGRhdGEgPSBtX2luc3RhbmNlLT5tb2R1bGUoKS0+bW9kdWxlSW5mb3JtYXRpb24oKS5kYXRhOwot
ICAgICAgICBKU1dlYkFzc2VtYmx5TWVtb3J5KiBqc01lbW9yeSA9IG1faW5zdGFuY2UtPm1lbW9y
eSgpOworICAgICAgICBKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnw
nZS2TWVtb3J5KiBqc01lbW9yeSA9IG1faW5zdGFuY2UtPm1lbW9yeSgpOwogICAgICAgICBpZiAo
IWRhdGEuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICB1aW50OF90KiBtZW1vcnkgPSByZWludGVy
cHJldF9jYXN0PHVpbnQ4X3QqPihqc01lbW9yeS0+bWVtb3J5KCkubWVtb3J5KCkpOwogICAgICAg
ICAgICAgdWludDY0X3Qgc2l6ZUluQnl0ZXMgPSBqc01lbW9yeS0+bWVtb3J5KCkuc2l6ZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1
bGVSZWNvcmQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9k
dWxlUmVjb3JkLmgKaW5kZXggMmI4MzcyZS4uOGNkMDc0OSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5oCkBAIC0z
MiwxMyArMzIsMTMgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIEpTV2ViQXNzZW1ibHlJ
bnN0YW5jZTsKLWNsYXNzIEpTV2ViQXNzZW1ibHlNb2R1bGU7Ci1jbGFzcyBXZWJBc3NlbWJseUZ1
bmN0aW9uOworY2xhc3MgSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp
8J2Utkluc3RhbmNlOworY2xhc3MgSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCd
lJ/wnZSp8J2Utk1vZHVsZTsKK2NsYXNzIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq
8J2Un/CdlKnwnZS2RnVuY3Rpb247CiAKIC8vIEJhc2VkIG9uIHRoZSBXZWJBc3NlbWJseS5JbnN0
YW5jZSBzcGVjaWZpY2F0aW9uCiAvLyBodHRwczovL2dpdGh1Yi5jb20vV2ViQXNzZW1ibHkvZGVz
aWduL2Jsb2IvbWFzdGVyL0pTLm1kI3dlYmFzc2VtYmx5aW5zdGFuY2UtY29uc3RydWN0b3IKLWNs
YXNzIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkIDogcHVibGljIEFic3RyYWN0TW9kdWxlUmVjb3Jk
IHsKK2NsYXNzIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2TW9k
dWxlUmVjb3JkIDogcHVibGljIEFic3RyYWN0TW9kdWxlUmVjb3JkIHsKICAgICBmcmllbmQgY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogcHVibGljOgogICAgIHR5cGVkZWYgQWJzdHJhY3RN
b2R1bGVSZWNvcmQgQmFzZTsKQEAgLTQ2LDIwICs0NiwyMCBAQCBwdWJsaWM6CiAgICAgREVDTEFS
RV9FWFBPUlRfSU5GTzsKIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShW
TSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7Ci0gICAgc3RhdGljIFdlYkFzc2VtYmx5TW9k
dWxlUmVjb3JkKiBjcmVhdGUoRXhlY1N0YXRlKiwgVk0mLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVu
dGlmaWVyJiwgY29uc3QgV2FzbTo6TW9kdWxlSW5mb3JtYXRpb24mKTsKKyAgICBzdGF0aWMg8J2U
mvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZNb2R1bGVSZWNvcmQqIGNy
ZWF0ZShFeGVjU3RhdGUqLCBWTSYsIFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXImLCBjb25z
dCBXYXNtOjpNb2R1bGVJbmZvcm1hdGlvbiYpOwogCi0gICAgdm9pZCBsaW5rKEV4ZWNTdGF0ZSos
IEpTV2ViQXNzZW1ibHlNb2R1bGUqLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqKTsKKyAgICB2b2lk
IGxpbmsoRXhlY1N0YXRlKiwgSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/w
nZSp8J2Utk1vZHVsZSosIEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2U
qfCdlLZJbnN0YW5jZSopOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgZXZhbHVhdGUo
RXhlY1N0YXRlKik7CiAKIHByaXZhdGU6Ci0gICAgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQoVk0m
LCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJik7CisgICAg8J2UmvCdlKLwnZSf8J2UhPCd
lLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZNb2R1bGVSZWNvcmQoVk0mLCBTdHJ1Y3R1cmUqLCBj
b25zdCBJZGVudGlmaWVyJik7CiAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSos
IFZNJiwgY29uc3QgV2FzbTo6TW9kdWxlSW5mb3JtYXRpb24mKTsKICAgICBzdGF0aWMgdm9pZCBk
ZXN0cm95KEpTQ2VsbCopOwogCiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwq
LCBTbG90VmlzaXRvciYpOwogCi0gICAgV3JpdGVCYXJyaWVyPEpTV2ViQXNzZW1ibHlJbnN0YW5j
ZT4gbV9pbnN0YW5jZTsKKyAgICBXcml0ZUJhcnJpZXI8SlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCd
lLDwnZSi8J2UqvCdlJ/wnZSp8J2Utkluc3RhbmNlPiBtX2luc3RhbmNlOwogICAgIFdyaXRlQmFy
cmllcjxKU09iamVjdD4gbV9zdGFydEZ1bmN0aW9uOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlQcm90b3R5cGUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlQcm90b3R5cGUuY3BwCmluZGV4IDc5
ZjQ2YmYuLjRlNDQ0ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseVByb3RvdHlwZS5jcHAKQEAgLTU1LDkgKzU1LDkgQEAgc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlWYWxpZGF0ZUZ1bmMoRXhlY1N0
YXRlKik7CiAKIG5hbWVzcGFjZSBKU0MgewogCi1jb25zdCBDbGFzc0luZm8gV2ViQXNzZW1ibHlQ
cm90b3R5cGU6OnNfaW5mbyA9IHsgIldlYkFzc2VtYmx5LnByb3RvdHlwZSIsICZCYXNlOjpzX2lu
Zm8sICZwcm90b3R5cGVUYWJsZVdlYkFzc2VtYmx5LCBDUkVBVEVfTUVUSE9EX1RBQkxFKFdlYkFz
c2VtYmx5UHJvdG90eXBlKSB9OworY29uc3QgQ2xhc3NJbmZvIPCdlJrwnZSi8J2Un/CdlITwnZSw
8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2UHJvdG90eXBlOjpzX2luZm8gPSB7ICJXZWJBc3NlbWJs
eS5wcm90b3R5cGUiLCAmQmFzZTo6c19pbmZvLCAmcHJvdG90eXBlVGFibGVXZWJBc3NlbWJseSwg
Q1JFQVRFX01FVEhPRF9UQUJMRSjwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/w
nZSp8J2UtlByb3RvdHlwZSkgfTsKIAotLyogU291cmNlIGZvciBXZWJBc3NlbWJseVByb3RvdHlw
ZS5sdXQuaAorLyogU291cmNlIGZvciDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCd
lJ/wnZSp8J2UtlByb3RvdHlwZS5sdXQuaAogIEBiZWdpbiBwcm90b3R5cGVUYWJsZVdlYkFzc2Vt
Ymx5CiAgY29tcGlsZSAgICAgd2ViQXNzZW1ibHlDb21waWxlRnVuYyAgICAgRG9udEVudW18RnVu
Y3Rpb24gMQogIGluc3RhbnRpYXRlIHdlYkFzc2VtYmx5SW5zdGFudGlhdGVGdW5jIERvbnRFbnVt
fEZ1bmN0aW9uIDEKQEAgLTk2LDcgKzk2LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgd2ViQXNzZW1ibHlDb21waWxlRnVuYyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAg
ICAgICBWTSYgdm0gPSBwbGFuLT52bSgpOwogICAgICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfQ0FUQ0hfU0NPUEUodm0pOwogICAgICAgICAgICAgRXhlY1N0YXRlKiBleGVjID0gZ2xvYmFs
T2JqZWN0LT5nbG9iYWxFeGVjKCk7Ci0gICAgICAgICAgICBKU1ZhbHVlIG1vZHVsZSA9IEpTV2Vi
QXNzZW1ibHlNb2R1bGU6OmNyZWF0ZVN0dWIodm0sIGV4ZWMsIGdsb2JhbE9iamVjdC0+V2ViQXNz
ZW1ibHlNb2R1bGVTdHJ1Y3R1cmUoKSwgV1RGTW92ZShzb3VyY2UpLCBXVEZNb3ZlKHBsYW4pKTsK
KyAgICAgICAgICAgIEpTVmFsdWUgbW9kdWxlID0gSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDw
nZSi8J2UqvCdlJ/wnZSp8J2Utk1vZHVsZTo6Y3JlYXRlU3R1Yih2bSwgZXhlYywgZ2xvYmFsT2Jq
ZWN0LT7wnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utk1vZHVsZVN0
cnVjdHVyZSgpLCBXVEZNb3ZlKHNvdXJjZSksIFdURk1vdmUocGxhbikpOwogICAgICAgICAgICAg
aWYgKHNjb3BlLmV4Y2VwdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgcmVqZWN0KGV4ZWMsIHNj
b3BlLCBwcm9taXNlKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0xMTEsNyArMTExLDcg
QEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlDb21waWxl
RnVuYyhFeGVjU3RhdGUqIGV4ZWMpCiB9CiAKIGVudW0gY2xhc3MgUmVzb2x2ZSB7IFdpdGhJbnN0
YW5jZSwgV2l0aE1vZHVsZUFuZEluc3RhbmNlIH07Ci1zdGF0aWMgdm9pZCByZXNvbHZlKFZNJiB2
bSwgRXhlY1N0YXRlKiBleGVjLCBKU1Byb21pc2VEZWZlcnJlZCogcHJvbWlzZSwgSlNXZWJBc3Nl
bWJseUluc3RhbmNlKiBpbnN0YW5jZSwgSlNXZWJBc3NlbWJseU1vZHVsZSogbW9kdWxlLCBSZXNv
bHZlIGVudHJpZXMpCitzdGF0aWMgdm9pZCByZXNvbHZlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVj
LCBKU1Byb21pc2VEZWZlcnJlZCogcHJvbWlzZSwgSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDw
nZSi8J2UqvCdlJ/wnZSp8J2Utkluc3RhbmNlKiBpbnN0YW5jZSwgSlPwnZSa8J2UovCdlJ/wnZSE
8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utk1vZHVsZSogbW9kdWxlLCBSZXNvbHZlIGVudHJp
ZXMpCiB7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogICAgIGlu
c3RhbmNlLT5maW5hbGl6ZUNyZWF0aW9uKHZtLCBleGVjKTsKQEAgLTEzMCwxMSArMTMwLDExIEBA
IHN0YXRpYyB2b2lkIHJlc29sdmUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpTUHJvbWlzZURl
ZmVycmVkKiBwcm9taXNlLCBKU1dlYkFzCiAgICAgfQogfQogCi1zdGF0aWMgdm9pZCBpbnN0YW50
aWF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNQcm9taXNlRGVmZXJyZWQqIHByb21pc2Us
IEpTV2ViQXNzZW1ibHlNb2R1bGUqIG1vZHVsZSwgSlNPYmplY3QqIGltcG9ydE9iamVjdCwgUmVz
b2x2ZSBlbnRyaWVzKQorc3RhdGljIHZvaWQgaW5zdGFudGlhdGUoVk0mIHZtLCBFeGVjU3RhdGUq
IGV4ZWMsIEpTUHJvbWlzZURlZmVycmVkKiBwcm9taXNlLCBKU/CdlJrwnZSi8J2Un/CdlITwnZSw
8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2TW9kdWxlKiBtb2R1bGUsIEpTT2JqZWN0KiBpbXBvcnRP
YmplY3QsIFJlc29sdmUgZW50cmllcykKIHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRD
SF9TQ09QRSh2bSk7CiAgICAgLy8gSW4gb3JkZXIgdG8gYXZvaWQgcG90ZW50aWFsbHkgcmVjb21w
aWxpbmcgYSBtb2R1bGUuIFdlIGZpcnN0IGdhdGhlciBhbGwgdGhlIGltcG9ydC9tZW1vcnkgaW5m
b3JtYXRpb24gcHJpb3IgdG8gY29tcGlsaW5nIGNvZGUuCi0gICAgSlNXZWJBc3NlbWJseUluc3Rh
bmNlKiBpbnN0YW5jZSA9IEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6Y3JlYXRlKHZtLCBleGVjLCBt
b2R1bGUsIGltcG9ydE9iamVjdCwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5XZWJBc3Nl
bWJseUluc3RhbmNlU3RydWN0dXJlKCkpOworICAgIEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw
8J2UovCdlKrwnZSf8J2UqfCdlLZJbnN0YW5jZSogaW5zdGFuY2UgPSBKU/CdlJrwnZSi8J2Un/Cd
lITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2SW5zdGFuY2U6OmNyZWF0ZSh2bSwgZXhlYywg
bW9kdWxlLCBpbXBvcnRPYmplY3QsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+8J2UmvCd
lKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZJbnN0YW5jZVN0cnVjdHVyZSgp
KTsKICAgICBpZiAoc2NvcGUuZXhjZXB0aW9uKCkpIHsKICAgICAgICAgcmVqZWN0KGV4ZWMsIHNj
b3BlLCBwcm9taXNlKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTk5LDcgKzE5OSw3IEBAIHN0YXRp
YyB2b2lkIGNvbXBpbGVBbmRJbnN0YW50aWF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNQ
cm9taXNlRGVmZXJyZWQqIHByCiAgICAgICAgICAgICBWTSYgdm0gPSBwbGFuLT52bSgpOwogICAg
ICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogICAgICAgICAg
ICAgRXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7Ci0gICAgICAg
ICAgICBKU1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1bGUgPSBKU1dlYkFzc2VtYmx5TW9kdWxlOjpj
cmVhdGVTdHViKHZtLCBleGVjLCBnbG9iYWxPYmplY3QtPldlYkFzc2VtYmx5TW9kdWxlU3RydWN0
dXJlKCksIFdURk1vdmUoc291cmNlKSwgcGxhbi5jb3B5UmVmKCkpOworICAgICAgICAgICAgSlPw
nZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utk1vZHVsZSogbW9kdWxl
ID0gSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utk1vZHVsZTo6
Y3JlYXRlU3R1Yih2bSwgZXhlYywgZ2xvYmFsT2JqZWN0LT7wnZSa8J2UovCdlJ/wnZSE8J2UsPCd
lLDwnZSi8J2UqvCdlJ/wnZSp8J2Utk1vZHVsZVN0cnVjdHVyZSgpLCBXVEZNb3ZlKHNvdXJjZSks
IHBsYW4uY29weVJlZigpKTsKICAgICAgICAgICAgIGlmIChzY29wZS5leGNlcHRpb24oKSkgewog
ICAgICAgICAgICAgICAgIHJlamVjdChleGVjLCBzY29wZSwgcHJvbWlzZSk7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtMjI5LDcgKzIyOSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5SW5zdGFudGlhdGVGdW5jKEV4ZWNTdGF0ZSogZXhlYykK
ICAgICB9CiAKICAgICBKU1ZhbHVlIGZpcnN0QXJndW1lbnQgPSBleGVjLT5hcmd1bWVudCgwKTsK
LSAgICBpZiAoYXV0byogbW9kdWxlID0ganNEeW5hbWljQ2FzdDxKU1dlYkFzc2VtYmx5TW9kdWxl
Kj4odm0sIGZpcnN0QXJndW1lbnQpKQorICAgIGlmIChhdXRvKiBtb2R1bGUgPSBqc0R5bmFtaWND
YXN0PEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZNb2R1bGUq
Pih2bSwgZmlyc3RBcmd1bWVudCkpCiAgICAgICAgIGluc3RhbnRpYXRlKHZtLCBleGVjLCBwcm9t
aXNlLCBtb2R1bGUsIGltcG9ydE9iamVjdCwgUmVzb2x2ZTo6V2l0aEluc3RhbmNlKTsKICAgICBl
bHNlCiAgICAgICAgIGNvbXBpbGVBbmRJbnN0YW50aWF0ZSh2bSwgZXhlYywgcHJvbWlzZSwgZmly
c3RBcmd1bWVudCwgaW1wb3J0T2JqZWN0KTsKQEAgLTI1MiwyNCArMjUyLDI0IEBAIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5VmFsaWRhdGVGdW5jKEV4ZWNT
dGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihwbGFuLnBh
cnNlQW5kVmFsaWRhdGVNb2R1bGUoKSkpOwogfQogCi1XZWJBc3NlbWJseVByb3RvdHlwZSogV2Vi
QXNzZW1ibHlQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCivwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp
8J2UtlByb3RvdHlwZSog8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCd
lLZQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCiB7Ci0gICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8V2ViQXNzZW1ibHlQcm90b3R5cGU+KHZtLmhlYXApKSBXZWJBc3NlbWJseVByb3RvdHlwZSh2
bSwgc3RydWN0dXJlKTsKKyAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDzwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtlByb3RvdHlw
ZT4odm0uaGVhcCkpIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2
UHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOwogICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0p
OwogICAgIHJldHVybiBvYmplY3Q7CiB9CiAKLVN0cnVjdHVyZSogV2ViQXNzZW1ibHlQcm90b3R5
cGU6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgcHJvdG90eXBlKQorU3RydWN0dXJlKiDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDw
nZSi8J2UqvCdlJ/wnZSp8J2UtlByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiB7CiAgICAgcmV0
dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUlu
Zm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogfQogCi12b2lkIFdlYkFz
c2VtYmx5UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit2b2lkIPCdlJrwnZSi8J2U
n/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogfQogCi1XZWJBc3Nl
bWJseVByb3RvdHlwZTo6V2ViQXNzZW1ibHlQcm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKK/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2UHJv
dG90eXBlOjrwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtlByb3Rv
dHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogQmFzZSh2bSwgc3RydWN0
dXJlKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5UHJvdG90eXBlLmgKaW5kZXggMjg3ZDVhNS4uZDFlOGJmZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlQcm90b3R5cGUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVByb3RvdHlwZS5oCkBAIC0z
MiwxMiArMzIsMTIgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIFdlYkFzc2VtYmx5UHJv
dG90eXBlIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworY2xhc3Mg8J2UmvCdlKLwnZSf8J2U
hPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZQcm90b3R5cGUgOiBwdWJsaWMgSlNOb25GaW5h
bE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CiAg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJl
RmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOwogCi0gICAgc3RhdGljIFdlYkFzc2VtYmx5
UHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOworICAg
IHN0YXRpYyDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtlByb3Rv
dHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKICAgICBzdGF0
aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFs
dWUpOwogCiAgICAgREVDTEFSRV9JTkZPOwpAQCAtNDYsNyArNDYsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwogCiBwcml2YXRlOgotICAgIFdlYkFzc2VtYmx5
UHJvdG90eXBlKFZNJiwgU3RydWN0dXJlKik7CisgICAg8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw
8J2UovCdlKrwnZSf8J2UqfCdlLZQcm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yLmNwcApp
bmRleCA2NDRjNDcwLi5kZjcxNzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVj
dG9yLmNwcApAQCAtMzcsNjMgKzM3LDYzIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1jb25zdCBD
bGFzc0luZm8gV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAi
RnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCAmY29uc3RydWN0b3JUYWJsZVdlYkFzc2VtYmx5UnVu
dGltZUVycm9yLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFdlYkFzc2VtYmx5UnVudGltZUVycm9yQ29u
c3RydWN0b3IpIH07Citjb25zdCBDbGFzc0luZm8g8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2U
ovCdlKrwnZSf8J2UqfCdlLZSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVu
Y3Rpb24iLCAmQmFzZTo6c19pbmZvLCAmY29uc3RydWN0b3JUYWJsZVdlYkFzc2VtYmx5UnVudGlt
ZUVycm9yLCBDUkVBVEVfTUVUSE9EX1RBQkxFKPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLw
nZSq8J2Un/CdlKnwnZS2UnVudGltZUVycm9yQ29uc3RydWN0b3IpIH07CiAKLS8qIFNvdXJjZSBm
b3IgV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5sdXQuaAorLyogU291cmNlIGZv
ciDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtlJ1bnRpbWVFcnJv
ckNvbnN0cnVjdG9yLmx1dC5oCiAgQGJlZ2luIGNvbnN0cnVjdG9yVGFibGVXZWJBc3NlbWJseVJ1
bnRpbWVFcnJvcgogIEBlbmQKICAqLwogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yKEV4ZWNTdGF0ZSogZXhlYykK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpT8J2UmvCdlKLw
nZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZSdW50aW1lRXJyb3IoRXhlY1N0YXRl
KiBleGVjKQogewogICAgIGF1dG8mIHZtID0gZXhlYy0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSBtZXNzYWdlID0gZXhlYy0+YXJn
dW1lbnQoMCk7Ci0gICAgYXV0byogc3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRl
U3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCksIGFzSW50ZXJuYWxGdW5j
dGlvbihleGVjLT5qc0NhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KCktPldlYkFzc2VtYmx5UnVudGlt
ZUVycm9yU3RydWN0dXJlKCkpOworICAgIGF1dG8qIHN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rp
b246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGV4ZWMsIGV4ZWMtPm5ld1RhcmdldCgpLCBhc0lu
dGVybmFsRnVuY3Rpb24oZXhlYy0+anNDYWxsZWUoKSktPmdsb2JhbE9iamVjdCgpLT7wnZSa8J2U
ovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtlJ1bnRpbWVFcnJvclN0cnVjdHVy
ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3I6OmNy
ZWF0ZShleGVjLCB2bSwgc3RydWN0dXJlLCBtZXNzYWdlKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2UnVu
dGltZUVycm9yOjpjcmVhdGUoZXhlYywgdm0sIHN0cnVjdHVyZSwgbWVzc2FnZSkpOwogfQogCi1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSlNXZWJBc3NlbWJseVJ1bnRp
bWVFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjYWxsSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtlJ1
bnRpbWVFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgSlNWYWx1ZSBtZXNzYWdlID0gZXhl
Yy0+YXJndW1lbnQoMCk7Ci0gICAgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVyZSA9IGFzSW50ZXJu
YWxGdW5jdGlvbihleGVjLT5qc0NhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KCktPldlYkFzc2VtYmx5
UnVudGltZUVycm9yU3RydWN0dXJlKCk7CisgICAgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVyZSA9
IGFzSW50ZXJuYWxGdW5jdGlvbihleGVjLT5qc0NhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KCktPvCd
lJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2UnVudGltZUVycm9yU3Ry
dWN0dXJlKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShFcnJvckluc3RhbmNlOjpjcmVh
dGUoZXhlYywgZXJyb3JTdHJ1Y3R1cmUsIG1lc3NhZ2UsIG51bGxwdHIsIFR5cGVOb3RoaW5nLCBm
YWxzZSkpOwogfQogCi1XZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yKiBXZWJBc3Nl
bWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUqIHRoaXNQcm90b3R5cGUp
CivwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtlJ1bnRpbWVFcnJv
ckNvbnN0cnVjdG9yKiDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2U
tlJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwg8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZSdW50aW1l
RXJyb3JQcm90b3R5cGUqIHRoaXNQcm90b3R5cGUpCiB7Ci0gICAgYXV0byogY29uc3RydWN0b3Ig
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxXZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0
cnVjdG9yPih2bS5oZWFwKSkgV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvcih2bSwg
c3RydWN0dXJlKTsKKyAgICBhdXRvKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2UnVudGlt
ZUVycm9yQ29uc3RydWN0b3I+KHZtLmhlYXApKSDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi
8J2UqvCdlJ/wnZSp8J2UtlJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOwog
ICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgdGhpc1Byb3RvdHlwZSk7CiAgICAg
cmV0dXJuIGNvbnN0cnVjdG9yOwogfQogCi1TdHJ1Y3R1cmUqIFdlYkFzc2VtYmx5UnVudGltZUVy
cm9yQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorU3RydWN0dXJlKiDwnZSa8J2UovCdlJ/w
nZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtlJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yOjpj
cmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHByb3RvdHlwZSkKIHsKICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyks
IGluZm8oKSk7CiB9CiAKLXZvaWQgV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvcjo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBXZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZSog
cHJvdG90eXBlKQordm9pZCDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp
8J2UtlJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIPCdlJrw
nZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2UnVudGltZUVycm9yUHJvdG90
eXBlKiBwcm90b3R5cGUpCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIEFTQ0lJTGl0
ZXJhbCgiUnVudGltZUVycm9yIikpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHByb3RvdHlwZSwgUmVhZE9ubHkgfCBEb250
RW51bSB8IERvbnREZWxldGUpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDEpLCBSZWFkT25seSB8IERvbnRFbnVt
IHwgRG9udERlbGV0ZSk7CiB9CiAKLVdlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3I6
OldlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKK/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2UnVu
dGltZUVycm9yQ29uc3RydWN0b3I6OvCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2U
n/CdlKnwnZS2UnVudGltZUVycm9yQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKIHsKIH0KIAotQ29uc3RydWN0VHlwZSBX
ZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2Vs
bCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCitDb25zdHJ1Y3RUeXBlIPCdlJrwnZSi
8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2UnVudGltZUVycm9yQ29uc3RydWN0
b3I6OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0
YSkKIHsKLSAgICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdEpTV2Vi
QXNzZW1ibHlSdW50aW1lRXJyb3I7CisgICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24g
PSBjb25zdHJ1Y3RKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2
UnVudGltZUVycm9yOwogICAgIHJldHVybiBDb25zdHJ1Y3RUeXBlOjpIb3N0OwogfQogCi1DYWxs
VHlwZSBXZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YShKU0Nl
bGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCitDYWxsVHlwZSDwnZSa8J2UovCdlJ/wnZSE8J2UsPCd
lLDwnZSi8J2UqvCdlJ/wnZSp8J2UtlJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0
YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCiB7Ci0gICAgY2FsbERhdGEubmF0aXZlLmZ1
bmN0aW9uID0gY2FsbEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3I7CisgICAgY2FsbERhdGEubmF0
aXZlLmZ1bmN0aW9uID0gY2FsbEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf
8J2UqfCdlLZSdW50aW1lRXJyb3I7CiAgICAgcmV0dXJuIENhbGxUeXBlOjpIb3N0OwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRp
bWVFcnJvckNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yLmgKaW5kZXggNzdmYjZlNC4uMTdmYzViYyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlSdW50
aW1lRXJyb3JDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3IuaApAQCAtMzIsMjMgKzMyLDIzIEBA
CiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBXZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3Rv
dHlwZTsKK2NsYXNzIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2
UnVudGltZUVycm9yUHJvdG90eXBlOwogCi1jbGFzcyBXZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNv
bnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24geworY2xhc3Mg8J2UmvCdlKLwnZSf
8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZSdW50aW1lRXJyb3JDb25zdHJ1Y3RvciA6
IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEludGVybmFs
RnVuY3Rpb24gQmFzZTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CiAKLSAgICBz
dGF0aWMgV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiwgU3Ry
dWN0dXJlKiwgV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUqKTsKKyAgICBzdGF0aWMg
8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZSdW50aW1lRXJyb3JD
b25zdHJ1Y3RvciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwg8J2UmvCdlKLwnZSf8J2UhPCdlLDw
nZSw8J2UovCdlKrwnZSf8J2UqfCdlLZSdW50aW1lRXJyb3JQcm90b3R5cGUqKTsKICAgICBzdGF0
aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFs
dWUpOwogCiAgICAgREVDTEFSRV9JTkZPOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihWTSYsIFdlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlKik7CisgICAgdm9p
ZCBmaW5pc2hDcmVhdGlvbihWTSYsIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2U
n/CdlKnwnZS2UnVudGltZUVycm9yUHJvdG90eXBlKik7CiAKIHByaXZhdGU6Ci0gICAgV2ViQXNz
ZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSopOworICAgIPCdlJrw
nZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2UnVudGltZUVycm9yQ29uc3Ry
dWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKICAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25z
dHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKICAgICBzdGF0aWMgQ2FsbFR5cGUg
Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJv
clByb3RvdHlwZS5jcHAKaW5kZXggYjM3NGRiZC4uZDg4MzEwMCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5UnVudGlt
ZUVycm9yUHJvdG90eXBlLmNwcApAQCAtMzUsMzEgKzM1LDMxIEBACiAKIG5hbWVzcGFjZSBKU0Mg
ewogCi1jb25zdCBDbGFzc0luZm8gV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGU6OnNf
aW5mbyA9IHsgIldlYkFzc2VtYmx5LlJ1bnRpbWVFcnJvci5wcm90b3R5cGUiLCAmQmFzZTo6c19p
bmZvLCAmcHJvdG90eXBlVGFibGVXZWJBc3NlbWJseVJ1bnRpbWVFcnJvciwgQ1JFQVRFX01FVEhP
RF9UQUJMRShXZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZSkgfTsKK2NvbnN0IENsYXNz
SW5mbyDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtlJ1bnRpbWVF
cnJvclByb3RvdHlwZTo6c19pbmZvID0geyAiV2ViQXNzZW1ibHkuUnVudGltZUVycm9yLnByb3Rv
dHlwZSIsICZCYXNlOjpzX2luZm8sICZwcm90b3R5cGVUYWJsZVdlYkFzc2VtYmx5UnVudGltZUVy
cm9yLCBDUkVBVEVfTUVUSE9EX1RBQkxFKPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq
8J2Un/CdlKnwnZS2UnVudGltZUVycm9yUHJvdG90eXBlKSB9OwogCi0vKiBTb3VyY2UgZm9yIFdl
YkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlLmx1dC5oCisvKiBTb3VyY2UgZm9yIPCdlJrw
nZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2UnVudGltZUVycm9yUHJvdG90
eXBlLmx1dC5oCiAgQGJlZ2luIHByb3RvdHlwZVRhYmxlV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IK
ICBAZW5kCiAgKi8KIAotV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUqIFdlYkFzc2Vt
Ymx5UnVudGltZUVycm9yUHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSogc3RydWN0dXJlKQor8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrw
nZSf8J2UqfCdlLZSdW50aW1lRXJyb3JQcm90b3R5cGUqIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2U
sPCdlKLwnZSq8J2Un/CdlKnwnZS2UnVudGltZUVycm9yUHJvdG90eXBlOjpjcmVhdGUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewotICAgIGF1dG8qIG9i
amVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5UnVudGltZUVycm9y
UHJvdG90eXBlPih2bS5oZWFwKSkgV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUodm0s
IHN0cnVjdHVyZSk7CisgICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw88J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZSdW50aW1lRXJy
b3JQcm90b3R5cGU+KHZtLmhlYXApKSDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCd
lJ/wnZSp8J2UtlJ1bnRpbWVFcnJvclByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKICAgICBvYmpl
Y3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gb2JqZWN0OwogfQogCi1TdHJ1Y3R1
cmUqIFdlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK1N0
cnVjdHVyZSog8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZSdW50
aW1lRXJyb3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQogewogICAgIHJldHVybiBTdHJ1Y3R1
cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5
cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKIH0KIAotdm9pZCBXZWJBc3NlbWJseVJ1bnRp
bWVFcnJvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQordm9pZCDwnZSa8J2UovCd
lJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtlJ1bnRpbWVFcnJvclByb3RvdHlwZTo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsK
IH0KIAotV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGU6OldlYkFzc2VtYmx5UnVudGlt
ZUVycm9yUHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCivwnZSa8J2UovCd
lJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtlJ1bnRpbWVFcnJvclByb3RvdHlwZTo6
8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZSdW50aW1lRXJyb3JQ
cm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEJhc2Uodm0sIHN0
cnVjdHVyZSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZS5oCmluZGV4IDIwNzdm
YTkuLjU3YWI5ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUuaApAQCAtMzIsMTIg
KzMyLDEyIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBXZWJBc3NlbWJseVJ1bnRpbWVF
cnJvclByb3RvdHlwZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK2NsYXNzIPCdlJrwnZSi
8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2UnVudGltZUVycm9yUHJvdG90eXBl
IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgogICAgIHR5cGVkZWYgSlNOb25G
aW5hbE9iamVjdCBCYXNlOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFn
cyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsKIAotICAg
IHN0YXRpYyBXZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMg8J2UmvCdlKLwnZSf8J2UhPCd
lLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZSdW50aW1lRXJyb3JQcm90b3R5cGUqIGNyZWF0ZShW
TSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKIAogICAgIERF
Q0xBUkVfSU5GTzsKQEAgLTQ2LDcgKzQ2LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNo
Q3JlYXRpb24oVk0mKTsKIAogcHJpdmF0ZToKLSAgICBXZWJBc3NlbWJseVJ1bnRpbWVFcnJvclBy
b3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOworICAgIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCd
lKLwnZSq8J2Un/CdlKnwnZS2UnVudGltZUVycm9yUHJvdG90eXBlKFZNJiwgU3RydWN0dXJlKik7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3IuY3BwCmluZGV4
IDg4ZjU2M2MuLmMyMDUwYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmNwcApAQCAtMzgsMTQg
KzM4LDE0IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1jb25zdCBDbGFzc0luZm8gV2ViQXNzZW1i
bHlUYWJsZUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8s
ICZjb25zdHJ1Y3RvclRhYmxlV2ViQXNzZW1ibHlUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShX
ZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3IpIH07Citjb25zdCBDbGFzc0luZm8g8J2UmvCdlKLw
nZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZUYWJsZUNvbnN0cnVjdG9yOjpzX2lu
Zm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sICZjb25zdHJ1Y3RvclRhYmxlV2ViQXNz
ZW1ibHlUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRSjwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDw
nZSi8J2UqvCdlJ/wnZSp8J2UtlRhYmxlQ29uc3RydWN0b3IpIH07CiAKLS8qIFNvdXJjZSBmb3Ig
V2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmx1dC5oCisvKiBTb3VyY2UgZm9yIPCdlJrwnZSi
8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2VGFibGVDb25zdHJ1Y3Rvci5sdXQu
aAogIEBiZWdpbiBjb25zdHJ1Y3RvclRhYmxlV2ViQXNzZW1ibHlUYWJsZQogIEBlbmQKICAqLwog
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dlYkFzc2Vt
Ymx5VGFibGUoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY29uc3RydWN0SlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp
8J2UtlRhYmxlKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwog
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtOTEsNTUg
KzkxLDU1IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpT
V2ViQXNzZW1ibHlUYWJsZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgfQogCiAgICAgdGhyb3dTY29w
ZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1dlYkFzc2VtYmx5VGFi
bGU6OmNyZWF0ZShleGVjLCB2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5XZWJBc3Nl
bWJseVRhYmxlU3RydWN0dXJlKCksIGluaXRpYWwsIG1heGltdW0pKTsKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCd
lLZUYWJsZTo6Y3JlYXRlKGV4ZWMsIHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPvCd
lJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2VGFibGVTdHJ1Y3R1cmUo
KSwgaW5pdGlhbCwgbWF4aW11bSkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjYWxsSlNXZWJBc3NlbWJseVRhYmxlKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2U
sPCdlKLwnZSq8J2Un/CdlKnwnZS2VGFibGUoRXhlY1N0YXRlKiBleGVjKQogewogICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2Fs
bGVkQXNGdW5jdGlvblR5cGVFcnJvcihleGVjLCBzY29wZSwgIldlYkFzc2VtYmx5LlRhYmxlIikp
OwogfQogCi1XZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3IqIFdlYkFzc2VtYmx5VGFibGVDb25z
dHJ1Y3Rvcjo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFdlYkFzc2VtYmx5
VGFibGVQcm90b3R5cGUqIHRoaXNQcm90b3R5cGUpCivwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDw
nZSi8J2UqvCdlJ/wnZSp8J2UtlRhYmxlQ29uc3RydWN0b3IqIPCdlJrwnZSi8J2Un/CdlITwnZSw
8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2VGFibGVDb25zdHJ1Y3Rvcjo6Y3JlYXRlKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2U
n/CdlKnwnZS2VGFibGVQcm90b3R5cGUqIHRoaXNQcm90b3R5cGUpCiB7Ci0gICAgYXV0byogY29u
c3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxXZWJBc3NlbWJseVRhYmxlQ29u
c3RydWN0b3I+KHZtLmhlYXApKSBXZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3Iodm0sIHN0cnVj
dHVyZSk7CisgICAgYXV0byogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDzwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtlRhYmxlQ29uc3Ry
dWN0b3I+KHZtLmhlYXApKSDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp
8J2UtlRhYmxlQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CiAgICAgY29uc3RydWN0b3ItPmZp
bmlzaENyZWF0aW9uKHZtLCB0aGlzUHJvdG90eXBlKTsKICAgICByZXR1cm4gY29uc3RydWN0b3I7
CiB9CiAKLVN0cnVjdHVyZSogV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1
Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3Rv
dHlwZSkKK1N0cnVjdHVyZSog8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2U
qfCdlLZUYWJsZUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKIHsKICAgICByZXR1cm4gU3Ry
dWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmpl
Y3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiB9CiAKLXZvaWQgV2ViQXNzZW1ibHlU
YWJsZUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFdlYkFzc2VtYmx5VGFibGVQ
cm90b3R5cGUqIHByb3RvdHlwZSkKK3ZvaWQg8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCd
lKrwnZSf8J2UqfCdlLZUYWJsZUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIPCd
lJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2VGFibGVQcm90b3R5cGUq
IHByb3RvdHlwZSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgQVNDSUlMaXRlcmFs
KCJUYWJsZSIpKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJl
YWRPbmx5KTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlO
YW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxl
dGUpOwogfQogCi1XZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3I6OldlYkFzc2VtYmx5VGFibGVD
b25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQor8J2UmvCdlKLwnZSf8J2U
hPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZUYWJsZUNvbnN0cnVjdG9yOjrwnZSa8J2UovCd
lJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtlRhYmxlQ29uc3RydWN0b3IoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKIHsKIH0K
IAotQ29uc3RydWN0VHlwZSBXZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3I6OmdldENvbnN0cnVj
dERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKK0NvbnN0cnVjdFR5
cGUg8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZUYWJsZUNvbnN0
cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVj
dERhdGEpCiB7Ci0gICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RK
U1dlYkFzc2VtYmx5VGFibGU7CisgICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBj
b25zdHJ1Y3RKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2VGFi
bGU7CiAgICAgcmV0dXJuIENvbnN0cnVjdFR5cGU6Okhvc3Q7CiB9CiAKLUNhbGxUeXBlIFdlYkFz
c2VtYmx5VGFibGVDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNh
bGxEYXRhKQorQ2FsbFR5cGUg8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2U
qfCdlLZUYWJsZUNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2Fs
bERhdGEpCiB7Ci0gICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY2FsbEpTV2ViQXNzZW1i
bHlUYWJsZTsKKyAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsSlPwnZSa8J2UovCd
lJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtlRhYmxlOwogICAgIHJldHVybiBDYWxs
VHlwZTo6SG9zdDsKIH0KIAotdm9pZCBXZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3I6OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQg8J2UmvCd
lKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZUYWJsZUNvbnN0cnVjdG9yOjp2
aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAg
YXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxXZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3IqPihj
ZWxsKTsKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PPCdlJrwnZSi8J2Un/CdlITwnZSw
8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2VGFibGVDb25zdHJ1Y3Rvcio+KGNlbGwpOwogICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBCYXNlOjp2
aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3Iu
aAppbmRleCBhNjFjN2FjLi42YTNhMzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3IuaApAQCAtMzIs
MjMgKzMyLDIzIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBXZWJBc3NlbWJseVRhYmxl
UHJvdG90eXBlOworY2xhc3Mg8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2U
qfCdlLZUYWJsZVByb3RvdHlwZTsKIAotY2xhc3MgV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9y
IDogcHVibGljIEludGVybmFsRnVuY3Rpb24geworY2xhc3Mg8J2UmvCdlKLwnZSf8J2UhPCdlLDw
nZSw8J2UovCdlKrwnZSf8J2UqfCdlLZUYWJsZUNvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFs
RnVuY3Rpb24gewogcHVibGljOgogICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOwog
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVy
ZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsKIAotICAgIHN0YXRpYyBXZWJBc3NlbWJs
eVRhYmxlQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIFdlYkFzc2VtYmx5VGFi
bGVQcm90b3R5cGUqKTsKKyAgICBzdGF0aWMg8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCd
lKrwnZSf8J2UqfCdlLZUYWJsZUNvbnN0cnVjdG9yKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCDw
nZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtlRhYmxlUHJvdG90eXBl
Kik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxP
YmplY3QqLCBKU1ZhbHVlKTsKIAogICAgIERFQ0xBUkVfSU5GTzsKIAogcHJvdGVjdGVkOgotICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBXZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlKik7Cisg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLw
nZSq8J2Un/CdlKnwnZS2VGFibGVQcm90b3R5cGUqKTsKIAogcHJpdmF0ZToKLSAgICBXZWJBc3Nl
bWJseVRhYmxlQ29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICDwnZSa8J2UovCdlJ/w
nZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtlRhYmxlQ29uc3RydWN0b3IoVk0mLCBTdHJ1
Y3R1cmUqKTsKICAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2Vs
bCosIENvbnN0cnVjdERhdGEmKTsKICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlND
ZWxsKiwgQ2FsbERhdGEmKTsKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCos
IFNsb3RWaXNpdG9yJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUuY3BwCmluZGV4IDE1ZTU4MGYuLjQ4YWE0
YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5
VGFibGVQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5VGFibGVQcm90b3R5cGUuY3BwCkBAIC00NCw5ICs0NCw5IEBAIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNTZXQoRXhl
Y1N0YXRlKik7CiAKIG5hbWVzcGFjZSBKU0MgewogCi1jb25zdCBDbGFzc0luZm8gV2ViQXNzZW1i
bHlUYWJsZVByb3RvdHlwZTo6c19pbmZvID0geyAiV2ViQXNzZW1ibHkuVGFibGUucHJvdG90eXBl
IiwgJkJhc2U6OnNfaW5mbywgJnByb3RvdHlwZVRhYmxlV2ViQXNzZW1ibHlUYWJsZSwgQ1JFQVRF
X01FVEhPRF9UQUJMRShXZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlKSB9OworY29uc3QgQ2xhc3NJ
bmZvIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2VGFibGVQcm90
b3R5cGU6OnNfaW5mbyA9IHsgIldlYkFzc2VtYmx5LlRhYmxlLnByb3RvdHlwZSIsICZCYXNlOjpz
X2luZm8sICZwcm90b3R5cGVUYWJsZVdlYkFzc2VtYmx5VGFibGUsIENSRUFURV9NRVRIT0RfVEFC
TEUo8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZUYWJsZVByb3Rv
dHlwZSkgfTsKIAotLyogU291cmNlIGZvciBXZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmx1dC5o
CisvKiBTb3VyY2UgZm9yIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnw
nZS2VGFibGVQcm90b3R5cGUubHV0LmgKICBAYmVnaW4gcHJvdG90eXBlVGFibGVXZWJBc3NlbWJs
eVRhYmxlCiAgbGVuZ3RoIHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNMZW5ndGggRG9udEVudW18
QWNjZXNzb3IgMAogIGdyb3cgICB3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jR3JvdyAgIERvbnRF
bnVtfEZ1bmN0aW9uIDEKQEAgLTU1LDEwICs1NSwxMCBAQCBjb25zdCBDbGFzc0luZm8gV2ViQXNz
ZW1ibHlUYWJsZVByb3RvdHlwZTo6c19pbmZvID0geyAiV2ViQXNzZW1ibHkuVGFibGUucHJvdG90
eQogIEBlbmQKICAqLwogCi1zdGF0aWMgQUxXQVlTX0lOTElORSBKU1dlYkFzc2VtYmx5VGFibGUq
IGdldFRhYmxlKEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCBKU1ZhbHVlIHYpCitzdGF0aWMgQUxX
QVlTX0lOTElORSBKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2
VGFibGUqIGdldFRhYmxlKEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCBKU1ZhbHVlIHYpCiB7CiAg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNXZWJB
c3NlbWJseVRhYmxlKiByZXN1bHQgPSBqc0R5bmFtaWNDYXN0PEpTV2ViQXNzZW1ibHlUYWJsZSo+
KHZtLCB2KTsKKyAgICBKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnw
nZS2VGFibGUqIHJlc3VsdCA9IGpzRHluYW1pY0Nhc3Q8SlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCd
lLDwnZSi8J2UqvCdlJ/wnZSp8J2UtlRhYmxlKj4odm0sIHYpOwogICAgIGlmICghcmVzdWx0KSB7
CiAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIAogICAgICAgICAgICAg
Y3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiZXhwZWN0ZWQgfHRoaXN8IHZhbHVl
IHRvIGJlIGFuIGluc3RhbmNlIG9mIFdlYkFzc2VtYmx5LlRhYmxlIikpKTsKQEAgLTcyLDcgKzcy
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseVRhYmxlUHJvdG9G
dW5jTGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYykKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNXZWJB
c3NlbWJseVRhYmxlKiB0YWJsZSA9IGdldFRhYmxlKGV4ZWMsIHZtLCBleGVjLT50aGlzVmFsdWUo
KSk7CisgICAgSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtlRh
YmxlKiB0YWJsZSA9IGdldFRhYmxlKGV4ZWMsIHZtLCBleGVjLT50aGlzVmFsdWUoKSk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHRhYmxlLT5zaXplKCkpKTsKIH0KQEAgLTgy
LDcgKzgyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseVRhYmxl
UHJvdG9GdW5jR3JvdyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
ICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpT
V2ViQXNzZW1ibHlUYWJsZSogdGFibGUgPSBnZXRUYWJsZShleGVjLCB2bSwgZXhlYy0+dGhpc1Zh
bHVlKCkpOworICAgIEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCd
lLZUYWJsZSogdGFibGUgPSBnZXRUYWJsZShleGVjLCB2bSwgZXhlYy0+dGhpc1ZhbHVlKCkpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAK
ICAgICB1aW50MzJfdCBpbmRleCA9IHRvTm9uV3JhcHBpbmdVaW50MzIoZXhlYywgZXhlYy0+YXJn
dW1lbnQoMCkpOwpAQCAtOTgsNyArOTgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNHZXQoRXhlY1N0YXRlKiBleGVjKQogICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAKLSAgICBKU1dlYkFzc2VtYmx5VGFibGUqIHRhYmxlID0gZ2V0VGFibGUoZXhlYywg
dm0sIGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCd
lKLwnZSq8J2Un/CdlKnwnZS2VGFibGUqIHRhYmxlID0gZ2V0VGFibGUoZXhlYywgdm0sIGV4ZWMt
PnRoaXNWYWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogCiAgICAgdWludDMyX3QgaW5kZXggPSB0b05vbldyYXBwaW5nVWludDMy
KGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKTsKQEAgLTExNiwxMiArMTE2LDEyIEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY1NldChFeGVjU3Rh
dGUqIGV4ZWMpCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTV2ViQXNzZW1ibHlUYWJsZSogdGFi
bGUgPSBnZXRUYWJsZShleGVjLCB2bSwgZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIEpT8J2UmvCd
lKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZUYWJsZSogdGFibGUgPSBnZXRU
YWJsZShleGVjLCB2bSwgZXhlYy0+dGhpc1ZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBKU1ZhbHVlIHZhbHVlID0g
ZXhlYy0+YXJndW1lbnQoMSk7Ci0gICAgV2ViQXNzZW1ibHlGdW5jdGlvbiogd2FzbUZ1bmN0aW9u
OwotICAgIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uKiB3YXNtV3JhcHBlckZ1bmN0aW9uOwor
ICAgIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2RnVuY3Rpb24q
IHdhc21GdW5jdGlvbjsKKyAgICDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/w
nZSp8J2UtldyYXBwZXJGdW5jdGlvbiogd2FzbVdyYXBwZXJGdW5jdGlvbjsKICAgICBpZiAoIXZh
bHVlLmlzTnVsbCgpICYmICFpc1dlYkFzc2VtYmx5SG9zdEZ1bmN0aW9uKHZtLCB2YWx1ZSwgd2Fz
bUZ1bmN0aW9uLCB3YXNtV3JhcHBlckZ1bmN0aW9uKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVUeXBlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJXZWJBc3NlbWJseS5UYWJsZS5wcm90b3R5cGUuc2V0IGV4cGVj
dHMgdGhlIHNlY29uZCBhcmd1bWVudCB0byBiZSBudWxsIG9yIGFuIGluc3RhbmNlIG9mIFdlYkFz
c2VtYmx5LkZ1bmN0aW9uIikpKSk7CiAKQEAgLTE0NSwyNSArMTQ1LDI1IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY1NldChFeGVjU3RhdGUq
IGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAot
V2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZSogV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZTo6Y3Jl
YXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK/CdlJrw
nZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2VGFibGVQcm90b3R5cGUqIPCd
lJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2VGFibGVQcm90b3R5cGU6
OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7
Ci0gICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1i
bHlUYWJsZVByb3RvdHlwZT4odm0uaGVhcCkpIFdlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUodm0s
IHN0cnVjdHVyZSk7CisgICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw88J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZUYWJsZVByb3Rv
dHlwZT4odm0uaGVhcCkpIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnw
nZS2VGFibGVQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CiAgICAgb2JqZWN0LT5maW5pc2hDcmVh
dGlvbih2bSk7CiAgICAgcmV0dXJuIG9iamVjdDsKIH0KIAotU3RydWN0dXJlKiBXZWJBc3NlbWJs
eVRhYmxlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK1N0cnVjdHVyZSog8J2UmvCdlKLwnZSf
8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZUYWJsZVByb3RvdHlwZTo6Y3JlYXRlU3Ry
dWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90
b3R5cGUpCiB7CiAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkp
OwogfQogCi12b2lkIFdlYkFzc2VtYmx5VGFibGVQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSkKK3ZvaWQg8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZU
YWJsZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogewogICAgIEJhc2U6OmZpbmlz
aENyZWF0aW9uKHZtKTsKICAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOwogfQogCi1X
ZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlOjpXZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCivwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2U
qvCdlJ/wnZSp8J2UtlRhYmxlUHJvdG90eXBlOjrwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi
8J2UqvCdlJ/wnZSp8J2UtlRhYmxlUHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCiAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmgKaW5k
ZXggOGFiNDI4My4uMGNlNzE0NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUuaApAQCAtMzIsMTIgKzMyLDEy
IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBXZWJBc3NlbWJseVRhYmxlUHJvdG90eXBl
IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworY2xhc3Mg8J2UmvCdlKLwnZSf8J2UhPCdlLDw
nZSw8J2UovCdlKrwnZSf8J2UqfCdlLZUYWJsZVByb3RvdHlwZSA6IHB1YmxpYyBKU05vbkZpbmFs
T2JqZWN0IHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKICAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVG
bGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CiAKLSAgICBzdGF0aWMgV2ViQXNzZW1ibHlU
YWJsZVByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsK
KyAgICBzdGF0aWMg8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZU
YWJsZVByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsK
ICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVj
dCosIEpTVmFsdWUpOwogCiAgICAgREVDTEFSRV9JTkZPOwpAQCAtNDYsNyArNDYsNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwogCiBwcml2YXRlOgotICAgIFdl
YkFzc2VtYmx5VGFibGVQcm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICDwnZSa8J2UovCd
lJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtlRhYmxlUHJvdG90eXBlKFZNJiwgU3Ry
dWN0dXJlKik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VG9KU0NhbGxlZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRvSlNDYWxsZWUuY3BwCmluZGV4IDRi
OWM4NmYuLjZlYjBmNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5VG9KU0NhbGxlZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlUb0pTQ2FsbGVlLmNwcApAQCAtMzMsMzQgKzMzLDM0IEBACiAKIG5h
bWVzcGFjZSBKU0MgewogCi1jb25zdCBDbGFzc0luZm8gV2ViQXNzZW1ibHlUb0pTQ2FsbGVlOjpz
X2luZm8gPSB7ICJXZWJBc3NlbWJseVRvSlNDYWxsZWUiLCBudWxscHRyLCAwLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKFdlYkFzc2VtYmx5VG9KU0NhbGxlZSkgfTsKK2NvbnN0IENsYXNzSW5mbyDwnZSa
8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtlRvSlNDYWxsZWU6OnNfaW5m
byA9IHsgIvCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2VG9KU0Nh
bGxlZSIsIG51bGxwdHIsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUo8J2UmvCdlKLwnZSf8J2UhPCd
lLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZUb0pTQ2FsbGVlKSB9OwogCi1XZWJBc3NlbWJseVRv
SlNDYWxsZWUqIFdlYkFzc2VtYmx5VG9KU0NhbGxlZTo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIEpTV2ViQXNzZW1ibHlNb2R1bGUqIG1vZHVsZSkKK/CdlJrwnZSi8J2Un/Cd
lITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2VG9KU0NhbGxlZSog8J2UmvCdlKLwnZSf8J2U
hPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZUb0pTQ2FsbGVlOjpjcmVhdGUoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCd
lJ/wnZSp8J2Utk1vZHVsZSogbW9kdWxlKQogewotICAgIFdlYkFzc2VtYmx5VG9KU0NhbGxlZSog
Y2FsbGVlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHlUb0pTQ2FsbGVl
Pih2bS5oZWFwKSkgV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKHZtLCBzdHJ1Y3R1cmUpOworICAgIPCd
lJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2VG9KU0NhbGxlZSogY2Fs
bGVlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw88J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw
8J2UovCdlKrwnZSf8J2UqfCdlLZUb0pTQ2FsbGVlPih2bS5oZWFwKSkg8J2UmvCdlKLwnZSf8J2U
hPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZUb0pTQ2FsbGVlKHZtLCBzdHJ1Y3R1cmUpOwog
ICAgIGNhbGxlZS0+ZmluaXNoQ3JlYXRpb24odm0sIG1vZHVsZSk7CiAgICAgcmV0dXJuIGNhbGxl
ZTsKIH0KIAotU3RydWN0dXJlKiBXZWJBc3NlbWJseVRvSlNDYWxsZWU6OmNyZWF0ZVN0cnVjdHVy
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBl
KQorU3RydWN0dXJlKiDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2U
tlRvSlNDYWxsZWU6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQogewotICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKFdlYkFzc2VtYmx5VG9K
U0NhbGxlZVR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICByZXR1cm4gU3RydWN0
dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyjwnZSa8J2U
ovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtlRvSlNDYWxsZWVUeXBlLCBTdHJ1
Y3R1cmVGbGFncyksIGluZm8oKSk7CiB9CiAKLVdlYkFzc2VtYmx5VG9KU0NhbGxlZTo6V2ViQXNz
ZW1ibHlUb0pTQ2FsbGVlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCivwnZSa8J2UovCd
lJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtlRvSlNDYWxsZWU6OvCdlJrwnZSi8J2U
n/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2VG9KU0NhbGxlZShWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlKQogICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQogewogfQogCi12b2lk
IFdlYkFzc2VtYmx5VG9KU0NhbGxlZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU1dlYkFzc2Vt
Ymx5TW9kdWxlKiBtb2R1bGUpCit2b2lkIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq
8J2Un/CdlKnwnZS2VG9KU0NhbGxlZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU/CdlJrwnZSi
8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2TW9kdWxlKiBtb2R1bGUpCiB7CiAg
ICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIG1fbW9kdWxlLnNldCh2bSwgdGhpcywg
bW9kdWxlKTsKIH0KIAotdm9pZCBXZWJBc3NlbWJseVRvSlNDYWxsZWU6OnZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQg8J2UmvCdlKLwnZSf8J2U
hPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZUb0pTQ2FsbGVlOjp2aXNpdENoaWxkcmVuKEpT
Q2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgYXV0byogdGhpc09iamVj
dCA9IGpzQ2FzdDxXZWJBc3NlbWJseVRvSlNDYWxsZWUqPihjZWxsKTsKKyAgICBhdXRvKiB0aGlz
T2JqZWN0ID0ganNDYXN0PPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnw
nZS2VG9KU0NhbGxlZSo+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhp
c09iamVjdCwgaW5mbygpKTsKIAogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwg
dmlzaXRvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseVRvSlNDYWxsZWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5VG9KU0NhbGxlZS5oCmluZGV4IDE5ZjQ3OTUuLjI5ZGJhNzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VG9KU0NhbGxlZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VG9KU0NhbGxlZS5oCkBA
IC0zMSwyNyArMzEsMjcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIEpTV2ViQXNzZW1i
bHlNb2R1bGU7CitjbGFzcyBKU/CdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/Cd
lKnwnZS2TW9kdWxlOwogCi1jbGFzcyBXZWJBc3NlbWJseVRvSlNDYWxsZWUgZmluYWwgOiBwdWJs
aWMgSlNDZWxsIHsKK2NsYXNzIPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/Cd
lKnwnZS2VG9KU0NhbGxlZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogcHVibGljOgogICAgIHR5
cGVkZWYgSlNDZWxsIEJhc2U7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOwogCi0gICAg
c3RhdGljIFdlYkFzc2VtYmx5VG9KU0NhbGxlZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgSlNX
ZWJBc3NlbWJseU1vZHVsZSopOworICAgIHN0YXRpYyDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDw
nZSi8J2UqvCdlJ/wnZSp8J2UtlRvSlNDYWxsZWUqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIEpT
8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZNb2R1bGUqKTsKICAg
ICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCos
IEpTVmFsdWUpOwogCiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKIAogICAgIHN0YXRpYyB2b2lk
IHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAotICAgIEpTV2ViQXNzZW1i
bHlNb2R1bGUqIG1vZHVsZSgpIHsgcmV0dXJuIG1fbW9kdWxlLmdldCgpOyB9CisgICAgSlPwnZSa
8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utk1vZHVsZSogbW9kdWxlKCkg
eyByZXR1cm4gbV9tb2R1bGUuZ2V0KCk7IH0KIAogcHJpdmF0ZToKLSAgICB2b2lkIGZpbmlzaENy
ZWF0aW9uKFZNJiwgSlNXZWJBc3NlbWJseU1vZHVsZSopOwotICAgIFdlYkFzc2VtYmx5VG9KU0Nh
bGxlZShWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU/Cd
lJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2TW9kdWxlKik7CisgICAg
8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZUb0pTQ2FsbGVlKFZN
JiwgU3RydWN0dXJlKik7CiAKLSAgICBXcml0ZUJhcnJpZXI8SlNXZWJBc3NlbWJseU1vZHVsZT4g
bV9tb2R1bGU7CisgICAgV3JpdGVCYXJyaWVyPEpT8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2U
ovCdlKrwnZSf8J2UqfCdlLZNb2R1bGU+IG1fbW9kdWxlOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eVdyYXBwZXJGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseVdyYXBwZXJGdW5jdGlvbi5jcHAKaW5kZXggMTcxMWUwNC4uZTRjN2Q2MyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlXcmFwcGVyRnVu
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5
V3JhcHBlckZ1bmN0aW9uLmNwcApAQCAtMzQsMTMgKzM0LDEzIEBACiAKIG5hbWVzcGFjZSBKU0Mg
ewogCi1jb25zdCBDbGFzc0luZm8gV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb246OnNfaW5mbyA9
IHsgIldlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwg
Q1JFQVRFX01FVEhPRF9UQUJMRShXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbikgfTsKK2NvbnN0
IENsYXNzSW5mbyDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2Utldy
YXBwZXJGdW5jdGlvbjo6c19pbmZvID0geyAi8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCd
lKrwnZSf8J2UqfCdlLZXcmFwcGVyRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/Cd
lKnwnZS2V3JhcHBlckZ1bmN0aW9uKSB9OwogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjYWxsV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjKQor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbPCdlJrwnZSi8J2Un/CdlITw
nZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2V3JhcHBlckZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhl
YykKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKLSAgICBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbiogd2FzbUZ1
bmN0aW9uID0ganNEeW5hbWljQ2FzdDxXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbio+KHZtLCBl
eGVjLT5qc0NhbGxlZSgpKTsKKyAgICDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCd
lJ/wnZSp8J2UtldyYXBwZXJGdW5jdGlvbiogd2FzbUZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDzw
nZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtldyYXBwZXJGdW5jdGlv
bio+KHZtLCBleGVjLT5qc0NhbGxlZSgpKTsKICAgICBpZiAoIXdhc21GdW5jdGlvbikKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3Jl
YXRlVHlwZUVycm9yKGV4ZWMsICJleHBlY3RlZCBhIFdlYkFzc2VtYmx5IGZ1bmN0aW9uIikpKTsK
IApAQCAtNTIsMjQgKzUyLDI0IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNhbGxXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbihFeGVjU3RhdGUqIGV4CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEs
IGpzVW5kZWZpbmVkKCksIEFyZ0xpc3QoZXhlYykpKTsKIH0KIAotV2ViQXNzZW1ibHlXcmFwcGVy
RnVuY3Rpb246OldlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFdhc206OlNpZ25hdHVyZUlu
ZGV4IHNpZ25hdHVyZUluZGV4LCB2b2lkKiB3YXNtRW50cnlwb2ludENvZGUpCivwnZSa8J2UovCd
lJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtldyYXBwZXJGdW5jdGlvbjo68J2UmvCd
lKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZXcmFwcGVyRnVuY3Rpb24oVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
V2FzbTo6U2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXgsIHZvaWQqIHdhc21FbnRyeXBvaW50
Q29kZSkKICAgICA6IEJhc2Uodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKQogICAgICwgbV93
YXNtRW50cnlwb2ludENvZGUod2FzbUVudHJ5cG9pbnRDb2RlKQogICAgICwgbV9zaWduYXR1cmVJ
bmRleChzaWduYXR1cmVJbmRleCkKIHsgfQogCi1XZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbiog
V2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBmdW5jdGlvbiwgdW5zaWduZWQgaW1wb3J0SW5kZXgs
IEpTV2ViQXNzZW1ibHlDb2RlQmxvY2sqIGNvZGVCbG9jaywgV2FzbTo6U2lnbmF0dXJlSW5kZXgg
c2lnbmF0dXJlSW5kZXgpCivwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp
8J2UtldyYXBwZXJGdW5jdGlvbiog8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf
8J2UqfCdlLZXcmFwcGVyRnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTT2JqZWN0KiBmdW5jdGlvbiwgdW5zaWduZWQgaW1wb3J0SW5kZXgsIEpT
8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgV2FzbTo6U2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXgpCiB7Ci0gICAgQVNT
RVJUX1dJVEhfTUVTU0FHRSghZnVuY3Rpb24tPmluaGVyaXRzKHZtLCBXZWJBc3NlbWJseVdyYXBw
ZXJGdW5jdGlvbjo6aW5mbygpKSwgIldlIHNob3VsZCBuZXZlciBkb3VibGUgd3JhcCBhIHdyYXBw
ZXIgZnVuY3Rpb24uIik7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghZnVuY3Rpb24tPmluaGVy
aXRzKHZtLCDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtldyYXBw
ZXJGdW5jdGlvbjo6aW5mbygpKSwgIldlIHNob3VsZCBuZXZlciBkb3VibGUgd3JhcCBhIHdyYXBw
ZXIgZnVuY3Rpb24uIik7CiAgICAgU3RyaW5nIG5hbWUgPSAiIjsKLSAgICBOYXRpdmVFeGVjdXRh
YmxlKiBleGVjdXRhYmxlID0gdm0uZ2V0SG9zdEZ1bmN0aW9uKGNhbGxXZWJBc3NlbWJseVdyYXBw
ZXJGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yLCBu
dWxscHRyLCBuYW1lKTsKLSAgICBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbiogcmVzdWx0ID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24+KHZt
LmhlYXApKSBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBnbG9i
YWxPYmplY3QtPndlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uU3RydWN0dXJlKCksIHNpZ25hdHVy
ZUluZGV4LCBjb2RlQmxvY2stPndhc21Ub0pzQ2FsbFN0dWJGb3JJbXBvcnQoaW1wb3J0SW5kZXgp
KTsKKyAgICBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gdm0uZ2V0SG9zdEZ1bmN0aW9u
KGNhbGzwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtldyYXBwZXJG
dW5jdGlvbiwgTm9JbnRyaW5zaWMsIGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yLCBudWxs
cHRyLCBuYW1lKTsKKyAgICDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp
8J2UtldyYXBwZXJGdW5jdGlvbiogcmVzdWx0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZXcmFwcGVyRnVuY3Rp
b24+KHZtLmhlYXApKSDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2U
tldyYXBwZXJGdW5jdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPndlYkFzc2Vt
Ymx5V3JhcHBlckZ1bmN0aW9uU3RydWN0dXJlKCksIHNpZ25hdHVyZUluZGV4LCBjb2RlQmxvY2st
Pndhc21Ub0pzQ2FsbFN0dWJGb3JJbXBvcnQoaW1wb3J0SW5kZXgpKTsKICAgICBjb25zdCBXYXNt
OjpTaWduYXR1cmUmIHNpZ25hdHVyZSA9IFdhc206OlNpZ25hdHVyZUluZm9ybWF0aW9uOjpnZXQo
c2lnbmF0dXJlSW5kZXgpOwogICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0sIGV4ZWN1dGFi
bGUsIHNpZ25hdHVyZS5hcmd1bWVudENvdW50KCksIG5hbWUsIGZ1bmN0aW9uLCBjb2RlQmxvY2sp
OwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rp
b246OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwg
dW5zaWduZWQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG5hbWUsIEpTT2JqZWN0KiBmdW5jdGlvbiwg
SlNXZWJBc3NlbWJseUNvZGVCbG9jayogY29kZUJsb2NrKQordm9pZCDwnZSa8J2UovCdlJ/wnZSE
8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtldyYXBwZXJGdW5jdGlvbjo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtLCBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlLCB1bnNpZ25lZCBsZW5ndGgs
IGNvbnN0IFN0cmluZyYgbmFtZSwgSlNPYmplY3QqIGZ1bmN0aW9uLCBKU/CdlJrwnZSi8J2Un/Cd
lITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2Q29kZUJsb2NrKiBjb2RlQmxvY2spCiB7CiAg
ICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIGV4ZWN1dGFibGUsIGxlbmd0aCwgbmFtZSk7CiAg
ICAgUkVMRUFTRV9BU1NFUlQoSlNWYWx1ZShmdW5jdGlvbikuaXNGdW5jdGlvbigpKTsKQEAgLTc3
LDE1ICs3NywxNSBAQCB2b2lkIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dAogICAgIG1fY29kZUJsb2NrLnNl
dCh2bSwgdGhpcywgY29kZUJsb2NrKTsKIH0KIAotU3RydWN0dXJlKiBXZWJBc3NlbWJseVdyYXBw
ZXJGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCitTdHJ1Y3R1cmUqIPCdlJrwnZSi8J2Un/CdlITw
nZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2V3JhcHBlckZ1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1
cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlw
ZSkKIHsKICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gU3RydWN0dXJlOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBT
dHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiB9CiAKLXZvaWQgV2ViQXNzZW1ibHlXcmFwcGVyRnVu
Y3Rpb246OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikK
K3ZvaWQg8J2UmvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZXcmFwcGVy
RnVuY3Rpb246OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRv
cikKIHsKLSAgICBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2Fz
dDxXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbio+KGNlbGwpOworICAgIPCdlJrwnZSi8J2Un/Cd
lITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2V3JhcHBlckZ1bmN0aW9uKiB0aGlzT2JqZWN0
ID0ganNDYXN0PPCdlJrwnZSi8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2V3Jh
cHBlckZ1bmN0aW9uKj4oY2VsbCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlz
T2JqZWN0LCBpbmZvKCkpOwogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlz
aXRvcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5V3JhcHBlckZ1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5oCmluZGV4IGU5NjM3ZDcuLjRiNjlhMTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5V3JhcHBlckZ1
bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlX
cmFwcGVyRnVuY3Rpb24uaApAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAot
Y2xhc3MgV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24gOiBwdWJsaWMgSlNGdW5jdGlvbiB7Citj
bGFzcyDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtldyYXBwZXJG
dW5jdGlvbiA6IHB1YmxpYyBKU0Z1bmN0aW9uIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTRnVu
Y3Rpb24gQmFzZTsKIApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAKICAgICBERUNMQVJFX0lO
Rk87CiAKLSAgICBzdGF0aWMgV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24qIGNyZWF0ZShWTSYs
IEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqLCB1bnNpZ25lZCBpbXBvcnRJbmRleCwgSlNXZWJB
c3NlbWJseUNvZGVCbG9jayosIFdhc206OlNpZ25hdHVyZUluZGV4KTsKKyAgICBzdGF0aWMg8J2U
mvCdlKLwnZSf8J2UhPCdlLDwnZSw8J2UovCdlKrwnZSf8J2UqfCdlLZXcmFwcGVyRnVuY3Rpb24q
IGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqLCB1bnNpZ25lZCBpbXBvcnRJ
bmRleCwgSlPwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtkNvZGVC
bG9jayosIFdhc206OlNpZ25hdHVyZUluZGV4KTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogCiAgICAgV2FzbTo6
U2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXgoKSBjb25zdCB7IHJldHVybiBtX3NpZ25hdHVy
ZUluZGV4OyB9CkBAIC01MCwxNCArNTAsMTQgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIHN0
YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAotICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oVk0mLCBOYXRpdmVFeGVjdXRhYmxlKiwgdW5zaWduZWQgbGVuZ3Ro
LCBjb25zdCBTdHJpbmcmIG5hbWUsIEpTT2JqZWN0KiwgSlNXZWJBc3NlbWJseUNvZGVCbG9jayop
OworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBOYXRpdmVFeGVjdXRhYmxlKiwgdW5zaWdu
ZWQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG5hbWUsIEpTT2JqZWN0KiwgSlPwnZSa8J2UovCdlJ/w
nZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtkNvZGVCbG9jayopOwogCiBwcml2YXRlOgot
ICAgIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmUqLCBXYXNtOjpTaWduYXR1cmVJbmRleCwgdm9pZCogd2FzbUVudHJ5cG9pbnRDb2RlKTsK
KyAgICDwnZSa8J2UovCdlJ/wnZSE8J2UsPCdlLDwnZSi8J2UqvCdlJ/wnZSp8J2UtldyYXBwZXJG
dW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgV2FzbTo6U2lnbmF0dXJl
SW5kZXgsIHZvaWQqIHdhc21FbnRyeXBvaW50Q29kZSk7CiAKICAgICAvLyBXZSBrZWVwIGEgcmVm
ZXJlbmNlIHRvIG91ciBDb2RlQmxvY2sgYmVjYXVzZSB3ZSBoYXZlIGEgcmF3CiAgICAgLy8gcG9p
bnRlciB0byBhc20gY29kZSB0aGF0IGl0IG93bnMuCi0gICAgV3JpdGVCYXJyaWVyPEpTV2ViQXNz
ZW1ibHlDb2RlQmxvY2s+IG1fY29kZUJsb2NrOworICAgIFdyaXRlQmFycmllcjxKU/CdlJrwnZSi
8J2Un/CdlITwnZSw8J2UsPCdlKLwnZSq8J2Un/CdlKnwnZS2Q29kZUJsb2NrPiBtX2NvZGVCbG9j
azsKICAgICBXcml0ZUJhcnJpZXI8SlNPYmplY3Q+IG1fZnVuY3Rpb247CiAgICAgdm9pZCogbV93
YXNtRW50cnlwb2ludENvZGU7CiAgICAgLy8gSXQncyBzYWZlIHRvIGp1c3QgaG9sZCB0aGUgcmF3
IHNpZ25hdHVyZUluZGV4IGJlY2F1c2Ugd2UgaGF2ZSBhIHJlZmVyZW5jZQotLSAKMi45LjMKCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>