<?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>239361</bug_id>
          
          <creation_ts>2022-04-14 17:09:08 -0700</creation_ts>
          <short_desc>Use WebCoreBuiltinNames when possible</short_desc>
          <delta_ts>2022-04-15 16:24:51 -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>Bindings</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=239408</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>ashvayka</cc>
    
    <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1861666</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-14 17:09:08 -0700</bug_when>
    <thetext>Use WebCoreBuiltinNames when possible to avoid unnecessary calls to Identifier::fromString(). This is more efficient.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861667</commentid>
    <comment_count>1</comment_count>
      <attachid>457657</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-14 17:10:24 -0700</bug_when>
    <thetext>Created attachment 457657
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861668</commentid>
    <comment_count>2</comment_count>
      <attachid>457657</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-04-14 17:20:16 -0700</bug_when>
    <thetext>Comment on attachment 457657
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861674</commentid>
    <comment_count>3</comment_count>
      <attachid>457658</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-14 17:57:45 -0700</bug_when>
    <thetext>Created attachment 457658
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861720</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-04-14 22:45:37 -0700</bug_when>
    <thetext>Committed r292899 (249669@main): &lt;https://commits.webkit.org/249669@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 457658.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861721</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-04-14 22:46:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/91796246&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861908</commentid>
    <comment_count>6</comment_count>
      <attachid>457658</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-04-15 14:08:31 -0700</bug_when>
    <thetext>Comment on attachment 457658
Patch

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

&gt; Source/WebCore/bindings/js/WebCoreJSClientData.h:211
&gt; +ALWAYS_INLINE WebCoreBuiltinNames&amp; webCoreBuiltinNames(JSC::VM&amp; vm)

Why not call this WebCore::builtInNames instead of WebCore::webCoreBuiltinNames?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457657</attachid>
            <date>2022-04-14 17:10:24 -0700</date>
            <delta_ts>2022-04-14 17:57:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239361-20220414171023.patch</filename>
            <type>text/plain</type>
            <size>67854</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyODkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzFiYjk0ZDIxYTUyZmNl
ZTcyMDUwMDlkNGFiNzQ5ZTFmMTY1NzJjZS4uYTkzNDBjY2NkOWMzNWJmMDdiNGQ1OWM3NzQ4MTA2
M2YwOTY0ZTU5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDIyLTA0LTE0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIFdlYkNvcmVCdWlsdGlu
TmFtZXMgd2hlbiBwb3NzaWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjM5MzYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVXNlIFdlYkNvcmVCdWlsdGluTmFtZXMgd2hlbiBwb3NzaWJsZSB0byBhdm9p
ZCB1bm5lY2Vzc2FyeSBjYWxscyB0byBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCkuCisgICAgICAg
IFRoaXMgaXMgbW9yZSBlZmZpY2llbnQuCisKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q0RNU2Vzc2lvbkNsZWFyS2V5Ojp1cGRhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
RE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NR2xvYmFsT2JqZWN0
OjphZGRCdWlsdGluR2xvYmFscyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01NYXBMaWtl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldEJhY2tpbmdNYXApOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTRE9NU2V0TGlrZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRCYWNraW5nU2V0
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjppbml0U3RhdGljR2xvYmFscyk6CisgICAgICAgIChX
ZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTRE9NV2luZG93QmFzZTo6dXBkYXRlRG9jdW1lbnQpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzRE9NV2luZG93
R2V0T3duUHJvcGVydHlTbG90UmVzdHJpY3RlZEFjY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpK
U0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9N
V2luZG93OjpwdXQpOgorICAgICAgICAoV2ViQ29yZTo6YWRkQ3Jvc3NPcmlnaW5Qcm9wZXJ0eU5h
bWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpkZWZpbmVPd25Qcm9wZXJ0eSk6
CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6c2V0T3BlbmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTRE9NV2luZG93OjpvcGVuRGF0YWJhc2UgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNET01XaW5kb3c6OnNldE9wZW5EYXRhYmFzZSk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNFdmVudExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRXZlbnRMaXN0ZW5lcjo6
aGFuZGxlRXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Z2V0T3duUHJvcGVydHlTbG90Q29tbW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTTG9jYXRpb246OnB1dCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNSZW1v
dGVET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNSZW1vdGVET01XaW5k
b3c6OnB1dCk6CisgICAgICAgICogYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW0uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW06OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZWFkYWJsZVN0cmVhbTo6bG9jayk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpzZXR1cE1v
ZHVsZVNjcmlwdEhhbmRsZXJzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVqZWN0VG9Qcm9wYWdhdGVOZXR3b3JrRXJy
b3IpOgorICAgICAgICAoV2ViQ29yZTo6cmVqZWN0V2l0aEZldGNoRXJyb3IpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9XZWJDb3JlSlNDbGllbnREYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjp3ZWJDb3JlQnVpbHRp
bk5hbWVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToK
KyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdp
bmRvdzo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGVQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGU6OmZpbmlzaENyZWF0
aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5
U2V0dGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFbmFibGVkQnlTZXR0aW5nOjpm
aW5pc2hDcmVhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEVuYWJsZWRGb3JDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEVuYWJsZWRG
b3JDb250ZXh0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RH
bG9iYWxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE9ialByb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjb250cm9sbGVySlNWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KToKKyAgICAg
ICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6
OmNsb25lQXJyYXlCdWZmZXIpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2Ny
aXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJPcldvcmtsZXRTY3Jp
cHRDb250cm9sbGVyOjpsb2FkTW9kdWxlU3luY2hyb25vdXNseSk6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpsb2FkQW5kRXZhbHVhdGVNb2R1bGUp
OgorCiAyMDIyLTA0LTE0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmVxdWlyZSBhbiBleGlzdGluZyBBdG9tU3RyaW5nIGZvciBIVE1MRm9ybUVsZW1lbnQncyBu
YW1lZCBnZXR0ZXIgcGFyYW1ldGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lv
bkNsZWFyS2V5LmNwcAppbmRleCBhZjk4MDk3MjgwOWQ2ZjBmN2FkNzAxNTUxNDk0NjJiY2U4M2Iz
ZmU5Li5kMmJhZTgyZWMyMDgyOWRjOTU2OWU0OTVkY2EyZTAyNGIzODRjMDgyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1T
ZXNzaW9uQ2xlYXJLZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvbGVnYWN5L0xlZ2FjeUNETVNlc3Npb25DbGVhcktleS5jcHAKQEAgLTMwLDYgKzMwLDcg
QEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSA8cGFsL3RleHQvVGV4dEVuY29kaW5n
Lmg+CiAjaW5jbHVkZSAiV2ViS2l0TWVkaWFLZXlFcnJvci5oIgorI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0J1aWx0aW5OYW1lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTR2xvYmFs
T2JqZWN0SW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTTG9jay5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTT05PYmplY3QuaD4KQEAgLTEwOSw3ICsxMTAsNyBAQCBi
b29sIENETVNlc3Npb25DbGVhcktleTo6dXBkYXRlKFVpbnQ4QXJyYXkqIHJhd0tleXNEYXRhLCBS
ZWZQdHI8VWludDhBcnJheT4mIG5leAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAot
ICAgICAgICBhdXRvIGtleXNBcnJheVZhbHVlID0gYXNPYmplY3Qoa2V5c0RhdGFWYWx1ZSktPmdl
dCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImtleXMi
X3MpKTsKKyAgICAgICAgYXV0byBrZXlzQXJyYXlWYWx1ZSA9IGFzT2JqZWN0KGtleXNEYXRhVmFs
dWUpLT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLmtleXNQdWJsaWNOYW1lKCkpOwogICAgICAgICBpZiAoc2NvcGUuZXhjZXB0aW9uKCkg
fHwgIWlzSlNBcnJheShrZXlzQXJyYXlWYWx1ZSkpIHsKICAgICAgICAgICAgIExPRyhNZWRpYSwg
IkNETVNlc3Npb25DbGVhcktleTo6dXBkYXRlKCVwKSAtIGZhaWxlZDoga2V5cyBhcnJheSBtaXNz
aW5nIG9yIGVtcHR5IiwgdGhpcyk7CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAppbmRleCAyMzg4ZDNjN2Q2
N2ZkNjFhZDg4MjUxM2NkMzM2NjM5OTQ0MTE1ZjhjLi43NTQ0NjUxOTNlOWZkNGNmNTNlYWViOGQ4
NjBjNzRjOThiZGJhNTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01HbG9iYWxPYmplY3QuY3BwCkBAIC0yMTQsMzEgKzIxNCwzMSBAQCBTVVBQUkVTU19BU0FOIHZv
aWQgSlNET01HbG9iYWxPYmplY3Q6OmFkZEJ1aWx0aW5HbG9iYWxzKFZNJiB2bSkKIHsKICAgICBt
X2J1aWx0aW5JbnRlcm5hbEZ1bmN0aW9ucy5pbml0aWFsaXplKCp0aGlzKTsKIAotICAgIEpTVk1D
bGllbnREYXRhJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0u
Y2xpZW50RGF0YSk7CisgICAgYXV0byYgYnVpbHRpbk5hbWVzID0gd2ViQ29yZUJ1aWx0aW5OYW1l
cyh2bSk7CiAgICAgSlNET01HbG9iYWxPYmplY3Q6Okdsb2JhbFByb3BlcnR5SW5mbyBzdGF0aWNH
bG9iYWxzW10gPSB7Ci0gICAgICAgIEpTRE9NR2xvYmFsT2JqZWN0OjpHbG9iYWxQcm9wZXJ0eUlu
Zm8oY2xpZW50RGF0YS5idWlsdGluTmFtZXMoKS5tYWtlVGhpc1R5cGVFcnJvclByaXZhdGVOYW1l
KCksCisgICAgICAgIEpTRE9NR2xvYmFsT2JqZWN0OjpHbG9iYWxQcm9wZXJ0eUluZm8oYnVpbHRp
bk5hbWVzLm1ha2VUaGlzVHlwZUVycm9yUHJpdmF0ZU5hbWUoKSwKICAgICAgICAgICAgIEpTRnVu
Y3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMiwgU3RyaW5nKCksIG1ha2VUaGlzVHlwZUVycm9yRm9y
QnVpbHRpbnMpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSksCi0gICAgICAgIEpTRE9NR2xvYmFsT2JqZWN0OjpHbG9iYWxQcm9wZXJ0
eUluZm8oY2xpZW50RGF0YS5idWlsdGluTmFtZXMoKS5tYWtlR2V0dGVyVHlwZUVycm9yUHJpdmF0
ZU5hbWUoKSwKKyAgICAgICAgSlNET01HbG9iYWxPYmplY3Q6Okdsb2JhbFByb3BlcnR5SW5mbyhi
dWlsdGluTmFtZXMubWFrZUdldHRlclR5cGVFcnJvclByaXZhdGVOYW1lKCksCiAgICAgICAgICAg
ICBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDIsIFN0cmluZygpLCBtYWtlR2V0dGVyVHlw
ZUVycm9yRm9yQnVpbHRpbnMpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEpTRE9NR2xvYmFsT2JqZWN0OjpHbG9i
YWxQcm9wZXJ0eUluZm8oY2xpZW50RGF0YS5idWlsdGluTmFtZXMoKS5tYWtlRE9NRXhjZXB0aW9u
UHJpdmF0ZU5hbWUoKSwKKyAgICAgICAgSlNET01HbG9iYWxPYmplY3Q6Okdsb2JhbFByb3BlcnR5
SW5mbyhidWlsdGluTmFtZXMubWFrZURPTUV4Y2VwdGlvblByaXZhdGVOYW1lKCksCiAgICAgICAg
ICAgICBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDIsIFN0cmluZygpLCBtYWtlRE9NRXhj
ZXB0aW9uRm9yQnVpbHRpbnMpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEpTRE9NR2xvYmFsT2JqZWN0OjpHbG9i
YWxQcm9wZXJ0eUluZm8oY2xpZW50RGF0YS5idWlsdGluTmFtZXMoKS53aGVuU2lnbmFsQWJvcnRl
ZFByaXZhdGVOYW1lKCksCisgICAgICAgIEpTRE9NR2xvYmFsT2JqZWN0OjpHbG9iYWxQcm9wZXJ0
eUluZm8oYnVpbHRpbk5hbWVzLndoZW5TaWduYWxBYm9ydGVkUHJpdmF0ZU5hbWUoKSwKICAgICAg
ICAgICAgIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMiwgU3RyaW5nKCksIHdoZW5TaWdu
YWxBYm9ydGVkKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBKU0RPTUdsb2JhbE9iamVjdDo6R2xvYmFsUHJvcGVy
dHlJbmZvKGNsaWVudERhdGEuYnVpbHRpbk5hbWVzKCkuY2xvbmVBcnJheUJ1ZmZlclByaXZhdGVO
YW1lKCksCisgICAgICAgIEpTRE9NR2xvYmFsT2JqZWN0OjpHbG9iYWxQcm9wZXJ0eUluZm8oYnVp
bHRpbk5hbWVzLmNsb25lQXJyYXlCdWZmZXJQcml2YXRlTmFtZSgpLAogICAgICAgICAgICAgSlNG
dW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAzLCBTdHJpbmcoKSwgY2xvbmVBcnJheUJ1ZmZlciks
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5KSwKLSAgICAgICAgSlNET01HbG9iYWxPYmplY3Q6Okdsb2JhbFByb3BlcnR5SW5mbyhjbGll
bnREYXRhLmJ1aWx0aW5OYW1lcygpLnN0cnVjdHVyZWRDbG9uZUZvclN0cmVhbVByaXZhdGVOYW1l
KCksCisgICAgICAgIEpTRE9NR2xvYmFsT2JqZWN0OjpHbG9iYWxQcm9wZXJ0eUluZm8oYnVpbHRp
bk5hbWVzLnN0cnVjdHVyZWRDbG9uZUZvclN0cmVhbVByaXZhdGVOYW1lKCksCiAgICAgICAgICAg
ICBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIFN0cmluZygpLCBzdHJ1Y3R1cmVkQ2xv
bmVGb3JTdHJlYW0pLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSksCiAgICAgICAgIEpTRE9NR2xvYmFsT2JqZWN0OjpHbG9iYWxQcm9w
ZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuQXJyYXlCdWZmZXJQcml2
YXRlTmFtZSgpLCBhcnJheUJ1ZmZlckNvbnN0cnVjdG9yKCksIFByb3BlcnR5QXR0cmlidXRlOjpE
b250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgSlNET01H
bG9iYWxPYmplY3Q6Okdsb2JhbFByb3BlcnR5SW5mbyhjbGllbnREYXRhLmJ1aWx0aW5OYW1lcygp
LnN0cmVhbUNsb3NlZFByaXZhdGVOYW1lKCksIGpzTnVtYmVyKDEpLCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEpT
RE9NR2xvYmFsT2JqZWN0OjpHbG9iYWxQcm9wZXJ0eUluZm8oY2xpZW50RGF0YS5idWlsdGluTmFt
ZXMoKS5zdHJlYW1DbG9zaW5nUHJpdmF0ZU5hbWUoKSwganNOdW1iZXIoMiksIFByb3BlcnR5QXR0
cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAg
ICAgSlNET01HbG9iYWxPYmplY3Q6Okdsb2JhbFByb3BlcnR5SW5mbyhjbGllbnREYXRhLmJ1aWx0
aW5OYW1lcygpLnN0cmVhbUVycm9yZWRQcml2YXRlTmFtZSgpLCBqc051bWJlcigzKSwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAot
ICAgICAgICBKU0RPTUdsb2JhbE9iamVjdDo6R2xvYmFsUHJvcGVydHlJbmZvKGNsaWVudERhdGEu
YnVpbHRpbk5hbWVzKCkuc3RyZWFtUmVhZGFibGVQcml2YXRlTmFtZSgpLCBqc051bWJlcig0KSwg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkpLAotICAgICAgICBKU0RPTUdsb2JhbE9iamVjdDo6R2xvYmFsUHJvcGVydHlJbmZvKGNsaWVu
dERhdGEuYnVpbHRpbk5hbWVzKCkuc3RyZWFtV2FpdGluZ1ByaXZhdGVOYW1lKCksIGpzTnVtYmVy
KDUpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSksCi0gICAgICAgIEpTRE9NR2xvYmFsT2JqZWN0OjpHbG9iYWxQcm9wZXJ0eUluZm8o
Y2xpZW50RGF0YS5idWlsdGluTmFtZXMoKS5zdHJlYW1Xcml0YWJsZVByaXZhdGVOYW1lKCksIGpz
TnVtYmVyKDYpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSksCi0gICAgICAgIEpTRE9NR2xvYmFsT2JqZWN0OjpHbG9iYWxQcm9wZXJ0
eUluZm8oY2xpZW50RGF0YS5idWlsdGluTmFtZXMoKS5yZWFkYWJsZUJ5dGVTdHJlYW1BUElFbmFi
bGVkUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmco
KSwgaXNSZWFkYWJsZUJ5dGVTdHJlYW1BUElFbmFibGVkKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBKU0RPTUds
b2JhbE9iamVjdDo6R2xvYmFsUHJvcGVydHlJbmZvKGNsaWVudERhdGEuYnVpbHRpbk5hbWVzKCku
aXNBYm9ydFNpZ25hbFByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywg
MSwgU3RyaW5nKCksIGlzQWJvcnRTaWduYWwpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0
ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEpTRE9NR2xvYmFsT2Jq
ZWN0OjpHbG9iYWxQcm9wZXJ0eUluZm8oY2xpZW50RGF0YS5idWlsdGluTmFtZXMoKS5nZXRJbnRl
cm5hbFdyaXRhYmxlU3RyZWFtUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0
aGlzLCAxLCBTdHJpbmcoKSwgZ2V0SW50ZXJuYWxXcml0YWJsZVN0cmVhbSksIFByb3BlcnR5QXR0
cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAg
ICAgSlNET01HbG9iYWxPYmplY3Q6Okdsb2JhbFByb3BlcnR5SW5mbyhjbGllbnREYXRhLmJ1aWx0
aW5OYW1lcygpLmNyZWF0ZVdyaXRhYmxlU3RyZWFtRnJvbUludGVybmFsUHJpdmF0ZU5hbWUoKSwg
SlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCBTdHJpbmcoKSwgY3JlYXRlV3JpdGFibGVT
dHJlYW1Gcm9tSW50ZXJuYWwpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSksCisgICAgICAgIEpTRE9NR2xvYmFsT2JqZWN0OjpHbG9i
YWxQcm9wZXJ0eUluZm8oYnVpbHRpbk5hbWVzLnN0cmVhbUNsb3NlZFByaXZhdGVOYW1lKCksIGpz
TnVtYmVyKDEpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSksCisgICAgICAgIEpTRE9NR2xvYmFsT2JqZWN0OjpHbG9iYWxQcm9wZXJ0
eUluZm8oYnVpbHRpbk5hbWVzLnN0cmVhbUNsb3NpbmdQcml2YXRlTmFtZSgpLCBqc051bWJlcigy
KSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkpLAorICAgICAgICBKU0RPTUdsb2JhbE9iamVjdDo6R2xvYmFsUHJvcGVydHlJbmZvKGJ1
aWx0aW5OYW1lcy5zdHJlYW1FcnJvcmVkUHJpdmF0ZU5hbWUoKSwganNOdW1iZXIoMyksIFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwK
KyAgICAgICAgSlNET01HbG9iYWxPYmplY3Q6Okdsb2JhbFByb3BlcnR5SW5mbyhidWlsdGluTmFt
ZXMuc3RyZWFtUmVhZGFibGVQcml2YXRlTmFtZSgpLCBqc051bWJlcig0KSwgUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAorICAgICAg
ICBKU0RPTUdsb2JhbE9iamVjdDo6R2xvYmFsUHJvcGVydHlJbmZvKGJ1aWx0aW5OYW1lcy5zdHJl
YW1XYWl0aW5nUHJpdmF0ZU5hbWUoKSwganNOdW1iZXIoNSksIFByb3BlcnR5QXR0cmlidXRlOjpE
b250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKKyAgICAgICAgSlNET01H
bG9iYWxPYmplY3Q6Okdsb2JhbFByb3BlcnR5SW5mbyhidWlsdGluTmFtZXMuc3RyZWFtV3JpdGFi
bGVQcml2YXRlTmFtZSgpLCBqc051bWJlcig2KSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxl
dGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAorICAgICAgICBKU0RPTUdsb2JhbE9i
amVjdDo6R2xvYmFsUHJvcGVydHlJbmZvKGJ1aWx0aW5OYW1lcy5yZWFkYWJsZUJ5dGVTdHJlYW1B
UElFbmFibGVkUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBT
dHJpbmcoKSwgaXNSZWFkYWJsZUJ5dGVTdHJlYW1BUElFbmFibGVkKSwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAorICAgICAgICBK
U0RPTUdsb2JhbE9iamVjdDo6R2xvYmFsUHJvcGVydHlJbmZvKGJ1aWx0aW5OYW1lcy5pc0Fib3J0
U2lnbmFsUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCBTdHJp
bmcoKSwgaXNBYm9ydFNpZ25hbCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKKyAgICAgICAgSlNET01HbG9iYWxPYmplY3Q6Okds
b2JhbFByb3BlcnR5SW5mbyhidWlsdGluTmFtZXMuZ2V0SW50ZXJuYWxXcml0YWJsZVN0cmVhbVBy
aXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMSwgU3RyaW5nKCksIGdl
dEludGVybmFsV3JpdGFibGVTdHJlYW0pLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8
IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCisgICAgICAgIEpTRE9NR2xvYmFsT2JqZWN0
OjpHbG9iYWxQcm9wZXJ0eUluZm8oYnVpbHRpbk5hbWVzLmNyZWF0ZVdyaXRhYmxlU3RyZWFtRnJv
bUludGVybmFsUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCBT
dHJpbmcoKSwgY3JlYXRlV3JpdGFibGVTdHJlYW1Gcm9tSW50ZXJuYWwpLCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCiAgICAgfTsK
ICAgICBhZGRTdGF0aWNHbG9iYWxzKHN0YXRpY0dsb2JhbHMsIFdURl9BUlJBWV9MRU5HVEgoc3Rh
dGljR2xvYmFscykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01NYXBMaWtlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NTWFwTGlr
ZS5jcHAKaW5kZXggZTEzMmMzOWZhNTQ1ZGU2Mzk5Y2Q1MDNiMWU5NjYzYTgzN2RmMGQzNi4uMTUy
Y2RiNWJmOTdiMmIxNDU0MjA4ZWU2MTZlMzQ0YzEyYTdkZWQzMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01NYXBMaWtlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTU1hcExpa2UuY3BwCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIHN0ZDo6cGFpcjxib29sLCBzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEpTQzo6
SlNPYmplY3Q+PiBnZXRCYWNraW5nTWFwKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQzo6SlNPYmplY3QmIG1hcExpa2UpCiB7CiAgICAgYXV0byYgdm0gPSBsZXhp
Y2FsR2xvYmFsT2JqZWN0LnZtKCk7Ci0gICAgYXV0byBiYWNraW5nTWFwID0gbWFwTGlrZS5nZXQo
JmxleGljYWxHbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xp
ZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLmJhY2tpbmdNYXBQcml2YXRlTmFtZSgpKTsKKyAgICBh
dXRvIGJhY2tpbmdNYXAgPSBtYXBMaWtlLmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgd2ViQ29y
ZUJ1aWx0aW5OYW1lcyh2bSkuYmFja2luZ01hcFByaXZhdGVOYW1lKCkpOwogICAgIGlmICghYmFj
a2luZ01hcC5pc1VuZGVmaW5lZCgpKQogICAgICAgICByZXR1cm4geyBmYWxzZSwgKkpTQzo6YXNP
YmplY3QoYmFja2luZ01hcCkgfTsKIApAQCAtNDYsNyArNDYsNyBAQCBzdGQ6OnBhaXI8Ym9vbCwg
c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxKU0M6OkpTT2JqZWN0Pj4gZ2V0QmFja2luZ01hcChKU0M6
OkpTR2xvYgogICAgIGJhY2tpbmdNYXAgPSBKU0M6OkpTTWFwOjpjcmVhdGUoJmxleGljYWxHbG9i
YWxPYmplY3QsIHZtLCBsZXhpY2FsR2xvYmFsT2JqZWN0Lm1hcFN0cnVjdHVyZSgpKTsKICAgICBz
Y29wZS5yZWxlYXNlQXNzZXJ0Tm9FeGNlcHRpb24oKTsKIAotICAgIG1hcExpa2UucHV0RGlyZWN0
KHZtLCBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGlu
TmFtZXMoKS5iYWNraW5nTWFwUHJpdmF0ZU5hbWUoKSwgYmFja2luZ01hcCwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgbWFwTGlr
ZS5wdXREaXJlY3Qodm0sIHdlYkNvcmVCdWlsdGluTmFtZXModm0pLmJhY2tpbmdNYXBQcml2YXRl
TmFtZSgpLCBiYWNraW5nTWFwLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICByZXR1cm4geyB0cnVlLCAqSlNDOjphc09iamVjdChi
YWNraW5nTWFwKSB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVNldExpa2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TZXRM
aWtlLmNwcAppbmRleCBmNWU5ZjMyM2IzY2UwNTEyMmNhNDU4ZWVmMmExMmZiZjhlNmVjNjRhLi44
NTk3NzY5ZWY0OWU0ODQ0NmUwNDVlNDI1NTI2YzU3MmU2OTQ4YWM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVNldExpa2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NU2V0TGlrZS5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgdm9pZCBE
T01TZXRBZGFwdGVyOjpjbGVhcigpCiBzdGQ6OnBhaXI8Ym9vbCwgc3RkOjpyZWZlcmVuY2Vfd3Jh
cHBlcjxKU0M6OkpTT2JqZWN0Pj4gZ2V0QmFja2luZ1NldChKU0M6OkpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpTT2JqZWN0JiBzZXRMaWtlKQogewogICAgIGF1dG8m
IHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC52bSgpOwotICAgIGF1dG8gYmFja2luZ1NldCA9IHNl
dExpa2UuZ2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0
YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKS5iYWNraW5nU2V0UHJpdmF0ZU5hbWUo
KSk7CisgICAgYXV0byBiYWNraW5nU2V0ID0gc2V0TGlrZS5nZXQoJmxleGljYWxHbG9iYWxPYmpl
Y3QsIHdlYkNvcmVCdWlsdGluTmFtZXModm0pLmJhY2tpbmdTZXRQcml2YXRlTmFtZSgpKTsKICAg
ICBpZiAoYmFja2luZ1NldC5pc1VuZGVmaW5lZCgpKSB7CiAgICAgICAgIGF1dG8mIHZtID0gbGV4
aWNhbEdsb2JhbE9iamVjdC52bSgpOwogICAgICAgICBKU0M6OkRlZmVyVGVybWluYXRpb24gZGVm
ZXJTY29wZSh2bSk7CkBAIC01MSw3ICs1MSw3IEBAIHN0ZDo6cGFpcjxib29sLCBzdGQ6OnJlZmVy
ZW5jZV93cmFwcGVyPEpTQzo6SlNPYmplY3Q+PiBnZXRCYWNraW5nU2V0KEpTQzo6SlNHbG9iCiAg
ICAgICAgIGJhY2tpbmdTZXQgPSBKU0M6OkpTU2V0OjpjcmVhdGUoJmxleGljYWxHbG9iYWxPYmpl
Y3QsIHZtLCBsZXhpY2FsR2xvYmFsT2JqZWN0LnNldFN0cnVjdHVyZSgpKTsKICAgICAgICAgc2Nv
cGUucmVsZWFzZUFzc2VydE5vRXhjZXB0aW9uKCk7CiAKLSAgICAgICAgc2V0TGlrZS5wdXREaXJl
Y3Qodm0sIHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0
aW5OYW1lcygpLmJhY2tpbmdTZXRQcml2YXRlTmFtZSgpLCBiYWNraW5nU2V0LCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICAgICAg
c2V0TGlrZS5wdXREaXJlY3Qodm0sIHdlYkNvcmVCdWlsdGluTmFtZXModm0pLmJhY2tpbmdTZXRQ
cml2YXRlTmFtZSgpLCBiYWNraW5nU2V0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICAgICAgcmV0dXJuIHsgdHJ1ZSwgKkpTQzo6
YXNPYmplY3QoYmFja2luZ1NldCkgfTsKICAgICB9CiAgICAgcmV0dXJuIHsgZmFsc2UsICpKU0M6
OmFzT2JqZWN0KGJhY2tpbmdTZXQpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dCYXNlLmNwcAppbmRleCBlZmEyNTI4ZmZiYmI0ZTdiOWEzZWVjMWM1MjZiYzJm
Y2U4ZGFiMDc4Li43ODllYWJkODkyNzRlNTRiMTZjOGEzNzc0NmMwNTEyYzJiNWEyZWFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKQEAgLTEw
OCw3ICsxMDgsNyBAQCBKU0RPTVdpbmRvd0Jhc2U6On5KU0RPTVdpbmRvd0Jhc2UoKSA9IGRlZmF1
bHQ7CiAKIFNVUFBSRVNTX0FTQU4gaW5saW5lIHZvaWQgSlNET01XaW5kb3dCYXNlOjppbml0U3Rh
dGljR2xvYmFscyhKU0M6OlZNJiB2bSkKIHsKLSAgICBhdXRvJiBidWlsdGluTmFtZXMgPSBzdGF0
aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKTsK
KyAgICBhdXRvJiBidWlsdGluTmFtZXMgPSB3ZWJDb3JlQnVpbHRpbk5hbWVzKHZtKTsKIAogICAg
IEdsb2JhbFByb3BlcnR5SW5mbyBzdGF0aWNHbG9iYWxzW10gPSB7CiAgICAgICAgIEdsb2JhbFBy
b3BlcnR5SW5mbyhidWlsdGluTmFtZXMuZG9jdW1lbnRQdWJsaWNOYW1lKCksIGpzTnVsbCgpLCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSksCkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBKU0RPTVdpbmRvd0Jhc2U6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgSlNXaW5kb3dQcm94eSogcHJveHkpCiAgICAgaWYgKG1fd3JhcHBlZCAmJiBt
X3dyYXBwZWQtPmZyYW1lKCkgJiYgbV93cmFwcGVkLT5mcmFtZSgpLT5zZXR0aW5ncygpLm5lZWRz
U2l0ZVNwZWNpZmljUXVpcmtzKCkpCiAgICAgICAgIHNldE5lZWRzU2l0ZVNwZWNpZmljUXVpcmtz
KHRydWUpOwogCi0gICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIHN0YXRpY19jYXN0PEpT
Vk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLnNob3dNb2RhbERp
YWxvZ1B1YmxpY05hbWUoKSwgQ3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIHNob3dNb2Rh
bERpYWxvZ0dldHRlciwgbnVsbHB0ciksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tVmFsdWUpKTsKKyAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwg
d2ViQ29yZUJ1aWx0aW5OYW1lcyh2bSkuc2hvd01vZGFsRGlhbG9nUHVibGljTmFtZSgpLCBDdXN0
b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgc2hvd01vZGFsRGlhbG9nR2V0dGVyLCBudWxscHRy
KSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21WYWx1ZSkp
OwogfQogCiB2b2lkIEpTRE9NV2luZG93QmFzZTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCkBAIC0x
NDksNyArMTQ5LDcgQEAgdm9pZCBKU0RPTVdpbmRvd0Jhc2U6OnVwZGF0ZURvY3VtZW50KCkKICAg
ICBib29sIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciA9IGZhbHNlOwogICAgIGJvb2wgaWdub3Jl
UmVhZE9ubHlFcnJvcnMgPSB0cnVlOwogICAgIGJvb2wgcHV0UmVzdWx0ID0gZmFsc2U7Ci0gICAg
c3ltYm9sVGFibGVQdXRUb3VjaFdhdGNocG9pbnRTZXQodGhpcywgbGV4aWNhbEdsb2JhbE9iamVj
dCwgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5h
bWVzKCkuZG9jdW1lbnRQdWJsaWNOYW1lKCksIHRvSlMobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
cywgbV93cmFwcGVkLT5kb2N1bWVudCgpKSwgc2hvdWxkVGhyb3dSZWFkT25seUVycm9yLCBpZ25v
cmVSZWFkT25seUVycm9ycywgcHV0UmVzdWx0KTsKKyAgICBzeW1ib2xUYWJsZVB1dFRvdWNoV2F0
Y2hwb2ludFNldCh0aGlzLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCB3ZWJDb3JlQnVpbHRpbk5hbWVz
KHZtKS5kb2N1bWVudFB1YmxpY05hbWUoKSwgdG9KUyhsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
LCBtX3dyYXBwZWQtPmRvY3VtZW50KCkpLCBzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3IsIGlnbm9y
ZVJlYWRPbmx5RXJyb3JzLCBwdXRSZXN1bHQpOwogICAgIEVYQ0VQVElPTl9BU1NFUlRfVU5VU0VE
KHNjb3BlLCAhc2NvcGUuZXhjZXB0aW9uKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXggNWZhNjEyZjVmODBkZWNmNjJi
Y2E3Y2I3YmMyYmY3OWZhYzg0ZDUzNS4uNjZlYjFmOWVhMjI5Mjg4ZDNlNWI1YzIyM2U0Mjk4ZjE0
NmU4MDNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5k
b3dDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
Q3VzdG9tLmNwcApAQCAtMTEzLDcgKzExMyw3IEBAIGJvb2wganNET01XaW5kb3dHZXRPd25Qcm9w
ZXJ0eVNsb3RSZXN0cmljdGVkQWNjZXNzKEpTRE9NR2xvYmFsT2JqZWN0KiB0aGlzT2JqZWN0CiAg
ICAgVk0mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGF1dG8mIGJ1aWx0aW5OYW1lcyA9IHN0YXRp
Y19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpOwor
ICAgIGF1dG8mIGJ1aWx0aW5OYW1lcyA9IHdlYkNvcmVCdWlsdGluTmFtZXModm0pOwogCiAgICAg
Ly8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jY3Jvc3NvcmlnaW5nZXRvd25wcm9wZXJ0
eWhlbHBlci0oLW8sLXAtKQogCkBAIC0yMTQsNyArMjE0LDcgQEAgYm9vbCBKU0RPTVdpbmRvdzo6
Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2wKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAjaWYgRU5BQkxFKFVTRVJfTUVTU0FHRV9I
QU5ETEVSUykKLSAgICBpZiAocHJvcGVydHlOYW1lID09IHN0YXRpY19jYXN0PEpTVk1DbGllbnRE
YXRhKj4obGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVz
KCkud2Via2l0UHVibGljTmFtZSgpICYmIHRoaXNPYmplY3QtPndyYXBwZWQoKS5zaG91bGRIYXZl
V2ViS2l0TmFtZXNwYWNlRm9yV29ybGQodGhpc09iamVjdC0+d29ybGQoKSkpIHsKKyAgICBpZiAo
cHJvcGVydHlOYW1lID09IHdlYkNvcmVCdWlsdGluTmFtZXMobGV4aWNhbEdsb2JhbE9iamVjdC0+
dm0oKSkud2Via2l0UHVibGljTmFtZSgpICYmIHRoaXNPYmplY3QtPndyYXBwZWQoKS5zaG91bGRI
YXZlV2ViS2l0TmFtZXNwYWNlRm9yV29ybGQodGhpc09iamVjdC0+d29ybGQoKSkpIHsKICAgICAg
ICAgc2xvdC5zZXRDYWNoZWFibGVDdXN0b20odGhpc09iamVjdCwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5LCBqc0RP
TVdpbmRvd193ZWJraXQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0yNTUsNyAr
MjU1LDcgQEAgYm9vbCBKU0RPTVdpbmRvdzo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnQKICAgICBTdHJpbmcgZXJyb3JNZXNzYWdl
OwogICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LT53cmFwcGVkKCksIGVycm9yTWVzc2Fn
ZSkpIHsKICAgICAgICAgLy8gV2Ugb25seSBhbGxvdyBzZXR0aW5nICJsb2NhdGlvbiIgYXR0cmli
dXRlIGNyb3NzLW9yaWdpbi4KLSAgICAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBzdGF0aWNfY2Fz
dDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKS5sb2NhdGlv
blB1YmxpY05hbWUoKSkgeworICAgICAgICBpZiAocHJvcGVydHlOYW1lID09IHdlYkNvcmVCdWls
dGluTmFtZXModm0pLmxvY2F0aW9uUHVibGljTmFtZSgpKSB7CiAgICAgICAgICAgICBhdXRvKiBz
ZXR0ZXIgPSBzX2luZm8uc3RhdGljUHJvcEhhc2hUYWJsZS0+ZW50cnkocHJvcGVydHlOYW1lKS0+
cHJvcGVydHlQdXR0ZXIoKTsKICAgICAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICAgICAg
ICAgIHNldHRlcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjplbmNvZGUoc2xvdC50aGlz
VmFsdWUoKSksIEpTVmFsdWU6OmVuY29kZSh2YWx1ZSksIHByb3BlcnR5TmFtZSk7CkBAIC0zMjcs
NyArMzI3LDcgQEAgdm9pZCBKU0RPTVdpbmRvdzo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBI
ZWFwQW5hbHl6ZXImIGFuYWx5emVyKQogdGVtcGxhdGUgPENyb3NzT3JpZ2luT2JqZWN0IG9iamVj
dFR5cGU+CiBzdGF0aWMgdm9pZCBhZGRDcm9zc09yaWdpblByb3BlcnR5TmFtZXMoVk0mIHZtLCBQ
cm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcykKIHsKLSAgICBhdXRvJiBidWlsdGluTmFt
ZXMgPSBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGlu
TmFtZXMoKTsKKyAgICBhdXRvJiBidWlsdGluTmFtZXMgPSB3ZWJDb3JlQnVpbHRpbk5hbWVzKHZt
KTsKICAgICBzd2l0Y2ggKG9iamVjdFR5cGUpIHsKICAgICBjYXNlIENyb3NzT3JpZ2luT2JqZWN0
OjpMb2NhdGlvbjogewogICAgICAgICBzdGF0aWMgY29uc3QgSWRlbnRpZmllciogY29uc3QgcHJv
cGVydGllc1tdID0geyAmYnVpbHRpbk5hbWVzLmhyZWZQdWJsaWNOYW1lKCksICZ2bS5wcm9wZXJ0
eU5hbWVzLT5yZXBsYWNlIH07CkBAIC00MTMsNyArNDEzLDcgQEAgYm9vbCBKU0RPTVdpbmRvdzo6
ZGVmaW5lT3duUHJvcGVydHkoSlNDOjpKU09iamVjdCogb2JqZWN0LCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KgogICAgICAgICByZXR1cm4gdHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3Bl
LCBzaG91bGRUaHJvdywgbWFrZVVuc3VwcG9ydGVkSW5kZXhlZFNldHRlckVycm9yTWVzc2FnZSgi
V2luZG93IikpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKIAotICAgIGF1dG8mIGJ1aWx0aW5OYW1l
cyA9IHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5O
YW1lcygpOworICAgIGF1dG8mIGJ1aWx0aW5OYW1lcyA9IHdlYkNvcmVCdWlsdGluTmFtZXModm0p
OwogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLmRvY3VtZW50UHVibGljTmFt
ZSgpIHx8IHByb3BlcnR5TmFtZSA9PSBidWlsdGluTmFtZXMud2luZG93UHVibGljTmFtZSgpKQog
ICAgICAgICByZXR1cm4gSlNPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KHRoaXNPYmplY3QsIGxl
eGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgc2hvdWxkVGhyb3cp
OwogCkBAIC01ODYsNyArNTg2LDcgQEAgdm9pZCBKU0RPTVdpbmRvdzo6c2V0T3BlbmVyKEpTQzo6
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNWYWwKICAgICB9CiAK
ICAgICBib29sIHNob3VsZFRocm93ID0gdHJ1ZTsKLSAgICBjcmVhdGVEYXRhUHJvcGVydHkoJmxl
eGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcobGV4aWNhbEdsb2JhbE9i
amVjdC52bSgpLCAib3BlbmVyIl9zKSwgdmFsdWUsIHNob3VsZFRocm93KTsKKyAgICBjcmVhdGVE
YXRhUHJvcGVydHkoJmxleGljYWxHbG9iYWxPYmplY3QsIHdlYkNvcmVCdWlsdGluTmFtZXMobGV4
aWNhbEdsb2JhbE9iamVjdC52bSgpKS5vcGVuZXJQdWJsaWNOYW1lKCksIHZhbHVlLCBzaG91bGRU
aHJvdyk7CiB9CiAKIEpTVmFsdWUgSlNET01XaW5kb3c6OnNlbGYoSlNDOjpKU0dsb2JhbE9iamVj
dCYpIGNvbnN0CkBAIC02NDQsNyArNjQ0LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpz
RE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9vcGVuRGF0YWJhc2UsIChKU0dsb2JhbE9iamUKIEpT
VmFsdWUgSlNET01XaW5kb3c6Om9wZW5EYXRhYmFzZShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0KSBjb25zdAogewogICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmpl
Y3Qudm0oKTsKLSAgICBTdHJpbmdJbXBsKiBuYW1lID0gUHJvcGVydHlOYW1lKHN0YXRpY19jYXN0
PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLm9wZW5EYXRh
YmFzZVB1YmxpY05hbWUoKSkucHVibGljTmFtZSgpOworICAgIFN0cmluZ0ltcGwqIG5hbWUgPSBQ
cm9wZXJ0eU5hbWUod2ViQ29yZUJ1aWx0aW5OYW1lcyh2bSkub3BlbkRhdGFiYXNlUHVibGljTmFt
ZSgpKS5wdWJsaWNOYW1lKCk7CiAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJl
ZEZlYXR1cmVzKCkud2ViU1FMRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gSlNGdW5jdGlvbjo6
Y3JlYXRlKHZtLCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgNCwgbmFtZSwganNET01XaW5kb3dJbnN0
YW5jZUZ1bmN0aW9uX29wZW5EYXRhYmFzZSwgTm9JbnRyaW5zaWMpOwogCkBAIC02NTcsNyArNjU3
LDcgQEAgdm9pZCBKU0RPTVdpbmRvdzo6c2V0T3BlbkRhdGFiYXNlKEpTQzo6SlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzoKICAgICAgICAgcmV0dXJuOwogCiAgICAgYm9v
bCBzaG91bGRUaHJvdyA9IHRydWU7Ci0gICAgY3JlYXRlRGF0YVByb3BlcnR5KCZsZXhpY2FsR2xv
YmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGxleGljYWxHbG9iYWxPYmplY3Qudm0o
KSwgIm9wZW5EYXRhYmFzZSJfcyksIHZhbHVlLCBzaG91bGRUaHJvdyk7CisgICAgY3JlYXRlRGF0
YVByb3BlcnR5KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCB3ZWJDb3JlQnVpbHRpbk5hbWVzKGxleGlj
YWxHbG9iYWxPYmplY3Qudm0oKSkub3BlbkRhdGFiYXNlUHVibGljTmFtZSgpLCB2YWx1ZSwgc2hv
dWxkVGhyb3cpOwogfQogCiBKU0RPTVdpbmRvdyYgbWFpbldvcmxkR2xvYmFsT2JqZWN0KEZyYW1l
JiBmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRM
aXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIu
Y3BwCmluZGV4IGM3MGY4NGQyNWM1NzJhYzQ0MjA4MmUzY2Y4OTI4MTcwZDg3N2QzMjMuLmQwY2Y0
YzI5NzcxMmU4MzA3ZWU2YmQyNGRlZjU4YWRjMjA5OTQzOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcApAQCAtMTg2LDcgKzE4Niw3IEBAIHZv
aWQgSlNFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0CiAgICAgICAgIGlmIChtX2lzQXR0cmlidXRlKQogICAgICAg
ICAgICAgcmV0dXJuOwogCi0gICAgICAgIGhhbmRsZUV2ZW50RnVuY3Rpb24gPSBqc0Z1bmN0aW9u
LT5nZXQobGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImhh
bmRsZUV2ZW50Il9zKSk7CisgICAgICAgIGhhbmRsZUV2ZW50RnVuY3Rpb24gPSBqc0Z1bmN0aW9u
LT5nZXQobGV4aWNhbEdsb2JhbE9iamVjdCwgd2ViQ29yZUJ1aWx0aW5OYW1lcyh2bSkuaGFuZGxl
RXZlbnRQdWJsaWNOYW1lKCkpOwogICAgICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9u
KCkpKSB7CiAgICAgICAgICAgICBhdXRvKiBleGNlcHRpb24gPSBzY29wZS5leGNlcHRpb24oKTsK
ICAgICAgICAgICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCmluZGV4IDM5Zjc3M2I5MGUzYTFjYWMw
MzQ0ODcyNWYzYzY2NDYzNGE0M2IzZWQuLmQ5Yzk2MjhkMjgyOWIxNDU5MGJlOWI2MGI1OTQ0MmM1
NDk2ZTc2NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRp
b25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25D
dXN0b20uY3BwCkBAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xv
dENvbW1vbihKU0xvY2F0aW9uJiB0aGlzT2JqZWN0LCBKU0dsb2JhbE9iamVjdCYgbGV4CiAKICAg
ICAvLyBHZXR0aW5nIGxvY2F0aW9uLmhyZWYgY3Jvc3Mgb3JpZ2luIG5lZWRzIHRvIHRocm93LiBI
b3dldmVyLCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoKSBuZWVkcyB0byByZXR1cm4KICAgICAv
LyBhIGRlc2NyaXB0b3IgdGhhdCBoYXMgYSBzZXR0ZXIgYnV0IG5vIGdldHRlci4KLSAgICBpZiAo
c2xvdC5pbnRlcm5hbE1ldGhvZFR5cGUoKSA9PSBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9k
VHlwZTo6R2V0T3duUHJvcGVydHkgJiYgcHJvcGVydHlOYW1lID09IHN0YXRpY19jYXN0PEpTVk1D
bGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLmhyZWZQdWJsaWNOYW1l
KCkpIHsKKyAgICBpZiAoc2xvdC5pbnRlcm5hbE1ldGhvZFR5cGUoKSA9PSBQcm9wZXJ0eVNsb3Q6
OkludGVybmFsTWV0aG9kVHlwZTo6R2V0T3duUHJvcGVydHkgJiYgcHJvcGVydHlOYW1lID09IHdl
YkNvcmVCdWlsdGluTmFtZXModm0pLmhyZWZQdWJsaWNOYW1lKCkpIHsKICAgICAgICAgYXV0byog
ZW50cnkgPSBKU0xvY2F0aW9uOjppbmZvKCktPnN0YXRpY1Byb3BIYXNoVGFibGUtPmVudHJ5KHBy
b3BlcnR5TmFtZSk7CiAgICAgICAgIGF1dG8qIGdldHRlclNldHRlciA9IHRoaXNPYmplY3QuZ2xv
YmFsT2JqZWN0KCktPmNyZWF0ZUNyb3NzT3JpZ2luR2V0dGVyU2V0dGVyKCZsZXhpY2FsR2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIG51bGxwdHIsIGVudHJ5LT5wcm9wZXJ0eVB1dHRlcigpKTsK
ICAgICAgICAgc2xvdC5zZXRHZXR0ZXJTbG90KCZ0aGlzT2JqZWN0LCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6QWNjZXNzb3IgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0sIGdldHRlclNldHRlcik7
CkBAIC0xMjAsNyArMTIwLDcgQEAgYm9vbCBKU0xvY2F0aW9uOjpwdXQoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHkKICAgICAvLyBTbyBm
YWxsIHRocm91Z2ggdG8gdGhlIGFjY2VzcyBjaGVjayBmb3IgdGhvc2UuCiAgICAgU3RyaW5nIGVy
cm9yTWVzc2FnZTsKICAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NU
b0RPTVdpbmRvdygqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc09iamVjdC0+d3JhcHBlZCgpLndp
bmRvdygpLCBlcnJvck1lc3NhZ2UpKSB7Ci0gICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gc3Rh
dGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCku
aHJlZlB1YmxpY05hbWUoKSkgeworICAgICAgICBpZiAocHJvcGVydHlOYW1lID09IHdlYkNvcmVC
dWlsdGluTmFtZXModm0pLmhyZWZQdWJsaWNOYW1lKCkpIHsKICAgICAgICAgICAgIGF1dG8qIHNl
dHRlciA9IHNfaW5mby5zdGF0aWNQcm9wSGFzaFRhYmxlLT5lbnRyeShwcm9wZXJ0eU5hbWUpLT5w
cm9wZXJ0eVB1dHRlcigpOwogICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgICAgICAg
ICAgc2V0dGVyKGxleGljYWxHbG9iYWxPYmplY3QsIEpTVmFsdWU6OmVuY29kZShwdXRQcm9wZXJ0
eVNsb3QudGhpc1ZhbHVlKCkpLCBKU1ZhbHVlOjplbmNvZGUodmFsdWUpLCBwcm9wZXJ0eU5hbWUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZW1vdGVET01XaW5k
b3dDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZW1vdGVET01XaW5k
b3dDdXN0b20uY3BwCmluZGV4IDBmNWFhZDY1ZDE0ZTVkZDk1M2JiNzY4OWJlNGIyN2FjOTg5NzM1
NTAuLjU1M2I3ODVlNWZhMjlhZTBlODMwNDVkZTZjZWY5NWEzZDliZDhlZjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVtb3RlRE9NV2luZG93Q3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlbW90ZURPTVdpbmRvd0N1c3RvbS5j
cHAKQEAgLTY3LDcgKzY3LDcgQEAgYm9vbCBKU1JlbW90ZURPTVdpbmRvdzo6cHV0KEpTQ2VsbCog
Y2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFAKICAgICBTdHJpbmcg
ZXJyb3JNZXNzYWdlOwogCiAgICAgLy8gV2Ugb25seSBhbGxvdyBzZXR0aW5nICJsb2NhdGlvbiIg
YXR0cmlidXRlIGNyb3NzLW9yaWdpbi4KLSAgICBpZiAocHJvcGVydHlOYW1lID09IHN0YXRpY19j
YXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLmxvY2F0
aW9uUHVibGljTmFtZSgpKSB7CisgICAgaWYgKHByb3BlcnR5TmFtZSA9PSB3ZWJDb3JlQnVpbHRp
bk5hbWVzKHZtKS5sb2NhdGlvblB1YmxpY05hbWUoKSkgewogICAgICAgICBhdXRvKiBzZXR0ZXIg
PSBzX2luZm8uc3RhdGljUHJvcEhhc2hUYWJsZS0+ZW50cnkocHJvcGVydHlOYW1lKS0+cHJvcGVy
dHlQdXR0ZXIoKTsKICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgICAgICBzZXR0ZXIobGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZW5jb2RlKHNsb3QudGhpc1ZhbHVlKCkpLCBKU1Zh
bHVlOjplbmNvZGUodmFsdWUpLCBwcm9wZXJ0eU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvUmVhZGFibGVTdHJlYW0uY3BwCmluZGV4IDYwMzY0NTlkMTViODE5OGEzODQ0ZTk5
NDA5NjhhZGIzNzdiNjVlOTAuLjcxZjU1MWRlOGM2Zjg4ZTcxNmQ2YTc2ZWIxZTZkM2U0MjRjNzBk
YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFt
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbS5jcHAK
QEAgLTY2LDkgKzY2LDkgQEAgc3RhdGljIGlubGluZSBFeGNlcHRpb25PcjxKU09iamVjdCo+IGlu
dm9rZUNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGkKIAogRXhjZXB0aW9uT3I8
UmVmPFJlYWRhYmxlU3RyZWFtPj4gUmVhZGFibGVTdHJlYW06OmNyZWF0ZShKU0M6OkpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBSZWZQdHI8UmVhZGFibGVTdHJlYW1Tb3VyY2U+
JiYgc291cmNlKQogewotICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNs
aWVudERhdGEqPihsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCkuY2xpZW50RGF0YSk7CisgICAgYXV0
byYgYnVpbHRpbk5hbWVzID0gd2ViQ29yZUJ1aWx0aW5OYW1lcyhsZXhpY2FsR2xvYmFsT2JqZWN0
LnZtKCkpOwogCi0gICAgYXV0byBvYmplY3RPckV4Y2VwdGlvbiA9IGludm9rZUNvbnN0cnVjdG9y
KGxleGljYWxHbG9iYWxPYmplY3QsIGNsaWVudERhdGEuYnVpbHRpbk5hbWVzKCkuUmVhZGFibGVT
dHJlYW1Qcml2YXRlTmFtZSgpLCBbJnNvdXJjZV0oYXV0byYgYXJncywgYXV0byYgbGV4aWNhbEds
b2JhbE9iamVjdCwgYXV0byYgZ2xvYmFsT2JqZWN0KSB7CisgICAgYXV0byBvYmplY3RPckV4Y2Vw
dGlvbiA9IGludm9rZUNvbnN0cnVjdG9yKGxleGljYWxHbG9iYWxPYmplY3QsIGJ1aWx0aW5OYW1l
cy5SZWFkYWJsZVN0cmVhbVByaXZhdGVOYW1lKCksIFsmc291cmNlXShhdXRvJiBhcmdzLCBhdXRv
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBhdXRvJiBnbG9iYWxPYmplY3QpIHsKICAgICAgICAgYXJn
cy5hcHBlbmQoc291cmNlID8gdG9KU05ld2x5Q3JlYXRlZCgmbGV4aWNhbEdsb2JhbE9iamVjdCwg
Jmdsb2JhbE9iamVjdCwgc291cmNlLnJlbGVhc2VOb25OdWxsKCkpIDogSlNDOjpqc1VuZGVmaW5l
ZCgpKTsKICAgICB9KTsKIApAQCAtMTMwLDggKzEzMCw4IEBAIHN0ZDo6b3B0aW9uYWw8c3RkOjpw
YWlyPFJlZjxSZWFkYWJsZVN0cmVhbT4sIFJlZjxSZWFkYWJsZVN0cmVhbT4+PiBSZWFkYWJsZVN0
cmVhCiAKIHZvaWQgUmVhZGFibGVTdHJlYW06OmxvY2soKQogewotICAgIGF1dG8mIGNsaWVudERh
dGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPihtX2dsb2JhbE9iamVjdC0+dm0oKS5j
bGllbnREYXRhKTsKLSAgICBpbnZva2VDb25zdHJ1Y3RvcigqbV9nbG9iYWxPYmplY3QsIGNsaWVu
dERhdGEuYnVpbHRpbk5hbWVzKCkuUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyUHJpdmF0ZU5h
bWUoKSwgW3RoaXNdKGF1dG8mIGFyZ3MsIGF1dG8mLCBhdXRvJikgeworICAgIGF1dG8mIGJ1aWx0
aW5OYW1lcyA9IHdlYkNvcmVCdWlsdGluTmFtZXMobV9nbG9iYWxPYmplY3QtPnZtKCkpOworICAg
IGludm9rZUNvbnN0cnVjdG9yKCptX2dsb2JhbE9iamVjdCwgYnVpbHRpbk5hbWVzLlJlYWRhYmxl
U3RyZWFtRGVmYXVsdFJlYWRlclByaXZhdGVOYW1lKCksIFt0aGlzXShhdXRvJiBhcmdzLCBhdXRv
JiwgYXV0byYpIHsKICAgICAgICAgYXJncy5hcHBlbmQocmVhZGFibGVTdHJlYW0oKSk7CiAgICAg
fSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250
cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIu
Y3BwCmluZGV4IGI2ZDRhZmMyM2MzYmI0MDM4MTk5Mjk4OWE3N2E4YWMyYmQwNjA2NDAuLmRiMmYx
ZjE4NWNkN2IzNDdlZWY4MWIzYWQ1MmMzODNjZWQwYmZmMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0zMzYsNyArMzM2LDcgQEAg
dm9pZCBTY3JpcHRDb250cm9sbGVyOjpzZXR1cE1vZHVsZVNjcmlwdEhhbmRsZXJzKExvYWRhYmxl
TW9kdWxlU2NyaXB0JiBtb2R1bGVTY3IKICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FU
Q0hfU0NPUEUodm0pOwogICAgICAgICBpZiAoZXJyb3JWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAg
ICAgICAgICBhdXRvKiBvYmplY3QgPSBKU0M6OmFzT2JqZWN0KGVycm9yVmFsdWUpOwotICAgICAg
ICAgICAgaWYgKEpTVmFsdWUgZmFpbHVyZUtpbmRWYWx1ZSA9IG9iamVjdC0+Z2V0RGlyZWN0KHZt
LCBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSY+KCp2bS5jbGllbnREYXRhKS5idWlsdGluTmFt
ZXMoKS5mYWlsdXJlS2luZFByaXZhdGVOYW1lKCkpKSB7CisgICAgICAgICAgICBpZiAoSlNWYWx1
ZSBmYWlsdXJlS2luZFZhbHVlID0gb2JqZWN0LT5nZXREaXJlY3Qodm0sIHdlYkNvcmVCdWlsdGlu
TmFtZXModm0pLmZhaWx1cmVLaW5kUHJpdmF0ZU5hbWUoKSkpIHsKICAgICAgICAgICAgICAgICAv
LyBUaGlzIGlzIGhvc3QgcHJvcGFnYXRlZCBlcnJvciBpbiB0aGUgbW9kdWxlIGxvYWRlciBwaXBl
bGluZS4KICAgICAgICAgICAgICAgICBzd2l0Y2ggKHN0YXRpY19jYXN0PE1vZHVsZUZldGNoRmFp
bHVyZUtpbmQ+KGZhaWx1cmVLaW5kVmFsdWUuYXNJbnQzMigpKSkgewogICAgICAgICAgICAgICAg
IGNhc2UgTW9kdWxlRmV0Y2hGYWlsdXJlS2luZDo6V2FzUHJvcGFnYXRlZEVycm9yOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5jcHAKaW5kZXgg
NjUxMDNmZDYyZjM1NDg4MDg1MjUwMmY3NzNkNjRmMTQwYjVjOGFhOS4uNWRmMzg3ZGIxYzVhMmMx
M2Q3MWNiMzJhYTdmYTFhNDQ2NTBhYzRiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgc3RhdGlj
IHZvaWQgcmVqZWN0VG9Qcm9wYWdhdGVOZXR3b3JrRXJyb3IoRGVmZXJyZWRQcm9taXNlJiBkZWZl
cnJlZCwgTW9kdWxlRmV0Y2gKICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2NzU1MwogICAgICAgICBhdXRvKiBlcnJvciA9IEpTQzo6Y3JlYXRlVHlw
ZUVycm9yKCZqc0dsb2JhbE9iamVjdCwgbWVzc2FnZSk7CiAgICAgICAgIEFTU0VSVChlcnJvcik7
Ci0gICAgICAgIGVycm9yLT5wdXREaXJlY3Qodm0sIHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRh
Jj4oKnZtLmNsaWVudERhdGEpLmJ1aWx0aW5OYW1lcygpLmZhaWx1cmVLaW5kUHJpdmF0ZU5hbWUo
KSwgSlNDOjpqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihmYWlsdXJlS2luZCkpKTsKKyAg
ICAgICAgZXJyb3ItPnB1dERpcmVjdCh2bSwgd2ViQ29yZUJ1aWx0aW5OYW1lcyh2bSkuZmFpbHVy
ZUtpbmRQcml2YXRlTmFtZSgpLCBKU0M6OmpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KGZh
aWx1cmVLaW5kKSkpOwogICAgICAgICByZXR1cm4gZXJyb3I7CiAgICAgfSk7CiB9CkBAIC0xNjMs
NyArMTYzLDcgQEAgc3RhdGljIHZvaWQgcmVqZWN0V2l0aEZldGNoRXJyb3IoRGVmZXJyZWRQcm9t
aXNlJiBkZWZlcnJlZCwgRXhjZXB0aW9uQ29kZSBlYywgY28KICAgICAgICAgSlNDOjpWTSYgdm0g
PSBqc0dsb2JhbE9iamVjdC52bSgpOwogICAgICAgICBKU0M6OkpTT2JqZWN0KiBlcnJvciA9IGpz
Q2FzdDxKU0M6OkpTT2JqZWN0Kj4oY3JlYXRlRE9NRXhjZXB0aW9uKCZqc0dsb2JhbE9iamVjdCwg
ZWMsIG1lc3NhZ2UpKTsKICAgICAgICAgQVNTRVJUKGVycm9yKTsKLSAgICAgICAgZXJyb3ItPnB1
dERpcmVjdCh2bSwgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEmPigqdm0uY2xpZW50RGF0YSku
YnVpbHRpbk5hbWVzKCkuZmFpbHVyZUtpbmRQcml2YXRlTmFtZSgpLCBKU0M6OmpzTnVtYmVyKHN0
YXRpY19jYXN0PGludDMyX3Q+KE1vZHVsZUZldGNoRmFpbHVyZUtpbmQ6Oldhc0ZldGNoRXJyb3Ip
KSk7CisgICAgICAgIGVycm9yLT5wdXREaXJlY3Qodm0sIHdlYkNvcmVCdWlsdGluTmFtZXModm0p
LmZhaWx1cmVLaW5kUHJpdmF0ZU5hbWUoKSwgSlNDOjpqc051bWJlcihzdGF0aWNfY2FzdDxpbnQz
Ml90PihNb2R1bGVGZXRjaEZhaWx1cmVLaW5kOjpXYXNGZXRjaEVycm9yKSkpOwogICAgICAgICBy
ZXR1cm4gZXJyb3I7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKaW5kZXggYzEyODU3NzAyOWYwOWQwZjZhMGNlNzdiMmUw
ZDg1YzE5YzJlOWZjMC4uNjNlYTdmYWFmNTlkZDc3OTQwMjkzNDQ2MzM4ZmE4YjIyODM1NWZhNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1l
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMu
aApAQCAtNDczLDYgKzQ3Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhnZXRU
cmFja3MpIFwKICAgICBtYWNybyhnZXRVc2VyTWVkaWEpIFwKICAgICBtYWNybyhncHUpIFwKKyAg
ICBtYWNybyhoYW5kbGVFdmVudCkgXAogICAgIG1hY3JvKGhlYWRlcikgXAogICAgIG1hY3JvKGhp
Z2hXYXRlck1hcmspIFwKICAgICBtYWNybyhocmVmKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmgKaW5kZXggMWZhNTM1MWM1NTJmOWE5NjU4
YTA1MzdmYmEyOGRmODRmN2MzOGZiYy4uZTMyYTFjM2Y0MjY2NDNlNjY0OTIyZjE3MDg2YmMxZGU0
MjJkZGJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpT
Q2xpZW50RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0Ns
aWVudERhdGEuaApAQCAtMjA4LDQgKzIwOCw5IEBAIElHTk9SRV9XQVJOSU5HU19FTkQKICAgICBy
ZXR1cm4gY2xpZW50U3BhY2U7CiB9CiAKK0FMV0FZU19JTkxJTkUgV2ViQ29yZUJ1aWx0aW5OYW1l
cyYgd2ViQ29yZUJ1aWx0aW5OYW1lcyhKU0M6OlZNJiB2bSkKK3sKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggYzQ1ZmNhYmJjMjNkNjI1YjJiY2Zl
ZWVkZWFhMTg1ZmI2YzE3MjJkNy4uOWMwNWFkNTIzYWFiMWMyOTQ3Mjg1YWZmNzU0YWMyNGJlNDU5
NzE5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG0KQEAgLTQ2MDMsMTAgKzQ2MDMsMTAgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50
YXRpb24KICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoISR7cnVu
dGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nfSlcbiIpOwogICAgICAgICAgICAgICAgIGlmIChJ
c0FjY2VsZXJhdGVkRE9NQXR0cmlidXRlKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpKSB7CiAgICAg
ICAgICAgICAgICAgICAgIG15ICRjbGFzc0ZvclRoaXMgPSAiJHtjbGFzc05hbWV9OjppbmZvKCki
OwotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcHV0RGly
ZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xp
ZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLiIgLiAkYXR0cmlidXRlTmFtZSAuICJQdWJsaWNOYW1l
KCksIEpTQzo6RE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sICRnZXR0ZXIsICRz
ZXR0ZXIsIEpTQzo6RE9NQXR0cmlidXRlQW5ub3RhdGlvbiB7ICRjbGFzc0ZvclRoaXMsIG51bGxw
dHIgfSksIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoJGpzY0F0dHJpYnV0ZXMpKTtcbiIpOworICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcHV0RGlyZWN0Q3Vz
dG9tQWNjZXNzb3Iodm0sIHdlYkNvcmVCdWlsdGluTmFtZXModm0pLiIgLiAkYXR0cmlidXRlTmFt
ZSAuICJQdWJsaWNOYW1lKCksIEpTQzo6RE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyOjpjcmVhdGUo
dm0sICRnZXR0ZXIsICRzZXR0ZXIsIEpTQzo6RE9NQXR0cmlidXRlQW5ub3RhdGlvbiB7ICRjbGFz
c0ZvclRoaXMsIG51bGxwdHIgfSksIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoJGpzY0F0dHJpYnV0
ZXMpKTtcbiIpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAg
IGFzc2VydCgiQ3VzdG9tR2V0dGVyU2V0dGVyIGlzIG5vdCBhbGxvd2VkIGZvciBET01BdHRyaWJ1
dGUuIERPTUF0dHJpYnV0ZUdldHRlclNldHRlciBtdXN0IGJlIHVzZWQuIikgaWYgSXNBY2NlbGVy
YXRlZERPTUF0dHJpYnV0ZSgkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKLSAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29y
KHZtLCBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGlu
TmFtZXMoKS4iIC4gJGF0dHJpYnV0ZU5hbWUgLiAiUHVibGljTmFtZSgpLCBDdXN0b21HZXR0ZXJT
ZXR0ZXI6OmNyZWF0ZSh2bSwgJGdldHRlciwgJHNldHRlciksIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1
cmUoJGpzY0F0dHJpYnV0ZXMpKTtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAgICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIHdlYkNvcmVCdWls
dGluTmFtZXModm0pLiIgLiAkYXR0cmlidXRlTmFtZSAuICJQdWJsaWNOYW1lKCksIEN1c3RvbUdl
dHRlclNldHRlcjo6Y3JlYXRlKHZtLCAkZ2V0dGVyLCAkc2V0dGVyKSwgYXR0cmlidXRlc0ZvclN0
cnVjdHVyZSgkanNjQXR0cmlidXRlcykpO1xuIik7CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2VuZGlmXG4iKSBpZiAkY29uZGl0aW9uYWxT
dHJpbmc7CiAgICAgICAgICAgICB9CkBAIC00NjIyLDcgKzQ2MjIsNyBAQCBzdWIgR2VuZXJhdGVJ
bXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIldlYkNvcmVKU0Ns
aWVudERhdGEuaCIpOwogICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVH
ZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJG9wZXJhdGlvbik7CiAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYg
JGNvbmRpdGlvbmFsU3RyaW5nOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
cHV0RGlyZWN0KHZtLCBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEp
LT5idWlsdGluTmFtZXMoKS4iIC4gJG9wZXJhdGlvbi0+bmFtZSAuICJQcml2YXRlTmFtZSgpLCBK
U0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCgpLCAwLCBTdHJpbmcoKSwgIiAuIEdl
dEZ1bmN0aW9uTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkb3BlcmF0aW9uKSAuICIpLCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcHV0
RGlyZWN0KHZtLCB3ZWJDb3JlQnVpbHRpbk5hbWVzKHZtKS4iIC4gJG9wZXJhdGlvbi0+bmFtZSAu
ICJQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCgpLCAw
LCBTdHJpbmcoKSwgIiAuIEdldEZ1bmN0aW9uTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAk
b3BlcmF0aW9uKSAuICIpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIjZW5kaWZcbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKICAgICAgICAgfQog
CkBAIC00NzQxLDEwICs0NzQxLDEwIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAg
ICAgIGFzc2VydCgiQ3VzdG9tR2V0dGVyU2V0dGVyIGlzIG5vdCBhbGxvd2VkIGZvciBET01BdHRy
aWJ1dGUuIERPTUF0dHJpYnV0ZUdldHRlclNldHRlciBtdXN0IGJlIHVzZWQuIikgaWYgSXNBY2Nl
bGVyYXRlZERPTUF0dHJpYnV0ZSgkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKIAogICAgICAgICBp
ZiAoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UHVibGljSWRlbnRpZmllcn0gfHwg
ISRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1ByaXZhdGVJZGVudGlmaWVyfSkgewot
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHB1dERpcmVjdEN1c3RvbUFj
Y2Vzc29yKHZtLCBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5i
dWlsdGluTmFtZXMoKS4iIC4gJGF0dHJpYnV0ZU5hbWUgLiAiUHVibGljTmFtZSgpLCBDdXN0b21H
ZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgJGdldHRlciwgJHNldHRlciksIGF0dHJpYnV0ZXNGb3JT
dHJ1Y3R1cmUoJGpzY0F0dHJpYnV0ZXMpKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCB3ZWJDb3JlQnVpbHRp
bk5hbWVzKHZtKS4iIC4gJGF0dHJpYnV0ZU5hbWUgLiAiUHVibGljTmFtZSgpLCBDdXN0b21HZXR0
ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgJGdldHRlciwgJHNldHRlciksIGF0dHJpYnV0ZXNGb3JTdHJ1
Y3R1cmUoJGpzY0F0dHJpYnV0ZXMpKTtcbiIpOwogICAgICAgICB9CiAgICAgICAgIGlmICgkYXR0
cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntQcml2YXRlSWRlbnRpZmllcn0pIHsKLSAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nv
cih2bSwgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRp
bk5hbWVzKCkuIiAuICRhdHRyaWJ1dGVOYW1lIC4gIlByaXZhdGVOYW1lKCksIEN1c3RvbUdldHRl
clNldHRlcjo6Y3JlYXRlKHZtLCAkZ2V0dGVyLCAkc2V0dGVyKSwgYXR0cmlidXRlc0ZvclN0cnVj
dHVyZSgkanNjQXR0cmlidXRlcykpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICAgICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIHdlYkNvcmVCdWlsdGluTmFt
ZXModm0pLiIgLiAkYXR0cmlidXRlTmFtZSAuICJQcml2YXRlTmFtZSgpLCBDdXN0b21HZXR0ZXJT
ZXR0ZXI6OmNyZWF0ZSh2bSwgJGdldHRlciwgJHNldHRlciksIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1
cmUoJGpzY0F0dHJpYnV0ZXMpKTtcbiIpOwogICAgICAgICB9CiAKICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgfVxuIikgaWYgJGlzUHJpdmF0ZUFuZFB1YmxpYzsKQEAgLTQ3NjQsNyAr
NDc2NCw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0
cmluZzsKICAgICAgICAgYXNzZXJ0KCJDdXN0b21HZXR0ZXJTZXR0ZXIgaXMgbm90IGFsbG93ZWQg
Zm9yIERPTUF0dHJpYnV0ZS4gRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyIG11c3QgYmUgdXNlZC4i
KSBpZiBJc0FjY2VsZXJhdGVkRE9NQXR0cmlidXRlKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOwot
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2
bSwgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5h
bWVzKCkuIiAuICRhdHRyaWJ1dGVOYW1lIC4gIlByaXZhdGVOYW1lKCksIEN1c3RvbUdldHRlclNl
dHRlcjo6Y3JlYXRlKHZtLCAkZ2V0dGVyLCBudWxscHRyKSwgYXR0cmlidXRlc0ZvclN0cnVjdHVy
ZShKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkpKTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBw
dXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgd2ViQ29yZUJ1aWx0aW5OYW1lcyh2bSkuIiAuICRh
dHRyaWJ1dGVOYW1lIC4gIlByaXZhdGVOYW1lKCksIEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRl
KHZtLCAkZ2V0dGVyLCBudWxscHRyKSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkpKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZlxuIikgaWYgJGNv
bmRpdGlvbmFsU3RyaW5nOwogICAgIH0KIApAQCAtNDc4NCw3ICs0Nzg0LDcgQEAgc3ViIEdlbmVy
YXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVH
ZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJG9wZXJhdGlvbik7CiAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29u
ZGl0aW9uYWxTdHJpbmc7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICgke3J1
bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZ30pXG4iKTsKLSAgICAgICAgbXkgJHByb3BlcnR5
TmFtZSA9ICJzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWls
dGluTmFtZXMoKS4iIC4gJGZ1bmN0aW9uTmFtZSAuICgkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntQcml2YXRlSWRlbnRpZmllcn0gPyAiUHJpdmF0ZU5hbWUoKSIgOiAiUHVibGljTmFt
ZSgpIik7CisgICAgICAgIG15ICRwcm9wZXJ0eU5hbWUgPSAid2ViQ29yZUJ1aWx0aW5OYW1lcyh2
bSkuIiAuICRmdW5jdGlvbk5hbWUgLiAoJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
UHJpdmF0ZUlkZW50aWZpZXJ9ID8gIlByaXZhdGVOYW1lKCkiIDogIlB1YmxpY05hbWUoKSIpOwog
ICAgICAgICBpZiAoSXNKU0J1aWx0aW4oJGludGVyZmFjZSwgJG9wZXJhdGlvbikpIHsKICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBwdXREaXJlY3RCdWlsdGluRnVuY3Rp
b24odm0sIHRoaXMsICRwcm9wZXJ0eU5hbWUsICRpbXBsZW1lbnRhdGlvbkZ1bmN0aW9uKHZtKSwg
YXR0cmlidXRlc0ZvclN0cnVjdHVyZSgkanNBdHRyaWJ1dGVzKSk7XG4iKTsKICAgICAgICAgfSBl
bHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNET01XaW5kb3cuY3BwCmluZGV4IDBmZWEwMjU5NTZiMDE1OTllN2I1NjAzODU0Mzg2MTM2
YTJhMDExMTMuLmI0MmU1NGE1YjMzNGZmZDM4NTFjZDk3NjM3NzM5MWIxMWRjNzg1OTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RPTVdpbmRv
dy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9N
V2luZG93LmNwcApAQCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgSlNET01XaW5kb3c6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSwgSlNXaW5kb3dQcm94eSogcHJveHkpCiAgICAgc3RhdGljX2Fzc2VydCgh
c3RkOjppc19iYXNlX29mPEFjdGl2ZURPTU9iamVjdCwgRE9NV2luZG93Pjo6dmFsdWUsICJJbnRl
cmZhY2UgaXMgbm90IG1hcmtlZCBhcyBbQWN0aXZlRE9NT2JqZWN0XSBldmVuIHRob3VnaCBpbXBs
ZW1lbnRhdGlvbiBjbGFzcyBzdWJjbGFzc2VzIEFjdGl2ZURPTU9iamVjdC4iKTsKIAogICAgIGlm
ICgoanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCktPmlzU2VjdXJlQ29udGV4dCgpICYmIFRlc3RFbmFibGVkRm9yQ29udGV4
dDo6ZW5hYmxlZEZvckNvbnRleHQoKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9i
amVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSkpCi0gICAgICAgIHB1dERpcmVjdEN1
c3RvbUFjY2Vzc29yKHZtLCBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERh
dGEpLT5idWlsdGluTmFtZXMoKS5UZXN0RW5hYmxlZEZvckNvbnRleHRQdWJsaWNOYW1lKCksIEN1
c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBqc0RPTVdpbmRvd19UZXN0RW5hYmxlZEZvckNv
bnRleHRDb25zdHJ1Y3RvciwgbnVsbHB0ciksIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSkpOworICAg
ICAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgd2ViQ29yZUJ1aWx0aW5OYW1lcyh2bSku
VGVzdEVuYWJsZWRGb3JDb250ZXh0UHVibGljTmFtZSgpLCBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNy
ZWF0ZSh2bSwganNET01XaW5kb3dfVGVzdEVuYWJsZWRGb3JDb250ZXh0Q29uc3RydWN0b3IsIG51
bGxwdHIpLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpKTsKIH0KIAogSlNWYWx1ZSBKU0RPTVdpbmRv
dzo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUuY3BwCmluZGV4
IDc4MTQyYmY3NjI2OTE2Y2JlYjBjNjcyNTk4ZWExYjUxNjY5Y2VmNDAuLmJlNDEwODAwYWZlNGU4
MjA2YTQ1OTNjMjFjNTJhOTUxMWJkNDhkNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0
aW9uYWxseVJlYWRXcml0ZS5jcHAKQEAgLTIxOCwxNiArMjE4LDE2IEBAIHZvaWQgSlNUZXN0Q29u
ZGl0aW9uYWxseVJlYWRXcml0ZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogICAg
IH0KICAgICAvLyBBZGRpbmcgYmFjayBhdHRyaWJ1dGUsIGJ1dCBhcyByZWFkb25seSwgYWZ0ZXIg
cmVtb3ZpbmcgdGhlIHJlYWQtd3JpdGUgdmFyaWFudCBhYm92ZS4gCiAgICAgaWYgKCFSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpKQot
ICAgICAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgc3RhdGljX2Nhc3Q8SlNWTUNsaWVu
dERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkucnVudGltZUNvbmRpdGlvbmFs
bHlSZWFkV3JpdGVBdHRyaWJ1dGVQdWJsaWNOYW1lKCksIEpTQzo6RE9NQXR0cmlidXRlR2V0dGVy
U2V0dGVyOjpjcmVhdGUodm0sIGpzVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGVfcnVudGltZUNv
bmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGUsIG51bGxwdHIsIEpTQzo6RE9NQXR0cmlidXRl
QW5ub3RhdGlvbiB7IEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGU6OmluZm8oKSwgbnVsbHB0
ciB9KSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpKSk7CisgICAgICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCB3
ZWJDb3JlQnVpbHRpbk5hbWVzKHZtKS5ydW50aW1lQ29uZGl0aW9uYWxseVJlYWRXcml0ZUF0dHJp
YnV0ZVB1YmxpY05hbWUoKSwgSlNDOjpET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2
bSwganNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZV9ydW50aW1lQ29uZGl0aW9uYWxseVJlYWRX
cml0ZUF0dHJpYnV0ZSwgbnVsbHB0ciwgSlNDOjpET01BdHRyaWJ1dGVBbm5vdGF0aW9uIHsgSlNU
ZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZTo6aW5mbygpLCBudWxscHRyIH0pLCBhdHRyaWJ1dGVz
Rm9yU3RydWN0dXJlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSkp
KTsKICAgICAvLyBBZGRpbmcgYmFjayBhdHRyaWJ1dGUsIGJ1dCBhcyByZWFkb25seSwgYWZ0ZXIg
cmVtb3ZpbmcgdGhlIHJlYWQtd3JpdGUgdmFyaWFudCBhYm92ZS4gCiAgICAgaWYgKCFSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpKQot
ICAgICAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgc3RhdGljX2Nhc3Q8SlNWTUNsaWVu
dERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkucnVudGltZUNvbmRpdGlvbmFs
bHlSZWFkV3JpdGVBdHRyaWJ1dGVQcm9taXNlUHVibGljTmFtZSgpLCBDdXN0b21HZXR0ZXJTZXR0
ZXI6OmNyZWF0ZSh2bSwganNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZV9ydW50aW1lQ29uZGl0
aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0ZVByb21pc2UsIG51bGxwdHIpLCBhdHRyaWJ1dGVzRm9y
U3RydWN0dXJlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21BY2Nlc3NvcikpKTsKKyAgICAgICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIHdl
YkNvcmVCdWlsdGluTmFtZXModm0pLnJ1bnRpbWVDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmli
dXRlUHJvbWlzZVB1YmxpY05hbWUoKSwgQ3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGpz
VGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGVfcnVudGltZUNvbmRpdGlvbmFsbHlSZWFkV3JpdGVB
dHRyaWJ1dGVQcm9taXNlLCBudWxscHRyKSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IpKSk7
CiAgICAgLy8gQWRkaW5nIGJhY2sgYXR0cmlidXRlLCBidXQgYXMgcmVhZG9ubHksIGFmdGVyIHJl
bW92aW5nIHRoZSByZWFkLXdyaXRlIHZhcmlhbnQgYWJvdmUuIAogICAgIGlmICghZG93bmNhc3Q8
RG9jdW1lbnQ+KGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+c2V0dGluZ3NWYWx1ZXMoKS50ZXN0RmVhdHVyZUVuYWJs
ZWQpCi0gICAgICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBzdGF0aWNfY2FzdDxKU1ZN
Q2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKS5zZXR0aW5nc0NvbmRp
dGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGVQdWJsaWNOYW1lKCksIEpTQzo6RE9NQXR0cmlidXRl
R2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGpzVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGVfc2V0
dGluZ3NDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRlLCBudWxscHRyLCBKU0M6OkRPTUF0
dHJpYnV0ZUFubm90YXRpb24geyBKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlOjppbmZvKCks
IG51bGxwdHIgfSksIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSkpOworICAgICAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nv
cih2bSwgd2ViQ29yZUJ1aWx0aW5OYW1lcyh2bSkuc2V0dGluZ3NDb25kaXRpb25hbGx5UmVhZFdy
aXRlQXR0cmlidXRlUHVibGljTmFtZSgpLCBKU0M6OkRPTUF0dHJpYnV0ZUdldHRlclNldHRlcjo6
Y3JlYXRlKHZtLCBqc1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlX3NldHRpbmdzQ29uZGl0aW9u
YWxseVJlYWRXcml0ZUF0dHJpYnV0ZSwgbnVsbHB0ciwgSlNDOjpET01BdHRyaWJ1dGVBbm5vdGF0
aW9uIHsgSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZTo6aW5mbygpLCBudWxscHRyIH0pLCBh
dHRyaWJ1dGVzRm9yU3RydWN0dXJlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0
dHJpYnV0ZSkpKTsKICAgICAvLyBBZGRpbmcgYmFjayBhdHRyaWJ1dGUsIGJ1dCBhcyByZWFkb25s
eSwgYWZ0ZXIgcmVtb3ZpbmcgdGhlIHJlYWQtd3JpdGUgdmFyaWFudCBhYm92ZS4gCiAgICAgaWYg
KCFkb3duY2FzdDxEb2N1bWVudD4oanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2Jq
ZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLT5zZXR0aW5nc1ZhbHVlcygpLnRlc3RG
ZWF0dXJlRW5hYmxlZCkKLSAgICAgICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIHN0YXRp
Y19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLnNl
dHRpbmdzQ29uZGl0aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0ZVByb21pc2VQdWJsaWNOYW1lKCks
IEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBqc1Rlc3RDb25kaXRpb25hbGx5UmVhZFdy
aXRlX3NldHRpbmdzQ29uZGl0aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0ZVByb21pc2UsIG51bGxw
dHIpLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvcikpKTsKKyAgICAgICAgcHV0RGlyZWN0Q3Vz
dG9tQWNjZXNzb3Iodm0sIHdlYkNvcmVCdWlsdGluTmFtZXModm0pLnNldHRpbmdzQ29uZGl0aW9u
YWxseVJlYWRXcml0ZUF0dHJpYnV0ZVByb21pc2VQdWJsaWNOYW1lKCksIEN1c3RvbUdldHRlclNl
dHRlcjo6Y3JlYXRlKHZtLCBqc1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlX3NldHRpbmdzQ29u
ZGl0aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0ZVByb21pc2UsIG51bGxwdHIpLCBhdHRyaWJ1dGVz
Rm9yU3RydWN0dXJlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpDdXN0b21BY2Nlc3NvcikpKTsKICAgICBpZiAoaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGll
cyAmJiBzdHJ1Y3R1cmUoKS0+aXNEaWN0aW9uYXJ5KCkpCiAgICAgICAgIGZsYXR0ZW5EaWN0aW9u
YXJ5T2JqZWN0KHZtKTsKICAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04o
KTsKQEAgLTI0Nyw4ICsyNDcsOCBAQCB2b2lkIEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGU6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIAogICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfYmFz
ZV9vZjxBY3RpdmVET01PYmplY3QsIFRlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlPjo6dmFsdWUs
ICJJbnRlcmZhY2UgaXMgbm90IG1hcmtlZCBhcyBbQWN0aXZlRE9NT2JqZWN0XSBldmVuIHRob3Vn
aCBpbXBsZW1lbnRhdGlvbiBjbGFzcyBzdWJjbGFzc2VzIEFjdGl2ZURPTU9iamVjdC4iKTsKIAot
ICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0
YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKS5ydW50aW1lQ29uZGl0aW9uYWxseVJl
YWRXcml0ZUF0dHJpYnV0ZVVuZm9yZ2VhYmxlUHJpdmF0ZVByaXZhdGVOYW1lKCksIEN1c3RvbUdl
dHRlclNldHRlcjo6Y3JlYXRlKHZtLCBqc1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlX3J1bnRp
bWVDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRlVW5mb3JnZWFibGVQcml2YXRlLCBudWxs
cHRyKSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpKTsKLSAgICBwdXREaXJl
Y3RDdXN0b21BY2Nlc3Nvcih2bSwgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGll
bnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuc2V0dGluZ3NDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0
cmlidXRlVW5mb3JnZWFibGVQcml2YXRlUHJpdmF0ZU5hbWUoKSwgQ3VzdG9tR2V0dGVyU2V0dGVy
OjpjcmVhdGUodm0sIGpzVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGVfc2V0dGluZ3NDb25kaXRp
b25hbGx5UmVhZFdyaXRlQXR0cmlidXRlVW5mb3JnZWFibGVQcml2YXRlLCBudWxscHRyKSwgYXR0
cmlidXRlc0ZvclN0cnVjdHVyZShKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpKTsKKyAgICBwdXREaXJlY3RDdXN0b21B
Y2Nlc3Nvcih2bSwgd2ViQ29yZUJ1aWx0aW5OYW1lcyh2bSkucnVudGltZUNvbmRpdGlvbmFsbHlS
ZWFkV3JpdGVBdHRyaWJ1dGVVbmZvcmdlYWJsZVByaXZhdGVQcml2YXRlTmFtZSgpLCBDdXN0b21H
ZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwganNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZV9ydW50
aW1lQ29uZGl0aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0ZVVuZm9yZ2VhYmxlUHJpdmF0ZSwgbnVs
bHB0ciksIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSk7CisgICAgcHV0RGly
ZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIHdlYkNvcmVCdWlsdGluTmFtZXModm0pLnNldHRpbmdzQ29u
ZGl0aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0ZVVuZm9yZ2VhYmxlUHJpdmF0ZVByaXZhdGVOYW1l
KCksIEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBqc1Rlc3RDb25kaXRpb25hbGx5UmVh
ZFdyaXRlX3NldHRpbmdzQ29uZGl0aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0ZVVuZm9yZ2VhYmxl
UHJpdmF0ZSwgbnVsbHB0ciksIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSk7
CiB9CiAKIEpTT2JqZWN0KiBKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlOjpjcmVhdGVQcm90
b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRC
eVNldHRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwCmluZGV4IDNjN2QwYmZiZDUwY2U3ZGFlYWY0NzMyZTk2
N2ZhMmZhYzc2Y2FjNzkuLjJkYjFmNDAyM2M4OTA4Zjg0ZmUxMzFkMTZiMjFmZWNmZGUwOTNlNDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RFbmFibGVkQnlTZXR0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAKQEAgLTI1MSwxMiArMjUxLDEy
IEBAIHZvaWQgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZzo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQog
ICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfYmFzZV9vZjxBY3RpdmVET01PYmplY3QsIFRlc3RF
bmFibGVkQnlTZXR0aW5nPjo6dmFsdWUsICJJbnRlcmZhY2UgaXMgbm90IG1hcmtlZCBhcyBbQWN0
aXZlRE9NT2JqZWN0XSBldmVuIHRob3VnaCBpbXBsZW1lbnRhdGlvbiBjbGFzcyBzdWJjbGFzc2Vz
IEFjdGl2ZURPTU9iamVjdC4iKTsKIAogICAgIGlmIChqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2V0dGluZ3NWYWx1
ZXMoKS50ZXN0U2V0dGluZ0VuYWJsZWQpCi0gICAgICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29y
KHZtLCBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGlu
TmFtZXMoKS5UZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZ1B1YmxpY05hbWUoKSwgQ3VzdG9tR2V0
dGVyU2V0dGVyOjpjcmVhdGUodm0sIGpzVGVzdEVuYWJsZWRCeVNldHRpbmdfVGVzdFN1Yk9iakVu
YWJsZWRCeVNldHRpbmdDb25zdHJ1Y3RvciwgbnVsbHB0ciksIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1
cmUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSkpOworICAgICAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgd2ViQ29yZUJ1aWx0aW5O
YW1lcyh2bSkuVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmdQdWJsaWNOYW1lKCksIEN1c3RvbUdl
dHRlclNldHRlcjo6Y3JlYXRlKHZtLCBqc1Rlc3RFbmFibGVkQnlTZXR0aW5nX1Rlc3RTdWJPYmpF
bmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3IsIG51bGxwdHIpLCBhdHRyaWJ1dGVzRm9yU3RydWN0
dXJlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSkpKTsKICAgICBpZiAoanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkp
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNldHRpbmdzVmFsdWVzKCkudGVzdFNldHRpbmdF
bmFibGVkKQotICAgICAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgc3RhdGljX2Nhc3Q8
SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuVGVzdFN1Yk9i
akVuYWJsZWRCeVNldHRpbmdQcml2YXRlUHJpdmF0ZU5hbWUoKSwgQ3VzdG9tR2V0dGVyU2V0dGVy
OjpjcmVhdGUodm0sIGpzVGVzdEVuYWJsZWRCeVNldHRpbmdfVGVzdFN1Yk9iakVuYWJsZWRCeVNl
dHRpbmdQcml2YXRlQ29uc3RydWN0b3IsIG51bGxwdHIpLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJl
KHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkp
KTsKKyAgICAgICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIHdlYkNvcmVCdWlsdGluTmFt
ZXModm0pLlRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nUHJpdmF0ZVByaXZhdGVOYW1lKCksIEN1
c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBqc1Rlc3RFbmFibGVkQnlTZXR0aW5nX1Rlc3RT
dWJPYmpFbmFibGVkQnlTZXR0aW5nUHJpdmF0ZUNvbnN0cnVjdG9yLCBudWxscHRyKSwgYXR0cmli
dXRlc0ZvclN0cnVjdHVyZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pKSk7CiAgICAgaWYgKGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGds
b2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXR0aW5nc1ZhbHVlcygp
LnRlc3RTZXR0aW5nRW5hYmxlZCkgewotICAgICAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2
bSwgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5h
bWVzKCkuVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmdQcml2YXRlUHVibGljUHVibGljTmFtZSgp
LCBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwganNUZXN0RW5hYmxlZEJ5U2V0dGluZ19U
ZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZ1ByaXZhdGVQdWJsaWNDb25zdHJ1Y3RvciwgbnVsbHB0
ciksIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSkpOwotICAgICAgICBwdXREaXJlY3RDdXN0b21BY2Nl
c3Nvcih2bSwgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVp
bHRpbk5hbWVzKCkuVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmdQcml2YXRlUHVibGljUHJpdmF0
ZU5hbWUoKSwgQ3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGpzVGVzdEVuYWJsZWRCeVNl
dHRpbmdfVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmdQcml2YXRlUHVibGljQ29uc3RydWN0b3Is
IG51bGxwdHIpLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpKTsKKyAgICAgICAgcHV0RGlyZWN0Q3Vz
dG9tQWNjZXNzb3Iodm0sIHdlYkNvcmVCdWlsdGluTmFtZXModm0pLlRlc3RTdWJPYmpFbmFibGVk
QnlTZXR0aW5nUHJpdmF0ZVB1YmxpY1B1YmxpY05hbWUoKSwgQ3VzdG9tR2V0dGVyU2V0dGVyOjpj
cmVhdGUodm0sIGpzVGVzdEVuYWJsZWRCeVNldHRpbmdfVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRp
bmdQcml2YXRlUHVibGljQ29uc3RydWN0b3IsIG51bGxwdHIpLCBhdHRyaWJ1dGVzRm9yU3RydWN0
dXJlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSkpKTsKKyAgICAgICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIHdlYkNvcmVCdWlsdGlu
TmFtZXModm0pLlRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nUHJpdmF0ZVB1YmxpY1ByaXZhdGVO
YW1lKCksIEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBqc1Rlc3RFbmFibGVkQnlTZXR0
aW5nX1Rlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nUHJpdmF0ZVB1YmxpY0NvbnN0cnVjdG9yLCBu
dWxscHRyKSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEZv
ckNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEVuYWJsZWRGb3JDb250ZXh0LmNwcAppbmRleCBlMTk1MTA2OWU5ZjFiYzA5NDg0ZDRjNDBm
MzEwNzQ3MjA5NWI3NmRhLi4wOWRhZjgxZWRkNmY2ZjM5MWVhMTAwYzIwMzlkYTNmZDQ0NjRjYTVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RW5hYmxlZEZvckNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkRm9yQ29udGV4dC5jcHAKQEAgLTEzNCw3ICsxMzQs
NyBAQCB2b2lkIEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0p
CiAgICAgc3RhdGljX2Fzc2VydCghc3RkOjppc19iYXNlX29mPEFjdGl2ZURPTU9iamVjdCwgVGVz
dEVuYWJsZWRGb3JDb250ZXh0Pjo6dmFsdWUsICJJbnRlcmZhY2UgaXMgbm90IG1hcmtlZCBhcyBb
QWN0aXZlRE9NT2JqZWN0XSBldmVuIHRob3VnaCBpbXBsZW1lbnRhdGlvbiBjbGFzcyBzdWJjbGFz
c2VzIEFjdGl2ZURPTU9iamVjdC4iKTsKIAogICAgIGlmICgoanNDYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNldHRpbmdz
VmFsdWVzKCkudGVzdFNldHRpbmdFbmFibGVkICYmIFRlc3RTdWJPYmpFbmFibGVkRm9yQ29udGV4
dDo6ZW5hYmxlZEZvckNvbnRleHQoKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9i
amVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSkpCi0gICAgICAgIHB1dERpcmVjdEN1
c3RvbUFjY2Vzc29yKHZtLCBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERh
dGEpLT5idWlsdGluTmFtZXMoKS5UZXN0U3ViT2JqRW5hYmxlZEZvckNvbnRleHRQdWJsaWNOYW1l
KCksIEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBqc1Rlc3RFbmFibGVkRm9yQ29udGV4
dF9UZXN0U3ViT2JqRW5hYmxlZEZvckNvbnRleHRDb25zdHJ1Y3RvciwgbnVsbHB0ciksIGF0dHJp
YnV0ZXNGb3JTdHJ1Y3R1cmUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKSkpOworICAgICAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwg
d2ViQ29yZUJ1aWx0aW5OYW1lcyh2bSkuVGVzdFN1Yk9iakVuYWJsZWRGb3JDb250ZXh0UHVibGlj
TmFtZSgpLCBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwganNUZXN0RW5hYmxlZEZvckNv
bnRleHRfVGVzdFN1Yk9iakVuYWJsZWRGb3JDb250ZXh0Q29uc3RydWN0b3IsIG51bGxwdHIpLCBh
dHRyaWJ1dGVzRm9yU3RydWN0dXJlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSkpKTsKIH0KIAogSlNPYmplY3QqIEpTVGVzdEVuYWJsZWRGb3JD
b250ZXh0OjpjcmVhdGVQcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFs
T2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcAppbmRleCA5NDIzNDczOGU0MDAyMjk1
M2M5ZTk4MjE4ZjYwM2JjZDUzY2IwOTMxLi42M2JiZThlYjIxODc1MzMyMDI5YTkxNGMxOTViZjI2
OTVjMWZkMjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcApAQCAtNjc3LDQzICs2Nzcs
NDMgQEAgdm9pZCBKU1Rlc3RHbG9iYWxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIAog
I2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCiAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1cmVFbmFibGVkKCkpCi0gICAgICAgIHB1dERpcmVj
dEN1c3RvbUFjY2Vzc29yKHZtLCBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVu
dERhdGEpLT5idWlsdGluTmFtZXMoKS5lbmFibGVkQXRSdW50aW1lQXR0cmlidXRlUHVibGljTmFt
ZSgpLCBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwganNUZXN0R2xvYmFsT2JqZWN0X2Vu
YWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGUsIHNldEpTVGVzdEdsb2JhbE9iamVjdF9lbmFibGVkQXRS
dW50aW1lQXR0cmlidXRlKSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IpKSk7CisgICAgICAg
IHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCB3ZWJDb3JlQnVpbHRpbk5hbWVzKHZtKS5lbmFi
bGVkQXRSdW50aW1lQXR0cmlidXRlUHVibGljTmFtZSgpLCBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNy
ZWF0ZSh2bSwganNUZXN0R2xvYmFsT2JqZWN0X2VuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGUsIHNl
dEpTVGVzdEdsb2JhbE9iamVjdF9lbmFibGVkQXRSdW50aW1lQXR0cmlidXRlKSwgYXR0cmlidXRl
c0ZvclN0cnVjdHVyZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IpKSk7CiAjZW5kaWYKICAgICBpZiAoanNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzU2Vj
dXJlQ29udGV4dCgpKQotICAgICAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgc3RhdGlj
X2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuVGVz
dEludGVyZmFjZU5hbWVQdWJsaWNOYW1lKCksIEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZt
LCBqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdEludGVyZmFjZU5hbWVDb25zdHJ1Y3RvciwgbnVsbHB0
ciksIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSkpOwotICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29y
KHZtLCBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGlu
TmFtZXMoKS5wdWJsaWNBbmRQcml2YXRlQXR0cmlidXRlUHJpdmF0ZU5hbWUoKSwgQ3VzdG9tR2V0
dGVyU2V0dGVyOjpjcmVhdGUodm0sIGpzVGVzdEdsb2JhbE9iamVjdF9wdWJsaWNBbmRQcml2YXRl
QXR0cmlidXRlLCBudWxscHRyKSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkp
KTsKKyAgICAgICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIHdlYkNvcmVCdWlsdGluTmFt
ZXModm0pLlRlc3RJbnRlcmZhY2VOYW1lUHVibGljTmFtZSgpLCBDdXN0b21HZXR0ZXJTZXR0ZXI6
OmNyZWF0ZSh2bSwganNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RJbnRlcmZhY2VOYW1lQ29uc3RydWN0
b3IsIG51bGxwdHIpLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpKTsKKyAgICBwdXREaXJlY3RDdXN0
b21BY2Nlc3Nvcih2bSwgd2ViQ29yZUJ1aWx0aW5OYW1lcyh2bSkucHVibGljQW5kUHJpdmF0ZUF0
dHJpYnV0ZVByaXZhdGVOYW1lKCksIEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBqc1Rl
c3RHbG9iYWxPYmplY3RfcHVibGljQW5kUHJpdmF0ZUF0dHJpYnV0ZSwgbnVsbHB0ciksIGF0dHJp
YnV0ZXNGb3JTdHJ1Y3R1cmUoSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSk7CiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVS
RSkKLSAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgc3RhdGljX2Nhc3Q8SlNWTUNsaWVu
dERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkucHVibGljQW5kUHJpdmF0ZUNv
bmRpdGlvbmFsQXR0cmlidXRlUHJpdmF0ZU5hbWUoKSwgQ3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVh
dGUodm0sIGpzVGVzdEdsb2JhbE9iamVjdF9wdWJsaWNBbmRQcml2YXRlQ29uZGl0aW9uYWxBdHRy
aWJ1dGUsIG51bGxwdHIpLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSkpOwor
ICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCB3ZWJDb3JlQnVpbHRpbk5hbWVzKHZtKS5w
dWJsaWNBbmRQcml2YXRlQ29uZGl0aW9uYWxBdHRyaWJ1dGVQcml2YXRlTmFtZSgpLCBDdXN0b21H
ZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwganNUZXN0R2xvYmFsT2JqZWN0X3B1YmxpY0FuZFByaXZh
dGVDb25kaXRpb25hbEF0dHJpYnV0ZSwgbnVsbHB0ciksIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUo
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5KSk7CiAjZW5kaWYKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQogICAgIGlm
IChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5h
YmxlZCgpKQotICAgICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgdGhpcywgc3RhdGlj
X2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuZW5h
YmxlZEF0UnVudGltZU9wZXJhdGlvblB1YmxpY05hbWUoKSwgMSwganNUZXN0R2xvYmFsT2JqZWN0
SW5zdGFuY2VGdW5jdGlvbl9lbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uLCBOb0ludHJpbnNpYywg
YXR0cmlidXRlc0ZvclN0cnVjdHVyZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RnVuY3Rpb24pKSk7CisgICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9u
KHZtLCB0aGlzLCB3ZWJDb3JlQnVpbHRpbk5hbWVzKHZtKS5lbmFibGVkQXRSdW50aW1lT3BlcmF0
aW9uUHVibGljTmFtZSgpLCAxLCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uX2Vu
YWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24sIE5vSW50cmluc2ljLCBhdHRyaWJ1dGVzRm9yU3RydWN0
dXJlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlv
bikpKTsKICNlbmRpZgogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCiAgICAgaWYgKFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1cmVFbmFibGVkKCkpCi0g
ICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCBzdGF0aWNfY2FzdDxKU1ZN
Q2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKS5lbmFibGVkQXRSdW50
aW1lT3BlcmF0aW9uU3RhdGljUHVibGljTmFtZSgpLCAxLCBqc1Rlc3RHbG9iYWxPYmplY3RDb25z
dHJ1Y3RvckZ1bmN0aW9uX2VuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0aWMsIE5vSW50cmlu
c2ljLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbikpKTsKKyAgICAgICAgcHV0RGlyZWN0TmF0aXZlRnVu
Y3Rpb24odm0sIHRoaXMsIHdlYkNvcmVCdWlsdGluTmFtZXModm0pLmVuYWJsZWRBdFJ1bnRpbWVP
cGVyYXRpb25TdGF0aWNQdWJsaWNOYW1lKCksIDEsIGpzVGVzdEdsb2JhbE9iamVjdENvbnN0cnVj
dG9yRnVuY3Rpb25fZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvblN0YXRpYywgTm9JbnRyaW5zaWMs
IGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSkpOwogI2VuZGlmCiAgICAgaWYgKHdvcmxkRm9yRE9NT2Jq
ZWN0KCp0aGlzKS5zcGVjaWZpY1dvcmxkKCkpCi0gICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0
aW9uKHZtLCB0aGlzLCBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEp
LT5idWlsdGluTmFtZXMoKS5lbmFibGVkSW5TcGVjaWZpY1dvcmxkUHVibGljTmFtZSgpLCAxLCBq
c1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uX2VuYWJsZWRJblNwZWNpZmljV29ybGQs
IE5vSW50cmluc2ljLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbikpKTsKKyAgICAgICAgcHV0RGlyZWN0
TmF0aXZlRnVuY3Rpb24odm0sIHRoaXMsIHdlYkNvcmVCdWlsdGluTmFtZXModm0pLmVuYWJsZWRJ
blNwZWNpZmljV29ybGRQdWJsaWNOYW1lKCksIDEsIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNl
RnVuY3Rpb25fZW5hYmxlZEluU3BlY2lmaWNXb3JsZCwgTm9JbnRyaW5zaWMsIGF0dHJpYnV0ZXNG
b3JTdHJ1Y3R1cmUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkZ1bmN0aW9uKSkpOwogICAgIGlmICgod29ybGRGb3JET01PYmplY3QoKnRoaXMpLnNwZWNpZmlj
V29ybGQoKSAmJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RG
ZWF0dXJlRW5hYmxlZCgpKSkKLSAgICAgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIHRo
aXMsIHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5O
YW1lcygpLmVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVFbmFibGVkUHVi
bGljTmFtZSgpLCAxLCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uX2VuYWJsZWRJ
blNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVFbmFibGVkLCBOb0ludHJpbnNpYywgYXR0
cmlidXRlc0ZvclN0cnVjdHVyZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RnVuY3Rpb24pKSk7CisgICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZt
LCB0aGlzLCB3ZWJDb3JlQnVpbHRpbk5hbWVzKHZtKS5lbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hl
blJ1bnRpbWVGZWF0dXJlRW5hYmxlZFB1YmxpY05hbWUoKSwgMSwganNUZXN0R2xvYmFsT2JqZWN0
SW5zdGFuY2VGdW5jdGlvbl9lbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJl
RW5hYmxlZCwgTm9JbnRyaW5zaWMsIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSkpOwogICAgIGlmICgo
d29ybGRGb3JET01PYmplY3QoKnRoaXMpLnNwZWNpZmljV29ybGQoKSAmJiBSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpICYmIFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1cmUxRW5hYmxlZCgp
KSkKLSAgICAgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIHRoaXMsIHN0YXRpY19jYXN0
PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLmVuYWJsZWRJ
blNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVzRW5hYmxlZFB1YmxpY05hbWUoKSwgMSwg
anNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbl9lbmFibGVkSW5TcGVjaWZpY1dvcmxk
V2hlblJ1bnRpbWVGZWF0dXJlc0VuYWJsZWQsIE5vSW50cmluc2ljLCBhdHRyaWJ1dGVzRm9yU3Ry
dWN0dXJlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5j
dGlvbikpKTsKKyAgICAgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIHRoaXMsIHdlYkNv
cmVCdWlsdGluTmFtZXModm0pLmVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1
cmVzRW5hYmxlZFB1YmxpY05hbWUoKSwgMSwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5j
dGlvbl9lbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlc0VuYWJsZWQsIE5v
SW50cmluc2ljLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbikpKTsKICNpZiBFTkFCTEUoVEVTVF9GRUFU
VVJFKQogICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRl
c3RGZWF0dXJlRW5hYmxlZCgpKQotICAgICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwg
dGhpcywgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRp
bk5hbWVzKCkudGVzdFByaXZhdGVGdW5jdGlvblByaXZhdGVOYW1lKCksIDAsIGpzVGVzdEdsb2Jh
bE9iamVjdEluc3RhbmNlRnVuY3Rpb25fdGVzdFByaXZhdGVGdW5jdGlvbiwgTm9JbnRyaW5zaWMs
IGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSkpOworICAgICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlv
bih2bSwgdGhpcywgd2ViQ29yZUJ1aWx0aW5OYW1lcyh2bSkudGVzdFByaXZhdGVGdW5jdGlvblBy
aXZhdGVOYW1lKCksIDAsIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25fdGVzdFBy
aXZhdGVGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSkpOwogI2Vu
ZGlmCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2hhcmVkRmVhdHVyZXMoKS50ZXN0RmVhdHVyZUVuYWJsZWQoKSkKLSAgICAgICAgcHV0
RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKHZtLCB0aGlzLCBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0
YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKS50ZXN0SlNCdWlsdGluRnVuY3Rpb25Q
dWJsaWNOYW1lKCksIHRlc3RHbG9iYWxPYmplY3RUZXN0SlNCdWlsdGluRnVuY3Rpb25Db2RlR2Vu
ZXJhdG9yKHZtKSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6QnVpbHRpbikpKTsKKyAgICAgICAgcHV0RGlyZWN0QnVp
bHRpbkZ1bmN0aW9uKHZtLCB0aGlzLCB3ZWJDb3JlQnVpbHRpbk5hbWVzKHZtKS50ZXN0SlNCdWls
dGluRnVuY3Rpb25QdWJsaWNOYW1lKCksIHRlc3RHbG9iYWxPYmplY3RUZXN0SlNCdWlsdGluRnVu
Y3Rpb25Db2RlR2VuZXJhdG9yKHZtKSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6QnVpbHRpbikpKTsKICNlbmRpZgog
ICAgIGlmIChqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNTZWN1cmVDb250ZXh0KCkpCi0gICAgICAgIHB1dERpcmVj
dE5hdGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZt
LmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKS5jYWxjdWxhdGVTZWNyZXRSZXN1bHRQdWJsaWNO
YW1lKCksIDAsIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25fY2FsY3VsYXRlU2Vj
cmV0UmVzdWx0LCBOb0ludHJpbnNpYywgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pKSk7CisgICAgICAg
IHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCB3ZWJDb3JlQnVpbHRpbk5hbWVzKHZt
KS5jYWxjdWxhdGVTZWNyZXRSZXN1bHRQdWJsaWNOYW1lKCksIDAsIGpzVGVzdEdsb2JhbE9iamVj
dEluc3RhbmNlRnVuY3Rpb25fY2FsY3VsYXRlU2VjcmV0UmVzdWx0LCBOb0ludHJpbnNpYywgYXR0
cmlidXRlc0ZvclN0cnVjdHVyZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RnVuY3Rpb24pKSk7CiAgICAgaWYgKGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc1NlY3VyZUNvbnRl
eHQoKSkKLSAgICAgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIHRoaXMsIHN0YXRpY19j
YXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLmdldFNl
Y3JldEJvb2xlYW5QdWJsaWNOYW1lKCksIDAsIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVu
Y3Rpb25fZ2V0U2VjcmV0Qm9vbGVhbiwgTm9JbnRyaW5zaWMsIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1
cmUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9u
KSkpOworICAgICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgdGhpcywgd2ViQ29yZUJ1
aWx0aW5OYW1lcyh2bSkuZ2V0U2VjcmV0Qm9vbGVhblB1YmxpY05hbWUoKSwgMCwganNUZXN0R2xv
YmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbl9nZXRTZWNyZXRCb29sZWFuLCBOb0ludHJpbnNpYywg
YXR0cmlidXRlc0ZvclN0cnVjdHVyZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RnVuY3Rpb24pKSk7CiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKICAgICBp
ZiAoKGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5pc1NlY3VyZUNvbnRleHQoKSAmJiBSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpKSkKLSAgICAgICAgcHV0
RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIHRoaXMsIHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRh
Kj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLnRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9v
bGVhblB1YmxpY05hbWUoKSwgMCwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbl90
ZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW4sIE5vSW50cmluc2ljLCBhdHRyaWJ1dGVzRm9yU3Ry
dWN0dXJlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5j
dGlvbikpKTsKKyAgICAgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIHRoaXMsIHdlYkNv
cmVCdWlsdGluTmFtZXModm0pLnRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhblB1YmxpY05hbWUo
KSwgMCwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbl90ZXN0RmVhdHVyZUdldFNl
Y3JldEJvb2xlYW4sIE5vSW50cmluc2ljLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbikpKTsKICNlbmRp
ZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPYmouY3BwCmluZGV4IGMyMWVmMWFkNDZhZGE3ZmQ2MjNjMDQyOTYxMjNjNTVjODZk
MDA0NmUuLjZlYjM0ZjI4OGRmYWE2ZDgzYTAzNDFjMzY4MGM2YzlhODM1MjA5ZjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmou
Y3BwCkBAIC0yNTI4LDggKzI1MjgsOCBAQCB2b2lkIEpTVGVzdE9ialByb3RvdHlwZTo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtKQogICAgIH0KICAgICBpZiAoaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVy
dGllcyAmJiBzdHJ1Y3R1cmUoKS0+aXNEaWN0aW9uYXJ5KCkpCiAgICAgICAgIGZsYXR0ZW5EaWN0
aW9uYXJ5T2JqZWN0KHZtKTsKLSAgICBwdXREaXJlY3Qodm0sIHN0YXRpY19jYXN0PEpTVk1DbGll
bnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLnByaXZhdGVNZXRob2RQcml2
YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCgpLCAwLCBTdHJp
bmcoKSwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fcHJpdmF0ZU1ldGhvZCksIEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pOwotICAgIHB1dERpcmVjdCh2bSwgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5j
bGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkucHVibGljQW5kUHJpdmF0ZU1ldGhvZFByaXZhdGVO
YW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0KCksIDAsIFN0cmluZygp
LCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9wdWJsaWNBbmRQcml2YXRlTWV0aG9kKSwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSk7CisgICAgcHV0RGlyZWN0KHZtLCB3ZWJDb3JlQnVpbHRpbk5hbWVzKHZtKS5wcml2
YXRlTWV0aG9kUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QoKSwgMCwgU3RyaW5nKCksIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3ByaXZhdGVNZXRo
b2QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHdlYkNvcmVCdWlsdGluTmFtZXMo
dm0pLnB1YmxpY0FuZFByaXZhdGVNZXRob2RQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdCgpLCAwLCBTdHJpbmcoKSwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25fcHVibGljQW5kUHJpdmF0ZU1ldGhvZCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIGdsb2JhbE9iamVjdCgpLT5h
cnJheVByb3RvdHlwZSgpLT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLnZhbHVlc1ByaXZhdGVOYW1lKCkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBhZGRWYWx1ZUl0ZXJhYmxlTWV0aG9k
cygqZ2xvYmFsT2JqZWN0KCksICp0aGlzKTsKICAgICBKU09iamVjdCYgdW5zY29wYWJsZXMgPSAq
Y29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0KCktPnZtKCksIGdsb2JhbE9iamVjdCgp
LT5udWxsUHJvdG90eXBlT2JqZWN0U3RydWN0dXJlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAKaW5kZXggODQ2ZGViYzE1YzgzZWQxODFkOTM0YmUwMGFlNTJjNWYw
NWJlZjc0Yi4uYjZjNjI2ZGQyMDliMGMzYjczNTNlYTIwYzljODZiNmYzYjE4NTAwZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0xMTgsNiArMTE4LDcgQEAK
ICNpbmNsdWRlICJWaWRlb1RyYWNrLmgiCiAjaW5jbHVkZSAiVmlkZW9UcmFja0xpc3QuaCIKICNp
bmNsdWRlICJWaWRlb1RyYWNrUHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERh
dGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRPYmplY3QuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9VaW50OEFycmF5Lmg+CiAjaW5jbHVkZSA8bGltaXRzPgpAQCAtNDYw
OCw3ICs0NjA5LDcgQEAgc3RhdGljIEpTQzo6SlNWYWx1ZSBjb250cm9sbGVySlNWYWx1ZShKU0M6
OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LAogICAgIGlmICghY29udHJvbHNI
b3N0SlNXcmFwcGVyT2JqZWN0KQogICAgICAgICByZXR1cm4gSlNDOjpqc051bGwoKTsKIAotICAg
IEpTQzo6SWRlbnRpZmllciBjb250cm9sbGVySUQgPSBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJjb250cm9sbGVyIl9zKTsKKyAgICBKU0M6OklkZW50aWZpZXIgY29udHJvbGxlcklE
ID0gd2ViQ29yZUJ1aWx0aW5OYW1lcyh2bSkuY29udHJvbGxlclB1YmxpY05hbWUoKTsKICAgICBK
U0M6OkpTVmFsdWUgY29udHJvbGxlckpTV3JhcHBlciA9IGNvbnRyb2xzSG9zdEpTV3JhcHBlck9i
amVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb250cm9sbGVySUQpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIEpTQzo6anNOdWxsKCkpOwogCkBAIC03NzU4LDcgKzc3NTks
NyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3QoU2hh
ZG93Um9vdCYgcm9vdCkKICAgICAgICAgaWYgKCFtZWRpYUNvbnRyb2xzSG9zdEpTV3JhcHBlck9i
amVjdCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBhdXRvIGNvbnRyb2xs
ZXIgPSBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjb250cm9sbGVyIl9zKTsKKyAg
ICAgICAgYXV0byBjb250cm9sbGVyID0gd2ViQ29yZUJ1aWx0aW5OYW1lcyh2bSkuY29udHJvbGxl
clB1YmxpY05hbWUoKTsKIAogICAgICAgICBBU1NFUlQoIWNvbnRyb2xsZXJPYmplY3QtPmhhc1By
b3BlcnR5KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb250cm9sbGVyKSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCA3ZjZkMzdiYTFmYjYxMTMyNTk3ZGNlYjk2YjBkMDMx
NDcyNDQ2ZDAzLi5mMjNmYzA1NTgxZmIwNDE0MzlhNzAyNTdjMGRlYjAyZTdlNzE5MmIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC01MDY3LDkgKzUwNjcsOCBAQCBib29s
IEludGVybmFsczo6aXNSZWFkYWJsZVN0cmVhbURpc3R1cmJlZChKU0M6OkpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZQogCiBKU1ZhbHVlIEludGVybmFsczo6Y2xvbmVBcnJheUJ1ZmZl
cihKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGJ1ZmZl
ciwgSlNWYWx1ZSBzcmNCeXRlT2Zmc2V0LCBKU1ZhbHVlIHNyY0xlbmd0aCkKIHsKLSAgICBKU0M6
OlZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3Qudm0oKTsKLSAgICBKU1ZNQ2xpZW50RGF0YSog
Y2xpZW50RGF0YSA9IHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7
Ci0gICAgY29uc3QgSWRlbnRpZmllciYgcHJpdmF0ZU5hbWUgPSBjbGllbnREYXRhLT5idWlsdGlu
TmFtZXMoKS5jbG9uZUFycmF5QnVmZmVyUHJpdmF0ZU5hbWUoKTsKKyAgICBhdXRvJiB2bSA9IGxl
eGljYWxHbG9iYWxPYmplY3Qudm0oKTsKKyAgICBjb25zdCBJZGVudGlmaWVyJiBwcml2YXRlTmFt
ZSA9IHdlYkNvcmVCdWlsdGluTmFtZXModm0pLmNsb25lQXJyYXlCdWZmZXJQcml2YXRlTmFtZSgp
OwogICAgIEpTVmFsdWUgdmFsdWU7CiAgICAgUHJvcGVydHlTbG90IHByb3BlcnR5U2xvdCh2YWx1
ZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldCk7CiAgICAgbGV4aWNhbEds
b2JhbE9iamVjdC5tZXRob2RUYWJsZSh2bSktPmdldE93blByb3BlcnR5U2xvdCgmbGV4aWNhbEds
b2JhbE9iamVjdCwgJmxleGljYWxHbG9iYWxPYmplY3QsIHByaXZhdGVOYW1lLCBwcm9wZXJ0eVNs
b3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRT
Y3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3Jr
bGV0U2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggMTViMDkxMWE5YTZiYzExZTg0MzIxYmFlMzQ2
OGFjM2JkYzE0OWZlMS4uM2E1YmFjOWVjMGJkZDM0YTlmMmU5MDBmZTU5ZWMyNTIzNWJiMzY4ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRD
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xl
dFNjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0zMDUsNyArMzA1LDcgQEAgYm9vbCBXb3JrZXJPcldv
cmtsZXRTY3JpcHRDb250cm9sbGVyOjpsb2FkTW9kdWxlU3luY2hyb25vdXNseShXb3JrZXJTY3Jp
cHRGZXRjaGUKICAgICAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZt
KTsKICAgICAgICAgICAgIGlmIChlcnJvclZhbHVlLmlzT2JqZWN0KCkpIHsKICAgICAgICAgICAg
ICAgICBhdXRvKiBvYmplY3QgPSBKU0M6OmFzT2JqZWN0KGVycm9yVmFsdWUpOwotICAgICAgICAg
ICAgICAgIGlmIChKU1ZhbHVlIGZhaWx1cmVLaW5kVmFsdWUgPSBvYmplY3QtPmdldERpcmVjdCh2
bSwgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEmPigqdm0uY2xpZW50RGF0YSkuYnVpbHRpbk5h
bWVzKCkuZmFpbHVyZUtpbmRQcml2YXRlTmFtZSgpKSkgeworICAgICAgICAgICAgICAgIGlmIChK
U1ZhbHVlIGZhaWx1cmVLaW5kVmFsdWUgPSBvYmplY3QtPmdldERpcmVjdCh2bSwgd2ViQ29yZUJ1
aWx0aW5OYW1lcyh2bSkuZmFpbHVyZUtpbmRQcml2YXRlTmFtZSgpKSkgewogICAgICAgICAgICAg
ICAgICAgICAvLyBUaGlzIGlzIGhvc3QgcHJvcGFnYXRlZCBlcnJvciBpbiB0aGUgbW9kdWxlIGxv
YWRlciBwaXBlbGluZS4KICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChzdGF0aWNfY2FzdDxN
b2R1bGVGZXRjaEZhaWx1cmVLaW5kPihmYWlsdXJlS2luZFZhbHVlLmFzSW50MzIoKSkpIHsKICAg
ICAgICAgICAgICAgICAgICAgY2FzZSBNb2R1bGVGZXRjaEZhaWx1cmVLaW5kOjpXYXNQcm9wYWdh
dGVkRXJyb3I6CkBAIC00ODAsNyArNDgwLDcgQEAgdm9pZCBXb3JrZXJPcldvcmtsZXRTY3JpcHRD
b250cm9sbGVyOjpsb2FkQW5kRXZhbHVhdGVNb2R1bGUoY29uc3QgVVJMJiBtb2R1bGVVUkwKICAg
ICAgICAgICAgIEpTVmFsdWUgZXJyb3JWYWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAg
ICAgICAgICAgICBpZiAoZXJyb3JWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAgICAgICAgICAg
YXV0byogb2JqZWN0ID0gSlNDOjphc09iamVjdChlcnJvclZhbHVlKTsKLSAgICAgICAgICAgICAg
ICBpZiAoSlNWYWx1ZSBmYWlsdXJlS2luZFZhbHVlID0gb2JqZWN0LT5nZXREaXJlY3Qodm0sIHN0
YXRpY19jYXN0PEpTVk1DbGllbnREYXRhJj4oKnZtLmNsaWVudERhdGEpLmJ1aWx0aW5OYW1lcygp
LmZhaWx1cmVLaW5kUHJpdmF0ZU5hbWUoKSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoSlNWYWx1
ZSBmYWlsdXJlS2luZFZhbHVlID0gb2JqZWN0LT5nZXREaXJlY3Qodm0sIHdlYkNvcmVCdWlsdGlu
TmFtZXModm0pLmZhaWx1cmVLaW5kUHJpdmF0ZU5hbWUoKSkpIHsKICAgICAgICAgICAgICAgICAg
ICAgYXV0byBjYXRjaFNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAgICAgICAgICAg
ICAgICAgICAgIFN0cmluZyBtZXNzYWdlID0gcmV0cmlldmVFcnJvck1lc3NhZ2VXaXRob3V0TmFt
ZSgqZ2xvYmFsT2JqZWN0LCB2bSwgb2JqZWN0LCBjYXRjaFNjb3BlKTsKICAgICAgICAgICAgICAg
ICAgICAgc3dpdGNoIChzdGF0aWNfY2FzdDxNb2R1bGVGZXRjaEZhaWx1cmVLaW5kPihmYWlsdXJl
S2luZFZhbHVlLmFzSW50MzIoKSkpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457658</attachid>
            <date>2022-04-14 17:57:45 -0700</date>
            <delta_ts>2022-04-14 22:45:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239361-20220414175744.patch</filename>
            <type>text/plain</type>
            <size>68125</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyODkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzFiYjk0ZDIxYTUyZmNl
ZTcyMDUwMDlkNGFiNzQ5ZTFmMTY1NzJjZS4uZWM1ZTBhNDhhYmUyOTVmMTg4MTQ2MjI3ODVlNGQx
YmRhZjIyNWNmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDIyLTA0LTE0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIFdlYkNvcmVCdWlsdGlu
TmFtZXMgd2hlbiBwb3NzaWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjM5MzYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4K
KworICAgICAgICBVc2UgV2ViQ29yZUJ1aWx0aW5OYW1lcyB3aGVuIHBvc3NpYmxlIHRvIGF2b2lk
IHVubmVjZXNzYXJ5IGNhbGxzIHRvIElkZW50aWZpZXI6OmZyb21TdHJpbmcoKS4KKyAgICAgICAg
VGhpcyBpcyBtb3JlIGVmZmljaWVudC4KKworICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvbGVnYWN5L0xlZ2FjeUNETVNlc3Npb25DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDRE1TZXNzaW9uQ2xlYXJLZXk6OnVwZGF0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNE
T01HbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01HbG9iYWxPYmplY3Q6
OmFkZEJ1aWx0aW5HbG9iYWxzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTU1hcExpa2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0QmFja2luZ01hcCk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNET01TZXRMaWtlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldEJhY2tpbmdTZXQp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OmluaXRTdGF0aWNHbG9iYWxzKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTRE9NV2luZG93QmFzZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6SlNET01XaW5kb3dCYXNlOjp1cGRhdGVEb2N1bWVudCk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNET01XaW5kb3dH
ZXRPd25Qcm9wZXJ0eVNsb3RSZXN0cmljdGVkQWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
RE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01X
aW5kb3c6OnB1dCk6CisgICAgICAgIChXZWJDb3JlOjphZGRDcm9zc09yaWdpblByb3BlcnR5TmFt
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OmRlZmluZU93blByb3BlcnR5KToK
KyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpzZXRPcGVuZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNET01XaW5kb3c6Om9wZW5EYXRhYmFzZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpKU0RPTVdpbmRvdzo6c2V0T3BlbkRhdGFiYXNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0V2ZW50TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNFdmVudExpc3RlbmVyOjpo
YW5kbGVFdmVudCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpnZXRPd25Qcm9wZXJ0eVNsb3RDb21tb24pOgorICAgICAgICAo
V2ViQ29yZTo6SlNMb2NhdGlvbjo6cHV0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1JlbW90
ZURPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1JlbW90ZURPTVdpbmRv
dzo6cHV0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0cmVhbTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlYWRhYmxlU3RyZWFtOjpsb2NrKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OnNldHVwTW9k
dWxlU2NyaXB0SGFuZGxlcnMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWplY3RUb1Byb3BhZ2F0ZU5ldHdvcmtFcnJv
cik6CisgICAgICAgIChXZWJDb3JlOjpyZWplY3RXaXRoRmV0Y2hFcnJvcik6CisgICAgICAgICog
YmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L1dlYkNvcmVKU0NsaWVudERhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OndlYkNvcmVCdWlsdGlu
TmFtZXMpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgor
ICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTRE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2lu
ZG93OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZTo6ZmluaXNoQ3JlYXRp
b24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlT
ZXR0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEVuYWJsZWRCeVNldHRpbmc6OmZp
bmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RW5hYmxlZEZvckNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RW5hYmxlZEZv
ckNvbnRleHQ6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEds
b2JhbE9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T2JqUHJvdG90
eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRyb2xsZXJKU1ZhbHVlKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3QpOgorICAgICAg
ICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6
Y2xvbmVBcnJheUJ1ZmZlcik6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3Jp
cHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9yV29ya2xldFNjcmlw
dENvbnRyb2xsZXI6OmxvYWRNb2R1bGVTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6
Oldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmxvYWRBbmRFdmFsdWF0ZU1vZHVsZSk6
CisKIDIwMjItMDQtMTQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZXF1aXJlIGFuIGV4aXN0aW5nIEF0b21TdHJpbmcgZm9yIEhUTUxGb3JtRWxlbWVudCdzIG5h
bWVkIGdldHRlciBwYXJhbWV0ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVNlc3Npb25DbGVhcktleS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9u
Q2xlYXJLZXkuY3BwCmluZGV4IGFmOTgwOTcyODA5ZDZmMGY3YWQ3MDE1NTE0OTQ2MmJjZTgzYjNm
ZTkuLmQyYmFlODJlYzIwODI5ZGM5NTY5ZTQ5NWRjYTJlMDI0YjM4NGMwODIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVNl
c3Npb25DbGVhcktleS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmNwcApAQCAtMzAsNiArMzAsNyBA
QAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlIDxwYWwvdGV4dC9UZXh0RW5jb2Rpbmcu
aD4KICNpbmNsdWRlICJXZWJLaXRNZWRpYUtleUVycm9yLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvQnVpbHRpbk5hbWVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNHbG9iYWxP
YmplY3RJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNMb2NrLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPTk9iamVjdC5oPgpAQCAtMTA5LDcgKzExMCw3IEBAIGJv
b2wgQ0RNU2Vzc2lvbkNsZWFyS2V5Ojp1cGRhdGUoVWludDhBcnJheSogcmF3S2V5c0RhdGEsIFJl
ZlB0cjxVaW50OEFycmF5PiYgbmV4CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0g
ICAgICAgIGF1dG8ga2V5c0FycmF5VmFsdWUgPSBhc09iamVjdChrZXlzRGF0YVZhbHVlKS0+Z2V0
KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAia2V5cyJf
cykpOworICAgICAgICBhdXRvIGtleXNBcnJheVZhbHVlID0gYXNPYmplY3Qoa2V5c0RhdGFWYWx1
ZSktPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkua2V5c1B1YmxpY05hbWUoKSk7CiAgICAgICAgIGlmIChzY29wZS5leGNlcHRpb24oKSB8
fCAhaXNKU0FycmF5KGtleXNBcnJheVZhbHVlKSkgewogICAgICAgICAgICAgTE9HKE1lZGlhLCAi
Q0RNU2Vzc2lvbkNsZWFyS2V5Ojp1cGRhdGUoJXApIC0gZmFpbGVkOiBrZXlzIGFycmF5IG1pc3Np
bmcgb3IgZW1wdHkiLCB0aGlzKTsKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCmluZGV4IDIzODhkM2M3ZDY3
ZmQ2MWFkODgyNTEzY2QzMzY2Mzk5NDQxMTVmOGMuLjc1NDQ2NTE5M2U5ZmQ0Y2Y1M2VhZWI4ZDg2
MGM3NGM5OGJkYmE1MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUdsb2JhbE9iamVjdC5jcHAKQEAgLTIxNCwzMSArMjE0LDMxIEBAIFNVUFBSRVNTX0FTQU4gdm9p
ZCBKU0RPTUdsb2JhbE9iamVjdDo6YWRkQnVpbHRpbkdsb2JhbHMoVk0mIHZtKQogewogICAgIG1f
YnVpbHRpbkludGVybmFsRnVuY3Rpb25zLmluaXRpYWxpemUoKnRoaXMpOwogCi0gICAgSlNWTUNs
aWVudERhdGEmIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5j
bGllbnREYXRhKTsKKyAgICBhdXRvJiBidWlsdGluTmFtZXMgPSB3ZWJDb3JlQnVpbHRpbk5hbWVz
KHZtKTsKICAgICBKU0RPTUdsb2JhbE9iamVjdDo6R2xvYmFsUHJvcGVydHlJbmZvIHN0YXRpY0ds
b2JhbHNbXSA9IHsKLSAgICAgICAgSlNET01HbG9iYWxPYmplY3Q6Okdsb2JhbFByb3BlcnR5SW5m
byhjbGllbnREYXRhLmJ1aWx0aW5OYW1lcygpLm1ha2VUaGlzVHlwZUVycm9yUHJpdmF0ZU5hbWUo
KSwKKyAgICAgICAgSlNET01HbG9iYWxPYmplY3Q6Okdsb2JhbFByb3BlcnR5SW5mbyhidWlsdGlu
TmFtZXMubWFrZVRoaXNUeXBlRXJyb3JQcml2YXRlTmFtZSgpLAogICAgICAgICAgICAgSlNGdW5j
dGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAyLCBTdHJpbmcoKSwgbWFrZVRoaXNUeXBlRXJyb3JGb3JC
dWlsdGlucyksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgSlNET01HbG9iYWxPYmplY3Q6Okdsb2JhbFByb3BlcnR5
SW5mbyhjbGllbnREYXRhLmJ1aWx0aW5OYW1lcygpLm1ha2VHZXR0ZXJUeXBlRXJyb3JQcml2YXRl
TmFtZSgpLAorICAgICAgICBKU0RPTUdsb2JhbE9iamVjdDo6R2xvYmFsUHJvcGVydHlJbmZvKGJ1
aWx0aW5OYW1lcy5tYWtlR2V0dGVyVHlwZUVycm9yUHJpdmF0ZU5hbWUoKSwKICAgICAgICAgICAg
IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMiwgU3RyaW5nKCksIG1ha2VHZXR0ZXJUeXBl
RXJyb3JGb3JCdWlsdGlucyksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgSlNET01HbG9iYWxPYmplY3Q6Okdsb2Jh
bFByb3BlcnR5SW5mbyhjbGllbnREYXRhLmJ1aWx0aW5OYW1lcygpLm1ha2VET01FeGNlcHRpb25Q
cml2YXRlTmFtZSgpLAorICAgICAgICBKU0RPTUdsb2JhbE9iamVjdDo6R2xvYmFsUHJvcGVydHlJ
bmZvKGJ1aWx0aW5OYW1lcy5tYWtlRE9NRXhjZXB0aW9uUHJpdmF0ZU5hbWUoKSwKICAgICAgICAg
ICAgIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMiwgU3RyaW5nKCksIG1ha2VET01FeGNl
cHRpb25Gb3JCdWlsdGlucyksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgSlNET01HbG9iYWxPYmplY3Q6Okdsb2Jh
bFByb3BlcnR5SW5mbyhjbGllbnREYXRhLmJ1aWx0aW5OYW1lcygpLndoZW5TaWduYWxBYm9ydGVk
UHJpdmF0ZU5hbWUoKSwKKyAgICAgICAgSlNET01HbG9iYWxPYmplY3Q6Okdsb2JhbFByb3BlcnR5
SW5mbyhidWlsdGluTmFtZXMud2hlblNpZ25hbEFib3J0ZWRQcml2YXRlTmFtZSgpLAogICAgICAg
ICAgICAgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAyLCBTdHJpbmcoKSwgd2hlblNpZ25h
bEFib3J0ZWQpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSksCi0gICAgICAgIEpTRE9NR2xvYmFsT2JqZWN0OjpHbG9iYWxQcm9wZXJ0
eUluZm8oY2xpZW50RGF0YS5idWlsdGluTmFtZXMoKS5jbG9uZUFycmF5QnVmZmVyUHJpdmF0ZU5h
bWUoKSwKKyAgICAgICAgSlNET01HbG9iYWxPYmplY3Q6Okdsb2JhbFByb3BlcnR5SW5mbyhidWls
dGluTmFtZXMuY2xvbmVBcnJheUJ1ZmZlclByaXZhdGVOYW1lKCksCiAgICAgICAgICAgICBKU0Z1
bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDMsIFN0cmluZygpLCBjbG9uZUFycmF5QnVmZmVyKSwg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkpLAotICAgICAgICBKU0RPTUdsb2JhbE9iamVjdDo6R2xvYmFsUHJvcGVydHlJbmZvKGNsaWVu
dERhdGEuYnVpbHRpbk5hbWVzKCkuc3RydWN0dXJlZENsb25lRm9yU3RyZWFtUHJpdmF0ZU5hbWUo
KSwKKyAgICAgICAgSlNET01HbG9iYWxPYmplY3Q6Okdsb2JhbFByb3BlcnR5SW5mbyhidWlsdGlu
TmFtZXMuc3RydWN0dXJlZENsb25lRm9yU3RyZWFtUHJpdmF0ZU5hbWUoKSwKICAgICAgICAgICAg
IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMSwgU3RyaW5nKCksIHN0cnVjdHVyZWRDbG9u
ZUZvclN0cmVhbSksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5KSwKICAgICAgICAgSlNET01HbG9iYWxPYmplY3Q6Okdsb2JhbFByb3Bl
cnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5BcnJheUJ1ZmZlclByaXZh
dGVOYW1lKCksIGFycmF5QnVmZmVyQ29uc3RydWN0b3IoKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBKU0RPTUds
b2JhbE9iamVjdDo6R2xvYmFsUHJvcGVydHlJbmZvKGNsaWVudERhdGEuYnVpbHRpbk5hbWVzKCku
c3RyZWFtQ2xvc2VkUHJpdmF0ZU5hbWUoKSwganNOdW1iZXIoMSksIFByb3BlcnR5QXR0cmlidXRl
OjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgSlNE
T01HbG9iYWxPYmplY3Q6Okdsb2JhbFByb3BlcnR5SW5mbyhjbGllbnREYXRhLmJ1aWx0aW5OYW1l
cygpLnN0cmVhbUNsb3NpbmdQcml2YXRlTmFtZSgpLCBqc051bWJlcigyKSwgUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAg
ICBKU0RPTUdsb2JhbE9iamVjdDo6R2xvYmFsUHJvcGVydHlJbmZvKGNsaWVudERhdGEuYnVpbHRp
bk5hbWVzKCkuc3RyZWFtRXJyb3JlZFByaXZhdGVOYW1lKCksIGpzTnVtYmVyKDMpLCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0g
ICAgICAgIEpTRE9NR2xvYmFsT2JqZWN0OjpHbG9iYWxQcm9wZXJ0eUluZm8oY2xpZW50RGF0YS5i
dWlsdGluTmFtZXMoKS5zdHJlYW1SZWFkYWJsZVByaXZhdGVOYW1lKCksIGpzTnVtYmVyKDQpLCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSksCi0gICAgICAgIEpTRE9NR2xvYmFsT2JqZWN0OjpHbG9iYWxQcm9wZXJ0eUluZm8oY2xpZW50
RGF0YS5idWlsdGluTmFtZXMoKS5zdHJlYW1XYWl0aW5nUHJpdmF0ZU5hbWUoKSwganNOdW1iZXIo
NSksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5KSwKLSAgICAgICAgSlNET01HbG9iYWxPYmplY3Q6Okdsb2JhbFByb3BlcnR5SW5mbyhj
bGllbnREYXRhLmJ1aWx0aW5OYW1lcygpLnN0cmVhbVdyaXRhYmxlUHJpdmF0ZU5hbWUoKSwganNO
dW1iZXIoNiksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgSlNET01HbG9iYWxPYmplY3Q6Okdsb2JhbFByb3BlcnR5
SW5mbyhjbGllbnREYXRhLmJ1aWx0aW5OYW1lcygpLnJlYWRhYmxlQnl0ZVN0cmVhbUFQSUVuYWJs
ZWRQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygp
LCBpc1JlYWRhYmxlQnl0ZVN0cmVhbUFQSUVuYWJsZWQpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEpTRE9NR2xv
YmFsT2JqZWN0OjpHbG9iYWxQcm9wZXJ0eUluZm8oY2xpZW50RGF0YS5idWlsdGluTmFtZXMoKS5p
c0Fib3J0U2lnbmFsUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAx
LCBTdHJpbmcoKSwgaXNBYm9ydFNpZ25hbCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRl
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgSlNET01HbG9iYWxPYmpl
Y3Q6Okdsb2JhbFByb3BlcnR5SW5mbyhjbGllbnREYXRhLmJ1aWx0aW5OYW1lcygpLmdldEludGVy
bmFsV3JpdGFibGVTdHJlYW1Qcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRo
aXMsIDEsIFN0cmluZygpLCBnZXRJbnRlcm5hbFdyaXRhYmxlU3RyZWFtKSwgUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAg
ICBKU0RPTUdsb2JhbE9iamVjdDo6R2xvYmFsUHJvcGVydHlJbmZvKGNsaWVudERhdGEuYnVpbHRp
bk5hbWVzKCkuY3JlYXRlV3JpdGFibGVTdHJlYW1Gcm9tSW50ZXJuYWxQcml2YXRlTmFtZSgpLCBK
U0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIFN0cmluZygpLCBjcmVhdGVXcml0YWJsZVN0
cmVhbUZyb21JbnRlcm5hbCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKKyAgICAgICAgSlNET01HbG9iYWxPYmplY3Q6Okdsb2Jh
bFByb3BlcnR5SW5mbyhidWlsdGluTmFtZXMuc3RyZWFtQ2xvc2VkUHJpdmF0ZU5hbWUoKSwganNO
dW1iZXIoMSksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5KSwKKyAgICAgICAgSlNET01HbG9iYWxPYmplY3Q6Okdsb2JhbFByb3BlcnR5
SW5mbyhidWlsdGluTmFtZXMuc3RyZWFtQ2xvc2luZ1ByaXZhdGVOYW1lKCksIGpzTnVtYmVyKDIp
LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSksCisgICAgICAgIEpTRE9NR2xvYmFsT2JqZWN0OjpHbG9iYWxQcm9wZXJ0eUluZm8oYnVp
bHRpbk5hbWVzLnN0cmVhbUVycm9yZWRQcml2YXRlTmFtZSgpLCBqc051bWJlcigzKSwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAor
ICAgICAgICBKU0RPTUdsb2JhbE9iamVjdDo6R2xvYmFsUHJvcGVydHlJbmZvKGJ1aWx0aW5OYW1l
cy5zdHJlYW1SZWFkYWJsZVByaXZhdGVOYW1lKCksIGpzTnVtYmVyKDQpLCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCisgICAgICAg
IEpTRE9NR2xvYmFsT2JqZWN0OjpHbG9iYWxQcm9wZXJ0eUluZm8oYnVpbHRpbk5hbWVzLnN0cmVh
bVdhaXRpbmdQcml2YXRlTmFtZSgpLCBqc051bWJlcig1KSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAorICAgICAgICBKU0RPTUds
b2JhbE9iamVjdDo6R2xvYmFsUHJvcGVydHlJbmZvKGJ1aWx0aW5OYW1lcy5zdHJlYW1Xcml0YWJs
ZVByaXZhdGVOYW1lKCksIGpzTnVtYmVyKDYpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0
ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCisgICAgICAgIEpTRE9NR2xvYmFsT2Jq
ZWN0OjpHbG9iYWxQcm9wZXJ0eUluZm8oYnVpbHRpbk5hbWVzLnJlYWRhYmxlQnl0ZVN0cmVhbUFQ
SUVuYWJsZWRQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0
cmluZygpLCBpc1JlYWRhYmxlQnl0ZVN0cmVhbUFQSUVuYWJsZWQpLCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCisgICAgICAgIEpT
RE9NR2xvYmFsT2JqZWN0OjpHbG9iYWxQcm9wZXJ0eUluZm8oYnVpbHRpbk5hbWVzLmlzQWJvcnRT
aWduYWxQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIFN0cmlu
ZygpLCBpc0Fib3J0U2lnbmFsKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAorICAgICAgICBKU0RPTUdsb2JhbE9iamVjdDo6R2xv
YmFsUHJvcGVydHlJbmZvKGJ1aWx0aW5OYW1lcy5nZXRJbnRlcm5hbFdyaXRhYmxlU3RyZWFtUHJp
dmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCBTdHJpbmcoKSwgZ2V0
SW50ZXJuYWxXcml0YWJsZVN0cmVhbSksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKKyAgICAgICAgSlNET01HbG9iYWxPYmplY3Q6
Okdsb2JhbFByb3BlcnR5SW5mbyhidWlsdGluTmFtZXMuY3JlYXRlV3JpdGFibGVTdHJlYW1Gcm9t
SW50ZXJuYWxQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIFN0
cmluZygpLCBjcmVhdGVXcml0YWJsZVN0cmVhbUZyb21JbnRlcm5hbCksIFByb3BlcnR5QXR0cmli
dXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKICAgICB9Owog
ICAgIGFkZFN0YXRpY0dsb2JhbHMoc3RhdGljR2xvYmFscywgV1RGX0FSUkFZX0xFTkdUSChzdGF0
aWNHbG9iYWxzKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTU1hcExpa2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01NYXBMaWtl
LmNwcAppbmRleCBlMTMyYzM5ZmE1NDVkZTYzOTljZDUwM2IxZTk2NjNhODM3ZGYwZDM2Li4xNTJj
ZGI1YmY5N2IyYjE0NTQyMDhlZTYxNmUzNDRjMTJhN2RlZDMxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTU1hcExpa2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NTWFwTGlrZS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogc3RkOjpwYWlyPGJvb2wsIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8SlNDOjpK
U09iamVjdD4+IGdldEJhY2tpbmdNYXAoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDOjpKU09iamVjdCYgbWFwTGlrZSkKIHsKICAgICBhdXRvJiB2bSA9IGxleGlj
YWxHbG9iYWxPYmplY3Qudm0oKTsKLSAgICBhdXRvIGJhY2tpbmdNYXAgPSBtYXBMaWtlLmdldCgm
bGV4aWNhbEdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGll
bnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuYmFja2luZ01hcFByaXZhdGVOYW1lKCkpOworICAgIGF1
dG8gYmFja2luZ01hcCA9IG1hcExpa2UuZ2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCB3ZWJDb3Jl
QnVpbHRpbk5hbWVzKHZtKS5iYWNraW5nTWFwUHJpdmF0ZU5hbWUoKSk7CiAgICAgaWYgKCFiYWNr
aW5nTWFwLmlzVW5kZWZpbmVkKCkpCiAgICAgICAgIHJldHVybiB7IGZhbHNlLCAqSlNDOjphc09i
amVjdChiYWNraW5nTWFwKSB9OwogCkBAIC00Niw3ICs0Niw3IEBAIHN0ZDo6cGFpcjxib29sLCBz
dGQ6OnJlZmVyZW5jZV93cmFwcGVyPEpTQzo6SlNPYmplY3Q+PiBnZXRCYWNraW5nTWFwKEpTQzo6
SlNHbG9iCiAgICAgYmFja2luZ01hcCA9IEpTQzo6SlNNYXA6OmNyZWF0ZSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdm0sIGxleGljYWxHbG9iYWxPYmplY3QubWFwU3RydWN0dXJlKCkpOwogICAgIHNj
b3BlLnJlbGVhc2VBc3NlcnROb0V4Y2VwdGlvbigpOwogCi0gICAgbWFwTGlrZS5wdXREaXJlY3Qo
dm0sIHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5O
YW1lcygpLmJhY2tpbmdNYXBQcml2YXRlTmFtZSgpLCBiYWNraW5nTWFwLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBtYXBMaWtl
LnB1dERpcmVjdCh2bSwgd2ViQ29yZUJ1aWx0aW5OYW1lcyh2bSkuYmFja2luZ01hcFByaXZhdGVO
YW1lKCksIGJhY2tpbmdNYXAsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSkpOwogICAgIHJldHVybiB7IHRydWUsICpKU0M6OmFzT2JqZWN0KGJh
Y2tpbmdNYXApIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NU2V0TGlrZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVNldExp
a2UuY3BwCmluZGV4IGY1ZTlmMzIzYjNjZTA1MTIyY2E0NThlZWYyYTEyZmJmOGU2ZWM2NGEuLjg1
OTc3NjllZjQ5ZTQ4NDQ2ZTA0NWU0MjU1MjZjNTcyZTY5NDhhYzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU2V0TGlrZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01TZXRMaWtlLmNwcApAQCAtNDIsNyArNDIsNyBAQCB2b2lkIERP
TVNldEFkYXB0ZXI6OmNsZWFyKCkKIHN0ZDo6cGFpcjxib29sLCBzdGQ6OnJlZmVyZW5jZV93cmFw
cGVyPEpTQzo6SlNPYmplY3Q+PiBnZXRCYWNraW5nU2V0KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNPYmplY3QmIHNldExpa2UpCiB7CiAgICAgYXV0byYg
dm0gPSBsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCk7Ci0gICAgYXV0byBiYWNraW5nU2V0ID0gc2V0
TGlrZS5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRh
Kj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLmJhY2tpbmdTZXRQcml2YXRlTmFtZSgp
KTsKKyAgICBhdXRvIGJhY2tpbmdTZXQgPSBzZXRMaWtlLmdldCgmbGV4aWNhbEdsb2JhbE9iamVj
dCwgd2ViQ29yZUJ1aWx0aW5OYW1lcyh2bSkuYmFja2luZ1NldFByaXZhdGVOYW1lKCkpOwogICAg
IGlmIChiYWNraW5nU2V0LmlzVW5kZWZpbmVkKCkpIHsKICAgICAgICAgYXV0byYgdm0gPSBsZXhp
Y2FsR2xvYmFsT2JqZWN0LnZtKCk7CiAgICAgICAgIEpTQzo6RGVmZXJUZXJtaW5hdGlvbiBkZWZl
clNjb3BlKHZtKTsKQEAgLTUxLDcgKzUxLDcgQEAgc3RkOjpwYWlyPGJvb2wsIHN0ZDo6cmVmZXJl
bmNlX3dyYXBwZXI8SlNDOjpKU09iamVjdD4+IGdldEJhY2tpbmdTZXQoSlNDOjpKU0dsb2IKICAg
ICAgICAgYmFja2luZ1NldCA9IEpTQzo6SlNTZXQ6OmNyZWF0ZSgmbGV4aWNhbEdsb2JhbE9iamVj
dCwgdm0sIGxleGljYWxHbG9iYWxPYmplY3Quc2V0U3RydWN0dXJlKCkpOwogICAgICAgICBzY29w
ZS5yZWxlYXNlQXNzZXJ0Tm9FeGNlcHRpb24oKTsKIAotICAgICAgICBzZXRMaWtlLnB1dERpcmVj
dCh2bSwgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRp
bk5hbWVzKCkuYmFja2luZ1NldFByaXZhdGVOYW1lKCksIGJhY2tpbmdTZXQsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworICAgICAgICBz
ZXRMaWtlLnB1dERpcmVjdCh2bSwgd2ViQ29yZUJ1aWx0aW5OYW1lcyh2bSkuYmFja2luZ1NldFBy
aXZhdGVOYW1lKCksIGJhY2tpbmdTZXQsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgICAgICByZXR1cm4geyB0cnVlLCAqSlNDOjph
c09iamVjdChiYWNraW5nU2V0KSB9OwogICAgIH0KICAgICByZXR1cm4geyBmYWxzZSwgKkpTQzo6
YXNPYmplY3QoYmFja2luZ1NldCkgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0Jhc2UuY3BwCmluZGV4IGVmYTI1MjhmZmJiYjRlN2I5YTNlZWMxYzUyNmJjMmZj
ZThkYWIwNzguLjc4OWVhYmQ4OTI3NGU1NGIxNmM4YTM3NzQ2YzA1MTJjMmI1YTJlYWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcApAQCAtMTA4
LDcgKzEwOCw3IEBAIEpTRE9NV2luZG93QmFzZTo6fkpTRE9NV2luZG93QmFzZSgpID0gZGVmYXVs
dDsKIAogU1VQUFJFU1NfQVNBTiBpbmxpbmUgdm9pZCBKU0RPTVdpbmRvd0Jhc2U6OmluaXRTdGF0
aWNHbG9iYWxzKEpTQzo6Vk0mIHZtKQogewotICAgIGF1dG8mIGJ1aWx0aW5OYW1lcyA9IHN0YXRp
Y19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpOwor
ICAgIGF1dG8mIGJ1aWx0aW5OYW1lcyA9IHdlYkNvcmVCdWlsdGluTmFtZXModm0pOwogCiAgICAg
R2xvYmFsUHJvcGVydHlJbmZvIHN0YXRpY0dsb2JhbHNbXSA9IHsKICAgICAgICAgR2xvYmFsUHJv
cGVydHlJbmZvKGJ1aWx0aW5OYW1lcy5kb2N1bWVudFB1YmxpY05hbWUoKSwganNOdWxsKCksIFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
KSwKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIEpTRE9NV2luZG93QmFzZTo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtLCBKU1dpbmRvd1Byb3h5KiBwcm94eSkKICAgICBpZiAobV93cmFwcGVkICYmIG1f
d3JhcHBlZC0+ZnJhbWUoKSAmJiBtX3dyYXBwZWQtPmZyYW1lKCktPnNldHRpbmdzKCkubmVlZHNT
aXRlU3BlY2lmaWNRdWlya3MoKSkKICAgICAgICAgc2V0TmVlZHNTaXRlU3BlY2lmaWNRdWlya3Mo
dHJ1ZSk7CiAKLSAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgc3RhdGljX2Nhc3Q8SlNW
TUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuc2hvd01vZGFsRGlh
bG9nUHVibGljTmFtZSgpLCBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgc2hvd01vZGFs
RGlhbG9nR2V0dGVyLCBudWxscHRyKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21WYWx1ZSkpOworICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCB3
ZWJDb3JlQnVpbHRpbk5hbWVzKHZtKS5zaG93TW9kYWxEaWFsb2dQdWJsaWNOYW1lKCksIEN1c3Rv
bUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBzaG93TW9kYWxEaWFsb2dHZXR0ZXIsIG51bGxwdHIp
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbVZhbHVlKSk7
CiB9CiAKIHZvaWQgSlNET01XaW5kb3dCYXNlOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKQEAgLTE0
OSw3ICsxNDksNyBAQCB2b2lkIEpTRE9NV2luZG93QmFzZTo6dXBkYXRlRG9jdW1lbnQoKQogICAg
IGJvb2wgc2hvdWxkVGhyb3dSZWFkT25seUVycm9yID0gZmFsc2U7CiAgICAgYm9vbCBpZ25vcmVS
ZWFkT25seUVycm9ycyA9IHRydWU7CiAgICAgYm9vbCBwdXRSZXN1bHQgPSBmYWxzZTsKLSAgICBz
eW1ib2xUYWJsZVB1dFRvdWNoV2F0Y2hwb2ludFNldCh0aGlzLCBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGluTmFt
ZXMoKS5kb2N1bWVudFB1YmxpY05hbWUoKSwgdG9KUyhsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
LCBtX3dyYXBwZWQtPmRvY3VtZW50KCkpLCBzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3IsIGlnbm9y
ZVJlYWRPbmx5RXJyb3JzLCBwdXRSZXN1bHQpOworICAgIHN5bWJvbFRhYmxlUHV0VG91Y2hXYXRj
aHBvaW50U2V0KHRoaXMsIGxleGljYWxHbG9iYWxPYmplY3QsIHdlYkNvcmVCdWlsdGluTmFtZXMo
dm0pLmRvY3VtZW50UHVibGljTmFtZSgpLCB0b0pTKGxleGljYWxHbG9iYWxPYmplY3QsIHRoaXMs
IG1fd3JhcHBlZC0+ZG9jdW1lbnQoKSksIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciwgaWdub3Jl
UmVhZE9ubHlFcnJvcnMsIHB1dFJlc3VsdCk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVF9VTlVTRUQo
c2NvcGUsICFzY29wZS5leGNlcHRpb24oKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCA1ZmE2MTJmNWY4MGRlY2Y2MmJj
YTdjYjdiYzJiZjc5ZmFjODRkNTM1Li42NmViMWY5ZWEyMjkyODhkM2U1YjVjMjIzZTQyOThmMTQ2
ZTgwM2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dD
dXN0b20uY3BwCkBAIC0xMTMsNyArMTEzLDcgQEAgYm9vbCBqc0RPTVdpbmRvd0dldE93blByb3Bl
cnR5U2xvdFJlc3RyaWN0ZWRBY2Nlc3MoSlNET01HbG9iYWxPYmplY3QqIHRoaXNPYmplY3QKICAg
ICBWTSYgdm0gPSBsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgYXV0byYgYnVpbHRpbk5hbWVzID0gc3RhdGlj
X2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCk7Cisg
ICAgYXV0byYgYnVpbHRpbk5hbWVzID0gd2ViQ29yZUJ1aWx0aW5OYW1lcyh2bSk7CiAKICAgICAv
LyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyNjcm9zc29yaWdpbmdldG93bnByb3BlcnR5
aGVscGVyLSgtbywtcC0pCiAKQEAgLTIxNCw3ICsyMTQsNyBAQCBib29sIEpTRE9NV2luZG93Ojpn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICNpZiBFTkFCTEUoVVNFUl9NRVNTQUdFX0hB
TkRMRVJTKQotICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERh
dGEqPihsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpLmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMo
KS53ZWJraXRQdWJsaWNOYW1lKCkgJiYgdGhpc09iamVjdC0+d3JhcHBlZCgpLnNob3VsZEhhdmVX
ZWJLaXROYW1lc3BhY2VGb3JXb3JsZCh0aGlzT2JqZWN0LT53b3JsZCgpKSkgeworICAgIGlmIChw
cm9wZXJ0eU5hbWUgPT0gd2ViQ29yZUJ1aWx0aW5OYW1lcyhsZXhpY2FsR2xvYmFsT2JqZWN0LT52
bSgpKS53ZWJraXRQdWJsaWNOYW1lKCkgJiYgdGhpc09iamVjdC0+d3JhcHBlZCgpLnNob3VsZEhh
dmVXZWJLaXROYW1lc3BhY2VGb3JXb3JsZCh0aGlzT2JqZWN0LT53b3JsZCgpKSkgewogICAgICAg
ICBzbG90LnNldENhY2hlYWJsZUN1c3RvbSh0aGlzT2JqZWN0LCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHksIGpzRE9N
V2luZG93X3dlYmtpdCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTI1NSw3ICsy
NTUsNyBAQCBib29sIEpTRE9NV2luZG93OjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydAogICAgIFN0cmluZyBlcnJvck1lc3NhZ2U7
CiAgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3co
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QtPndyYXBwZWQoKSwgZXJyb3JNZXNzYWdl
KSkgewogICAgICAgICAvLyBXZSBvbmx5IGFsbG93IHNldHRpbmcgImxvY2F0aW9uIiBhdHRyaWJ1
dGUgY3Jvc3Mtb3JpZ2luLgotICAgICAgICBpZiAocHJvcGVydHlOYW1lID09IHN0YXRpY19jYXN0
PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLmxvY2F0aW9u
UHVibGljTmFtZSgpKSB7CisgICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gd2ViQ29yZUJ1aWx0
aW5OYW1lcyh2bSkubG9jYXRpb25QdWJsaWNOYW1lKCkpIHsKICAgICAgICAgICAgIGF1dG8qIHNl
dHRlciA9IHNfaW5mby5zdGF0aWNQcm9wSGFzaFRhYmxlLT5lbnRyeShwcm9wZXJ0eU5hbWUpLT5w
cm9wZXJ0eVB1dHRlcigpOwogICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgICAgICAg
ICAgc2V0dGVyKGxleGljYWxHbG9iYWxPYmplY3QsIEpTVmFsdWU6OmVuY29kZShzbG90LnRoaXNW
YWx1ZSgpKSwgSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKSwgcHJvcGVydHlOYW1lKTsKQEAgLTMyNyw3
ICszMjcsNyBAQCB2b2lkIEpTRE9NV2luZG93OjphbmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhl
YXBBbmFseXplciYgYW5hbHl6ZXIpCiB0ZW1wbGF0ZSA8Q3Jvc3NPcmlnaW5PYmplY3Qgb2JqZWN0
VHlwZT4KIHN0YXRpYyB2b2lkIGFkZENyb3NzT3JpZ2luUHJvcGVydHlOYW1lcyhWTSYgdm0sIFBy
b3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzKQogewotICAgIGF1dG8mIGJ1aWx0aW5OYW1l
cyA9IHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5O
YW1lcygpOworICAgIGF1dG8mIGJ1aWx0aW5OYW1lcyA9IHdlYkNvcmVCdWlsdGluTmFtZXModm0p
OwogICAgIHN3aXRjaCAob2JqZWN0VHlwZSkgewogICAgIGNhc2UgQ3Jvc3NPcmlnaW5PYmplY3Q6
OkxvY2F0aW9uOiB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBJZGVudGlmaWVyKiBjb25zdCBwcm9w
ZXJ0aWVzW10gPSB7ICZidWlsdGluTmFtZXMuaHJlZlB1YmxpY05hbWUoKSwgJnZtLnByb3BlcnR5
TmFtZXMtPnJlcGxhY2UgfTsKQEAgLTQxMyw3ICs0MTMsNyBAQCBib29sIEpTRE9NV2luZG93Ojpk
ZWZpbmVPd25Qcm9wZXJ0eShKU0M6OkpTT2JqZWN0KiBvYmplY3QsIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqCiAgICAgICAgIHJldHVybiB0eXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUs
IHNob3VsZFRocm93LCBtYWtlVW5zdXBwb3J0ZWRJbmRleGVkU2V0dGVyRXJyb3JNZXNzYWdlKCJX
aW5kb3ciKSk7CiAgICAgc2NvcGUucmVsZWFzZSgpOwogCi0gICAgYXV0byYgYnVpbHRpbk5hbWVz
ID0gc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5h
bWVzKCk7CisgICAgYXV0byYgYnVpbHRpbk5hbWVzID0gd2ViQ29yZUJ1aWx0aW5OYW1lcyh2bSk7
CiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBidWlsdGluTmFtZXMuZG9jdW1lbnRQdWJsaWNOYW1l
KCkgfHwgcHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy53aW5kb3dQdWJsaWNOYW1lKCkpCiAg
ICAgICAgIHJldHVybiBKU09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkodGhpc09iamVjdCwgbGV4
aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7
CiAKQEAgLTU4Niw3ICs1ODYsNyBAQCB2b2lkIEpTRE9NV2luZG93OjpzZXRPcGVuZXIoSlNDOjpK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbAogICAgIH0KIAog
ICAgIGJvb2wgc2hvdWxkVGhyb3cgPSB0cnVlOwotICAgIGNyZWF0ZURhdGFQcm9wZXJ0eSgmbGV4
aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhsZXhpY2FsR2xvYmFsT2Jq
ZWN0LnZtKCksICJvcGVuZXIiX3MpLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOworICAgIGNyZWF0ZURh
dGFQcm9wZXJ0eSgmbGV4aWNhbEdsb2JhbE9iamVjdCwgd2ViQ29yZUJ1aWx0aW5OYW1lcyhsZXhp
Y2FsR2xvYmFsT2JqZWN0LnZtKCkpLm9wZW5lclB1YmxpY05hbWUoKSwgdmFsdWUsIHNob3VsZFRo
cm93KTsKIH0KIAogSlNWYWx1ZSBKU0RPTVdpbmRvdzo6c2VsZihKU0M6OkpTR2xvYmFsT2JqZWN0
JikgY29uc3QKQEAgLTY0NCw3ICs2NDQsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNE
T01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX29wZW5EYXRhYmFzZSwgKEpTR2xvYmFsT2JqZQogSlNW
YWx1ZSBKU0RPTVdpbmRvdzo6b3BlbkRhdGFiYXNlKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QpIGNvbnN0CiB7CiAgICAgVk0mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVj
dC52bSgpOwotICAgIFN0cmluZ0ltcGwqIG5hbWUgPSBQcm9wZXJ0eU5hbWUoc3RhdGljX2Nhc3Q8
SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkub3BlbkRhdGFi
YXNlUHVibGljTmFtZSgpKS5wdWJsaWNOYW1lKCk7CisgICAgU3RyaW5nSW1wbCogbmFtZSA9IFBy
b3BlcnR5TmFtZSh3ZWJDb3JlQnVpbHRpbk5hbWVzKHZtKS5vcGVuRGF0YWJhc2VQdWJsaWNOYW1l
KCkpLnB1YmxpY05hbWUoKTsKICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVk
RmVhdHVyZXMoKS53ZWJTUUxFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiBKU0Z1bmN0aW9uOjpj
cmVhdGUodm0sICZsZXhpY2FsR2xvYmFsT2JqZWN0LCA0LCBuYW1lLCBqc0RPTVdpbmRvd0luc3Rh
bmNlRnVuY3Rpb25fb3BlbkRhdGFiYXNlLCBOb0ludHJpbnNpYyk7CiAKQEAgLTY1Nyw3ICs2NTcs
NyBAQCB2b2lkIEpTRE9NV2luZG93OjpzZXRPcGVuRGF0YWJhc2UoSlNDOjpKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOgogICAgICAgICByZXR1cm47CiAKICAgICBib29s
IHNob3VsZFRocm93ID0gdHJ1ZTsKLSAgICBjcmVhdGVEYXRhUHJvcGVydHkoJmxleGljYWxHbG9i
YWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcobGV4aWNhbEdsb2JhbE9iamVjdC52bSgp
LCAib3BlbkRhdGFiYXNlIl9zKSwgdmFsdWUsIHNob3VsZFRocm93KTsKKyAgICBjcmVhdGVEYXRh
UHJvcGVydHkoJmxleGljYWxHbG9iYWxPYmplY3QsIHdlYkNvcmVCdWlsdGluTmFtZXMobGV4aWNh
bEdsb2JhbE9iamVjdC52bSgpKS5vcGVuRGF0YWJhc2VQdWJsaWNOYW1lKCksIHZhbHVlLCBzaG91
bGRUaHJvdyk7CiB9CiAKIEpTRE9NV2luZG93JiBtYWluV29ybGRHbG9iYWxPYmplY3QoRnJhbWUm
IGZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExp
c3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5j
cHAKaW5kZXggYzcwZjg0ZDI1YzU3MmFjNDQyMDgyZTNjZjg5MjgxNzBkODc3ZDMyMy4uZmY2NmUw
YWY3MjM4OGRkMTZhM2UyOGM2NTgzNTU2NzQ4YmM5YzM1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5j
bHVkZSAiSlNFeGVjU3RhdGVJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJKU1dvcmtlckds
b2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIldl
YkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0V4Y2VwdGlvbkhlbHBlcnMuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0xvY2suaD4KQEAgLTE4Niw3ICsxODcsNyBAQCB2b2lkIEpTRXZlbnRMaXN0
ZW5lcjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9u
Q29udGV4dAogICAgICAgICBpZiAobV9pc0F0dHJpYnV0ZSkKICAgICAgICAgICAgIHJldHVybjsK
IAotICAgICAgICBoYW5kbGVFdmVudEZ1bmN0aW9uID0ganNGdW5jdGlvbi0+Z2V0KGxleGljYWxH
bG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJoYW5kbGVFdmVudCJfcykp
OworICAgICAgICBoYW5kbGVFdmVudEZ1bmN0aW9uID0ganNGdW5jdGlvbi0+Z2V0KGxleGljYWxH
bG9iYWxPYmplY3QsIHdlYkNvcmVCdWlsdGluTmFtZXModm0pLmhhbmRsZUV2ZW50UHVibGljTmFt
ZSgpKTsKICAgICAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgewogICAgICAg
ICAgICAgYXV0byogZXhjZXB0aW9uID0gc2NvcGUuZXhjZXB0aW9uKCk7CiAgICAgICAgICAgICBz
Y29wZS5jbGVhckV4Y2VwdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0xvY2F0aW9uQ3VzdG9tLmNwcAppbmRleCAzOWY3NzNiOTBlM2ExY2FjMDM0NDg3MjVmM2M2NjQ2
MzRhNDNiM2VkLi5kOWM5NjI4ZDI4MjliMTQ1OTBiZTliNjBiNTk0NDJjNTQ5NmU3NjRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcApAQCAt
NjMsNyArNjMsNyBAQCBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RDb21tb24oSlNMb2Nh
dGlvbiYgdGhpc09iamVjdCwgSlNHbG9iYWxPYmplY3QmIGxleAogCiAgICAgLy8gR2V0dGluZyBs
b2NhdGlvbi5ocmVmIGNyb3NzIG9yaWdpbiBuZWVkcyB0byB0aHJvdy4gSG93ZXZlciwgZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKCkgbmVlZHMgdG8gcmV0dXJuCiAgICAgLy8gYSBkZXNjcmlwdG9y
IHRoYXQgaGFzIGEgc2V0dGVyIGJ1dCBubyBnZXR0ZXIuCi0gICAgaWYgKHNsb3QuaW50ZXJuYWxN
ZXRob2RUeXBlKCkgPT0gUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldE93blBy
b3BlcnR5ICYmIHByb3BlcnR5TmFtZSA9PSBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZt
LmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKS5ocmVmUHVibGljTmFtZSgpKSB7CisgICAgaWYg
KHNsb3QuaW50ZXJuYWxNZXRob2RUeXBlKCkgPT0gUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhv
ZFR5cGU6OkdldE93blByb3BlcnR5ICYmIHByb3BlcnR5TmFtZSA9PSB3ZWJDb3JlQnVpbHRpbk5h
bWVzKHZtKS5ocmVmUHVibGljTmFtZSgpKSB7CiAgICAgICAgIGF1dG8qIGVudHJ5ID0gSlNMb2Nh
dGlvbjo6aW5mbygpLT5zdGF0aWNQcm9wSGFzaFRhYmxlLT5lbnRyeShwcm9wZXJ0eU5hbWUpOwog
ICAgICAgICBhdXRvKiBnZXR0ZXJTZXR0ZXIgPSB0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpLT5j
cmVhdGVDcm9zc09yaWdpbkdldHRlclNldHRlcigmbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lLCBudWxscHRyLCBlbnRyeS0+cHJvcGVydHlQdXR0ZXIoKSk7CiAgICAgICAgIHNsb3Qu
c2V0R2V0dGVyU2xvdCgmdGhpc09iamVjdCwgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtLCBnZXR0ZXJTZXR0ZXIpOwpAQCAtMTIwLDcgKzEy
MCw3IEBAIGJvb2wgSlNMb2NhdGlvbjo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5CiAgICAgLy8gU28gZmFsbCB0aHJvdWdoIHRv
IHRoZSBhY2Nlc3MgY2hlY2sgZm9yIHRob3NlLgogICAgIFN0cmluZyBlcnJvck1lc3NhZ2U7CiAg
ICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QtPndyYXBwZWQoKS53aW5kb3coKSwgZXJyb3JN
ZXNzYWdlKSkgewotICAgICAgICBpZiAocHJvcGVydHlOYW1lID09IHN0YXRpY19jYXN0PEpTVk1D
bGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLmhyZWZQdWJsaWNOYW1l
KCkpIHsKKyAgICAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSB3ZWJDb3JlQnVpbHRpbk5hbWVzKHZt
KS5ocmVmUHVibGljTmFtZSgpKSB7CiAgICAgICAgICAgICBhdXRvKiBzZXR0ZXIgPSBzX2luZm8u
c3RhdGljUHJvcEhhc2hUYWJsZS0+ZW50cnkocHJvcGVydHlOYW1lKS0+cHJvcGVydHlQdXR0ZXIo
KTsKICAgICAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICAgICAgICAgIHNldHRlcihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjplbmNvZGUocHV0UHJvcGVydHlTbG90LnRoaXNWYWx1
ZSgpKSwgSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKSwgcHJvcGVydHlOYW1lKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVtb3RlRE9NV2luZG93Q3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVtb3RlRE9NV2luZG93Q3VzdG9tLmNwcApp
bmRleCAwZjVhYWQ2NWQxNGU1ZGQ5NTNiYjc2ODliZTRiMjdhYzk4OTczNTUwLi41NTNiNzg1ZTVm
YTI5YWUwZTgzMDQ1ZGU2Y2VmOTVhM2Q5YmQ4ZWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1JlbW90ZURPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNSZW1vdGVET01XaW5kb3dDdXN0b20uY3BwCkBAIC02Nyw3ICs2
Nyw3IEBAIGJvb2wgSlNSZW1vdGVET01XaW5kb3c6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQCiAgICAgU3RyaW5nIGVycm9yTWVzc2FnZTsK
IAogICAgIC8vIFdlIG9ubHkgYWxsb3cgc2V0dGluZyAibG9jYXRpb24iIGF0dHJpYnV0ZSBjcm9z
cy1vcmlnaW4uCi0gICAgaWYgKHByb3BlcnR5TmFtZSA9PSBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50
RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKS5sb2NhdGlvblB1YmxpY05hbWUo
KSkgeworICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gd2ViQ29yZUJ1aWx0aW5OYW1lcyh2bSkubG9j
YXRpb25QdWJsaWNOYW1lKCkpIHsKICAgICAgICAgYXV0byogc2V0dGVyID0gc19pbmZvLnN0YXRp
Y1Byb3BIYXNoVGFibGUtPmVudHJ5KHByb3BlcnR5TmFtZSktPnByb3BlcnR5UHV0dGVyKCk7CiAg
ICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICAgICAgc2V0dGVyKGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTVmFsdWU6OmVuY29kZShzbG90LnRoaXNWYWx1ZSgpKSwgSlNWYWx1ZTo6ZW5jb2RlKHZh
bHVlKSwgcHJvcGVydHlOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1JlYWRhYmxlU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRh
YmxlU3RyZWFtLmNwcAppbmRleCA2MDM2NDU5ZDE1YjgxOThhMzg0NGU5OTQwOTY4YWRiMzc3YjY1
ZTkwLi43MWY1NTFkZThjNmY4OGU3MTZkNmE3NmViMWU2ZDNlNDI0YzcwZGFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW0uY3BwCkBAIC02Niw5ICs2Niw5
IEBAIHN0YXRpYyBpbmxpbmUgRXhjZXB0aW9uT3I8SlNPYmplY3QqPiBpbnZva2VDb25zdHJ1Y3Rv
cihKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpCiAKIEV4Y2VwdGlvbk9yPFJlZjxSZWFkYWJsZVN0
cmVhbT4+IFJlYWRhYmxlU3RyZWFtOjpjcmVhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgUmVmUHRyPFJlYWRhYmxlU3RyZWFtU291cmNlPiYmIHNvdXJjZSkKIHsK
LSAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4obGV4
aWNhbEdsb2JhbE9iamVjdC52bSgpLmNsaWVudERhdGEpOworICAgIGF1dG8mIGJ1aWx0aW5OYW1l
cyA9IHdlYkNvcmVCdWlsdGluTmFtZXMobGV4aWNhbEdsb2JhbE9iamVjdC52bSgpKTsKIAotICAg
IGF1dG8gb2JqZWN0T3JFeGNlcHRpb24gPSBpbnZva2VDb25zdHJ1Y3RvcihsZXhpY2FsR2xvYmFs
T2JqZWN0LCBjbGllbnREYXRhLmJ1aWx0aW5OYW1lcygpLlJlYWRhYmxlU3RyZWFtUHJpdmF0ZU5h
bWUoKSwgWyZzb3VyY2VdKGF1dG8mIGFyZ3MsIGF1dG8mIGxleGljYWxHbG9iYWxPYmplY3QsIGF1
dG8mIGdsb2JhbE9iamVjdCkgeworICAgIGF1dG8gb2JqZWN0T3JFeGNlcHRpb24gPSBpbnZva2VD
b25zdHJ1Y3RvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBidWlsdGluTmFtZXMuUmVhZGFibGVTdHJl
YW1Qcml2YXRlTmFtZSgpLCBbJnNvdXJjZV0oYXV0byYgYXJncywgYXV0byYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgYXV0byYgZ2xvYmFsT2JqZWN0KSB7CiAgICAgICAgIGFyZ3MuYXBwZW5kKHNvdXJj
ZSA/IHRvSlNOZXdseUNyZWF0ZWQoJmxleGljYWxHbG9iYWxPYmplY3QsICZnbG9iYWxPYmplY3Qs
IHNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpKSA6IEpTQzo6anNVbmRlZmluZWQoKSk7CiAgICAgfSk7
CiAKQEAgLTEzMCw4ICsxMzAsOCBAQCBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxSZWY8UmVhZGFi
bGVTdHJlYW0+LCBSZWY8UmVhZGFibGVTdHJlYW0+Pj4gUmVhZGFibGVTdHJlYQogCiB2b2lkIFJl
YWRhYmxlU3RyZWFtOjpsb2NrKCkKIHsKLSAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19j
YXN0PEpTVk1DbGllbnREYXRhKj4obV9nbG9iYWxPYmplY3QtPnZtKCkuY2xpZW50RGF0YSk7Ci0g
ICAgaW52b2tlQ29uc3RydWN0b3IoKm1fZ2xvYmFsT2JqZWN0LCBjbGllbnREYXRhLmJ1aWx0aW5O
YW1lcygpLlJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlclByaXZhdGVOYW1lKCksIFt0aGlzXShh
dXRvJiBhcmdzLCBhdXRvJiwgYXV0byYpIHsKKyAgICBhdXRvJiBidWlsdGluTmFtZXMgPSB3ZWJD
b3JlQnVpbHRpbk5hbWVzKG1fZ2xvYmFsT2JqZWN0LT52bSgpKTsKKyAgICBpbnZva2VDb25zdHJ1
Y3RvcigqbV9nbG9iYWxPYmplY3QsIGJ1aWx0aW5OYW1lcy5SZWFkYWJsZVN0cmVhbURlZmF1bHRS
ZWFkZXJQcml2YXRlTmFtZSgpLCBbdGhpc10oYXV0byYgYXJncywgYXV0byYsIGF1dG8mKSB7CiAg
ICAgICAgIGFyZ3MuYXBwZW5kKHJlYWRhYmxlU3RyZWFtKCkpOwogICAgIH0pOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCBiNmQ0
YWZjMjNjM2JiNDAzODE5OTI5ODlhNzdhOGFjMmJkMDYwNjQwLi5kYjJmMWYxODVjZDdiMzQ3ZWVm
ODFiM2FkNTJjMzgzY2VkMGJmZjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMzM2LDcgKzMzNiw3IEBAIHZvaWQgU2NyaXB0Q29u
dHJvbGxlcjo6c2V0dXBNb2R1bGVTY3JpcHRIYW5kbGVycyhMb2FkYWJsZU1vZHVsZVNjcmlwdCYg
bW9kdWxlU2NyCiAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsK
ICAgICAgICAgaWYgKGVycm9yVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICAgICAgYXV0byog
b2JqZWN0ID0gSlNDOjphc09iamVjdChlcnJvclZhbHVlKTsKLSAgICAgICAgICAgIGlmIChKU1Zh
bHVlIGZhaWx1cmVLaW5kVmFsdWUgPSBvYmplY3QtPmdldERpcmVjdCh2bSwgc3RhdGljX2Nhc3Q8
SlNWTUNsaWVudERhdGEmPigqdm0uY2xpZW50RGF0YSkuYnVpbHRpbk5hbWVzKCkuZmFpbHVyZUtp
bmRQcml2YXRlTmFtZSgpKSkgeworICAgICAgICAgICAgaWYgKEpTVmFsdWUgZmFpbHVyZUtpbmRW
YWx1ZSA9IG9iamVjdC0+Z2V0RGlyZWN0KHZtLCB3ZWJDb3JlQnVpbHRpbk5hbWVzKHZtKS5mYWls
dXJlS2luZFByaXZhdGVOYW1lKCkpKSB7CiAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBob3N0
IHByb3BhZ2F0ZWQgZXJyb3IgaW4gdGhlIG1vZHVsZSBsb2FkZXIgcGlwZWxpbmUuCiAgICAgICAg
ICAgICAgICAgc3dpdGNoIChzdGF0aWNfY2FzdDxNb2R1bGVGZXRjaEZhaWx1cmVLaW5kPihmYWls
dXJlS2luZFZhbHVlLmFzSW50MzIoKSkpIHsKICAgICAgICAgICAgICAgICBjYXNlIE1vZHVsZUZl
dGNoRmFpbHVyZUtpbmQ6Oldhc1Byb3BhZ2F0ZWRFcnJvcjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuY3BwCmluZGV4IDY1MTAzZmQ2MmYzNTQ4
ODA4NTI1MDJmNzczZDY0ZjE0MGI1YzhhYTkuLjVkZjM4N2RiMWM1YTJjMTNkNzFjYjMyYWE3ZmEx
YTQ0NjUwYWM0YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dE1vZHVsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
TW9kdWxlTG9hZGVyLmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIHN0YXRpYyB2b2lkIHJlamVjdFRv
UHJvcGFnYXRlTmV0d29ya0Vycm9yKERlZmVycmVkUHJvbWlzZSYgZGVmZXJyZWQsIE1vZHVsZUZl
dGNoCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
Njc1NTMKICAgICAgICAgYXV0byogZXJyb3IgPSBKU0M6OmNyZWF0ZVR5cGVFcnJvcigmanNHbG9i
YWxPYmplY3QsIG1lc3NhZ2UpOwogICAgICAgICBBU1NFUlQoZXJyb3IpOwotICAgICAgICBlcnJv
ci0+cHV0RGlyZWN0KHZtLCBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSY+KCp2bS5jbGllbnRE
YXRhKS5idWlsdGluTmFtZXMoKS5mYWlsdXJlS2luZFByaXZhdGVOYW1lKCksIEpTQzo6anNOdW1i
ZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oZmFpbHVyZUtpbmQpKSk7CisgICAgICAgIGVycm9yLT5w
dXREaXJlY3Qodm0sIHdlYkNvcmVCdWlsdGluTmFtZXModm0pLmZhaWx1cmVLaW5kUHJpdmF0ZU5h
bWUoKSwgSlNDOjpqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihmYWlsdXJlS2luZCkpKTsK
ICAgICAgICAgcmV0dXJuIGVycm9yOwogICAgIH0pOwogfQpAQCAtMTYzLDcgKzE2Myw3IEBAIHN0
YXRpYyB2b2lkIHJlamVjdFdpdGhGZXRjaEVycm9yKERlZmVycmVkUHJvbWlzZSYgZGVmZXJyZWQs
IEV4Y2VwdGlvbkNvZGUgZWMsIGNvCiAgICAgICAgIEpTQzo6Vk0mIHZtID0ganNHbG9iYWxPYmpl
Y3Qudm0oKTsKICAgICAgICAgSlNDOjpKU09iamVjdCogZXJyb3IgPSBqc0Nhc3Q8SlNDOjpKU09i
amVjdCo+KGNyZWF0ZURPTUV4Y2VwdGlvbigmanNHbG9iYWxPYmplY3QsIGVjLCBtZXNzYWdlKSk7
CiAgICAgICAgIEFTU0VSVChlcnJvcik7Ci0gICAgICAgIGVycm9yLT5wdXREaXJlY3Qodm0sIHN0
YXRpY19jYXN0PEpTVk1DbGllbnREYXRhJj4oKnZtLmNsaWVudERhdGEpLmJ1aWx0aW5OYW1lcygp
LmZhaWx1cmVLaW5kUHJpdmF0ZU5hbWUoKSwgSlNDOjpqc051bWJlcihzdGF0aWNfY2FzdDxpbnQz
Ml90PihNb2R1bGVGZXRjaEZhaWx1cmVLaW5kOjpXYXNGZXRjaEVycm9yKSkpOworICAgICAgICBl
cnJvci0+cHV0RGlyZWN0KHZtLCB3ZWJDb3JlQnVpbHRpbk5hbWVzKHZtKS5mYWlsdXJlS2luZFBy
aXZhdGVOYW1lKCksIEpTQzo6anNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oTW9kdWxlRmV0
Y2hGYWlsdXJlS2luZDo6V2FzRmV0Y2hFcnJvcikpKTsKICAgICAgICAgcmV0dXJuIGVycm9yOwog
ICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29y
ZUJ1aWx0aW5OYW1lcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0
aW5OYW1lcy5oCmluZGV4IGMxMjg1NzcwMjlmMDlkMGY2YTBjZTc3YjJlMGQ4NWMxOWMyZTlmYzAu
LjYzZWE3ZmFhZjU5ZGQ3Nzk0MDI5MzQ0NjMzOGZhOGIyMjgzNTVmYTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKQEAgLTQ3Myw2ICs0
NzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8oZ2V0VHJhY2tzKSBcCiAgICAg
bWFjcm8oZ2V0VXNlck1lZGlhKSBcCiAgICAgbWFjcm8oZ3B1KSBcCisgICAgbWFjcm8oaGFuZGxl
RXZlbnQpIFwKICAgICBtYWNybyhoZWFkZXIpIFwKICAgICBtYWNybyhoaWdoV2F0ZXJNYXJrKSBc
CiAgICAgbWFjcm8oaHJlZikgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvV2ViQ29yZUpTQ2xpZW50RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2Vi
Q29yZUpTQ2xpZW50RGF0YS5oCmluZGV4IDFmYTUzNTFjNTUyZjlhOTY1OGEwNTM3ZmJhMjhkZjg0
ZjdjMzhmYmMuLmUzMmExYzNmNDI2NjQzZTY2NDkyMmYxNzA4NmJjMWRlNDIyZGRiZGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmgKQEAg
LTIwOCw0ICsyMDgsOSBAQCBJR05PUkVfV0FSTklOR1NfRU5ECiAgICAgcmV0dXJuIGNsaWVudFNw
YWNlOwogfQogCitBTFdBWVNfSU5MSU5FIFdlYkNvcmVCdWlsdGluTmFtZXMmIHdlYkNvcmVCdWls
dGluTmFtZXMoSlNDOjpWTSYgdm0pCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTVk1DbGll
bnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtCmluZGV4IGM0NWZjYWJiYzIzZDYyNWIyYmNmZWVlZGVhYTE4NWZiNmMx
NzIyZDcuLjljMDVhZDUyM2FhYjFjMjk0NzI4NWFmZjc1NGFjMjRiZTQ1OTcxOTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBA
IC00NjAzLDEwICs0NjAzLDEwIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCEke3J1bnRpbWVFbmFibGVDb25k
aXRpb25hbFN0cmluZ30pXG4iKTsKICAgICAgICAgICAgICAgICBpZiAoSXNBY2NlbGVyYXRlZERP
TUF0dHJpYnV0ZSgkaW50ZXJmYWNlLCAkYXR0cmlidXRlKSkgewogICAgICAgICAgICAgICAgICAg
ICBteSAkY2xhc3NGb3JUaGlzID0gIiR7Y2xhc3NOYW1lfTo6aW5mbygpIjsKLSAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vz
c29yKHZtLCBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWls
dGluTmFtZXMoKS4iIC4gJGF0dHJpYnV0ZU5hbWUgLiAiUHVibGljTmFtZSgpLCBKU0M6OkRPTUF0
dHJpYnV0ZUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCAkZ2V0dGVyLCAkc2V0dGVyLCBKU0M6OkRP
TUF0dHJpYnV0ZUFubm90YXRpb24geyAkY2xhc3NGb3JUaGlzLCBudWxscHRyIH0pLCBhdHRyaWJ1
dGVzRm9yU3RydWN0dXJlKCRqc2NBdHRyaWJ1dGVzKSk7XG4iKTsKKyAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZt
LCB3ZWJDb3JlQnVpbHRpbk5hbWVzKHZtKS4iIC4gJGF0dHJpYnV0ZU5hbWUgLiAiUHVibGljTmFt
ZSgpLCBKU0M6OkRPTUF0dHJpYnV0ZUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCAkZ2V0dGVyLCAk
c2V0dGVyLCBKU0M6OkRPTUF0dHJpYnV0ZUFubm90YXRpb24geyAkY2xhc3NGb3JUaGlzLCBudWxs
cHRyIH0pLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKCRqc2NBdHRyaWJ1dGVzKSk7XG4iKTsKICAg
ICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBhc3NlcnQoIkN1c3Rv
bUdldHRlclNldHRlciBpcyBub3QgYWxsb3dlZCBmb3IgRE9NQXR0cmlidXRlLiBET01BdHRyaWJ1
dGVHZXR0ZXJTZXR0ZXIgbXVzdCBiZSB1c2VkLiIpIGlmIElzQWNjZWxlcmF0ZWRET01BdHRyaWJ1
dGUoJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgICAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgc3RhdGljX2Nh
c3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuIiAuICRh
dHRyaWJ1dGVOYW1lIC4gIlB1YmxpY05hbWUoKSwgQ3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVhdGUo
dm0sICRnZXR0ZXIsICRzZXR0ZXIpLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKCRqc2NBdHRyaWJ1
dGVzKSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
ICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCB3ZWJDb3JlQnVpbHRpbk5hbWVzKHZtKS4i
IC4gJGF0dHJpYnV0ZU5hbWUgLiAiUHVibGljTmFtZSgpLCBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNy
ZWF0ZSh2bSwgJGdldHRlciwgJHNldHRlciksIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoJGpzY0F0
dHJpYnV0ZXMpKTtcbiIpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiNlbmRpZlxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogICAgICAg
ICAgICAgfQpAQCAtNDYyMiw3ICs0NjIyLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24K
ICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJXZWJDb3JlSlNDbGllbnREYXRhLmgiKTsK
ICAgICAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5l
cmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRvcGVyYXRpb24pOwogICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0
cmluZzsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHB1dERpcmVjdCh2bSwg
c3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVz
KCkuIiAuICRvcGVyYXRpb24tPm5hbWUgLiAiUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QoKSwgMCwgU3RyaW5nKCksICIgLiBHZXRGdW5jdGlvbk5hbWUo
JGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJG9wZXJhdGlvbikgLiAiKSwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7XG4i
KTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHB1dERpcmVjdCh2bSwgd2Vi
Q29yZUJ1aWx0aW5OYW1lcyh2bSkuIiAuICRvcGVyYXRpb24tPm5hbWUgLiAiUHJpdmF0ZU5hbWUo
KSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QoKSwgMCwgU3RyaW5nKCksICIg
LiBHZXRGdW5jdGlvbk5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJG9wZXJhdGlvbikgLiAi
KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2Vu
ZGlmXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAgICAgICAgIH0KIApAQCAtNDc0MSwxMCAr
NDc0MSwxMCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICBhc3NlcnQoIkN1
c3RvbUdldHRlclNldHRlciBpcyBub3QgYWxsb3dlZCBmb3IgRE9NQXR0cmlidXRlLiBET01BdHRy
aWJ1dGVHZXR0ZXJTZXR0ZXIgbXVzdCBiZSB1c2VkLiIpIGlmIElzQWNjZWxlcmF0ZWRET01BdHRy
aWJ1dGUoJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7CiAKICAgICAgICAgaWYgKCRhdHRyaWJ1dGUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+e1B1YmxpY0lkZW50aWZpZXJ9IHx8ICEkYXR0cmlidXRlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPntQcml2YXRlSWRlbnRpZmllcn0pIHsKLSAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgc3Rh
dGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCku
IiAuICRhdHRyaWJ1dGVOYW1lIC4gIlB1YmxpY05hbWUoKSwgQ3VzdG9tR2V0dGVyU2V0dGVyOjpj
cmVhdGUodm0sICRnZXR0ZXIsICRzZXR0ZXIpLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKCRqc2NB
dHRyaWJ1dGVzKSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAg
ICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgd2ViQ29yZUJ1aWx0aW5OYW1lcyh2bSkuIiAu
ICRhdHRyaWJ1dGVOYW1lIC4gIlB1YmxpY05hbWUoKSwgQ3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVh
dGUodm0sICRnZXR0ZXIsICRzZXR0ZXIpLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKCRqc2NBdHRy
aWJ1dGVzKSk7XG4iKTsKICAgICAgICAgfQogICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57UHJpdmF0ZUlkZW50aWZpZXJ9KSB7Ci0gICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICAgICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIHN0YXRpY19j
YXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLiIgLiAk
YXR0cmlidXRlTmFtZSAuICJQcml2YXRlTmFtZSgpLCBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0
ZSh2bSwgJGdldHRlciwgJHNldHRlciksIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoJGpzY0F0dHJp
YnV0ZXMpKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHB1
dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCB3ZWJDb3JlQnVpbHRpbk5hbWVzKHZtKS4iIC4gJGF0
dHJpYnV0ZU5hbWUgLiAiUHJpdmF0ZU5hbWUoKSwgQ3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVhdGUo
dm0sICRnZXR0ZXIsICRzZXR0ZXIpLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKCRqc2NBdHRyaWJ1
dGVzKSk7XG4iKTsKICAgICAgICAgfQogCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IH1cbiIpIGlmICRpc1ByaXZhdGVBbmRQdWJsaWM7CkBAIC00NzY0LDcgKzQ3NjQsNyBAQCBzdWIg
R2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2lm
ICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAgICAgICAg
IGFzc2VydCgiQ3VzdG9tR2V0dGVyU2V0dGVyIGlzIG5vdCBhbGxvd2VkIGZvciBET01BdHRyaWJ1
dGUuIERPTUF0dHJpYnV0ZUdldHRlclNldHRlciBtdXN0IGJlIHVzZWQuIikgaWYgSXNBY2NlbGVy
YXRlZERPTUF0dHJpYnV0ZSgkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKLSAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIHN0YXRpY19jYXN0
PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLiIgLiAkYXR0
cmlidXRlTmFtZSAuICJQcml2YXRlTmFtZSgpLCBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2
bSwgJGdldHRlciwgbnVsbHB0ciksIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
KSk7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcHV0RGlyZWN0Q3VzdG9t
QWNjZXNzb3Iodm0sIHdlYkNvcmVCdWlsdGluTmFtZXModm0pLiIgLiAkYXR0cmlidXRlTmFtZSAu
ICJQcml2YXRlTmFtZSgpLCBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgJGdldHRlciwg
bnVsbHB0ciksIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSk7XG4iKTsKICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWZcbiIpIGlmICRjb25kaXRpb25hbFN0cmlu
ZzsKICAgICB9CiAKQEAgLTQ3ODQsNyArNDc4NCw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0
aW9uCiAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5l
cmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRvcGVyYXRpb24pOwogICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5n
OwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoJHtydW50aW1lRW5hYmxlQ29u
ZGl0aW9uYWxTdHJpbmd9KVxuIik7Ci0gICAgICAgIG15ICRwcm9wZXJ0eU5hbWUgPSAic3RhdGlj
X2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuIiAu
ICRmdW5jdGlvbk5hbWUgLiAoJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UHJpdmF0
ZUlkZW50aWZpZXJ9ID8gIlByaXZhdGVOYW1lKCkiIDogIlB1YmxpY05hbWUoKSIpOworICAgICAg
ICBteSAkcHJvcGVydHlOYW1lID0gIndlYkNvcmVCdWlsdGluTmFtZXModm0pLiIgLiAkZnVuY3Rp
b25OYW1lIC4gKCRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e1ByaXZhdGVJZGVudGlm
aWVyfSA/ICJQcml2YXRlTmFtZSgpIiA6ICJQdWJsaWNOYW1lKCkiKTsKICAgICAgICAgaWYgKElz
SlNCdWlsdGluKCRpbnRlcmZhY2UsICRvcGVyYXRpb24pKSB7CiAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICAgICAgcHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKHZtLCB0aGlzLCAk
cHJvcGVydHlOYW1lLCAkaW1wbGVtZW50YXRpb25GdW5jdGlvbih2bSksIGF0dHJpYnV0ZXNGb3JT
dHJ1Y3R1cmUoJGpzQXR0cmlidXRlcykpO1xuIik7CiAgICAgICAgIH0gZWxzZSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNET01XaW5kb3cu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9NV2luZG93
LmNwcAppbmRleCAwZmVhMDI1OTU2YjAxNTk5ZTdiNTYwMzg1NDM4NjEzNmEyYTAxMTEzLi5iNDJl
NTRhNWIzMzRmZmQzODUxY2Q5NzYzNzczOTFiMTFkYzc4NTkyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNET01XaW5kb3cuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RPTVdpbmRvdy5jcHAKQEAg
LTIwMCw3ICsyMDAsNyBAQCB2b2lkIEpTRE9NV2luZG93OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IEpTV2luZG93UHJveHkqIHByb3h5KQogICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfYmFzZV9v
ZjxBY3RpdmVET01PYmplY3QsIERPTVdpbmRvdz46OnZhbHVlLCAiSW50ZXJmYWNlIGlzIG5vdCBt
YXJrZWQgYXMgW0FjdGl2ZURPTU9iamVjdF0gZXZlbiB0aG91Z2ggaW1wbGVtZW50YXRpb24gY2xh
c3Mgc3ViY2xhc3NlcyBBY3RpdmVET01PYmplY3QuIik7CiAKICAgICBpZiAoKGpzQ2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LT5pc1NlY3VyZUNvbnRleHQoKSAmJiBUZXN0RW5hYmxlZEZvckNvbnRleHQ6OmVuYWJsZWRGb3JD
b250ZXh0KCpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSkpKQotICAgICAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2
bSwgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5h
bWVzKCkuVGVzdEVuYWJsZWRGb3JDb250ZXh0UHVibGljTmFtZSgpLCBDdXN0b21HZXR0ZXJTZXR0
ZXI6OmNyZWF0ZSh2bSwganNET01XaW5kb3dfVGVzdEVuYWJsZWRGb3JDb250ZXh0Q29uc3RydWN0
b3IsIG51bGxwdHIpLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpKTsKKyAgICAgICAgcHV0RGlyZWN0
Q3VzdG9tQWNjZXNzb3Iodm0sIHdlYkNvcmVCdWlsdGluTmFtZXModm0pLlRlc3RFbmFibGVkRm9y
Q29udGV4dFB1YmxpY05hbWUoKSwgQ3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGpzRE9N
V2luZG93X1Rlc3RFbmFibGVkRm9yQ29udGV4dENvbnN0cnVjdG9yLCBudWxscHRyKSwgYXR0cmli
dXRlc0ZvclN0cnVjdHVyZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pKSk7CiB9CiAKIEpTVmFsdWUgSlNET01XaW5kb3c6OmdldENvbnN0cnVj
dG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRp
b25hbGx5UmVhZFdyaXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlLmNwcAppbmRleCA3ODE0MmJmNzYyNjkx
NmNiZWIwYzY3MjU5OGVhMWI1MTY2OWNlZjQwLi5iZTQxMDgwMGFmZTRlODIwNmE0NTkzYzIxYzUy
YTk1MTFiZDQ4ZDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3Jp
dGUuY3BwCkBAIC0yMTgsMTYgKzIxOCwxNiBAQCB2b2lkIEpTVGVzdENvbmRpdGlvbmFsbHlSZWFk
V3JpdGVQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAgICB9CiAgICAgLy8gQWRk
aW5nIGJhY2sgYXR0cmlidXRlLCBidXQgYXMgcmVhZG9ubHksIGFmdGVyIHJlbW92aW5nIHRoZSBy
ZWFkLXdyaXRlIHZhcmlhbnQgYWJvdmUuIAogICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6c2hhcmVkRmVhdHVyZXMoKS50ZXN0RmVhdHVyZUVuYWJsZWQoKSkKLSAgICAgICAgcHV0RGly
ZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xp
ZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLnJ1bnRpbWVDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0
cmlidXRlUHVibGljTmFtZSgpLCBKU0M6OkRPTUF0dHJpYnV0ZUdldHRlclNldHRlcjo6Y3JlYXRl
KHZtLCBqc1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlX3J1bnRpbWVDb25kaXRpb25hbGx5UmVh
ZFdyaXRlQXR0cmlidXRlLCBudWxscHRyLCBKU0M6OkRPTUF0dHJpYnV0ZUFubm90YXRpb24geyBK
U1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlOjppbmZvKCksIG51bGxwdHIgfSksIGF0dHJpYnV0
ZXNGb3JTdHJ1Y3R1cmUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
KSkpOworICAgICAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgd2ViQ29yZUJ1aWx0aW5O
YW1lcyh2bSkucnVudGltZUNvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGVQdWJsaWNOYW1l
KCksIEpTQzo6RE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGpzVGVzdENvbmRp
dGlvbmFsbHlSZWFkV3JpdGVfcnVudGltZUNvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGUs
IG51bGxwdHIsIEpTQzo6RE9NQXR0cmlidXRlQW5ub3RhdGlvbiB7IEpTVGVzdENvbmRpdGlvbmFs
bHlSZWFkV3JpdGU6OmluZm8oKSwgbnVsbHB0ciB9KSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpKSk7CiAgICAgLy8gQWRk
aW5nIGJhY2sgYXR0cmlidXRlLCBidXQgYXMgcmVhZG9ubHksIGFmdGVyIHJlbW92aW5nIHRoZSBy
ZWFkLXdyaXRlIHZhcmlhbnQgYWJvdmUuIAogICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6c2hhcmVkRmVhdHVyZXMoKS50ZXN0RmVhdHVyZUVuYWJsZWQoKSkKLSAgICAgICAgcHV0RGly
ZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xp
ZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLnJ1bnRpbWVDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0
cmlidXRlUHJvbWlzZVB1YmxpY05hbWUoKSwgQ3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0s
IGpzVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGVfcnVudGltZUNvbmRpdGlvbmFsbHlSZWFkV3Jp
dGVBdHRyaWJ1dGVQcm9taXNlLCBudWxscHRyKSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ip
KSk7CisgICAgICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCB3ZWJDb3JlQnVpbHRpbk5h
bWVzKHZtKS5ydW50aW1lQ29uZGl0aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0ZVByb21pc2VQdWJs
aWNOYW1lKCksIEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBqc1Rlc3RDb25kaXRpb25h
bGx5UmVhZFdyaXRlX3J1bnRpbWVDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRlUHJvbWlz
ZSwgbnVsbHB0ciksIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yKSkpOwogICAgIC8vIEFkZGlu
ZyBiYWNrIGF0dHJpYnV0ZSwgYnV0IGFzIHJlYWRvbmx5LCBhZnRlciByZW1vdmluZyB0aGUgcmVh
ZC13cml0ZSB2YXJpYW50IGFib3ZlLiAKICAgICBpZiAoIWRvd25jYXN0PERvY3VtZW50Pihqc0Nh
c3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSktPnNldHRpbmdzVmFsdWVzKCkudGVzdEZlYXR1cmVFbmFibGVkKQotICAgICAgICBw
dXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2
bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuc2V0dGluZ3NDb25kaXRpb25hbGx5UmVhZFdy
aXRlQXR0cmlidXRlUHVibGljTmFtZSgpLCBKU0M6OkRPTUF0dHJpYnV0ZUdldHRlclNldHRlcjo6
Y3JlYXRlKHZtLCBqc1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlX3NldHRpbmdzQ29uZGl0aW9u
YWxseVJlYWRXcml0ZUF0dHJpYnV0ZSwgbnVsbHB0ciwgSlNDOjpET01BdHRyaWJ1dGVBbm5vdGF0
aW9uIHsgSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZTo6aW5mbygpLCBudWxscHRyIH0pLCBh
dHRyaWJ1dGVzRm9yU3RydWN0dXJlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0
dHJpYnV0ZSkpKTsKKyAgICAgICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIHdlYkNvcmVC
dWlsdGluTmFtZXModm0pLnNldHRpbmdzQ29uZGl0aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0ZVB1
YmxpY05hbWUoKSwgSlNDOjpET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwganNU
ZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZV9zZXR0aW5nc0NvbmRpdGlvbmFsbHlSZWFkV3JpdGVB
dHRyaWJ1dGUsIG51bGxwdHIsIEpTQzo6RE9NQXR0cmlidXRlQW5ub3RhdGlvbiB7IEpTVGVzdENv
bmRpdGlvbmFsbHlSZWFkV3JpdGU6OmluZm8oKSwgbnVsbHB0ciB9KSwgYXR0cmlidXRlc0ZvclN0
cnVjdHVyZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3Vz
dG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpKSk7CiAg
ICAgLy8gQWRkaW5nIGJhY2sgYXR0cmlidXRlLCBidXQgYXMgcmVhZG9ubHksIGFmdGVyIHJlbW92
aW5nIHRoZSByZWFkLXdyaXRlIHZhcmlhbnQgYWJvdmUuIAogICAgIGlmICghZG93bmNhc3Q8RG9j
dW1lbnQ+KGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpKS0+c2V0dGluZ3NWYWx1ZXMoKS50ZXN0RmVhdHVyZUVuYWJsZWQp
Ci0gICAgICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBzdGF0aWNfY2FzdDxKU1ZNQ2xp
ZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKS5zZXR0aW5nc0NvbmRpdGlv
bmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGVQcm9taXNlUHVibGljTmFtZSgpLCBDdXN0b21HZXR0ZXJT
ZXR0ZXI6OmNyZWF0ZSh2bSwganNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZV9zZXR0aW5nc0Nv
bmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGVQcm9taXNlLCBudWxscHRyKSwgYXR0cmlidXRl
c0ZvclN0cnVjdHVyZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IpKSk7CisgICAgICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZt
LCB3ZWJDb3JlQnVpbHRpbk5hbWVzKHZtKS5zZXR0aW5nc0NvbmRpdGlvbmFsbHlSZWFkV3JpdGVB
dHRyaWJ1dGVQcm9taXNlUHVibGljTmFtZSgpLCBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2
bSwganNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZV9zZXR0aW5nc0NvbmRpdGlvbmFsbHlSZWFk
V3JpdGVBdHRyaWJ1dGVQcm9taXNlLCBudWxscHRyKSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IpKSk7CiAgICAgaWYgKGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgJiYgc3RydWN0dXJl
KCktPmlzRGljdGlvbmFyeSgpKQogICAgICAgICBmbGF0dGVuRGljdGlvbmFyeU9iamVjdCh2bSk7
CiAgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7CkBAIC0yNDcsOCAr
MjQ3LDggQEAgdm9pZCBKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0pCiAKICAgICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX2Jhc2Vfb2Y8QWN0aXZlRE9N
T2JqZWN0LCBUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZT46OnZhbHVlLCAiSW50ZXJmYWNlIGlz
IG5vdCBtYXJrZWQgYXMgW0FjdGl2ZURPTU9iamVjdF0gZXZlbiB0aG91Z2ggaW1wbGVtZW50YXRp
b24gY2xhc3Mgc3ViY2xhc3NlcyBBY3RpdmVET01PYmplY3QuIik7CiAKLSAgICBwdXREaXJlY3RD
dXN0b21BY2Nlc3Nvcih2bSwgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnRE
YXRhKS0+YnVpbHRpbk5hbWVzKCkucnVudGltZUNvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1
dGVVbmZvcmdlYWJsZVByaXZhdGVQcml2YXRlTmFtZSgpLCBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNy
ZWF0ZSh2bSwganNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZV9ydW50aW1lQ29uZGl0aW9uYWxs
eVJlYWRXcml0ZUF0dHJpYnV0ZVVuZm9yZ2VhYmxlUHJpdmF0ZSwgbnVsbHB0ciksIGF0dHJpYnV0
ZXNGb3JTdHJ1Y3R1cmUoSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSk7Ci0gICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNz
b3Iodm0sIHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0
aW5OYW1lcygpLnNldHRpbmdzQ29uZGl0aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0ZVVuZm9yZ2Vh
YmxlUHJpdmF0ZVByaXZhdGVOYW1lKCksIEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBq
c1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlX3NldHRpbmdzQ29uZGl0aW9uYWxseVJlYWRXcml0
ZUF0dHJpYnV0ZVVuZm9yZ2VhYmxlUHJpdmF0ZSwgbnVsbHB0ciksIGF0dHJpYnV0ZXNGb3JTdHJ1
Y3R1cmUoSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5KSk7CisgICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIHdl
YkNvcmVCdWlsdGluTmFtZXModm0pLnJ1bnRpbWVDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmli
dXRlVW5mb3JnZWFibGVQcml2YXRlUHJpdmF0ZU5hbWUoKSwgQ3VzdG9tR2V0dGVyU2V0dGVyOjpj
cmVhdGUodm0sIGpzVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGVfcnVudGltZUNvbmRpdGlvbmFs
bHlSZWFkV3JpdGVBdHRyaWJ1dGVVbmZvcmdlYWJsZVByaXZhdGUsIG51bGxwdHIpLCBhdHRyaWJ1
dGVzRm9yU3RydWN0dXJlKEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSkpOworICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vz
c29yKHZtLCB3ZWJDb3JlQnVpbHRpbk5hbWVzKHZtKS5zZXR0aW5nc0NvbmRpdGlvbmFsbHlSZWFk
V3JpdGVBdHRyaWJ1dGVVbmZvcmdlYWJsZVByaXZhdGVQcml2YXRlTmFtZSgpLCBDdXN0b21HZXR0
ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwganNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZV9zZXR0aW5n
c0NvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGVVbmZvcmdlYWJsZVByaXZhdGUsIG51bGxw
dHIpLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRE
ZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSkpOwogfQogCiBKU09iamVj
dCogSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZTo6Y3JlYXRlUHJvdG90eXBlKFZNJiB2bSwg
SlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlT
ZXR0aW5nLmNwcAppbmRleCAzYzdkMGJmYmQ1MGNlN2RhZWFmNDczMmU5NjdmYTJmYWM3NmNhYzc5
Li4yZGIxZjQwMjNjODkwOGY4NGZlMTMxZDE2YjIxZmVjZmRlMDkzZTQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0
dGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwCkBAIC0yNTEsMTIgKzI1MSwxMiBAQCB2b2lkIEpTVGVz
dEVuYWJsZWRCeVNldHRpbmc6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAgICBzdGF0aWNfYXNz
ZXJ0KCFzdGQ6OmlzX2Jhc2Vfb2Y8QWN0aXZlRE9NT2JqZWN0LCBUZXN0RW5hYmxlZEJ5U2V0dGlu
Zz46OnZhbHVlLCAiSW50ZXJmYWNlIGlzIG5vdCBtYXJrZWQgYXMgW0FjdGl2ZURPTU9iamVjdF0g
ZXZlbiB0aG91Z2ggaW1wbGVtZW50YXRpb24gY2xhc3Mgc3ViY2xhc3NlcyBBY3RpdmVET01PYmpl
Y3QuIik7CiAKICAgICBpZiAoanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0
KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNldHRpbmdzVmFsdWVzKCkudGVzdFNldHRp
bmdFbmFibGVkKQotICAgICAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgc3RhdGljX2Nh
c3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuVGVzdFN1
Yk9iakVuYWJsZWRCeVNldHRpbmdQdWJsaWNOYW1lKCksIEN1c3RvbUdldHRlclNldHRlcjo6Y3Jl
YXRlKHZtLCBqc1Rlc3RFbmFibGVkQnlTZXR0aW5nX1Rlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5n
Q29uc3RydWN0b3IsIG51bGxwdHIpLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpKTsKKyAgICAgICAg
cHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIHdlYkNvcmVCdWlsdGluTmFtZXModm0pLlRlc3RT
dWJPYmpFbmFibGVkQnlTZXR0aW5nUHVibGljTmFtZSgpLCBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNy
ZWF0ZSh2bSwganNUZXN0RW5hYmxlZEJ5U2V0dGluZ19UZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGlu
Z0NvbnN0cnVjdG9yLCBudWxscHRyKSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKSk7CiAgICAgaWYg
KGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLT5zZXR0aW5nc1ZhbHVlcygpLnRlc3RTZXR0aW5nRW5hYmxlZCkKLSAgICAg
ICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRh
Kj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLlRlc3RTdWJPYmpFbmFibGVkQnlTZXR0
aW5nUHJpdmF0ZVByaXZhdGVOYW1lKCksIEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBq
c1Rlc3RFbmFibGVkQnlTZXR0aW5nX1Rlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nUHJpdmF0ZUNv
bnN0cnVjdG9yLCBudWxscHRyKSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKSk7CisgICAgICAgIHB1
dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCB3ZWJDb3JlQnVpbHRpbk5hbWVzKHZtKS5UZXN0U3Vi
T2JqRW5hYmxlZEJ5U2V0dGluZ1ByaXZhdGVQcml2YXRlTmFtZSgpLCBDdXN0b21HZXR0ZXJTZXR0
ZXI6OmNyZWF0ZSh2bSwganNUZXN0RW5hYmxlZEJ5U2V0dGluZ19UZXN0U3ViT2JqRW5hYmxlZEJ5
U2V0dGluZ1ByaXZhdGVDb25zdHJ1Y3RvciwgbnVsbHB0ciksIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1
cmUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSkpOwogICAgIGlmIChqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSkt
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2V0dGluZ3NWYWx1ZXMoKS50ZXN0U2V0dGluZ0Vu
YWJsZWQpIHsKLSAgICAgICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIHN0YXRpY19jYXN0
PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLlRlc3RTdWJP
YmpFbmFibGVkQnlTZXR0aW5nUHJpdmF0ZVB1YmxpY1B1YmxpY05hbWUoKSwgQ3VzdG9tR2V0dGVy
U2V0dGVyOjpjcmVhdGUodm0sIGpzVGVzdEVuYWJsZWRCeVNldHRpbmdfVGVzdFN1Yk9iakVuYWJs
ZWRCeVNldHRpbmdQcml2YXRlUHVibGljQ29uc3RydWN0b3IsIG51bGxwdHIpLCBhdHRyaWJ1dGVz
Rm9yU3RydWN0dXJlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSkpKTsKLSAgICAgICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIHN0YXRp
Y19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLlRl
c3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nUHJpdmF0ZVB1YmxpY1ByaXZhdGVOYW1lKCksIEN1c3Rv
bUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBqc1Rlc3RFbmFibGVkQnlTZXR0aW5nX1Rlc3RTdWJP
YmpFbmFibGVkQnlTZXR0aW5nUHJpdmF0ZVB1YmxpY0NvbnN0cnVjdG9yLCBudWxscHRyKSwgYXR0
cmlidXRlc0ZvclN0cnVjdHVyZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pKSk7CisgICAgICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZt
LCB3ZWJDb3JlQnVpbHRpbk5hbWVzKHZtKS5UZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZ1ByaXZh
dGVQdWJsaWNQdWJsaWNOYW1lKCksIEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBqc1Rl
c3RFbmFibGVkQnlTZXR0aW5nX1Rlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nUHJpdmF0ZVB1Ymxp
Y0NvbnN0cnVjdG9yLCBudWxscHRyKSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKSk7CisgICAgICAg
IHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCB3ZWJDb3JlQnVpbHRpbk5hbWVzKHZtKS5UZXN0
U3ViT2JqRW5hYmxlZEJ5U2V0dGluZ1ByaXZhdGVQdWJsaWNQcml2YXRlTmFtZSgpLCBDdXN0b21H
ZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwganNUZXN0RW5hYmxlZEJ5U2V0dGluZ19UZXN0U3ViT2Jq
RW5hYmxlZEJ5U2V0dGluZ1ByaXZhdGVQdWJsaWNDb25zdHJ1Y3RvciwgbnVsbHB0ciksIGF0dHJp
YnV0ZXNGb3JTdHJ1Y3R1cmUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKSkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRGb3JDb250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkRm9y
Q29udGV4dC5jcHAKaW5kZXggZTE5NTEwNjllOWYxYmMwOTQ4NGQ0YzQwZjMxMDc0NzIwOTViNzZk
YS4uMDlkYWY4MWVkZDZmNmYzOTFlYTEwMGMyMDM5ZGEzZmQ0NDY0Y2E1ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRGb3JD
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RW5hYmxlZEZvckNvbnRleHQuY3BwCkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBKU1Rl
c3RFbmFibGVkRm9yQ29udGV4dDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogICAgIHN0YXRpY19h
c3NlcnQoIXN0ZDo6aXNfYmFzZV9vZjxBY3RpdmVET01PYmplY3QsIFRlc3RFbmFibGVkRm9yQ29u
dGV4dD46OnZhbHVlLCAiSW50ZXJmYWNlIGlzIG5vdCBtYXJrZWQgYXMgW0FjdGl2ZURPTU9iamVj
dF0gZXZlbiB0aG91Z2ggaW1wbGVtZW50YXRpb24gY2xhc3Mgc3ViY2xhc3NlcyBBY3RpdmVET01P
YmplY3QuIik7CiAKICAgICBpZiAoKGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9i
amVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXR0aW5nc1ZhbHVlcygpLnRlc3RT
ZXR0aW5nRW5hYmxlZCAmJiBUZXN0U3ViT2JqRW5hYmxlZEZvckNvbnRleHQ6OmVuYWJsZWRGb3JD
b250ZXh0KCpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSkpKQotICAgICAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2
bSwgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5h
bWVzKCkuVGVzdFN1Yk9iakVuYWJsZWRGb3JDb250ZXh0UHVibGljTmFtZSgpLCBDdXN0b21HZXR0
ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwganNUZXN0RW5hYmxlZEZvckNvbnRleHRfVGVzdFN1Yk9iakVu
YWJsZWRGb3JDb250ZXh0Q29uc3RydWN0b3IsIG51bGxwdHIpLCBhdHRyaWJ1dGVzRm9yU3RydWN0
dXJlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSkpKTsKKyAgICAgICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIHdlYkNvcmVCdWlsdGlu
TmFtZXModm0pLlRlc3RTdWJPYmpFbmFibGVkRm9yQ29udGV4dFB1YmxpY05hbWUoKSwgQ3VzdG9t
R2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGpzVGVzdEVuYWJsZWRGb3JDb250ZXh0X1Rlc3RTdWJP
YmpFbmFibGVkRm9yQ29udGV4dENvbnN0cnVjdG9yLCBudWxscHRyKSwgYXR0cmlidXRlc0ZvclN0
cnVjdHVyZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pKSk7CiB9CiAKIEpTT2JqZWN0KiBKU1Rlc3RFbmFibGVkRm9yQ29udGV4dDo6Y3JlYXRl
UHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9i
YWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEdsb2JhbE9iamVjdC5jcHAKaW5kZXggOTQyMzQ3MzhlNDAwMjI5NTNjOWU5ODIxOGY2MDNi
Y2Q1M2NiMDkzMS4uNjNiYmU4ZWIyMTg3NTMzMjAyOWE5MTRjMTk1YmYyNjk1YzFmZDIxYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEds
b2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAKQEAgLTY3Nyw0MyArNjc3LDQzIEBAIHZvaWQgSlNU
ZXN0R2xvYmFsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAKICNpZiBFTkFCTEUoVEVT
VF9GRUFUVVJFKQogICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJl
cygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpKQotICAgICAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nv
cih2bSwgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRp
bk5hbWVzKCkuZW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZVB1YmxpY05hbWUoKSwgQ3VzdG9tR2V0
dGVyU2V0dGVyOjpjcmVhdGUodm0sIGpzVGVzdEdsb2JhbE9iamVjdF9lbmFibGVkQXRSdW50aW1l
QXR0cmlidXRlLCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RfZW5hYmxlZEF0UnVudGltZUF0dHJpYnV0
ZSksIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yKSkpOworICAgICAgICBwdXREaXJlY3RDdXN0
b21BY2Nlc3Nvcih2bSwgd2ViQ29yZUJ1aWx0aW5OYW1lcyh2bSkuZW5hYmxlZEF0UnVudGltZUF0
dHJpYnV0ZVB1YmxpY05hbWUoKSwgQ3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGpzVGVz
dEdsb2JhbE9iamVjdF9lbmFibGVkQXRSdW50aW1lQXR0cmlidXRlLCBzZXRKU1Rlc3RHbG9iYWxP
YmplY3RfZW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZSksIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUo
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yKSkpOwogI2VuZGlmCiAgICAgaWYgKGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2Jh
bE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc1NlY3VyZUNvbnRleHQoKSkK
LSAgICAgICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIHN0YXRpY19jYXN0PEpTVk1DbGll
bnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLlRlc3RJbnRlcmZhY2VOYW1l
UHVibGljTmFtZSgpLCBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwganNUZXN0R2xvYmFs
T2JqZWN0X1Rlc3RJbnRlcmZhY2VOYW1lQ29uc3RydWN0b3IsIG51bGxwdHIpLCBhdHRyaWJ1dGVz
Rm9yU3RydWN0dXJlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSkpKTsKLSAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgc3RhdGljX2Nh
c3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkucHVibGlj
QW5kUHJpdmF0ZUF0dHJpYnV0ZVByaXZhdGVOYW1lKCksIEN1c3RvbUdldHRlclNldHRlcjo6Y3Jl
YXRlKHZtLCBqc1Rlc3RHbG9iYWxPYmplY3RfcHVibGljQW5kUHJpdmF0ZUF0dHJpYnV0ZSwgbnVs
bHB0ciksIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSk7CisgICAgICAgIHB1
dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCB3ZWJDb3JlQnVpbHRpbk5hbWVzKHZtKS5UZXN0SW50
ZXJmYWNlTmFtZVB1YmxpY05hbWUoKSwgQ3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGpz
VGVzdEdsb2JhbE9iamVjdF9UZXN0SW50ZXJmYWNlTmFtZUNvbnN0cnVjdG9yLCBudWxscHRyKSwg
YXR0cmlidXRlc0ZvclN0cnVjdHVyZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pKSk7CisgICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0s
IHdlYkNvcmVCdWlsdGluTmFtZXModm0pLnB1YmxpY0FuZFByaXZhdGVBdHRyaWJ1dGVQcml2YXRl
TmFtZSgpLCBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwganNUZXN0R2xvYmFsT2JqZWN0
X3B1YmxpY0FuZFByaXZhdGVBdHRyaWJ1dGUsIG51bGxwdHIpLCBhdHRyaWJ1dGVzRm9yU3RydWN0
dXJlKEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSkpOwogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi0gICAgcHV0RGly
ZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xp
ZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLnB1YmxpY0FuZFByaXZhdGVDb25kaXRpb25hbEF0dHJp
YnV0ZVByaXZhdGVOYW1lKCksIEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBqc1Rlc3RH
bG9iYWxPYmplY3RfcHVibGljQW5kUHJpdmF0ZUNvbmRpdGlvbmFsQXR0cmlidXRlLCBudWxscHRy
KSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVs
ZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpKTsKKyAgICBwdXREaXJlY3RD
dXN0b21BY2Nlc3Nvcih2bSwgd2ViQ29yZUJ1aWx0aW5OYW1lcyh2bSkucHVibGljQW5kUHJpdmF0
ZUNvbmRpdGlvbmFsQXR0cmlidXRlUHJpdmF0ZU5hbWUoKSwgQ3VzdG9tR2V0dGVyU2V0dGVyOjpj
cmVhdGUodm0sIGpzVGVzdEdsb2JhbE9iamVjdF9wdWJsaWNBbmRQcml2YXRlQ29uZGl0aW9uYWxB
dHRyaWJ1dGUsIG51bGxwdHIpLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSkp
OwogI2VuZGlmCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKICAgICBpZiAoUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS50ZXN0RmVhdHVyZUVuYWJsZWQoKSkKLSAgICAg
ICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIHRoaXMsIHN0YXRpY19jYXN0PEpTVk1DbGll
bnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLmVuYWJsZWRBdFJ1bnRpbWVP
cGVyYXRpb25QdWJsaWNOYW1lKCksIDEsIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rp
b25fZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbiwgTm9JbnRyaW5zaWMsIGF0dHJpYnV0ZXNGb3JT
dHJ1Y3R1cmUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1
bmN0aW9uKSkpOworICAgICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgdGhpcywgd2Vi
Q29yZUJ1aWx0aW5OYW1lcyh2bSkuZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvblB1YmxpY05hbWUo
KSwgMSwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbl9lbmFibGVkQXRSdW50aW1l
T3BlcmF0aW9uLCBOb0ludHJpbnNpYywgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pKSk7CiAjZW5kaWYK
ICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQogICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpKQotICAgICAgICBwdXREaXJl
Y3ROYXRpdmVGdW5jdGlvbih2bSwgdGhpcywgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2
bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvblN0
YXRpY1B1YmxpY05hbWUoKSwgMSwganNUZXN0R2xvYmFsT2JqZWN0Q29uc3RydWN0b3JGdW5jdGlv
bl9lbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uU3RhdGljLCBOb0ludHJpbnNpYywgYXR0cmlidXRl
c0ZvclN0cnVjdHVyZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RnVuY3Rpb24pKSk7CisgICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCB0aGlz
LCB3ZWJDb3JlQnVpbHRpbk5hbWVzKHZtKS5lbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uU3RhdGlj
UHVibGljTmFtZSgpLCAxLCBqc1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1Y3RvckZ1bmN0aW9uX2Vu
YWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0aWMsIE5vSW50cmluc2ljLCBhdHRyaWJ1dGVzRm9y
U3RydWN0dXJlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpG
dW5jdGlvbikpKTsKICNlbmRpZgogICAgIGlmICh3b3JsZEZvckRPTU9iamVjdCgqdGhpcykuc3Bl
Y2lmaWNXb3JsZCgpKQotICAgICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgdGhpcywg
c3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVz
KCkuZW5hYmxlZEluU3BlY2lmaWNXb3JsZFB1YmxpY05hbWUoKSwgMSwganNUZXN0R2xvYmFsT2Jq
ZWN0SW5zdGFuY2VGdW5jdGlvbl9lbmFibGVkSW5TcGVjaWZpY1dvcmxkLCBOb0ludHJpbnNpYywg
YXR0cmlidXRlc0ZvclN0cnVjdHVyZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RnVuY3Rpb24pKSk7CisgICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9u
KHZtLCB0aGlzLCB3ZWJDb3JlQnVpbHRpbk5hbWVzKHZtKS5lbmFibGVkSW5TcGVjaWZpY1dvcmxk
UHVibGljTmFtZSgpLCAxLCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uX2VuYWJs
ZWRJblNwZWNpZmljV29ybGQsIE5vSW50cmluc2ljLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbikpKTsK
ICAgICBpZiAoKHdvcmxkRm9yRE9NT2JqZWN0KCp0aGlzKS5zcGVjaWZpY1dvcmxkKCkgJiYgUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS50ZXN0RmVhdHVyZUVuYWJsZWQo
KSkpCi0gICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCBzdGF0aWNfY2Fz
dDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKS5lbmFibGVk
SW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlRW5hYmxlZFB1YmxpY05hbWUoKSwgMSwg
anNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbl9lbmFibGVkSW5TcGVjaWZpY1dvcmxk
V2hlblJ1bnRpbWVGZWF0dXJlRW5hYmxlZCwgTm9JbnRyaW5zaWMsIGF0dHJpYnV0ZXNGb3JTdHJ1
Y3R1cmUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0
aW9uKSkpOworICAgICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgdGhpcywgd2ViQ29y
ZUJ1aWx0aW5OYW1lcyh2bSkuZW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVy
ZUVuYWJsZWRQdWJsaWNOYW1lKCksIDEsIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rp
b25fZW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZUVuYWJsZWQsIE5vSW50
cmluc2ljLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbikpKTsKICAgICBpZiAoKHdvcmxkRm9yRE9NT2Jq
ZWN0KCp0aGlzKS5zcGVjaWZpY1dvcmxkKCkgJiYgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hh
cmVkRmVhdHVyZXMoKS50ZXN0RmVhdHVyZUVuYWJsZWQoKSAmJiBSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlMUVuYWJsZWQoKSkpCi0gICAgICAgIHB1
dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0
YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKS5lbmFibGVkSW5TcGVjaWZpY1dvcmxk
V2hlblJ1bnRpbWVGZWF0dXJlc0VuYWJsZWRQdWJsaWNOYW1lKCksIDEsIGpzVGVzdEdsb2JhbE9i
amVjdEluc3RhbmNlRnVuY3Rpb25fZW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVh
dHVyZXNFbmFibGVkLCBOb0ludHJpbnNpYywgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pKSk7CisgICAg
ICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCB3ZWJDb3JlQnVpbHRpbk5hbWVz
KHZtKS5lbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlc0VuYWJsZWRQdWJs
aWNOYW1lKCksIDEsIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25fZW5hYmxlZElu
U3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZXNFbmFibGVkLCBOb0ludHJpbnNpYywgYXR0
cmlidXRlc0ZvclN0cnVjdHVyZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RnVuY3Rpb24pKSk7CiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKICAgICBpZiAo
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS50ZXN0RmVhdHVyZUVuYWJs
ZWQoKSkKLSAgICAgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIHRoaXMsIHN0YXRpY19j
YXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLnRlc3RQ
cml2YXRlRnVuY3Rpb25Qcml2YXRlTmFtZSgpLCAwLCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5j
ZUZ1bmN0aW9uX3Rlc3RQcml2YXRlRnVuY3Rpb24sIE5vSW50cmluc2ljLCBhdHRyaWJ1dGVzRm9y
U3RydWN0dXJlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpG
dW5jdGlvbikpKTsKKyAgICAgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIHRoaXMsIHdl
YkNvcmVCdWlsdGluTmFtZXModm0pLnRlc3RQcml2YXRlRnVuY3Rpb25Qcml2YXRlTmFtZSgpLCAw
LCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uX3Rlc3RQcml2YXRlRnVuY3Rpb24s
IE5vSW50cmluc2ljLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbikpKTsKICNlbmRpZgogI2lmIEVOQUJM
RShURVNUX0ZFQVRVUkUpCiAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZl
YXR1cmVzKCkudGVzdEZlYXR1cmVFbmFibGVkKCkpCi0gICAgICAgIHB1dERpcmVjdEJ1aWx0aW5G
dW5jdGlvbih2bSwgdGhpcywgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnRE
YXRhKS0+YnVpbHRpbk5hbWVzKCkudGVzdEpTQnVpbHRpbkZ1bmN0aW9uUHVibGljTmFtZSgpLCB0
ZXN0R2xvYmFsT2JqZWN0VGVzdEpTQnVpbHRpbkZ1bmN0aW9uQ29kZUdlbmVyYXRvcih2bSksIGF0
dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkJ1aWx0aW4pKSk7CisgICAgICAgIHB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbih2
bSwgdGhpcywgd2ViQ29yZUJ1aWx0aW5OYW1lcyh2bSkudGVzdEpTQnVpbHRpbkZ1bmN0aW9uUHVi
bGljTmFtZSgpLCB0ZXN0R2xvYmFsT2JqZWN0VGVzdEpTQnVpbHRpbkZ1bmN0aW9uQ29kZUdlbmVy
YXRvcih2bSksIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkJ1aWx0aW4pKSk7CiAjZW5kaWYKICAgICBpZiAoanNDYXN0
PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCktPmlzU2VjdXJlQ29udGV4dCgpKQotICAgICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlv
bih2bSwgdGhpcywgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+
YnVpbHRpbk5hbWVzKCkuY2FsY3VsYXRlU2VjcmV0UmVzdWx0UHVibGljTmFtZSgpLCAwLCBqc1Rl
c3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uX2NhbGN1bGF0ZVNlY3JldFJlc3VsdCwgTm9J
bnRyaW5zaWMsIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSkpOworICAgICAgICBwdXREaXJlY3ROYXRp
dmVGdW5jdGlvbih2bSwgdGhpcywgd2ViQ29yZUJ1aWx0aW5OYW1lcyh2bSkuY2FsY3VsYXRlU2Vj
cmV0UmVzdWx0UHVibGljTmFtZSgpLCAwLCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0
aW9uX2NhbGN1bGF0ZVNlY3JldFJlc3VsdCwgTm9JbnRyaW5zaWMsIGF0dHJpYnV0ZXNGb3JTdHJ1
Y3R1cmUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0
aW9uKSkpOwogICAgIGlmIChqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3Qo
KSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNTZWN1cmVDb250ZXh0KCkpCi0gICAgICAg
IHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50
RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKS5nZXRTZWNyZXRCb29sZWFuUHVi
bGljTmFtZSgpLCAwLCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uX2dldFNlY3Jl
dEJvb2xlYW4sIE5vSW50cmluc2ljLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbikpKTsKKyAgICAgICAg
cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIHRoaXMsIHdlYkNvcmVCdWlsdGluTmFtZXModm0p
LmdldFNlY3JldEJvb2xlYW5QdWJsaWNOYW1lKCksIDAsIGpzVGVzdEdsb2JhbE9iamVjdEluc3Rh
bmNlRnVuY3Rpb25fZ2V0U2VjcmV0Qm9vbGVhbiwgTm9JbnRyaW5zaWMsIGF0dHJpYnV0ZXNGb3JT
dHJ1Y3R1cmUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1
bmN0aW9uKSkpOwogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCiAgICAgaWYgKChqc0Nhc3Q8SlNE
T01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KS0+aXNTZWN1cmVDb250ZXh0KCkgJiYgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVh
dHVyZXMoKS50ZXN0RmVhdHVyZUVuYWJsZWQoKSkpCi0gICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1
bmN0aW9uKHZtLCB0aGlzLCBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERh
dGEpLT5idWlsdGluTmFtZXMoKS50ZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW5QdWJsaWNOYW1l
KCksIDAsIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25fdGVzdEZlYXR1cmVHZXRT
ZWNyZXRCb29sZWFuLCBOb0ludHJpbnNpYywgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pKSk7CisgICAg
ICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCB3ZWJDb3JlQnVpbHRpbk5hbWVz
KHZtKS50ZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW5QdWJsaWNOYW1lKCksIDAsIGpzVGVzdEds
b2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25fdGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuLCBO
b0ludHJpbnNpYywgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pKSk7CiAjZW5kaWYKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNw
cAppbmRleCBjMjFlZjFhZDQ2YWRhN2ZkNjIzYzA0Mjk2MTIzYzU1Yzg2ZDAwNDZlLi42ZWIzNGYy
ODhkZmFhNmQ4M2EwMzQxYzM2ODBjNmM5YTgzNTIwOWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApAQCAtMjUyOCw4
ICsyNTI4LDggQEAgdm9pZCBKU1Rlc3RPYmpQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSkKICAgICB9CiAgICAgaWYgKGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgJiYgc3RydWN0
dXJlKCktPmlzRGljdGlvbmFyeSgpKQogICAgICAgICBmbGF0dGVuRGljdGlvbmFyeU9iamVjdCh2
bSk7Ci0gICAgcHV0RGlyZWN0KHZtLCBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNs
aWVudERhdGEpLT5idWlsdGluTmFtZXMoKS5wcml2YXRlTWV0aG9kUHJpdmF0ZU5hbWUoKSwgSlNG
dW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QoKSwgMCwgU3RyaW5nKCksIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uX3ByaXZhdGVNZXRob2QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKLSAgICBwdXRE
aXJlY3Qodm0sIHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1
aWx0aW5OYW1lcygpLnB1YmxpY0FuZFByaXZhdGVNZXRob2RQcml2YXRlTmFtZSgpLCBKU0Z1bmN0
aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCgpLCAwLCBTdHJpbmcoKSwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25fcHVibGljQW5kUHJpdmF0ZU1ldGhvZCksIEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworICAg
IHB1dERpcmVjdCh2bSwgd2ViQ29yZUJ1aWx0aW5OYW1lcyh2bSkucHJpdmF0ZU1ldGhvZFByaXZh
dGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0KCksIDAsIFN0cmlu
ZygpLCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9wcml2YXRlTWV0aG9kKSwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSk7CisgICAgcHV0RGlyZWN0KHZtLCB3ZWJDb3JlQnVpbHRpbk5hbWVzKHZtKS5wdWJsaWNBbmRQ
cml2YXRlTWV0aG9kUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QoKSwgMCwgU3RyaW5nKCksIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3B1YmxpY0Fu
ZFByaXZhdGVNZXRob2QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBnbG9iYWxPYmplY3QoKS0+YXJyYXlQcm90b3R5cGUo
KS0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS52YWx1ZXNQ
cml2YXRlTmFtZSgpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSk7CiAgICAgYWRkVmFsdWVJdGVyYWJsZU1ldGhvZHMoKmdsb2JhbE9iamVj
dCgpLCAqdGhpcyk7CiAgICAgSlNPYmplY3QmIHVuc2NvcGFibGVzID0gKmNvbnN0cnVjdEVtcHR5
T2JqZWN0KGdsb2JhbE9iamVjdCgpLT52bSgpLCBnbG9iYWxPYmplY3QoKS0+bnVsbFByb3RvdHlw
ZU9iamVjdFN0cnVjdHVyZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwCmluZGV4IDg0NmRlYmMxNWM4M2VkMTgxZDkzNGJlMDBhZTUyYzVmMDViZWY3NGIuLmI2YzYy
NmRkMjA5YjBjM2I3MzUzZWEyMGM5Yzg2YjZmM2IxODUwMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMTE4LDYgKzExOCw3IEBACiAjaW5jbHVkZSAiVmlk
ZW9UcmFjay5oIgogI2luY2x1ZGUgIlZpZGVvVHJhY2tMaXN0LmgiCiAjaW5jbHVkZSAiVmlkZW9U
cmFja1ByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvU2NyaXB0T2JqZWN0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvVWludDhBcnJheS5oPgogI2luY2x1ZGUgPGxpbWl0cz4KQEAgLTQ2MDgsNyArNDYwOSw3IEBA
IHN0YXRpYyBKU0M6OkpTVmFsdWUgY29udHJvbGxlckpTVmFsdWUoSlNDOjpKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwKICAgICBpZiAoIWNvbnRyb2xzSG9zdEpTV3JhcHBlck9i
amVjdCkKICAgICAgICAgcmV0dXJuIEpTQzo6anNOdWxsKCk7CiAKLSAgICBKU0M6OklkZW50aWZp
ZXIgY29udHJvbGxlcklEID0gSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY29udHJv
bGxlciJfcyk7CisgICAgSlNDOjpJZGVudGlmaWVyIGNvbnRyb2xsZXJJRCA9IHdlYkNvcmVCdWls
dGluTmFtZXModm0pLmNvbnRyb2xsZXJQdWJsaWNOYW1lKCk7CiAgICAgSlNDOjpKU1ZhbHVlIGNv
bnRyb2xsZXJKU1dyYXBwZXIgPSBjb250cm9sc0hvc3RKU1dyYXBwZXJPYmplY3QtPmdldCgmbGV4
aWNhbEdsb2JhbE9iamVjdCwgY29udHJvbGxlcklEKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBKU0M6OmpzTnVsbCgpKTsKIApAQCAtNzc1OCw3ICs3NzU5LDcgQEAgdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3QmIHJvb3Qp
CiAgICAgICAgIGlmICghbWVkaWFDb250cm9sc0hvc3RKU1dyYXBwZXJPYmplY3QpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgYXV0byBjb250cm9sbGVyID0gSlNDOjpJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY29udHJvbGxlciJfcyk7CisgICAgICAgIGF1dG8gY29u
dHJvbGxlciA9IHdlYkNvcmVCdWlsdGluTmFtZXModm0pLmNvbnRyb2xsZXJQdWJsaWNOYW1lKCk7
CiAKICAgICAgICAgQVNTRVJUKCFjb250cm9sbGVyT2JqZWN0LT5oYXNQcm9wZXJ0eSgmbGV4aWNh
bEdsb2JhbE9iamVjdCwgY29udHJvbGxlcikpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAKaW5kZXggN2Y2ZDM3YmExZmI2MTEzMjU5N2RjZWI5NmIwZDAzMTQ3MjQ0NmQwMy4uZjIz
ZmMwNTU4MWZiMDQxNDM5YTcwMjU3YzBkZWIwMmU3ZTcxOTJiMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcApAQCAtNTA2Nyw5ICs1MDY3LDggQEAgYm9vbCBJbnRlcm5hbHM6Omlz
UmVhZGFibGVTdHJlYW1EaXN0dXJiZWQoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamUKIAogSlNWYWx1ZSBJbnRlcm5hbHM6OmNsb25lQXJyYXlCdWZmZXIoSlNDOjpKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1ZSBidWZmZXIsIEpTVmFsdWUgc3Jj
Qnl0ZU9mZnNldCwgSlNWYWx1ZSBzcmNMZW5ndGgpCiB7Ci0gICAgSlNDOjpWTSYgdm0gPSBsZXhp
Y2FsR2xvYmFsT2JqZWN0LnZtKCk7Ci0gICAgSlNWTUNsaWVudERhdGEqIGNsaWVudERhdGEgPSBz
dGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOwotICAgIGNvbnN0IElk
ZW50aWZpZXImIHByaXZhdGVOYW1lID0gY2xpZW50RGF0YS0+YnVpbHRpbk5hbWVzKCkuY2xvbmVB
cnJheUJ1ZmZlclByaXZhdGVOYW1lKCk7CisgICAgYXV0byYgdm0gPSBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LnZtKCk7CisgICAgY29uc3QgSWRlbnRpZmllciYgcHJpdmF0ZU5hbWUgPSB3ZWJDb3JlQnVp
bHRpbk5hbWVzKHZtKS5jbG9uZUFycmF5QnVmZmVyUHJpdmF0ZU5hbWUoKTsKICAgICBKU1ZhbHVl
IHZhbHVlOwogICAgIFByb3BlcnR5U2xvdCBwcm9wZXJ0eVNsb3QodmFsdWUsIFByb3BlcnR5U2xv
dDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQpOwogICAgIGxleGljYWxHbG9iYWxPYmplY3QubWV0
aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eVNsb3QoJmxleGljYWxHbG9iYWxPYmplY3QsICZs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBwcml2YXRlTmFtZSwgcHJvcGVydHlTbG90KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRy
b2xsZXIuY3BwCmluZGV4IDE1YjA5MTFhOWE2YmMxMWU4NDMyMWJhZTM0NjhhYzNiZGMxNDlmZTEu
LjNhNWJhYzllYzBiZGQzNGE5ZjJlOTAwZmU1OWVjMjUyMzViYjM2OGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9s
bGVyLmNwcApAQCAtMzA1LDcgKzMwNSw3IEBAIGJvb2wgV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29u
dHJvbGxlcjo6bG9hZE1vZHVsZVN5bmNocm9ub3VzbHkoV29ya2VyU2NyaXB0RmV0Y2hlCiAgICAg
ICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAgICAgICAgICAg
ICBpZiAoZXJyb3JWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAgICAgICAgICAgYXV0byogb2Jq
ZWN0ID0gSlNDOjphc09iamVjdChlcnJvclZhbHVlKTsKLSAgICAgICAgICAgICAgICBpZiAoSlNW
YWx1ZSBmYWlsdXJlS2luZFZhbHVlID0gb2JqZWN0LT5nZXREaXJlY3Qodm0sIHN0YXRpY19jYXN0
PEpTVk1DbGllbnREYXRhJj4oKnZtLmNsaWVudERhdGEpLmJ1aWx0aW5OYW1lcygpLmZhaWx1cmVL
aW5kUHJpdmF0ZU5hbWUoKSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoSlNWYWx1ZSBmYWlsdXJl
S2luZFZhbHVlID0gb2JqZWN0LT5nZXREaXJlY3Qodm0sIHdlYkNvcmVCdWlsdGluTmFtZXModm0p
LmZhaWx1cmVLaW5kUHJpdmF0ZU5hbWUoKSkpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gVGhp
cyBpcyBob3N0IHByb3BhZ2F0ZWQgZXJyb3IgaW4gdGhlIG1vZHVsZSBsb2FkZXIgcGlwZWxpbmUu
CiAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoc3RhdGljX2Nhc3Q8TW9kdWxlRmV0Y2hGYWls
dXJlS2luZD4oZmFpbHVyZUtpbmRWYWx1ZS5hc0ludDMyKCkpKSB7CiAgICAgICAgICAgICAgICAg
ICAgIGNhc2UgTW9kdWxlRmV0Y2hGYWlsdXJlS2luZDo6V2FzUHJvcGFnYXRlZEVycm9yOgpAQCAt
NDgwLDcgKzQ4MCw3IEBAIHZvaWQgV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6bG9h
ZEFuZEV2YWx1YXRlTW9kdWxlKGNvbnN0IFVSTCYgbW9kdWxlVVJMCiAgICAgICAgICAgICBKU1Zh
bHVlIGVycm9yVmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgICAgICAgICAgaWYg
KGVycm9yVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICAgICAgICAgIGF1dG8qIG9iamVjdCA9
IEpTQzo6YXNPYmplY3QoZXJyb3JWYWx1ZSk7Ci0gICAgICAgICAgICAgICAgaWYgKEpTVmFsdWUg
ZmFpbHVyZUtpbmRWYWx1ZSA9IG9iamVjdC0+Z2V0RGlyZWN0KHZtLCBzdGF0aWNfY2FzdDxKU1ZN
Q2xpZW50RGF0YSY+KCp2bS5jbGllbnREYXRhKS5idWlsdGluTmFtZXMoKS5mYWlsdXJlS2luZFBy
aXZhdGVOYW1lKCkpKSB7CisgICAgICAgICAgICAgICAgaWYgKEpTVmFsdWUgZmFpbHVyZUtpbmRW
YWx1ZSA9IG9iamVjdC0+Z2V0RGlyZWN0KHZtLCB3ZWJDb3JlQnVpbHRpbk5hbWVzKHZtKS5mYWls
dXJlS2luZFByaXZhdGVOYW1lKCkpKSB7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8gY2F0Y2hT
Y29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogICAgICAgICAgICAgICAgICAgICBTdHJp
bmcgbWVzc2FnZSA9IHJldHJpZXZlRXJyb3JNZXNzYWdlV2l0aG91dE5hbWUoKmdsb2JhbE9iamVj
dCwgdm0sIG9iamVjdCwgY2F0Y2hTY29wZSk7CiAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAo
c3RhdGljX2Nhc3Q8TW9kdWxlRmV0Y2hGYWlsdXJlS2luZD4oZmFpbHVyZUtpbmRWYWx1ZS5hc0lu
dDMyKCkpKSB7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>