<?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>231351</bug_id>
          
          <creation_ts>2021-10-06 22:09:08 -0700</creation_ts>
          <short_desc>Streamline and make call to objective-C methods more consistent across call sites.</short_desc>
          <delta_ts>2021-10-07 04:55:21 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <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="Jean-Yves Avenard [:jya]">jean-yves.avenard</reporter>
          <assigned_to name="Jean-Yves Avenard [:jya]">jean-yves.avenard</assigned_to>
          <cc>changseok</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mifenton</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>thorton</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1801500</commentid>
    <comment_count>0</comment_count>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-10-06 22:09:08 -0700</bug_when>
    <thetext>Streamline and make call to objective-C methods more consistent across call sites.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801501</commentid>
    <comment_count>1</comment_count>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-10-06 22:24:22 -0700</bug_when>
    <thetext>The majority of the changes are in Source/WebCore/platform so use that component.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801502</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-06 22:24:33 -0700</bug_when>
    <thetext>&lt;rdar://problem/83966853&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801505</commentid>
    <comment_count>3</comment_count>
      <attachid>440469</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-10-06 22:35:33 -0700</bug_when>
    <thetext>Created attachment 440469
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801514</commentid>
    <comment_count>4</comment_count>
      <attachid>440474</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-10-06 23:37:50 -0700</bug_when>
    <thetext>Created attachment 440474
Patch

Fix missed NeverDestroyed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801566</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-07 04:55:18 -0700</bug_when>
    <thetext>Committed r283706 (242632@main): &lt;https://commits.webkit.org/242632@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 440474.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440469</attachid>
            <date>2021-10-06 22:35:33 -0700</date>
            <delta_ts>2021-10-06 23:37:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231351-20211007163531.patch</filename>
            <type>text/plain</type>
            <size>114429</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzNTk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTA0N2I4NmJlOWE5OGE5
MmJhZTA2MDk5YzUxMDE1OGQ4N2QyNWQ3OS4uNzM4MTA3MjI3MzRiYWUwOTFiM2FlNDA2ODEzMDIx
OTc5YmNlOGVhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5MCBAQAorMjAyMS0xMC0wNiAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIFN0cmVhbWxpbmUgYW5k
IG1ha2UgY2FsbCB0byBvYmplY3RpdmUtQyBtZXRob2RzIG1vcmUgY29uc2lzdGVudCBhY3Jvc3Mg
Y2FsbCBzaXRlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzMTM1MQorICAgICAgICByZGFyOi8vcHJvYmxlbS84Mzk2Njg1MworCisgICAgICAgIFNp
bmNlIGJ1ZyA5NzQwMywgUmV0YWluUHRyPFQqPiBoYXMgYSBUKiBjb252ZXJzaW9uIG9wZXJhdG9y
OyB0aGUgY2FsbCB0bworICAgICAgICBSZXRhaW5QdHI6OmdldCgpIGlzIG5vdyByZWR1bmRhbnQg
dW5kZXIgc29tZSBjaXJjdW1zdGFuY2VzLgorICAgICAgICBNYWtlIHRoZSB1c2Ugb2YgUmV0YWlu
UHRyPFQqPiBpbiBvYmplY3RpdmUtQyBjYWxsIG1vcmUgY29uc2lzdGVudCBieSB1c2luZyB0aGUg
cGF0dGVybjoKKyAgICAgICAgUmV0YWluUHRyPFQqPiBmb287CisgICAgICAgIFtmb28gbWV0aG9k
T2ZUXTsKKyAgICAgICAgU291cmNlLXdpZGUgcmVwbGFjZW1lbnQgb2YgIlxbKFtfYS16QS1aXSsp
XC5nZXRcKFwpICIgYnkgIlxbKFtfYS16QS1aXSspXCAiLAorICAgICAgICB0aGVuIG1hbnVhbGx5
IGZpeGluZyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8VCo+PiBjYXNlcyB3aGljaCBkbyBub3Qg
eWV0IGFsbG93CisgICAgICAgIGZvciB0aGF0LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE5vIGNoYW5nZSBpbiBvYnNlcnZhYmxlIGJlaGF2aW91ci4K
KworICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXJNYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjp1cGRhdGVQbGF0Zm9ybVNjcmlwdE9iamVjdHMp
OgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW06CisgICAgICAgIChKU0M6
OkJpbmRpbmdzOjpPYmpjSW5zdGFuY2U6On5PYmpjSW5zdGFuY2UpOgorICAgICAgICAoSlNDOjpC
aW5kaW5nczo6T2JqY0luc3RhbmNlOjpzdXBwb3J0c0ludm9rZURlZmF1bHRNZXRob2QgY29uc3Qp
OgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6T2JqY0luc3RhbmNlOjppbnZva2VEZWZhdWx0TWV0
aG9kKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNJbnN0YW5jZTo6ZGVmYXVsdFZhbHVl
IGNvbnN0KToKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW06CisgICAgICAg
IChKU0M6OkJpbmRpbmdzOjpPYmpjQXJyYXk6OnNldFZhbHVlQXQgY29uc3QpOgorICAgICAgICAo
SlNDOjpCaW5kaW5nczo6T2JqY0FycmF5Ojp2YWx1ZUF0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6
QmluZGluZ3M6Ok9iamNBcnJheTo6Z2V0TGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKiBlZGl0aW5n
L2NvY29hL0RhdGFEZXRlY3Rpb24ubW06CisgICAgICAgIChXZWJDb3JlOjpyZXN1bHRJc1VSTCk6
CisgICAgICAgICogcGFnZS9jb2NvYS9SZXNvdXJjZVVzYWdlT3ZlcmxheUNvY29hLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VVc2FnZU92ZXJsYXk6OnBsYXRmb3JtSW5pdGlhbGl6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVVzYWdlT3ZlcmxheTo6cGxhdGZvcm1EcmF3KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjphZGRE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjpm
aW5pc2hlZEFkZGluZ0RhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2Ft
ZUNvbnRyb2xsZXJHYW1lcGFkLm1tOgorICAgICAgICAoV2ViQ29yZTo6R2FtZUNvbnRyb2xsZXJH
YW1lcGFkOjpzZXR1cEFzRXh0ZW5kZWRHYW1lcGFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVk91dHB1dERldmljZU1lbnVDb250cm9sbGVyVGFyZ2V0
UGlja2VyLm1tOgorICAgICAgICAoV2ViQ29yZTo6QVZPdXRwdXREZXZpY2VNZW51Q29udHJvbGxl
clRhcmdldFBpY2tlcjo6ZGV2aWNlUGlja2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkFWT3V0cHV0
RGV2aWNlTWVudUNvbnRyb2xsZXJUYXJnZXRQaWNrZXI6Om91dHB1dENvbnRleHQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5k
YXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9i
akM6OmdlbmVyYXRlS2V5UmVxdWVzdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMubW06CisgICAgICAg
IChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQzo6bGFiZWwgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakM6Omxhbmd1YWdl
IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6fk1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6Y2FuY2VsTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVJbWFnZUdlbmVyYXRvcik6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzeW5jaHJvbml6
ZVRleHRUcmFja1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWQXNzZXRGb3JVUkwpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZQbGF5ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRl
QVZQbGF5ZXJJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OmNoZWNrUGxheWFiaWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6YmVnaW5Mb2FkaW5nTWV0YWRhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6YWNjZXNz
TG9nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OmVycm9yTG9nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBsYXRmb3JtU2V0VmlzaWJsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwbGF0Zm9ybUR1cmF0
aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OmN1cnJlbnRNZWRpYVRpbWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2Vla1RvVGltZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRWb2x1bWUpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0
TXV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6YXNzZXRTdGF0dXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlSW1hZ2VGb3JUaW1lSW5SZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZVZp
ZGVvTGF5ZXJHcmF2aXR5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OmNyZWF0ZVZpZGVvT3V0cHV0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmRlc3Ryb3lWaWRlb091dHB1dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRh
dGVMYXN0UGl4ZWxCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6Zmlyc3RFbmFibGVkVHJhY2sgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6aGFzTG9hZGVkTWVkaWFT
ZWxlY3Rpb25Hcm91cHMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6c2FmZU1lZGlhU2VsZWN0aW9uR3JvdXBGb3JMZWdpYmxlTWVkaWEpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2Fm
ZU1lZGlhU2VsZWN0aW9uR3JvdXBGb3JBdWRpYmxlTWVkaWEpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2FmZU1lZGlhU2VsZWN0aW9uR3Jv
dXBGb3JWaXN1YWxNZWRpYSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjpwcm9jZXNzTWVkaWFTZWxlY3Rpb25PcHRpb25zKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldEN1cnJlbnRU
ZXh0VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6bGFuZ3VhZ2VPZlByaW1hcnlBdWRpb1RyYWNrIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OndpcmVsZXNzVmlkZW9Q
bGF5YmFja0Rpc2FibGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNl
dFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Om1ldGFkYXRhRGlkQXJyaXZlKToKKyAgICAgICAg
KC1bV2ViQ29yZUFWRk1vdmllT2JzZXJ2ZXIgb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDpvZk9iamVj
dDpjaGFuZ2U6Y29udGV4dDpdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgIChXZWJDb3Jl
OjpXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TG9hZGluZyk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpsb2FkRmFpbGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bG9hZEZpbmlzaGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3RGF0YVN0b3JlZElu
U2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9UZXh0VHJh
Y2tSZXByZXNlbnRhdGlvbkNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrUmVw
cmVzZW50YXRpb25Db2NvYTo6VGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYSk6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hOjp+VGV4dFRyYWNrUmVwcmVz
ZW50YXRpb25Db2NvYSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tSZXByZXNlbnRhdGlv
bkNvY29hOjp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrUmVwcmVzZW50YXRp
b25Db2NvYTo6c2V0Q29udGVudFNjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja1Jl
cHJlc2VudGF0aW9uQ29jb2E6OnNldEhpZGRlbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hOjpib3VuZHMgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2lvcy9EcmFnSW1hZ2VJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpzY2FsZURyYWdJ
bWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdlRm9yUmFuZ2UpOgorICAgICAgICAqIHBsYXRm
b3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW06CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lUaWxl
Q2FjaGU6On5MZWdhY3lUaWxlQ2FjaGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9MZWdhY3lU
aWxlTGF5ZXJQb29sLm1tOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5VGlsZUxheWVyUG9vbDo6
YWRkTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1Mu
bW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVySU9T
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6cGF1c2Up
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6cmVzdW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OnNwZWFrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OmNhbmNlbCk6CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpyZXNldFN0YXRlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW06Cisg
ICAgICAgICgtW1dlYkFWUGxheWVyTGF5ZXIgc2V0VmlkZW9HcmF2aXR5Ol0pOgorICAgICAgICAo
LVtXZWJBVlBsYXllclZpZXdDb250cm9sbGVyIGVudGVyRnVsbFNjcmVlbkFuaW1hdGVkOmNvbXBs
ZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXZWJBVlBsYXllclZpZXdDb250cm9sbGVyIGV4
aXRGdWxsU2NyZWVuQW5pbWF0ZWQ6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dl
YkFWUGxheWVyVmlld0NvbnRyb2xsZXIgTVlfTk9fUkVUVVJOXSk6CisgICAgICAgICgtW1dlYkFW
UGxheWVyVmlld0NvbnRyb2xsZXIgcmVtb3ZlRnJvbVBhcmVudFZpZXdDb250cm9sbGVyXSk6Cisg
ICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6Z2V0VHlwZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtUGFzdGVib2FyZDo6Z2V0UGF0aG5hbWVzRm9yVHlwZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmNoYW5nZUNvdW50IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6Y29weSk6CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmFkZFR5cGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtUGFzdGVib2FyZDo6c2V0VVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVi
b2FyZDo6c2V0U3RyaW5nRm9yVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpemVyOjp+UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcik6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpwYXVzZSk6CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpyZXN1bWUpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6c3BlYWspOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplcjo6Y2FuY2VsKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtU3BlZWNoU3ludGhlc2l6ZXI6OnJlc2V0U3RhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9TZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Vy
aWFsaXplZFBsYXRmb3JtRGF0YUN1ZU1hYzo6aXNFcXVhbCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjOjplbmNvZGFibGVWYWx1ZSBjb25zdCk6
CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3
Lm1tOgorICAgICAgICAoLVtXZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldyBpbml0V2l0
aEZyYW1lOl0pOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJDb3JlRnVsbFNjcmVlbldhcm5p
bmdWaWV3Lm1tOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzdGFydEFzc2V0V3JpdGVyKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmRDb21wcmVzc2VkQXVkaW9TYW1w
bGVCdWZmZXJJZlBvc3NpYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyOjphcHBlbmRDb21wcmVzc2VkVmlkZW9TYW1wbGVCdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmZsdXNoQ29tcHJlc3NlZFNhbXBs
ZUJ1ZmZlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVE
ZXZpY2VNYW5hZ2VyLm1tOgorICAgICAgICAoV2ViQ29yZTo6QVZDYXB0dXJlRGV2aWNlTWFuYWdl
cjo6dXBkYXRlQ2FjaGVkQVZDYXB0dXJlRGV2aWNlcyk6CisgICAgICAgICogcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tOgorICAgICAgICAoV2ViQ29yZTo6
QVZWaWRlb0NhcHR1cmVTb3VyY2U6OkFWVmlkZW9DYXB0dXJlU291cmNlKToKKyAgICAgICAgKC1b
V2ViQ29yZUFWVmlkZW9DYXB0dXJlU291cmNlT2JzZXJ2ZXIgb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0
aDpvZk9iamVjdDpjaGFuZ2U6Y29udGV4dDpdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0Ojpkb1VwZGF0ZVJlc291cmNlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUmVzb3VyY2VIVFRQQm9keSk6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybUhUVFBCb2R5KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVzcG9uc2VDb2NvYS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OmluaXROU1VSTFJlc3BvbnNlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtTGF6eUlu
aXQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL0F1dGhlbnRpY2F0aW9uTWFjLm1t
OgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OnNldEF1dGhlbnRp
Y2F0aW9uQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
OjphdXRoZW50aWNhdGlvbkNsaWVudCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZU5TRXJy
b3JGcm9tUmVzb3VyY2VFcnJvckJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJv
cjo6bWFwUGxhdGZvcm1FcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpw
bGF0Zm9ybUxhenlJbml0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3Jl
UmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW06CisgICAgICAgICgtW1dl
YkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZSBjb25uZWN0aW9uOndp
bGxTZW5kUmVxdWVzdDpyZWRpcmVjdFJlc3BvbnNlOl0pOgorICAgICAgICAqIHBsYXRmb3JtL3Rl
eHQvY29jb2EvTG9jYWxlQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGVDb2NvYTo6
TG9jYWxlQ29jb2EpOgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxlQ29jb2E6OnRpbWVBTVBNTGFi
ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsZUNvY29hOjppbml0aWFsaXplTG9jYWxlRGF0
YSk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9jb2NvYS9Mb2NhbGl6ZWREYXRlQ2FjaGUubW06
CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGl6ZWREYXRlQ2FjaGU6OmNhbGN1bGF0ZU1heGltdW1X
aWR0aCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lQ29jb2EubW06CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUaGVtZUNvY29hOjptZWRpYUNvbnRyb2xzRm9ybWF0dGVkU3RyaW5n
Rm9yRHVyYXRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludFN5c3RlbVByZXZpZXdCYWRnZSk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWVNYWM6OnBvcHVwQnV0dG9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lTWFjOjpzZWFyY2ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVNYWM6OnNsaWRlclRodW1iSG9yaXpvbnRhbCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZU1hYzo6c2xpZGVyVGh1bWJWZXJ0aWNhbCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6dGV4dEZpZWxkIGNvbnN0KToKKwogMjAyMS0wOS0yOCAg
SmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgogCiAgICAgICAgIEhhdmUgU291cmNl
QnVmZmVyUHJpdmF0ZUFWSk9iakMgdXNlIFdvcmtRdWV1ZSBpbnN0ZWFkIG9mIGRpc3BhdGNoX2Fz
eW5jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9s
bGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlck1h
Yy5tbQppbmRleCA5ODUzZDBhNjRmOTIzNzEwM2JkZDdiZGMyYTNmMmI3NDMxN2EyNjRiLi42ZjJj
MDliMjRhOWYxNzBiMTU1ZDhmMTgyYTYyYjBiYTIzMjg4MDY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXJNYWMubW0KQEAgLTEyNSw3ICsxMjUs
NyBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OnVwZGF0ZVBsYXRmb3JtU2NyaXB0T2JqZWN0cygp
CiB7CiAgICAgaWYgKG1fd2luZG93U2NyaXB0T2JqZWN0KSB7CiAgICAgICAgIEpTQzo6QmluZGlu
Z3M6OlJvb3RPYmplY3QqIHJvb3QgPSBiaW5kaW5nUm9vdE9iamVjdCgpOwotICAgICAgICBbbV93
aW5kb3dTY3JpcHRPYmplY3QuZ2V0KCkgX3NldE9yaWdpblJvb3RPYmplY3Q6cm9vdCBhbmRSb290
T2JqZWN0OnJvb3RdOworICAgICAgICBbbV93aW5kb3dTY3JpcHRPYmplY3QgX3NldE9yaWdpblJv
b3RPYmplY3Q6cm9vdCBhbmRSb290T2JqZWN0OnJvb3RdOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0KaW5kZXggMzg0ODMwNTM4MTlkNDRh
MWIwOTRjNWZlMDI2YjlmNDUwZjljOTA0Zi4uN2U5ZTA3OWZjYzQyMDUwYzEyMzUwNmRlNGJhYWY5
MzZmMTkyZTk0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19p
bnN0YW5jZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNl
Lm1tCkBAIC0xMzIsOCArMTMyLDggQEAgT2JqY0luc3RhbmNlOjp+T2JqY0luc3RhbmNlKCkKICAg
ICAgICAgQVNTRVJUKF9pbnN0YW5jZSk7CiAgICAgICAgIHdyYXBwZXJDYWNoZSgpLnJlbW92ZSgo
X19icmlkZ2UgQ0ZUeXBlUmVmKV9pbnN0YW5jZS5nZXQoKSk7CiAKLSAgICAgICAgaWYgKFtfaW5z
dGFuY2UuZ2V0KCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihmaW5hbGl6ZUZvcldlYlNj
cmlwdCldKQotICAgICAgICAgICAgW19pbnN0YW5jZS5nZXQoKSBwZXJmb3JtU2VsZWN0b3I6QHNl
bGVjdG9yKGZpbmFsaXplRm9yV2ViU2NyaXB0KV07CisgICAgICAgIGlmIChbX2luc3RhbmNlIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoZmluYWxpemVGb3JXZWJTY3JpcHQpXSkKKyAgICAg
ICAgICAgIFtfaW5zdGFuY2UgcGVyZm9ybVNlbGVjdG9yOkBzZWxlY3RvcihmaW5hbGl6ZUZvcldl
YlNjcmlwdCldOwogICAgICAgICBfaW5zdGFuY2UgPSAwOwogICAgIH0KIH0KQEAgLTE2Nyw3ICsx
NjcsNyBAQCBCaW5kaW5nczo6Q2xhc3MqIE9iamNJbnN0YW5jZTo6Z2V0Q2xhc3MoKSBjb25zdAog
CiBib29sIE9iamNJbnN0YW5jZTo6c3VwcG9ydHNJbnZva2VEZWZhdWx0TWV0aG9kKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gW19pbnN0YW5jZS5nZXQoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKGludm9rZURlZmF1bHRNZXRob2RXaXRoQXJndW1lbnRzOildOworICAgIHJldHVybiBbX2lu
c3RhbmNlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoaW52b2tlRGVmYXVsdE1ldGhvZFdp
dGhBcmd1bWVudHM6KV07CiB9CiAKIGNsYXNzIE9iakNSdW50aW1lTWV0aG9kIGZpbmFsIDogcHVi
bGljIFJ1bnRpbWVNZXRob2QgewpAQCAtMzUzLDEwICszNTMsMTAgQEAgSlNDOjpKU1ZhbHVlIE9i
amNJbnN0YW5jZTo6aW52b2tlRGVmYXVsdE1ldGhvZChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamUKICAgICBzZXRHbG9iYWxFeGNlcHRpb24obmlsKTsKICAgICAKIEB0cnkgewotICAg
IGlmICghW19pbnN0YW5jZS5nZXQoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGludm9r
ZURlZmF1bHRNZXRob2RXaXRoQXJndW1lbnRzOildKQorICAgIGlmICghW19pbnN0YW5jZSByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGludm9rZURlZmF1bHRNZXRob2RXaXRoQXJndW1lbnRz
OildKQogICAgICAgICByZXR1cm4gcmVzdWx0OwogCi0gICAgTlNNZXRob2RTaWduYXR1cmUqIHNp
Z25hdHVyZSA9IFtfaW5zdGFuY2UuZ2V0KCkgbWV0aG9kU2lnbmF0dXJlRm9yU2VsZWN0b3I6QHNl
bGVjdG9yKGludm9rZURlZmF1bHRNZXRob2RXaXRoQXJndW1lbnRzOildOworICAgIE5TTWV0aG9k
U2lnbmF0dXJlKiBzaWduYXR1cmUgPSBbX2luc3RhbmNlIG1ldGhvZFNpZ25hdHVyZUZvclNlbGVj
dG9yOkBzZWxlY3RvcihpbnZva2VEZWZhdWx0TWV0aG9kV2l0aEFyZ3VtZW50czopXTsKICAgICBO
U0ludm9jYXRpb24qIGludm9jYXRpb24gPSBbTlNJbnZvY2F0aW9uIGludm9jYXRpb25XaXRoTWV0
aG9kU2lnbmF0dXJlOnNpZ25hdHVyZV07CiAgICAgW2ludm9jYXRpb24gc2V0U2VsZWN0b3I6QHNl
bGVjdG9yKGludm9rZURlZmF1bHRNZXRob2RXaXRoQXJndW1lbnRzOildOwogICAgIFtpbnZvY2F0
aW9uIHNldFRhcmdldDpfaW5zdGFuY2UuZ2V0KCldOwpAQCAtNDY3LDkgKzQ2Nyw5IEBAIEpTQzo6
SlNWYWx1ZSBPYmpjSW5zdGFuY2U6OmRlZmF1bHRWYWx1ZShKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgUHJlCiAgICAgICAgIHJldHVybiBzdHJpbmdWYWx1ZShsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgICBpZiAoaGludCA9PSBQcmVmZXJOdW1iZXIpCiAgICAgICAgIHJldHVy
biBudW1iZXJWYWx1ZShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBpZiAoW19pbnN0YW5jZS5n
ZXQoKSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQorICAgIGlmIChbX2luc3RhbmNl
IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCiAgICAgICAgIHJldHVybiBzdHJpbmdW
YWx1ZShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBpZiAoW19pbnN0YW5jZS5nZXQoKSBpc0tp
bmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKQorICAgIGlmIChbX2luc3RhbmNlIGlzS2luZE9m
Q2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCiAgICAgICAgIHJldHVybiBudW1iZXJWYWx1ZShsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gdmFsdWVPZihsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGlt
ZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQppbmRleCA3
YTg4NzkwNzczYjkwMTdjM2Y3MGViYzk0MzU5NTA3NmJhNDMzMTRkLi43MTAyOGQzNTBlZWVmZDVi
ZWExMjU3ZWZjZWQyZTg2N2I0OGNiZmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMv
b2JqY19ydW50aW1lLm1tCkBAIC0xNzAsMTIgKzE3MCwxMiBAQCBib29sIE9iamNBcnJheTo6c2V0
VmFsdWVBdChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgdW5zaWduZWQgaW50
IGluZAogICAgIEpTQzo6Vk0mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBpZiAoIVtfYXJyYXku
Z2V0KCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihpbnNlcnRPYmplY3Q6YXRJbmRleDop
XSkgeworICAgIGlmICghW19hcnJheSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGluc2Vy
dE9iamVjdDphdEluZGV4OildKSB7CiAgICAgICAgIHRocm93VHlwZUVycm9yKGxleGljYWxHbG9i
YWxPYmplY3QsIHNjb3BlLCAiQXJyYXkgaXMgbm90IG11dGFibGUuIl9zKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmIChpbmRleCA+IFtfYXJyYXkuZ2V0KCkgY291bnRd
KSB7CisgICAgaWYgKGluZGV4ID4gW19hcnJheSBjb3VudF0pIHsKICAgICAgICAgdGhyb3dFeGNl
cHRpb24obGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IobGV4aWNh
bEdsb2JhbE9iamVjdCwgIkluZGV4IGV4Y2VlZHMgYXJyYXkgc2l6ZS4iKSk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CkBAIC0xODUsNyArMTg1LDcgQEAgYm9vbCBPYmpjQXJyYXk6OnNl
dFZhbHVlQXQoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIHVuc2lnbmVkIGlu
dCBpbmQKICAgICBPYmpjVmFsdWUgb1ZhbHVlID0gY29udmVydFZhbHVlVG9PYmpjVmFsdWUgKGxl
eGljYWxHbG9iYWxPYmplY3QsIGFWYWx1ZSwgT2JqY09iamVjdFR5cGUpOwogCiAgICAgQHRyeSB7
Ci0gICAgICAgIFtfYXJyYXkuZ2V0KCkgaW5zZXJ0T2JqZWN0OihfX2JyaWRnZSBpZClvVmFsdWUu
b2JqZWN0VmFsdWUgYXRJbmRleDppbmRleF07CisgICAgICAgIFtfYXJyYXkgaW5zZXJ0T2JqZWN0
OihfX2JyaWRnZSBpZClvVmFsdWUub2JqZWN0VmFsdWUgYXRJbmRleDppbmRleF07CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0gQGNhdGNoKE5TRXhjZXB0aW9uKiBsb2NhbEV4Y2VwdGlvbikg
ewogICAgICAgICB0aHJvd0V4Y2VwdGlvbihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgY3Jl
YXRlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgIk9iamVjdGl2ZS1DIGV4Y2VwdGlvbi4iKSk7
CkBAIC0xOTgsMTAgKzE5OCwxMCBAQCBKU1ZhbHVlIE9iamNBcnJheTo6dmFsdWVBdChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgdW5zaWduZWQgaW50IGluZAogICAgIEpTQzo6
Vk0mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBpZiAoaW5kZXggPiBbX2FycmF5LmdldCgpIGNv
dW50XSkKKyAgICBpZiAoaW5kZXggPiBbX2FycmF5IGNvdW50XSkKICAgICAgICAgcmV0dXJuIHRo
cm93RXhjZXB0aW9uKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9y
KGxleGljYWxHbG9iYWxPYmplY3QsICJJbmRleCBleGNlZWRzIGFycmF5IHNpemUuIikpOwogICAg
IEB0cnkgewotICAgICAgICBpZCBvYmogPSBbX2FycmF5LmdldCgpIG9iamVjdEF0SW5kZXg6aW5k
ZXhdOworICAgICAgICBpZCBvYmogPSBbX2FycmF5IG9iamVjdEF0SW5kZXg6aW5kZXhdOwogICAg
ICAgICBpZiAob2JqKQogICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRPYmpjVmFsdWVUb1ZhbHVl
IChsZXhpY2FsR2xvYmFsT2JqZWN0LCAmb2JqLCBPYmpjT2JqZWN0VHlwZSwgbV9yb290T2JqZWN0
LmdldCgpKTsKICAgICB9IEBjYXRjaChOU0V4Y2VwdGlvbiogbG9jYWxFeGNlcHRpb24pIHsKQEAg
LTIxMiw3ICsyMTIsNyBAQCBKU1ZhbHVlIE9iamNBcnJheTo6dmFsdWVBdChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgdW5zaWduZWQgaW50IGluZAogCiB1bnNpZ25lZCBpbnQg
T2JqY0FycmF5OjpnZXRMZW5ndGgoKSBjb25zdAogewotICAgIHJldHVybiBbX2FycmF5LmdldCgp
IGNvdW50XTsKKyAgICByZXR1cm4gW19hcnJheSBjb3VudF07CiB9CiAKIGNvbnN0IENsYXNzSW5m
byBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OnNfaW5mbyA9IHsgIk9iamNGYWxsYmFja09iamVjdCIs
ICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoT2Jq
Y0ZhbGxiYWNrT2JqZWN0SW1wKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9E
YXRhRGV0ZWN0aW9uLm1tCmluZGV4IGMzMjc2OGE5YTgxM2ZlYmFjMjBhY2Y3Mjg1ZWQ1N2Y2N2U5
ZTJiOTQuLmE5Yzc0ZjAxMDNjNDJiMjZmZDA1OGM1ZTIwOTRhNWI3OTgwZjNhMDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0KQEAgLTIzMyw3ICsy
MzMsNyBAQCBzdGF0aWMgQk9PTCByZXN1bHRJc1VSTChERFJlc3VsdFJlZiByZXN1bHQpCiAgICAg
ICAgIChOU1N0cmluZyAqKVBBTDo6Z2V0X0RhdGFEZXRlY3RvcnNDb3JlX0REQmluZGVyTWFpbFVS
TEtleSgpLAogICAgICAgICAoTlNTdHJpbmcgKilQQUw6OmdldF9EYXRhRGV0ZWN0b3JzQ29yZV9E
REJpbmRlckdlbmVyaWNVUkxLZXkoKSwKICAgICAgICAgKE5TU3RyaW5nICopUEFMOjpnZXRfRGF0
YURldGVjdG9yc0NvcmVfRERCaW5kZXJFbWFpbEtleSgpLCBuaWxdOwotICAgIHJldHVybiBbdXJs
VHlwZXMuZ2V0KCkgY29udGFpbnNPYmplY3Q6KE5TU3RyaW5nICopUEFMOjpzb2Z0TGlua19EYXRh
RGV0ZWN0b3JzQ29yZV9ERFJlc3VsdEdldFR5cGUocmVzdWx0KV07CisgICAgcmV0dXJuIFt1cmxU
eXBlcyBjb250YWluc09iamVjdDooTlNTdHJpbmcgKilQQUw6OnNvZnRMaW5rX0RhdGFEZXRlY3Rv
cnNDb3JlX0REUmVzdWx0R2V0VHlwZShyZXN1bHQpXTsKIH0KIAogc3RhdGljIE5TU3RyaW5nICpj
b25zdHJ1Y3RVUkxTdHJpbmdGb3JSZXN1bHQoRERSZXN1bHRSZWYgY3VycmVudFJlc3VsdCwgTlNT
dHJpbmcgKnJlc3VsdElkZW50aWZpZXIsIE5TRGF0ZSAqcmVmZXJlbmNlRGF0ZSwgTlNUaW1lWm9u
ZSAqcmVmZXJlbmNlVGltZVpvbmUsIE9wdGlvblNldDxEYXRhRGV0ZWN0b3JUeXBlPiBkZXRlY3Rp
b25UeXBlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VV
c2FnZU92ZXJsYXlDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VV
c2FnZU92ZXJsYXlDb2NvYS5tbQppbmRleCAyYmI4MTI1ODdhOTIxNjNkYjAyMTZjMmE1NzM1NDVl
N2FjYWRiNDRhLi5kMzI4ZmFiOTc1MTdjZWVlMGVmNDA3NWE2ODgwMTU3MGJjOGVmMTg1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VPdmVybGF5Q29j
b2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJjZVVzYWdlT3Zlcmxh
eUNvY29hLm1tCkBAIC0yMTcsMTUgKzIxNywxNSBAQCB2b2lkIFJlc291cmNlVXNhZ2VPdmVybGF5
OjpwbGF0Zm9ybUluaXRpYWxpemUoKQogICAgIG1fbGF5ZXIgPSBhZG9wdE5TKFtbV2ViUmVzb3Vy
Y2VVc2FnZU92ZXJsYXlMYXllciBhbGxvY10gaW5pdFdpdGhSZXNvdXJjZVVzYWdlT3ZlcmxheTp0
aGlzXSk7CiAKICAgICBtX2NvbnRhaW5lckxheWVyID0gYWRvcHROUyhbW0NBTGF5ZXIgYWxsb2Nd
IGluaXRdKTsKLSAgICBbbV9jb250YWluZXJMYXllci5nZXQoKSBhZGRTdWJsYXllcjptX2xheWVy
LmdldCgpXTsKKyAgICBbbV9jb250YWluZXJMYXllciBhZGRTdWJsYXllcjptX2xheWVyLmdldCgp
XTsKIAotICAgIFttX2NvbnRhaW5lckxheWVyLmdldCgpIHNldEFuY2hvclBvaW50OkNHUG9pbnRa
ZXJvXTsKLSAgICBbbV9jb250YWluZXJMYXllci5nZXQoKSBzZXRCb3VuZHM6Q0dSZWN0TWFrZSgw
LCAwLCBub3JtYWxXaWR0aCwgbm9ybWFsSGVpZ2h0KV07CisgICAgW21fY29udGFpbmVyTGF5ZXIg
c2V0QW5jaG9yUG9pbnQ6Q0dQb2ludFplcm9dOworICAgIFttX2NvbnRhaW5lckxheWVyIHNldEJv
dW5kczpDR1JlY3RNYWtlKDAsIDAsIG5vcm1hbFdpZHRoLCBub3JtYWxIZWlnaHQpXTsKIAotICAg
IFttX2xheWVyLmdldCgpIHNldEFuY2hvclBvaW50OkNHUG9pbnRaZXJvXTsKLSAgICBbbV9sYXll
ci5nZXQoKSBzZXRDb250ZW50c1NjYWxlOjIuMF07Ci0gICAgW21fbGF5ZXIuZ2V0KCkgc2V0QmFj
a2dyb3VuZENvbG9yOmNyZWF0ZUNvbG9yKDAsIDAsIDAsIDAuOCkuZ2V0KCldOwotICAgIFttX2xh
eWVyLmdldCgpIHNldEJvdW5kczpDR1JlY3RNYWtlKDAsIDAsIG5vcm1hbFdpZHRoLCBub3JtYWxI
ZWlnaHQpXTsKKyAgICBbbV9sYXllciBzZXRBbmNob3JQb2ludDpDR1BvaW50WmVyb107CisgICAg
W21fbGF5ZXIgc2V0Q29udGVudHNTY2FsZToyLjBdOworICAgIFttX2xheWVyIHNldEJhY2tncm91
bmRDb2xvcjpjcmVhdGVDb2xvcigwLCAwLCAwLCAwLjgpLmdldCgpXTsKKyAgICBbbV9sYXllciBz
ZXRCb3VuZHM6Q0dSZWN0TWFrZSgwLCAwLCBub3JtYWxXaWR0aCwgbm9ybWFsSGVpZ2h0KV07CiAK
ICAgICBvdmVybGF5KCkubGF5ZXIoKS5zZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihtX2xheWVy
LmdldCgpLCBHcmFwaGljc0xheWVyOjpDb250ZW50c0xheWVyUHVycG9zZTo6Tm9uZSk7CiAKQEAg
LTQ0NSw3ICs0NDUsNyBAQCB2b2lkIFJlc291cmNlVXNhZ2VPdmVybGF5OjpwbGF0Zm9ybURyYXco
Q0dDb250ZXh0UmVmIGNvbnRleHQpCiB7CiAgICAgYXV0byYgZGF0YSA9IGhpc3RvcmljVXNhZ2VE
YXRhKCk7CiAKLSAgICBpZiAoIVttX2xheWVyLmdldCgpIGNvbnRlbnRzQXJlRmxpcHBlZF0pIHsK
KyAgICBpZiAoIVttX2xheWVyIGNvbnRlbnRzQXJlRmxpcHBlZF0pIHsKICAgICAgICAgQ0dDb250
ZXh0U2NhbGVDVE0oY29udGV4dCwgMSwgLTEpOwogICAgICAgICBDR0NvbnRleHRUcmFuc2xhdGVD
VE0oY29udGV4dCwgMCwgLW5vcm1hbEhlaWdodCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZp
bHRlci5tbQppbmRleCA5ZDBjZTkwYzBiMDE5MjgwNjU4ZTg3MTM4YzFjNTFkMTc2NDY3ODhlLi5i
NDYxZjk3NTM2ZGUzYTE1ODEzYTU4MjdiODY3MTM4Yjk2ZDRmMzhjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29u
dGVudEZpbHRlci5tbQpAQCAtOTYsMTUgKzk2LDE1IEBAIHZvaWQgUGFyZW50YWxDb250cm9sc0Nv
bnRlbnRGaWx0ZXI6OnJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
CiAKIHZvaWQgUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI6OmFkZERhdGEoY29uc3QgdWlu
dDhfdCogZGF0YSwgaW50IGxlbmd0aCkKIHsKLSAgICBBU1NFUlQoIVttX3JlcGxhY2VtZW50RGF0
YS5nZXQoKSBsZW5ndGhdKTsKKyAgICBBU1NFUlQoIVttX3JlcGxhY2VtZW50RGF0YSBsZW5ndGhd
KTsKICAgICBtX3JlcGxhY2VtZW50RGF0YSA9IFttX3dlYkZpbHRlckV2YWx1YXRvciBhZGREYXRh
OltOU0RhdGEgZGF0YVdpdGhCeXRlc05vQ29weToodm9pZCopZGF0YSBsZW5ndGg6bGVuZ3RoIGZy
ZWVXaGVuRG9uZTpOT11dOwogICAgIHVwZGF0ZUZpbHRlclN0YXRlKCk7Ci0gICAgQVNTRVJUKG5l
ZWRzTW9yZURhdGEoKSB8fCBbbV9yZXBsYWNlbWVudERhdGEuZ2V0KCkgbGVuZ3RoXSk7CisgICAg
QVNTRVJUKG5lZWRzTW9yZURhdGEoKSB8fCBbbV9yZXBsYWNlbWVudERhdGEgbGVuZ3RoXSk7CiB9
CiAKIHZvaWQgUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI6OmZpbmlzaGVkQWRkaW5nRGF0
YSgpCiB7Ci0gICAgQVNTRVJUKCFbbV9yZXBsYWNlbWVudERhdGEuZ2V0KCkgbGVuZ3RoXSk7Cisg
ICAgQVNTRVJUKCFbbV9yZXBsYWNlbWVudERhdGEgbGVuZ3RoXSk7CiAgICAgbV9yZXBsYWNlbWVu
dERhdGEgPSBbbV93ZWJGaWx0ZXJFdmFsdWF0b3IgZGF0YUNvbXBsZXRlXTsKICAgICB1cGRhdGVG
aWx0ZXJTdGF0ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2Ft
ZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZC5tbQppbmRleCA3ZTQ3ZWZk
NWU4Y2Q4MWU2NDRjYThhMWNmMGM5ODI0NGM3YjY0MzU2Li4zNWY0YjE5MGIxZmNjZGFjOGRlZDkx
YzBhMTg2ZDE5NDEyODU1Y2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
YW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZC5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZC5tbQpAQCAtMTQw
LDcgKzE0MCw3IEBAIHZvaWQgR2FtZUNvbnRyb2xsZXJHYW1lcGFkOjpzZXR1cEFzRXh0ZW5kZWRH
YW1lcGFkKCkKICAgICAvLyBUaHVtYnN0aWNrIGJ1dHRvbnMgYXJlIG9ubHkgaW4gbWFjT1MgMTAu
MTQuMSAvIGlPUyAxMi4xCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAogI3ByYWdtYSBj
bGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW5ndWFyZGVkLWF2YWlsYWJpbGl0eSIKLSAgICBp
ZiAoW21fZXh0ZW5kZWRHYW1lcGFkLmdldCgpIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
bGVmdFRodW1ic3RpY2tCdXR0b24pXSkgeworICAgIGlmIChbbV9leHRlbmRlZEdhbWVwYWQgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihsZWZ0VGh1bWJzdGlja0J1dHRvbildKSB7CiAgICAg
ICAgIGJpbmRCdXR0b24obV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkubGVmdFRodW1ic3RpY2tCdXR0
b24sIEdhbWVwYWRCdXR0b25Sb2xlOjpMZWZ0U3RpY2spOwogICAgICAgICBiaW5kQnV0dG9uKG1f
ZXh0ZW5kZWRHYW1lcGFkLmdldCgpLnJpZ2h0VGh1bWJzdGlja0J1dHRvbiwgR2FtZXBhZEJ1dHRv
blJvbGU6OlJpZ2h0U3RpY2spOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0FWT3V0cHV0RGV2aWNlTWVudUNvbnRy
b2xsZXJUYXJnZXRQaWNrZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9BVk91dHB1dERldmljZU1lbnVDb250cm9sbGVyVGFyZ2V0UGlja2Vy
Lm1tCmluZGV4IGIyZWRhM2FmNzU3OWZmNTc2Zjc2NGU1YTc5NDUxN2JmZmEyN2ViNTkuLmE4MGI2
OTAzNTg0ZTFhNzVlNmU0MzdhMDJiODljZGUyZjk4MzQ1NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0FWT3V0cHV0RGV2aWNl
TWVudUNvbnRyb2xsZXJUYXJnZXRQaWNrZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQVZPdXRwdXREZXZpY2VNZW51Q29udHJvbGxl
clRhcmdldFBpY2tlci5tbQpAQCAtNzcsOCArNzcsOCBAQCBBVk91dHB1dERldmljZU1lbnVDb250
cm9sbGVyICpBVk91dHB1dERldmljZU1lbnVDb250cm9sbGVyVGFyZ2V0UGlja2VyOjpkZXZpY2VQ
aQogICAgICAgICBSZXRhaW5QdHI8QVZPdXRwdXRDb250ZXh0PiBjb250ZXh0ID0gYWRvcHROUyhb
UEFMOjphbGxvY0FWT3V0cHV0Q29udGV4dEluc3RhbmNlKCkgaW5pdF0pOwogICAgICAgICBtX291
dHB1dERldmljZU1lbnVDb250cm9sbGVyID0gYWRvcHROUyhbYWxsb2NBVk91dHB1dERldmljZU1l
bnVDb250cm9sbGVySW5zdGFuY2UoKSBpbml0V2l0aE91dHB1dENvbnRleHQ6Y29udGV4dC5nZXQo
KV0pOwogCi0gICAgICAgIFttX291dHB1dERldmljZU1lbnVDb250cm9sbGVyLmdldCgpIGFkZE9i
c2VydmVyOm1fb3V0cHV0RGV2aWNlTWVudUNvbnRyb2xsZXJEZWxlZ2F0ZS5nZXQoKSBmb3JLZXlQ
YXRoOmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlS2V5TmFtZSBvcHRpb25zOk5TS2V5VmFs
dWVPYnNlcnZpbmdPcHRpb25OZXcgY29udGV4dDpudWxscHRyXTsKLSAgICAgICAgW21fb3V0cHV0
RGV2aWNlTWVudUNvbnRyb2xsZXIuZ2V0KCkgYWRkT2JzZXJ2ZXI6bV9vdXRwdXREZXZpY2VNZW51
Q29udHJvbGxlckRlbGVnYXRlLmdldCgpIGZvcktleVBhdGg6ZXh0ZXJuYWxPdXRwdXREZXZpY2VQ
aWNrZWRLZXlOYW1lIG9wdGlvbnM6TlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbk5ldyBjb250ZXh0
Om51bGxwdHJdOworICAgICAgICBbbV9vdXRwdXREZXZpY2VNZW51Q29udHJvbGxlciBhZGRPYnNl
cnZlcjptX291dHB1dERldmljZU1lbnVDb250cm9sbGVyRGVsZWdhdGUuZ2V0KCkgZm9yS2V5UGF0
aDpleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZUtleU5hbWUgb3B0aW9uczpOU0tleVZhbHVl
T2JzZXJ2aW5nT3B0aW9uTmV3IGNvbnRleHQ6bnVsbHB0cl07CisgICAgICAgIFttX291dHB1dERl
dmljZU1lbnVDb250cm9sbGVyIGFkZE9ic2VydmVyOm1fb3V0cHV0RGV2aWNlTWVudUNvbnRyb2xs
ZXJEZWxlZ2F0ZS5nZXQoKSBmb3JLZXlQYXRoOmV4dGVybmFsT3V0cHV0RGV2aWNlUGlja2VkS2V5
TmFtZSBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgY29udGV4dDpudWxscHRy
XTsKIAogICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgICAg
ICBpZiAobV9vdXRwdXREZXZpY2VNZW51Q29udHJvbGxlci5nZXQoKS5leHRlcm5hbE91dHB1dERl
dmljZUF2YWlsYWJsZSkKQEAgLTE1Miw3ICsxNTIsNyBAQCBib29sIEFWT3V0cHV0RGV2aWNlTWVu
dUNvbnRyb2xsZXJUYXJnZXRQaWNrZXI6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlKCkK
IAogQVZPdXRwdXRDb250ZXh0ICogQVZPdXRwdXREZXZpY2VNZW51Q29udHJvbGxlclRhcmdldFBp
Y2tlcjo6b3V0cHV0Q29udGV4dCgpCiB7Ci0gICAgcmV0dXJuIG1fb3V0cHV0RGV2aWNlTWVudUNv
bnRyb2xsZXIgPyBbbV9vdXRwdXREZXZpY2VNZW51Q29udHJvbGxlci5nZXQoKSBvdXRwdXRDb250
ZXh0XSA6IG51bGxwdHI7CisgICAgcmV0dXJuIG1fb3V0cHV0RGV2aWNlTWVudUNvbnRyb2xsZXIg
PyBbbV9vdXRwdXREZXZpY2VNZW51Q29udHJvbGxlciBvdXRwdXRDb250ZXh0XSA6IG51bGxwdHI7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRp
b25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggYzFlZmQ1MWM5NWMyODVk
ZDllM2JmOTcxYmE5NDE2Mjc2YTQwNjI5ZS4uMzI1ODM1YjI4N2EyOWZhZTUzNTkwNWFjZTRmZGQy
MTQ4N2JjMTMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lv
bkFWRm91bmRhdGlvbk9iakMubW0KQEAgLTkzLDcgKzkzLDcgQEAgUmVmUHRyPFVpbnQ4QXJyYXk+
IENETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDOjpnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3Ry
aW5nJgogICAgIHN5c3RlbUNvZGUgPSAwOwogICAgIGRlc3RpbmF0aW9uVVJMID0gU3RyaW5nKCk7
CiAKLSAgICBhdXRvIGtleVJlcXVlc3RCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKFtrZXlS
ZXF1ZXN0LmdldCgpIGJ5dGVzXSwgW2tleVJlcXVlc3QuZ2V0KCkgbGVuZ3RoXSk7CisgICAgYXV0
byBrZXlSZXF1ZXN0QnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShba2V5UmVxdWVzdCBieXRl
c10sIFtrZXlSZXF1ZXN0IGxlbmd0aF0pOwogICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGggPSBrZXlS
ZXF1ZXN0QnVmZmVyLT5ieXRlTGVuZ3RoKCk7CiAgICAgcmV0dXJuIFVpbnQ4QXJyYXk6OnRyeUNy
ZWF0ZShXVEZNb3ZlKGtleVJlcXVlc3RCdWZmZXIpLCAwLCBieXRlTGVuZ3RoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9i
akMubW0KaW5kZXggYTM0MzFjMjgwNzc1YWVmYzcyNjAzYjhjY2U0NmUwMTU5ZWIzNDc3Mi4uYzY5
NGNkNjUwMmJkN2JhYzhiMDRlMjhkZDIxMmUwMmI2OTIxZmY5ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMubW0KQEAg
LTEzNiw3ICsxMzYsNyBAQCBBdG9tU3RyaW5nIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpD
OjpsYWJlbCgpIGNvbnN0CiAKICAgICBOU1N0cmluZyAqdGl0bGUgPSAwOwogCi0gICAgTlNBcnJh
eSAqdGl0bGVzID0gW1BBTDo6Z2V0QVZNZXRhZGF0YUl0ZW1DbGFzcygpIG1ldGFkYXRhSXRlbXNG
cm9tQXJyYXk6W21fbWVkaWFTZWxlY3Rpb25PcHRpb24uZ2V0KCkgY29tbW9uTWV0YWRhdGFdIHdp
dGhLZXk6QVZNZXRhZGF0YUNvbW1vbktleVRpdGxlIGtleVNwYWNlOkFWTWV0YWRhdGFLZXlTcGFj
ZUNvbW1vbl07CisgICAgTlNBcnJheSAqdGl0bGVzID0gW1BBTDo6Z2V0QVZNZXRhZGF0YUl0ZW1D
bGFzcygpIG1ldGFkYXRhSXRlbXNGcm9tQXJyYXk6W21fbWVkaWFTZWxlY3Rpb25PcHRpb24gY29t
bW9uTWV0YWRhdGFdIHdpdGhLZXk6QVZNZXRhZGF0YUNvbW1vbktleVRpdGxlIGtleVNwYWNlOkFW
TWV0YWRhdGFLZXlTcGFjZUNvbW1vbl07CiAgICAgaWYgKFt0aXRsZXMgY291bnRdKSB7CiAgICAg
ICAgIC8vIElmIHBvc3NpYmxlLCByZXR1cm4gYSB0aXRsZSBpbiBvbmUgb2YgdGhlIHVzZXIncyBw
cmVmZXJyZWQgbGFuZ3VhZ2VzLgogICAgICAgICBOU0FycmF5ICp0aXRsZXNGb3JQcmVmZXJyZWRM
YW5ndWFnZXMgPSBbUEFMOjpnZXRBVk1ldGFkYXRhSXRlbUNsYXNzKCkgbWV0YWRhdGFJdGVtc0Zy
b21BcnJheTp0aXRsZXMgZmlsdGVyZWRBbmRTb3J0ZWRBY2NvcmRpbmdUb1ByZWZlcnJlZExhbmd1
YWdlczpbTlNMb2NhbGUgcHJlZmVycmVkTGFuZ3VhZ2VzXV07CkBAIC0xNTUsNyArMTU1LDcgQEAg
QXRvbVN0cmluZyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQzo6bGFuZ3VhZ2UoKSBjb25z
dAogICAgIGlmICghbV9tZWRpYVNlbGVjdGlvbk9wdGlvbikKICAgICAgICAgcmV0dXJuIGVtcHR5
QXRvbSgpOwogCi0gICAgcmV0dXJuIFtbbV9tZWRpYVNlbGVjdGlvbk9wdGlvbi5nZXQoKSBsb2Nh
bGVdIGxvY2FsZUlkZW50aWZpZXJdOworICAgIHJldHVybiBbW21fbWVkaWFTZWxlY3Rpb25PcHRp
b24gbG9jYWxlXSBsb2NhbGVJZGVudGlmaWVyXTsKIH0KIAogYm9vbCBJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlQVZGT2JqQzo6aXNEZWZhdWx0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmlu
ZGV4IGQ5YThmZmFlMzRjOTQ3YTcxMTk4NDEzNGU4Y2Q5MzI3ZGJkZTQ0NTMuLmZhZTM5ZGEzYWJj
MDRhNDYxY2VhNjRmNmI1MmNhNDI3ZWYyNGQ0M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpA
QCAtNDYxLDcgKzQ2MSw3IEBAIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6On5N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKCkKIHsKICAgICB3ZWFrUHRyRmFjdG9y
eSgpLnJldm9rZUFsbCgpOwogCi0gICAgW1ttX2F2QXNzZXQuZ2V0KCkgcmVzb3VyY2VMb2FkZXJd
IHNldERlbGVnYXRlOm5pbCBxdWV1ZTowXTsKKyAgICBbW21fYXZBc3NldCByZXNvdXJjZUxvYWRl
cl0gc2V0RGVsZWdhdGU6bmlsIHF1ZXVlOjBdOwogCiAgICAgZm9yIChhdXRvJiBwYWlyIDogbV9y
ZXNvdXJjZUxvYWRlck1hcCkKICAgICAgICAgcGFpci52YWx1ZS0+aW52YWxpZGF0ZSgpOwpAQCAt
NDgwLDEyICs0ODAsMTIgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpjYW5jZWxMb2FkKCkKICAgICB0ZWFyRG93blZpZGVvUmVuZGVyaW5nKCk7CiAKICAgICBbW05T
Tm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2VydmVyOm1fb2JqY09i
c2VydmVyLmdldCgpXTsKLSAgICBbbV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgZGlzY29ubmVjdF07Cisg
ICAgW21fb2JqY09ic2VydmVyIGRpc2Nvbm5lY3RdOwogCiAgICAgLy8gVGVsbCBvdXIgb2JzZXJ2
ZXIgdG8gZG8gbm90aGluZyB3aGVuIG91ciBjYW5jZWxsYXRpb24gb2YgcGVuZGluZyBsb2FkaW5n
IGNhbGxzIGl0cyBjb21wbGV0aW9uIGhhbmRsZXIuCiAgICAgc2V0SWdub3JlTG9hZFN0YXRlQ2hh
bmdlcyh0cnVlKTsKICAgICBpZiAobV9hdkFzc2V0KSB7Ci0gICAgICAgIFttX2F2QXNzZXQuZ2V0
KCkgY2FuY2VsTG9hZGluZ107CisgICAgICAgIFttX2F2QXNzZXQgY2FuY2VsTG9hZGluZ107CiAg
ICAgICAgIG1fYXZBc3NldCA9IG5pbDsKICAgICB9CiAKQEAgLTQ5MywzNiArNDkzLDM2IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y2FuY2VsTG9hZCgpCiAKICAg
ICBpZiAobV9sZWdpYmxlT3V0cHV0KSB7CiAgICAgICAgIGlmIChtX2F2UGxheWVySXRlbSkKLSAg
ICAgICAgICAgIFttX2F2UGxheWVySXRlbS5nZXQoKSByZW1vdmVPdXRwdXQ6bV9sZWdpYmxlT3V0
cHV0LmdldCgpXTsKKyAgICAgICAgICAgIFttX2F2UGxheWVySXRlbSByZW1vdmVPdXRwdXQ6bV9s
ZWdpYmxlT3V0cHV0LmdldCgpXTsKICAgICAgICAgbV9sZWdpYmxlT3V0cHV0ID0gbmlsOwogICAg
IH0KIAogICAgIGlmIChtX21ldGFkYXRhQ29sbGVjdG9yKSB7CiAgICAgICAgIC8vIEZJWE1FIC0g
cmVtb3ZlTWVkaWFEYXRhQ29sbGVjdG9yIHNvbWV0aW1lcyBjcmFzaGVzLCBkbyBub3QgdW5jb21t
ZW50IHRoaXMgdW50aWwgcmRhcjovLzU2NjE3NTA0IGhhcyBiZWVuIGZpeGVkLgogICAgICAgICAv
LyBpZiAobV9hdlBsYXllckl0ZW0pCi0gICAgICAgIC8vICAgICBbbV9hdlBsYXllckl0ZW0uZ2V0
KCkgcmVtb3ZlTWVkaWFEYXRhQ29sbGVjdG9yOm1fbWV0YWRhdGFDb2xsZWN0b3IuZ2V0KCldOwor
ICAgICAgICAvLyAgICAgW21fYXZQbGF5ZXJJdGVtIHJlbW92ZU1lZGlhRGF0YUNvbGxlY3Rvcjpt
X21ldGFkYXRhQ29sbGVjdG9yLmdldCgpXTsKICAgICAgICAgbV9tZXRhZGF0YUNvbGxlY3RvciA9
IG5pbDsKICAgICB9CiAKICAgICBpZiAobV9tZXRhZGF0YU91dHB1dCkgewogICAgICAgICBpZiAo
bV9hdlBsYXllckl0ZW0pCi0gICAgICAgICAgICBbbV9hdlBsYXllckl0ZW0uZ2V0KCkgcmVtb3Zl
T3V0cHV0Om1fbWV0YWRhdGFPdXRwdXQuZ2V0KCldOworICAgICAgICAgICAgW21fYXZQbGF5ZXJJ
dGVtIHJlbW92ZU91dHB1dDptX21ldGFkYXRhT3V0cHV0LmdldCgpXTsKICAgICAgICAgbV9tZXRh
ZGF0YU91dHB1dCA9IG5pbDsKICAgICB9CiAKICAgICBpZiAobV9hdlBsYXllckl0ZW0pIHsKICAg
ICAgICAgZm9yIChOU1N0cmluZyAqa2V5TmFtZSBpbiBpdGVtS1ZPUHJvcGVydGllcygpKQotICAg
ICAgICAgICAgW21fYXZQbGF5ZXJJdGVtLmdldCgpIHJlbW92ZU9ic2VydmVyOm1fb2JqY09ic2Vy
dmVyLmdldCgpIGZvcktleVBhdGg6a2V5TmFtZV07CisgICAgICAgICAgICBbbV9hdlBsYXllckl0
ZW0gcmVtb3ZlT2JzZXJ2ZXI6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDprZXlOYW1l
XTsKICAgICAgICAgCiAgICAgICAgIG1fYXZQbGF5ZXJJdGVtID0gbmlsOwogICAgIH0KICAgICBp
ZiAobV9hdlBsYXllcikgewogICAgICAgICBpZiAobV90aW1lT2JzZXJ2ZXIpCi0gICAgICAgICAg
ICBbbV9hdlBsYXllci5nZXQoKSByZW1vdmVUaW1lT2JzZXJ2ZXI6bV90aW1lT2JzZXJ2ZXIuZ2V0
KCldOworICAgICAgICAgICAgW21fYXZQbGF5ZXIgcmVtb3ZlVGltZU9ic2VydmVyOm1fdGltZU9i
c2VydmVyLmdldCgpXTsKICAgICAgICAgbV90aW1lT2JzZXJ2ZXIgPSBuaWw7CiAKICAgICAgICAg
Zm9yIChOU1N0cmluZyAqa2V5TmFtZSBpbiBwbGF5ZXJLVk9Qcm9wZXJ0aWVzKCkpCi0gICAgICAg
ICAgICBbbV9hdlBsYXllci5nZXQoKSByZW1vdmVPYnNlcnZlcjptX29iamNPYnNlcnZlci5nZXQo
KSBmb3JLZXlQYXRoOmtleU5hbWVdOworICAgICAgICAgICAgW21fYXZQbGF5ZXIgcmVtb3ZlT2Jz
ZXJ2ZXI6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDprZXlOYW1lXTsKIAogICAgICAg
ICBzZXRTaG91bGRPYnNlcnZlVGltZUNvbnRyb2xTdGF0dXMoZmFsc2UpOwogCkBAIC01ODgsMTAg
KzU4OCwxMCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0
ZUltYWdlR2VuZXJhdG9yKCkKIAogICAgIG1faW1hZ2VHZW5lcmF0b3IgPSBbUEFMOjpnZXRBVkFz
c2V0SW1hZ2VHZW5lcmF0b3JDbGFzcygpIGFzc2V0SW1hZ2VHZW5lcmF0b3JXaXRoQXNzZXQ6bV9h
dkFzc2V0LmdldCgpXTsKIAotICAgIFttX2ltYWdlR2VuZXJhdG9yLmdldCgpIHNldEFwZXJ0dXJl
TW9kZTpBVkFzc2V0SW1hZ2VHZW5lcmF0b3JBcGVydHVyZU1vZGVDbGVhbkFwZXJ0dXJlXTsKLSAg
ICBbbV9pbWFnZUdlbmVyYXRvci5nZXQoKSBzZXRBcHBsaWVzUHJlZmVycmVkVHJhY2tUcmFuc2Zv
cm06WUVTXTsKLSAgICBbbV9pbWFnZUdlbmVyYXRvci5nZXQoKSBzZXRSZXF1ZXN0ZWRUaW1lVG9s
ZXJhbmNlQmVmb3JlOlBBTDo6a0NNVGltZVplcm9dOwotICAgIFttX2ltYWdlR2VuZXJhdG9yLmdl
dCgpIHNldFJlcXVlc3RlZFRpbWVUb2xlcmFuY2VBZnRlcjpQQUw6OmtDTVRpbWVaZXJvXTsKKyAg
ICBbbV9pbWFnZUdlbmVyYXRvciBzZXRBcGVydHVyZU1vZGU6QVZBc3NldEltYWdlR2VuZXJhdG9y
QXBlcnR1cmVNb2RlQ2xlYW5BcGVydHVyZV07CisgICAgW21faW1hZ2VHZW5lcmF0b3Igc2V0QXBw
bGllc1ByZWZlcnJlZFRyYWNrVHJhbnNmb3JtOllFU107CisgICAgW21faW1hZ2VHZW5lcmF0b3Ig
c2V0UmVxdWVzdGVkVGltZVRvbGVyYW5jZUJlZm9yZTpQQUw6OmtDTVRpbWVaZXJvXTsKKyAgICBb
bV9pbWFnZUdlbmVyYXRvciBzZXRSZXF1ZXN0ZWRUaW1lVG9sZXJhbmNlQWZ0ZXI6UEFMOjprQ01U
aW1lWmVyb107CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
ZGVzdHJveUNvbnRleHRWaWRlb1JlbmRlcmVyKCkKQEAgLTc0MSw3ICs3NDEsNyBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnN5bmNocm9uaXplVGV4dFRyYWNrU3Rh
dGUoKQogICAgICAgICBmb3IgKGF1dG8mIHRyYWNrIDogb3V0T2ZCYW5kVHJhY2tTb3VyY2VzKSB7
CiAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHVuaXF1ZUlEID0gU3RyaW5nOjpu
dW1iZXIodHJhY2stPnVuaXF1ZUlkKCkpLmNyZWF0ZUNGU3RyaW5nKCk7CiAgICAgICAgICAgICAK
LSAgICAgICAgICAgIGlmICghW1tjdXJyZW50T3B0aW9uLmdldCgpIG91dE9mQmFuZElkZW50aWZp
ZXJdIGlzRXF1YWw6KF9fYnJpZGdlIE5TU3RyaW5nICopdW5pcXVlSUQuZ2V0KCldKQorICAgICAg
ICAgICAgaWYgKCFbW2N1cnJlbnRPcHRpb24gb3V0T2ZCYW5kSWRlbnRpZmllcl0gaXNFcXVhbDoo
X19icmlkZ2UgTlNTdHJpbmcgKil1bmlxdWVJRC5nZXQoKV0pCiAgICAgICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIEluYmFuZFRleHRUcmFja1ByaXZhdGU6
Ok1vZGUgbW9kZSA9IEluYmFuZFRleHRUcmFja1ByaXZhdGU6Ok1vZGU6OkhpZGRlbjsKQEAgLTg3
OSwyMyArODc5LDIzIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
Y3JlYXRlQVZBc3NldEZvclVSTChjb25zdCBVUkwmIHVybCwgUmV0CiAKICAgICBzZXREZWxheUNh
bGxiYWNrcyh0cnVlKTsKIAotICAgIFtvcHRpb25zLmdldCgpIHNldE9iamVjdDpAKEFWQXNzZXRS
ZWZlcmVuY2VSZXN0cmljdGlvbkZvcmJpZFJlbW90ZVJlZmVyZW5jZVRvTG9jYWwgfCBBVkFzc2V0
UmVmZXJlbmNlUmVzdHJpY3Rpb25Gb3JiaWRMb2NhbFJlZmVyZW5jZVRvUmVtb3RlKSBmb3JLZXk6
QVZVUkxBc3NldFJlZmVyZW5jZVJlc3RyaWN0aW9uc0tleV07CisgICAgW29wdGlvbnMgc2V0T2Jq
ZWN0OkAoQVZBc3NldFJlZmVyZW5jZVJlc3RyaWN0aW9uRm9yYmlkUmVtb3RlUmVmZXJlbmNlVG9M
b2NhbCB8IEFWQXNzZXRSZWZlcmVuY2VSZXN0cmljdGlvbkZvcmJpZExvY2FsUmVmZXJlbmNlVG9S
ZW1vdGUpIGZvcktleTpBVlVSTEFzc2V0UmVmZXJlbmNlUmVzdHJpY3Rpb25zS2V5XTsKIAogICAg
IFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiBoZWFkZXJGaWVsZHMgPSBhZG9wdE5TKFtb
TlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOwogCiAgICAgU3RyaW5nIHJlZmVycmVy
ID0gcGxheWVyKCktPnJlZmVycmVyKCk7CiAgICAgaWYgKCFyZWZlcnJlci5pc0VtcHR5KCkpCi0g
ICAgICAgIFtoZWFkZXJGaWVsZHMuZ2V0KCkgc2V0T2JqZWN0OnJlZmVycmVyIGZvcktleTpAIlJl
ZmVyZXIiXTsKKyAgICAgICAgW2hlYWRlckZpZWxkcyBzZXRPYmplY3Q6cmVmZXJyZXIgZm9yS2V5
OkAiUmVmZXJlciJdOwogCiAgICAgU3RyaW5nIHVzZXJBZ2VudCA9IHBsYXllcigpLT51c2VyQWdl
bnQoKTsKICAgICBpZiAoIXVzZXJBZ2VudC5pc0VtcHR5KCkpCi0gICAgICAgIFtoZWFkZXJGaWVs
ZHMuZ2V0KCkgc2V0T2JqZWN0OnVzZXJBZ2VudCBmb3JLZXk6QCJVc2VyLUFnZW50Il07CisgICAg
ICAgIFtoZWFkZXJGaWVsZHMgc2V0T2JqZWN0OnVzZXJBZ2VudCBmb3JLZXk6QCJVc2VyLUFnZW50
Il07CiAKLSAgICBpZiAoW2hlYWRlckZpZWxkcy5nZXQoKSBjb3VudF0pCi0gICAgICAgIFtvcHRp
b25zLmdldCgpIHNldE9iamVjdDpoZWFkZXJGaWVsZHMuZ2V0KCkgZm9yS2V5OkAiQVZVUkxBc3Nl
dEhUVFBIZWFkZXJGaWVsZHNLZXkiXTsKKyAgICBpZiAoW2hlYWRlckZpZWxkcyBjb3VudF0pCisg
ICAgICAgIFtvcHRpb25zIHNldE9iamVjdDpoZWFkZXJGaWVsZHMuZ2V0KCkgZm9yS2V5OkAiQVZV
UkxBc3NldEhUVFBIZWFkZXJGaWVsZHNLZXkiXTsKIAogICAgIGlmIChwbGF5ZXIoKS0+ZG9lc0hh
dmVBdHRyaWJ1dGUoIngtaXR1bmVzLWluaGVyaXQtdXJpLXF1ZXJ5LWNvbXBvbmVudCIpKQotICAg
ICAgICBbb3B0aW9ucy5nZXQoKSBzZXRPYmplY3Q6QFlFUyBmb3JLZXk6IEFWVVJMQXNzZXRJbmhl
cml0VVJJUXVlcnlDb21wb25lbnRGcm9tUmVmZXJlbmNpbmdVUklLZXldOworICAgICAgICBbb3B0
aW9ucyBzZXRPYmplY3Q6QFlFUyBmb3JLZXk6IEFWVVJMQXNzZXRJbmhlcml0VVJJUXVlcnlDb21w
b25lbnRGcm9tUmVmZXJlbmNpbmdVUklLZXldOwogCiAgICAgaWYgKFBBTDo6Y2FuTG9hZF9BVkZv
dW5kYXRpb25fQVZVUkxBc3NldFVzZUNsaWVudFVSTExvYWRpbmdFeGNsdXNpdmVseSgpKQogICAg
ICAgICBbb3B0aW9ucyBzZXRPYmplY3Q6QFlFUyBmb3JLZXk6QVZVUkxBc3NldFVzZUNsaWVudFVS
TExvYWRpbmdFeGNsdXNpdmVseV07CkBAIC05MzYsNyArOTM2LDcgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVBVkFzc2V0Rm9yVVJMKGNvbnN0IFVSTCYg
dXJsLCBSZXQKICAgICAgICAgICAgIH07CiAgICAgICAgIH0pOwogCi0gICAgICAgIFtvcHRpb25z
LmdldCgpIHNldE9iamVjdDpvdXRPZkJhbmRUcmFja3MuZ2V0KCkgZm9yS2V5OkFWVVJMQXNzZXRP
dXRPZkJhbmRBbHRlcm5hdGVUcmFja3NLZXldOworICAgICAgICBbb3B0aW9ucyBzZXRPYmplY3Q6
b3V0T2ZCYW5kVHJhY2tzLmdldCgpIGZvcktleTpBVlVSTEFzc2V0T3V0T2ZCYW5kQWx0ZXJuYXRl
VHJhY2tzS2V5XTsKICAgICB9CiAjZW5kaWYKIApAQCAtMTA0Nyw3ICsxMDQ3LDcgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVBVlBsYXllcigpCiAKICAg
ICBtX2F2UGxheWVyID0gYWRvcHROUyhbUEFMOjphbGxvY0FWUGxheWVySW5zdGFuY2UoKSBpbml0
XSk7CiAgICAgZm9yIChOU1N0cmluZyAqa2V5TmFtZSBpbiBwbGF5ZXJLVk9Qcm9wZXJ0aWVzKCkp
Ci0gICAgICAgIFttX2F2UGxheWVyLmdldCgpIGFkZE9ic2VydmVyOm1fb2JqY09ic2VydmVyLmdl
dCgpIGZvcktleVBhdGg6a2V5TmFtZSBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25O
ZXcgY29udGV4dDoodm9pZCAqKU1lZGlhUGxheWVyQVZGb3VuZGF0aW9uT2JzZXJ2YXRpb25Db250
ZXh0UGxheWVyXTsKKyAgICAgICAgW21fYXZQbGF5ZXIgYWRkT2JzZXJ2ZXI6bV9vYmpjT2JzZXJ2
ZXIuZ2V0KCkgZm9yS2V5UGF0aDprZXlOYW1lIG9wdGlvbnM6TlNLZXlWYWx1ZU9ic2VydmluZ09w
dGlvbk5ldyBjb250ZXh0Oih2b2lkICopTWVkaWFQbGF5ZXJBVkZvdW5kYXRpb25PYnNlcnZhdGlv
bkNvbnRleHRQbGF5ZXJdOwogICAgIG1fYXV0b21hdGljYWxseVdhaXRzVG9NaW5pbWl6ZVN0YWxs
aW5nID0gW21fYXZQbGF5ZXIgYXV0b21hdGljYWxseVdhaXRzVG9NaW5pbWl6ZVN0YWxsaW5nXTsK
IAogICAgIHNldFNob3VsZE9ic2VydmVUaW1lQ29udHJvbFN0YXR1cyh0cnVlKTsKQEAgLTEwNjAs
NyArMTA2MCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3Jl
YXRlQVZQbGF5ZXIoKQogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAg
ICB1cGRhdGVEaXNhYmxlRXh0ZXJuYWxQbGF5YmFjaygpOwotICAgIFttX2F2UGxheWVyLmdldCgp
IHNldEFsbG93c0V4dGVybmFsUGxheWJhY2s6bV9hbGxvd3NXaXJlbGVzc1ZpZGVvUGxheWJhY2td
OworICAgIFttX2F2UGxheWVyIHNldEFsbG93c0V4dGVybmFsUGxheWJhY2s6bV9hbGxvd3NXaXJl
bGVzc1ZpZGVvUGxheWJhY2tdOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJB
Q0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTEwNzYsNyArMTA3Niw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZQbGF5ZXIo
KQogI2VuZGlmCiAKICAgICBpZiAobV9tdXRlZCkgewotICAgICAgICBbbV9hdlBsYXllci5nZXQo
KSBzZXRNdXRlZDptX211dGVkXTsKKyAgICAgICAgW21fYXZQbGF5ZXIgc2V0TXV0ZWQ6bV9tdXRl
ZF07CiAKICNpZiBIQVZFKEFWUExBWUVSX1NVUFJFU1NFU19BVURJT19SRU5ERVJJTkcpCiAgICAg
ICAgIGlmIChwbGF5ZXIoKS0+aXNWaWRlb1BsYXllcigpKQpAQCAtMTEzOSw3ICsxMTM5LDcgQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVBVlBsYXllckl0
ZW0oKQogCiAgICAgTlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbnMgb3B0aW9ucyA9IE5TS2V5VmFs
dWVPYnNlcnZpbmdPcHRpb25OZXcgfCBOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uUHJpb3I7CiAg
ICAgZm9yIChOU1N0cmluZyAqa2V5TmFtZSBpbiBpdGVtS1ZPUHJvcGVydGllcygpKQotICAgICAg
ICBbbV9hdlBsYXllckl0ZW0uZ2V0KCkgYWRkT2JzZXJ2ZXI6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkg
Zm9yS2V5UGF0aDprZXlOYW1lIG9wdGlvbnM6b3B0aW9ucyBjb250ZXh0Oih2b2lkICopTWVkaWFQ
bGF5ZXJBVkZvdW5kYXRpb25PYnNlcnZhdGlvbkNvbnRleHRQbGF5ZXJJdGVtXTsKKyAgICAgICAg
W21fYXZQbGF5ZXJJdGVtIGFkZE9ic2VydmVyOm1fb2JqY09ic2VydmVyLmdldCgpIGZvcktleVBh
dGg6a2V5TmFtZSBvcHRpb25zOm9wdGlvbnMgY29udGV4dDoodm9pZCAqKU1lZGlhUGxheWVyQVZG
b3VuZGF0aW9uT2JzZXJ2YXRpb25Db250ZXh0UGxheWVySXRlbV07CiAKICAgICBbbV9hdlBsYXll
ckl0ZW0gc2V0QXVkaW9UaW1lUGl0Y2hBbGdvcml0aG06YXVkaW9UaW1lUGl0Y2hBbGdvcml0aG1G
b3JNZWRpYVBsYXllclBpdGNoQ29ycmVjdGlvbkFsZ29yaXRobShwbGF5ZXIoKS0+cGl0Y2hDb3Jy
ZWN0aW9uQWxnb3JpdGhtKCksIHBsYXllcigpLT5wcmVzZXJ2ZXNQaXRjaCgpLCBtX3JlcXVlc3Rl
ZFJhdGUpXTsKIApAQCAtMTE1NywxMiArMTE1NywxMiBAQCBBTExPV19ORVdfQVBJX1dJVEhPVVRf
R1VBUkRTX0VORAogCiAgICAgUmV0YWluUHRyPE5TQXJyYXk+IHN1YnR5cGVzID0gYWRvcHROUyhb
W05TQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czpAKGtDTVN1YnRpdGxlRm9ybWF0VHlwZV9X
ZWJWVFQpLCBuaWxdKTsKICAgICBtX2xlZ2libGVPdXRwdXQgPSBhZG9wdE5TKFtQQUw6OmFsbG9j
QVZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1dEluc3RhbmNlKCkgaW5pdFdpdGhNZWRpYVN1YnR5cGVz
Rm9yTmF0aXZlUmVwcmVzZW50YXRpb246c3VidHlwZXMuZ2V0KCldKTsKLSAgICBbbV9sZWdpYmxl
T3V0cHV0LmdldCgpIHNldFN1cHByZXNzZXNQbGF5ZXJSZW5kZXJpbmc6WUVTXTsKKyAgICBbbV9s
ZWdpYmxlT3V0cHV0IHNldFN1cHByZXNzZXNQbGF5ZXJSZW5kZXJpbmc6WUVTXTsKIAotICAgIFtt
X2xlZ2libGVPdXRwdXQuZ2V0KCkgc2V0RGVsZWdhdGU6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgcXVl
dWU6ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKV07Ci0gICAgW21fbGVnaWJsZU91dHB1dC5nZXQo
KSBzZXRBZHZhbmNlSW50ZXJ2YWxGb3JEZWxlZ2F0ZUludm9jYXRpb246YXZQbGF5ZXJPdXRwdXRB
ZHZhbmNlSW50ZXJ2YWxdOwotICAgIFttX2xlZ2libGVPdXRwdXQuZ2V0KCkgc2V0VGV4dFN0eWxp
bmdSZXNvbHV0aW9uOkFWUGxheWVySXRlbUxlZ2libGVPdXRwdXRUZXh0U3R5bGluZ1Jlc29sdXRp
b25Tb3VyY2VBbmRSdWxlc09ubHldOwotICAgIFttX2F2UGxheWVySXRlbS5nZXQoKSBhZGRPdXRw
dXQ6bV9sZWdpYmxlT3V0cHV0LmdldCgpXTsKKyAgICBbbV9sZWdpYmxlT3V0cHV0IHNldERlbGVn
YXRlOm1fb2JqY09ic2VydmVyLmdldCgpIHF1ZXVlOmRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCld
OworICAgIFttX2xlZ2libGVPdXRwdXQgc2V0QWR2YW5jZUludGVydmFsRm9yRGVsZWdhdGVJbnZv
Y2F0aW9uOmF2UGxheWVyT3V0cHV0QWR2YW5jZUludGVydmFsXTsKKyAgICBbbV9sZWdpYmxlT3V0
cHV0IHNldFRleHRTdHlsaW5nUmVzb2x1dGlvbjpBVlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0VGV4
dFN0eWxpbmdSZXNvbHV0aW9uU291cmNlQW5kUnVsZXNPbmx5XTsKKyAgICBbbV9hdlBsYXllckl0
ZW0gYWRkT3V0cHV0Om1fbGVnaWJsZU91dHB1dC5nZXQoKV07CiAKICNpZiBFTkFCTEUoV0VCX0FV
RElPKSAmJiBVU0UoTUVESUFUT09MQk9YKQogICAgIGlmIChtX3Byb3ZpZGVyKSB7CkBAIC0xMTcy
LDEzICsxMTcyLDEzIEBAIEFMTE9XX05FV19BUElfV0lUSE9VVF9HVUFSRFNfRU5ECiAjZW5kaWYK
IAogICAgIG1fbWV0YWRhdGFDb2xsZWN0b3IgPSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZQbGF5ZXJJ
dGVtTWV0YWRhdGFDb2xsZWN0b3JJbnN0YW5jZSgpIGluaXRXaXRoSWRlbnRpZmllcnM6bmlsIGNs
YXNzaWZ5aW5nTGFiZWxzOm5pbF0pOwotICAgIFttX21ldGFkYXRhQ29sbGVjdG9yLmdldCgpIHNl
dERlbGVnYXRlOm1fb2JqY09ic2VydmVyLmdldCgpIHF1ZXVlOmRpc3BhdGNoX2dldF9tYWluX3F1
ZXVlKCldOwotICAgIFttX2F2UGxheWVySXRlbS5nZXQoKSBhZGRNZWRpYURhdGFDb2xsZWN0b3I6
bV9tZXRhZGF0YUNvbGxlY3Rvci5nZXQoKV07CisgICAgW21fbWV0YWRhdGFDb2xsZWN0b3Igc2V0
RGVsZWdhdGU6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgcXVldWU6ZGlzcGF0Y2hfZ2V0X21haW5fcXVl
dWUoKV07CisgICAgW21fYXZQbGF5ZXJJdGVtIGFkZE1lZGlhRGF0YUNvbGxlY3RvcjptX21ldGFk
YXRhQ29sbGVjdG9yLmdldCgpXTsKIAogICAgIG1fbWV0YWRhdGFPdXRwdXQgPSBhZG9wdE5TKFtQ
QUw6OmFsbG9jQVZQbGF5ZXJJdGVtTWV0YWRhdGFPdXRwdXRJbnN0YW5jZSgpIGluaXRXaXRoSWRl
bnRpZmllcnM6bmlsXSk7Ci0gICAgW21fbWV0YWRhdGFPdXRwdXQuZ2V0KCkgc2V0RGVsZWdhdGU6
bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgcXVldWU6ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKV07Ci0g
ICAgW21fbWV0YWRhdGFPdXRwdXQuZ2V0KCkgc2V0QWR2YW5jZUludGVydmFsRm9yRGVsZWdhdGVJ
bnZvY2F0aW9uOmF2UGxheWVyT3V0cHV0QWR2YW5jZUludGVydmFsXTsKLSAgICBbbV9hdlBsYXll
ckl0ZW0uZ2V0KCkgYWRkT3V0cHV0Om1fbWV0YWRhdGFPdXRwdXQuZ2V0KCldOworICAgIFttX21l
dGFkYXRhT3V0cHV0IHNldERlbGVnYXRlOm1fb2JqY09ic2VydmVyLmdldCgpIHF1ZXVlOmRpc3Bh
dGNoX2dldF9tYWluX3F1ZXVlKCldOworICAgIFttX21ldGFkYXRhT3V0cHV0IHNldEFkdmFuY2VJ
bnRlcnZhbEZvckRlbGVnYXRlSW52b2NhdGlvbjphdlBsYXllck91dHB1dEFkdmFuY2VJbnRlcnZh
bF07CisgICAgW21fYXZQbGF5ZXJJdGVtIGFkZE91dHB1dDptX21ldGFkYXRhT3V0cHV0LmdldCgp
XTsKIAogICAgIHNldERlbGF5Q2FsbGJhY2tzKGZhbHNlKTsKIH0KQEAgLTExOTIsNyArMTE5Miw3
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y2hlY2tQbGF5YWJp
bGl0eSgpCiAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUik7CiAgICAgYXV0byB3ZWFrVGhpcyA9
IG1ha2VXZWFrUHRyKCp0aGlzKTsKIAotICAgIFttX2F2QXNzZXQuZ2V0KCkgbG9hZFZhbHVlc0Fz
eW5jaHJvbm91c2x5Rm9yS2V5czpAW0AicGxheWFibGUiLCBAInRyYWNrcyJdIGNvbXBsZXRpb25I
YW5kbGVyOl57CisgICAgW21fYXZBc3NldCBsb2FkVmFsdWVzQXN5bmNocm9ub3VzbHlGb3JLZXlz
OkBbQCJwbGF5YWJsZSIsIEAidHJhY2tzIl0gY29tcGxldGlvbkhhbmRsZXI6XnsKICAgICAgICAg
Y2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXNdIHsKICAgICAgICAgICAgIGlmICh3ZWFrVGhpcykK
ICAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+c2NoZWR1bGVNYWluVGhyZWFkTm90aWZpY2F0aW9u
KE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6Tm90aWZpY2F0aW9uOjpBc3NldFBsYXlh
YmlsaXR5S25vd24pOwpAQCAtMTIwNywxMCArMTIwNywxMCBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6OmJlZ2luTG9hZGluZ01ldGFkYXRhKCkKICAgICBPU09iamVj
dFB0cjxkaXNwYXRjaF9ncm91cF90PiBtZXRhZGF0YUxvYWRpbmdHcm91cCA9IGFkb3B0T1NPYmpl
Y3QoZGlzcGF0Y2hfZ3JvdXBfY3JlYXRlKCkpOwogICAgIGRpc3BhdGNoX2dyb3VwX2VudGVyKG1l
dGFkYXRhTG9hZGluZ0dyb3VwLmdldCgpKTsKICAgICBhdXRvIHdlYWtUaGlzID0gbWFrZVdlYWtQ
dHIoKnRoaXMpOwotICAgIFttX2F2QXNzZXQuZ2V0KCkgbG9hZFZhbHVlc0FzeW5jaHJvbm91c2x5
Rm9yS2V5czphc3NldE1ldGFkYXRhS2V5TmFtZXMoKSBjb21wbGV0aW9uSGFuZGxlcjpeeworICAg
IFttX2F2QXNzZXQgbG9hZFZhbHVlc0FzeW5jaHJvbm91c2x5Rm9yS2V5czphc3NldE1ldGFkYXRh
S2V5TmFtZXMoKSBjb21wbGV0aW9uSGFuZGxlcjpeewogICAgICAgICBjYWxsT25NYWluVGhyZWFk
KFt3ZWFrVGhpcywgbWV0YWRhdGFMb2FkaW5nR3JvdXBdIHsKLSAgICAgICAgICAgIGlmICh3ZWFr
VGhpcyAmJiBbd2Vha1RoaXMtPm1fYXZBc3NldC5nZXQoKSBzdGF0dXNPZlZhbHVlRm9yS2V5OkAi
dHJhY2tzIiBlcnJvcjpuaWxdID09IEFWS2V5VmFsdWVTdGF0dXNMb2FkZWQpIHsKLSAgICAgICAg
ICAgICAgICBmb3IgKEFWQXNzZXRUcmFjayAqdHJhY2sgaW4gW3dlYWtUaGlzLT5tX2F2QXNzZXQu
Z2V0KCkgdHJhY2tzXSkgeworICAgICAgICAgICAgaWYgKHdlYWtUaGlzICYmIFt3ZWFrVGhpcy0+
bV9hdkFzc2V0IHN0YXR1c09mVmFsdWVGb3JLZXk6QCJ0cmFja3MiIGVycm9yOm5pbF0gPT0gQVZL
ZXlWYWx1ZVN0YXR1c0xvYWRlZCkgeworICAgICAgICAgICAgICAgIGZvciAoQVZBc3NldFRyYWNr
ICp0cmFjayBpbiBbd2Vha1RoaXMtPm1fYXZBc3NldCB0cmFja3NdKSB7CiAgICAgICAgICAgICAg
ICAgICAgIGRpc3BhdGNoX2dyb3VwX2VudGVyKG1ldGFkYXRhTG9hZGluZ0dyb3VwLmdldCgpKTsK
ICAgICAgICAgICAgICAgICAgICAgW3RyYWNrIGxvYWRWYWx1ZXNBc3luY2hyb25vdXNseUZvcktl
eXM6YXNzZXRUcmFja01ldGFkYXRhS2V5TmFtZXMoKSBjb21wbGV0aW9uSGFuZGxlcjpeewogICAg
ICAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2hfZ3JvdXBfbGVhdmUobWV0YWRhdGFMb2FkaW5n
R3JvdXAuZ2V0KCkpOwpAQCAtMTIyNCw3ICsxMjI0LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpiZWdpbkxvYWRpbmdNZXRhZGF0YSgpCiAgICAgZGlzcGF0Y2hf
Z3JvdXBfbm90aWZ5KG1ldGFkYXRhTG9hZGluZ0dyb3VwLmdldCgpLCBkaXNwYXRjaF9nZXRfbWFp
bl9xdWV1ZSgpLCBeewogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrVGhpc10gewogICAg
ICAgICAgICAgaWYgKHdlYWtUaGlzKQotICAgICAgICAgICAgICAgIFt3ZWFrVGhpcy0+bV9vYmpj
T2JzZXJ2ZXIuZ2V0KCkgbWV0YWRhdGFMb2FkZWRdOworICAgICAgICAgICAgICAgIFt3ZWFrVGhp
cy0+bV9vYmpjT2JzZXJ2ZXIgbWV0YWRhdGFMb2FkZWRdOwogICAgICAgICB9KTsKICAgICB9KTsK
IH0KQEAgLTEzNDUsNyArMTM0NSw3IEBAIFN0cmluZyBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjphY2Nlc3NMb2coKSBjb25zdAogICAgIGlmICghbV9hdlBsYXllckl0ZW0pCiAg
ICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogICAgIAotICAgIEFWUGxheWVySXRlbUFjY2Vz
c0xvZyAqbG9nID0gW21fYXZQbGF5ZXJJdGVtLmdldCgpIGFjY2Vzc0xvZ107CisgICAgQVZQbGF5
ZXJJdGVtQWNjZXNzTG9nICpsb2cgPSBbbV9hdlBsYXllckl0ZW0gYWNjZXNzTG9nXTsKICAgICBS
ZXRhaW5QdHI8TlNTdHJpbmc+IGxvZ1N0cmluZyA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10g
aW5pdFdpdGhEYXRhOltsb2cgZXh0ZW5kZWRMb2dEYXRhXSBlbmNvZGluZzpbbG9nIGV4dGVuZGVk
TG9nRGF0YVN0cmluZ0VuY29kaW5nXV0pOwogCiAgICAgcmV0dXJuIGxvZ1N0cmluZy5nZXQoKTsK
QEAgLTEzNTYsNyArMTM1Niw3IEBAIFN0cmluZyBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjplcnJvckxvZygpIGNvbnN0CiAgICAgaWYgKCFtX2F2UGxheWVySXRlbSkKICAgICAg
ICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKLSAgICBBVlBsYXllckl0ZW1FcnJvckxvZyAqbG9n
ID0gW21fYXZQbGF5ZXJJdGVtLmdldCgpIGVycm9yTG9nXTsKKyAgICBBVlBsYXllckl0ZW1FcnJv
ckxvZyAqbG9nID0gW21fYXZQbGF5ZXJJdGVtIGVycm9yTG9nXTsKICAgICBSZXRhaW5QdHI8TlNT
dHJpbmc+IGxvZ1N0cmluZyA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRh
Oltsb2cgZXh0ZW5kZWRMb2dEYXRhXSBlbmNvZGluZzpbbG9nIGV4dGVuZGVkTG9nRGF0YVN0cmlu
Z0VuY29kaW5nXV0pOwogCiAgICAgcmV0dXJuIGxvZ1N0cmluZy5nZXQoKTsKQEAgLTEzNzQsNyAr
MTM3NCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGxhdGZv
cm1TZXRWaXNpYmxlKGJvb2wgaXNWaXNpYmxlKQogICAgIFtDQVRyYW5zYWN0aW9uIGJlZ2luXTsK
ICAgICBbQ0FUcmFuc2FjdGlvbiBzZXREaXNhYmxlQWN0aW9uczpZRVNdOyAgICAKICAgICBpZiAo
bV92aWRlb0xheWVyKQotICAgICAgICBbbV92aWRlb0xheWVyLmdldCgpIHNldEhpZGRlbjohaXNW
aXNpYmxlXTsKKyAgICAgICAgW21fdmlkZW9MYXllciBzZXRIaWRkZW46IWlzVmlzaWJsZV07CiAg
ICAgW0NBVHJhbnNhY3Rpb24gY29tbWl0XTsKIH0KICAgICAKQEAgLTE0NDIsOSArMTQ0Miw5IEBA
IE1lZGlhVGltZSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwbGF0Zm9ybUR1
cmF0aW9uKCkgY29uc3QKICAgICAKICAgICAvLyBDaGVjayB0aGUgQVZJdGVtIGlmIHdlIGhhdmUg
b25lIGFuZCBpdCBoYXMgbG9hZGVkIGR1cmF0aW9uLCBzb21lIGFzc2V0cyBuZXZlciByZXBvcnQg
ZHVyYXRpb24uCiAgICAgaWYgKG1fYXZQbGF5ZXJJdGVtICYmIHBsYXllckl0ZW1TdGF0dXMoKSA+
PSBNZWRpYVBsYXllckFWUGxheWVySXRlbVN0YXR1c1JlYWR5VG9QbGF5KQotICAgICAgICBjbUR1
cmF0aW9uID0gW21fYXZQbGF5ZXJJdGVtLmdldCgpIGR1cmF0aW9uXTsKKyAgICAgICAgY21EdXJh
dGlvbiA9IFttX2F2UGxheWVySXRlbSBkdXJhdGlvbl07CiAgICAgZWxzZQotICAgICAgICBjbUR1
cmF0aW9uID0gW21fYXZBc3NldC5nZXQoKSBkdXJhdGlvbl07CisgICAgICAgIGNtRHVyYXRpb24g
PSBbbV9hdkFzc2V0IGR1cmF0aW9uXTsKIAogICAgIGlmIChDTVRJTUVfSVNfTlVNRVJJQyhjbUR1
cmF0aW9uKSkKICAgICAgICAgcmV0dXJuIFBBTDo6dG9NZWRpYVRpbWUoY21EdXJhdGlvbik7CkBA
IC0xNDY3LDcgKzE0NjcsNyBAQCBNZWRpYVRpbWUgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6Y3VycmVudE1lZGlhVGltZSgpIGNvbnN0CiAgICAgICAgIHJldHVybiBNZWRpYVRp
bWU6Onplcm9UaW1lKCk7CiAKICAgICBpZiAoIW1fd2FsbENsb2NrQXRDYWNoZWRDdXJyZW50VGlt
ZSkKLSAgICAgICAgY3VycmVudE1lZGlhVGltZURpZENoYW5nZShQQUw6OnRvTWVkaWFUaW1lKFtt
X2F2UGxheWVySXRlbS5nZXQoKSBjdXJyZW50VGltZV0pKTsKKyAgICAgICAgY3VycmVudE1lZGlh
VGltZURpZENoYW5nZShQQUw6OnRvTWVkaWFUaW1lKFttX2F2UGxheWVySXRlbSBjdXJyZW50VGlt
ZV0pKTsKICAgICBBU1NFUlQobV93YWxsQ2xvY2tBdENhY2hlZEN1cnJlbnRUaW1lKTsKIAogICAg
IGF1dG8gaXRlbVRpbWUgPSBtX2NhY2hlZEN1cnJlbnRNZWRpYVRpbWU7CkBAIC0xNTE4LDcgKzE1
MTgsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNlZWtUb1Rp
bWUoY29uc3QgTWVkaWFUaW1lJiB0aW1lLCBjb25zdAogICAgIGF1dG8gd2Vha1RoaXMgPSBtYWtl
V2Vha1B0cigqdGhpcyk7CiAKICAgICBzZXRTaG91bGRPYnNlcnZlVGltZUNvbnRyb2xTdGF0dXMo
ZmFsc2UpOwotICAgIFttX2F2UGxheWVySXRlbS5nZXQoKSBzZWVrVG9UaW1lOmNtVGltZSB0b2xl
cmFuY2VCZWZvcmU6Y21CZWZvcmUgdG9sZXJhbmNlQWZ0ZXI6Y21BZnRlciBjb21wbGV0aW9uSGFu
ZGxlcjpeKEJPT0wgZmluaXNoZWQpIHsKKyAgICBbbV9hdlBsYXllckl0ZW0gc2Vla1RvVGltZTpj
bVRpbWUgdG9sZXJhbmNlQmVmb3JlOmNtQmVmb3JlIHRvbGVyYW5jZUFmdGVyOmNtQWZ0ZXIgY29t
cGxldGlvbkhhbmRsZXI6XihCT09MIGZpbmlzaGVkKSB7CiAgICAgICAgIGNhbGxPbk1haW5UaHJl
YWQoW3dlYWtUaGlzLCBmaW5pc2hlZF0gewogICAgICAgICAgICAgYXV0byBfdGhpcyA9IHdlYWtU
aGlzLmdldCgpOwogICAgICAgICAgICAgaWYgKCFfdGhpcykKQEAgLTE1NDQsNyArMTU0NCw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0Vm9sdW1lKGZsb2F0
IHZvbHVtZSkKIAogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgdm9sdW1lKTsKIAotICAg
IFttX2F2UGxheWVyLmdldCgpIHNldFZvbHVtZTp2b2x1bWVdOworICAgIFttX2F2UGxheWVyIHNl
dFZvbHVtZTp2b2x1bWVdOwogI2VuZGlmCiB9CiAKQEAgLTE1NjAsNyArMTU2MCw3IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0TXV0ZWQoYm9vbCBtdXRlZCkK
ICAgICBpZiAoIW1fYXZQbGF5ZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIFttX2F2UGxheWVy
LmdldCgpIHNldE11dGVkOm1fbXV0ZWRdOworICAgIFttX2F2UGxheWVyIHNldE11dGVkOm1fbXV0
ZWRdOwogI2lmIEhBVkUoQVZQTEFZRVJfU1VQUkVTU0VTX0FVRElPX1JFTkRFUklORykKICAgICBp
ZiAoIW1fbXV0ZWQpCiAgICAgICAgIG1fYXZQbGF5ZXIuZ2V0KCkuc3VwcHJlc3Nlc0F1ZGlvUmVu
ZGVyaW5nID0gTk87CkBAIC0xNzYzLDcgKzE3NjMsNyBAQCBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb246OkFzc2V0U3RhdHVzIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OgogICAgIGlmICghbV9jYWNoZWRBc3NldElzTG9hZGVkKSB7CiAgICAgICAgIGZvciAoTlNTdHJp
bmcgKmtleU5hbWUgaW4gYXNzZXRNZXRhZGF0YUtleU5hbWVzKCkpIHsKICAgICAgICAgICAgIE5T
RXJyb3IgKmVycm9yID0gbmlsOwotICAgICAgICAgICAgQVZLZXlWYWx1ZVN0YXR1cyBrZXlTdGF0
dXMgPSBbbV9hdkFzc2V0LmdldCgpIHN0YXR1c09mVmFsdWVGb3JLZXk6a2V5TmFtZSBlcnJvcjom
ZXJyb3JdOworICAgICAgICAgICAgQVZLZXlWYWx1ZVN0YXR1cyBrZXlTdGF0dXMgPSBbbV9hdkFz
c2V0IHN0YXR1c09mVmFsdWVGb3JLZXk6a2V5TmFtZSBlcnJvcjomZXJyb3JdOwogCiAgICAgICAg
ICAgICBpZiAoZXJyb3IpCiAgICAgICAgICAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIs
ICJmYWlsZWQgZm9yICIsIFtrZXlOYW1lIFVURjhTdHJpbmddLCAiLCBlcnJvciA9ICIsIFtbZXJy
b3IgbG9jYWxpemVkRGVzY3JpcHRpb25dIFVURjhTdHJpbmddKTsKQEAgLTE3OTQsNyArMTc5NCw3
IEBAIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6QXNzZXRTdGF0dXMgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6CiAgICAgfQogCiAgICAgaWYgKCFtX2NhY2hlZEFz
c2V0SXNQbGF5YWJsZSkKLSAgICAgICAgbV9jYWNoZWRBc3NldElzUGxheWFibGUgPSBbW21fYXZB
c3NldC5nZXQoKSB2YWx1ZUZvcktleTpAInBsYXlhYmxlIl0gYm9vbFZhbHVlXTsKKyAgICAgICAg
bV9jYWNoZWRBc3NldElzUGxheWFibGUgPSBbW21fYXZBc3NldCB2YWx1ZUZvcktleTpAInBsYXlh
YmxlIl0gYm9vbFZhbHVlXTsKIAogICAgIGlmICgqbV9jYWNoZWRBc3NldElzUGxheWFibGUgJiYg
bV90cmFja3NBcmVQbGF5YWJsZS52YWx1ZSgpKQogICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJB
VkFzc2V0U3RhdHVzUGxheWFibGU7CkBAIC0xODY3LDggKzE4NjcsOCBAQCBSZXRhaW5QdHI8Q0dJ
bWFnZVJlZj4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlSW1hZ2VG
b3JUaW1lSW5SZQogCiAgICAgTW9ub3RvbmljVGltZSBzdGFydCA9IE1vbm90b25pY1RpbWU6Om5v
dygpOwogCi0gICAgW21faW1hZ2VHZW5lcmF0b3IuZ2V0KCkgc2V0TWF4aW11bVNpemU6Q0dTaXpl
KHJlY3Quc2l6ZSgpKV07Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IHJhd0ltYWdlID0gYWRv
cHRDRihbbV9pbWFnZUdlbmVyYXRvci5nZXQoKSBjb3B5Q0dJbWFnZUF0VGltZTpQQUw6OkNNVGlt
ZU1ha2VXaXRoU2Vjb25kcyh0aW1lLCA2MDApIGFjdHVhbFRpbWU6bmlsIGVycm9yOm5pbF0pOwor
ICAgIFttX2ltYWdlR2VuZXJhdG9yIHNldE1heGltdW1TaXplOkNHU2l6ZShyZWN0LnNpemUoKSld
OworICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiByYXdJbWFnZSA9IGFkb3B0Q0YoW21faW1hZ2VH
ZW5lcmF0b3IgY29weUNHSW1hZ2VBdFRpbWU6UEFMOjpDTVRpbWVNYWtlV2l0aFNlY29uZHModGlt
ZSwgNjAwKSBhY3R1YWxUaW1lOm5pbCBlcnJvcjpuaWxdKTsKICAgICBSZXRhaW5QdHI8Q0dJbWFn
ZVJlZj4gaW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGVDb3B5V2l0aENvbG9yU3BhY2UocmF3
SW1hZ2UuZ2V0KCksIHNSR0JDb2xvclNwYWNlUmVmKCkpKTsKIAogICAgIElORk9fTE9HKExPR0lE
RU5USUZJRVIsICJjcmVhdGluZyBpbWFnZSB0b29rICIsIChNb25vdG9uaWNUaW1lOjpub3coKSAt
IHN0YXJ0KS5zZWNvbmRzKCkpOwpAQCAtMjA4MSw3ICsyMDgxLDcgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVWaWRlb0xheWVyR3Jhdml0eSgpCiAgICAg
W0NBVHJhbnNhY3Rpb24gYmVnaW5dOwogICAgIFtDQVRyYW5zYWN0aW9uIHNldERpc2FibGVBY3Rp
b25zOllFU107ICAgIAogICAgIE5TU3RyaW5nKiBncmF2aXR5ID0gc2hvdWxkTWFpbnRhaW5Bc3Bl
Y3RSYXRpbygpID8gQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCA6IEFWTGF5ZXJWaWRl
b0dyYXZpdHlSZXNpemU7Ci0gICAgW21fdmlkZW9MYXllci5nZXQoKSBzZXRWaWRlb0dyYXZpdHk6
Z3Jhdml0eV07CisgICAgW21fdmlkZW9MYXllciBzZXRWaWRlb0dyYXZpdHk6Z3Jhdml0eV07CiAg
ICAgW0NBVHJhbnNhY3Rpb24gY29tbWl0XTsKIH0KIApAQCAtMjQ3Miw3ICsyNDcyLDcgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVWaWRlb091dHB1dCgp
CiAgICAgbV92aWRlb091dHB1dERlbGVnYXRlID0gYWRvcHROUyhbW1dlYkNvcmVBVkZQdWxsRGVs
ZWdhdGUgYWxsb2NdIGluaXRXaXRoUGxheWVyOm1ha2VXZWFrUHRyKCp0aGlzKV0pOwogICAgIFtt
X3ZpZGVvT3V0cHV0IHNldERlbGVnYXRlOm1fdmlkZW9PdXRwdXREZWxlZ2F0ZS5nZXQoKSBxdWV1
ZTpnbG9iYWxQdWxsRGVsZWdhdGVRdWV1ZSgpXTsKIAotICAgIFttX2F2UGxheWVySXRlbS5nZXQo
KSBhZGRPdXRwdXQ6bV92aWRlb091dHB1dC5nZXQoKV07CisgICAgW21fYXZQbGF5ZXJJdGVtIGFk
ZE91dHB1dDptX3ZpZGVvT3V0cHV0LmdldCgpXTsKIAogICAgIHNldE5lZWRzUmVuZGVyaW5nTW9k
ZUNoYW5nZWQoKTsKIH0KQEAgLTI0ODMsNyArMjQ4Myw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQzo6ZGVzdHJveVZpZGVvT3V0cHV0KCkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgaWYgKG1fYXZQbGF5ZXJJdGVtKQotICAgICAgICBbbV9hdlBsYXllckl0ZW0uZ2V0
KCkgcmVtb3ZlT3V0cHV0Om1fdmlkZW9PdXRwdXQuZ2V0KCldOworICAgICAgICBbbV9hdlBsYXll
ckl0ZW0gcmVtb3ZlT3V0cHV0Om1fdmlkZW9PdXRwdXQuZ2V0KCldOwogCiAgICAgSU5GT19MT0co
TE9HSURFTlRJRklFUik7CiAKQEAgLTI1MDEsMTIgKzI1MDEsMTIgQEAgYm9vbCBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVMYXN0UGl4ZWxCdWZmZXIoKQogICAgICAg
ICBjcmVhdGVWaWRlb091dHB1dCgpOwogICAgIEFTU0VSVChtX3ZpZGVvT3V0cHV0KTsKIAotICAg
IENNVGltZSBjdXJyZW50VGltZSA9IFttX2F2UGxheWVySXRlbS5nZXQoKSBjdXJyZW50VGltZV07
CisgICAgQ01UaW1lIGN1cnJlbnRUaW1lID0gW21fYXZQbGF5ZXJJdGVtIGN1cnJlbnRUaW1lXTsK
IAotICAgIGlmICghW21fdmlkZW9PdXRwdXQuZ2V0KCkgaGFzTmV3UGl4ZWxCdWZmZXJGb3JJdGVt
VGltZTpjdXJyZW50VGltZV0pCisgICAgaWYgKCFbbV92aWRlb091dHB1dCBoYXNOZXdQaXhlbEJ1
ZmZlckZvckl0ZW1UaW1lOmN1cnJlbnRUaW1lXSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgbV9sYXN0UGl4ZWxCdWZmZXIgPSBhZG9wdENGKFttX3ZpZGVvT3V0cHV0LmdldCgpIGNvcHlQ
aXhlbEJ1ZmZlckZvckl0ZW1UaW1lOmN1cnJlbnRUaW1lIGl0ZW1UaW1lRm9yRGlzcGxheTpuaWxd
KTsKKyAgICBtX2xhc3RQaXhlbEJ1ZmZlciA9IGFkb3B0Q0YoW21fdmlkZW9PdXRwdXQgY29weVBp
eGVsQnVmZmVyRm9ySXRlbVRpbWU6Y3VycmVudFRpbWUgaXRlbVRpbWVGb3JEaXNwbGF5Om5pbF0p
OwogCiAgICAgaWYgKG1faW1hZ2VSb3RhdGlvblNlc3Npb24pCiAgICAgICAgIG1fbGFzdFBpeGVs
QnVmZmVyID0gbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbi0+cm90YXRlKG1fbGFzdFBpeGVsQnVmZmVy
LmdldCgpKTsKQEAgLTI3NTQsNyArMjc1NCw3IEBAIEFWQXNzZXRUcmFjayogTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Zmlyc3RFbmFibGVkVHJhY2soQVZNZWRpYUNoYXJhCiAg
ICAgaWYgKCFtX2F2QXNzZXQpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBpZiAoW21fYXZB
c3NldC5nZXQoKSBzdGF0dXNPZlZhbHVlRm9yS2V5OkAidHJhY2tzIiBlcnJvcjpOVUxMXSAhPSBB
VktleVZhbHVlU3RhdHVzTG9hZGVkKQorICAgIGlmIChbbV9hdkFzc2V0IHN0YXR1c09mVmFsdWVG
b3JLZXk6QCJ0cmFja3MiIGVycm9yOk5VTExdICE9IEFWS2V5VmFsdWVTdGF0dXNMb2FkZWQpCiAg
ICAgICAgIHJldHVybiBuaWw7CiAKICAgICByZXR1cm4gW10gKE5TQXJyYXkqIHRyYWNrcykgLT4g
QVZBc3NldFRyYWNrKiB7CkBAIC0yNzgyLDcgKzI3ODIsNyBAQCBib29sIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6Omhhc0xvYWRlZE1lZGlhU2VsZWN0aW9uR3JvdXBzKCkKICAg
ICBpZiAoIW1fYXZBc3NldCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKFttX2F2
QXNzZXQuZ2V0KCkgc3RhdHVzT2ZWYWx1ZUZvcktleTpAImF2YWlsYWJsZU1lZGlhQ2hhcmFjdGVy
aXN0aWNzV2l0aE1lZGlhU2VsZWN0aW9uT3B0aW9ucyIgZXJyb3I6TlVMTF0gIT0gQVZLZXlWYWx1
ZVN0YXR1c0xvYWRlZCkKKyAgICBpZiAoW21fYXZBc3NldCBzdGF0dXNPZlZhbHVlRm9yS2V5OkAi
YXZhaWxhYmxlTWVkaWFDaGFyYWN0ZXJpc3RpY3NXaXRoTWVkaWFTZWxlY3Rpb25PcHRpb25zIiBl
cnJvcjpOVUxMXSAhPSBBVktleVZhbHVlU3RhdHVzTG9hZGVkKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI3OTMsNyArMjc5Myw3IEBAIEFWTWVkaWFTZWxl
Y3Rpb25Hcm91cCogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2FmZU1lZGlh
U2VsZWN0aW9uR3JvCiAgICAgaWYgKCFoYXNMb2FkZWRNZWRpYVNlbGVjdGlvbkdyb3VwcygpKQog
ICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgcmV0dXJuIFttX2F2QXNzZXQuZ2V0KCkgbWVkaWFT
ZWxlY3Rpb25Hcm91cEZvck1lZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRpYUNoYXJhY3RlcmlzdGlj
TGVnaWJsZV07CisgICAgcmV0dXJuIFttX2F2QXNzZXQgbWVkaWFTZWxlY3Rpb25Hcm91cEZvck1l
ZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRpYUNoYXJhY3RlcmlzdGljTGVnaWJsZV07CiB9CiAKIEFW
TWVkaWFTZWxlY3Rpb25Hcm91cCogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
c2FmZU1lZGlhU2VsZWN0aW9uR3JvdXBGb3JBdWRpYmxlTWVkaWEoKQpAQCAtMjgwMSw3ICsyODAx
LDcgQEAgQVZNZWRpYVNlbGVjdGlvbkdyb3VwKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpzYWZlTWVkaWFTZWxlY3Rpb25Hcm8KICAgICBpZiAoIWhhc0xvYWRlZE1lZGlhU2Vs
ZWN0aW9uR3JvdXBzKCkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICByZXR1cm4gW21fYXZB
c3NldC5nZXQoKSBtZWRpYVNlbGVjdGlvbkdyb3VwRm9yTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1l
ZGlhQ2hhcmFjdGVyaXN0aWNBdWRpYmxlXTsKKyAgICByZXR1cm4gW21fYXZBc3NldCBtZWRpYVNl
bGVjdGlvbkdyb3VwRm9yTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNB
dWRpYmxlXTsKIH0KIAogQVZNZWRpYVNlbGVjdGlvbkdyb3VwKiBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjpzYWZlTWVkaWFTZWxlY3Rpb25Hcm91cEZvclZpc3VhbE1lZGlhKCkK
QEAgLTI4MDksNyArMjgwOSw3IEBAIEFWTWVkaWFTZWxlY3Rpb25Hcm91cCogTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2FmZU1lZGlhU2VsZWN0aW9uR3JvCiAgICAgaWYgKCFo
YXNMb2FkZWRNZWRpYVNlbGVjdGlvbkdyb3VwcygpKQogICAgICAgICByZXR1cm4gbmlsOwogCi0g
ICAgcmV0dXJuIFttX2F2QXNzZXQuZ2V0KCkgbWVkaWFTZWxlY3Rpb25Hcm91cEZvck1lZGlhQ2hh
cmFjdGVyaXN0aWM6QVZNZWRpYUNoYXJhY3RlcmlzdGljVmlzdWFsXTsKKyAgICByZXR1cm4gW21f
YXZBc3NldCBtZWRpYVNlbGVjdGlvbkdyb3VwRm9yTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlh
Q2hhcmFjdGVyaXN0aWNWaXN1YWxdOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OnByb2Nlc3NNZWRpYVNlbGVjdGlvbk9wdGlvbnMoKQpAQCAtMjgyMyw3ICsy
ODIzLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwcm9jZXNz
TWVkaWFTZWxlY3Rpb25PcHRpb25zKCkKICAgICAvLyBXZSBlbmFibGVkIGF1dG9tYXRpYyBtZWRp
YSBzZWxlY3Rpb24gYmVjYXVzZSB3ZSB3YW50IGFsdGVybmF0ZSBhdWRpbyB0cmFja3MgdG8gYmUg
ZW5hYmxlZC9kaXNhYmxlZCBhdXRvbWF0aWNhbGx5LAogICAgIC8vIGJ1dCBzZXQgdGhlIHNlbGVj
dGVkIGxlZ2libGUgdHJhY2sgdG8gbmlsIHNvIHRleHQgdHJhY2tzIHdpbGwgbm90IGJlIGF1dG9t
YXRpY2FsbHkgY29uZmlndXJlZC4KICAgICBpZiAoIW1fdGV4dFRyYWNrcy5zaXplKCkpCi0gICAg
ICAgIFttX2F2UGxheWVySXRlbS5nZXQoKSBzZWxlY3RNZWRpYU9wdGlvbjpuaWwgaW5NZWRpYVNl
bGVjdGlvbkdyb3VwOnNhZmVNZWRpYVNlbGVjdGlvbkdyb3VwRm9yTGVnaWJsZU1lZGlhKCldOwor
ICAgICAgICBbbV9hdlBsYXllckl0ZW0gc2VsZWN0TWVkaWFPcHRpb246bmlsIGluTWVkaWFTZWxl
Y3Rpb25Hcm91cDpzYWZlTWVkaWFTZWxlY3Rpb25Hcm91cEZvckxlZ2libGVNZWRpYSgpXTsKIAog
ICAgIFZlY3RvcjxSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRj4+IHJlbW92ZWRUZXh0
VHJhY2tzID0gbV90ZXh0VHJhY2tzOwogICAgIE5TQXJyYXkgKmxlZ2libGVPcHRpb25zID0gW1BB
TDo6Z2V0QVZNZWRpYVNlbGVjdGlvbkdyb3VwQ2xhc3MoKSBwbGF5YWJsZU1lZGlhU2VsZWN0aW9u
T3B0aW9uc0Zyb21BcnJheTpbbGVnaWJsZUdyb3VwIG9wdGlvbnNdXTsKQEAgLTI4NDUsNyArMjg0
NSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cHJvY2Vzc01l
ZGlhU2VsZWN0aW9uT3B0aW9ucygpCiAgICAgICAgICAgICAgICAgY3VycmVudE9wdGlvbiA9IHRy
YWNrLT5tZWRpYVNlbGVjdGlvbk9wdGlvbigpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
Ci0gICAgICAgICAgICBpZiAoW2N1cnJlbnRPcHRpb24uZ2V0KCkgaXNFcXVhbDpvcHRpb25dKSB7
CisgICAgICAgICAgICBpZiAoW2N1cnJlbnRPcHRpb24gaXNFcXVhbDpvcHRpb25dKSB7CiAgICAg
ICAgICAgICAgICAgcmVtb3ZlZFRleHRUcmFja3MucmVtb3ZlKGkgLSAxKTsKICAgICAgICAgICAg
ICAgICBuZXdUcmFjayA9IGZhbHNlOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjkxMCwx
OCArMjkxMCwxOCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNl
dEN1cnJlbnRUZXh0VHJhY2soSW5iYW5kVGV4dFRyYWNrUHJpdgogICAgIGlmICh0cmFjaykgewog
ICAgICAgICBpZiAodHJhY2stPnRleHRUcmFja0NhdGVnb3J5KCkgPT0gSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUFWRjo6TGVnYWN5Q2xvc2VkQ2FwdGlvbikKICAgICAgICAgICAgIEFMTE9XX0RFUFJF
Q0FURURfREVDTEFSQVRJT05TX0JFR0lOCi0gICAgICAgICAgICBbbV9hdlBsYXllci5nZXQoKSBz
ZXRDbG9zZWRDYXB0aW9uRGlzcGxheUVuYWJsZWQ6WUVTXTsKKyAgICAgICAgICAgIFttX2F2UGxh
eWVyIHNldENsb3NlZENhcHRpb25EaXNwbGF5RW5hYmxlZDpZRVNdOwogICAgICAgICAgICAgQUxM
T1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAjaWYgRU5BQkxFKEFWRl9DQVBUSU9OUykK
ICAgICAgICAgZWxzZSBpZiAodHJhY2stPnRleHRUcmFja0NhdGVnb3J5KCkgPT0gSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWRjo6T3V0T2ZCYW5kKQotICAgICAgICAgICAgW21fYXZQbGF5ZXJJdGVt
LmdldCgpIHNlbGVjdE1lZGlhT3B0aW9uOnN0YXRpY19jYXN0PE91dE9mQmFuZFRleHRUcmFja1By
aXZhdGVBVkYqPih0cmFjayktPm1lZGlhU2VsZWN0aW9uT3B0aW9uKCkgaW5NZWRpYVNlbGVjdGlv
bkdyb3VwOnNhZmVNZWRpYVNlbGVjdGlvbkdyb3VwRm9yTGVnaWJsZU1lZGlhKCldOworICAgICAg
ICAgICAgW21fYXZQbGF5ZXJJdGVtIHNlbGVjdE1lZGlhT3B0aW9uOnN0YXRpY19jYXN0PE91dE9m
QmFuZFRleHRUcmFja1ByaXZhdGVBVkYqPih0cmFjayktPm1lZGlhU2VsZWN0aW9uT3B0aW9uKCkg
aW5NZWRpYVNlbGVjdGlvbkdyb3VwOnNhZmVNZWRpYVNlbGVjdGlvbkdyb3VwRm9yTGVnaWJsZU1l
ZGlhKCldOwogI2VuZGlmCiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIFttX2F2UGxheWVySXRl
bS5nZXQoKSBzZWxlY3RNZWRpYU9wdGlvbjpzdGF0aWNfY2FzdDxJbmJhbmRUZXh0VHJhY2tQcml2
YXRlQVZGT2JqQyo+KHRyYWNrKS0+bWVkaWFTZWxlY3Rpb25PcHRpb24oKSBpbk1lZGlhU2VsZWN0
aW9uR3JvdXA6c2FmZU1lZGlhU2VsZWN0aW9uR3JvdXBGb3JMZWdpYmxlTWVkaWEoKV07CisgICAg
ICAgICAgICBbbV9hdlBsYXllckl0ZW0gc2VsZWN0TWVkaWFPcHRpb246c3RhdGljX2Nhc3Q8SW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMqPih0cmFjayktPm1lZGlhU2VsZWN0aW9uT3B0aW9u
KCkgaW5NZWRpYVNlbGVjdGlvbkdyb3VwOnNhZmVNZWRpYVNlbGVjdGlvbkdyb3VwRm9yTGVnaWJs
ZU1lZGlhKCldOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIFttX2F2UGxheWVySXRlbS5nZXQoKSBz
ZWxlY3RNZWRpYU9wdGlvbjowIGluTWVkaWFTZWxlY3Rpb25Hcm91cDpzYWZlTWVkaWFTZWxlY3Rp
b25Hcm91cEZvckxlZ2libGVNZWRpYSgpXTsKKyAgICAgICAgW21fYXZQbGF5ZXJJdGVtIHNlbGVj
dE1lZGlhT3B0aW9uOjAgaW5NZWRpYVNlbGVjdGlvbkdyb3VwOnNhZmVNZWRpYVNlbGVjdGlvbkdy
b3VwRm9yTGVnaWJsZU1lZGlhKCldOwogICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19CRUdJTgotICAgICAgICBbbV9hdlBsYXllci5nZXQoKSBzZXRDbG9zZWRDYXB0aW9uRGlz
cGxheUVuYWJsZWQ6Tk9dOworICAgICAgICBbbV9hdlBsYXllciBzZXRDbG9zZWRDYXB0aW9uRGlz
cGxheUVuYWJsZWQ6Tk9dOwogICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19F
TkQKICAgICB9CiAKQEAgLTI5MzYsOSArMjkzNiw5IEBAIFN0cmluZyBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpsYW5ndWFnZU9mUHJpbWFyeUF1ZGlvVHJhY2soKSBjb25zdAog
ICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAogICAgIC8vIElmIEFWRm91bmRhdGlvbiBo
YXMgYW4gYXVkaWJsZSBncm91cCwgcmV0dXJuIHRoZSBsYW5ndWFnZSBvZiB0aGUgY3VycmVudGx5
IHNlbGVjdGVkIGF1ZGlibGUgb3B0aW9uLgotICAgIEFWTWVkaWFTZWxlY3Rpb25Hcm91cCAqYXVk
aWJsZUdyb3VwID0gW21fYXZBc3NldC5nZXQoKSBtZWRpYVNlbGVjdGlvbkdyb3VwRm9yTWVkaWFD
aGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNBdWRpYmxlXTsKKyAgICBBVk1lZGlh
U2VsZWN0aW9uR3JvdXAgKmF1ZGlibGVHcm91cCA9IFttX2F2QXNzZXQgbWVkaWFTZWxlY3Rpb25H
cm91cEZvck1lZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRpYUNoYXJhY3RlcmlzdGljQXVkaWJsZV07
CiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICBBVk1lZGlhU2Vs
ZWN0aW9uT3B0aW9uICpjdXJyZW50bHlTZWxlY3RlZEF1ZGlibGVPcHRpb24gPSBbbV9hdlBsYXll
ckl0ZW0uZ2V0KCkgc2VsZWN0ZWRNZWRpYU9wdGlvbkluTWVkaWFTZWxlY3Rpb25Hcm91cDphdWRp
YmxlR3JvdXBdOworICAgIEFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKmN1cnJlbnRseVNlbGVjdGVk
QXVkaWJsZU9wdGlvbiA9IFttX2F2UGxheWVySXRlbSBzZWxlY3RlZE1lZGlhT3B0aW9uSW5NZWRp
YVNlbGVjdGlvbkdyb3VwOmF1ZGlibGVHcm91cF07CiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNM
QVJBVElPTlNfRU5ECiAgICAgaWYgKGN1cnJlbnRseVNlbGVjdGVkQXVkaWJsZU9wdGlvbikgewog
ICAgICAgICBtX2xhbmd1YWdlT2ZQcmltYXJ5QXVkaW9UcmFjayA9IFtbY3VycmVudGx5U2VsZWN0
ZWRBdWRpYmxlT3B0aW9uIGxvY2FsZV0gbG9jYWxlSWRlbnRpZmllcl07CkBAIC0yOTQ5LDcgKzI5
NDksNyBAQCBTdHJpbmcgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6bGFuZ3Vh
Z2VPZlByaW1hcnlBdWRpb1RyYWNrKCkgY29uc3QKIAogICAgIC8vIEFWRm91bmRhdGlvbiBzeW50
aGVzaXplcyBhbiBhdWRpYmxlIGdyb3VwIHdoZW4gdGhlcmUgaXMgb25seSBvbmUgdW5ncm91cGVk
IGF1ZGlvIHRyYWNrIGlmIHRoZXJlIGlzIGFsc28gYSBsZWdpYmxlIGdyb3VwIChvbmUgb3IKICAg
ICAvLyBtb3JlIGluLWJhbmQgdGV4dCB0cmFja3MpLiBJdCBkb2Vzbid0IGtub3cgYWJvdXQgb3V0
LW9mLWJhbmQgdHJhY2tzLCBzbyBpZiB0aGVyZSBpcyBhIHNpbmdsZSBhdWRpbyB0cmFjayByZXR1
cm4gaXRzIGxhbmd1YWdlLgotICAgIE5TQXJyYXkgKnRyYWNrcyA9IFttX2F2QXNzZXQuZ2V0KCkg
dHJhY2tzV2l0aE1lZGlhVHlwZTpBVk1lZGlhVHlwZUF1ZGlvXTsKKyAgICBOU0FycmF5ICp0cmFj
a3MgPSBbbV9hdkFzc2V0IHRyYWNrc1dpdGhNZWRpYVR5cGU6QVZNZWRpYVR5cGVBdWRpb107CiAg
ICAgaWYgKCF0cmFja3MgfHwgW3RyYWNrcyBjb3VudF0gIT0gMSkgewogICAgICAgICBtX2xhbmd1
YWdlT2ZQcmltYXJ5QXVkaW9UcmFjayA9IGVtcHR5U3RyaW5nKCk7CiAgICAgICAgIElORk9fTE9H
KExPR0lERU5USUZJRVIsIHRyYWNrcyA/IFt0cmFja3MgY291bnRdIDogMCwgIiBhdWRpbyB0cmFj
a3MsIHJldHVybmluZyBlbXB0eSIpOwpAQCAtMzExMiw3ICszMTEyLDcgQEAgYm9vbCBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxl
ZCgpIGNvbnN0CiAgICAgaWYgKCFtX2F2UGxheWVyKQogICAgICAgICByZXR1cm4gIW1fYWxsb3dz
V2lyZWxlc3NWaWRlb1BsYXliYWNrOwogCi0gICAgbV9hbGxvd3NXaXJlbGVzc1ZpZGVvUGxheWJh
Y2sgPSBbbV9hdlBsYXllci5nZXQoKSBhbGxvd3NFeHRlcm5hbFBsYXliYWNrXTsKKyAgICBtX2Fs
bG93c1dpcmVsZXNzVmlkZW9QbGF5YmFjayA9IFttX2F2UGxheWVyIGFsbG93c0V4dGVybmFsUGxh
eWJhY2tdOwogICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICFtX2FsbG93c1dpcmVsZXNzVmlk
ZW9QbGF5YmFjayk7CiAKICAgICByZXR1cm4gIW1fYWxsb3dzV2lyZWxlc3NWaWRlb1BsYXliYWNr
OwpAQCAtMzEyNiw3ICszMTI2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChib29sIGQKICAgICAgICAg
cmV0dXJuOwogCiAgICAgc2V0RGVsYXlDYWxsYmFja3ModHJ1ZSk7Ci0gICAgW21fYXZQbGF5ZXIu
Z2V0KCkgc2V0QWxsb3dzRXh0ZXJuYWxQbGF5YmFjazohZGlzYWJsZWRdOworICAgIFttX2F2UGxh
eWVyIHNldEFsbG93c0V4dGVybmFsUGxheWJhY2s6IWRpc2FibGVkXTsKICAgICBzZXREZWxheUNh
bGxiYWNrcyhmYWxzZSk7CiB9CiAKQEAgLTMxNjMsNyArMzE2Myw3IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQo
Ym9vbCBzaG91CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgUmV0YWluUHRyPEFWT3V0
cHV0Q29udGV4dD4gY3VycmVudENvbnRleHQgPSBtX2F2UGxheWVyLmdldCgpLm91dHB1dENvbnRl
eHQ7Ci0gICAgICAgIGlmICgoIW5ld0NvbnRleHQgJiYgIWN1cnJlbnRDb250ZXh0LmdldCgpKSB8
fCBbY3VycmVudENvbnRleHQuZ2V0KCkgaXNFcXVhbDpuZXdDb250ZXh0XSkKKyAgICAgICAgaWYg
KCghbmV3Q29udGV4dCAmJiAhY3VycmVudENvbnRleHQuZ2V0KCkpIHx8IFtjdXJyZW50Q29udGV4
dCBpc0VxdWFsOm5ld0NvbnRleHRdKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHNl
dERlbGF5Q2FsbGJhY2tzKHRydWUpOwpAQCAtMzM3OSw3ICszMzc5LDcgQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjptZXRhZGF0YURpZEFycml2ZShjb25zdCBSZXRh
aW5QdHI8TlNBcnIKIHsKICAgICBtX2N1cnJlbnRNZXRhRGF0YSA9IG1ldGFkYXRhICYmICFbbWV0
YWRhdGEgaXNLaW5kT2ZDbGFzczpbTlNOdWxsIGNsYXNzXV0gPyBtZXRhZGF0YSA6IG5pbDsKIAot
ICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJhZGRpbmcgIiwgbV9jdXJyZW50TWV0YURhdGEg
PyBbbV9jdXJyZW50TWV0YURhdGEuZ2V0KCkgY291bnRdIDogMCwgIiBhdCB0aW1lICIsIG1lZGlh
VGltZSk7CisgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgImFkZGluZyAiLCBtX2N1cnJlbnRN
ZXRhRGF0YSA/IFttX2N1cnJlbnRNZXRhRGF0YSBjb3VudF0gOiAwLCAiIGF0IHRpbWUgIiwgbWVk
aWFUaW1lKTsKIAogI2lmIEVOQUJMRShEQVRBQ1VFX1ZBTFVFKQogICAgIGlmIChzZWVraW5nKCkp
CkBAIC0zODQxLDcgKzM4NDEsNyBAQCAtICh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6a2V5
UGF0aCBvZk9iamVjdDooaWQpb2JqZWN0IGNoYW5nZTooTlNEaWN0aW9uYXJ5CiAgICAgICAgICAg
ICAgICAgICAgICAgICBwbGF5ZXItPmxvZ2dlcigpLmRlYnVnKHBsYXllci0+bG9nQ2hhbm5lbCgp
LCBpZGVudGlmaWVyLCAiZGlkIGNoYW5nZSAnIiwgW2tleVBhdGggVVRGOFN0cmluZ10sICInIHRv
ICIsIFBBTDo6dG9NZWRpYVRpbWUoW25ld1ZhbHVlIENNVGltZVZhbHVlXSkpOwogICAgICAgICAg
ICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIFJldGFpblB0cjxOU1N0
cmluZz4gdmFsdWVTdHJpbmcgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRm9y
bWF0OkAiJUAiLCBuZXdWYWx1ZV0pOwotICAgICAgICAgICAgICAgICAgICAgICAgcGxheWVyLT5s
b2dnZXIoKS5kZWJ1ZyhwbGF5ZXItPmxvZ0NoYW5uZWwoKSwgaWRlbnRpZmllciwgImRpZCBjaGFu
Z2UgJyIsIFtrZXlQYXRoIFVURjhTdHJpbmddLCAiJyB0byAiLCBbdmFsdWVTdHJpbmcuZ2V0KCkg
VVRGOFN0cmluZ10pOworICAgICAgICAgICAgICAgICAgICAgICAgcGxheWVyLT5sb2dnZXIoKS5k
ZWJ1ZyhwbGF5ZXItPmxvZ0NoYW5uZWwoKSwgaWRlbnRpZmllciwgImRpZCBjaGFuZ2UgJyIsIFtr
ZXlQYXRoIFVURjhTdHJpbmddLCAiJyB0byAiLCBbdmFsdWVTdHJpbmcgVVRGOFN0cmluZ10pOwog
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAg
ICAgICAgICAgIHBsYXllci0+bG9nZ2VyKCkuZGVidWcocGxheWVyLT5sb2dDaGFubmVsKCksIGlk
ZW50aWZpZXIsIHdpbGxDaGFuZ2UgPyAid2lsbCIgOiAiZGlkIiwgIiBjaGFuZ2UgJyIsIFtrZXlQ
YXRoIFVURjhTdHJpbmddLCAiJyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyLm1tCmluZGV4IGViMjQzNjVjNzFhN2IwYTJkYjljZjhlNTM0
YjI2OGU3ODgyYTlmMTQuLjE4YTRmYmE5ODUyNzE4YTQ1YjlkNTRiMjZhNTgzZGU5Yzg0YTAzODMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2Fk
ZXIubW0KQEAgLTI4NCw3ICsyODQsNyBAQCB2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6
c3RhcnRMb2FkaW5nKCkKICAgICBpZiAobV9kYXRhVVJMTWVkaWFMb2FkZXIgfHwgbV9yZXNvdXJj
ZU1lZGlhTG9hZGVyIHx8IG1fcGxhdGZvcm1NZWRpYUxvYWRlciB8fCAhbV9wYXJlbnQpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIE5TVVJMUmVxdWVzdCAqbnNSZXF1ZXN0ID0gW21fYXZSZXF1ZXN0
LmdldCgpIHJlcXVlc3RdOworICAgIE5TVVJMUmVxdWVzdCAqbnNSZXF1ZXN0ID0gW21fYXZSZXF1
ZXN0IHJlcXVlc3RdOwogCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QobnNSZXF1ZXN0KTsK
ICAgICByZXF1ZXN0LnNldFByaW9yaXR5KFJlc291cmNlTG9hZFByaW9yaXR5OjpMb3cpOwpAQCAt
MzE0LDcgKzMxNCw3IEBAIHZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpzdGFydExvYWRp
bmcoKQogICAgIH0KIAogICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHN0YXJ0IGxvYWQgZm9yIG1l
ZGlhIGF0IHVybCAlcyIsIFtbW25zUmVxdWVzdCBVUkxdIGFic29sdXRlU3RyaW5nXSBVVEY4U3Ry
aW5nXSk7Ci0gICAgW21fYXZSZXF1ZXN0LmdldCgpIGZpbmlzaExvYWRpbmdXaXRoRXJyb3I6MF07
CisgICAgW21fYXZSZXF1ZXN0IGZpbmlzaExvYWRpbmdXaXRoRXJyb3I6MF07CiB9CiAKIHZvaWQg
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpzdG9wTG9hZGluZygpCkBAIC0zNDYsNyArMzQ2LDcg
QEAgdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UKIHsKICAgICBpbnQgc3RhdHVzID0gcmVzcG9uc2Uu
aHR0cFN0YXR1c0NvZGUoKTsKICAgICBpZiAoc3RhdHVzICYmIChzdGF0dXMgPCAyMDAgfHwgc3Rh
dHVzID4gMjk5KSkgewotICAgICAgICBbbV9hdlJlcXVlc3QuZ2V0KCkgZmluaXNoTG9hZGluZ1dp
dGhFcnJvcjowXTsKKyAgICAgICAgW21fYXZSZXF1ZXN0IGZpbmlzaExvYWRpbmdXaXRoRXJyb3I6
MF07CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTM1NCw3ICszNTQsNyBAQCB2b2lkIFdl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZQogICAgIGlmIChjb250ZW50UmFuZ2UuaXNWYWxpZCgpKQogICAgICAg
ICBtX3Jlc3BvbnNlT2Zmc2V0ID0gc3RhdGljX2Nhc3Q8TlNVSW50ZWdlcj4oY29udGVudFJhbmdl
LmZpcnN0Qnl0ZVBvc2l0aW9uKCkpOwogCi0gICAgaWYgKEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdD
b250ZW50SW5mb3JtYXRpb25SZXF1ZXN0KiBjb250ZW50SW5mbyA9IFttX2F2UmVxdWVzdC5nZXQo
KSBjb250ZW50SW5mb3JtYXRpb25SZXF1ZXN0XSkgeworICAgIGlmIChBVkFzc2V0UmVzb3VyY2VM
b2FkaW5nQ29udGVudEluZm9ybWF0aW9uUmVxdWVzdCogY29udGVudEluZm8gPSBbbV9hdlJlcXVl
c3QgY29udGVudEluZm9ybWF0aW9uUmVxdWVzdF0pIHsKICAgICAgICAgU3RyaW5nIHV0aSA9IFVU
SUZyb21NSU1FVHlwZShyZXNwb25zZS5taW1lVHlwZSgpKTsKIAogICAgICAgICBbY29udGVudElu
Zm8gc2V0Q29udGVudFR5cGU6dXRpXTsKQEAgLTM2Niw3ICszNjYsNyBAQCB2b2lkIFdlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZQogICAgICAgICAgICAgW2NvbnRlbnRJbmZvIHNldEVudGlyZUxlbmd0aEF2YWls
YWJsZU9uRGVtYW5kOllFU107CiAKICAgICAgICAgaWYgKCFbbV9hdlJlcXVlc3QgZGF0YVJlcXVl
c3RdKSB7Ci0gICAgICAgICAgICBbbV9hdlJlcXVlc3QuZ2V0KCkgZmluaXNoTG9hZGluZ107Cisg
ICAgICAgICAgICBbbV9hdlJlcXVlc3QgZmluaXNoTG9hZGluZ107CiAgICAgICAgICAgICBzdG9w
TG9hZGluZygpOwogICAgICAgICB9CiAgICAgfQpAQCAtMzc2LDE2ICszNzYsMTYgQEAgdm9pZCBX
ZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OmxvYWRGYWlsZWQoY29uc3QgUmVzb3VyY2VFcnJvciYg
ZXJyb3IpCiB7CiAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzEzOTg3NDE3PiBTZXQgdGhlIGNvbnRl
bnRUeXBlIG9mIHRoZSBjb250ZW50SW5mb3JtYXRpb25SZXF1ZXN0IHRvIGFuIGVtcHR5CiAgICAg
Ly8gc3RyaW5nIHRvIHRyaWdnZXIgQVZBc3NldCdzIHBsYXlhYmxlIHZhbHVlIHRvIGNvbXBsZXRl
IGxvYWRpbmcuCi0gICAgaWYgKFttX2F2UmVxdWVzdC5nZXQoKSBjb250ZW50SW5mb3JtYXRpb25S
ZXF1ZXN0XSAmJiAhW1ttX2F2UmVxdWVzdC5nZXQoKSBjb250ZW50SW5mb3JtYXRpb25SZXF1ZXN0
XSBjb250ZW50VHlwZV0pCi0gICAgICAgIFtbbV9hdlJlcXVlc3QuZ2V0KCkgY29udGVudEluZm9y
bWF0aW9uUmVxdWVzdF0gc2V0Q29udGVudFR5cGU6QCIiXTsKKyAgICBpZiAoW21fYXZSZXF1ZXN0
IGNvbnRlbnRJbmZvcm1hdGlvblJlcXVlc3RdICYmICFbW21fYXZSZXF1ZXN0IGNvbnRlbnRJbmZv
cm1hdGlvblJlcXVlc3RdIGNvbnRlbnRUeXBlXSkKKyAgICAgICAgW1ttX2F2UmVxdWVzdCBjb250
ZW50SW5mb3JtYXRpb25SZXF1ZXN0XSBzZXRDb250ZW50VHlwZTpAIiJdOwogCi0gICAgW21fYXZS
ZXF1ZXN0LmdldCgpIGZpbmlzaExvYWRpbmdXaXRoRXJyb3I6ZXJyb3IubnNFcnJvcigpXTsKKyAg
ICBbbV9hdlJlcXVlc3QgZmluaXNoTG9hZGluZ1dpdGhFcnJvcjplcnJvci5uc0Vycm9yKCldOwog
ICAgIHN0b3BMb2FkaW5nKCk7CiB9CiAKIHZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjps
b2FkRmluaXNoZWQoKQogewotICAgIFttX2F2UmVxdWVzdC5nZXQoKSBmaW5pc2hMb2FkaW5nXTsK
KyAgICBbbV9hdlJlcXVlc3QgZmluaXNoTG9hZGluZ107CiAgICAgc3RvcExvYWRpbmcoKTsKIH0K
IApAQCAtNDMwLDcgKzQzMCw3IEBAIHZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpuZXdE
YXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQogICAgICAgICByZXR1
cm47CiAKICAgICBpZiAoZGF0YVJlcXVlc3QuY3VycmVudE9mZnNldCArIGRhdGFSZXF1ZXN0LnJl
cXVlc3RlZExlbmd0aCA+PSBkYXRhUmVxdWVzdC5yZXF1ZXN0ZWRPZmZzZXQpIHsKLSAgICAgICAg
W21fYXZSZXF1ZXN0LmdldCgpIGZpbmlzaExvYWRpbmddOworICAgICAgICBbbV9hdlJlcXVlc3Qg
ZmluaXNoTG9hZGluZ107CiAgICAgICAgIHN0b3BMb2FkaW5nKCk7CiAgICAgfQogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVGV4dFRyYWNrUmVw
cmVzZW50YXRpb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1RleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EubW0KaW5kZXggNGE1NTUzMTYyYTk2M2Fi
YTY4ODI2MzU1NGQxN2QwZTZmYWQwYjA0Ni4uOWNkNzA3MjI1ZWI2YTNmZjQwZTExNDRhM2NlZDVm
OWUwZWM2NDg4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLm1t
CkBAIC0xMTcsMzUgKzExNywzNSBAQCBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hOjpUZXh0
VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hKFRleHRUcmFja1JlcHJlc2VudGF0aQogICAgICwgbV9s
YXllcihhZG9wdE5TKFtbQ0FMYXllciBhbGxvY10gaW5pdF0pKQogICAgICwgbV9kZWxlZ2F0ZShh
ZG9wdE5TKFtbV2ViQ29yZVRleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2FIZWxwZXIgYWxsb2Nd
IGluaXRXaXRoUGFyZW50OnRoaXNdKSkKIHsKLSAgICBbbV9sYXllci5nZXQoKSBzZXREZWxlZ2F0
ZTptX2RlbGVnYXRlLmdldCgpXTsKLSAgICBbbV9sYXllci5nZXQoKSBzZXRDb250ZW50c0dyYXZp
dHk6a0NBR3Jhdml0eUJvdHRvbV07CisgICAgW21fbGF5ZXIgc2V0RGVsZWdhdGU6bV9kZWxlZ2F0
ZS5nZXQoKV07CisgICAgW21fbGF5ZXIgc2V0Q29udGVudHNHcmF2aXR5OmtDQUdyYXZpdHlCb3R0
b21dOwogfQogCiBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hOjp+VGV4dFRyYWNrUmVwcmVz
ZW50YXRpb25Db2NvYSgpCiB7Ci0gICAgW21fbGF5ZXIuZ2V0KCkgc2V0RGVsZWdhdGU6bmlsXTsK
LSAgICBbbV9kZWxlZ2F0ZS5nZXQoKSBzZXRQYXJlbnQ6bnVsbHB0cl07CisgICAgW21fbGF5ZXIg
c2V0RGVsZWdhdGU6bmlsXTsKKyAgICBbbV9kZWxlZ2F0ZSBzZXRQYXJlbnQ6bnVsbHB0cl07CiB9
CiAKIHZvaWQgVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYTo6dXBkYXRlKCkKIHsKICAgICBp
ZiAoYXV0byByZXByZXNlbnRhdGlvbiA9IG1fY2xpZW50LmNyZWF0ZVRleHRUcmFja1JlcHJlc2Vu
dGF0aW9uSW1hZ2UoKSkKLSAgICAgICAgW21fbGF5ZXIuZ2V0KCkgc2V0Q29udGVudHM6KF9fYnJp
ZGdlIGlkKXJlcHJlc2VudGF0aW9uLT5uYXRpdmVJbWFnZSgpLT5wbGF0Zm9ybUltYWdlKCkuZ2V0
KCldOworICAgICAgICBbbV9sYXllciBzZXRDb250ZW50czooX19icmlkZ2UgaWQpcmVwcmVzZW50
YXRpb24tPm5hdGl2ZUltYWdlKCktPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKV07CiB9CiAKIHZvaWQg
VGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYTo6c2V0Q29udGVudFNjYWxlKGZsb2F0IHNjYWxl
KQogewotICAgIFttX2xheWVyLmdldCgpIHNldENvbnRlbnRzU2NhbGU6c2NhbGVdOworICAgIFtt
X2xheWVyIHNldENvbnRlbnRzU2NhbGU6c2NhbGVdOwogfQogCiB2b2lkIFRleHRUcmFja1JlcHJl
c2VudGF0aW9uQ29jb2E6OnNldEhpZGRlbihib29sIGhpZGRlbikgY29uc3QKIHsKLSAgICBbbV9s
YXllci5nZXQoKSBzZXRIaWRkZW46aGlkZGVuXTsKKyAgICBbbV9sYXllciBzZXRIaWRkZW46aGlk
ZGVuXTsKIH0KIAogSW50UmVjdCBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hOjpib3VuZHMo
KSBjb25zdAogewotICAgIHJldHVybiBlbmNsb3NpbmdJbnRSZWN0KEZsb2F0UmVjdChbbV9sYXll
ci5nZXQoKSBib3VuZHNdKSk7CisgICAgcmV0dXJuIGVuY2xvc2luZ0ludFJlY3QoRmxvYXRSZWN0
KFttX2xheWVyIGJvdW5kc10pKTsKIH0KIAogdm9pZCBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNv
Y29hOjpib3VuZHNDaGFuZ2VkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9EcmFnSW1hZ2VJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvRHJhZ0lt
YWdlSU9TLm1tCmluZGV4IGNlOGM3ZDQ4MTc5MGE4YTY1ZGViMWZhYmI1YjAxMTVhMzYzN2M4OWYu
LmVhMmU4NjEzNDM1YWFkZmI4YTM4OGMwYzZlNWZlYWU1YWJmMWI0N2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9EcmFnSW1hZ2VJT1MubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5tbQpAQCAtNjksNyArNjksNyBAQCBEcmFn
SW1hZ2VSZWYgc2NhbGVEcmFnSW1hZ2UoRHJhZ0ltYWdlUmVmIGltYWdlLCBGbG9hdFNpemUgc2Nh
bGUpCiAgICAgQ0dSZWN0IGltYWdlUmVjdCA9IHsgQ0dQb2ludFplcm8sIGltYWdlU2l6ZSB9Owog
CiAgICAgUmV0YWluUHRyPFVJR3JhcGhpY3NJbWFnZVJlbmRlcmVyPiByZW5kZXIgPSBhZG9wdE5T
KFtQQUw6OmFsbG9jVUlHcmFwaGljc0ltYWdlUmVuZGVyZXJJbnN0YW5jZSgpIGluaXRXaXRoU2l6
ZTppbWFnZVNpemVdKTsKLSAgICBVSUltYWdlICppbWFnZUNvcHkgPSBbcmVuZGVyLmdldCgpIGlt
YWdlV2l0aEFjdGlvbnM6XihVSUdyYXBoaWNzSW1hZ2VSZW5kZXJlckNvbnRleHQgKnJlbmRlcmVy
Q29udGV4dCkgeworICAgIFVJSW1hZ2UgKmltYWdlQ29weSA9IFtyZW5kZXIgaW1hZ2VXaXRoQWN0
aW9uczpeKFVJR3JhcGhpY3NJbWFnZVJlbmRlcmVyQ29udGV4dCAqcmVuZGVyZXJDb250ZXh0KSB7
CiAgICAgICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcmVuZGVyZXJDb250ZXh0LkNHQ29udGV4
dDsKICAgICAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGNvbnRleHQsIDAsIGltYWdlU2l6ZS5o
ZWlnaHQpOwogICAgICAgICBDR0NvbnRleHRTY2FsZUNUTShjb250ZXh0LCAxLCAtMSk7CkBAIC05
NCw3ICs5NCw3IEBAIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2Uq
IGltYWdlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uCiAgICAgfQogCiAgICAgUmV0YWlu
UHRyPFVJR3JhcGhpY3NJbWFnZVJlbmRlcmVyPiByZW5kZXIgPSBhZG9wdE5TKFtQQUw6OmFsbG9j
VUlHcmFwaGljc0ltYWdlUmVuZGVyZXJJbnN0YW5jZSgpIGluaXRXaXRoU2l6ZTppbWFnZVNpemVd
KTsKLSAgICBVSUltYWdlICppbWFnZUNvcHkgPSBbcmVuZGVyLmdldCgpIGltYWdlV2l0aEFjdGlv
bnM6XihVSUdyYXBoaWNzSW1hZ2VSZW5kZXJlckNvbnRleHQgKnJlbmRlcmVyQ29udGV4dCkgewor
ICAgIFVJSW1hZ2UgKmltYWdlQ29weSA9IFtyZW5kZXIgaW1hZ2VXaXRoQWN0aW9uczpeKFVJR3Jh
cGhpY3NJbWFnZVJlbmRlcmVyQ29udGV4dCAqcmVuZGVyZXJDb250ZXh0KSB7CiAgICAgICAgIEdy
YXBoaWNzQ29udGV4dENHIGNvbnRleHQocmVuZGVyZXJDb250ZXh0LkNHQ29udGV4dCk7CiAgICAg
ICAgIGNvbnRleHQudHJhbnNsYXRlKDAsIGltYWdlU2l6ZS5oZWlnaHQpOwogICAgICAgICBjb250
ZXh0LnNjYWxlKHsgYWRqdXN0ZWRJbWFnZVNjYWxlLCAtYWRqdXN0ZWRJbWFnZVNjYWxlIH0pOwpA
QCAtMjM4LDcgKzIzOCw3IEBAIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JSYW5nZShG
cmFtZSYgZnJhbWUsIGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgYm9vCiAKICAgICBhdXRvJiBp
bWFnZSA9ICp0ZXh0SW5kaWNhdG9yLT5jb250ZW50SW1hZ2UoKTsKICAgICBhdXRvIHJlbmRlciA9
IGFkb3B0TlMoW1BBTDo6YWxsb2NVSUdyYXBoaWNzSW1hZ2VSZW5kZXJlckluc3RhbmNlKCkgaW5p
dFdpdGhTaXplOmltYWdlLnNpemUoKV0pOwotICAgIFVJSW1hZ2UgKmZpbmFsSW1hZ2UgPSBbcmVu
ZGVyLmdldCgpIGltYWdlV2l0aEFjdGlvbnM6WyZpbWFnZV0oVUlHcmFwaGljc0ltYWdlUmVuZGVy
ZXJDb250ZXh0ICpyZW5kZXJlckNvbnRleHQpIHsKKyAgICBVSUltYWdlICpmaW5hbEltYWdlID0g
W3JlbmRlciBpbWFnZVdpdGhBY3Rpb25zOlsmaW1hZ2VdKFVJR3JhcGhpY3NJbWFnZVJlbmRlcmVy
Q29udGV4dCAqcmVuZGVyZXJDb250ZXh0KSB7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dENHIGNv
bnRleHQocmVuZGVyZXJDb250ZXh0LkNHQ29udGV4dCk7CiAgICAgICAgIGNvbnRleHQuZHJhd0lt
YWdlKGltYWdlLCBGbG9hdFBvaW50KCkpOwogICAgIH1dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0KaW5kZXggOTJkZTFkYzVmNjA1NmQ2MWE5YjMy
ZjI2Mjk3ZGI3ZGFlYWY0Mzg1Ni4uYzU2YTFhN2VhMGU1OGMxYmJlMTU2MWFjNzU1MWIwNjkwMzZh
NDMyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVD
YWNoZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hl
Lm1tCkBAIC03NSw3ICs3NSw3IEBAIExlZ2FjeVRpbGVDYWNoZTo6TGVnYWN5VGlsZUNhY2hlKFdB
S1dpbmRvdyogd2luZG93KQogCiBMZWdhY3lUaWxlQ2FjaGU6On5MZWdhY3lUaWxlQ2FjaGUoKQog
ewotICAgIFttX3RvbWJzdG9uZS5nZXQoKSBzZXREZWFkOnRydWVdOworICAgIFttX3RvbWJzdG9u
ZSBzZXREZWFkOnRydWVdOwogfQogCiBDR0Zsb2F0IExlZ2FjeVRpbGVDYWNoZTo6c2NyZWVuU2Nh
bGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2Fj
eVRpbGVMYXllclBvb2wubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGls
ZUxheWVyUG9vbC5tbQppbmRleCBiNGZkNzg4ZDkzYzU5N2U1MjI0OTA5YzgyOTM3Yjk5N2NmYmRl
NTU2Li5mMjMwZTM5ZTllZTk1MDYwMmQ0OWE1NTZmZTQ1ZjU2ZjhkMTlkZmMzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUxheWVyUG9vbC5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUxheWVyUG9vbC5tbQpAQCAt
NzIsOCArNzIsOCBAQCBMZWdhY3lUaWxlTGF5ZXJQb29sOjpMYXllckxpc3QmIExlZ2FjeVRpbGVM
YXllclBvb2w6Omxpc3RPZkxheWVyc1dpdGhTaXplKGNvbnN0CiAKIHZvaWQgTGVnYWN5VGlsZUxh
eWVyUG9vbDo6YWRkTGF5ZXIoY29uc3QgUmV0YWluUHRyPExlZ2FjeVRpbGVMYXllcj4mIGxheWVy
KQogewotICAgIEludFNpemUgbGF5ZXJTaXplKFtsYXllci5nZXQoKSBmcmFtZV0uc2l6ZSk7Ci0g
ICAgbGF5ZXJTaXplLnNjYWxlKFtsYXllci5nZXQoKSBjb250ZW50c1NjYWxlXSk7CisgICAgSW50
U2l6ZSBsYXllclNpemUoW2xheWVyIGZyYW1lXS5zaXplKTsKKyAgICBsYXllclNpemUuc2NhbGUo
W2xheWVyIGNvbnRlbnRzU2NhbGVdKTsKICAgICBpZiAoIWNhblJldXNlTGF5ZXJXaXRoU2l6ZShs
YXllclNpemUpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IDY0MGE0NTI2YzU3YWVl
ZTFmOTEyZGU3ZjU2M2U2MzczMTI2ZjEzZmUuLmRjY2E3NjkxNDk1MWZiODg4NTFkMDgyYmM0ODcx
MjlkOTRhOGYwZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0
Zm9ybVBhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bs
YXRmb3JtUGFzdGVib2FyZElPUy5tbQpAQCAtNzU4LDcgKzc1OCw3IEBAIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0
IFN0cmluZyYKIAogICAgIGlmICghW3Bhc3RlYm9hcmRJdGVtIGNvdW50XSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtwYXN0ZWJvYXJk
SXRlbS5nZXQoKSBvYmplY3RBdEluZGV4OjBdKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoW3Bhc3RlYm9hcmRJdGVtIG9iamVjdEF0SW5kZXg6MF0pOwogfQogCiBTdHJpbmcgUGxh
dGZvcm1QYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0
eXBlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRm
b3JtU3BlZWNoU3ludGhlc2l6ZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcklPUy5tbQppbmRleCAxNzU5NjI3OTBmMjZkNTI1ZjAy
ZTZiMTQ3MDBiZTFlMzBmNjUyMTg3Li41ODU4MjQ0NmJiNDYxYTJkNDY4YTA0NTVmYzkzN2NmMjk2
MTA4N2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcklPUy5tbQpAQCAtMjg0LDEyICsyODQsMTIgQEAgdm9p
ZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjppbml0aWFsaXplVm9pY2VMaXN0KCkKIAogdm9p
ZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpwYXVzZSgpCiB7Ci0gICAgW21fcGxhdGZvcm1T
cGVlY2hXcmFwcGVyLmdldCgpIHBhdXNlXTsKKyAgICBbbV9wbGF0Zm9ybVNwZWVjaFdyYXBwZXIg
cGF1c2VdOwogfQogCiB2b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OnJlc3VtZSgpCiB7
Ci0gICAgW21fcGxhdGZvcm1TcGVlY2hXcmFwcGVyLmdldCgpIHJlc3VtZV07CisgICAgW21fcGxh
dGZvcm1TcGVlY2hXcmFwcGVyIHJlc3VtZV07CiB9CiAKIHZvaWQgUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXplcjo6c3BlYWsoUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiYm
IHV0dGVyYW5jZSkKQEAgLTI5NywxNyArMjk3LDE3IEBAIHZvaWQgUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXplcjo6c3BlYWsoUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiYm
CiAgICAgaWYgKCFtX3BsYXRmb3JtU3BlZWNoV3JhcHBlcikKICAgICAgICAgbV9wbGF0Zm9ybVNw
ZWVjaFdyYXBwZXIgPSBhZG9wdE5TKFtbV2ViU3BlZWNoU3ludGhlc2lzV3JhcHBlciBhbGxvY10g
aW5pdFdpdGhTcGVlY2hTeW50aGVzaXplcjp0aGlzXSk7CiAKLSAgICBbbV9wbGF0Zm9ybVNwZWVj
aFdyYXBwZXIuZ2V0KCkgc3BlYWtVdHRlcmFuY2U6dXR0ZXJhbmNlLmdldCgpXTsKKyAgICBbbV9w
bGF0Zm9ybVNwZWVjaFdyYXBwZXIgc3BlYWtVdHRlcmFuY2U6dXR0ZXJhbmNlLmdldCgpXTsKIH0K
IAogdm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpjYW5jZWwoKQogewotICAgIFttX3Bs
YXRmb3JtU3BlZWNoV3JhcHBlci5nZXQoKSBjYW5jZWxdOworICAgIFttX3BsYXRmb3JtU3BlZWNo
V3JhcHBlciBjYW5jZWxdOwogfQogCiB2b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OnJl
c2V0U3RhdGUoKQogewotICAgIFttX3BsYXRmb3JtU3BlZWNoV3JhcHBlci5nZXQoKSBjYW5jZWxd
OworICAgIFttX3BsYXRmb3JtU3BlZWNoV3JhcHBlciBjYW5jZWxdOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KaW5kZXggNTk4MTM5ZmQwYWVhMDYy
MDZkNzRkMGFlN2IyMTY2MjdmYTA4ZjA3OS4uYWE1MjE3ZjhhM2FkNDIzOGViNzM3ZDM3YTExZmIx
NzFkZGU5NTc2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQpAQCAtMzYwLDcgKzM2MCw3IEBA
IC0gKHZvaWQpc2V0VmlkZW9HcmF2aXR5OihOU1N0cmluZyAqKXZpZGVvR3Jhdml0eQogICAgICAg
ICB2aWRlb0dyYXZpdHkgPSBBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0OwogI2VuZGlm
CiAKLSAgICBpZiAoW192aWRlb0dyYXZpdHkuZ2V0KCkgaXNFcXVhbFRvU3RyaW5nOnZpZGVvR3Jh
dml0eV0pCisgICAgaWYgKFtfdmlkZW9HcmF2aXR5IGlzRXF1YWxUb1N0cmluZzp2aWRlb0dyYXZp
dHldKQogICAgICAgICByZXR1cm47CiAKICAgICBfcHJldmlvdXNWaWRlb0dyYXZpdHkgPSBfdmlk
ZW9HcmF2aXR5OwpAQCAtNjQ3LDcgKzY0Nyw3IEBAIC0gKHZvaWQpZW50ZXJGdWxsU2NyZWVuQW5p
bWF0ZWQ6KEJPT0wpYW5pbWF0ZWQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wKICAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFlFUywgbmlsKTsKICAgICB9XTsKICNlbHNlCi0g
ICAgW19hdlBsYXllclZpZXdDb250cm9sbGVyLmdldCgpIGVudGVyRnVsbFNjcmVlbkFuaW1hdGVk
OmFuaW1hdGVkIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyXTsKKyAgICBbX2F2
UGxheWVyVmlld0NvbnRyb2xsZXIgZW50ZXJGdWxsU2NyZWVuQW5pbWF0ZWQ6YW5pbWF0ZWQgY29t
cGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXJdOwogI2VuZGlmCiB9CiAKQEAgLTY2Myw3
ICs2NjMsNyBAQCAtICh2b2lkKWV4aXRGdWxsU2NyZWVuQW5pbWF0ZWQ6KEJPT0wpYW5pbWF0ZWQg
Y29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wgcwogICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoWUVTLCBuaWwpOwogICAgIH1dOwogI2Vsc2UKLSAgICBbX2F2UGxheWVyVmlld0Nv
bnRyb2xsZXIuZ2V0KCkgZXhpdEZ1bGxTY3JlZW5BbmltYXRlZDphbmltYXRlZCBjb21wbGV0aW9u
SGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07CisgICAgW19hdlBsYXllclZpZXdDb250cm9sbGVy
IGV4aXRGdWxsU2NyZWVuQW5pbWF0ZWQ6YW5pbWF0ZWQgY29tcGxldGlvbkhhbmRsZXI6Y29tcGxl
dGlvbkhhbmRsZXJdOwogI2VuZGlmCiB9CiAKQEAgLTcwNCw3ICs3MDQsNyBAQCAtICh2b2lkKXN0
YXJ0UGljdHVyZUluUGljdHVyZSBNWV9OT19SRVRVUk4KICNpZiBQTEFURk9STShXQVRDSE9TKQog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogI2Vsc2UKLSAgICBbX2F2UGxheWVyVmlld0NvbnRy
b2xsZXIuZ2V0KCkgc3RhcnRQaWN0dXJlSW5QaWN0dXJlXTsKKyAgICBbX2F2UGxheWVyVmlld0Nv
bnRyb2xsZXIgc3RhcnRQaWN0dXJlSW5QaWN0dXJlXTsKICNlbmRpZgogfQogCkBAIC03MTMsNyAr
NzEzLDcgQEAgLSAodm9pZClzdG9wUGljdHVyZUluUGljdHVyZSBNWV9OT19SRVRVUk4KICNpZiBQ
TEFURk9STShXQVRDSE9TKQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogI2Vsc2UKLSAgICBb
X2F2UGxheWVyVmlld0NvbnRyb2xsZXIuZ2V0KCkgc3RvcFBpY3R1cmVJblBpY3R1cmVdOworICAg
IFtfYXZQbGF5ZXJWaWV3Q29udHJvbGxlciBzdG9wUGljdHVyZUluUGljdHVyZV07CiAjZW5kaWYK
IH0KIApAQCAtODA3LDcgKzgwNyw3IEBAIC0gKEFWUGxheWVyVmlld0NvbnRyb2xsZXIgKikgYXZQ
bGF5ZXJWaWV3Q29udHJvbGxlcgogCiAtICh2b2lkKXJlbW92ZUZyb21QYXJlbnRWaWV3Q29udHJv
bGxlcgogewotICAgIFtfYXZQbGF5ZXJWaWV3Q29udHJvbGxlci5nZXQoKSByZW1vdmVGcm9tUGFy
ZW50Vmlld0NvbnRyb2xsZXJdOworICAgIFtfYXZQbGF5ZXJWaWV3Q29udHJvbGxlciByZW1vdmVG
cm9tUGFyZW50Vmlld0NvbnRyb2xsZXJdOwogfQogQGVuZAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQppbmRleCAzMGE2YWE4
OGM1Y2U4MTAwMmE3YmVmMzJhYmJmMGY1NTllNWIxZjYzLi44YTc2NzZmZDg0ZjY4YmQyNjk4YzA4
MjI0N2YyNWNmODhmYWYwODUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KQEAgLTY1LDEyICs2NSwxMiBAQCBQbGF0Zm9y
bVBhc3RlYm9hcmQ6OlBsYXRmb3JtUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKQogCiB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4m
IHR5cGVzKQogewotICAgIHR5cGVzID0gbWFrZVZlY3RvcjxTdHJpbmc+KFttX3Bhc3RlYm9hcmQu
Z2V0KCkgdHlwZXNdKTsKKyAgICB0eXBlcyA9IG1ha2VWZWN0b3I8U3RyaW5nPihbbV9wYXN0ZWJv
YXJkIHR5cGVzXSk7CiB9CiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2Fy
ZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQogewotICAgIE5T
RGF0YSAqZGF0YSA9IFttX3Bhc3RlYm9hcmQuZ2V0KCkgZGF0YUZvclR5cGU6cGFzdGVib2FyZFR5
cGVdOworICAgIE5TRGF0YSAqZGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclR5cGU6cGFzdGVi
b2FyZFR5cGVdOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFkb3B0TlMoW2RhdGEgY29weV0pLmdldCgpKTsK
QEAgLTEwMCw3ICsxMDAsNyBAQCBpbnQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpudW1iZXJPZkZpbGVz
KCkgY29uc3QKIAogdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmdldFBhdGhuYW1lc0ZvclR5cGUo
VmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkg
Y29uc3QKIHsKLSAgICBpZCBwYXRocyA9IFttX3Bhc3RlYm9hcmQuZ2V0KCkgcHJvcGVydHlMaXN0
Rm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV07CisgICAgaWQgcGF0aHMgPSBbbV9wYXN0ZWJvYXJkIHBy
b3BlcnR5TGlzdEZvclR5cGU6cGFzdGVib2FyZFR5cGVdOwogICAgIGlmIChbcGF0aHMgaXNLaW5k
T2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkgewogICAgICAgICBwYXRobmFtZXMuYXBwZW5kKChO
U1N0cmluZyAqKXBhdGhzKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjgzLDcgKzI4Myw3IEBAIGlu
dDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGF0
YSYgZGF0YSkKIAogaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmNoYW5nZUNvdW50KCkgY29u
c3QKIHsKLSAgICByZXR1cm4gW21fcGFzdGVib2FyZC5nZXQoKSBjaGFuZ2VDb3VudF07CisgICAg
cmV0dXJuIFttX3Bhc3RlYm9hcmQgY2hhbmdlQ291bnRdOwogfQogCiBTdHJpbmcgUGxhdGZvcm1Q
YXN0ZWJvYXJkOjpwbGF0Zm9ybVBhc3RlYm9hcmRUeXBlRm9yU2FmZVR5cGVGb3JET01Ub1JlYWRB
bmRXcml0ZShjb25zdCBTdHJpbmcmIGRvbVR5cGUsIEluY2x1ZGVJbWFnZVR5cGVzIGluY2x1ZGVJ
bWFnZVR5cGVzKQpAQCAtMzE4LDEwICszMTgsMTAgQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9h
cmQ6OmNvcHkoY29uc3QgU3RyaW5nJiBmcm9tUGFzdGVib2FyZCkKICAgICBOU1Bhc3RlYm9hcmQq
IHBhc3RlYm9hcmQgPSBbTlNQYXN0ZWJvYXJkIHBhc3RlYm9hcmRXaXRoTmFtZTpmcm9tUGFzdGVi
b2FyZF07CiAgICAgTlNBcnJheSogdHlwZXMgPSBbcGFzdGVib2FyZCB0eXBlc107CiAKLSAgICBb
bV9wYXN0ZWJvYXJkLmdldCgpIGFkZFR5cGVzOnR5cGVzIG93bmVyOm5pbF07CisgICAgW21fcGFz
dGVib2FyZCBhZGRUeXBlczp0eXBlcyBvd25lcjpuaWxdOwogICAgIGZvciAoTlNVSW50ZWdlciBp
ID0gMDsgaSA8IFt0eXBlcyBjb3VudF07IGkrKykgewogICAgICAgICBOU1N0cmluZyogdHlwZSA9
IFt0eXBlcyBvYmplY3RBdEluZGV4OmldOwotICAgICAgICBpZiAoIVttX3Bhc3RlYm9hcmQuZ2V0
KCkgc2V0RGF0YTpbcGFzdGVib2FyZCBkYXRhRm9yVHlwZTp0eXBlXSBmb3JUeXBlOnR5cGVdKQor
ICAgICAgICBpZiAoIVttX3Bhc3RlYm9hcmQgc2V0RGF0YTpbcGFzdGVib2FyZCBkYXRhRm9yVHlw
ZTp0eXBlXSBmb3JUeXBlOnR5cGVdKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAg
IHJldHVybiBjaGFuZ2VDb3VudCgpOwpAQCAtMzI5LDcgKzMyOSw3IEBAIGludDY0X3QgUGxhdGZv
cm1QYXN0ZWJvYXJkOjpjb3B5KGNvbnN0IFN0cmluZyYgZnJvbVBhc3RlYm9hcmQpCiAKIGludDY0
X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjphZGRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFz
dGVib2FyZFR5cGVzKQogewotICAgIHJldHVybiBbbV9wYXN0ZWJvYXJkLmdldCgpIGFkZFR5cGVz
OmNyZWF0ZU5TQXJyYXkocGFzdGVib2FyZFR5cGVzKS5nZXQoKSBvd25lcjpuaWxdOworICAgIHJl
dHVybiBbbV9wYXN0ZWJvYXJkIGFkZFR5cGVzOmNyZWF0ZU5TQXJyYXkocGFzdGVib2FyZFR5cGVz
KS5nZXQoKSBvd25lcjpuaWxdOwogfQogCiBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0
VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcykKQEAgLTM2MCw3ICsz
NjAsNyBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0VVJMKGNvbnN0IFBhc3RlYm9h
cmRVUkwmIHBhc3RlYm9hcmRVUkwpCiAKICAgICBOU0FycmF5ICp1cmxXaXRoVGl0bGUgPSBAWyBA
WyB1cmxTdHJpbmcgXSwgQFsgcGFzdGVib2FyZFVSTC50aXRsZSBdIF07CiAgICAgTlNTdHJpbmcg
KnBhc3RlYm9hcmRUeXBlID0gW05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4U3RyaW5nOldlYlVSTHNX
aXRoVGl0bGVzUGJvYXJkVHlwZV07Ci0gICAgQk9PTCBkaWRXcml0ZURhdGEgPSBbbV9wYXN0ZWJv
YXJkLmdldCgpIHNldFByb3BlcnR5TGlzdDp1cmxXaXRoVGl0bGUgZm9yVHlwZTpwYXN0ZWJvYXJk
VHlwZV07CisgICAgQk9PTCBkaWRXcml0ZURhdGEgPSBbbV9wYXN0ZWJvYXJkIHNldFByb3BlcnR5
TGlzdDp1cmxXaXRoVGl0bGUgZm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV07CiAgICAgaWYgKCFkaWRX
cml0ZURhdGEpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0zODQsMzUgKzM4NCwzNSBAQCBpbnQ2
NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHN0
cmluZywgY29uc3QgU3RyaW5nJgogICAgIGlmIChwYXN0ZWJvYXJkVHlwZSA9PSBTdHJpbmcobGVn
YWN5VVJMUGFzdGVib2FyZFR5cGUoKSkpIHsKICAgICAgICAgLy8gV2UgY2Fubm90IGp1c3QgdXNl
IC1OU1Bhc3RlYm9hcmQgd3JpdGVPYmplY3RzOl0sIGJlY2F1c2UgLWRlY2xhcmVUeXBlcyBoYXMg
YmVlbiBhbHJlYWR5IGNhbGxlZCwgaW1wbGljaXRseSBjcmVhdGluZyBhbiBpdGVtLgogICAgICAg
ICBOU1VSTCAqdXJsID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6c3RyaW5nXTsKLSAgICAgICAgaWYg
KFtbbV9wYXN0ZWJvYXJkLmdldCgpIHR5cGVzXSBjb250YWluc09iamVjdDpsZWdhY3lVUkxQYXN0
ZWJvYXJkVHlwZSgpXSkgeworICAgICAgICBpZiAoW1ttX3Bhc3RlYm9hcmQgdHlwZXNdIGNvbnRh
aW5zT2JqZWN0OmxlZ2FjeVVSTFBhc3RlYm9hcmRUeXBlKCldKSB7CiAgICAgICAgICAgICBOU1VS
TCAqYmFzZSA9IFt1cmwgYmFzZVVSTF07CiAgICAgICAgICAgICBpZiAoYmFzZSkKLSAgICAgICAg
ICAgICAgICBkaWRXcml0ZURhdGEgPSBbbV9wYXN0ZWJvYXJkLmdldCgpIHNldFByb3BlcnR5TGlz
dDpAW1t1cmwgcmVsYXRpdmVTdHJpbmddLCBbYmFzZSBhYnNvbHV0ZVN0cmluZ11dIGZvclR5cGU6
bGVnYWN5VVJMUGFzdGVib2FyZFR5cGUoKV07CisgICAgICAgICAgICAgICAgZGlkV3JpdGVEYXRh
ID0gW21fcGFzdGVib2FyZCBzZXRQcm9wZXJ0eUxpc3Q6QFtbdXJsIHJlbGF0aXZlU3RyaW5nXSwg
W2Jhc2UgYWJzb2x1dGVTdHJpbmddXSBmb3JUeXBlOmxlZ2FjeVVSTFBhc3RlYm9hcmRUeXBlKCld
OwogICAgICAgICAgICAgZWxzZSBpZiAodXJsKQotICAgICAgICAgICAgICAgIGRpZFdyaXRlRGF0
YSA9IFttX3Bhc3RlYm9hcmQuZ2V0KCkgc2V0UHJvcGVydHlMaXN0OkBbW3VybCBhYnNvbHV0ZVN0
cmluZ10sIEAiIl0gZm9yVHlwZTpsZWdhY3lVUkxQYXN0ZWJvYXJkVHlwZSgpXTsKKyAgICAgICAg
ICAgICAgICBkaWRXcml0ZURhdGEgPSBbbV9wYXN0ZWJvYXJkIHNldFByb3BlcnR5TGlzdDpAW1t1
cmwgYWJzb2x1dGVTdHJpbmddLCBAIiJdIGZvclR5cGU6bGVnYWN5VVJMUGFzdGVib2FyZFR5cGUo
KV07CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgZGlkV3JpdGVEYXRhID0gW21f
cGFzdGVib2FyZC5nZXQoKSBzZXRQcm9wZXJ0eUxpc3Q6QFtAIiIsIEAiIl0gZm9yVHlwZTpsZWdh
Y3lVUkxQYXN0ZWJvYXJkVHlwZSgpXTsKKyAgICAgICAgICAgICAgICBkaWRXcml0ZURhdGEgPSBb
bV9wYXN0ZWJvYXJkIHNldFByb3BlcnR5TGlzdDpAW0AiIiwgQCIiXSBmb3JUeXBlOmxlZ2FjeVVS
TFBhc3RlYm9hcmRUeXBlKCldOwogCiAgICAgICAgICAgICBpZiAoIWRpZFdyaXRlRGF0YSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogCiBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19CRUdJTgotICAgICAgICBpZiAoW1ttX3Bhc3RlYm9hcmQuZ2V0KCkgdHlwZXNd
IGNvbnRhaW5zT2JqZWN0OihOU1N0cmluZyAqKWtVVFR5cGVVUkxdKSB7Ci0gICAgICAgICAgICBk
aWRXcml0ZURhdGEgPSBbbV9wYXN0ZWJvYXJkLmdldCgpIHNldFN0cmluZzpbdXJsIGFic29sdXRl
U3RyaW5nXSBmb3JUeXBlOihOU1N0cmluZyAqKWtVVFR5cGVVUkxdOworICAgICAgICBpZiAoW1tt
X3Bhc3RlYm9hcmQgdHlwZXNdIGNvbnRhaW5zT2JqZWN0OihOU1N0cmluZyAqKWtVVFR5cGVVUkxd
KSB7CisgICAgICAgICAgICBkaWRXcml0ZURhdGEgPSBbbV9wYXN0ZWJvYXJkIHNldFN0cmluZzpb
dXJsIGFic29sdXRlU3RyaW5nXSBmb3JUeXBlOihOU1N0cmluZyAqKWtVVFR5cGVVUkxdOwogICAg
ICAgICAgICAgaWYgKCFkaWRXcml0ZURhdGEpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgICAgIH0KIAotICAgICAgICBpZiAoW1ttX3Bhc3RlYm9hcmQuZ2V0KCkgdHlwZXNdIGNvbnRh
aW5zT2JqZWN0OihOU1N0cmluZyAqKWtVVFR5cGVGaWxlVVJMXSAmJiBbdXJsIGlzRmlsZVVSTF0p
IHsKLSAgICAgICAgICAgIGRpZFdyaXRlRGF0YSA9IFttX3Bhc3RlYm9hcmQuZ2V0KCkgc2V0U3Ry
aW5nOlt1cmwgYWJzb2x1dGVTdHJpbmddIGZvclR5cGU6KE5TU3RyaW5nICopa1VUVHlwZUZpbGVV
UkxdOworICAgICAgICBpZiAoW1ttX3Bhc3RlYm9hcmQgdHlwZXNdIGNvbnRhaW5zT2JqZWN0OihO
U1N0cmluZyAqKWtVVFR5cGVGaWxlVVJMXSAmJiBbdXJsIGlzRmlsZVVSTF0pIHsKKyAgICAgICAg
ICAgIGRpZFdyaXRlRGF0YSA9IFttX3Bhc3RlYm9hcmQgc2V0U3RyaW5nOlt1cmwgYWJzb2x1dGVT
dHJpbmddIGZvclR5cGU6KE5TU3RyaW5nICopa1VUVHlwZUZpbGVVUkxdOwogICAgICAgICAgICAg
aWYgKCFkaWRXcml0ZURhdGEpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0K
IEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiAgICAgfSBlbHNlIHsKLSAgICAg
ICAgZGlkV3JpdGVEYXRhID0gW21fcGFzdGVib2FyZC5nZXQoKSBzZXRTdHJpbmc6c3RyaW5nIGZv
clR5cGU6cGFzdGVib2FyZFR5cGVdOworICAgICAgICBkaWRXcml0ZURhdGEgPSBbbV9wYXN0ZWJv
YXJkIHNldFN0cmluZzpzdHJpbmcgZm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV07CiAgICAgICAgIGlm
ICghZGlkV3JpdGVEYXRhKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJN
YWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplck1hYy5tbQppbmRleCAzNDNlYTY5NWJiMzlkMDE5NDRkZDE2ODI3MDM3MmVhZDkyOGNmMDgx
Li5mYTc0NjVmZjc1OWJiOWQ2OWQ0YTc5MWFkNzIyYmFlZGMxN2NkZTZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplck1hYy5tbQpAQCAtMjExLDcgKzIxMSw3IEBAIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6
OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNsCiAK
IFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6On5QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKCkK
IHsKLSAgICBbbV9wbGF0Zm9ybVNwZWVjaFdyYXBwZXIuZ2V0KCkgaW52YWxpZGF0ZV07CisgICAg
W21fcGxhdGZvcm1TcGVlY2hXcmFwcGVyIGludmFsaWRhdGVdOwogfQogCiBzdGF0aWMgUmV0YWlu
UHRyPENGQXJyYXlSZWY+IHNwZWVjaFN5bnRoZXNpc0dldFZvaWNlSWRlbnRpZmllcnMoKQpAQCAt
MjU4LDEyICsyNTgsMTIgQEAgdm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjppbml0aWFs
aXplVm9pY2VMaXN0KCkKIAogdm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpwYXVzZSgp
CiB7Ci0gICAgW21fcGxhdGZvcm1TcGVlY2hXcmFwcGVyLmdldCgpIHBhdXNlXTsKKyAgICBbbV9w
bGF0Zm9ybVNwZWVjaFdyYXBwZXIgcGF1c2VdOwogfQogCiB2b2lkIFBsYXRmb3JtU3BlZWNoU3lu
dGhlc2l6ZXI6OnJlc3VtZSgpCiB7Ci0gICAgW21fcGxhdGZvcm1TcGVlY2hXcmFwcGVyLmdldCgp
IHJlc3VtZV07CisgICAgW21fcGxhdGZvcm1TcGVlY2hXcmFwcGVyIHJlc3VtZV07CiB9CiAKIHZv
aWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6c3BlYWsoUmVmUHRyPFBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlPiYmIHV0dGVyYW5jZSkKQEAgLTI3MSwxNyArMjcxLDE3IEBAIHZv
aWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6c3BlYWsoUmVmUHRyPFBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlPiYmCiAgICAgaWYgKCFtX3BsYXRmb3JtU3BlZWNoV3JhcHBlcikK
ICAgICAgICAgbV9wbGF0Zm9ybVNwZWVjaFdyYXBwZXIgPSBhZG9wdE5TKFtbV2ViU3BlZWNoU3lu
dGhlc2lzV3JhcHBlciBhbGxvY10gaW5pdFdpdGhTcGVlY2hTeW50aGVzaXplcjp0aGlzXSk7CiAK
LSAgICBbbV9wbGF0Zm9ybVNwZWVjaFdyYXBwZXIuZ2V0KCkgc3BlYWtVdHRlcmFuY2U6dXR0ZXJh
bmNlLmdldCgpXTsKKyAgICBbbV9wbGF0Zm9ybVNwZWVjaFdyYXBwZXIgc3BlYWtVdHRlcmFuY2U6
dXR0ZXJhbmNlLmdldCgpXTsKIH0KIAogdm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpj
YW5jZWwoKQogewotICAgIFttX3BsYXRmb3JtU3BlZWNoV3JhcHBlci5nZXQoKSBjYW5jZWxdOwor
ICAgIFttX3BsYXRmb3JtU3BlZWNoV3JhcHBlciBjYW5jZWxdOwogfQogCiB2b2lkIFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXI6OnJlc2V0U3RhdGUoKQogewotICAgIFttX3BsYXRmb3JtU3BlZWNo
V3JhcHBlci5nZXQoKSBjYW5jZWxdOworICAgIFttX3BsYXRmb3JtU3BlZWNoV3JhcHBlciBjYW5j
ZWxdOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZU1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjLm1tCmlu
ZGV4IDE3NGJlMzFjZGNiYTMzMDc5Mzk5YTJhNDlkZDE1NDMzMTdiZDQzYTUuLjlkNWMxODRjMTZk
NjcxYWJhOThhYWJlMDRlZDEzZWJjOGM3NTcxOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9TZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjLm1tCkBA
IC05NSw3ICs5NSw3IEBAIGJvb2wgU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZU1hYzo6aXNFcXVh
bChjb25zdCBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlJiBvdGhlCiAgICAgaWYgKCFtX25hdGl2
ZVZhbHVlIHx8ICFvdGhlck9iakMtPm5hdGl2ZVZhbHVlKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIHJldHVybiBbbV9uYXRpdmVWYWx1ZS5nZXQoKSBpc0VxdWFsOm90aGVyT2JqQy0+
bmF0aXZlVmFsdWUoKV07CisgICAgcmV0dXJuIFttX25hdGl2ZVZhbHVlIGlzRXF1YWw6b3RoZXJP
YmpDLT5uYXRpdmVWYWx1ZSgpXTsKIH0KIAogU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZU1hYyog
dG9TZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjKFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWUq
IHJlcCkKQEAgLTExNyw3ICsxMTcsNyBAQCBOU0FycmF5ICpTZXJpYWxpemVkUGxhdGZvcm1EYXRh
Q3VlTWFjOjphbGxvd2VkQ2xhc3Nlc0Zvck5hdGl2ZVZhbHVlcygpCiAKIFNlcmlhbGl6ZWRQbGF0
Zm9ybURhdGFDdWVWYWx1ZSBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjOjplbmNvZGFibGVW
YWx1ZSgpIGNvbnN0CiB7Ci0gICAgaWYgKFttX25hdGl2ZVZhbHVlLmdldCgpIGlzS2luZE9mQ2xh
c3M6UEFMOjpnZXRBVk1ldGFkYXRhSXRlbUNsYXNzKCldKQorICAgIGlmIChbbV9uYXRpdmVWYWx1
ZSBpc0tpbmRPZkNsYXNzOlBBTDo6Z2V0QVZNZXRhZGF0YUl0ZW1DbGFzcygpXSkKICAgICAgICAg
cmV0dXJuIHsgU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlOjpQbGF0Zm9ybVR5cGU6Ok9i
akMsIE5TRGljdGlvbmFyeVdpdGhBVk1ldGFkYXRhSXRlbShtX25hdGl2ZVZhbHVlLmdldCgpKS5n
ZXQoKSB9OwogCiAgICAgcmV0dXJuIHsgU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlOjpQ
bGF0Zm9ybVR5cGU6Ok9iakMsIG1fbmF0aXZlVmFsdWUuZ2V0KCkgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmll
dy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlRnVsbFNjcmVlblBsYWNl
aG9sZGVyVmlldy5tbQppbmRleCBjMjJhMDBmZDdmZGZjZGJjNDUxMWQ4ZGYwNmYwMTU1YTYwNmZm
MDJkLi4xNzBkMzRiZjU2Y2Q3ZGJmMjFiNjUzYTdmNzkxYWM5MWI4NDFkNjUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRl
clZpZXcubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVGdWxsU2Ny
ZWVuUGxhY2Vob2xkZXJWaWV3Lm1tCkBAIC02Niw3ICs2Niw3IEBAIC0gKGlkKWluaXRXaXRoRnJh
bWU6KE5TUmVjdClmcmFtZVJlY3QKICAgICBfZXhpdFdhcm5pbmcuZ2V0KCkudGV4dENvbG9yID0g
W05TQ29sb3IgdGVydGlhcnlMYWJlbENvbG9yXTsKICAgICBbX2V4aXRXYXJuaW5nIHNpemVUb0Zp
dF07CiAKLSAgICBOU1JlY3Qgd2FybmluZ0ZyYW1lID0gW19leGl0V2FybmluZy5nZXQoKSBmcmFt
ZV07CisgICAgTlNSZWN0IHdhcm5pbmdGcmFtZSA9IFtfZXhpdFdhcm5pbmcgZnJhbWVdOwogICAg
IHdhcm5pbmdGcmFtZS5vcmlnaW4gPSBOU01ha2VQb2ludCgoZnJhbWVSZWN0LnNpemUud2lkdGgg
LSB3YXJuaW5nRnJhbWUuc2l6ZS53aWR0aCkgLyAyLCBmcmFtZVJlY3Quc2l6ZS5oZWlnaHQgLyAy
KTsKICAgICBfZXhpdFdhcm5pbmcuZ2V0KCkuZnJhbWUgPSB3YXJuaW5nRnJhbWU7CiAgICAgW19l
ZmZlY3RWaWV3IGFkZFN1YnZpZXc6X2V4aXRXYXJuaW5nLmdldCgpXTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3Lm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1Zp
ZXcubW0KaW5kZXggNWEyNjE5MWUyOWE4NDY4NmM2ZGNlMWVhZDBhNTUxMjQ1MTBjOTI5MS4uZmU4
YTZhYzMwZDU1ZmJmMGNjYmZlNmJkYzA5MTE0NzA5MzIzZDQxMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1Zp
ZXcubW0KQEAgLTU4LDEwICs1OCwxMCBAQCAtIChpZClpbml0V2l0aFRpdGxlOihOU1N0cmluZyop
dGl0bGUKICAgICBbc2VsZiBzZXRUaXRsZVBvc2l0aW9uOk5TTm9UaXRsZV07CiAKICAgICBfdGV4
dEZpZWxkID0gYWRvcHROUyhbW05TVGV4dEZpZWxkIGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVy
b1JlY3RdKTsKLSAgICBbX3RleHRGaWVsZC5nZXQoKSBzZXRFZGl0YWJsZTpOT107Ci0gICAgW190
ZXh0RmllbGQuZ2V0KCkgc2V0U2VsZWN0YWJsZTpOT107Ci0gICAgW190ZXh0RmllbGQuZ2V0KCkg
c2V0Qm9yZGVyZWQ6Tk9dOwotICAgIFtfdGV4dEZpZWxkLmdldCgpIHNldERyYXdzQmFja2dyb3Vu
ZDpOT107CisgICAgW190ZXh0RmllbGQgc2V0RWRpdGFibGU6Tk9dOworICAgIFtfdGV4dEZpZWxk
IHNldFNlbGVjdGFibGU6Tk9dOworICAgIFtfdGV4dEZpZWxkIHNldEJvcmRlcmVkOk5PXTsKKyAg
ICBbX3RleHRGaWVsZCBzZXREcmF3c0JhY2tncm91bmQ6Tk9dOwogCiAgICAgTlNGb250KiB0ZXh0
Rm9udCA9IFtOU0ZvbnQgYm9sZFN5c3RlbUZvbnRPZlNpemU6V2FybmluZ1ZpZXdUZXh0U2l6ZV07
CiAgICAgTlNDb2xvciogdGV4dENvbG9yID0gW05TQ29sb3IgY29sb3JXaXRoQ2FsaWJyYXRlZFdo
aXRlOldhcm5pbmdWaWV3VGV4dFdoaXRlIGFscGhhOldhcm5pbmdWaWV3VGV4dEFscGhhXTsKQEAg
LTcwLDkgKzcwLDkgQEAgLSAoaWQpaW5pdFdpdGhUaXRsZTooTlNTdHJpbmcqKXRpdGxlCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRDb2xvciwg
TlNGb3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBuaWxdKTsKICAgICBSZXRhaW5QdHI8TlNBdHRyaWJ1
dGVkU3RyaW5nPiB0ZXh0ID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5p
dFdpdGhTdHJpbmc6dGl0bGUgYXR0cmlidXRlczphdHRyaWJ1dGVzLmdldCgpXSk7Ci0gICAgW190
ZXh0RmllbGQuZ2V0KCkgc2V0QXR0cmlidXRlZFN0cmluZ1ZhbHVlOnRleHQuZ2V0KCldOwotICAg
IFtfdGV4dEZpZWxkLmdldCgpIHNpemVUb0ZpdF07Ci0gICAgTlNSZWN0IHRleHRGaWVsZEZyYW1l
ID0gW190ZXh0RmllbGQuZ2V0KCkgZnJhbWVdOworICAgIFtfdGV4dEZpZWxkIHNldEF0dHJpYnV0
ZWRTdHJpbmdWYWx1ZTp0ZXh0LmdldCgpXTsKKyAgICBbX3RleHRGaWVsZCBzaXplVG9GaXRdOwor
ICAgIE5TUmVjdCB0ZXh0RmllbGRGcmFtZSA9IFtfdGV4dEZpZWxkIGZyYW1lXTsKICAgICBOU1Np
emUgZnJhbWVTaXplID0gdGV4dEZpZWxkRnJhbWUuc2l6ZTsKICAgICBmcmFtZVNpemUud2lkdGgg
Kz0gV2FybmluZ1ZpZXdQYWRkaW5nICogMjsKICAgICBmcmFtZVNpemUuaGVpZ2h0ICs9IFdhcm5p
bmdWaWV3UGFkZGluZyAqIDI7CkBAIC04Myw5ICs4Myw5IEBAIC0gKGlkKWluaXRXaXRoVGl0bGU6
KE5TU3RyaW5nKil0aXRsZQogICAgICAgICAoZnJhbWVTaXplLmhlaWdodCAtIHRleHRGaWVsZEZy
YW1lLnNpemUuaGVpZ2h0KSAvIDIpOwogCiAgICAgLy8gT2Zmc2V0IHRoZSBvcmlnaW4gYnkgdGhl
IGZvbnQncyBkZXNjZW5kZXIsIHRvIGNlbnRlciB0aGUgdGV4dCBmaWVsZCBhYm91dCB0aGUgYmFz
ZWxpbmU6Ci0gICAgdGV4dEZpZWxkRnJhbWUub3JpZ2luLnkgKz0gW1tfdGV4dEZpZWxkLmdldCgp
IGZvbnRdIGRlc2NlbmRlcl07CisgICAgdGV4dEZpZWxkRnJhbWUub3JpZ2luLnkgKz0gW1tfdGV4
dEZpZWxkIGZvbnRdIGRlc2NlbmRlcl07CiAKLSAgICBbX3RleHRGaWVsZC5nZXQoKSBzZXRGcmFt
ZTpOU0ludGVncmFsUmVjdCh0ZXh0RmllbGRGcmFtZSldOworICAgIFtfdGV4dEZpZWxkIHNldEZy
YW1lOk5TSW50ZWdyYWxSZWN0KHRleHRGaWVsZEZyYW1lKV07CiAgICAgW3NlbGYgYWRkU3Vidmll
dzpfdGV4dEZpZWxkLmdldCgpXTsKIAogICAgIE5TQ29sb3IqIGJhY2tncm91bmRDb2xvciA9IFtO
U0NvbG9yIGNvbG9yV2l0aENhbGlicmF0ZWRXaGl0ZTpXYXJuaW5nVmlld0JhY2tncm91bmRXaGl0
ZSBhbHBoYTpXYXJuaW5nVmlld0JhY2tncm91bmRBbHBoYV07CkBAIC05Nyw5ICs5Nyw5IEBAIC0g
KGlkKWluaXRXaXRoVGl0bGU6KE5TU3RyaW5nKil0aXRsZQogCiAgICAgUmV0YWluUHRyPE5TU2hh
ZG93PiBzaGFkb3cgPSBhZG9wdE5TKFtbTlNTaGFkb3cgYWxsb2NdIGluaXRdKTsKICAgICBSZXRh
aW5QdHI8TlNDb2xvcj4gc2hhZG93Q29sb3IgPSBbTlNDb2xvciBjb2xvcldpdGhDYWxpYnJhdGVk
V2hpdGU6V2FybmluZ1ZpZXdTaGFkb3dXaGl0ZSBhbHBoYTpXYXJuaW5nVmlld1NoYWRvd0FscGhh
XTsKLSAgICBbc2hhZG93LmdldCgpIHNldFNoYWRvd0NvbG9yOnNoYWRvd0NvbG9yLmdldCgpXTsK
LSAgICBbc2hhZG93LmdldCgpIHNldFNoYWRvd09mZnNldDpXYXJuaW5nVmlld1NoYWRvd09mZnNl
dF07Ci0gICAgW3NoYWRvdy5nZXQoKSBzZXRTaGFkb3dCbHVyUmFkaXVzOldhcm5pbmdWaWV3U2hh
ZG93UmFkaXVzXTsKKyAgICBbc2hhZG93IHNldFNoYWRvd0NvbG9yOnNoYWRvd0NvbG9yLmdldCgp
XTsKKyAgICBbc2hhZG93IHNldFNoYWRvd09mZnNldDpXYXJuaW5nVmlld1NoYWRvd09mZnNldF07
CisgICAgW3NoYWRvdyBzZXRTaGFkb3dCbHVyUmFkaXVzOldhcm5pbmdWaWV3U2hhZG93UmFkaXVz
XTsKICAgICBbc2VsZiBzZXRTaGFkb3c6c2hhZG93LmdldCgpXTsKIAogICAgIHJldHVybiBzZWxm
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2Nv
YS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29h
Lm1tCmluZGV4IDJjN2NhMmUwM2QyOTZjMDNkODFkMmNkYzE1MTcxNTkzZjFlNTA4Y2YuLjQyMDAx
YTI1ZGFlMWVlNzUyNDk0NWFkYzk2N2M4MTg3NThhYmExOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KQEAgLTE1OCw3ICsxNTgs
NyBAQCBib29sIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjppbml0aWFsaXplKGNvbnN0IE1l
ZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9ucyYgbwogICAgIH0KIAogICAgIG1fd3JpdGVyRGVsZWdh
dGUgPSBhZG9wdE5TKFtbV2ViQVZBc3NldFdyaXRlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFdy
aXRlcjogKnRoaXNdKTsKLSAgICBbbV93cml0ZXIuZ2V0KCkgc2V0RGVsZWdhdGU6bV93cml0ZXJE
ZWxlZ2F0ZS5nZXQoKV07CisgICAgW21fd3JpdGVyIHNldERlbGVnYXRlOm1fd3JpdGVyRGVsZWdh
dGUuZ2V0KCldOwogCiAgICAgaWYgKG1faGFzQXVkaW8pIHsKICAgICAgICAgbV9hdWRpb0NvbXBy
ZXNzb3IgPSBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmNyZWF0ZShjb21wcmVzc2VkQXVk
aW9PdXRwdXRCdWZmZXJDYWxsYmFjaywgdGhpcyk7CkBAIC0yMTksMjkgKzIxOSwyOSBAQCB2b2lk
IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzdGFydEFzc2V0V3JpdGVyKCkKICAgICAgICAg
aWYgKG1fdmlkZW9UcmFuc2Zvcm0pCiAgICAgICAgICAgICBtX3ZpZGVvQXNzZXRXcml0ZXJJbnB1
dC5nZXQoKS50cmFuc2Zvcm0gPSAqbV92aWRlb1RyYW5zZm9ybTsKIAotICAgICAgICBpZiAoIVtt
X3dyaXRlci5nZXQoKSBjYW5BZGRJbnB1dDptX3ZpZGVvQXNzZXRXcml0ZXJJbnB1dC5nZXQoKV0p
IHsKKyAgICAgICAgaWYgKCFbbV93cml0ZXIgY2FuQWRkSW5wdXQ6bV92aWRlb0Fzc2V0V3JpdGVy
SW5wdXQuZ2V0KCldKSB7CiAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVh
bSwgIk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzdGFydEFzc2V0V3JpdGVyIGZhaWxlZCBj
YW5BZGRJbnB1dCBmb3IgdmlkZW8iKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQot
ICAgICAgICBbbV93cml0ZXIuZ2V0KCkgYWRkSW5wdXQ6bV92aWRlb0Fzc2V0V3JpdGVySW5wdXQu
Z2V0KCldOworICAgICAgICBbbV93cml0ZXIgYWRkSW5wdXQ6bV92aWRlb0Fzc2V0V3JpdGVySW5w
dXQuZ2V0KCldOwogICAgIH0KIAogICAgIGlmIChtX2hhc0F1ZGlvKSB7CiAgICAgICAgIG1fYXVk
aW9Bc3NldFdyaXRlcklucHV0ID0gYWRvcHROUyhbUEFMOjphbGxvY0FWQXNzZXRXcml0ZXJJbnB1
dEluc3RhbmNlKCkgaW5pdFdpdGhNZWRpYVR5cGU6QVZNZWRpYVR5cGVBdWRpbyBvdXRwdXRTZXR0
aW5nczpuaWwgc291cmNlRm9ybWF0SGludDptX2F1ZGlvRm9ybWF0RGVzY3JpcHRpb24uZ2V0KCld
KTsKICAgICAgICAgW21fYXVkaW9Bc3NldFdyaXRlcklucHV0IHNldEV4cGVjdHNNZWRpYURhdGFJ
blJlYWxUaW1lOnRydWVdOwotICAgICAgICBpZiAoIVttX3dyaXRlci5nZXQoKSBjYW5BZGRJbnB1
dDptX2F1ZGlvQXNzZXRXcml0ZXJJbnB1dC5nZXQoKV0pIHsKKyAgICAgICAgaWYgKCFbbV93cml0
ZXIgY2FuQWRkSW5wdXQ6bV9hdWRpb0Fzc2V0V3JpdGVySW5wdXQuZ2V0KCldKSB7CiAgICAgICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIk1lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyOjpzdGFydEFzc2V0V3JpdGVyIGZhaWxlZCBjYW5BZGRJbnB1dCBmb3IgYXVkaW8iKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBbbV93cml0ZXIuZ2V0KCkg
YWRkSW5wdXQ6bV9hdWRpb0Fzc2V0V3JpdGVySW5wdXQuZ2V0KCldOworICAgICAgICBbbV93cml0
ZXIgYWRkSW5wdXQ6bV9hdWRpb0Fzc2V0V3JpdGVySW5wdXQuZ2V0KCldOwogICAgIH0KIAotICAg
IGlmICghW21fd3JpdGVyLmdldCgpIHN0YXJ0V3JpdGluZ10pIHsKKyAgICBpZiAoIVttX3dyaXRl
ciBzdGFydFdyaXRpbmddKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFt
LCAiTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnN0YXJ0QXNzZXRXcml0ZXIgZmFpbGVkIHN0
YXJ0V3JpdGluZyIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgW21fd3JpdGVyLmdl
dCgpIHN0YXJ0U2Vzc2lvbkF0U291cmNlVGltZTpQQUw6OmtDTVRpbWVaZXJvXTsKKyAgICBbbV93
cml0ZXIgc3RhcnRTZXNzaW9uQXRTb3VyY2VUaW1lOlBBTDo6a0NNVGltZVplcm9dOwogCiAgICAg
YXBwZW5kQ29tcHJlc3NlZFNhbXBsZUJ1ZmZlcnMoKTsKIApAQCAtMjYzLDE0ICsyNjMsMTQgQEAg
Ym9vbCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kQ29tcHJlc3NlZEF1ZGlvU2Ft
cGxlQnVmZmVySWZQb3NzaWJsZSgpCiAgICAgfQogCiAgICAgd2hpbGUgKCFtX3BlbmRpbmdBdWRp
b1NhbXBsZVF1ZXVlLmlzRW1wdHkoKSAmJiBbbV9hdWRpb0Fzc2V0V3JpdGVySW5wdXQgaXNSZWFk
eUZvck1vcmVNZWRpYURhdGFdKQotICAgICAgICBbbV9hdWRpb0Fzc2V0V3JpdGVySW5wdXQuZ2V0
KCkgYXBwZW5kU2FtcGxlQnVmZmVyOm1fcGVuZGluZ0F1ZGlvU2FtcGxlUXVldWUudGFrZUZpcnN0
KCkuZ2V0KCldOworICAgICAgICBbbV9hdWRpb0Fzc2V0V3JpdGVySW5wdXQgYXBwZW5kU2FtcGxl
QnVmZmVyOm1fcGVuZGluZ0F1ZGlvU2FtcGxlUXVldWUudGFrZUZpcnN0KCkuZ2V0KCldOwogCiAg
ICAgaWYgKCFbbV9hdWRpb0Fzc2V0V3JpdGVySW5wdXQgaXNSZWFkeUZvck1vcmVNZWRpYURhdGFd
KSB7CiAgICAgICAgIG1fcGVuZGluZ0F1ZGlvU2FtcGxlUXVldWUuYXBwZW5kKFdURk1vdmUoYnVm
ZmVyKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIFttX2F1ZGlvQXNzZXRX
cml0ZXJJbnB1dC5nZXQoKSBhcHBlbmRTYW1wbGVCdWZmZXI6YnVmZmVyLmdldCgpXTsKKyAgICBb
bV9hdWRpb0Fzc2V0V3JpdGVySW5wdXQgYXBwZW5kU2FtcGxlQnVmZmVyOmJ1ZmZlci5nZXQoKV07
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTMwNyw3ICszMDcsNyBAQCB2b2lkIE1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmRDb21wcmVzc2VkVmlkZW9TYW1wbGVCdWZmZXIoQ01T
YW1wbGVCdWZmZQogICAgIG1fbGFzdFZpZGVvRGVjb2RpbmdUaW1lID0gUEFMOjpDTVNhbXBsZUJ1
ZmZlckdldERlY29kZVRpbWVTdGFtcChidWZmZXIpOwogICAgIG1faGFzRW5jb2RlZFZpZGVvU2Ft
cGxlcyA9IHRydWU7CiAKLSAgICBbbV92aWRlb0Fzc2V0V3JpdGVySW5wdXQuZ2V0KCkgYXBwZW5k
U2FtcGxlQnVmZmVyOmJ1ZmZlcl07CisgICAgW21fdmlkZW9Bc3NldFdyaXRlcklucHV0IGFwcGVu
ZFNhbXBsZUJ1ZmZlcjpidWZmZXJdOwogfQogCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyOjphcHBlbmRDb21wcmVzc2VkU2FtcGxlQnVmZmVycygpCkBAIC0zNTcsNyArMzU3LDcgQEAg
dm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Zmx1c2hDb21wcmVzc2VkU2FtcGxlQnVm
ZmVycyhGdW5jdGlvbjx2b2lkKCk+JiYKICAgICAgICAgfQogCiAgICAgICAgIHdoaWxlICghYXVk
aW9TYW1wbGVRdWV1ZS5pc0VtcHR5KCkgJiYgW21fYXVkaW9Bc3NldFdyaXRlcklucHV0IGlzUmVh
ZHlGb3JNb3JlTWVkaWFEYXRhXSkKLSAgICAgICAgICAgIFttX2F1ZGlvQXNzZXRXcml0ZXJJbnB1
dC5nZXQoKSBhcHBlbmRTYW1wbGVCdWZmZXI6YXVkaW9TYW1wbGVRdWV1ZS50YWtlRmlyc3QoKS5n
ZXQoKV07CisgICAgICAgICAgICBbbV9hdWRpb0Fzc2V0V3JpdGVySW5wdXQgYXBwZW5kU2FtcGxl
QnVmZmVyOmF1ZGlvU2FtcGxlUXVldWUudGFrZUZpcnN0KCkuZ2V0KCldOwogCiAgICAgICAgIHdo
aWxlICghdmlkZW9TYW1wbGVRdWV1ZS5pc0VtcHR5KCkgJiYgW21fdmlkZW9Bc3NldFdyaXRlcklu
cHV0IGlzUmVhZHlGb3JNb3JlTWVkaWFEYXRhXSkKICAgICAgICAgICAgIGFwcGVuZENvbXByZXNz
ZWRWaWRlb1NhbXBsZUJ1ZmZlcih2aWRlb1NhbXBsZVF1ZXVlLnRha2VGaXJzdCgpLmdldCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNh
cHR1cmVEZXZpY2VNYW5hZ2VyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW0KaW5kZXggNGNiZGU0NGI0NTFlZTczZWM5
NTc0ZWZiOTY5ZWFlMDMwMzRkMzcxMC4uOGUzNzU4ZmU2NmFiODZhNjZhYjJkNzA5N2Q0Y2Y1NGYy
OTdjMGZiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW0KQEAgLTExMiwxMSAr
MTEyLDExIEBAIHZvaWQgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6dXBkYXRlQ2FjaGVkQVZDYXB0
dXJlRGV2aWNlcygpCiAgICAgICAgIGlmICghW2RldmljZSBoYXNNZWRpYVR5cGU6QVZNZWRpYVR5
cGVWaWRlb10gJiYgIVtkZXZpY2UgaGFzTWVkaWFUeXBlOkFWTWVkaWFUeXBlTXV4ZWRdKQogICAg
ICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgaWYgKFttX2F2Q2FwdHVyZURldmljZXMuZ2V0
KCkgY29udGFpbnNPYmplY3Q6ZGV2aWNlXSkKKyAgICAgICAgaWYgKFttX2F2Q2FwdHVyZURldmlj
ZXMgY29udGFpbnNPYmplY3Q6ZGV2aWNlXSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAg
ICAgIFtkZXZpY2UgYWRkT2JzZXJ2ZXI6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpA
InN1c3BlbmRlZCIgb3B0aW9uczpOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uTmV3IGNvbnRleHQ6
KHZvaWQgKiluaWxdOwotICAgICAgICBbbV9hdkNhcHR1cmVEZXZpY2VzLmdldCgpIGFkZE9iamVj
dDpkZXZpY2VdOworICAgICAgICBbbV9hdkNhcHR1cmVEZXZpY2VzIGFkZE9iamVjdDpkZXZpY2Vd
OwogICAgIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tCmluZGV4IDRlZTdiYjMy
NTQyYWZjZGM4NDk4MmM2ZGE1YTMyZWQyNjRmNWM0N2UuLjE1ZGUyMGM4Y2YxNmI5YzA1NTEwMWYy
ODNmNDRlZTNkYTE0ZDdlMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0KQEAgLTEy
OSw3ICsxMjksNyBAQCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6QVZWaWRlb0NhcHR1cmVTb3VyY2Uo
QVZDYXB0dXJlRGV2aWNlKiBkZXZpY2UsIFN0cmluZyYmIGlkLAogICAgICwgbV9kZXZpY2UoZGV2
aWNlKQogICAgICwgbV92ZXJpZnlDYXB0dXJpbmdUaW1lcigqdGhpcywgJkFWVmlkZW9DYXB0dXJl
U291cmNlOjp2ZXJpZnlJc0NhcHR1cmluZykKIHsKLSAgICBbbV9kZXZpY2UuZ2V0KCkgYWRkT2Jz
ZXJ2ZXI6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAInN1c3BlbmRlZCIgb3B0aW9u
czpOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uTmV3IGNvbnRleHQ6KHZvaWQgKiluaWxdOworICAg
IFttX2RldmljZSBhZGRPYnNlcnZlcjptX29iamNPYnNlcnZlci5nZXQoKSBmb3JLZXlQYXRoOkAi
c3VzcGVuZGVkIiBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgY29udGV4dDoo
dm9pZCAqKW5pbF07CiB9CiAKIEFWVmlkZW9DYXB0dXJlU291cmNlOjp+QVZWaWRlb0NhcHR1cmVT
b3VyY2UoKQpAQCAtNzI3LDcgKzcyNyw3IEBAIC0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0
aDprZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3QgY2hhbmdlOihOU0RpY3Rpb25hcnkqCiAgICAg
aWYgKG1fY2FsbGJhY2stPmxvZ2dlclB0cigpKSB7CiAgICAgICAgIGF1dG8gaWRlbnRpZmllciA9
IExvZ2dlcjo6TG9nU2l0ZUlkZW50aWZpZXIoIkFWVmlkZW9DYXB0dXJlU291cmNlIiwgIm9ic2Vy
dmVWYWx1ZUZvcktleVBhdGgiLCBtX2NhbGxiYWNrLT5sb2dJZGVudGlmaWVyKCkpOwogICAgICAg
ICBSZXRhaW5QdHI8TlNTdHJpbmc+IHZhbHVlU3RyaW5nID0gYWRvcHROUyhbW05TU3RyaW5nIGFs
bG9jXSBpbml0V2l0aEZvcm1hdDpAIiVAIiwgbmV3VmFsdWVdKTsKLSAgICAgICAgbV9jYWxsYmFj
ay0+bG9nZ2VyKCkubG9nQWx3YXlzKG1fY2FsbGJhY2stPmxvZ0NoYW5uZWwoKSwgaWRlbnRpZmll
ciwgd2lsbENoYW5nZSA/ICJ3aWxsIiA6ICJkaWQiLCAiIGNoYW5nZSAnIiwgW2tleVBhdGggVVRG
OFN0cmluZ10sICInIHRvICIsIFt2YWx1ZVN0cmluZy5nZXQoKSBVVEY4U3RyaW5nXSk7CisgICAg
ICAgIG1fY2FsbGJhY2stPmxvZ2dlcigpLmxvZ0Fsd2F5cyhtX2NhbGxiYWNrLT5sb2dDaGFubmVs
KCksIGlkZW50aWZpZXIsIHdpbGxDaGFuZ2UgPyAid2lsbCIgOiAiZGlkIiwgIiBjaGFuZ2UgJyIs
IFtrZXlQYXRoIFVURjhTdHJpbmddLCAiJyB0byAiLCBbdmFsdWVTdHJpbmcgVVRGOFN0cmluZ10p
OwogICAgIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQppbmRleCA4ZWYxNjcw
NmZlNzJjNmJmNGZmZmZkMzJkYzg2NDBmMjU1NGM3MzY3Li5hN2ZiNDkyOWQxNmM4OTU2MjYzNWYw
MDM3MzE4MTNmMTg1ZjNkYjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KQEAgLTgzLDIx
ICs4MywyMSBAQCBzdGF0aWMgaW5saW5lIE5TVVJMUmVxdWVzdENhY2hlUG9saWN5IHRvUGxhdGZv
cm1SZXF1ZXN0Q2FjaGVQb2xpY3koUmVzb3VyY2VSZXF1ZQogCiB2b2lkIFJlc291cmNlUmVxdWVz
dDo6ZG9VcGRhdGVSZXNvdXJjZVJlcXVlc3QoKQogewotICAgIG1fdXJsID0gW21fbnNSZXF1ZXN0
LmdldCgpIFVSTF07CisgICAgbV91cmwgPSBbbV9uc1JlcXVlc3QgVVJMXTsKIAogICAgIGlmICht
X2NhY2hlUG9saWN5ID09IFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5OjpVc2VQcm90b2NvbENh
Y2hlUG9saWN5KQotICAgICAgICBtX2NhY2hlUG9saWN5ID0gZnJvbVBsYXRmb3JtUmVxdWVzdENh
Y2hlUG9saWN5KFttX25zUmVxdWVzdC5nZXQoKSBjYWNoZVBvbGljeV0pOwotICAgIG1fdGltZW91
dEludGVydmFsID0gW21fbnNSZXF1ZXN0LmdldCgpIHRpbWVvdXRJbnRlcnZhbF07Ci0gICAgbV9m
aXJzdFBhcnR5Rm9yQ29va2llcyA9IFttX25zUmVxdWVzdC5nZXQoKSBtYWluRG9jdW1lbnRVUkxd
OworICAgICAgICBtX2NhY2hlUG9saWN5ID0gZnJvbVBsYXRmb3JtUmVxdWVzdENhY2hlUG9saWN5
KFttX25zUmVxdWVzdCBjYWNoZVBvbGljeV0pOworICAgIG1fdGltZW91dEludGVydmFsID0gW21f
bnNSZXF1ZXN0IHRpbWVvdXRJbnRlcnZhbF07CisgICAgbV9maXJzdFBhcnR5Rm9yQ29va2llcyA9
IFttX25zUmVxdWVzdCBtYWluRG9jdW1lbnRVUkxdOwogCi0gICAgVVJMIHNpdGVGb3JDb29raWVz
IHsgW21fbnNSZXF1ZXN0LmdldCgpIF9wcm9wZXJ0eUZvcktleTpAIl9rQ0ZIVFRQQ29va2llUG9s
aWN5UHJvcGVydHlTaXRlRm9yQ29va2llcyJdIH07CisgICAgVVJMIHNpdGVGb3JDb29raWVzIHsg
W21fbnNSZXF1ZXN0IF9wcm9wZXJ0eUZvcktleTpAIl9rQ0ZIVFRQQ29va2llUG9saWN5UHJvcGVy
dHlTaXRlRm9yQ29va2llcyJdIH07CiAgICAgbV9zYW1lU2l0ZURpc3Bvc2l0aW9uID0gc2l0ZUZv
ckNvb2tpZXMuaXNOdWxsKCkgPyBTYW1lU2l0ZURpc3Bvc2l0aW9uOjpVbnNwZWNpZmllZCA6IChh
cmVSZWdpc3RyYWJsZURvbWFpbnNFcXVhbChzaXRlRm9yQ29va2llcywgbV91cmwpID8gU2FtZVNp
dGVEaXNwb3NpdGlvbjo6U2FtZVNpdGUgOiBTYW1lU2l0ZURpc3Bvc2l0aW9uOjpDcm9zc1NpdGUp
OwogCi0gICAgbV9pc1RvcFNpdGUgPSBzdGF0aWNfY2FzdDxOU051bWJlcio+KFttX25zUmVxdWVz
dC5nZXQoKSBfcHJvcGVydHlGb3JLZXk6QCJfa0NGSFRUUENvb2tpZVBvbGljeVByb3BlcnR5SXNU
b3BMZXZlbE5hdmlnYXRpb24iXSkuYm9vbFZhbHVlOworICAgIG1faXNUb3BTaXRlID0gc3RhdGlj
X2Nhc3Q8TlNOdW1iZXIqPihbbV9uc1JlcXVlc3QgX3Byb3BlcnR5Rm9yS2V5OkAiX2tDRkhUVFBD
b29raWVQb2xpY3lQcm9wZXJ0eUlzVG9wTGV2ZWxOYXZpZ2F0aW9uIl0pLmJvb2xWYWx1ZTsKIAot
ICAgIGlmIChOU1N0cmluZyogbWV0aG9kID0gW21fbnNSZXF1ZXN0LmdldCgpIEhUVFBNZXRob2Rd
KQorICAgIGlmIChOU1N0cmluZyogbWV0aG9kID0gW21fbnNSZXF1ZXN0IEhUVFBNZXRob2RdKQog
ICAgICAgICBtX2h0dHBNZXRob2QgPSBtZXRob2Q7Ci0gICAgbV9hbGxvd0Nvb2tpZXMgPSBbbV9u
c1JlcXVlc3QuZ2V0KCkgSFRUUFNob3VsZEhhbmRsZUNvb2tpZXNdOworICAgIG1fYWxsb3dDb29r
aWVzID0gW21fbnNSZXF1ZXN0IEhUVFBTaG91bGRIYW5kbGVDb29raWVzXTsKIAogICAgIGlmIChy
ZXNvdXJjZVByaW9yaXRpZXNFbmFibGVkKCkpCiAgICAgICAgIG1fcHJpb3JpdHkgPSB0b1Jlc291
cmNlTG9hZFByaW9yaXR5KG1fbnNSZXF1ZXN0ID8gQ0ZVUkxSZXF1ZXN0R2V0UmVxdWVzdFByaW9y
aXR5KFttX25zUmVxdWVzdCBfQ0ZVUkxSZXF1ZXN0XSkgOiAwKTsKQEAgLTEwOCw3ICsxMDgsNyBA
QCB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVSZXNvdXJjZVJlcXVlc3QoKQogICAgIH1d
OwogCiAgICAgbV9yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJh
eS5jbGVhcigpOwotICAgIE5TQXJyYXkgKmVuY29kaW5nRmFsbGJhY2tzID0gW21fbnNSZXF1ZXN0
LmdldCgpIGNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheV07CisgICAgTlNB
cnJheSAqZW5jb2RpbmdGYWxsYmFja3MgPSBbbV9uc1JlcXVlc3QgY29udGVudERpc3Bvc2l0aW9u
RW5jb2RpbmdGYWxsYmFja0FycmF5XTsKICAgICBtX3Jlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9u
RW5jb2RpbmdGYWxsYmFja0FycmF5LnJlc2VydmVDYXBhY2l0eShbZW5jb2RpbmdGYWxsYmFja3Mg
Y291bnRdKTsKICAgICBmb3IgKE5TTnVtYmVyICplbmNvZGluZ0ZhbGxiYWNrIGluIFttX25zUmVx
dWVzdCBjb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXldKSB7CiAgICAgICAg
IENGU3RyaW5nRW5jb2RpbmcgZW5jb2RpbmcgPSBDRlN0cmluZ0NvbnZlcnROU1N0cmluZ0VuY29k
aW5nVG9FbmNvZGluZyhbZW5jb2RpbmdGYWxsYmFjayB1bnNpZ25lZExvbmdWYWx1ZV0pOwpAQCAt
MTI1LDkgKzEyNSw5IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVJlc291cmNlUmVx
dWVzdCgpCiAKIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVJlc291cmNlSFRUUEJvZHko
KQogewotICAgIGlmIChOU0RhdGEqIGJvZHlEYXRhID0gW21fbnNSZXF1ZXN0LmdldCgpIEhUVFBC
b2R5XSkKKyAgICBpZiAoTlNEYXRhKiBib2R5RGF0YSA9IFttX25zUmVxdWVzdCBIVFRQQm9keV0p
CiAgICAgICAgIG1faHR0cEJvZHkgPSBGb3JtRGF0YTo6Y3JlYXRlKFtib2R5RGF0YSBieXRlc10s
IFtib2R5RGF0YSBsZW5ndGhdKTsKLSAgICBlbHNlIGlmIChOU0lucHV0U3RyZWFtKiBib2R5U3Ry
ZWFtID0gW21fbnNSZXF1ZXN0LmdldCgpIEhUVFBCb2R5U3RyZWFtXSkgeworICAgIGVsc2UgaWYg
KE5TSW5wdXRTdHJlYW0qIGJvZHlTdHJlYW0gPSBbbV9uc1JlcXVlc3QgSFRUUEJvZHlTdHJlYW1d
KSB7CiAgICAgICAgIEZvcm1EYXRhKiBmb3JtRGF0YSA9IGh0dHBCb2R5RnJvbVN0cmVhbShib2R5
U3RyZWFtKTsKICAgICAgICAgLy8gVGhlcmUgaXMgbm8gRm9ybURhdGEgb2JqZWN0IGlmIGEgY2xp
ZW50IHByb3ZpZGVkIGEgY3VzdG9tIGRhdGEgc3RyZWFtLgogICAgICAgICAvLyBXZSBzaG91bGRu
J3QgYmUgbG9va2luZyBhdCBodHRwIGJvZHkgYWZ0ZXIgY2xpZW50IGNhbGxiYWNrcy4KQEAgLTE2
NSw3ICsxNjUsNyBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJlcXVl
c3QoKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBuc1JlcXVlc3QgPSBhZG9w
dE5TKFttX25zUmVxdWVzdC5nZXQoKSBtdXRhYmxlQ29weV0pOworICAgIGF1dG8gbnNSZXF1ZXN0
ID0gYWRvcHROUyhbbV9uc1JlcXVlc3QgbXV0YWJsZUNvcHldKTsKIAogICAgIGlmIChuc1JlcXVl
c3QpCiAgICAgICAgIFtuc1JlcXVlc3Qgc2V0VVJMOnVybCgpXTsKQEAgLTI0MSw3ICsyNDEsNyBA
QCB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybUhUVFBCb2R5KCkKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gbnNSZXF1ZXN0ID0gYWRvcHROUyhbbV9uc1Jl
cXVlc3QuZ2V0KCkgbXV0YWJsZUNvcHldKTsKKyAgICBhdXRvIG5zUmVxdWVzdCA9IGFkb3B0TlMo
W21fbnNSZXF1ZXN0IG11dGFibGVDb3B5XSk7CiAKICAgICBpZiAobnNSZXF1ZXN0KQogICAgICAg
ICBbbnNSZXF1ZXN0IHNldFVSTDp1cmwoKV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVzcG9uc2VDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXNwb25zZUNvY29hLm1tCmlu
ZGV4IDUxYTlmZTY1NTU2YzFjMDczOTE5NTYyMTY0ZDE0NzJmOGJmZTcwY2QuLjNjM2M3NTMxZWRk
MDY2OGNiZGRlNzYwNmIyYjg4YmQ5NjUzODIyNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXNwb25zZUNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXNwb25zZUNvY29h
Lm1tCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgUmVzb3VyY2VSZXNwb25zZTo6aW5pdE5TVVJMUmVz
cG9uc2UoKSBjb25zdAogICAgIG1fbnNSZXNwb25zZSA9IGFkb3B0TlMoW1tOU0hUVFBVUkxSZXNw
b25zZSBhbGxvY10gaW5pdFdpdGhVUkw6bV91cmwgc3RhdHVzQ29kZTptX2h0dHBTdGF0dXNDb2Rl
IEhUVFBWZXJzaW9uOihOU1N0cmluZyopa0NGSFRUUFZlcnNpb24xXzEgaGVhZGVyRmllbGRzOmhl
YWRlckRpY3Rpb25hcnldKTsKIAogICAgIC8vIE1pbWUgdHlwZSBzbmlmZmluZyBkb2Vzbid0IHdv
cmsgd2l0aCBhIHN5bnRoZXNpemVkIHJlc3BvbnNlLgotICAgIFttX25zUmVzcG9uc2UuZ2V0KCkg
X3NldE1JTUVUeXBlOihOU1N0cmluZyAqKW1fbWltZVR5cGVdOworICAgIFttX25zUmVzcG9uc2Ug
X3NldE1JTUVUeXBlOihOU1N0cmluZyAqKW1fbWltZVR5cGVdOwogfQogCiB2b2lkIFJlc291cmNl
UmVzcG9uc2U6OmRpc2FibGVMYXp5SW5pdGlhbGl6YXRpb24oKQpAQCAtMTYwLDE0ICsxNjAsMTQg
QEAgdm9pZCBSZXNvdXJjZVJlc3BvbnNlOjpwbGF0Zm9ybUxhenlJbml0KEluaXRMZXZlbCBpbml0
TGV2ZWwpCiAgICAgCiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CiAKLSAgICAgICAgYXV0byBtZXNz
YWdlUmVmID0gW21fbnNSZXNwb25zZS5nZXQoKSBpc0tpbmRPZkNsYXNzOltOU0hUVFBVUkxSZXNw
b25zZSBjbGFzc11dID8gQ0ZVUkxSZXNwb25zZUdldEhUVFBSZXNwb25zZShbIChOU0hUVFBVUkxS
ZXNwb25zZSAqKW1fbnNSZXNwb25zZS5nZXQoKSBfQ0ZVUkxSZXNwb25zZV0pIDogbnVsbHB0cjsK
KyAgICAgICAgYXV0byBtZXNzYWdlUmVmID0gW21fbnNSZXNwb25zZSBpc0tpbmRPZkNsYXNzOltO
U0hUVFBVUkxSZXNwb25zZSBjbGFzc11dID8gQ0ZVUkxSZXNwb25zZUdldEhUVFBSZXNwb25zZShb
IChOU0hUVFBVUkxSZXNwb25zZSAqKW1fbnNSZXNwb25zZS5nZXQoKSBfQ0ZVUkxSZXNwb25zZV0p
IDogbnVsbHB0cjsKIAogICAgICAgICBpZiAobV9pbml0TGV2ZWwgPCBDb21tb25GaWVsZHNPbmx5
KSB7Ci0gICAgICAgICAgICBtX3VybCA9IFttX25zUmVzcG9uc2UuZ2V0KCkgVVJMXTsKLSAgICAg
ICAgICAgIG1fbWltZVR5cGUgPSBbbV9uc1Jlc3BvbnNlLmdldCgpIE1JTUVUeXBlXTsKLSAgICAg
ICAgICAgIG1fZXhwZWN0ZWRDb250ZW50TGVuZ3RoID0gW21fbnNSZXNwb25zZS5nZXQoKSBleHBl
Y3RlZENvbnRlbnRMZW5ndGhdOworICAgICAgICAgICAgbV91cmwgPSBbbV9uc1Jlc3BvbnNlIFVS
TF07CisgICAgICAgICAgICBtX21pbWVUeXBlID0gW21fbnNSZXNwb25zZSBNSU1FVHlwZV07Cisg
ICAgICAgICAgICBtX2V4cGVjdGVkQ29udGVudExlbmd0aCA9IFttX25zUmVzcG9uc2UgZXhwZWN0
ZWRDb250ZW50TGVuZ3RoXTsKICAgICAgICAgICAgIC8vIFN0cmlwcGluZyBkb3VibGUgcXVvdGVz
IGFzIGEgd29ya2Fyb3VuZCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzg3NTcwODg+LCBjYW4gYmUgcmVt
b3ZlZCBvbmNlIHRoYXQgaXMgZml4ZWQuCi0gICAgICAgICAgICBtX3RleHRFbmNvZGluZ05hbWUg
PSBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0RvdWJsZVF1b3RlKFttX25zUmVzcG9uc2UuZ2V0KCkg
dGV4dEVuY29kaW5nTmFtZV0pOworICAgICAgICAgICAgbV90ZXh0RW5jb2RpbmdOYW1lID0gc3Ry
aXBMZWFkaW5nQW5kVHJhaWxpbmdEb3VibGVRdW90ZShbbV9uc1Jlc3BvbnNlIHRleHRFbmNvZGlu
Z05hbWVdKTsKICAgICAgICAgICAgIG1faHR0cFN0YXR1c0NvZGUgPSBtZXNzYWdlUmVmID8gQ0ZI
VFRQTWVzc2FnZUdldFJlc3BvbnNlU3RhdHVzQ29kZShtZXNzYWdlUmVmKSA6IDA7CiAgICAgICAg
ICAgICBpZiAobWVzc2FnZVJlZikKICAgICAgICAgICAgICAgICBtX2h0dHBIZWFkZXJGaWVsZHMg
PSBpbml0aWFsaXplSFRUUEhlYWRlcnMobWVzc2FnZVJlZik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9BdXRoZW50aWNhdGlvbk1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0F1dGhlbnRpY2F0aW9uTWFjLm1tCmluZGV4
IGNmY2YxMGZjYWYyMTk4Y2IxZTg5MjQyOWU5NjZiY2EyMzI2OTNkOWQuLjI3NDk2ZmM4OTczMDg0
ZjU2ZDAzYmUyYzMwMWEwZDI3ZDRiZDRhZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL0F1dGhlbnRpY2F0aW9uTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0F1dGhlbnRpY2F0aW9uTWFjLm1tCkBAIC0xMjgsMTQg
KzEyOCwxNCBAQCB2b2lkIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpzZXRBdXRoZW50aWNhdGlv
bkNsaWVudChBdXRoZW50aWNhdGlvbkNsaWVudCogY2xpZQogICAgICAgICBpZiAobV9uc0NoYWxs
ZW5nZSkKICAgICAgICAgICAgIG1fbnNDaGFsbGVuZ2UgPSBhZG9wdE5TKFtbTlNVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSBhbGxvY10gaW5pdFdpdGhBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpt
X25zQ2hhbGxlbmdlLmdldCgpIHNlbmRlcjptX3NlbmRlci5nZXQoKV0pOwogICAgIH0gZWxzZSB7
Ci0gICAgICAgIGlmIChbbV9zZW5kZXIuZ2V0KCkgaXNNZW1iZXJPZkNsYXNzOltXZWJDb3JlQXV0
aGVudGljYXRpb25DbGllbnRBc0NoYWxsZW5nZVNlbmRlciBjbGFzc11dKQorICAgICAgICBpZiAo
W21fc2VuZGVyIGlzTWVtYmVyT2ZDbGFzczpbV2ViQ29yZUF1dGhlbnRpY2F0aW9uQ2xpZW50QXND
aGFsbGVuZ2VTZW5kZXIgY2xhc3NdXSkKICAgICAgICAgICAgIFsoV2ViQ29yZUF1dGhlbnRpY2F0
aW9uQ2xpZW50QXNDaGFsbGVuZ2VTZW5kZXIgKiltX3NlbmRlci5nZXQoKSBkZXRhY2hDbGllbnRd
OwogICAgIH0KIH0KIAogQXV0aGVudGljYXRpb25DbGllbnQqIEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlOjphdXRoZW50aWNhdGlvbkNsaWVudCgpIGNvbnN0CiB7Ci0gICAgaWYgKFttX3NlbmRlci5n
ZXQoKSBpc01lbWJlck9mQ2xhc3M6W1dlYkNvcmVBdXRoZW50aWNhdGlvbkNsaWVudEFzQ2hhbGxl
bmdlU2VuZGVyIGNsYXNzXV0pCisgICAgaWYgKFttX3NlbmRlciBpc01lbWJlck9mQ2xhc3M6W1dl
YkNvcmVBdXRoZW50aWNhdGlvbkNsaWVudEFzQ2hhbGxlbmdlU2VuZGVyIGNsYXNzXV0pCiAgICAg
ICAgIHJldHVybiBbc3RhdGljX2Nhc3Q8V2ViQ29yZUF1dGhlbnRpY2F0aW9uQ2xpZW50QXNDaGFs
bGVuZ2VTZW5kZXIqPihtX3NlbmRlci5nZXQoKSkgY2xpZW50XTsKICAgICAKICAgICByZXR1cm4g
bnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L1Jlc291cmNlRXJyb3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9SZXNvdXJjZUVycm9yTWFjLm1tCmluZGV4IGFkNjlhNWYwN2JhNDc4Y2E5N2Y0ODNhMTJjMzA1
ODViNjVhOGVlODQuLmVmYTEyNzJjZmVkY2RkOTg2ODUxN2U3MjMzNDhmYzkzMmQ1NmIzZDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJy
b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3Vy
Y2VFcnJvck1hYy5tbQpAQCAtOTgsMTIgKzk4LDEyIEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNFcnJv
cj4gY3JlYXRlTlNFcnJvckZyb21SZXNvdXJjZUVycm9yQmFzZShjb25zdCBSZXNvdXJjZUVycm9y
CiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IHVzZXJJbmZvID0gYWRvcHROUyhb
W05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKIAogICAgIGlmICghcmVzb3VyY2VF
cnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLmlzRW1wdHkoKSkKLSAgICAgICAgW3VzZXJJbmZv
LmdldCgpIHNldFZhbHVlOnJlc291cmNlRXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKSBmb3JL
ZXk6TlNMb2NhbGl6ZWREZXNjcmlwdGlvbktleV07CisgICAgICAgIFt1c2VySW5mbyBzZXRWYWx1
ZTpyZXNvdXJjZUVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkgZm9yS2V5Ok5TTG9jYWxpemVk
RGVzY3JpcHRpb25LZXldOwogCiAgICAgaWYgKCFyZXNvdXJjZUVycm9yLmZhaWxpbmdVUkwoKS5p
c0VtcHR5KCkpIHsKLSAgICAgICAgW3VzZXJJbmZvLmdldCgpIHNldFZhbHVlOihOU1N0cmluZyAq
KXJlc291cmNlRXJyb3IuZmFpbGluZ1VSTCgpLnN0cmluZygpIGZvcktleTpAIk5TRXJyb3JGYWls
aW5nVVJMU3RyaW5nS2V5Il07CisgICAgICAgIFt1c2VySW5mbyBzZXRWYWx1ZTooTlNTdHJpbmcg
KilyZXNvdXJjZUVycm9yLmZhaWxpbmdVUkwoKS5zdHJpbmcoKSBmb3JLZXk6QCJOU0Vycm9yRmFp
bGluZ1VSTFN0cmluZ0tleSJdOwogICAgICAgICBpZiAoTlNVUkwgKmNvY29hVVJMID0gKE5TVVJM
ICopcmVzb3VyY2VFcnJvci5mYWlsaW5nVVJMKCkpCi0gICAgICAgICAgICBbdXNlckluZm8uZ2V0
KCkgc2V0VmFsdWU6Y29jb2FVUkwgZm9yS2V5OkAiTlNFcnJvckZhaWxpbmdVUkxLZXkiXTsKKyAg
ICAgICAgICAgIFt1c2VySW5mbyBzZXRWYWx1ZTpjb2NvYVVSTCBmb3JLZXk6QCJOU0Vycm9yRmFp
bGluZ1VSTEtleSJdOwogICAgIH0KIAogICAgIHJldHVybiBhZG9wdE5TKFtbTlNFcnJvciBhbGxv
Y10gaW5pdFdpdGhEb21haW46cmVzb3VyY2VFcnJvci5kb21haW4oKSBjb2RlOnJlc291cmNlRXJy
b3IuZXJyb3JDb2RlKCkgdXNlckluZm86dXNlckluZm8uZ2V0KCldKTsKQEAgLTE0Miw4ICsxNDIs
OCBAQCB2b2lkIFJlc291cmNlRXJyb3I6Om1hcFBsYXRmb3JtRXJyb3IoKQogICAgIGlmICghbV9w
bGF0Zm9ybUVycm9yKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGRvbWFpbiA9IFttX3Bs
YXRmb3JtRXJyb3IuZ2V0KCkgZG9tYWluXTsKLSAgICBhdXRvIGVycm9yQ29kZSA9IFttX3BsYXRm
b3JtRXJyb3IuZ2V0KCkgY29kZV07CisgICAgYXV0byBkb21haW4gPSBbbV9wbGF0Zm9ybUVycm9y
IGRvbWFpbl07CisgICAgYXV0byBlcnJvckNvZGUgPSBbbV9wbGF0Zm9ybUVycm9yIGNvZGVdOwog
CiAgICAgaWYgKFtkb21haW4gaXNFcXVhbFRvU3RyaW5nOk5TVVJMRXJyb3JEb21haW5dIHx8IFtk
b21haW4gaXNFcXVhbFRvU3RyaW5nOihfX2JyaWRnZSBOU1N0cmluZyAqKWtDRkVycm9yRG9tYWlu
Q0ZOZXR3b3JrXSkKICAgICAgICAgc2V0VHlwZSgoZXJyb3JDb2RlID09IE5TVVJMRXJyb3JUaW1l
ZE91dCkgPyBUeXBlOjpUaW1lb3V0IDogKGVycm9yQ29kZSA9PSBOU1VSTEVycm9yQ2FuY2VsbGVk
KSA/IFR5cGU6OkNhbmNlbGxhdGlvbiA6IFR5cGU6OkdlbmVyYWwpOwpAQCAtMTU2LDE3ICsxNTYs
MTcgQEAgdm9pZCBSZXNvdXJjZUVycm9yOjpwbGF0Zm9ybUxhenlJbml0KCkKICAgICBpZiAobV9k
YXRhSXNVcFRvRGF0ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9kb21haW4gPSBbbV9wbGF0
Zm9ybUVycm9yLmdldCgpIGRvbWFpbl07Ci0gICAgbV9lcnJvckNvZGUgPSBbbV9wbGF0Zm9ybUVy
cm9yLmdldCgpIGNvZGVdOworICAgIG1fZG9tYWluID0gW21fcGxhdGZvcm1FcnJvciBkb21haW5d
OworICAgIG1fZXJyb3JDb2RlID0gW21fcGxhdGZvcm1FcnJvciBjb2RlXTsKIAotICAgIGlmIChO
U1N0cmluZyogZmFpbGluZ1VSTFN0cmluZyA9IFtbbV9wbGF0Zm9ybUVycm9yLmdldCgpIHVzZXJJ
bmZvXSB2YWx1ZUZvcktleTpAIk5TRXJyb3JGYWlsaW5nVVJMU3RyaW5nS2V5Il0pCisgICAgaWYg
KE5TU3RyaW5nKiBmYWlsaW5nVVJMU3RyaW5nID0gW1ttX3BsYXRmb3JtRXJyb3IgdXNlckluZm9d
IHZhbHVlRm9yS2V5OkAiTlNFcnJvckZhaWxpbmdVUkxTdHJpbmdLZXkiXSkKICAgICAgICAgbV9m
YWlsaW5nVVJMID0gVVJMKFVSTCgpLCBmYWlsaW5nVVJMU3RyaW5nKTsKICAgICBlbHNlCi0gICAg
ICAgIG1fZmFpbGluZ1VSTCA9IFVSTCgoTlNVUkwgKilbW21fcGxhdGZvcm1FcnJvci5nZXQoKSB1
c2VySW5mb10gdmFsdWVGb3JLZXk6QCJOU0Vycm9yRmFpbGluZ1VSTEtleSJdKTsKKyAgICAgICAg
bV9mYWlsaW5nVVJMID0gVVJMKChOU1VSTCAqKVtbbV9wbGF0Zm9ybUVycm9yIHVzZXJJbmZvXSB2
YWx1ZUZvcktleTpAIk5TRXJyb3JGYWlsaW5nVVJMS2V5Il0pOwogICAgIC8vIFdvcmthcm91bmQg
Zm9yIDxyZGFyOi8vcHJvYmxlbS82NTU0MDY3PgogICAgIG1fbG9jYWxpemVkRGVzY3JpcHRpb24g
PSBtX2ZhaWxpbmdVUkwuc3RyaW5nKCk7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05T
Ci0gICAgbV9sb2NhbGl6ZWREZXNjcmlwdGlvbiA9IFttX3BsYXRmb3JtRXJyb3IuZ2V0KCkgX3dl
Yl9sb2NhbGl6ZWREZXNjcmlwdGlvbl07CisgICAgbV9sb2NhbGl6ZWREZXNjcmlwdGlvbiA9IFtt
X3BsYXRmb3JtRXJyb3IgX3dlYl9sb2NhbGl6ZWREZXNjcmlwdGlvbl07CiAgICAgRU5EX0JMT0NL
X09CSkNfRVhDRVBUSU9OUwogCiAgICAgbV9kYXRhSXNVcFRvRGF0ZSA9IHRydWU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VI
YW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdh
dGUubW0KaW5kZXggNjViN2JhOGM0MTUzNjA5ZTY3ZWNmMTZmYzYyNDAyYWViZTU0ZGEwYS4uMzE1
ZTA2NTE1MzBkY2RiMDI4MDE2NTRiNzU3ZDgxNDczYzIwZmQzMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVy
YXRpb25RdWV1ZURlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQpA
QCAtMTQzLDcgKzE0Myw3IEBAIC0gKE5TVVJMUmVxdWVzdCAqKWNvbm5lY3Rpb246KE5TVVJMQ29u
bmVjdGlvbiAqKWNvbm5lY3Rpb24gd2lsbFNlbmRSZXF1ZXN0OihOU1VSCiAKICAgICAgICAgUmVz
b3VyY2VSZXNwb25zZSByZXNwb25zZShyZWRpcmVjdFJlc3BvbnNlLmdldCgpKTsKICAgICAgICAg
UmVzb3VyY2VSZXF1ZXN0IHJlZGlyZWN0UmVxdWVzdCA9IG5ld1JlcXVlc3QuZ2V0KCk7Ci0gICAg
ICAgIGlmIChbbmV3UmVxdWVzdC5nZXQoKSBIVFRQQm9keVN0cmVhbV0pIHsKKyAgICAgICAgaWYg
KFtuZXdSZXF1ZXN0IEhUVFBCb2R5U3RyZWFtXSkgewogICAgICAgICAgICAgQVNTRVJUKG1faGFu
ZGxlLT5maXJzdFJlcXVlc3QoKS5odHRwQm9keSgpKTsKICAgICAgICAgICAgIHJlZGlyZWN0UmVx
dWVzdC5zZXRIVFRQQm9keShtX2hhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkuaHR0cEJvZHkoKSk7CiAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY29jb2Ev
TG9jYWxlQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NvY29hL0xvY2Fs
ZUNvY29hLm1tCmluZGV4IDA4NDRlOTBkNmMwNDhkNGU5N2VkNDllNmZiN2U0ZjQ5Y2I0OWU5YmYu
LjFiMDk4ZmFmMzVlYjJiYWM0NGY1NmM5YzM5MTgyYzNiODg1MjEwYTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY29jb2EvTG9jYWxlQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jb2NvYS9Mb2NhbGVDb2NvYS5tbQpAQCAtNjcsMTAg
KzY3LDEwIEBAIExvY2FsZUNvY29hOjpMb2NhbGVDb2NvYShjb25zdCBBdG9tU3RyaW5nJiBsb2Nh
bGUpCiB7CiAgICAgTlNBcnJheSogYXZhaWxhYmxlTGFuZ3VhZ2VzID0gW05TTG9jYWxlIElTT0xh
bmd1YWdlQ29kZXNdOwogICAgIC8vIE5TTG9jYWxlIHJldHVybnMgYSBsb3dlciBjYXNlIE5TTG9j
YWxlTGFuZ3VhZ2VDb2RlIHNvIHdlIGRvbid0IGhhdmUgY2FyZSBhYm91dCBjYXNlLgotICAgIE5T
U3RyaW5nKiBsYW5ndWFnZSA9IFttX2xvY2FsZS5nZXQoKSBvYmplY3RGb3JLZXk6TlNMb2NhbGVM
YW5ndWFnZUNvZGVdOworICAgIE5TU3RyaW5nKiBsYW5ndWFnZSA9IFttX2xvY2FsZSBvYmplY3RG
b3JLZXk6TlNMb2NhbGVMYW5ndWFnZUNvZGVdOwogICAgIGlmIChbYXZhaWxhYmxlTGFuZ3VhZ2Vz
IGluZGV4T2ZPYmplY3Q6bGFuZ3VhZ2VdID09IE5TTm90Rm91bmQpCiAgICAgICAgIG1fbG9jYWxl
ID0gYWRvcHROUyhbW05TTG9jYWxlIGFsbG9jXSBpbml0V2l0aExvY2FsZUlkZW50aWZpZXI6ZGVm
YXVsdExhbmd1YWdlKCldKTsKLSAgICBbbV9ncmVnb3JpYW5DYWxlbmRhci5nZXQoKSBzZXRMb2Nh
bGU6bV9sb2NhbGUuZ2V0KCldOworICAgIFttX2dyZWdvcmlhbkNhbGVuZGFyIHNldExvY2FsZTpt
X2xvY2FsZS5nZXQoKV07CiB9CiAKIExvY2FsZUNvY29hOjp+TG9jYWxlQ29jb2EoKQpAQCAtMjQ4
LDggKzI0OCw4IEBAIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBMb2NhbGVDb2NvYTo6dGltZUFNUE1M
YWJlbHMoKQogICAgICAgICByZXR1cm4gbV90aW1lQU1QTUxhYmVsczsKICAgICBtX3RpbWVBTVBN
TGFiZWxzLnJlc2VydmVDYXBhY2l0eSgyKTsKICAgICBSZXRhaW5QdHI8TlNEYXRlRm9ybWF0dGVy
PiBmb3JtYXR0ZXIgPSBzaG9ydFRpbWVGb3JtYXR0ZXIoKTsKLSAgICBtX3RpbWVBTVBNTGFiZWxz
LmFwcGVuZChbZm9ybWF0dGVyLmdldCgpIEFNU3ltYm9sXSk7Ci0gICAgbV90aW1lQU1QTUxhYmVs
cy5hcHBlbmQoW2Zvcm1hdHRlci5nZXQoKSBQTVN5bWJvbF0pOworICAgIG1fdGltZUFNUE1MYWJl
bHMuYXBwZW5kKFtmb3JtYXR0ZXIgQU1TeW1ib2xdKTsKKyAgICBtX3RpbWVBTVBNTGFiZWxzLmFw
cGVuZChbZm9ybWF0dGVyIFBNU3ltYm9sXSk7CiAgICAgcmV0dXJuIG1fdGltZUFNUE1MYWJlbHM7
CiB9CiAKQEAgLTI4NCwyNyArMjg0LDI3IEBAIHZvaWQgTG9jYWxlQ29jb2E6OmluaXRpYWxpemVM
b2NhbGVEYXRhKCkKICAgICBtX2RpZEluaXRpYWxpemVOdW1iZXJEYXRhID0gdHJ1ZTsKIAogICAg
IFJldGFpblB0cjxOU051bWJlckZvcm1hdHRlcj4gZm9ybWF0dGVyID0gYWRvcHROUyhbW05TTnVt
YmVyRm9ybWF0dGVyIGFsbG9jXSBpbml0XSk7Ci0gICAgW2Zvcm1hdHRlci5nZXQoKSBzZXRMb2Nh
bGU6bV9sb2NhbGUuZ2V0KCldOwotICAgIFtmb3JtYXR0ZXIuZ2V0KCkgc2V0TnVtYmVyU3R5bGU6
TlNOdW1iZXJGb3JtYXR0ZXJEZWNpbWFsU3R5bGVdOwotICAgIFtmb3JtYXR0ZXIuZ2V0KCkgc2V0
VXNlc0dyb3VwaW5nU2VwYXJhdG9yOk5PXTsKKyAgICBbZm9ybWF0dGVyIHNldExvY2FsZTptX2xv
Y2FsZS5nZXQoKV07CisgICAgW2Zvcm1hdHRlciBzZXROdW1iZXJTdHlsZTpOU051bWJlckZvcm1h
dHRlckRlY2ltYWxTdHlsZV07CisgICAgW2Zvcm1hdHRlciBzZXRVc2VzR3JvdXBpbmdTZXBhcmF0
b3I6Tk9dOwogCiAgICAgUmV0YWluUHRyPE5TTnVtYmVyPiBzYW1wbGVOdW1iZXIgPSBhZG9wdE5T
KFtbTlNOdW1iZXIgYWxsb2NdIGluaXRXaXRoRG91YmxlOjk4NzY1NDMyMTBdKTsKLSAgICBTdHJp
bmcgbmluZVRvWmVybyhbZm9ybWF0dGVyLmdldCgpIHN0cmluZ0Zyb21OdW1iZXI6c2FtcGxlTnVt
YmVyLmdldCgpXSk7CisgICAgU3RyaW5nIG5pbmVUb1plcm8oW2Zvcm1hdHRlciBzdHJpbmdGcm9t
TnVtYmVyOnNhbXBsZU51bWJlci5nZXQoKV0pOwogICAgIGlmIChuaW5lVG9aZXJvLmxlbmd0aCgp
ICE9IDEwKQogICAgICAgICByZXR1cm47CiAgICAgVmVjdG9yPFN0cmluZywgRGVjaW1hbFN5bWJv
bHNTaXplPiBzeW1ib2xzOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAxMDsgKytpKQog
ICAgICAgICBzeW1ib2xzLmFwcGVuZChuaW5lVG9aZXJvLnN1YnN0cmluZyg5IC0gaSwgMSkpOwog
ICAgIEFTU0VSVChzeW1ib2xzLnNpemUoKSA9PSBEZWNpbWFsU2VwYXJhdG9ySW5kZXgpOwotICAg
IHN5bWJvbHMuYXBwZW5kKFtmb3JtYXR0ZXIuZ2V0KCkgZGVjaW1hbFNlcGFyYXRvcl0pOworICAg
IHN5bWJvbHMuYXBwZW5kKFtmb3JtYXR0ZXIgZGVjaW1hbFNlcGFyYXRvcl0pOwogICAgIEFTU0VS
VChzeW1ib2xzLnNpemUoKSA9PSBHcm91cFNlcGFyYXRvckluZGV4KTsKLSAgICBzeW1ib2xzLmFw
cGVuZChbZm9ybWF0dGVyLmdldCgpIGdyb3VwaW5nU2VwYXJhdG9yXSk7CisgICAgc3ltYm9scy5h
cHBlbmQoW2Zvcm1hdHRlciBncm91cGluZ1NlcGFyYXRvcl0pOwogICAgIEFTU0VSVChzeW1ib2xz
LnNpemUoKSA9PSBEZWNpbWFsU3ltYm9sc1NpemUpOwogCi0gICAgU3RyaW5nIHBvc2l0aXZlUHJl
Zml4KFtmb3JtYXR0ZXIuZ2V0KCkgcG9zaXRpdmVQcmVmaXhdKTsKLSAgICBTdHJpbmcgcG9zaXRp
dmVTdWZmaXgoW2Zvcm1hdHRlci5nZXQoKSBwb3NpdGl2ZVN1ZmZpeF0pOwotICAgIFN0cmluZyBu
ZWdhdGl2ZVByZWZpeChbZm9ybWF0dGVyLmdldCgpIG5lZ2F0aXZlUHJlZml4XSk7Ci0gICAgU3Ry
aW5nIG5lZ2F0aXZlU3VmZml4KFtmb3JtYXR0ZXIuZ2V0KCkgbmVnYXRpdmVTdWZmaXhdKTsKKyAg
ICBTdHJpbmcgcG9zaXRpdmVQcmVmaXgoW2Zvcm1hdHRlciBwb3NpdGl2ZVByZWZpeF0pOworICAg
IFN0cmluZyBwb3NpdGl2ZVN1ZmZpeChbZm9ybWF0dGVyIHBvc2l0aXZlU3VmZml4XSk7CisgICAg
U3RyaW5nIG5lZ2F0aXZlUHJlZml4KFtmb3JtYXR0ZXIgbmVnYXRpdmVQcmVmaXhdKTsKKyAgICBT
dHJpbmcgbmVnYXRpdmVTdWZmaXgoW2Zvcm1hdHRlciBuZWdhdGl2ZVN1ZmZpeF0pOwogICAgIHNl
dExvY2FsZURhdGEoc3ltYm9scywgcG9zaXRpdmVQcmVmaXgsIHBvc2l0aXZlU3VmZml4LCBuZWdh
dGl2ZVByZWZpeCwgbmVnYXRpdmVTdWZmaXgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L2NvY29hL0xvY2FsaXplZERhdGVDYWNoZS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvY29jb2EvTG9jYWxpemVkRGF0ZUNhY2hlLm1tCmluZGV4IDNh
MWQxNjNhOGQ2NGMwZTZjYmIzNTg1N2YyNGQ3Yjc2MWNmZjljZDIuLjkzODRkMDJkYzcwYzQ5Y2Nh
MWM2MzVlNWU4ODZjNDNlZDkzZDljMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvY29jb2EvTG9jYWxpemVkRGF0ZUNhY2hlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvY29jb2EvTG9jYWxpemVkRGF0ZUNhY2hlLm1tCkBAIC0xNDYsMTIgKzE0
NiwxMiBAQCBmbG9hdCBMb2NhbGl6ZWREYXRlQ2FjaGU6OmNhbGN1bGF0ZU1heGltdW1XaWR0aChE
YXRlQ29tcG9uZW50c1R5cGUgdHlwZSwgY29uc3QgTQogICAgIC8vIGRhdGUgZG9lc24ndCBhZGp1
c3QgZm9yIHRoZSBjdXJyZW50IHRpbWV6b25lLiBUaGlzIGlzIGFuIGFyYml0cmFyeSBkYXRlCiAg
ICAgLy8gKHgtMjctMjAwNykgYW5kIHRpbWUgKDEwOjQ1IFBNKS4KICAgICBSZXRhaW5QdHI8TlND
YWxlbmRhcj4gZ3JlZ29yaWFuID0gYWRvcHROUyhbW05TQ2FsZW5kYXIgYWxsb2NdIGluaXRXaXRo
Q2FsZW5kYXJJZGVudGlmaWVyOk5TQ2FsZW5kYXJJZGVudGlmaWVyR3JlZ29yaWFuXSk7Ci0gICAg
W2dyZWdvcmlhbi5nZXQoKSBzZXRUaW1lWm9uZTpbTlNUaW1lWm9uZSB0aW1lWm9uZUZvclNlY29u
ZHNGcm9tR01UOjBdXTsKKyAgICBbZ3JlZ29yaWFuIHNldFRpbWVab25lOltOU1RpbWVab25lIHRp
bWVab25lRm9yU2Vjb25kc0Zyb21HTVQ6MF1dOwogICAgIFJldGFpblB0cjxOU0RhdGVDb21wb25l
bnRzPiBjb21wb25lbnRzID0gYWRvcHROUyhbW05TRGF0ZUNvbXBvbmVudHMgYWxsb2NdIGluaXRd
KTsKLSAgICBbY29tcG9uZW50cy5nZXQoKSBzZXREYXk6MjddOwotICAgIFtjb21wb25lbnRzLmdl
dCgpIHNldFllYXI6MjAwN107Ci0gICAgW2NvbXBvbmVudHMuZ2V0KCkgc2V0SG91cjoyMl07Ci0g
ICAgW2NvbXBvbmVudHMuZ2V0KCkgc2V0TWludXRlOjQ1XTsKKyAgICBbY29tcG9uZW50cyBzZXRE
YXk6MjddOworICAgIFtjb21wb25lbnRzIHNldFllYXI6MjAwN107CisgICAgW2NvbXBvbmVudHMg
c2V0SG91cjoyMl07CisgICAgW2NvbXBvbmVudHMgc2V0TWludXRlOjQ1XTsKIAogICAgIHN0YXRp
YyBjb25zdCBOU1VJbnRlZ2VyIG51bWJlck9mR3JlZ29yaWFuTW9udGhzID0gW1tkYXRlRm9ybWF0
dGVyIG1vbnRoU3ltYm9sc10gY291bnRdOwogICAgIEFTU0VSVChudW1iZXJPZkdyZWdvcmlhbk1v
bnRocyA9PSAxMik7CkBAIC0xNjMsOCArMTYzLDggQEAgZmxvYXQgTG9jYWxpemVkRGF0ZUNhY2hl
OjpjYWxjdWxhdGVNYXhpbXVtV2lkdGgoRGF0ZUNvbXBvbmVudHNUeXBlIHR5cGUsIGNvbnN0IE0K
ICAgICAgICAgfHwgdHlwZSA9PSBEYXRlQ29tcG9uZW50c1R5cGU6Ok1vbnRoKQogICAgICAgICB0
b3RhbE1vbnRoc1RvVGVzdCA9IG51bWJlck9mR3JlZ29yaWFuTW9udGhzOwogICAgIGZvciAoTlNV
SW50ZWdlciBpID0gMDsgaSA8IHRvdGFsTW9udGhzVG9UZXN0OyArK2kpIHsKLSAgICAgICAgW2Nv
bXBvbmVudHMuZ2V0KCkgc2V0TW9udGg6KGkgKyAxKV07Ci0gICAgICAgIE5TRGF0ZSAqZGF0ZSA9
IFtncmVnb3JpYW4uZ2V0KCkgZGF0ZUZyb21Db21wb25lbnRzOmNvbXBvbmVudHMuZ2V0KCldOwor
ICAgICAgICBbY29tcG9uZW50cyBzZXRNb250aDooaSArIDEpXTsKKyAgICAgICAgTlNEYXRlICpk
YXRlID0gW2dyZWdvcmlhbiBkYXRlRnJvbUNvbXBvbmVudHM6Y29tcG9uZW50cy5nZXQoKV07CiAg
ICAgICAgIE5TU3RyaW5nICpmb3JtYXR0ZWREYXRlID0gW2RhdGVGb3JtYXR0ZXIgc3RyaW5nRnJv
bURhdGU6ZGF0ZV07CiAgICAgICAgIG1heGltdW1XaWR0aCA9IG1heChtYXhpbXVtV2lkdGgsIG1l
YXN1cmVyLm1lYXN1cmVUZXh0KFN0cmluZyhmb3JtYXR0ZWREYXRlKSkpOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNvY29hLm1tIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ29jb2EubW0KaW5kZXggMWZmY2I2Yzcw
ZDQ2NDhlYjk5NzYxY2RkNmIwOGUwYTk0OTIzNzUyNC4uY2NhOTk3NjZkMmU0ZjZmOWE0ZTI4OTQw
NmIwZmRjNWNlZmYyNjFjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lQ29jb2EubW0KQEAgLTIyOCw3ICsyMjgsNyBAQCBTdHJpbmcgUmVuZGVyVGhlbWVDb2NvYTo6
bWVkaWFDb250cm9sc0Zvcm1hdHRlZFN0cmluZ0ZvckR1cmF0aW9uKGNvbnN0IGRvdWJsZSBkdQog
ICAgICAgICBtX2R1cmF0aW9uRm9ybWF0dGVyLmdldCgpLmZvcm1hdHRpbmdDb250ZXh0ID0gTlNG
b3JtYXR0aW5nQ29udGV4dFN0YW5kYWxvbmU7CiAgICAgICAgIG1fZHVyYXRpb25Gb3JtYXR0ZXIu
Z2V0KCkubWF4aW11bVVuaXRDb3VudCA9IDI7CiAgICAgfQotICAgIHJldHVybiBbbV9kdXJhdGlv
bkZvcm1hdHRlci5nZXQoKSBzdHJpbmdGcm9tVGltZUludGVydmFsOmR1cmF0aW9uSW5TZWNvbmRz
XTsKKyAgICByZXR1cm4gW21fZHVyYXRpb25Gb3JtYXR0ZXIgc3RyaW5nRnJvbVRpbWVJbnRlcnZh
bDpkdXJhdGlvbkluU2Vjb25kc107CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KaW5kZXggNjllZTQ5
NjMzNjBlOGM2MDY1YzFmZjcxMWYxZmIxNjZkZTNiNGY1ZS4uMjlkYTY1MGY4NDMwZTFiZGYwMjYz
ZjVkNmQ0ZDU0MDQzY2YxNWM2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZUlPUy5tbQpAQCAtMjAwOSwxMCArMjAwOSwxMCBAQCB2b2lkIFJlbmRlclRoZW1lSU9TOjpw
YWludFN5c3RlbVByZXZpZXdCYWRnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IFBhaW50SW5mbyYgcGFp
bgogICAgICAgICAgICAgbV9sYXJnZUJhZGdlU3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlKHsg
bGFyZ2VCYWRnZURpbWVuc2lvbiwgbGFyZ2VCYWRnZURpbWVuc2lvbiB9LCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IoKSk7CiAgICAgICAgIHN1cmZhY2UgPSBtX2xhcmdlQmFkZ2VTdXJmYWNl
LT5zdXJmYWNlKCk7CiAgICAgfQotICAgIFttX2NpQ29udGV4dC5nZXQoKSByZW5kZXI6dHJhbnNs
YXRlZEltYWdlIHRvSU9TdXJmYWNlOnN1cmZhY2UgYm91bmRzOmJhZGdlUmVjdCBjb2xvclNwYWNl
OnNSR0JDb2xvclNwYWNlUmVmKCldOworICAgIFttX2NpQ29udGV4dCByZW5kZXI6dHJhbnNsYXRl
ZEltYWdlIHRvSU9TdXJmYWNlOnN1cmZhY2UgYm91bmRzOmJhZGdlUmVjdCBjb2xvclNwYWNlOnNS
R0JDb2xvclNwYWNlUmVmKCldOwogICAgIGNnSW1hZ2UgPSB1c2VTbWFsbEJhZGdlID8gbV9zbWFs
bEJhZGdlU3VyZmFjZS0+Y3JlYXRlSW1hZ2UoKSA6IG1fbGFyZ2VCYWRnZVN1cmZhY2UtPmNyZWF0
ZUltYWdlKCk7CiAjZWxzZQotICAgIGNnSW1hZ2UgPSBhZG9wdENGKFttX2NpQ29udGV4dC5nZXQo
KSBjcmVhdGVDR0ltYWdlOnNvdXJjZU92ZXJGaWx0ZXIub3V0cHV0SW1hZ2UgZnJvbVJlY3Q6Zmxp
cHBlZEluc2V0QmFkZ2VSZWN0XSk7CisgICAgY2dJbWFnZSA9IGFkb3B0Q0YoW21fY2lDb250ZXh0
IGNyZWF0ZUNHSW1hZ2U6c291cmNlT3ZlckZpbHRlci5vdXRwdXRJbWFnZSBmcm9tUmVjdDpmbGlw
cGVkSW5zZXRCYWRnZVJlY3RdKTsKICNlbmRpZgogCiAgICAgLy8gQmVmb3JlIHdlIHJlbmRlciB0
aGUgcmVzdWx0LCB3ZSBzaG91bGQgY2xpcCB0byBhIGNpcmNsZSBhcm91bmQgdGhlIGJhZGdlIHJl
Y3RhbmdsZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQppbmRl
eCA0MjE4MjM1MzNmMmM1NjVkYTEwZjhjM2JjNmFkNGEyMGQ5OWJmYjgxLi5lOTY3NWYzZTM2NGM1
NTAyMGFjZWQxZTBkMjdiMzliNjZkYjUxNTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lTWFjLm1tCkBAIC0yMTI0LDggKzIxMjQsOCBAQCBOU1BvcFVwQnV0dG9uQ2Vs
bCogUmVuZGVyVGhlbWVNYWM6OnBvcHVwQnV0dG9uKCkgY29uc3QKIHsKICAgICBpZiAoIW1fcG9w
dXBCdXR0b24pIHsKICAgICAgICAgbV9wb3B1cEJ1dHRvbiA9IGFkb3B0TlMoW1tOU1BvcFVwQnV0
dG9uQ2VsbCBhbGxvY10gaW5pdFRleHRDZWxsOkAiIiBwdWxsc0Rvd246Tk9dKTsKLSAgICAgICAg
W21fcG9wdXBCdXR0b24uZ2V0KCkgc2V0VXNlc0l0ZW1Gcm9tTWVudTpOT107Ci0gICAgICAgIFtt
X3BvcHVwQnV0dG9uLmdldCgpIHNldEZvY3VzUmluZ1R5cGU6TlNGb2N1c1JpbmdUeXBlRXh0ZXJp
b3JdOworICAgICAgICBbbV9wb3B1cEJ1dHRvbiBzZXRVc2VzSXRlbUZyb21NZW51Ok5PXTsKKyAg
ICAgICAgW21fcG9wdXBCdXR0b24gc2V0Rm9jdXNSaW5nVHlwZTpOU0ZvY3VzUmluZ1R5cGVFeHRl
cmlvcl07CiAgICAgICAgIFttX3BvcHVwQnV0dG9uIHNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJl
Y3Rpb246TlNVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uTGVmdFRvUmlnaHRdOwogICAgIH0K
IApAQCAtMjEzNiwxMSArMjEzNiwxMSBAQCBOU1NlYXJjaEZpZWxkQ2VsbCogUmVuZGVyVGhlbWVN
YWM6OnNlYXJjaCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3NlYXJjaCkgewogICAgICAgICBtX3Nl
YXJjaCA9IGFkb3B0TlMoW1tOU1NlYXJjaEZpZWxkQ2VsbCBhbGxvY10gaW5pdFRleHRDZWxsOkAi
Il0pOwotICAgICAgICBbbV9zZWFyY2guZ2V0KCkgc2V0QmV6ZWxTdHlsZTpOU1RleHRGaWVsZFJv
dW5kZWRCZXplbF07Ci0gICAgICAgIFttX3NlYXJjaC5nZXQoKSBzZXRCZXplbGVkOllFU107Ci0g
ICAgICAgIFttX3NlYXJjaC5nZXQoKSBzZXRFZGl0YWJsZTpZRVNdOwotICAgICAgICBbbV9zZWFy
Y2guZ2V0KCkgc2V0Rm9jdXNSaW5nVHlwZTpOU0ZvY3VzUmluZ1R5cGVFeHRlcmlvcl07Ci0gICAg
ICAgIFttX3NlYXJjaC5nZXQoKSBzZXRDZW50ZXJlZExvb2s6Tk9dOworICAgICAgICBbbV9zZWFy
Y2ggc2V0QmV6ZWxTdHlsZTpOU1RleHRGaWVsZFJvdW5kZWRCZXplbF07CisgICAgICAgIFttX3Nl
YXJjaCBzZXRCZXplbGVkOllFU107CisgICAgICAgIFttX3NlYXJjaCBzZXRFZGl0YWJsZTpZRVNd
OworICAgICAgICBbbV9zZWFyY2ggc2V0Rm9jdXNSaW5nVHlwZTpOU0ZvY3VzUmluZ1R5cGVFeHRl
cmlvcl07CisgICAgICAgIFttX3NlYXJjaCBzZXRDZW50ZXJlZExvb2s6Tk9dOwogICAgIH0KIAog
ICAgIHJldHVybiBtX3NlYXJjaC5nZXQoKTsKQEAgLTIxNTgsOSArMjE1OCw5IEBAIE5TU2xpZGVy
Q2VsbCogUmVuZGVyVGhlbWVNYWM6OnNsaWRlclRodW1iSG9yaXpvbnRhbCgpIGNvbnN0CiB7CiAg
ICAgaWYgKCFtX3NsaWRlclRodW1iSG9yaXpvbnRhbCkgewogICAgICAgICBtX3NsaWRlclRodW1i
SG9yaXpvbnRhbCA9IGFkb3B0TlMoW1tOU1NsaWRlckNlbGwgYWxsb2NdIGluaXRdKTsKLSAgICAg
ICAgW21fc2xpZGVyVGh1bWJIb3Jpem9udGFsLmdldCgpIHNldFNsaWRlclR5cGU6TlNTbGlkZXJU
eXBlTGluZWFyXTsKLSAgICAgICAgW21fc2xpZGVyVGh1bWJIb3Jpem9udGFsLmdldCgpIHNldENv
bnRyb2xTaXplOk5TQ29udHJvbFNpemVTbWFsbF07Ci0gICAgICAgIFttX3NsaWRlclRodW1iSG9y
aXpvbnRhbC5nZXQoKSBzZXRGb2N1c1JpbmdUeXBlOk5TRm9jdXNSaW5nVHlwZUV4dGVyaW9yXTsK
KyAgICAgICAgW21fc2xpZGVyVGh1bWJIb3Jpem9udGFsIHNldFNsaWRlclR5cGU6TlNTbGlkZXJU
eXBlTGluZWFyXTsKKyAgICAgICAgW21fc2xpZGVyVGh1bWJIb3Jpem9udGFsIHNldENvbnRyb2xT
aXplOk5TQ29udHJvbFNpemVTbWFsbF07CisgICAgICAgIFttX3NsaWRlclRodW1iSG9yaXpvbnRh
bCBzZXRGb2N1c1JpbmdUeXBlOk5TRm9jdXNSaW5nVHlwZUV4dGVyaW9yXTsKICAgICB9CiAKICAg
ICByZXR1cm4gbV9zbGlkZXJUaHVtYkhvcml6b250YWwuZ2V0KCk7CkBAIC0yMTcwLDkgKzIxNzAs
OSBAQCBOU1NsaWRlckNlbGwqIFJlbmRlclRoZW1lTWFjOjpzbGlkZXJUaHVtYlZlcnRpY2FsKCkg
Y29uc3QKIHsKICAgICBpZiAoIW1fc2xpZGVyVGh1bWJWZXJ0aWNhbCkgewogICAgICAgICBtX3Ns
aWRlclRodW1iVmVydGljYWwgPSBhZG9wdE5TKFtbTlNTbGlkZXJDZWxsIGFsbG9jXSBpbml0XSk7
Ci0gICAgICAgIFttX3NsaWRlclRodW1iVmVydGljYWwuZ2V0KCkgc2V0U2xpZGVyVHlwZTpOU1Ns
aWRlclR5cGVMaW5lYXJdOwotICAgICAgICBbbV9zbGlkZXJUaHVtYlZlcnRpY2FsLmdldCgpIHNl
dENvbnRyb2xTaXplOk5TQ29udHJvbFNpemVTbWFsbF07Ci0gICAgICAgIFttX3NsaWRlclRodW1i
VmVydGljYWwuZ2V0KCkgc2V0Rm9jdXNSaW5nVHlwZTpOU0ZvY3VzUmluZ1R5cGVFeHRlcmlvcl07
CisgICAgICAgIFttX3NsaWRlclRodW1iVmVydGljYWwgc2V0U2xpZGVyVHlwZTpOU1NsaWRlclR5
cGVMaW5lYXJdOworICAgICAgICBbbV9zbGlkZXJUaHVtYlZlcnRpY2FsIHNldENvbnRyb2xTaXpl
Ok5TQ29udHJvbFNpemVTbWFsbF07CisgICAgICAgIFttX3NsaWRlclRodW1iVmVydGljYWwgc2V0
Rm9jdXNSaW5nVHlwZTpOU0ZvY3VzUmluZ1R5cGVFeHRlcmlvcl07CiAgICAgfQogCiAgICAgcmV0
dXJuIG1fc2xpZGVyVGh1bWJWZXJ0aWNhbC5nZXQoKTsKQEAgLTIxODIsMTMgKzIxODIsMTMgQEAg
TlNUZXh0RmllbGRDZWxsKiBSZW5kZXJUaGVtZU1hYzo6dGV4dEZpZWxkKCkgY29uc3QKIHsKICAg
ICBpZiAoIW1fdGV4dEZpZWxkKSB7CiAgICAgICAgIG1fdGV4dEZpZWxkID0gYWRvcHROUyhbW1dl
YkNvcmVUZXh0RmllbGRDZWxsIGFsbG9jXSBpbml0VGV4dENlbGw6QCIiXSk7Ci0gICAgICAgIFtt
X3RleHRGaWVsZC5nZXQoKSBzZXRCZXplbGVkOllFU107Ci0gICAgICAgIFttX3RleHRGaWVsZC5n
ZXQoKSBzZXRFZGl0YWJsZTpZRVNdOwotICAgICAgICBbbV90ZXh0RmllbGQuZ2V0KCkgc2V0Rm9j
dXNSaW5nVHlwZTpOU0ZvY3VzUmluZ1R5cGVFeHRlcmlvcl07CisgICAgICAgIFttX3RleHRGaWVs
ZCBzZXRCZXplbGVkOllFU107CisgICAgICAgIFttX3RleHRGaWVsZCBzZXRFZGl0YWJsZTpZRVNd
OworICAgICAgICBbbV90ZXh0RmllbGQgc2V0Rm9jdXNSaW5nVHlwZTpOU0ZvY3VzUmluZ1R5cGVF
eHRlcmlvcl07CiAgICAgICAgIC8vIFBvc3QtTGlvbiwgV2ViQ29yZSBjYW4gYmUgaW4gY2hhcmdl
IG9mIHBhaW50aW5uZyB0aGUgYmFja2dyb3VuZCB0aGFua3MgdG8KICAgICAgICAgLy8gdGhlIHdv
cmthcm91bmQgaW4gcGxhY2UgZm9yIDxyZGFyOi8vcHJvYmxlbS8xMTM4NTQ2MT4sIHdoaWNoIGlz
IGltcGxlbWVudGVkCiAgICAgICAgIC8vIGFib3ZlIGFzIF9jb3JlVUlEcmF3T3B0aW9uc1dpdGhG
cmFtZS4KLSAgICAgICAgW21fdGV4dEZpZWxkLmdldCgpIHNldERyYXdzQmFja2dyb3VuZDpOT107
CisgICAgICAgIFttX3RleHRGaWVsZCBzZXREcmF3c0JhY2tncm91bmQ6Tk9dOwogICAgIH0KIAog
ICAgIHJldHVybiBtX3RleHRGaWVsZC5nZXQoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440474</attachid>
            <date>2021-10-06 23:37:50 -0700</date>
            <delta_ts>2021-10-07 04:55:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231351-20211007173748.patch</filename>
            <type>text/plain</type>
            <size>113505</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzNTk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTA0N2I4NmJlOWE5OGE5
MmJhZTA2MDk5YzUxMDE1OGQ4N2QyNWQ3OS4uNzM4MTA3MjI3MzRiYWUwOTFiM2FlNDA2ODEzMDIx
OTc5YmNlOGVhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5MCBAQAorMjAyMS0xMC0wNiAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIFN0cmVhbWxpbmUgYW5k
IG1ha2UgY2FsbCB0byBvYmplY3RpdmUtQyBtZXRob2RzIG1vcmUgY29uc2lzdGVudCBhY3Jvc3Mg
Y2FsbCBzaXRlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzMTM1MQorICAgICAgICByZGFyOi8vcHJvYmxlbS84Mzk2Njg1MworCisgICAgICAgIFNp
bmNlIGJ1ZyA5NzQwMywgUmV0YWluUHRyPFQqPiBoYXMgYSBUKiBjb252ZXJzaW9uIG9wZXJhdG9y
OyB0aGUgY2FsbCB0bworICAgICAgICBSZXRhaW5QdHI6OmdldCgpIGlzIG5vdyByZWR1bmRhbnQg
dW5kZXIgc29tZSBjaXJjdW1zdGFuY2VzLgorICAgICAgICBNYWtlIHRoZSB1c2Ugb2YgUmV0YWlu
UHRyPFQqPiBpbiBvYmplY3RpdmUtQyBjYWxsIG1vcmUgY29uc2lzdGVudCBieSB1c2luZyB0aGUg
cGF0dGVybjoKKyAgICAgICAgUmV0YWluUHRyPFQqPiBmb287CisgICAgICAgIFtmb28gbWV0aG9k
T2ZUXTsKKyAgICAgICAgU291cmNlLXdpZGUgcmVwbGFjZW1lbnQgb2YgIlxbKFtfYS16QS1aXSsp
XC5nZXRcKFwpICIgYnkgIlxbKFtfYS16QS1aXSspXCAiLAorICAgICAgICB0aGVuIG1hbnVhbGx5
IGZpeGluZyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8VCo+PiBjYXNlcyB3aGljaCBkbyBub3Qg
eWV0IGFsbG93CisgICAgICAgIGZvciB0aGF0LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE5vIGNoYW5nZSBpbiBvYnNlcnZhYmxlIGJlaGF2aW91ci4K
KworICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXJNYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjp1cGRhdGVQbGF0Zm9ybVNjcmlwdE9iamVjdHMp
OgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW06CisgICAgICAgIChKU0M6
OkJpbmRpbmdzOjpPYmpjSW5zdGFuY2U6On5PYmpjSW5zdGFuY2UpOgorICAgICAgICAoSlNDOjpC
aW5kaW5nczo6T2JqY0luc3RhbmNlOjpzdXBwb3J0c0ludm9rZURlZmF1bHRNZXRob2QgY29uc3Qp
OgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6T2JqY0luc3RhbmNlOjppbnZva2VEZWZhdWx0TWV0
aG9kKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNJbnN0YW5jZTo6ZGVmYXVsdFZhbHVl
IGNvbnN0KToKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW06CisgICAgICAg
IChKU0M6OkJpbmRpbmdzOjpPYmpjQXJyYXk6OnNldFZhbHVlQXQgY29uc3QpOgorICAgICAgICAo
SlNDOjpCaW5kaW5nczo6T2JqY0FycmF5Ojp2YWx1ZUF0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6
QmluZGluZ3M6Ok9iamNBcnJheTo6Z2V0TGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKiBlZGl0aW5n
L2NvY29hL0RhdGFEZXRlY3Rpb24ubW06CisgICAgICAgIChXZWJDb3JlOjpyZXN1bHRJc1VSTCk6
CisgICAgICAgICogcGFnZS9jb2NvYS9SZXNvdXJjZVVzYWdlT3ZlcmxheUNvY29hLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VVc2FnZU92ZXJsYXk6OnBsYXRmb3JtSW5pdGlhbGl6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVVzYWdlT3ZlcmxheTo6cGxhdGZvcm1EcmF3KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjphZGRE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjpm
aW5pc2hlZEFkZGluZ0RhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2Ft
ZUNvbnRyb2xsZXJHYW1lcGFkLm1tOgorICAgICAgICAoV2ViQ29yZTo6R2FtZUNvbnRyb2xsZXJH
YW1lcGFkOjpzZXR1cEFzRXh0ZW5kZWRHYW1lcGFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVk91dHB1dERldmljZU1lbnVDb250cm9sbGVyVGFyZ2V0
UGlja2VyLm1tOgorICAgICAgICAoV2ViQ29yZTo6QVZPdXRwdXREZXZpY2VNZW51Q29udHJvbGxl
clRhcmdldFBpY2tlcjo6ZGV2aWNlUGlja2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkFWT3V0cHV0
RGV2aWNlTWVudUNvbnRyb2xsZXJUYXJnZXRQaWNrZXI6Om91dHB1dENvbnRleHQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5k
YXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9i
akM6OmdlbmVyYXRlS2V5UmVxdWVzdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMubW06CisgICAgICAg
IChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQzo6bGFiZWwgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakM6Omxhbmd1YWdl
IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6fk1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6Y2FuY2VsTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVJbWFnZUdlbmVyYXRvcik6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzeW5jaHJvbml6
ZVRleHRUcmFja1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWQXNzZXRGb3JVUkwpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZQbGF5ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRl
QVZQbGF5ZXJJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OmNoZWNrUGxheWFiaWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6YmVnaW5Mb2FkaW5nTWV0YWRhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6YWNjZXNz
TG9nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OmVycm9yTG9nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBsYXRmb3JtU2V0VmlzaWJsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwbGF0Zm9ybUR1cmF0
aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OmN1cnJlbnRNZWRpYVRpbWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2Vla1RvVGltZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRWb2x1bWUpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0
TXV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6YXNzZXRTdGF0dXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlSW1hZ2VGb3JUaW1lSW5SZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZVZp
ZGVvTGF5ZXJHcmF2aXR5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OmNyZWF0ZVZpZGVvT3V0cHV0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmRlc3Ryb3lWaWRlb091dHB1dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRh
dGVMYXN0UGl4ZWxCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6Zmlyc3RFbmFibGVkVHJhY2sgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6aGFzTG9hZGVkTWVkaWFT
ZWxlY3Rpb25Hcm91cHMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6c2FmZU1lZGlhU2VsZWN0aW9uR3JvdXBGb3JMZWdpYmxlTWVkaWEpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2Fm
ZU1lZGlhU2VsZWN0aW9uR3JvdXBGb3JBdWRpYmxlTWVkaWEpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2FmZU1lZGlhU2VsZWN0aW9uR3Jv
dXBGb3JWaXN1YWxNZWRpYSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjpwcm9jZXNzTWVkaWFTZWxlY3Rpb25PcHRpb25zKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldEN1cnJlbnRU
ZXh0VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6bGFuZ3VhZ2VPZlByaW1hcnlBdWRpb1RyYWNrIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OndpcmVsZXNzVmlkZW9Q
bGF5YmFja0Rpc2FibGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNl
dFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Om1ldGFkYXRhRGlkQXJyaXZlKToKKyAgICAgICAg
KC1bV2ViQ29yZUFWRk1vdmllT2JzZXJ2ZXIgb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDpvZk9iamVj
dDpjaGFuZ2U6Y29udGV4dDpdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgIChXZWJDb3Jl
OjpXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TG9hZGluZyk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpsb2FkRmFpbGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bG9hZEZpbmlzaGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3RGF0YVN0b3JlZElu
U2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9UZXh0VHJh
Y2tSZXByZXNlbnRhdGlvbkNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrUmVw
cmVzZW50YXRpb25Db2NvYTo6VGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYSk6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hOjp+VGV4dFRyYWNrUmVwcmVz
ZW50YXRpb25Db2NvYSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tSZXByZXNlbnRhdGlv
bkNvY29hOjp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrUmVwcmVzZW50YXRp
b25Db2NvYTo6c2V0Q29udGVudFNjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja1Jl
cHJlc2VudGF0aW9uQ29jb2E6OnNldEhpZGRlbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hOjpib3VuZHMgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2lvcy9EcmFnSW1hZ2VJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpzY2FsZURyYWdJ
bWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdlRm9yUmFuZ2UpOgorICAgICAgICAqIHBsYXRm
b3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW06CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lUaWxl
Q2FjaGU6On5MZWdhY3lUaWxlQ2FjaGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9MZWdhY3lU
aWxlTGF5ZXJQb29sLm1tOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5VGlsZUxheWVyUG9vbDo6
YWRkTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1Mu
bW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVySU9T
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6cGF1c2Up
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6cmVzdW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OnNwZWFrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OmNhbmNlbCk6CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpyZXNldFN0YXRlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW06Cisg
ICAgICAgICgtW1dlYkFWUGxheWVyTGF5ZXIgc2V0VmlkZW9HcmF2aXR5Ol0pOgorICAgICAgICAo
LVtXZWJBVlBsYXllclZpZXdDb250cm9sbGVyIGVudGVyRnVsbFNjcmVlbkFuaW1hdGVkOmNvbXBs
ZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXZWJBVlBsYXllclZpZXdDb250cm9sbGVyIGV4
aXRGdWxsU2NyZWVuQW5pbWF0ZWQ6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dl
YkFWUGxheWVyVmlld0NvbnRyb2xsZXIgTVlfTk9fUkVUVVJOXSk6CisgICAgICAgICgtW1dlYkFW
UGxheWVyVmlld0NvbnRyb2xsZXIgcmVtb3ZlRnJvbVBhcmVudFZpZXdDb250cm9sbGVyXSk6Cisg
ICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6Z2V0VHlwZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtUGFzdGVib2FyZDo6Z2V0UGF0aG5hbWVzRm9yVHlwZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmNoYW5nZUNvdW50IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6Y29weSk6CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmFkZFR5cGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtUGFzdGVib2FyZDo6c2V0VVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVi
b2FyZDo6c2V0U3RyaW5nRm9yVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpemVyOjp+UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcik6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpwYXVzZSk6CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpyZXN1bWUpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6c3BlYWspOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplcjo6Y2FuY2VsKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtU3BlZWNoU3ludGhlc2l6ZXI6OnJlc2V0U3RhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9TZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Vy
aWFsaXplZFBsYXRmb3JtRGF0YUN1ZU1hYzo6aXNFcXVhbCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjOjplbmNvZGFibGVWYWx1ZSBjb25zdCk6
CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3
Lm1tOgorICAgICAgICAoLVtXZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldyBpbml0V2l0
aEZyYW1lOl0pOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJDb3JlRnVsbFNjcmVlbldhcm5p
bmdWaWV3Lm1tOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzdGFydEFzc2V0V3JpdGVyKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmRDb21wcmVzc2VkQXVkaW9TYW1w
bGVCdWZmZXJJZlBvc3NpYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyOjphcHBlbmRDb21wcmVzc2VkVmlkZW9TYW1wbGVCdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmZsdXNoQ29tcHJlc3NlZFNhbXBs
ZUJ1ZmZlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVE
ZXZpY2VNYW5hZ2VyLm1tOgorICAgICAgICAoV2ViQ29yZTo6QVZDYXB0dXJlRGV2aWNlTWFuYWdl
cjo6dXBkYXRlQ2FjaGVkQVZDYXB0dXJlRGV2aWNlcyk6CisgICAgICAgICogcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tOgorICAgICAgICAoV2ViQ29yZTo6
QVZWaWRlb0NhcHR1cmVTb3VyY2U6OkFWVmlkZW9DYXB0dXJlU291cmNlKToKKyAgICAgICAgKC1b
V2ViQ29yZUFWVmlkZW9DYXB0dXJlU291cmNlT2JzZXJ2ZXIgb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0
aDpvZk9iamVjdDpjaGFuZ2U6Y29udGV4dDpdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0Ojpkb1VwZGF0ZVJlc291cmNlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUmVzb3VyY2VIVFRQQm9keSk6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybUhUVFBCb2R5KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVzcG9uc2VDb2NvYS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OmluaXROU1VSTFJlc3BvbnNlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtTGF6eUlu
aXQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL0F1dGhlbnRpY2F0aW9uTWFjLm1t
OgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OnNldEF1dGhlbnRp
Y2F0aW9uQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
OjphdXRoZW50aWNhdGlvbkNsaWVudCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZU5TRXJy
b3JGcm9tUmVzb3VyY2VFcnJvckJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJv
cjo6bWFwUGxhdGZvcm1FcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpw
bGF0Zm9ybUxhenlJbml0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3Jl
UmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW06CisgICAgICAgICgtW1dl
YkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZSBjb25uZWN0aW9uOndp
bGxTZW5kUmVxdWVzdDpyZWRpcmVjdFJlc3BvbnNlOl0pOgorICAgICAgICAqIHBsYXRmb3JtL3Rl
eHQvY29jb2EvTG9jYWxlQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGVDb2NvYTo6
TG9jYWxlQ29jb2EpOgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxlQ29jb2E6OnRpbWVBTVBNTGFi
ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsZUNvY29hOjppbml0aWFsaXplTG9jYWxlRGF0
YSk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9jb2NvYS9Mb2NhbGl6ZWREYXRlQ2FjaGUubW06
CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGl6ZWREYXRlQ2FjaGU6OmNhbGN1bGF0ZU1heGltdW1X
aWR0aCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lQ29jb2EubW06CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUaGVtZUNvY29hOjptZWRpYUNvbnRyb2xzRm9ybWF0dGVkU3RyaW5n
Rm9yRHVyYXRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludFN5c3RlbVByZXZpZXdCYWRnZSk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWVNYWM6OnBvcHVwQnV0dG9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lTWFjOjpzZWFyY2ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVNYWM6OnNsaWRlclRodW1iSG9yaXpvbnRhbCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZU1hYzo6c2xpZGVyVGh1bWJWZXJ0aWNhbCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6dGV4dEZpZWxkIGNvbnN0KToKKwogMjAyMS0wOS0yOCAg
SmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgogCiAgICAgICAgIEhhdmUgU291cmNl
QnVmZmVyUHJpdmF0ZUFWSk9iakMgdXNlIFdvcmtRdWV1ZSBpbnN0ZWFkIG9mIGRpc3BhdGNoX2Fz
eW5jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9s
bGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlck1h
Yy5tbQppbmRleCA5ODUzZDBhNjRmOTIzNzEwM2JkZDdiZGMyYTNmMmI3NDMxN2EyNjRiLi42ZjJj
MDliMjRhOWYxNzBiMTU1ZDhmMTgyYTYyYjBiYTIzMjg4MDY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXJNYWMubW0KQEAgLTEyNSw3ICsxMjUs
NyBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OnVwZGF0ZVBsYXRmb3JtU2NyaXB0T2JqZWN0cygp
CiB7CiAgICAgaWYgKG1fd2luZG93U2NyaXB0T2JqZWN0KSB7CiAgICAgICAgIEpTQzo6QmluZGlu
Z3M6OlJvb3RPYmplY3QqIHJvb3QgPSBiaW5kaW5nUm9vdE9iamVjdCgpOwotICAgICAgICBbbV93
aW5kb3dTY3JpcHRPYmplY3QuZ2V0KCkgX3NldE9yaWdpblJvb3RPYmplY3Q6cm9vdCBhbmRSb290
T2JqZWN0OnJvb3RdOworICAgICAgICBbbV93aW5kb3dTY3JpcHRPYmplY3QgX3NldE9yaWdpblJv
b3RPYmplY3Q6cm9vdCBhbmRSb290T2JqZWN0OnJvb3RdOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0KaW5kZXggMzg0ODMwNTM4MTlkNDRh
MWIwOTRjNWZlMDI2YjlmNDUwZjljOTA0Zi4uN2U5ZTA3OWZjYzQyMDUwYzEyMzUwNmRlNGJhYWY5
MzZmMTkyZTk0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19p
bnN0YW5jZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNl
Lm1tCkBAIC0xMzIsOCArMTMyLDggQEAgT2JqY0luc3RhbmNlOjp+T2JqY0luc3RhbmNlKCkKICAg
ICAgICAgQVNTRVJUKF9pbnN0YW5jZSk7CiAgICAgICAgIHdyYXBwZXJDYWNoZSgpLnJlbW92ZSgo
X19icmlkZ2UgQ0ZUeXBlUmVmKV9pbnN0YW5jZS5nZXQoKSk7CiAKLSAgICAgICAgaWYgKFtfaW5z
dGFuY2UuZ2V0KCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihmaW5hbGl6ZUZvcldlYlNj
cmlwdCldKQotICAgICAgICAgICAgW19pbnN0YW5jZS5nZXQoKSBwZXJmb3JtU2VsZWN0b3I6QHNl
bGVjdG9yKGZpbmFsaXplRm9yV2ViU2NyaXB0KV07CisgICAgICAgIGlmIChbX2luc3RhbmNlIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoZmluYWxpemVGb3JXZWJTY3JpcHQpXSkKKyAgICAg
ICAgICAgIFtfaW5zdGFuY2UgcGVyZm9ybVNlbGVjdG9yOkBzZWxlY3RvcihmaW5hbGl6ZUZvcldl
YlNjcmlwdCldOwogICAgICAgICBfaW5zdGFuY2UgPSAwOwogICAgIH0KIH0KQEAgLTE2Nyw3ICsx
NjcsNyBAQCBCaW5kaW5nczo6Q2xhc3MqIE9iamNJbnN0YW5jZTo6Z2V0Q2xhc3MoKSBjb25zdAog
CiBib29sIE9iamNJbnN0YW5jZTo6c3VwcG9ydHNJbnZva2VEZWZhdWx0TWV0aG9kKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gW19pbnN0YW5jZS5nZXQoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKGludm9rZURlZmF1bHRNZXRob2RXaXRoQXJndW1lbnRzOildOworICAgIHJldHVybiBbX2lu
c3RhbmNlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoaW52b2tlRGVmYXVsdE1ldGhvZFdp
dGhBcmd1bWVudHM6KV07CiB9CiAKIGNsYXNzIE9iakNSdW50aW1lTWV0aG9kIGZpbmFsIDogcHVi
bGljIFJ1bnRpbWVNZXRob2QgewpAQCAtMzUzLDEwICszNTMsMTAgQEAgSlNDOjpKU1ZhbHVlIE9i
amNJbnN0YW5jZTo6aW52b2tlRGVmYXVsdE1ldGhvZChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamUKICAgICBzZXRHbG9iYWxFeGNlcHRpb24obmlsKTsKICAgICAKIEB0cnkgewotICAg
IGlmICghW19pbnN0YW5jZS5nZXQoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGludm9r
ZURlZmF1bHRNZXRob2RXaXRoQXJndW1lbnRzOildKQorICAgIGlmICghW19pbnN0YW5jZSByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGludm9rZURlZmF1bHRNZXRob2RXaXRoQXJndW1lbnRz
OildKQogICAgICAgICByZXR1cm4gcmVzdWx0OwogCi0gICAgTlNNZXRob2RTaWduYXR1cmUqIHNp
Z25hdHVyZSA9IFtfaW5zdGFuY2UuZ2V0KCkgbWV0aG9kU2lnbmF0dXJlRm9yU2VsZWN0b3I6QHNl
bGVjdG9yKGludm9rZURlZmF1bHRNZXRob2RXaXRoQXJndW1lbnRzOildOworICAgIE5TTWV0aG9k
U2lnbmF0dXJlKiBzaWduYXR1cmUgPSBbX2luc3RhbmNlIG1ldGhvZFNpZ25hdHVyZUZvclNlbGVj
dG9yOkBzZWxlY3RvcihpbnZva2VEZWZhdWx0TWV0aG9kV2l0aEFyZ3VtZW50czopXTsKICAgICBO
U0ludm9jYXRpb24qIGludm9jYXRpb24gPSBbTlNJbnZvY2F0aW9uIGludm9jYXRpb25XaXRoTWV0
aG9kU2lnbmF0dXJlOnNpZ25hdHVyZV07CiAgICAgW2ludm9jYXRpb24gc2V0U2VsZWN0b3I6QHNl
bGVjdG9yKGludm9rZURlZmF1bHRNZXRob2RXaXRoQXJndW1lbnRzOildOwogICAgIFtpbnZvY2F0
aW9uIHNldFRhcmdldDpfaW5zdGFuY2UuZ2V0KCldOwpAQCAtNDY3LDkgKzQ2Nyw5IEBAIEpTQzo6
SlNWYWx1ZSBPYmpjSW5zdGFuY2U6OmRlZmF1bHRWYWx1ZShKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgUHJlCiAgICAgICAgIHJldHVybiBzdHJpbmdWYWx1ZShsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgICBpZiAoaGludCA9PSBQcmVmZXJOdW1iZXIpCiAgICAgICAgIHJldHVy
biBudW1iZXJWYWx1ZShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBpZiAoW19pbnN0YW5jZS5n
ZXQoKSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQorICAgIGlmIChbX2luc3RhbmNl
IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCiAgICAgICAgIHJldHVybiBzdHJpbmdW
YWx1ZShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBpZiAoW19pbnN0YW5jZS5nZXQoKSBpc0tp
bmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKQorICAgIGlmIChbX2luc3RhbmNlIGlzS2luZE9m
Q2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCiAgICAgICAgIHJldHVybiBudW1iZXJWYWx1ZShsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gdmFsdWVPZihsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGlt
ZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQppbmRleCA3
YTg4NzkwNzczYjkwMTdjM2Y3MGViYzk0MzU5NTA3NmJhNDMzMTRkLi43MTAyOGQzNTBlZWVmZDVi
ZWExMjU3ZWZjZWQyZTg2N2I0OGNiZmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMv
b2JqY19ydW50aW1lLm1tCkBAIC0xNzAsMTIgKzE3MCwxMiBAQCBib29sIE9iamNBcnJheTo6c2V0
VmFsdWVBdChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgdW5zaWduZWQgaW50
IGluZAogICAgIEpTQzo6Vk0mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBpZiAoIVtfYXJyYXku
Z2V0KCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihpbnNlcnRPYmplY3Q6YXRJbmRleDop
XSkgeworICAgIGlmICghW19hcnJheSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGluc2Vy
dE9iamVjdDphdEluZGV4OildKSB7CiAgICAgICAgIHRocm93VHlwZUVycm9yKGxleGljYWxHbG9i
YWxPYmplY3QsIHNjb3BlLCAiQXJyYXkgaXMgbm90IG11dGFibGUuIl9zKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmIChpbmRleCA+IFtfYXJyYXkuZ2V0KCkgY291bnRd
KSB7CisgICAgaWYgKGluZGV4ID4gW19hcnJheSBjb3VudF0pIHsKICAgICAgICAgdGhyb3dFeGNl
cHRpb24obGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IobGV4aWNh
bEdsb2JhbE9iamVjdCwgIkluZGV4IGV4Y2VlZHMgYXJyYXkgc2l6ZS4iKSk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CkBAIC0xODUsNyArMTg1LDcgQEAgYm9vbCBPYmpjQXJyYXk6OnNl
dFZhbHVlQXQoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIHVuc2lnbmVkIGlu
dCBpbmQKICAgICBPYmpjVmFsdWUgb1ZhbHVlID0gY29udmVydFZhbHVlVG9PYmpjVmFsdWUgKGxl
eGljYWxHbG9iYWxPYmplY3QsIGFWYWx1ZSwgT2JqY09iamVjdFR5cGUpOwogCiAgICAgQHRyeSB7
Ci0gICAgICAgIFtfYXJyYXkuZ2V0KCkgaW5zZXJ0T2JqZWN0OihfX2JyaWRnZSBpZClvVmFsdWUu
b2JqZWN0VmFsdWUgYXRJbmRleDppbmRleF07CisgICAgICAgIFtfYXJyYXkgaW5zZXJ0T2JqZWN0
OihfX2JyaWRnZSBpZClvVmFsdWUub2JqZWN0VmFsdWUgYXRJbmRleDppbmRleF07CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0gQGNhdGNoKE5TRXhjZXB0aW9uKiBsb2NhbEV4Y2VwdGlvbikg
ewogICAgICAgICB0aHJvd0V4Y2VwdGlvbihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgY3Jl
YXRlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgIk9iamVjdGl2ZS1DIGV4Y2VwdGlvbi4iKSk7
CkBAIC0xOTgsMTAgKzE5OCwxMCBAQCBKU1ZhbHVlIE9iamNBcnJheTo6dmFsdWVBdChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgdW5zaWduZWQgaW50IGluZAogICAgIEpTQzo6
Vk0mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBpZiAoaW5kZXggPiBbX2FycmF5LmdldCgpIGNv
dW50XSkKKyAgICBpZiAoaW5kZXggPiBbX2FycmF5IGNvdW50XSkKICAgICAgICAgcmV0dXJuIHRo
cm93RXhjZXB0aW9uKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9y
KGxleGljYWxHbG9iYWxPYmplY3QsICJJbmRleCBleGNlZWRzIGFycmF5IHNpemUuIikpOwogICAg
IEB0cnkgewotICAgICAgICBpZCBvYmogPSBbX2FycmF5LmdldCgpIG9iamVjdEF0SW5kZXg6aW5k
ZXhdOworICAgICAgICBpZCBvYmogPSBbX2FycmF5IG9iamVjdEF0SW5kZXg6aW5kZXhdOwogICAg
ICAgICBpZiAob2JqKQogICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRPYmpjVmFsdWVUb1ZhbHVl
IChsZXhpY2FsR2xvYmFsT2JqZWN0LCAmb2JqLCBPYmpjT2JqZWN0VHlwZSwgbV9yb290T2JqZWN0
LmdldCgpKTsKICAgICB9IEBjYXRjaChOU0V4Y2VwdGlvbiogbG9jYWxFeGNlcHRpb24pIHsKQEAg
LTIxMiw3ICsyMTIsNyBAQCBKU1ZhbHVlIE9iamNBcnJheTo6dmFsdWVBdChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgdW5zaWduZWQgaW50IGluZAogCiB1bnNpZ25lZCBpbnQg
T2JqY0FycmF5OjpnZXRMZW5ndGgoKSBjb25zdAogewotICAgIHJldHVybiBbX2FycmF5LmdldCgp
IGNvdW50XTsKKyAgICByZXR1cm4gW19hcnJheSBjb3VudF07CiB9CiAKIGNvbnN0IENsYXNzSW5m
byBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OnNfaW5mbyA9IHsgIk9iamNGYWxsYmFja09iamVjdCIs
ICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoT2Jq
Y0ZhbGxiYWNrT2JqZWN0SW1wKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9j
b2NvYS9SZXNvdXJjZVVzYWdlT3ZlcmxheUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9j
b2NvYS9SZXNvdXJjZVVzYWdlT3ZlcmxheUNvY29hLm1tCmluZGV4IDJiYjgxMjU4N2E5MjE2M2Ri
MDIxNmMyYTU3MzU0NWU3YWNhZGI0NGEuLmQzMjhmYWI5NzUxN2NlZWUwZWY0MDc1YTY4ODAxNTcw
YmM4ZWYxODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VV
c2FnZU92ZXJsYXlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Jlc291
cmNlVXNhZ2VPdmVybGF5Q29jb2EubW0KQEAgLTIxNywxNSArMjE3LDE1IEBAIHZvaWQgUmVzb3Vy
Y2VVc2FnZU92ZXJsYXk6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiAgICAgbV9sYXllciA9IGFkb3B0
TlMoW1tXZWJSZXNvdXJjZVVzYWdlT3ZlcmxheUxheWVyIGFsbG9jXSBpbml0V2l0aFJlc291cmNl
VXNhZ2VPdmVybGF5OnRoaXNdKTsKIAogICAgIG1fY29udGFpbmVyTGF5ZXIgPSBhZG9wdE5TKFtb
Q0FMYXllciBhbGxvY10gaW5pdF0pOwotICAgIFttX2NvbnRhaW5lckxheWVyLmdldCgpIGFkZFN1
YmxheWVyOm1fbGF5ZXIuZ2V0KCldOworICAgIFttX2NvbnRhaW5lckxheWVyIGFkZFN1YmxheWVy
Om1fbGF5ZXIuZ2V0KCldOwogCi0gICAgW21fY29udGFpbmVyTGF5ZXIuZ2V0KCkgc2V0QW5jaG9y
UG9pbnQ6Q0dQb2ludFplcm9dOwotICAgIFttX2NvbnRhaW5lckxheWVyLmdldCgpIHNldEJvdW5k
czpDR1JlY3RNYWtlKDAsIDAsIG5vcm1hbFdpZHRoLCBub3JtYWxIZWlnaHQpXTsKKyAgICBbbV9j
b250YWluZXJMYXllciBzZXRBbmNob3JQb2ludDpDR1BvaW50WmVyb107CisgICAgW21fY29udGFp
bmVyTGF5ZXIgc2V0Qm91bmRzOkNHUmVjdE1ha2UoMCwgMCwgbm9ybWFsV2lkdGgsIG5vcm1hbEhl
aWdodCldOwogCi0gICAgW21fbGF5ZXIuZ2V0KCkgc2V0QW5jaG9yUG9pbnQ6Q0dQb2ludFplcm9d
OwotICAgIFttX2xheWVyLmdldCgpIHNldENvbnRlbnRzU2NhbGU6Mi4wXTsKLSAgICBbbV9sYXll
ci5nZXQoKSBzZXRCYWNrZ3JvdW5kQ29sb3I6Y3JlYXRlQ29sb3IoMCwgMCwgMCwgMC44KS5nZXQo
KV07Ci0gICAgW21fbGF5ZXIuZ2V0KCkgc2V0Qm91bmRzOkNHUmVjdE1ha2UoMCwgMCwgbm9ybWFs
V2lkdGgsIG5vcm1hbEhlaWdodCldOworICAgIFttX2xheWVyIHNldEFuY2hvclBvaW50OkNHUG9p
bnRaZXJvXTsKKyAgICBbbV9sYXllciBzZXRDb250ZW50c1NjYWxlOjIuMF07CisgICAgW21fbGF5
ZXIgc2V0QmFja2dyb3VuZENvbG9yOmNyZWF0ZUNvbG9yKDAsIDAsIDAsIDAuOCkuZ2V0KCldOwor
ICAgIFttX2xheWVyIHNldEJvdW5kczpDR1JlY3RNYWtlKDAsIDAsIG5vcm1hbFdpZHRoLCBub3Jt
YWxIZWlnaHQpXTsKIAogICAgIG92ZXJsYXkoKS5sYXllcigpLnNldENvbnRlbnRzVG9QbGF0Zm9y
bUxheWVyKG1fbGF5ZXIuZ2V0KCksIEdyYXBoaWNzTGF5ZXI6OkNvbnRlbnRzTGF5ZXJQdXJwb3Nl
OjpOb25lKTsKIApAQCAtNDQ1LDcgKzQ0NSw3IEBAIHZvaWQgUmVzb3VyY2VVc2FnZU92ZXJsYXk6
OnBsYXRmb3JtRHJhdyhDR0NvbnRleHRSZWYgY29udGV4dCkKIHsKICAgICBhdXRvJiBkYXRhID0g
aGlzdG9yaWNVc2FnZURhdGEoKTsKIAotICAgIGlmICghW21fbGF5ZXIuZ2V0KCkgY29udGVudHNB
cmVGbGlwcGVkXSkgeworICAgIGlmICghW21fbGF5ZXIgY29udGVudHNBcmVGbGlwcGVkXSkgewog
ICAgICAgICBDR0NvbnRleHRTY2FsZUNUTShjb250ZXh0LCAxLCAtMSk7CiAgICAgICAgIENHQ29u
dGV4dFRyYW5zbGF0ZUNUTShjb250ZXh0LCAwLCAtbm9ybWFsSGVpZ2h0KTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29u
dGVudEZpbHRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29u
dHJvbHNDb250ZW50RmlsdGVyLm1tCmluZGV4IDlkMGNlOTBjMGIwMTkyODA2NThlODcxMzhjMWM1
MWQxNzY0Njc4OGUuLmI0NjFmOTc1MzZkZTNhMTU4MTNhNTgyN2I4NjcxMzhiOTZkNGYzOGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHND
b250ZW50RmlsdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVu
dGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tCkBAIC05NiwxNSArOTYsMTUgQEAgdm9pZCBQYXJl
bnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6cmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXMKIAogdm9pZCBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6YWRk
RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewotICAgIEFTU0VSVCghW21f
cmVwbGFjZW1lbnREYXRhLmdldCgpIGxlbmd0aF0pOworICAgIEFTU0VSVCghW21fcmVwbGFjZW1l
bnREYXRhIGxlbmd0aF0pOwogICAgIG1fcmVwbGFjZW1lbnREYXRhID0gW21fd2ViRmlsdGVyRXZh
bHVhdG9yIGFkZERhdGE6W05TRGF0YSBkYXRhV2l0aEJ5dGVzTm9Db3B5Oih2b2lkKilkYXRhIGxl
bmd0aDpsZW5ndGggZnJlZVdoZW5Eb25lOk5PXV07CiAgICAgdXBkYXRlRmlsdGVyU3RhdGUoKTsK
LSAgICBBU1NFUlQobmVlZHNNb3JlRGF0YSgpIHx8IFttX3JlcGxhY2VtZW50RGF0YS5nZXQoKSBs
ZW5ndGhdKTsKKyAgICBBU1NFUlQobmVlZHNNb3JlRGF0YSgpIHx8IFttX3JlcGxhY2VtZW50RGF0
YSBsZW5ndGhdKTsKIH0KIAogdm9pZCBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6Zmlu
aXNoZWRBZGRpbmdEYXRhKCkKIHsKLSAgICBBU1NFUlQoIVttX3JlcGxhY2VtZW50RGF0YS5nZXQo
KSBsZW5ndGhdKTsKKyAgICBBU1NFUlQoIVttX3JlcGxhY2VtZW50RGF0YSBsZW5ndGhdKTsKICAg
ICBtX3JlcGxhY2VtZW50RGF0YSA9IFttX3dlYkZpbHRlckV2YWx1YXRvciBkYXRhQ29tcGxldGVd
OwogICAgIHVwZGF0ZUZpbHRlclN0YXRlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZC5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkLm1t
CmluZGV4IDdlNDdlZmQ1ZThjZDgxZTY0NGNhOGExY2YwYzk4MjQ0YzdiNjQzNTYuLjM1ZjRiMTkw
YjFmY2NkYWM4ZGVkOTFjMGExODZkMTk0MTI4NTVjY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1l
cGFkLm1tCkBAIC0xNDAsNyArMTQwLDcgQEAgdm9pZCBHYW1lQ29udHJvbGxlckdhbWVwYWQ6OnNl
dHVwQXNFeHRlbmRlZEdhbWVwYWQoKQogICAgIC8vIFRodW1ic3RpY2sgYnV0dG9ucyBhcmUgb25s
eSBpbiBtYWNPUyAxMC4xNC4xIC8gaU9TIDEyLjEKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBw
dXNoCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVd1bmd1YXJkZWQtYXZhaWxh
YmlsaXR5IgotICAgIGlmIChbbV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3RvcihsZWZ0VGh1bWJzdGlja0J1dHRvbildKSB7CisgICAgaWYgKFttX2V4dGVu
ZGVkR2FtZXBhZCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGxlZnRUaHVtYnN0aWNrQnV0
dG9uKV0pIHsKICAgICAgICAgYmluZEJ1dHRvbihtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5sZWZ0
VGh1bWJzdGlja0J1dHRvbiwgR2FtZXBhZEJ1dHRvblJvbGU6OkxlZnRTdGljayk7CiAgICAgICAg
IGJpbmRCdXR0b24obV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkucmlnaHRUaHVtYnN0aWNrQnV0dG9u
LCBHYW1lcGFkQnV0dG9uUm9sZTo6UmlnaHRTdGljayk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQVZPdXRwdXRE
ZXZpY2VNZW51Q29udHJvbGxlclRhcmdldFBpY2tlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0FWT3V0cHV0RGV2aWNlTWVudUNvbnRyb2xs
ZXJUYXJnZXRQaWNrZXIubW0KaW5kZXggYjJlZGEzYWY3NTc5ZmY1NzZmNzY0ZTVhNzk0NTE3YmZm
YTI3ZWI1OS4uYTgwYjY5MDM1ODRlMWE3NWU2ZTQzN2EwMmI4OWNkZTJmOTgzNDU0ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
QVZPdXRwdXREZXZpY2VNZW51Q29udHJvbGxlclRhcmdldFBpY2tlci5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVk91dHB1dERldmlj
ZU1lbnVDb250cm9sbGVyVGFyZ2V0UGlja2VyLm1tCkBAIC03Nyw4ICs3Nyw4IEBAIEFWT3V0cHV0
RGV2aWNlTWVudUNvbnRyb2xsZXIgKkFWT3V0cHV0RGV2aWNlTWVudUNvbnRyb2xsZXJUYXJnZXRQ
aWNrZXI6OmRldmljZVBpCiAgICAgICAgIFJldGFpblB0cjxBVk91dHB1dENvbnRleHQ+IGNvbnRl
eHQgPSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZPdXRwdXRDb250ZXh0SW5zdGFuY2UoKSBpbml0XSk7
CiAgICAgICAgIG1fb3V0cHV0RGV2aWNlTWVudUNvbnRyb2xsZXIgPSBhZG9wdE5TKFthbGxvY0FW
T3V0cHV0RGV2aWNlTWVudUNvbnRyb2xsZXJJbnN0YW5jZSgpIGluaXRXaXRoT3V0cHV0Q29udGV4
dDpjb250ZXh0LmdldCgpXSk7CiAKLSAgICAgICAgW21fb3V0cHV0RGV2aWNlTWVudUNvbnRyb2xs
ZXIuZ2V0KCkgYWRkT2JzZXJ2ZXI6bV9vdXRwdXREZXZpY2VNZW51Q29udHJvbGxlckRlbGVnYXRl
LmdldCgpIGZvcktleVBhdGg6ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVLZXlOYW1lIG9w
dGlvbnM6TlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbk5ldyBjb250ZXh0Om51bGxwdHJdOwotICAg
ICAgICBbbV9vdXRwdXREZXZpY2VNZW51Q29udHJvbGxlci5nZXQoKSBhZGRPYnNlcnZlcjptX291
dHB1dERldmljZU1lbnVDb250cm9sbGVyRGVsZWdhdGUuZ2V0KCkgZm9yS2V5UGF0aDpleHRlcm5h
bE91dHB1dERldmljZVBpY2tlZEtleU5hbWUgb3B0aW9uczpOU0tleVZhbHVlT2JzZXJ2aW5nT3B0
aW9uTmV3IGNvbnRleHQ6bnVsbHB0cl07CisgICAgICAgIFttX291dHB1dERldmljZU1lbnVDb250
cm9sbGVyIGFkZE9ic2VydmVyOm1fb3V0cHV0RGV2aWNlTWVudUNvbnRyb2xsZXJEZWxlZ2F0ZS5n
ZXQoKSBmb3JLZXlQYXRoOmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlS2V5TmFtZSBvcHRp
b25zOk5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgY29udGV4dDpudWxscHRyXTsKKyAgICAg
ICAgW21fb3V0cHV0RGV2aWNlTWVudUNvbnRyb2xsZXIgYWRkT2JzZXJ2ZXI6bV9vdXRwdXREZXZp
Y2VNZW51Q29udHJvbGxlckRlbGVnYXRlLmdldCgpIGZvcktleVBhdGg6ZXh0ZXJuYWxPdXRwdXRE
ZXZpY2VQaWNrZWRLZXlOYW1lIG9wdGlvbnM6TlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbk5ldyBj
b250ZXh0Om51bGxwdHJdOwogCiAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0JFR0lOCiAgICAgICAgIGlmIChtX291dHB1dERldmljZU1lbnVDb250cm9sbGVyLmdldCgpLmV4
dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlKQpAQCAtMTUyLDcgKzE1Miw3IEBAIGJvb2wgQVZP
dXRwdXREZXZpY2VNZW51Q29udHJvbGxlclRhcmdldFBpY2tlcjo6ZXh0ZXJuYWxPdXRwdXREZXZp
Y2VBdmFpbGFibGUoKQogCiBBVk91dHB1dENvbnRleHQgKiBBVk91dHB1dERldmljZU1lbnVDb250
cm9sbGVyVGFyZ2V0UGlja2VyOjpvdXRwdXRDb250ZXh0KCkKIHsKLSAgICByZXR1cm4gbV9vdXRw
dXREZXZpY2VNZW51Q29udHJvbGxlciA/IFttX291dHB1dERldmljZU1lbnVDb250cm9sbGVyLmdl
dCgpIG91dHB1dENvbnRleHRdIDogbnVsbHB0cjsKKyAgICByZXR1cm4gbV9vdXRwdXREZXZpY2VN
ZW51Q29udHJvbGxlciA/IFttX291dHB1dERldmljZU1lbnVDb250cm9sbGVyIG91dHB1dENvbnRl
eHRdIDogbnVsbHB0cjsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vz
c2lvbkFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCBj
MWVmZDUxYzk1YzI4NWRkOWUzYmY5NzFiYTk0MTYyNzZhNDA2MjllLi4zMjU4MzViMjg3YTI5ZmFl
NTM1OTA1YWNlNGZkZDIxNDg3YmMxMzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2Jq
Qy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtOTMsNyArOTMsNyBAQCBSZWZQ
dHI8VWludDhBcnJheT4gQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakM6OmdlbmVyYXRlS2V5UmVx
dWVzdChjb25zdCBTdHJpbmcmCiAgICAgc3lzdGVtQ29kZSA9IDA7CiAgICAgZGVzdGluYXRpb25V
UkwgPSBTdHJpbmcoKTsKIAotICAgIGF1dG8ga2V5UmVxdWVzdEJ1ZmZlciA9IEFycmF5QnVmZmVy
OjpjcmVhdGUoW2tleVJlcXVlc3QuZ2V0KCkgYnl0ZXNdLCBba2V5UmVxdWVzdC5nZXQoKSBsZW5n
dGhdKTsKKyAgICBhdXRvIGtleVJlcXVlc3RCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKFtr
ZXlSZXF1ZXN0IGJ5dGVzXSwgW2tleVJlcXVlc3QgbGVuZ3RoXSk7CiAgICAgdW5zaWduZWQgYnl0
ZUxlbmd0aCA9IGtleVJlcXVlc3RCdWZmZXItPmJ5dGVMZW5ndGgoKTsKICAgICByZXR1cm4gVWlu
dDhBcnJheTo6dHJ5Q3JlYXRlKFdURk1vdmUoa2V5UmVxdWVzdEJ1ZmZlciksIDAsIGJ5dGVMZW5n
dGgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJh
Y2tQcml2YXRlQVZGT2JqQy5tbQppbmRleCBhMzQzMWMyODA3NzVhZWZjNzI2MDNiOGNjZTQ2ZTAx
NTllYjM0NzcyLi5jNjk0Y2Q2NTAyYmQ3YmFjOGIwNGUyOGRkMjEyZTAyYjY5MjFmZjlkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRl
QVZGT2JqQy5tbQpAQCAtMTM2LDcgKzEzNiw3IEBAIEF0b21TdHJpbmcgSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUFWRk9iakM6OmxhYmVsKCkgY29uc3QKIAogICAgIE5TU3RyaW5nICp0aXRsZSA9IDA7
CiAKLSAgICBOU0FycmF5ICp0aXRsZXMgPSBbUEFMOjpnZXRBVk1ldGFkYXRhSXRlbUNsYXNzKCkg
bWV0YWRhdGFJdGVtc0Zyb21BcnJheTpbbV9tZWRpYVNlbGVjdGlvbk9wdGlvbi5nZXQoKSBjb21t
b25NZXRhZGF0YV0gd2l0aEtleTpBVk1ldGFkYXRhQ29tbW9uS2V5VGl0bGUga2V5U3BhY2U6QVZN
ZXRhZGF0YUtleVNwYWNlQ29tbW9uXTsKKyAgICBOU0FycmF5ICp0aXRsZXMgPSBbUEFMOjpnZXRB
Vk1ldGFkYXRhSXRlbUNsYXNzKCkgbWV0YWRhdGFJdGVtc0Zyb21BcnJheTpbbV9tZWRpYVNlbGVj
dGlvbk9wdGlvbiBjb21tb25NZXRhZGF0YV0gd2l0aEtleTpBVk1ldGFkYXRhQ29tbW9uS2V5VGl0
bGUga2V5U3BhY2U6QVZNZXRhZGF0YUtleVNwYWNlQ29tbW9uXTsKICAgICBpZiAoW3RpdGxlcyBj
b3VudF0pIHsKICAgICAgICAgLy8gSWYgcG9zc2libGUsIHJldHVybiBhIHRpdGxlIGluIG9uZSBv
ZiB0aGUgdXNlcidzIHByZWZlcnJlZCBsYW5ndWFnZXMuCiAgICAgICAgIE5TQXJyYXkgKnRpdGxl
c0ZvclByZWZlcnJlZExhbmd1YWdlcyA9IFtQQUw6OmdldEFWTWV0YWRhdGFJdGVtQ2xhc3MoKSBt
ZXRhZGF0YUl0ZW1zRnJvbUFycmF5OnRpdGxlcyBmaWx0ZXJlZEFuZFNvcnRlZEFjY29yZGluZ1Rv
UHJlZmVycmVkTGFuZ3VhZ2VzOltOU0xvY2FsZSBwcmVmZXJyZWRMYW5ndWFnZXNdXTsKQEAgLTE1
NSw3ICsxNTUsNyBAQCBBdG9tU3RyaW5nIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDOjps
YW5ndWFnZSgpIGNvbnN0CiAgICAgaWYgKCFtX21lZGlhU2VsZWN0aW9uT3B0aW9uKQogICAgICAg
ICByZXR1cm4gZW1wdHlBdG9tKCk7CiAKLSAgICByZXR1cm4gW1ttX21lZGlhU2VsZWN0aW9uT3B0
aW9uLmdldCgpIGxvY2FsZV0gbG9jYWxlSWRlbnRpZmllcl07CisgICAgcmV0dXJuIFtbbV9tZWRp
YVNlbGVjdGlvbk9wdGlvbiBsb2NhbGVdIGxvY2FsZUlkZW50aWZpZXJdOwogfQogCiBib29sIElu
YmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDOjppc0RlZmF1bHQoKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMubW0KaW5kZXggZDlhOGZmYWUzNGM5NDdhNzExOTg0MTM0ZThjZDkzMjdkYmRlNDQ1
My4uZmFlMzlkYTNhYmMwNGE0NjFjZWE2NGY2YjUyY2E0MjdlZjI0ZDQzZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDLm1tCkBAIC00NjEsNyArNDYxLDcgQEAgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6fk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMoKQogewogICAg
IHdlYWtQdHJGYWN0b3J5KCkucmV2b2tlQWxsKCk7CiAKLSAgICBbW21fYXZBc3NldC5nZXQoKSBy
ZXNvdXJjZUxvYWRlcl0gc2V0RGVsZWdhdGU6bmlsIHF1ZXVlOjBdOworICAgIFtbbV9hdkFzc2V0
IHJlc291cmNlTG9hZGVyXSBzZXREZWxlZ2F0ZTpuaWwgcXVldWU6MF07CiAKICAgICBmb3IgKGF1
dG8mIHBhaXIgOiBtX3Jlc291cmNlTG9hZGVyTWFwKQogICAgICAgICBwYWlyLnZhbHVlLT5pbnZh
bGlkYXRlKCk7CkBAIC00ODAsMTIgKzQ4MCwxMiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OmNhbmNlbExvYWQoKQogICAgIHRlYXJEb3duVmlkZW9SZW5kZXJpbmco
KTsKIAogICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2Jz
ZXJ2ZXI6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCldOwotICAgIFttX29iamNPYnNlcnZlci5nZXQoKSBk
aXNjb25uZWN0XTsKKyAgICBbbV9vYmpjT2JzZXJ2ZXIgZGlzY29ubmVjdF07CiAKICAgICAvLyBU
ZWxsIG91ciBvYnNlcnZlciB0byBkbyBub3RoaW5nIHdoZW4gb3VyIGNhbmNlbGxhdGlvbiBvZiBw
ZW5kaW5nIGxvYWRpbmcgY2FsbHMgaXRzIGNvbXBsZXRpb24gaGFuZGxlci4KICAgICBzZXRJZ25v
cmVMb2FkU3RhdGVDaGFuZ2VzKHRydWUpOwogICAgIGlmIChtX2F2QXNzZXQpIHsKLSAgICAgICAg
W21fYXZBc3NldC5nZXQoKSBjYW5jZWxMb2FkaW5nXTsKKyAgICAgICAgW21fYXZBc3NldCBjYW5j
ZWxMb2FkaW5nXTsKICAgICAgICAgbV9hdkFzc2V0ID0gbmlsOwogICAgIH0KIApAQCAtNDkzLDM2
ICs0OTMsMzYgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjYW5j
ZWxMb2FkKCkKIAogICAgIGlmIChtX2xlZ2libGVPdXRwdXQpIHsKICAgICAgICAgaWYgKG1fYXZQ
bGF5ZXJJdGVtKQotICAgICAgICAgICAgW21fYXZQbGF5ZXJJdGVtLmdldCgpIHJlbW92ZU91dHB1
dDptX2xlZ2libGVPdXRwdXQuZ2V0KCldOworICAgICAgICAgICAgW21fYXZQbGF5ZXJJdGVtIHJl
bW92ZU91dHB1dDptX2xlZ2libGVPdXRwdXQuZ2V0KCldOwogICAgICAgICBtX2xlZ2libGVPdXRw
dXQgPSBuaWw7CiAgICAgfQogCiAgICAgaWYgKG1fbWV0YWRhdGFDb2xsZWN0b3IpIHsKICAgICAg
ICAgLy8gRklYTUUgLSByZW1vdmVNZWRpYURhdGFDb2xsZWN0b3Igc29tZXRpbWVzIGNyYXNoZXMs
IGRvIG5vdCB1bmNvbW1lbnQgdGhpcyB1bnRpbCByZGFyOi8vNTY2MTc1MDQgaGFzIGJlZW4gZml4
ZWQuCiAgICAgICAgIC8vIGlmIChtX2F2UGxheWVySXRlbSkKLSAgICAgICAgLy8gICAgIFttX2F2
UGxheWVySXRlbS5nZXQoKSByZW1vdmVNZWRpYURhdGFDb2xsZWN0b3I6bV9tZXRhZGF0YUNvbGxl
Y3Rvci5nZXQoKV07CisgICAgICAgIC8vICAgICBbbV9hdlBsYXllckl0ZW0gcmVtb3ZlTWVkaWFE
YXRhQ29sbGVjdG9yOm1fbWV0YWRhdGFDb2xsZWN0b3IuZ2V0KCldOwogICAgICAgICBtX21ldGFk
YXRhQ29sbGVjdG9yID0gbmlsOwogICAgIH0KIAogICAgIGlmIChtX21ldGFkYXRhT3V0cHV0KSB7
CiAgICAgICAgIGlmIChtX2F2UGxheWVySXRlbSkKLSAgICAgICAgICAgIFttX2F2UGxheWVySXRl
bS5nZXQoKSByZW1vdmVPdXRwdXQ6bV9tZXRhZGF0YU91dHB1dC5nZXQoKV07CisgICAgICAgICAg
ICBbbV9hdlBsYXllckl0ZW0gcmVtb3ZlT3V0cHV0Om1fbWV0YWRhdGFPdXRwdXQuZ2V0KCldOwog
ICAgICAgICBtX21ldGFkYXRhT3V0cHV0ID0gbmlsOwogICAgIH0KIAogICAgIGlmIChtX2F2UGxh
eWVySXRlbSkgewogICAgICAgICBmb3IgKE5TU3RyaW5nICprZXlOYW1lIGluIGl0ZW1LVk9Qcm9w
ZXJ0aWVzKCkpCi0gICAgICAgICAgICBbbV9hdlBsYXllckl0ZW0uZ2V0KCkgcmVtb3ZlT2JzZXJ2
ZXI6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDprZXlOYW1lXTsKKyAgICAgICAgICAg
IFttX2F2UGxheWVySXRlbSByZW1vdmVPYnNlcnZlcjptX29iamNPYnNlcnZlci5nZXQoKSBmb3JL
ZXlQYXRoOmtleU5hbWVdOwogICAgICAgICAKICAgICAgICAgbV9hdlBsYXllckl0ZW0gPSBuaWw7
CiAgICAgfQogICAgIGlmIChtX2F2UGxheWVyKSB7CiAgICAgICAgIGlmIChtX3RpbWVPYnNlcnZl
cikKLSAgICAgICAgICAgIFttX2F2UGxheWVyLmdldCgpIHJlbW92ZVRpbWVPYnNlcnZlcjptX3Rp
bWVPYnNlcnZlci5nZXQoKV07CisgICAgICAgICAgICBbbV9hdlBsYXllciByZW1vdmVUaW1lT2Jz
ZXJ2ZXI6bV90aW1lT2JzZXJ2ZXIuZ2V0KCldOwogICAgICAgICBtX3RpbWVPYnNlcnZlciA9IG5p
bDsKIAogICAgICAgICBmb3IgKE5TU3RyaW5nICprZXlOYW1lIGluIHBsYXllcktWT1Byb3BlcnRp
ZXMoKSkKLSAgICAgICAgICAgIFttX2F2UGxheWVyLmdldCgpIHJlbW92ZU9ic2VydmVyOm1fb2Jq
Y09ic2VydmVyLmdldCgpIGZvcktleVBhdGg6a2V5TmFtZV07CisgICAgICAgICAgICBbbV9hdlBs
YXllciByZW1vdmVPYnNlcnZlcjptX29iamNPYnNlcnZlci5nZXQoKSBmb3JLZXlQYXRoOmtleU5h
bWVdOwogCiAgICAgICAgIHNldFNob3VsZE9ic2VydmVUaW1lQ29udHJvbFN0YXR1cyhmYWxzZSk7
CiAKQEAgLTU4OCwxMCArNTg4LDEwIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6Y3JlYXRlSW1hZ2VHZW5lcmF0b3IoKQogCiAgICAgbV9pbWFnZUdlbmVyYXRvciA9
IFtQQUw6OmdldEFWQXNzZXRJbWFnZUdlbmVyYXRvckNsYXNzKCkgYXNzZXRJbWFnZUdlbmVyYXRv
cldpdGhBc3NldDptX2F2QXNzZXQuZ2V0KCldOwogCi0gICAgW21faW1hZ2VHZW5lcmF0b3IuZ2V0
KCkgc2V0QXBlcnR1cmVNb2RlOkFWQXNzZXRJbWFnZUdlbmVyYXRvckFwZXJ0dXJlTW9kZUNsZWFu
QXBlcnR1cmVdOwotICAgIFttX2ltYWdlR2VuZXJhdG9yLmdldCgpIHNldEFwcGxpZXNQcmVmZXJy
ZWRUcmFja1RyYW5zZm9ybTpZRVNdOwotICAgIFttX2ltYWdlR2VuZXJhdG9yLmdldCgpIHNldFJl
cXVlc3RlZFRpbWVUb2xlcmFuY2VCZWZvcmU6UEFMOjprQ01UaW1lWmVyb107Ci0gICAgW21faW1h
Z2VHZW5lcmF0b3IuZ2V0KCkgc2V0UmVxdWVzdGVkVGltZVRvbGVyYW5jZUFmdGVyOlBBTDo6a0NN
VGltZVplcm9dOworICAgIFttX2ltYWdlR2VuZXJhdG9yIHNldEFwZXJ0dXJlTW9kZTpBVkFzc2V0
SW1hZ2VHZW5lcmF0b3JBcGVydHVyZU1vZGVDbGVhbkFwZXJ0dXJlXTsKKyAgICBbbV9pbWFnZUdl
bmVyYXRvciBzZXRBcHBsaWVzUHJlZmVycmVkVHJhY2tUcmFuc2Zvcm06WUVTXTsKKyAgICBbbV9p
bWFnZUdlbmVyYXRvciBzZXRSZXF1ZXN0ZWRUaW1lVG9sZXJhbmNlQmVmb3JlOlBBTDo6a0NNVGlt
ZVplcm9dOworICAgIFttX2ltYWdlR2VuZXJhdG9yIHNldFJlcXVlc3RlZFRpbWVUb2xlcmFuY2VB
ZnRlcjpQQUw6OmtDTVRpbWVaZXJvXTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpkZXN0cm95Q29udGV4dFZpZGVvUmVuZGVyZXIoKQpAQCAtNzQxLDcgKzc0
MSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c3luY2hyb25p
emVUZXh0VHJhY2tTdGF0ZSgpCiAgICAgICAgIGZvciAoYXV0byYgdHJhY2sgOiBvdXRPZkJhbmRU
cmFja1NvdXJjZXMpIHsKICAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdW5pcXVl
SUQgPSBTdHJpbmc6Om51bWJlcih0cmFjay0+dW5pcXVlSWQoKSkuY3JlYXRlQ0ZTdHJpbmcoKTsK
ICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKCFbW2N1cnJlbnRPcHRpb24uZ2V0KCkgb3V0
T2ZCYW5kSWRlbnRpZmllcl0gaXNFcXVhbDooX19icmlkZ2UgTlNTdHJpbmcgKil1bmlxdWVJRC5n
ZXQoKV0pCisgICAgICAgICAgICBpZiAoIVtbY3VycmVudE9wdGlvbiBvdXRPZkJhbmRJZGVudGlm
aWVyXSBpc0VxdWFsOihfX2JyaWRnZSBOU1N0cmluZyAqKXVuaXF1ZUlELmdldCgpXSkKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZTo6TW9kZSBtb2RlID0gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6TW9kZTo6
SGlkZGVuOwpAQCAtODc5LDIzICs4NzksMjMgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpjcmVhdGVBVkFzc2V0Rm9yVVJMKGNvbnN0IFVSTCYgdXJsLCBSZXQKIAog
ICAgIHNldERlbGF5Q2FsbGJhY2tzKHRydWUpOwogCi0gICAgW29wdGlvbnMuZ2V0KCkgc2V0T2Jq
ZWN0OkAoQVZBc3NldFJlZmVyZW5jZVJlc3RyaWN0aW9uRm9yYmlkUmVtb3RlUmVmZXJlbmNlVG9M
b2NhbCB8IEFWQXNzZXRSZWZlcmVuY2VSZXN0cmljdGlvbkZvcmJpZExvY2FsUmVmZXJlbmNlVG9S
ZW1vdGUpIGZvcktleTpBVlVSTEFzc2V0UmVmZXJlbmNlUmVzdHJpY3Rpb25zS2V5XTsKKyAgICBb
b3B0aW9ucyBzZXRPYmplY3Q6QChBVkFzc2V0UmVmZXJlbmNlUmVzdHJpY3Rpb25Gb3JiaWRSZW1v
dGVSZWZlcmVuY2VUb0xvY2FsIHwgQVZBc3NldFJlZmVyZW5jZVJlc3RyaWN0aW9uRm9yYmlkTG9j
YWxSZWZlcmVuY2VUb1JlbW90ZSkgZm9yS2V5OkFWVVJMQXNzZXRSZWZlcmVuY2VSZXN0cmljdGlv
bnNLZXldOwogCiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IGhlYWRlckZpZWxk
cyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CiAKICAgICBT
dHJpbmcgcmVmZXJyZXIgPSBwbGF5ZXIoKS0+cmVmZXJyZXIoKTsKICAgICBpZiAoIXJlZmVycmVy
LmlzRW1wdHkoKSkKLSAgICAgICAgW2hlYWRlckZpZWxkcy5nZXQoKSBzZXRPYmplY3Q6cmVmZXJy
ZXIgZm9yS2V5OkAiUmVmZXJlciJdOworICAgICAgICBbaGVhZGVyRmllbGRzIHNldE9iamVjdDpy
ZWZlcnJlciBmb3JLZXk6QCJSZWZlcmVyIl07CiAKICAgICBTdHJpbmcgdXNlckFnZW50ID0gcGxh
eWVyKCktPnVzZXJBZ2VudCgpOwogICAgIGlmICghdXNlckFnZW50LmlzRW1wdHkoKSkKLSAgICAg
ICAgW2hlYWRlckZpZWxkcy5nZXQoKSBzZXRPYmplY3Q6dXNlckFnZW50IGZvcktleTpAIlVzZXIt
QWdlbnQiXTsKKyAgICAgICAgW2hlYWRlckZpZWxkcyBzZXRPYmplY3Q6dXNlckFnZW50IGZvcktl
eTpAIlVzZXItQWdlbnQiXTsKIAotICAgIGlmIChbaGVhZGVyRmllbGRzLmdldCgpIGNvdW50XSkK
LSAgICAgICAgW29wdGlvbnMuZ2V0KCkgc2V0T2JqZWN0OmhlYWRlckZpZWxkcy5nZXQoKSBmb3JL
ZXk6QCJBVlVSTEFzc2V0SFRUUEhlYWRlckZpZWxkc0tleSJdOworICAgIGlmIChbaGVhZGVyRmll
bGRzIGNvdW50XSkKKyAgICAgICAgW29wdGlvbnMgc2V0T2JqZWN0OmhlYWRlckZpZWxkcy5nZXQo
KSBmb3JLZXk6QCJBVlVSTEFzc2V0SFRUUEhlYWRlckZpZWxkc0tleSJdOwogCiAgICAgaWYgKHBs
YXllcigpLT5kb2VzSGF2ZUF0dHJpYnV0ZSgieC1pdHVuZXMtaW5oZXJpdC11cmktcXVlcnktY29t
cG9uZW50IikpCi0gICAgICAgIFtvcHRpb25zLmdldCgpIHNldE9iamVjdDpAWUVTIGZvcktleTog
QVZVUkxBc3NldEluaGVyaXRVUklRdWVyeUNvbXBvbmVudEZyb21SZWZlcmVuY2luZ1VSSUtleV07
CisgICAgICAgIFtvcHRpb25zIHNldE9iamVjdDpAWUVTIGZvcktleTogQVZVUkxBc3NldEluaGVy
aXRVUklRdWVyeUNvbXBvbmVudEZyb21SZWZlcmVuY2luZ1VSSUtleV07CiAKICAgICBpZiAoUEFM
OjpjYW5Mb2FkX0FWRm91bmRhdGlvbl9BVlVSTEFzc2V0VXNlQ2xpZW50VVJMTG9hZGluZ0V4Y2x1
c2l2ZWx5KCkpCiAgICAgICAgIFtvcHRpb25zIHNldE9iamVjdDpAWUVTIGZvcktleTpBVlVSTEFz
c2V0VXNlQ2xpZW50VVJMTG9hZGluZ0V4Y2x1c2l2ZWx5XTsKQEAgLTkzNiw3ICs5MzYsNyBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWQXNzZXRGb3JV
UkwoY29uc3QgVVJMJiB1cmwsIFJldAogICAgICAgICAgICAgfTsKICAgICAgICAgfSk7CiAKLSAg
ICAgICAgW29wdGlvbnMuZ2V0KCkgc2V0T2JqZWN0Om91dE9mQmFuZFRyYWNrcy5nZXQoKSBmb3JL
ZXk6QVZVUkxBc3NldE91dE9mQmFuZEFsdGVybmF0ZVRyYWNrc0tleV07CisgICAgICAgIFtvcHRp
b25zIHNldE9iamVjdDpvdXRPZkJhbmRUcmFja3MuZ2V0KCkgZm9yS2V5OkFWVVJMQXNzZXRPdXRP
ZkJhbmRBbHRlcm5hdGVUcmFja3NLZXldOwogICAgIH0KICNlbmRpZgogCkBAIC0xMDQ3LDcgKzEw
NDcsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFW
UGxheWVyKCkKIAogICAgIG1fYXZQbGF5ZXIgPSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZQbGF5ZXJJ
bnN0YW5jZSgpIGluaXRdKTsKICAgICBmb3IgKE5TU3RyaW5nICprZXlOYW1lIGluIHBsYXllcktW
T1Byb3BlcnRpZXMoKSkKLSAgICAgICAgW21fYXZQbGF5ZXIuZ2V0KCkgYWRkT2JzZXJ2ZXI6bV9v
YmpjT2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDprZXlOYW1lIG9wdGlvbnM6TlNLZXlWYWx1ZU9i
c2VydmluZ09wdGlvbk5ldyBjb250ZXh0Oih2b2lkICopTWVkaWFQbGF5ZXJBVkZvdW5kYXRpb25P
YnNlcnZhdGlvbkNvbnRleHRQbGF5ZXJdOworICAgICAgICBbbV9hdlBsYXllciBhZGRPYnNlcnZl
cjptX29iamNPYnNlcnZlci5nZXQoKSBmb3JLZXlQYXRoOmtleU5hbWUgb3B0aW9uczpOU0tleVZh
bHVlT2JzZXJ2aW5nT3B0aW9uTmV3IGNvbnRleHQ6KHZvaWQgKilNZWRpYVBsYXllckFWRm91bmRh
dGlvbk9ic2VydmF0aW9uQ29udGV4dFBsYXllcl07CiAgICAgbV9hdXRvbWF0aWNhbGx5V2FpdHNU
b01pbmltaXplU3RhbGxpbmcgPSBbbV9hdlBsYXllciBhdXRvbWF0aWNhbGx5V2FpdHNUb01pbmlt
aXplU3RhbGxpbmddOwogCiAgICAgc2V0U2hvdWxkT2JzZXJ2ZVRpbWVDb250cm9sU3RhdHVzKHRy
dWUpOwpAQCAtMTA2MCw3ICsxMDYwLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjpjcmVhdGVBVlBsYXllcigpCiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJB
Q0tfVEFSR0VUKQogICAgIHVwZGF0ZURpc2FibGVFeHRlcm5hbFBsYXliYWNrKCk7Ci0gICAgW21f
YXZQbGF5ZXIuZ2V0KCkgc2V0QWxsb3dzRXh0ZXJuYWxQbGF5YmFjazptX2FsbG93c1dpcmVsZXNz
VmlkZW9QbGF5YmFja107CisgICAgW21fYXZQbGF5ZXIgc2V0QWxsb3dzRXh0ZXJuYWxQbGF5YmFj
azptX2FsbG93c1dpcmVsZXNzVmlkZW9QbGF5YmFja107CiAjZW5kaWYKIAogI2lmIEVOQUJMRShX
SVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtMTA3
Niw3ICsxMDc2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpj
cmVhdGVBVlBsYXllcigpCiAjZW5kaWYKIAogICAgIGlmIChtX211dGVkKSB7Ci0gICAgICAgIFtt
X2F2UGxheWVyLmdldCgpIHNldE11dGVkOm1fbXV0ZWRdOworICAgICAgICBbbV9hdlBsYXllciBz
ZXRNdXRlZDptX211dGVkXTsKIAogI2lmIEhBVkUoQVZQTEFZRVJfU1VQUkVTU0VTX0FVRElPX1JF
TkRFUklORykKICAgICAgICAgaWYgKHBsYXllcigpLT5pc1ZpZGVvUGxheWVyKCkpCkBAIC0xMTM5
LDcgKzExMzksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNy
ZWF0ZUFWUGxheWVySXRlbSgpCiAKICAgICBOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9ucyBvcHRp
b25zID0gTlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbk5ldyB8IE5TS2V5VmFsdWVPYnNlcnZpbmdP
cHRpb25QcmlvcjsKICAgICBmb3IgKE5TU3RyaW5nICprZXlOYW1lIGluIGl0ZW1LVk9Qcm9wZXJ0
aWVzKCkpCi0gICAgICAgIFttX2F2UGxheWVySXRlbS5nZXQoKSBhZGRPYnNlcnZlcjptX29iamNP
YnNlcnZlci5nZXQoKSBmb3JLZXlQYXRoOmtleU5hbWUgb3B0aW9uczpvcHRpb25zIGNvbnRleHQ6
KHZvaWQgKilNZWRpYVBsYXllckFWRm91bmRhdGlvbk9ic2VydmF0aW9uQ29udGV4dFBsYXllckl0
ZW1dOworICAgICAgICBbbV9hdlBsYXllckl0ZW0gYWRkT2JzZXJ2ZXI6bV9vYmpjT2JzZXJ2ZXIu
Z2V0KCkgZm9yS2V5UGF0aDprZXlOYW1lIG9wdGlvbnM6b3B0aW9ucyBjb250ZXh0Oih2b2lkICop
TWVkaWFQbGF5ZXJBVkZvdW5kYXRpb25PYnNlcnZhdGlvbkNvbnRleHRQbGF5ZXJJdGVtXTsKIAog
ICAgIFttX2F2UGxheWVySXRlbSBzZXRBdWRpb1RpbWVQaXRjaEFsZ29yaXRobTphdWRpb1RpbWVQ
aXRjaEFsZ29yaXRobUZvck1lZGlhUGxheWVyUGl0Y2hDb3JyZWN0aW9uQWxnb3JpdGhtKHBsYXll
cigpLT5waXRjaENvcnJlY3Rpb25BbGdvcml0aG0oKSwgcGxheWVyKCktPnByZXNlcnZlc1BpdGNo
KCksIG1fcmVxdWVzdGVkUmF0ZSldOwogCkBAIC0xMTU3LDEyICsxMTU3LDEyIEBAIEFMTE9XX05F
V19BUElfV0lUSE9VVF9HVUFSRFNfRU5ECiAKICAgICBSZXRhaW5QdHI8TlNBcnJheT4gc3VidHlw
ZXMgPSBhZG9wdE5TKFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOkAoa0NNU3VidGl0
bGVGb3JtYXRUeXBlX1dlYlZUVCksIG5pbF0pOwogICAgIG1fbGVnaWJsZU91dHB1dCA9IGFkb3B0
TlMoW1BBTDo6YWxsb2NBVlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0SW5zdGFuY2UoKSBpbml0V2l0
aE1lZGlhU3VidHlwZXNGb3JOYXRpdmVSZXByZXNlbnRhdGlvbjpzdWJ0eXBlcy5nZXQoKV0pOwot
ICAgIFttX2xlZ2libGVPdXRwdXQuZ2V0KCkgc2V0U3VwcHJlc3Nlc1BsYXllclJlbmRlcmluZzpZ
RVNdOworICAgIFttX2xlZ2libGVPdXRwdXQgc2V0U3VwcHJlc3Nlc1BsYXllclJlbmRlcmluZzpZ
RVNdOwogCi0gICAgW21fbGVnaWJsZU91dHB1dC5nZXQoKSBzZXREZWxlZ2F0ZTptX29iamNPYnNl
cnZlci5nZXQoKSBxdWV1ZTpkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpXTsKLSAgICBbbV9sZWdp
YmxlT3V0cHV0LmdldCgpIHNldEFkdmFuY2VJbnRlcnZhbEZvckRlbGVnYXRlSW52b2NhdGlvbjph
dlBsYXllck91dHB1dEFkdmFuY2VJbnRlcnZhbF07Ci0gICAgW21fbGVnaWJsZU91dHB1dC5nZXQo
KSBzZXRUZXh0U3R5bGluZ1Jlc29sdXRpb246QVZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1dFRleHRT
dHlsaW5nUmVzb2x1dGlvblNvdXJjZUFuZFJ1bGVzT25seV07Ci0gICAgW21fYXZQbGF5ZXJJdGVt
LmdldCgpIGFkZE91dHB1dDptX2xlZ2libGVPdXRwdXQuZ2V0KCldOworICAgIFttX2xlZ2libGVP
dXRwdXQgc2V0RGVsZWdhdGU6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgcXVldWU6ZGlzcGF0Y2hfZ2V0
X21haW5fcXVldWUoKV07CisgICAgW21fbGVnaWJsZU91dHB1dCBzZXRBZHZhbmNlSW50ZXJ2YWxG
b3JEZWxlZ2F0ZUludm9jYXRpb246YXZQbGF5ZXJPdXRwdXRBZHZhbmNlSW50ZXJ2YWxdOworICAg
IFttX2xlZ2libGVPdXRwdXQgc2V0VGV4dFN0eWxpbmdSZXNvbHV0aW9uOkFWUGxheWVySXRlbUxl
Z2libGVPdXRwdXRUZXh0U3R5bGluZ1Jlc29sdXRpb25Tb3VyY2VBbmRSdWxlc09ubHldOworICAg
IFttX2F2UGxheWVySXRlbSBhZGRPdXRwdXQ6bV9sZWdpYmxlT3V0cHV0LmdldCgpXTsKIAogI2lm
IEVOQUJMRShXRUJfQVVESU8pICYmIFVTRShNRURJQVRPT0xCT1gpCiAgICAgaWYgKG1fcHJvdmlk
ZXIpIHsKQEAgLTExNzIsMTMgKzExNzIsMTMgQEAgQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJE
U19FTkQKICNlbmRpZgogCiAgICAgbV9tZXRhZGF0YUNvbGxlY3RvciA9IGFkb3B0TlMoW1BBTDo6
YWxsb2NBVlBsYXllckl0ZW1NZXRhZGF0YUNvbGxlY3Rvckluc3RhbmNlKCkgaW5pdFdpdGhJZGVu
dGlmaWVyczpuaWwgY2xhc3NpZnlpbmdMYWJlbHM6bmlsXSk7Ci0gICAgW21fbWV0YWRhdGFDb2xs
ZWN0b3IuZ2V0KCkgc2V0RGVsZWdhdGU6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgcXVldWU6ZGlzcGF0
Y2hfZ2V0X21haW5fcXVldWUoKV07Ci0gICAgW21fYXZQbGF5ZXJJdGVtLmdldCgpIGFkZE1lZGlh
RGF0YUNvbGxlY3RvcjptX21ldGFkYXRhQ29sbGVjdG9yLmdldCgpXTsKKyAgICBbbV9tZXRhZGF0
YUNvbGxlY3RvciBzZXREZWxlZ2F0ZTptX29iamNPYnNlcnZlci5nZXQoKSBxdWV1ZTpkaXNwYXRj
aF9nZXRfbWFpbl9xdWV1ZSgpXTsKKyAgICBbbV9hdlBsYXllckl0ZW0gYWRkTWVkaWFEYXRhQ29s
bGVjdG9yOm1fbWV0YWRhdGFDb2xsZWN0b3IuZ2V0KCldOwogCiAgICAgbV9tZXRhZGF0YU91dHB1
dCA9IGFkb3B0TlMoW1BBTDo6YWxsb2NBVlBsYXllckl0ZW1NZXRhZGF0YU91dHB1dEluc3RhbmNl
KCkgaW5pdFdpdGhJZGVudGlmaWVyczpuaWxdKTsKLSAgICBbbV9tZXRhZGF0YU91dHB1dC5nZXQo
KSBzZXREZWxlZ2F0ZTptX29iamNPYnNlcnZlci5nZXQoKSBxdWV1ZTpkaXNwYXRjaF9nZXRfbWFp
bl9xdWV1ZSgpXTsKLSAgICBbbV9tZXRhZGF0YU91dHB1dC5nZXQoKSBzZXRBZHZhbmNlSW50ZXJ2
YWxGb3JEZWxlZ2F0ZUludm9jYXRpb246YXZQbGF5ZXJPdXRwdXRBZHZhbmNlSW50ZXJ2YWxdOwot
ICAgIFttX2F2UGxheWVySXRlbS5nZXQoKSBhZGRPdXRwdXQ6bV9tZXRhZGF0YU91dHB1dC5nZXQo
KV07CisgICAgW21fbWV0YWRhdGFPdXRwdXQgc2V0RGVsZWdhdGU6bV9vYmpjT2JzZXJ2ZXIuZ2V0
KCkgcXVldWU6ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKV07CisgICAgW21fbWV0YWRhdGFPdXRw
dXQgc2V0QWR2YW5jZUludGVydmFsRm9yRGVsZWdhdGVJbnZvY2F0aW9uOmF2UGxheWVyT3V0cHV0
QWR2YW5jZUludGVydmFsXTsKKyAgICBbbV9hdlBsYXllckl0ZW0gYWRkT3V0cHV0Om1fbWV0YWRh
dGFPdXRwdXQuZ2V0KCldOwogCiAgICAgc2V0RGVsYXlDYWxsYmFja3MoZmFsc2UpOwogfQpAQCAt
MTE5Miw3ICsxMTkyLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpjaGVja1BsYXlhYmlsaXR5KCkKICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSKTsKICAgICBh
dXRvIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpOwogCi0gICAgW21fYXZBc3NldC5nZXQo
KSBsb2FkVmFsdWVzQXN5bmNocm9ub3VzbHlGb3JLZXlzOkBbQCJwbGF5YWJsZSIsIEAidHJhY2tz
Il0gY29tcGxldGlvbkhhbmRsZXI6XnsKKyAgICBbbV9hdkFzc2V0IGxvYWRWYWx1ZXNBc3luY2hy
b25vdXNseUZvcktleXM6QFtAInBsYXlhYmxlIiwgQCJ0cmFja3MiXSBjb21wbGV0aW9uSGFuZGxl
cjpeewogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrVGhpc10gewogICAgICAgICAgICAg
aWYgKHdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHdlYWtUaGlzLT5zY2hlZHVsZU1haW5UaHJl
YWROb3RpZmljYXRpb24oTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpOb3RpZmljYXRp
b246OkFzc2V0UGxheWFiaWxpdHlLbm93bik7CkBAIC0xMjA3LDEwICsxMjA3LDEwIEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6YmVnaW5Mb2FkaW5nTWV0YWRhdGEo
KQogICAgIE9TT2JqZWN0UHRyPGRpc3BhdGNoX2dyb3VwX3Q+IG1ldGFkYXRhTG9hZGluZ0dyb3Vw
ID0gYWRvcHRPU09iamVjdChkaXNwYXRjaF9ncm91cF9jcmVhdGUoKSk7CiAgICAgZGlzcGF0Y2hf
Z3JvdXBfZW50ZXIobWV0YWRhdGFMb2FkaW5nR3JvdXAuZ2V0KCkpOwogICAgIGF1dG8gd2Vha1Ro
aXMgPSBtYWtlV2Vha1B0cigqdGhpcyk7Ci0gICAgW21fYXZBc3NldC5nZXQoKSBsb2FkVmFsdWVz
QXN5bmNocm9ub3VzbHlGb3JLZXlzOmFzc2V0TWV0YWRhdGFLZXlOYW1lcygpIGNvbXBsZXRpb25I
YW5kbGVyOl57CisgICAgW21fYXZBc3NldCBsb2FkVmFsdWVzQXN5bmNocm9ub3VzbHlGb3JLZXlz
OmFzc2V0TWV0YWRhdGFLZXlOYW1lcygpIGNvbXBsZXRpb25IYW5kbGVyOl57CiAgICAgICAgIGNh
bGxPbk1haW5UaHJlYWQoW3dlYWtUaGlzLCBtZXRhZGF0YUxvYWRpbmdHcm91cF0gewotICAgICAg
ICAgICAgaWYgKHdlYWtUaGlzICYmIFt3ZWFrVGhpcy0+bV9hdkFzc2V0LmdldCgpIHN0YXR1c09m
VmFsdWVGb3JLZXk6QCJ0cmFja3MiIGVycm9yOm5pbF0gPT0gQVZLZXlWYWx1ZVN0YXR1c0xvYWRl
ZCkgewotICAgICAgICAgICAgICAgIGZvciAoQVZBc3NldFRyYWNrICp0cmFjayBpbiBbd2Vha1Ro
aXMtPm1fYXZBc3NldC5nZXQoKSB0cmFja3NdKSB7CisgICAgICAgICAgICBpZiAod2Vha1RoaXMg
JiYgW3dlYWtUaGlzLT5tX2F2QXNzZXQgc3RhdHVzT2ZWYWx1ZUZvcktleTpAInRyYWNrcyIgZXJy
b3I6bmlsXSA9PSBBVktleVZhbHVlU3RhdHVzTG9hZGVkKSB7CisgICAgICAgICAgICAgICAgZm9y
IChBVkFzc2V0VHJhY2sgKnRyYWNrIGluIFt3ZWFrVGhpcy0+bV9hdkFzc2V0IHRyYWNrc10pIHsK
ICAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2hfZ3JvdXBfZW50ZXIobWV0YWRhdGFMb2FkaW5n
R3JvdXAuZ2V0KCkpOwogICAgICAgICAgICAgICAgICAgICBbdHJhY2sgbG9hZFZhbHVlc0FzeW5j
aHJvbm91c2x5Rm9yS2V5czphc3NldFRyYWNrTWV0YWRhdGFLZXlOYW1lcygpIGNvbXBsZXRpb25I
YW5kbGVyOl57CiAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaF9ncm91cF9sZWF2ZSht
ZXRhZGF0YUxvYWRpbmdHcm91cC5nZXQoKSk7CkBAIC0xMjI0LDcgKzEyMjQsNyBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmJlZ2luTG9hZGluZ01ldGFkYXRhKCkK
ICAgICBkaXNwYXRjaF9ncm91cF9ub3RpZnkobWV0YWRhdGFMb2FkaW5nR3JvdXAuZ2V0KCksIGRp
c3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dl
YWtUaGlzXSB7CiAgICAgICAgICAgICBpZiAod2Vha1RoaXMpCi0gICAgICAgICAgICAgICAgW3dl
YWtUaGlzLT5tX29iamNPYnNlcnZlci5nZXQoKSBtZXRhZGF0YUxvYWRlZF07CisgICAgICAgICAg
ICAgICAgW3dlYWtUaGlzLT5tX29iamNPYnNlcnZlciBtZXRhZGF0YUxvYWRlZF07CiAgICAgICAg
IH0pOwogICAgIH0pOwogfQpAQCAtMTM0NSw3ICsxMzQ1LDcgQEAgU3RyaW5nIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmFjY2Vzc0xvZygpIGNvbnN0CiAgICAgaWYgKCFtX2F2
UGxheWVySXRlbSkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAgICAgCi0gICAgQVZQ
bGF5ZXJJdGVtQWNjZXNzTG9nICpsb2cgPSBbbV9hdlBsYXllckl0ZW0uZ2V0KCkgYWNjZXNzTG9n
XTsKKyAgICBBVlBsYXllckl0ZW1BY2Nlc3NMb2cgKmxvZyA9IFttX2F2UGxheWVySXRlbSBhY2Nl
c3NMb2ddOwogICAgIFJldGFpblB0cjxOU1N0cmluZz4gbG9nU3RyaW5nID0gYWRvcHROUyhbW05T
U3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6W2xvZyBleHRlbmRlZExvZ0RhdGFdIGVuY29kaW5n
Oltsb2cgZXh0ZW5kZWRMb2dEYXRhU3RyaW5nRW5jb2RpbmddXSk7CiAKICAgICByZXR1cm4gbG9n
U3RyaW5nLmdldCgpOwpAQCAtMTM1Niw3ICsxMzU2LDcgQEAgU3RyaW5nIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6OmVycm9yTG9nKCkgY29uc3QKICAgICBpZiAoIW1fYXZQbGF5
ZXJJdGVtKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIEFWUGxheWVySXRl
bUVycm9yTG9nICpsb2cgPSBbbV9hdlBsYXllckl0ZW0uZ2V0KCkgZXJyb3JMb2ddOworICAgIEFW
UGxheWVySXRlbUVycm9yTG9nICpsb2cgPSBbbV9hdlBsYXllckl0ZW0gZXJyb3JMb2ddOwogICAg
IFJldGFpblB0cjxOU1N0cmluZz4gbG9nU3RyaW5nID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9j
XSBpbml0V2l0aERhdGE6W2xvZyBleHRlbmRlZExvZ0RhdGFdIGVuY29kaW5nOltsb2cgZXh0ZW5k
ZWRMb2dEYXRhU3RyaW5nRW5jb2RpbmddXSk7CiAKICAgICByZXR1cm4gbG9nU3RyaW5nLmdldCgp
OwpAQCAtMTM3NCw3ICsxMzc0LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpwbGF0Zm9ybVNldFZpc2libGUoYm9vbCBpc1Zpc2libGUpCiAgICAgW0NBVHJhbnNh
Y3Rpb24gYmVnaW5dOwogICAgIFtDQVRyYW5zYWN0aW9uIHNldERpc2FibGVBY3Rpb25zOllFU107
ICAgIAogICAgIGlmIChtX3ZpZGVvTGF5ZXIpCi0gICAgICAgIFttX3ZpZGVvTGF5ZXIuZ2V0KCkg
c2V0SGlkZGVuOiFpc1Zpc2libGVdOworICAgICAgICBbbV92aWRlb0xheWVyIHNldEhpZGRlbjoh
aXNWaXNpYmxlXTsKICAgICBbQ0FUcmFuc2FjdGlvbiBjb21taXRdOwogfQogICAgIApAQCAtMTQ0
Miw5ICsxNDQyLDkgQEAgTWVkaWFUaW1lIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6OnBsYXRmb3JtRHVyYXRpb24oKSBjb25zdAogICAgIAogICAgIC8vIENoZWNrIHRoZSBBVkl0
ZW0gaWYgd2UgaGF2ZSBvbmUgYW5kIGl0IGhhcyBsb2FkZWQgZHVyYXRpb24sIHNvbWUgYXNzZXRz
IG5ldmVyIHJlcG9ydCBkdXJhdGlvbi4KICAgICBpZiAobV9hdlBsYXllckl0ZW0gJiYgcGxheWVy
SXRlbVN0YXR1cygpID49IE1lZGlhUGxheWVyQVZQbGF5ZXJJdGVtU3RhdHVzUmVhZHlUb1BsYXkp
Ci0gICAgICAgIGNtRHVyYXRpb24gPSBbbV9hdlBsYXllckl0ZW0uZ2V0KCkgZHVyYXRpb25dOwor
ICAgICAgICBjbUR1cmF0aW9uID0gW21fYXZQbGF5ZXJJdGVtIGR1cmF0aW9uXTsKICAgICBlbHNl
Ci0gICAgICAgIGNtRHVyYXRpb24gPSBbbV9hdkFzc2V0LmdldCgpIGR1cmF0aW9uXTsKKyAgICAg
ICAgY21EdXJhdGlvbiA9IFttX2F2QXNzZXQgZHVyYXRpb25dOwogCiAgICAgaWYgKENNVElNRV9J
U19OVU1FUklDKGNtRHVyYXRpb24pKQogICAgICAgICByZXR1cm4gUEFMOjp0b01lZGlhVGltZShj
bUR1cmF0aW9uKTsKQEAgLTE0NjcsNyArMTQ2Nyw3IEBAIE1lZGlhVGltZSBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjdXJyZW50TWVkaWFUaW1lKCkgY29uc3QKICAgICAgICAg
cmV0dXJuIE1lZGlhVGltZTo6emVyb1RpbWUoKTsKIAogICAgIGlmICghbV93YWxsQ2xvY2tBdENh
Y2hlZEN1cnJlbnRUaW1lKQotICAgICAgICBjdXJyZW50TWVkaWFUaW1lRGlkQ2hhbmdlKFBBTDo6
dG9NZWRpYVRpbWUoW21fYXZQbGF5ZXJJdGVtLmdldCgpIGN1cnJlbnRUaW1lXSkpOworICAgICAg
ICBjdXJyZW50TWVkaWFUaW1lRGlkQ2hhbmdlKFBBTDo6dG9NZWRpYVRpbWUoW21fYXZQbGF5ZXJJ
dGVtIGN1cnJlbnRUaW1lXSkpOwogICAgIEFTU0VSVChtX3dhbGxDbG9ja0F0Q2FjaGVkQ3VycmVu
dFRpbWUpOwogCiAgICAgYXV0byBpdGVtVGltZSA9IG1fY2FjaGVkQ3VycmVudE1lZGlhVGltZTsK
QEAgLTE1MTgsNyArMTUxOCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6c2Vla1RvVGltZShjb25zdCBNZWRpYVRpbWUmIHRpbWUsIGNvbnN0CiAgICAgYXV0byB3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKTsKIAogICAgIHNldFNob3VsZE9ic2VydmVUaW1l
Q29udHJvbFN0YXR1cyhmYWxzZSk7Ci0gICAgW21fYXZQbGF5ZXJJdGVtLmdldCgpIHNlZWtUb1Rp
bWU6Y21UaW1lIHRvbGVyYW5jZUJlZm9yZTpjbUJlZm9yZSB0b2xlcmFuY2VBZnRlcjpjbUFmdGVy
IGNvbXBsZXRpb25IYW5kbGVyOl4oQk9PTCBmaW5pc2hlZCkgeworICAgIFttX2F2UGxheWVySXRl
bSBzZWVrVG9UaW1lOmNtVGltZSB0b2xlcmFuY2VCZWZvcmU6Y21CZWZvcmUgdG9sZXJhbmNlQWZ0
ZXI6Y21BZnRlciBjb21wbGV0aW9uSGFuZGxlcjpeKEJPT0wgZmluaXNoZWQpIHsKICAgICAgICAg
Y2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXMsIGZpbmlzaGVkXSB7CiAgICAgICAgICAgICBhdXRv
IF90aGlzID0gd2Vha1RoaXMuZ2V0KCk7CiAgICAgICAgICAgICBpZiAoIV90aGlzKQpAQCAtMTU0
NCw3ICsxNTQ0LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpz
ZXRWb2x1bWUoZmxvYXQgdm9sdW1lKQogCiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCB2
b2x1bWUpOwogCi0gICAgW21fYXZQbGF5ZXIuZ2V0KCkgc2V0Vm9sdW1lOnZvbHVtZV07CisgICAg
W21fYXZQbGF5ZXIgc2V0Vm9sdW1lOnZvbHVtZV07CiAjZW5kaWYKIH0KIApAQCAtMTU2MCw3ICsx
NTYwLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRNdXRl
ZChib29sIG11dGVkKQogICAgIGlmICghbV9hdlBsYXllcikKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgW21fYXZQbGF5ZXIuZ2V0KCkgc2V0TXV0ZWQ6bV9tdXRlZF07CisgICAgW21fYXZQbGF5ZXIg
c2V0TXV0ZWQ6bV9tdXRlZF07CiAjaWYgSEFWRShBVlBMQVlFUl9TVVBSRVNTRVNfQVVESU9fUkVO
REVSSU5HKQogICAgIGlmICghbV9tdXRlZCkKICAgICAgICAgbV9hdlBsYXllci5nZXQoKS5zdXBw
cmVzc2VzQXVkaW9SZW5kZXJpbmcgPSBOTzsKQEAgLTE3NjMsNyArMTc2Myw3IEBAIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6QXNzZXRTdGF0dXMgTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6CiAgICAgaWYgKCFtX2NhY2hlZEFzc2V0SXNMb2FkZWQpIHsKICAgICAg
ICAgZm9yIChOU1N0cmluZyAqa2V5TmFtZSBpbiBhc3NldE1ldGFkYXRhS2V5TmFtZXMoKSkgewog
ICAgICAgICAgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7Ci0gICAgICAgICAgICBBVktleVZhbHVl
U3RhdHVzIGtleVN0YXR1cyA9IFttX2F2QXNzZXQuZ2V0KCkgc3RhdHVzT2ZWYWx1ZUZvcktleTpr
ZXlOYW1lIGVycm9yOiZlcnJvcl07CisgICAgICAgICAgICBBVktleVZhbHVlU3RhdHVzIGtleVN0
YXR1cyA9IFttX2F2QXNzZXQgc3RhdHVzT2ZWYWx1ZUZvcktleTprZXlOYW1lIGVycm9yOiZlcnJv
cl07CiAKICAgICAgICAgICAgIGlmIChlcnJvcikKICAgICAgICAgICAgICAgICBFUlJPUl9MT0co
TE9HSURFTlRJRklFUiwgImZhaWxlZCBmb3IgIiwgW2tleU5hbWUgVVRGOFN0cmluZ10sICIsIGVy
cm9yID0gIiwgW1tlcnJvciBsb2NhbGl6ZWREZXNjcmlwdGlvbl0gVVRGOFN0cmluZ10pOwpAQCAt
MTc5NCw3ICsxNzk0LDcgQEAgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpBc3NldFN0
YXR1cyBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjoKICAgICB9CiAKICAgICBp
ZiAoIW1fY2FjaGVkQXNzZXRJc1BsYXlhYmxlKQotICAgICAgICBtX2NhY2hlZEFzc2V0SXNQbGF5
YWJsZSA9IFtbbV9hdkFzc2V0LmdldCgpIHZhbHVlRm9yS2V5OkAicGxheWFibGUiXSBib29sVmFs
dWVdOworICAgICAgICBtX2NhY2hlZEFzc2V0SXNQbGF5YWJsZSA9IFtbbV9hdkFzc2V0IHZhbHVl
Rm9yS2V5OkAicGxheWFibGUiXSBib29sVmFsdWVdOwogCiAgICAgaWYgKCptX2NhY2hlZEFzc2V0
SXNQbGF5YWJsZSAmJiBtX3RyYWNrc0FyZVBsYXlhYmxlLnZhbHVlKCkpCiAgICAgICAgIHJldHVy
biBNZWRpYVBsYXllckFWQXNzZXRTdGF0dXNQbGF5YWJsZTsKQEAgLTE4NjcsOCArMTg2Nyw4IEBA
IFJldGFpblB0cjxDR0ltYWdlUmVmPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpjcmVhdGVJbWFnZUZvclRpbWVJblJlCiAKICAgICBNb25vdG9uaWNUaW1lIHN0YXJ0ID0gTW9u
b3RvbmljVGltZTo6bm93KCk7CiAKLSAgICBbbV9pbWFnZUdlbmVyYXRvci5nZXQoKSBzZXRNYXhp
bXVtU2l6ZTpDR1NpemUocmVjdC5zaXplKCkpXTsKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4g
cmF3SW1hZ2UgPSBhZG9wdENGKFttX2ltYWdlR2VuZXJhdG9yLmdldCgpIGNvcHlDR0ltYWdlQXRU
aW1lOlBBTDo6Q01UaW1lTWFrZVdpdGhTZWNvbmRzKHRpbWUsIDYwMCkgYWN0dWFsVGltZTpuaWwg
ZXJyb3I6bmlsXSk7CisgICAgW21faW1hZ2VHZW5lcmF0b3Igc2V0TWF4aW11bVNpemU6Q0dTaXpl
KHJlY3Quc2l6ZSgpKV07CisgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IHJhd0ltYWdlID0gYWRv
cHRDRihbbV9pbWFnZUdlbmVyYXRvciBjb3B5Q0dJbWFnZUF0VGltZTpQQUw6OkNNVGltZU1ha2VX
aXRoU2Vjb25kcyh0aW1lLCA2MDApIGFjdHVhbFRpbWU6bmlsIGVycm9yOm5pbF0pOwogICAgIFJl
dGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZUNvcHlXaXRo
Q29sb3JTcGFjZShyYXdJbWFnZS5nZXQoKSwgc1JHQkNvbG9yU3BhY2VSZWYoKSkpOwogCiAgICAg
SU5GT19MT0coTE9HSURFTlRJRklFUiwgImNyZWF0aW5nIGltYWdlIHRvb2sgIiwgKE1vbm90b25p
Y1RpbWU6Om5vdygpIC0gc3RhcnQpLnNlY29uZHMoKSk7CkBAIC0yMDgxLDcgKzIwODEsNyBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZVZpZGVvTGF5ZXJH
cmF2aXR5KCkKICAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07CiAgICAgW0NBVHJhbnNhY3Rpb24g
c2V0RGlzYWJsZUFjdGlvbnM6WUVTXTsgICAgCiAgICAgTlNTdHJpbmcqIGdyYXZpdHkgPSBzaG91
bGRNYWludGFpbkFzcGVjdFJhdGlvKCkgPyBBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0
IDogQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZTsKLSAgICBbbV92aWRlb0xheWVyLmdldCgpIHNl
dFZpZGVvR3Jhdml0eTpncmF2aXR5XTsKKyAgICBbbV92aWRlb0xheWVyIHNldFZpZGVvR3Jhdml0
eTpncmF2aXR5XTsKICAgICBbQ0FUcmFuc2FjdGlvbiBjb21taXRdOwogfQogCkBAIC0yNDcyLDcg
KzI0NzIsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0
ZVZpZGVvT3V0cHV0KCkKICAgICBtX3ZpZGVvT3V0cHV0RGVsZWdhdGUgPSBhZG9wdE5TKFtbV2Vi
Q29yZUFWRlB1bGxEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhQbGF5ZXI6bWFrZVdlYWtQdHIoKnRo
aXMpXSk7CiAgICAgW21fdmlkZW9PdXRwdXQgc2V0RGVsZWdhdGU6bV92aWRlb091dHB1dERlbGVn
YXRlLmdldCgpIHF1ZXVlOmdsb2JhbFB1bGxEZWxlZ2F0ZVF1ZXVlKCldOwogCi0gICAgW21fYXZQ
bGF5ZXJJdGVtLmdldCgpIGFkZE91dHB1dDptX3ZpZGVvT3V0cHV0LmdldCgpXTsKKyAgICBbbV9h
dlBsYXllckl0ZW0gYWRkT3V0cHV0Om1fdmlkZW9PdXRwdXQuZ2V0KCldOwogCiAgICAgc2V0TmVl
ZHNSZW5kZXJpbmdNb2RlQ2hhbmdlZCgpOwogfQpAQCAtMjQ4Myw3ICsyNDgzLDcgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpkZXN0cm95VmlkZW9PdXRwdXQoKQog
ICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9hdlBsYXllckl0ZW0pCi0gICAgICAgIFttX2F2
UGxheWVySXRlbS5nZXQoKSByZW1vdmVPdXRwdXQ6bV92aWRlb091dHB1dC5nZXQoKV07CisgICAg
ICAgIFttX2F2UGxheWVySXRlbSByZW1vdmVPdXRwdXQ6bV92aWRlb091dHB1dC5nZXQoKV07CiAK
ICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSKTsKIApAQCAtMjUwMSwxMiArMjUwMSwxMiBAQCBi
b29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZUxhc3RQaXhlbEJ1
ZmZlcigpCiAgICAgICAgIGNyZWF0ZVZpZGVvT3V0cHV0KCk7CiAgICAgQVNTRVJUKG1fdmlkZW9P
dXRwdXQpOwogCi0gICAgQ01UaW1lIGN1cnJlbnRUaW1lID0gW21fYXZQbGF5ZXJJdGVtLmdldCgp
IGN1cnJlbnRUaW1lXTsKKyAgICBDTVRpbWUgY3VycmVudFRpbWUgPSBbbV9hdlBsYXllckl0ZW0g
Y3VycmVudFRpbWVdOwogCi0gICAgaWYgKCFbbV92aWRlb091dHB1dC5nZXQoKSBoYXNOZXdQaXhl
bEJ1ZmZlckZvckl0ZW1UaW1lOmN1cnJlbnRUaW1lXSkKKyAgICBpZiAoIVttX3ZpZGVvT3V0cHV0
IGhhc05ld1BpeGVsQnVmZmVyRm9ySXRlbVRpbWU6Y3VycmVudFRpbWVdKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBtX2xhc3RQaXhlbEJ1ZmZlciA9IGFkb3B0Q0YoW21fdmlkZW9PdXRw
dXQuZ2V0KCkgY29weVBpeGVsQnVmZmVyRm9ySXRlbVRpbWU6Y3VycmVudFRpbWUgaXRlbVRpbWVG
b3JEaXNwbGF5Om5pbF0pOworICAgIG1fbGFzdFBpeGVsQnVmZmVyID0gYWRvcHRDRihbbV92aWRl
b091dHB1dCBjb3B5UGl4ZWxCdWZmZXJGb3JJdGVtVGltZTpjdXJyZW50VGltZSBpdGVtVGltZUZv
ckRpc3BsYXk6bmlsXSk7CiAKICAgICBpZiAobV9pbWFnZVJvdGF0aW9uU2Vzc2lvbikKICAgICAg
ICAgbV9sYXN0UGl4ZWxCdWZmZXIgPSBtX2ltYWdlUm90YXRpb25TZXNzaW9uLT5yb3RhdGUobV9s
YXN0UGl4ZWxCdWZmZXIuZ2V0KCkpOwpAQCAtMjc1NCw3ICsyNzU0LDcgQEAgQVZBc3NldFRyYWNr
KiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpmaXJzdEVuYWJsZWRUcmFjayhB
Vk1lZGlhQ2hhcmEKICAgICBpZiAoIW1fYXZBc3NldCkKICAgICAgICAgcmV0dXJuIG5pbDsKIAot
ICAgIGlmIChbbV9hdkFzc2V0LmdldCgpIHN0YXR1c09mVmFsdWVGb3JLZXk6QCJ0cmFja3MiIGVy
cm9yOk5VTExdICE9IEFWS2V5VmFsdWVTdGF0dXNMb2FkZWQpCisgICAgaWYgKFttX2F2QXNzZXQg
c3RhdHVzT2ZWYWx1ZUZvcktleTpAInRyYWNrcyIgZXJyb3I6TlVMTF0gIT0gQVZLZXlWYWx1ZVN0
YXR1c0xvYWRlZCkKICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIHJldHVybiBbXSAoTlNBcnJh
eSogdHJhY2tzKSAtPiBBVkFzc2V0VHJhY2sqIHsKQEAgLTI3ODIsNyArMjc4Miw3IEBAIGJvb2wg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6aGFzTG9hZGVkTWVkaWFTZWxlY3Rp
b25Hcm91cHMoKQogICAgIGlmICghbV9hdkFzc2V0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBpZiAoW21fYXZBc3NldC5nZXQoKSBzdGF0dXNPZlZhbHVlRm9yS2V5OkAiYXZhaWxhYmxl
TWVkaWFDaGFyYWN0ZXJpc3RpY3NXaXRoTWVkaWFTZWxlY3Rpb25PcHRpb25zIiBlcnJvcjpOVUxM
XSAhPSBBVktleVZhbHVlU3RhdHVzTG9hZGVkKQorICAgIGlmIChbbV9hdkFzc2V0IHN0YXR1c09m
VmFsdWVGb3JLZXk6QCJhdmFpbGFibGVNZWRpYUNoYXJhY3RlcmlzdGljc1dpdGhNZWRpYVNlbGVj
dGlvbk9wdGlvbnMiIGVycm9yOk5VTExdICE9IEFWS2V5VmFsdWVTdGF0dXNMb2FkZWQpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiB0cnVlOwpAQCAtMjc5Myw3ICsyNzkzLDcg
QEAgQVZNZWRpYVNlbGVjdGlvbkdyb3VwKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjpzYWZlTWVkaWFTZWxlY3Rpb25Hcm8KICAgICBpZiAoIWhhc0xvYWRlZE1lZGlhU2VsZWN0
aW9uR3JvdXBzKCkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICByZXR1cm4gW21fYXZBc3Nl
dC5nZXQoKSBtZWRpYVNlbGVjdGlvbkdyb3VwRm9yTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlh
Q2hhcmFjdGVyaXN0aWNMZWdpYmxlXTsKKyAgICByZXR1cm4gW21fYXZBc3NldCBtZWRpYVNlbGVj
dGlvbkdyb3VwRm9yTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNMZWdp
YmxlXTsKIH0KIAogQVZNZWRpYVNlbGVjdGlvbkdyb3VwKiBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpzYWZlTWVkaWFTZWxlY3Rpb25Hcm91cEZvckF1ZGlibGVNZWRpYSgpCkBA
IC0yODAxLDcgKzI4MDEsNyBAQCBBVk1lZGlhU2VsZWN0aW9uR3JvdXAqIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6OnNhZmVNZWRpYVNlbGVjdGlvbkdybwogICAgIGlmICghaGFz
TG9hZGVkTWVkaWFTZWxlY3Rpb25Hcm91cHMoKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAg
IHJldHVybiBbbV9hdkFzc2V0LmdldCgpIG1lZGlhU2VsZWN0aW9uR3JvdXBGb3JNZWRpYUNoYXJh
Y3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY0F1ZGlibGVdOworICAgIHJldHVybiBbbV9h
dkFzc2V0IG1lZGlhU2VsZWN0aW9uR3JvdXBGb3JNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFD
aGFyYWN0ZXJpc3RpY0F1ZGlibGVdOwogfQogCiBBVk1lZGlhU2VsZWN0aW9uR3JvdXAqIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNhZmVNZWRpYVNlbGVjdGlvbkdyb3VwRm9y
VmlzdWFsTWVkaWEoKQpAQCAtMjgwOSw3ICsyODA5LDcgQEAgQVZNZWRpYVNlbGVjdGlvbkdyb3Vw
KiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzYWZlTWVkaWFTZWxlY3Rpb25H
cm8KICAgICBpZiAoIWhhc0xvYWRlZE1lZGlhU2VsZWN0aW9uR3JvdXBzKCkpCiAgICAgICAgIHJl
dHVybiBuaWw7CiAKLSAgICByZXR1cm4gW21fYXZBc3NldC5nZXQoKSBtZWRpYVNlbGVjdGlvbkdy
b3VwRm9yTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNWaXN1YWxdOwor
ICAgIHJldHVybiBbbV9hdkFzc2V0IG1lZGlhU2VsZWN0aW9uR3JvdXBGb3JNZWRpYUNoYXJhY3Rl
cmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY1Zpc3VhbF07CiB9CiAKIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cHJvY2Vzc01lZGlhU2VsZWN0aW9uT3B0aW9ucygp
CkBAIC0yODIzLDcgKzI4MjMsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6OnByb2Nlc3NNZWRpYVNlbGVjdGlvbk9wdGlvbnMoKQogICAgIC8vIFdlIGVuYWJsZWQg
YXV0b21hdGljIG1lZGlhIHNlbGVjdGlvbiBiZWNhdXNlIHdlIHdhbnQgYWx0ZXJuYXRlIGF1ZGlv
IHRyYWNrcyB0byBiZSBlbmFibGVkL2Rpc2FibGVkIGF1dG9tYXRpY2FsbHksCiAgICAgLy8gYnV0
IHNldCB0aGUgc2VsZWN0ZWQgbGVnaWJsZSB0cmFjayB0byBuaWwgc28gdGV4dCB0cmFja3Mgd2ls
bCBub3QgYmUgYXV0b21hdGljYWxseSBjb25maWd1cmVkLgogICAgIGlmICghbV90ZXh0VHJhY2tz
LnNpemUoKSkKLSAgICAgICAgW21fYXZQbGF5ZXJJdGVtLmdldCgpIHNlbGVjdE1lZGlhT3B0aW9u
Om5pbCBpbk1lZGlhU2VsZWN0aW9uR3JvdXA6c2FmZU1lZGlhU2VsZWN0aW9uR3JvdXBGb3JMZWdp
YmxlTWVkaWEoKV07CisgICAgICAgIFttX2F2UGxheWVySXRlbSBzZWxlY3RNZWRpYU9wdGlvbjpu
aWwgaW5NZWRpYVNlbGVjdGlvbkdyb3VwOnNhZmVNZWRpYVNlbGVjdGlvbkdyb3VwRm9yTGVnaWJs
ZU1lZGlhKCldOwogCiAgICAgVmVjdG9yPFJlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZG
Pj4gcmVtb3ZlZFRleHRUcmFja3MgPSBtX3RleHRUcmFja3M7CiAgICAgTlNBcnJheSAqbGVnaWJs
ZU9wdGlvbnMgPSBbUEFMOjpnZXRBVk1lZGlhU2VsZWN0aW9uR3JvdXBDbGFzcygpIHBsYXlhYmxl
TWVkaWFTZWxlY3Rpb25PcHRpb25zRnJvbUFycmF5OltsZWdpYmxlR3JvdXAgb3B0aW9uc11dOwpA
QCAtMjg0NSw3ICsyODQ1LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjpwcm9jZXNzTWVkaWFTZWxlY3Rpb25PcHRpb25zKCkKICAgICAgICAgICAgICAgICBjdXJy
ZW50T3B0aW9uID0gdHJhY2stPm1lZGlhU2VsZWN0aW9uT3B0aW9uKCk7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChbY3VycmVudE9wdGlvbi5nZXQoKSBpc0Vx
dWFsOm9wdGlvbl0pIHsKKyAgICAgICAgICAgIGlmIChbY3VycmVudE9wdGlvbiBpc0VxdWFsOm9w
dGlvbl0pIHsKICAgICAgICAgICAgICAgICByZW1vdmVkVGV4dFRyYWNrcy5yZW1vdmUoaSAtIDEp
OwogICAgICAgICAgICAgICAgIG5ld1RyYWNrID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CkBAIC0yOTEwLDE4ICsyOTEwLDE4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6c2V0Q3VycmVudFRleHRUcmFjayhJbmJhbmRUZXh0VHJhY2tQcml2CiAgICAg
aWYgKHRyYWNrKSB7CiAgICAgICAgIGlmICh0cmFjay0+dGV4dFRyYWNrQ2F0ZWdvcnkoKSA9PSBJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpMZWdhY3lDbG9zZWRDYXB0aW9uKQogICAgICAgICAg
ICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICAgICAgICAgIFttX2F2
UGxheWVyLmdldCgpIHNldENsb3NlZENhcHRpb25EaXNwbGF5RW5hYmxlZDpZRVNdOworICAgICAg
ICAgICAgW21fYXZQbGF5ZXIgc2V0Q2xvc2VkQ2FwdGlvbkRpc3BsYXlFbmFibGVkOllFU107CiAg
ICAgICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICNpZiBFTkFCTEUo
QVZGX0NBUFRJT05TKQogICAgICAgICBlbHNlIGlmICh0cmFjay0+dGV4dFRyYWNrQ2F0ZWdvcnko
KSA9PSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpPdXRPZkJhbmQpCi0gICAgICAgICAgICBb
bV9hdlBsYXllckl0ZW0uZ2V0KCkgc2VsZWN0TWVkaWFPcHRpb246c3RhdGljX2Nhc3Q8T3V0T2ZC
YW5kVGV4dFRyYWNrUHJpdmF0ZUFWRio+KHRyYWNrKS0+bWVkaWFTZWxlY3Rpb25PcHRpb24oKSBp
bk1lZGlhU2VsZWN0aW9uR3JvdXA6c2FmZU1lZGlhU2VsZWN0aW9uR3JvdXBGb3JMZWdpYmxlTWVk
aWEoKV07CisgICAgICAgICAgICBbbV9hdlBsYXllckl0ZW0gc2VsZWN0TWVkaWFPcHRpb246c3Rh
dGljX2Nhc3Q8T3V0T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRio+KHRyYWNrKS0+bWVkaWFTZWxl
Y3Rpb25PcHRpb24oKSBpbk1lZGlhU2VsZWN0aW9uR3JvdXA6c2FmZU1lZGlhU2VsZWN0aW9uR3Jv
dXBGb3JMZWdpYmxlTWVkaWEoKV07CiAjZW5kaWYKICAgICAgICAgZWxzZQotICAgICAgICAgICAg
W21fYXZQbGF5ZXJJdGVtLmdldCgpIHNlbGVjdE1lZGlhT3B0aW9uOnN0YXRpY19jYXN0PEluYmFu
ZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDKj4odHJhY2spLT5tZWRpYVNlbGVjdGlvbk9wdGlvbigp
IGluTWVkaWFTZWxlY3Rpb25Hcm91cDpzYWZlTWVkaWFTZWxlY3Rpb25Hcm91cEZvckxlZ2libGVN
ZWRpYSgpXTsKKyAgICAgICAgICAgIFttX2F2UGxheWVySXRlbSBzZWxlY3RNZWRpYU9wdGlvbjpz
dGF0aWNfY2FzdDxJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQyo+KHRyYWNrKS0+bWVkaWFT
ZWxlY3Rpb25PcHRpb24oKSBpbk1lZGlhU2VsZWN0aW9uR3JvdXA6c2FmZU1lZGlhU2VsZWN0aW9u
R3JvdXBGb3JMZWdpYmxlTWVkaWEoKV07CiAgICAgfSBlbHNlIHsKLSAgICAgICAgW21fYXZQbGF5
ZXJJdGVtLmdldCgpIHNlbGVjdE1lZGlhT3B0aW9uOjAgaW5NZWRpYVNlbGVjdGlvbkdyb3VwOnNh
ZmVNZWRpYVNlbGVjdGlvbkdyb3VwRm9yTGVnaWJsZU1lZGlhKCldOworICAgICAgICBbbV9hdlBs
YXllckl0ZW0gc2VsZWN0TWVkaWFPcHRpb246MCBpbk1lZGlhU2VsZWN0aW9uR3JvdXA6c2FmZU1l
ZGlhU2VsZWN0aW9uR3JvdXBGb3JMZWdpYmxlTWVkaWEoKV07CiAgICAgICAgIEFMTE9XX0RFUFJF
Q0FURURfREVDTEFSQVRJT05TX0JFR0lOCi0gICAgICAgIFttX2F2UGxheWVyLmdldCgpIHNldENs
b3NlZENhcHRpb25EaXNwbGF5RW5hYmxlZDpOT107CisgICAgICAgIFttX2F2UGxheWVyIHNldENs
b3NlZENhcHRpb25EaXNwbGF5RW5hYmxlZDpOT107CiAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0VORAogICAgIH0KIApAQCAtMjkzNiw5ICsyOTM2LDkgQEAgU3RyaW5nIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Omxhbmd1YWdlT2ZQcmltYXJ5QXVkaW9U
cmFjaygpIGNvbnN0CiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCiAgICAgLy8gSWYg
QVZGb3VuZGF0aW9uIGhhcyBhbiBhdWRpYmxlIGdyb3VwLCByZXR1cm4gdGhlIGxhbmd1YWdlIG9m
IHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgYXVkaWJsZSBvcHRpb24uCi0gICAgQVZNZWRpYVNlbGVj
dGlvbkdyb3VwICphdWRpYmxlR3JvdXAgPSBbbV9hdkFzc2V0LmdldCgpIG1lZGlhU2VsZWN0aW9u
R3JvdXBGb3JNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY0F1ZGlibGVd
OworICAgIEFWTWVkaWFTZWxlY3Rpb25Hcm91cCAqYXVkaWJsZUdyb3VwID0gW21fYXZBc3NldCBt
ZWRpYVNlbGVjdGlvbkdyb3VwRm9yTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFjdGVy
aXN0aWNBdWRpYmxlXTsKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgot
ICAgIEFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKmN1cnJlbnRseVNlbGVjdGVkQXVkaWJsZU9wdGlv
biA9IFttX2F2UGxheWVySXRlbS5nZXQoKSBzZWxlY3RlZE1lZGlhT3B0aW9uSW5NZWRpYVNlbGVj
dGlvbkdyb3VwOmF1ZGlibGVHcm91cF07CisgICAgQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqY3Vy
cmVudGx5U2VsZWN0ZWRBdWRpYmxlT3B0aW9uID0gW21fYXZQbGF5ZXJJdGVtIHNlbGVjdGVkTWVk
aWFPcHRpb25Jbk1lZGlhU2VsZWN0aW9uR3JvdXA6YXVkaWJsZUdyb3VwXTsKICAgICBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICBpZiAoY3VycmVudGx5U2VsZWN0ZWRBdWRp
YmxlT3B0aW9uKSB7CiAgICAgICAgIG1fbGFuZ3VhZ2VPZlByaW1hcnlBdWRpb1RyYWNrID0gW1tj
dXJyZW50bHlTZWxlY3RlZEF1ZGlibGVPcHRpb24gbG9jYWxlXSBsb2NhbGVJZGVudGlmaWVyXTsK
QEAgLTI5NDksNyArMjk0OSw3IEBAIFN0cmluZyBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpsYW5ndWFnZU9mUHJpbWFyeUF1ZGlvVHJhY2soKSBjb25zdAogCiAgICAgLy8gQVZG
b3VuZGF0aW9uIHN5bnRoZXNpemVzIGFuIGF1ZGlibGUgZ3JvdXAgd2hlbiB0aGVyZSBpcyBvbmx5
IG9uZSB1bmdyb3VwZWQgYXVkaW8gdHJhY2sgaWYgdGhlcmUgaXMgYWxzbyBhIGxlZ2libGUgZ3Jv
dXAgKG9uZSBvcgogICAgIC8vIG1vcmUgaW4tYmFuZCB0ZXh0IHRyYWNrcykuIEl0IGRvZXNuJ3Qg
a25vdyBhYm91dCBvdXQtb2YtYmFuZCB0cmFja3MsIHNvIGlmIHRoZXJlIGlzIGEgc2luZ2xlIGF1
ZGlvIHRyYWNrIHJldHVybiBpdHMgbGFuZ3VhZ2UuCi0gICAgTlNBcnJheSAqdHJhY2tzID0gW21f
YXZBc3NldC5nZXQoKSB0cmFja3NXaXRoTWVkaWFUeXBlOkFWTWVkaWFUeXBlQXVkaW9dOworICAg
IE5TQXJyYXkgKnRyYWNrcyA9IFttX2F2QXNzZXQgdHJhY2tzV2l0aE1lZGlhVHlwZTpBVk1lZGlh
VHlwZUF1ZGlvXTsKICAgICBpZiAoIXRyYWNrcyB8fCBbdHJhY2tzIGNvdW50XSAhPSAxKSB7CiAg
ICAgICAgIG1fbGFuZ3VhZ2VPZlByaW1hcnlBdWRpb1RyYWNrID0gZW1wdHlTdHJpbmcoKTsKICAg
ICAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgdHJhY2tzID8gW3RyYWNrcyBjb3VudF0gOiAw
LCAiIGF1ZGlvIHRyYWNrcywgcmV0dXJuaW5nIGVtcHR5Iik7CkBAIC0zMTEyLDcgKzMxMTIsNyBA
QCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OndpcmVsZXNzVmlkZW9Q
bGF5YmFja0Rpc2FibGVkKCkgY29uc3QKICAgICBpZiAoIW1fYXZQbGF5ZXIpCiAgICAgICAgIHJl
dHVybiAhbV9hbGxvd3NXaXJlbGVzc1ZpZGVvUGxheWJhY2s7CiAKLSAgICBtX2FsbG93c1dpcmVs
ZXNzVmlkZW9QbGF5YmFjayA9IFttX2F2UGxheWVyLmdldCgpIGFsbG93c0V4dGVybmFsUGxheWJh
Y2tdOworICAgIG1fYWxsb3dzV2lyZWxlc3NWaWRlb1BsYXliYWNrID0gW21fYXZQbGF5ZXIgYWxs
b3dzRXh0ZXJuYWxQbGF5YmFja107CiAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgIW1fYWxs
b3dzV2lyZWxlc3NWaWRlb1BsYXliYWNrKTsKIAogICAgIHJldHVybiAhbV9hbGxvd3NXaXJlbGVz
c1ZpZGVvUGxheWJhY2s7CkBAIC0zMTI2LDcgKzMxMjYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKGJv
b2wgZAogICAgICAgICByZXR1cm47CiAKICAgICBzZXREZWxheUNhbGxiYWNrcyh0cnVlKTsKLSAg
ICBbbV9hdlBsYXllci5nZXQoKSBzZXRBbGxvd3NFeHRlcm5hbFBsYXliYWNrOiFkaXNhYmxlZF07
CisgICAgW21fYXZQbGF5ZXIgc2V0QWxsb3dzRXh0ZXJuYWxQbGF5YmFjazohZGlzYWJsZWRdOwog
ICAgIHNldERlbGF5Q2FsbGJhY2tzKGZhbHNlKTsKIH0KIApAQCAtMzE2Myw3ICszMTYzLDcgQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRTaG91bGRQbGF5VG9Q
bGF5YmFja1RhcmdldChib29sIHNob3UKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBS
ZXRhaW5QdHI8QVZPdXRwdXRDb250ZXh0PiBjdXJyZW50Q29udGV4dCA9IG1fYXZQbGF5ZXIuZ2V0
KCkub3V0cHV0Q29udGV4dDsKLSAgICAgICAgaWYgKCghbmV3Q29udGV4dCAmJiAhY3VycmVudENv
bnRleHQuZ2V0KCkpIHx8IFtjdXJyZW50Q29udGV4dC5nZXQoKSBpc0VxdWFsOm5ld0NvbnRleHRd
KQorICAgICAgICBpZiAoKCFuZXdDb250ZXh0ICYmICFjdXJyZW50Q29udGV4dC5nZXQoKSkgfHwg
W2N1cnJlbnRDb250ZXh0IGlzRXF1YWw6bmV3Q29udGV4dF0pCiAgICAgICAgICAgICByZXR1cm47
CiAKICAgICAgICAgc2V0RGVsYXlDYWxsYmFja3ModHJ1ZSk7CkBAIC0zMzc5LDcgKzMzNzksNyBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Om1ldGFkYXRhRGlkQXJy
aXZlKGNvbnN0IFJldGFpblB0cjxOU0FycgogewogICAgIG1fY3VycmVudE1ldGFEYXRhID0gbWV0
YWRhdGEgJiYgIVttZXRhZGF0YSBpc0tpbmRPZkNsYXNzOltOU051bGwgY2xhc3NdXSA/IG1ldGFk
YXRhIDogbmlsOwogCi0gICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgImFkZGluZyAiLCBtX2N1
cnJlbnRNZXRhRGF0YSA/IFttX2N1cnJlbnRNZXRhRGF0YS5nZXQoKSBjb3VudF0gOiAwLCAiIGF0
IHRpbWUgIiwgbWVkaWFUaW1lKTsKKyAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAiYWRkaW5n
ICIsIG1fY3VycmVudE1ldGFEYXRhID8gW21fY3VycmVudE1ldGFEYXRhIGNvdW50XSA6IDAsICIg
YXQgdGltZSAiLCBtZWRpYVRpbWUpOwogCiAjaWYgRU5BQkxFKERBVEFDVUVfVkFMVUUpCiAgICAg
aWYgKHNlZWtpbmcoKSkKQEAgLTM4NDEsNyArMzg0MSw3IEBAIC0gKHZvaWQpb2JzZXJ2ZVZhbHVl
Rm9yS2V5UGF0aDprZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3QgY2hhbmdlOihOU0RpY3Rpb25h
cnkKICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXllci0+bG9nZ2VyKCkuZGVidWcocGxheWVy
LT5sb2dDaGFubmVsKCksIGlkZW50aWZpZXIsICJkaWQgY2hhbmdlICciLCBba2V5UGF0aCBVVEY4
U3RyaW5nXSwgIicgdG8gIiwgUEFMOjp0b01lZGlhVGltZShbbmV3VmFsdWUgQ01UaW1lVmFsdWVd
KSk7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAg
UmV0YWluUHRyPE5TU3RyaW5nPiB2YWx1ZVN0cmluZyA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxv
Y10gaW5pdFdpdGhGb3JtYXQ6QCIlQCIsIG5ld1ZhbHVlXSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBwbGF5ZXItPmxvZ2dlcigpLmRlYnVnKHBsYXllci0+bG9nQ2hhbm5lbCgpLCBpZGVudGlm
aWVyLCAiZGlkIGNoYW5nZSAnIiwgW2tleVBhdGggVVRGOFN0cmluZ10sICInIHRvICIsIFt2YWx1
ZVN0cmluZy5nZXQoKSBVVEY4U3RyaW5nXSk7CisgICAgICAgICAgICAgICAgICAgICAgICBwbGF5
ZXItPmxvZ2dlcigpLmRlYnVnKHBsYXllci0+bG9nQ2hhbm5lbCgpLCBpZGVudGlmaWVyLCAiZGlk
IGNoYW5nZSAnIiwgW2tleVBhdGggVVRGOFN0cmluZ10sICInIHRvICIsIFt2YWx1ZVN0cmluZyBV
VEY4U3RyaW5nXSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9IGVs
c2UKICAgICAgICAgICAgICAgICAgICAgcGxheWVyLT5sb2dnZXIoKS5kZWJ1ZyhwbGF5ZXItPmxv
Z0NoYW5uZWwoKSwgaWRlbnRpZmllciwgd2lsbENoYW5nZSA/ICJ3aWxsIiA6ICJkaWQiLCAiIGNo
YW5nZSAnIiwgW2tleVBhdGggVVRGOFN0cmluZ10sICInIik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KaW5kZXggZWIyNDM2NWM3MWE3
YjBhMmRiOWNmOGU1MzRiMjY4ZTc4ODJhOWYxNC4uMThhNGZiYTk4NTI3MThhNDViOWQ1NGIyNmE1
ODNkZTljODRhMDM4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlci5tbQpAQCAtMjg0LDcgKzI4NCw3IEBAIHZvaWQgV2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyOjpzdGFydExvYWRpbmcoKQogICAgIGlmIChtX2RhdGFVUkxNZWRpYUxvYWRl
ciB8fCBtX3Jlc291cmNlTWVkaWFMb2FkZXIgfHwgbV9wbGF0Zm9ybU1lZGlhTG9hZGVyIHx8ICFt
X3BhcmVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTlNVUkxSZXF1ZXN0ICpuc1JlcXVlc3Qg
PSBbbV9hdlJlcXVlc3QuZ2V0KCkgcmVxdWVzdF07CisgICAgTlNVUkxSZXF1ZXN0ICpuc1JlcXVl
c3QgPSBbbV9hdlJlcXVlc3QgcmVxdWVzdF07CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVz
dChuc1JlcXVlc3QpOwogICAgIHJlcXVlc3Quc2V0UHJpb3JpdHkoUmVzb3VyY2VMb2FkUHJpb3Jp
dHk6Okxvdyk7CkBAIC0zMTQsNyArMzE0LDcgQEAgdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2Fk
ZXI6OnN0YXJ0TG9hZGluZygpCiAgICAgfQogCiAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gc3Rh
cnQgbG9hZCBmb3IgbWVkaWEgYXQgdXJsICVzIiwgW1tbbnNSZXF1ZXN0IFVSTF0gYWJzb2x1dGVT
dHJpbmddIFVURjhTdHJpbmddKTsKLSAgICBbbV9hdlJlcXVlc3QuZ2V0KCkgZmluaXNoTG9hZGlu
Z1dpdGhFcnJvcjowXTsKKyAgICBbbV9hdlJlcXVlc3QgZmluaXNoTG9hZGluZ1dpdGhFcnJvcjow
XTsKIH0KIAogdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OnN0b3BMb2FkaW5nKCkKQEAg
LTM0Niw3ICszNDYsNyBAQCB2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6cmVzcG9uc2VS
ZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZQogewogICAgIGludCBzdGF0
dXMgPSByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpOwogICAgIGlmIChzdGF0dXMgJiYgKHN0YXR1
cyA8IDIwMCB8fCBzdGF0dXMgPiAyOTkpKSB7Ci0gICAgICAgIFttX2F2UmVxdWVzdC5nZXQoKSBm
aW5pc2hMb2FkaW5nV2l0aEVycm9yOjBdOworICAgICAgICBbbV9hdlJlcXVlc3QgZmluaXNoTG9h
ZGluZ1dpdGhFcnJvcjowXTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzU0LDcgKzM1
NCw3IEBAIHZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlCiAgICAgaWYgKGNvbnRlbnRSYW5nZS5pc1Zh
bGlkKCkpCiAgICAgICAgIG1fcmVzcG9uc2VPZmZzZXQgPSBzdGF0aWNfY2FzdDxOU1VJbnRlZ2Vy
Pihjb250ZW50UmFuZ2UuZmlyc3RCeXRlUG9zaXRpb24oKSk7CiAKLSAgICBpZiAoQVZBc3NldFJl
c291cmNlTG9hZGluZ0NvbnRlbnRJbmZvcm1hdGlvblJlcXVlc3QqIGNvbnRlbnRJbmZvID0gW21f
YXZSZXF1ZXN0LmdldCgpIGNvbnRlbnRJbmZvcm1hdGlvblJlcXVlc3RdKSB7CisgICAgaWYgKEFW
QXNzZXRSZXNvdXJjZUxvYWRpbmdDb250ZW50SW5mb3JtYXRpb25SZXF1ZXN0KiBjb250ZW50SW5m
byA9IFttX2F2UmVxdWVzdCBjb250ZW50SW5mb3JtYXRpb25SZXF1ZXN0XSkgewogICAgICAgICBT
dHJpbmcgdXRpID0gVVRJRnJvbU1JTUVUeXBlKHJlc3BvbnNlLm1pbWVUeXBlKCkpOwogCiAgICAg
ICAgIFtjb250ZW50SW5mbyBzZXRDb250ZW50VHlwZTp1dGldOwpAQCAtMzY2LDcgKzM2Niw3IEBA
IHZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlCiAgICAgICAgICAgICBbY29udGVudEluZm8gc2V0RW50
aXJlTGVuZ3RoQXZhaWxhYmxlT25EZW1hbmQ6WUVTXTsKIAogICAgICAgICBpZiAoIVttX2F2UmVx
dWVzdCBkYXRhUmVxdWVzdF0pIHsKLSAgICAgICAgICAgIFttX2F2UmVxdWVzdC5nZXQoKSBmaW5p
c2hMb2FkaW5nXTsKKyAgICAgICAgICAgIFttX2F2UmVxdWVzdCBmaW5pc2hMb2FkaW5nXTsKICAg
ICAgICAgICAgIHN0b3BMb2FkaW5nKCk7CiAgICAgICAgIH0KICAgICB9CkBAIC0zNzYsMTYgKzM3
NiwxNiBAQCB2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bG9hZEZhaWxlZChjb25zdCBS
ZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKICAgICAvLyA8cmRhcjovL3Byb2JsZW0vMTM5ODc0MTc+
IFNldCB0aGUgY29udGVudFR5cGUgb2YgdGhlIGNvbnRlbnRJbmZvcm1hdGlvblJlcXVlc3QgdG8g
YW4gZW1wdHkKICAgICAvLyBzdHJpbmcgdG8gdHJpZ2dlciBBVkFzc2V0J3MgcGxheWFibGUgdmFs
dWUgdG8gY29tcGxldGUgbG9hZGluZy4KLSAgICBpZiAoW21fYXZSZXF1ZXN0LmdldCgpIGNvbnRl
bnRJbmZvcm1hdGlvblJlcXVlc3RdICYmICFbW21fYXZSZXF1ZXN0LmdldCgpIGNvbnRlbnRJbmZv
cm1hdGlvblJlcXVlc3RdIGNvbnRlbnRUeXBlXSkKLSAgICAgICAgW1ttX2F2UmVxdWVzdC5nZXQo
KSBjb250ZW50SW5mb3JtYXRpb25SZXF1ZXN0XSBzZXRDb250ZW50VHlwZTpAIiJdOworICAgIGlm
IChbbV9hdlJlcXVlc3QgY29udGVudEluZm9ybWF0aW9uUmVxdWVzdF0gJiYgIVtbbV9hdlJlcXVl
c3QgY29udGVudEluZm9ybWF0aW9uUmVxdWVzdF0gY29udGVudFR5cGVdKQorICAgICAgICBbW21f
YXZSZXF1ZXN0IGNvbnRlbnRJbmZvcm1hdGlvblJlcXVlc3RdIHNldENvbnRlbnRUeXBlOkAiIl07
CiAKLSAgICBbbV9hdlJlcXVlc3QuZ2V0KCkgZmluaXNoTG9hZGluZ1dpdGhFcnJvcjplcnJvci5u
c0Vycm9yKCldOworICAgIFttX2F2UmVxdWVzdCBmaW5pc2hMb2FkaW5nV2l0aEVycm9yOmVycm9y
Lm5zRXJyb3IoKV07CiAgICAgc3RvcExvYWRpbmcoKTsKIH0KIAogdm9pZCBXZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXI6OmxvYWRGaW5pc2hlZCgpCiB7Ci0gICAgW21fYXZSZXF1ZXN0LmdldCgpIGZp
bmlzaExvYWRpbmddOworICAgIFttX2F2UmVxdWVzdCBmaW5pc2hMb2FkaW5nXTsKICAgICBzdG9w
TG9hZGluZygpOwogfQogCkBAIC00MzAsNyArNDMwLDcgQEAgdm9pZCBXZWJDb3JlQVZGUmVzb3Vy
Y2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEp
CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChkYXRhUmVxdWVzdC5jdXJyZW50T2Zmc2V0ICsg
ZGF0YVJlcXVlc3QucmVxdWVzdGVkTGVuZ3RoID49IGRhdGFSZXF1ZXN0LnJlcXVlc3RlZE9mZnNl
dCkgewotICAgICAgICBbbV9hdlJlcXVlc3QuZ2V0KCkgZmluaXNoTG9hZGluZ107CisgICAgICAg
IFttX2F2UmVxdWVzdCBmaW5pc2hMb2FkaW5nXTsKICAgICAgICAgc3RvcExvYWRpbmcoKTsKICAg
ICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5tbQppbmRleCA0
YTU1NTMxNjJhOTYzYWJhNjg4MjYzNTU0ZDE3ZDBlNmZhZDBiMDQ2Li45Y2Q3MDcyMjVlYjZhM2Zm
NDBlMTE0NGEzY2VkNWY5ZTBlYzY0ODhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1RleHRUcmFja1JlcHJlc2Vu
dGF0aW9uQ29jb2EubW0KQEAgLTExNywzNSArMTE3LDM1IEBAIFRleHRUcmFja1JlcHJlc2VudGF0
aW9uQ29jb2E6OlRleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EoVGV4dFRyYWNrUmVwcmVzZW50
YXRpCiAgICAgLCBtX2xheWVyKGFkb3B0TlMoW1tDQUxheWVyIGFsbG9jXSBpbml0XSkpCiAgICAg
LCBtX2RlbGVnYXRlKGFkb3B0TlMoW1tXZWJDb3JlVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2Nv
YUhlbHBlciBhbGxvY10gaW5pdFdpdGhQYXJlbnQ6dGhpc10pKQogewotICAgIFttX2xheWVyLmdl
dCgpIHNldERlbGVnYXRlOm1fZGVsZWdhdGUuZ2V0KCldOwotICAgIFttX2xheWVyLmdldCgpIHNl
dENvbnRlbnRzR3Jhdml0eTprQ0FHcmF2aXR5Qm90dG9tXTsKKyAgICBbbV9sYXllciBzZXREZWxl
Z2F0ZTptX2RlbGVnYXRlLmdldCgpXTsKKyAgICBbbV9sYXllciBzZXRDb250ZW50c0dyYXZpdHk6
a0NBR3Jhdml0eUJvdHRvbV07CiB9CiAKIFRleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2E6On5U
ZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hKCkKIHsKLSAgICBbbV9sYXllci5nZXQoKSBzZXRE
ZWxlZ2F0ZTpuaWxdOwotICAgIFttX2RlbGVnYXRlLmdldCgpIHNldFBhcmVudDpudWxscHRyXTsK
KyAgICBbbV9sYXllciBzZXREZWxlZ2F0ZTpuaWxdOworICAgIFttX2RlbGVnYXRlIHNldFBhcmVu
dDpudWxscHRyXTsKIH0KIAogdm9pZCBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hOjp1cGRh
dGUoKQogewogICAgIGlmIChhdXRvIHJlcHJlc2VudGF0aW9uID0gbV9jbGllbnQuY3JlYXRlVGV4
dFRyYWNrUmVwcmVzZW50YXRpb25JbWFnZSgpKQotICAgICAgICBbbV9sYXllci5nZXQoKSBzZXRD
b250ZW50czooX19icmlkZ2UgaWQpcmVwcmVzZW50YXRpb24tPm5hdGl2ZUltYWdlKCktPnBsYXRm
b3JtSW1hZ2UoKS5nZXQoKV07CisgICAgICAgIFttX2xheWVyIHNldENvbnRlbnRzOihfX2JyaWRn
ZSBpZClyZXByZXNlbnRhdGlvbi0+bmF0aXZlSW1hZ2UoKS0+cGxhdGZvcm1JbWFnZSgpLmdldCgp
XTsKIH0KIAogdm9pZCBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hOjpzZXRDb250ZW50U2Nh
bGUoZmxvYXQgc2NhbGUpCiB7Ci0gICAgW21fbGF5ZXIuZ2V0KCkgc2V0Q29udGVudHNTY2FsZTpz
Y2FsZV07CisgICAgW21fbGF5ZXIgc2V0Q29udGVudHNTY2FsZTpzY2FsZV07CiB9CiAKIHZvaWQg
VGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYTo6c2V0SGlkZGVuKGJvb2wgaGlkZGVuKSBjb25z
dAogewotICAgIFttX2xheWVyLmdldCgpIHNldEhpZGRlbjpoaWRkZW5dOworICAgIFttX2xheWVy
IHNldEhpZGRlbjpoaWRkZW5dOwogfQogCiBJbnRSZWN0IFRleHRUcmFja1JlcHJlc2VudGF0aW9u
Q29jb2E6OmJvdW5kcygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGVuY2xvc2luZ0ludFJlY3QoRmxv
YXRSZWN0KFttX2xheWVyLmdldCgpIGJvdW5kc10pKTsKKyAgICByZXR1cm4gZW5jbG9zaW5nSW50
UmVjdChGbG9hdFJlY3QoW21fbGF5ZXIgYm91bmRzXSkpOwogfQogCiB2b2lkIFRleHRUcmFja1Jl
cHJlc2VudGF0aW9uQ29jb2E6OmJvdW5kc0NoYW5nZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9EcmFnSW1hZ2VJT1MubW0KaW5kZXggY2U4YzdkNDgxNzkwYThhNjVkZWIxZmFiYjVi
MDExNWEzNjM3Yzg5Zi4uZWEyZTg2MTM0MzVhYWRmYjhhMzg4YzBjNmU1ZmVhZTVhYmYxYjQ3ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvRHJhZ0ltYWdlSU9TLm1tCkBAIC02OSw3
ICs2OSw3IEBAIERyYWdJbWFnZVJlZiBzY2FsZURyYWdJbWFnZShEcmFnSW1hZ2VSZWYgaW1hZ2Us
IEZsb2F0U2l6ZSBzY2FsZSkKICAgICBDR1JlY3QgaW1hZ2VSZWN0ID0geyBDR1BvaW50WmVybywg
aW1hZ2VTaXplIH07CiAKICAgICBSZXRhaW5QdHI8VUlHcmFwaGljc0ltYWdlUmVuZGVyZXI+IHJl
bmRlciA9IGFkb3B0TlMoW1BBTDo6YWxsb2NVSUdyYXBoaWNzSW1hZ2VSZW5kZXJlckluc3RhbmNl
KCkgaW5pdFdpdGhTaXplOmltYWdlU2l6ZV0pOwotICAgIFVJSW1hZ2UgKmltYWdlQ29weSA9IFty
ZW5kZXIuZ2V0KCkgaW1hZ2VXaXRoQWN0aW9uczpeKFVJR3JhcGhpY3NJbWFnZVJlbmRlcmVyQ29u
dGV4dCAqcmVuZGVyZXJDb250ZXh0KSB7CisgICAgVUlJbWFnZSAqaW1hZ2VDb3B5ID0gW3JlbmRl
ciBpbWFnZVdpdGhBY3Rpb25zOl4oVUlHcmFwaGljc0ltYWdlUmVuZGVyZXJDb250ZXh0ICpyZW5k
ZXJlckNvbnRleHQpIHsKICAgICAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSByZW5kZXJlckNv
bnRleHQuQ0dDb250ZXh0OwogICAgICAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY29udGV4dCwg
MCwgaW1hZ2VTaXplLmhlaWdodCk7CiAgICAgICAgIENHQ29udGV4dFNjYWxlQ1RNKGNvbnRleHQs
IDEsIC0xKTsKQEAgLTk0LDcgKzk0LDcgQEAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZy
b21JbWFnZShJbWFnZSogaW1hZ2UsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24KICAgICB9
CiAKICAgICBSZXRhaW5QdHI8VUlHcmFwaGljc0ltYWdlUmVuZGVyZXI+IHJlbmRlciA9IGFkb3B0
TlMoW1BBTDo6YWxsb2NVSUdyYXBoaWNzSW1hZ2VSZW5kZXJlckluc3RhbmNlKCkgaW5pdFdpdGhT
aXplOmltYWdlU2l6ZV0pOwotICAgIFVJSW1hZ2UgKmltYWdlQ29weSA9IFtyZW5kZXIuZ2V0KCkg
aW1hZ2VXaXRoQWN0aW9uczpeKFVJR3JhcGhpY3NJbWFnZVJlbmRlcmVyQ29udGV4dCAqcmVuZGVy
ZXJDb250ZXh0KSB7CisgICAgVUlJbWFnZSAqaW1hZ2VDb3B5ID0gW3JlbmRlciBpbWFnZVdpdGhB
Y3Rpb25zOl4oVUlHcmFwaGljc0ltYWdlUmVuZGVyZXJDb250ZXh0ICpyZW5kZXJlckNvbnRleHQp
IHsKICAgICAgICAgR3JhcGhpY3NDb250ZXh0Q0cgY29udGV4dChyZW5kZXJlckNvbnRleHQuQ0dD
b250ZXh0KTsKICAgICAgICAgY29udGV4dC50cmFuc2xhdGUoMCwgaW1hZ2VTaXplLmhlaWdodCk7
CiAgICAgICAgIGNvbnRleHQuc2NhbGUoeyBhZGp1c3RlZEltYWdlU2NhbGUsIC1hZGp1c3RlZElt
YWdlU2NhbGUgfSk7CkBAIC0yMzgsNyArMjM4LDcgQEAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJ
bWFnZUZvclJhbmdlKEZyYW1lJiBmcmFtZSwgY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlLCBib28K
IAogICAgIGF1dG8mIGltYWdlID0gKnRleHRJbmRpY2F0b3ItPmNvbnRlbnRJbWFnZSgpOwogICAg
IGF1dG8gcmVuZGVyID0gYWRvcHROUyhbUEFMOjphbGxvY1VJR3JhcGhpY3NJbWFnZVJlbmRlcmVy
SW5zdGFuY2UoKSBpbml0V2l0aFNpemU6aW1hZ2Uuc2l6ZSgpXSk7Ci0gICAgVUlJbWFnZSAqZmlu
YWxJbWFnZSA9IFtyZW5kZXIuZ2V0KCkgaW1hZ2VXaXRoQWN0aW9uczpbJmltYWdlXShVSUdyYXBo
aWNzSW1hZ2VSZW5kZXJlckNvbnRleHQgKnJlbmRlcmVyQ29udGV4dCkgeworICAgIFVJSW1hZ2Ug
KmZpbmFsSW1hZ2UgPSBbcmVuZGVyIGltYWdlV2l0aEFjdGlvbnM6WyZpbWFnZV0oVUlHcmFwaGlj
c0ltYWdlUmVuZGVyZXJDb250ZXh0ICpyZW5kZXJlckNvbnRleHQpIHsKICAgICAgICAgR3JhcGhp
Y3NDb250ZXh0Q0cgY29udGV4dChyZW5kZXJlckNvbnRleHQuQ0dDb250ZXh0KTsKICAgICAgICAg
Y29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UsIEZsb2F0UG9pbnQoKSk7CiAgICAgfV07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbQppbmRleCA5MmRlMWRj
NWY2MDU2ZDYxYTliMzJmMjYyOTdkYjdkYWVhZjQzODU2Li5jNTZhMWE3ZWEwZTU4YzFiYmUxNTYx
YWM3NTUxYjA2OTAzNmE0MzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvTGVnYWN5VGlsZUNhY2hlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9M
ZWdhY3lUaWxlQ2FjaGUubW0KQEAgLTc1LDcgKzc1LDcgQEAgTGVnYWN5VGlsZUNhY2hlOjpMZWdh
Y3lUaWxlQ2FjaGUoV0FLV2luZG93KiB3aW5kb3cpCiAKIExlZ2FjeVRpbGVDYWNoZTo6fkxlZ2Fj
eVRpbGVDYWNoZSgpCiB7Ci0gICAgW21fdG9tYnN0b25lLmdldCgpIHNldERlYWQ6dHJ1ZV07Cisg
ICAgW21fdG9tYnN0b25lIHNldERlYWQ6dHJ1ZV07CiB9CiAKIENHRmxvYXQgTGVnYWN5VGlsZUNh
Y2hlOjpzY3JlZW5TY2FsZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvTGVnYWN5VGlsZUxheWVyUG9vbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9MZWdhY3lUaWxlTGF5ZXJQb29sLm1tCmluZGV4IGI0ZmQ3ODhkOTNjNTk3ZTUyMjQ5MDlj
ODI5MzdiOTk3Y2ZiZGU1NTYuLmYyMzBlMzllOWVlOTUwNjAyZDQ5YTU1NmZlNDVmNTZmOGQxOWRm
YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlTGF5
ZXJQb29sLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlTGF5
ZXJQb29sLm1tCkBAIC03Miw4ICs3Miw4IEBAIExlZ2FjeVRpbGVMYXllclBvb2w6OkxheWVyTGlz
dCYgTGVnYWN5VGlsZUxheWVyUG9vbDo6bGlzdE9mTGF5ZXJzV2l0aFNpemUoY29uc3QKIAogdm9p
ZCBMZWdhY3lUaWxlTGF5ZXJQb29sOjphZGRMYXllcihjb25zdCBSZXRhaW5QdHI8TGVnYWN5VGls
ZUxheWVyPiYgbGF5ZXIpCiB7Ci0gICAgSW50U2l6ZSBsYXllclNpemUoW2xheWVyLmdldCgpIGZy
YW1lXS5zaXplKTsKLSAgICBsYXllclNpemUuc2NhbGUoW2xheWVyLmdldCgpIGNvbnRlbnRzU2Nh
bGVdKTsKKyAgICBJbnRTaXplIGxheWVyU2l6ZShbbGF5ZXIgZnJhbWVdLnNpemUpOworICAgIGxh
eWVyU2l6ZS5zY2FsZShbbGF5ZXIgY29udGVudHNTY2FsZV0pOwogICAgIGlmICghY2FuUmV1c2VM
YXllcldpdGhTaXplKGxheWVyU2l6ZSkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KaW5kZXgg
NjQwYTQ1MjZjNTdhZWVlMWY5MTJkZTdmNTYzZTYzNzMxMjZmMTNmZS4uZGNjYTc2OTE0OTUxZmI4
ODg1MWQwODJiYzQ4NzEyOWQ5NGE4ZjBlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCkBAIC03NTgsNyArNzU4LDcgQEAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVf
dCBpbmRleCwgY29uc3QgU3RyaW5nJgogCiAgICAgaWYgKCFbcGFzdGVib2FyZEl0ZW0gY291bnRd
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoW3Bhc3RlYm9hcmRJdGVtLmdldCgpIG9iamVjdEF0SW5kZXg6MF0pOworICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShbcGFzdGVib2FyZEl0ZW0gb2JqZWN0QXRJbmRleDowXSk7CiB9
CiAKIFN0cmluZyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcoc2l6ZV90IGluZGV4LCBj
b25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcklPUy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVySU9TLm1tCmluZGV4IDE3NTk2
Mjc5MGYyNmQ1MjVmMDJlNmIxNDcwMGJlMWUzMGY2NTIxODcuLjU4NTgyNDQ2YmI0NjFhMmQ0Njhh
MDQ1NWZjOTM3Y2YyOTYxMDg3YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVySU9TLm1tCkBAIC0yODQsMTIg
KzI4NCwxMiBAQCB2b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OmluaXRpYWxpemVWb2lj
ZUxpc3QoKQogCiB2b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OnBhdXNlKCkKIHsKLSAg
ICBbbV9wbGF0Zm9ybVNwZWVjaFdyYXBwZXIuZ2V0KCkgcGF1c2VdOworICAgIFttX3BsYXRmb3Jt
U3BlZWNoV3JhcHBlciBwYXVzZV07CiB9CiAKIHZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXpl
cjo6cmVzdW1lKCkKIHsKLSAgICBbbV9wbGF0Zm9ybVNwZWVjaFdyYXBwZXIuZ2V0KCkgcmVzdW1l
XTsKKyAgICBbbV9wbGF0Zm9ybVNwZWVjaFdyYXBwZXIgcmVzdW1lXTsKIH0KIAogdm9pZCBQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpzcGVhayhSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2U+JiYgdXR0ZXJhbmNlKQpAQCAtMjk3LDE3ICsyOTcsMTcgQEAgdm9pZCBQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpzcGVhayhSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2U+JiYKICAgICBpZiAoIW1fcGxhdGZvcm1TcGVlY2hXcmFwcGVyKQogICAgICAg
ICBtX3BsYXRmb3JtU3BlZWNoV3JhcHBlciA9IGFkb3B0TlMoW1tXZWJTcGVlY2hTeW50aGVzaXNX
cmFwcGVyIGFsbG9jXSBpbml0V2l0aFNwZWVjaFN5bnRoZXNpemVyOnRoaXNdKTsKIAotICAgIFtt
X3BsYXRmb3JtU3BlZWNoV3JhcHBlci5nZXQoKSBzcGVha1V0dGVyYW5jZTp1dHRlcmFuY2UuZ2V0
KCldOworICAgIFttX3BsYXRmb3JtU3BlZWNoV3JhcHBlciBzcGVha1V0dGVyYW5jZTp1dHRlcmFu
Y2UuZ2V0KCldOwogfQogCiB2b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OmNhbmNlbCgp
CiB7Ci0gICAgW21fcGxhdGZvcm1TcGVlY2hXcmFwcGVyLmdldCgpIGNhbmNlbF07CisgICAgW21f
cGxhdGZvcm1TcGVlY2hXcmFwcGVyIGNhbmNlbF07CiB9CiAKIHZvaWQgUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXplcjo6cmVzZXRTdGF0ZSgpCiB7Ci0gICAgW21fcGxhdGZvcm1TcGVlY2hXcmFwcGVy
LmdldCgpIGNhbmNlbF07CisgICAgW21fcGxhdGZvcm1TcGVlY2hXcmFwcGVyIGNhbmNlbF07CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQppbmRleCA1
OTgxMzlmZDBhZWEwNjIwNmQ3NGQwYWU3YjIxNjYyN2ZhMDhmMDc5Li5hYTUyMTdmOGEzYWQ0MjM4
ZWI3MzdkMzdhMTFmYjE3MWRkZTk1NzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCkBAIC0z
NjAsNyArMzYwLDcgQEAgLSAodm9pZClzZXRWaWRlb0dyYXZpdHk6KE5TU3RyaW5nICopdmlkZW9H
cmF2aXR5CiAgICAgICAgIHZpZGVvR3Jhdml0eSA9IEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemVB
c3BlY3Q7CiAjZW5kaWYKIAotICAgIGlmIChbX3ZpZGVvR3Jhdml0eS5nZXQoKSBpc0VxdWFsVG9T
dHJpbmc6dmlkZW9HcmF2aXR5XSkKKyAgICBpZiAoW192aWRlb0dyYXZpdHkgaXNFcXVhbFRvU3Ry
aW5nOnZpZGVvR3Jhdml0eV0pCiAgICAgICAgIHJldHVybjsKIAogICAgIF9wcmV2aW91c1ZpZGVv
R3Jhdml0eSA9IF92aWRlb0dyYXZpdHk7CkBAIC02NDcsNyArNjQ3LDcgQEAgLSAodm9pZCllbnRl
ckZ1bGxTY3JlZW5BbmltYXRlZDooQk9PTClhbmltYXRlZCBjb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCAoXikoQk9PTAogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoWUVTLCBuaWwpOwogICAg
IH1dOwogI2Vsc2UKLSAgICBbX2F2UGxheWVyVmlld0NvbnRyb2xsZXIuZ2V0KCkgZW50ZXJGdWxs
U2NyZWVuQW5pbWF0ZWQ6YW5pbWF0ZWQgY29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRs
ZXJdOworICAgIFtfYXZQbGF5ZXJWaWV3Q29udHJvbGxlciBlbnRlckZ1bGxTY3JlZW5BbmltYXRl
ZDphbmltYXRlZCBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07CiAjZW5kaWYK
IH0KIApAQCAtNjYzLDcgKzY2Myw3IEBAIC0gKHZvaWQpZXhpdEZ1bGxTY3JlZW5BbmltYXRlZDoo
Qk9PTClhbmltYXRlZCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCBzCiAgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihZRVMsIG5pbCk7CiAgICAgfV07CiAjZWxzZQotICAgIFtf
YXZQbGF5ZXJWaWV3Q29udHJvbGxlci5nZXQoKSBleGl0RnVsbFNjcmVlbkFuaW1hdGVkOmFuaW1h
dGVkIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyXTsKKyAgICBbX2F2UGxheWVy
Vmlld0NvbnRyb2xsZXIgZXhpdEZ1bGxTY3JlZW5BbmltYXRlZDphbmltYXRlZCBjb21wbGV0aW9u
SGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07CiAjZW5kaWYKIH0KIApAQCAtNzA0LDcgKzcwNCw3
IEBAIC0gKHZvaWQpc3RhcnRQaWN0dXJlSW5QaWN0dXJlIE1ZX05PX1JFVFVSTgogI2lmIFBMQVRG
T1JNKFdBVENIT1MpCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAjZWxzZQotICAgIFtfYXZQ
bGF5ZXJWaWV3Q29udHJvbGxlci5nZXQoKSBzdGFydFBpY3R1cmVJblBpY3R1cmVdOworICAgIFtf
YXZQbGF5ZXJWaWV3Q29udHJvbGxlciBzdGFydFBpY3R1cmVJblBpY3R1cmVdOwogI2VuZGlmCiB9
CiAKQEAgLTcxMyw3ICs3MTMsNyBAQCAtICh2b2lkKXN0b3BQaWN0dXJlSW5QaWN0dXJlIE1ZX05P
X1JFVFVSTgogI2lmIFBMQVRGT1JNKFdBVENIT1MpCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAjZWxzZQotICAgIFtfYXZQbGF5ZXJWaWV3Q29udHJvbGxlci5nZXQoKSBzdG9wUGljdHVyZUlu
UGljdHVyZV07CisgICAgW19hdlBsYXllclZpZXdDb250cm9sbGVyIHN0b3BQaWN0dXJlSW5QaWN0
dXJlXTsKICNlbmRpZgogfQogCkBAIC04MDcsNyArODA3LDcgQEAgLSAoQVZQbGF5ZXJWaWV3Q29u
dHJvbGxlciAqKSBhdlBsYXllclZpZXdDb250cm9sbGVyCiAKIC0gKHZvaWQpcmVtb3ZlRnJvbVBh
cmVudFZpZXdDb250cm9sbGVyCiB7Ci0gICAgW19hdlBsYXllclZpZXdDb250cm9sbGVyLmdldCgp
IHJlbW92ZUZyb21QYXJlbnRWaWV3Q29udHJvbGxlcl07CisgICAgW19hdlBsYXllclZpZXdDb250
cm9sbGVyIHJlbW92ZUZyb21QYXJlbnRWaWV3Q29udHJvbGxlcl07CiB9CiBAZW5kCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1t
CmluZGV4IDMwYTZhYTg4YzVjZTgxMDAyYTdiZWYzMmFiYmYwZjU1OWU1YjFmNjMuLjc5MzA4Yjcw
NzhkMjUzNmJkNTU0YTYxNDBmZTFmMjRkYTU2MmY5NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQpAQCAtNjUsMTIgKzY1
LDEyIEBAIFBsYXRmb3JtUGFzdGVib2FyZDo6UGxhdGZvcm1QYXN0ZWJvYXJkKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpCiAKIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpnZXRUeXBlcyhW
ZWN0b3I8U3RyaW5nPiYgdHlwZXMpCiB7Ci0gICAgdHlwZXMgPSBtYWtlVmVjdG9yPFN0cmluZz4o
W21fcGFzdGVib2FyZC5nZXQoKSB0eXBlc10pOworICAgIHR5cGVzID0gbWFrZVZlY3RvcjxTdHJp
bmc+KFttX3Bhc3RlYm9hcmQgdHlwZXNdKTsKIH0KIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxh
dGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUpCiB7Ci0gICAgTlNEYXRhICpkYXRhID0gW21fcGFzdGVib2FyZC5nZXQoKSBkYXRhRm9yVHlw
ZTpwYXN0ZWJvYXJkVHlwZV07CisgICAgTlNEYXRhICpkYXRhID0gW21fcGFzdGVib2FyZCBkYXRh
Rm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV07CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoYWRvcHROUyhbZGF0YSBj
b3B5XSkuZ2V0KCkpOwpAQCAtMTAwLDcgKzEwMCw3IEBAIGludCBQbGF0Zm9ybVBhc3RlYm9hcmQ6
Om51bWJlck9mRmlsZXMoKSBjb25zdAogCiB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6Z2V0UGF0
aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlKSBjb25zdAogewotICAgIGlkIHBhdGhzID0gW21fcGFzdGVib2FyZC5nZXQo
KSBwcm9wZXJ0eUxpc3RGb3JUeXBlOnBhc3RlYm9hcmRUeXBlXTsKKyAgICBpZCBwYXRocyA9IFtt
X3Bhc3RlYm9hcmQgcHJvcGVydHlMaXN0Rm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV07CiAgICAgaWYg
KFtwYXRocyBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKSB7CiAgICAgICAgIHBhdGhu
YW1lcy5hcHBlbmQoKE5TU3RyaW5nICopcGF0aHMpOwogICAgICAgICByZXR1cm47CkBAIC0yODMs
NyArMjgzLDcgQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3Rl
Ym9hcmRDdXN0b21EYXRhJiBkYXRhKQogCiBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6Y2hh
bmdlQ291bnQoKSBjb25zdAogewotICAgIHJldHVybiBbbV9wYXN0ZWJvYXJkLmdldCgpIGNoYW5n
ZUNvdW50XTsKKyAgICByZXR1cm4gW21fcGFzdGVib2FyZCBjaGFuZ2VDb3VudF07CiB9CiAKIFN0
cmluZyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnBsYXRmb3JtUGFzdGVib2FyZFR5cGVGb3JTYWZlVHlw
ZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgZG9tVHlwZSwgSW5jbHVkZUltYWdl
VHlwZXMgaW5jbHVkZUltYWdlVHlwZXMpCkBAIC0zMTgsMTAgKzMxOCwxMCBAQCBpbnQ2NF90IFBs
YXRmb3JtUGFzdGVib2FyZDo6Y29weShjb25zdCBTdHJpbmcmIGZyb21QYXN0ZWJvYXJkKQogICAg
IE5TUGFzdGVib2FyZCogcGFzdGVib2FyZCA9IFtOU1Bhc3RlYm9hcmQgcGFzdGVib2FyZFdpdGhO
YW1lOmZyb21QYXN0ZWJvYXJkXTsKICAgICBOU0FycmF5KiB0eXBlcyA9IFtwYXN0ZWJvYXJkIHR5
cGVzXTsKIAotICAgIFttX3Bhc3RlYm9hcmQuZ2V0KCkgYWRkVHlwZXM6dHlwZXMgb3duZXI6bmls
XTsKKyAgICBbbV9wYXN0ZWJvYXJkIGFkZFR5cGVzOnR5cGVzIG93bmVyOm5pbF07CiAgICAgZm9y
IChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgW3R5cGVzIGNvdW50XTsgaSsrKSB7CiAgICAgICAgIE5T
U3RyaW5nKiB0eXBlID0gW3R5cGVzIG9iamVjdEF0SW5kZXg6aV07Ci0gICAgICAgIGlmICghW21f
cGFzdGVib2FyZC5nZXQoKSBzZXREYXRhOltwYXN0ZWJvYXJkIGRhdGFGb3JUeXBlOnR5cGVdIGZv
clR5cGU6dHlwZV0pCisgICAgICAgIGlmICghW21fcGFzdGVib2FyZCBzZXREYXRhOltwYXN0ZWJv
YXJkIGRhdGFGb3JUeXBlOnR5cGVdIGZvclR5cGU6dHlwZV0pCiAgICAgICAgICAgICByZXR1cm4g
MDsKICAgICB9CiAgICAgcmV0dXJuIGNoYW5nZUNvdW50KCk7CkBAIC0zMjksNyArMzI5LDcgQEAg
aW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmNvcHkoY29uc3QgU3RyaW5nJiBmcm9tUGFzdGVi
b2FyZCkKIAogaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmFkZFR5cGVzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMpCiB7Ci0gICAgcmV0dXJuIFttX3Bhc3RlYm9hcmQu
Z2V0KCkgYWRkVHlwZXM6Y3JlYXRlTlNBcnJheShwYXN0ZWJvYXJkVHlwZXMpLmdldCgpIG93bmVy
Om5pbF07CisgICAgcmV0dXJuIFttX3Bhc3RlYm9hcmQgYWRkVHlwZXM6Y3JlYXRlTlNBcnJheShw
YXN0ZWJvYXJkVHlwZXMpLmdldCgpIG93bmVyOm5pbF07CiB9CiAKIGludDY0X3QgUGxhdGZvcm1Q
YXN0ZWJvYXJkOjpzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVz
KQpAQCAtMzYwLDcgKzM2MCw3IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRVUkwo
Y29uc3QgUGFzdGVib2FyZFVSTCYgcGFzdGVib2FyZFVSTCkKIAogICAgIE5TQXJyYXkgKnVybFdp
dGhUaXRsZSA9IEBbIEBbIHVybFN0cmluZyBdLCBAWyBwYXN0ZWJvYXJkVVJMLnRpdGxlIF0gXTsK
ICAgICBOU1N0cmluZyAqcGFzdGVib2FyZFR5cGUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aFVURjhT
dHJpbmc6V2ViVVJMc1dpdGhUaXRsZXNQYm9hcmRUeXBlXTsKLSAgICBCT09MIGRpZFdyaXRlRGF0
YSA9IFttX3Bhc3RlYm9hcmQuZ2V0KCkgc2V0UHJvcGVydHlMaXN0OnVybFdpdGhUaXRsZSBmb3JU
eXBlOnBhc3RlYm9hcmRUeXBlXTsKKyAgICBCT09MIGRpZFdyaXRlRGF0YSA9IFttX3Bhc3RlYm9h
cmQgc2V0UHJvcGVydHlMaXN0OnVybFdpdGhUaXRsZSBmb3JUeXBlOnBhc3RlYm9hcmRUeXBlXTsK
ICAgICBpZiAoIWRpZFdyaXRlRGF0YSkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTM4NCwzNSAr
Mzg0LDM1IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRTdHJpbmdGb3JUeXBlKGNv
bnN0IFN0cmluZyYgc3RyaW5nLCBjb25zdCBTdHJpbmcmCiAgICAgaWYgKHBhc3RlYm9hcmRUeXBl
ID09IFN0cmluZyhsZWdhY3lVUkxQYXN0ZWJvYXJkVHlwZSgpKSkgewogICAgICAgICAvLyBXZSBj
YW5ub3QganVzdCB1c2UgLU5TUGFzdGVib2FyZCB3cml0ZU9iamVjdHM6XSwgYmVjYXVzZSAtZGVj
bGFyZVR5cGVzIGhhcyBiZWVuIGFscmVhZHkgY2FsbGVkLCBpbXBsaWNpdGx5IGNyZWF0aW5nIGFu
IGl0ZW0uCiAgICAgICAgIE5TVVJMICp1cmwgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzpzdHJpbmdd
OwotICAgICAgICBpZiAoW1ttX3Bhc3RlYm9hcmQuZ2V0KCkgdHlwZXNdIGNvbnRhaW5zT2JqZWN0
OmxlZ2FjeVVSTFBhc3RlYm9hcmRUeXBlKCldKSB7CisgICAgICAgIGlmIChbW21fcGFzdGVib2Fy
ZCB0eXBlc10gY29udGFpbnNPYmplY3Q6bGVnYWN5VVJMUGFzdGVib2FyZFR5cGUoKV0pIHsKICAg
ICAgICAgICAgIE5TVVJMICpiYXNlID0gW3VybCBiYXNlVVJMXTsKICAgICAgICAgICAgIGlmIChi
YXNlKQotICAgICAgICAgICAgICAgIGRpZFdyaXRlRGF0YSA9IFttX3Bhc3RlYm9hcmQuZ2V0KCkg
c2V0UHJvcGVydHlMaXN0OkBbW3VybCByZWxhdGl2ZVN0cmluZ10sIFtiYXNlIGFic29sdXRlU3Ry
aW5nXV0gZm9yVHlwZTpsZWdhY3lVUkxQYXN0ZWJvYXJkVHlwZSgpXTsKKyAgICAgICAgICAgICAg
ICBkaWRXcml0ZURhdGEgPSBbbV9wYXN0ZWJvYXJkIHNldFByb3BlcnR5TGlzdDpAW1t1cmwgcmVs
YXRpdmVTdHJpbmddLCBbYmFzZSBhYnNvbHV0ZVN0cmluZ11dIGZvclR5cGU6bGVnYWN5VVJMUGFz
dGVib2FyZFR5cGUoKV07CiAgICAgICAgICAgICBlbHNlIGlmICh1cmwpCi0gICAgICAgICAgICAg
ICAgZGlkV3JpdGVEYXRhID0gW21fcGFzdGVib2FyZC5nZXQoKSBzZXRQcm9wZXJ0eUxpc3Q6QFtb
dXJsIGFic29sdXRlU3RyaW5nXSwgQCIiXSBmb3JUeXBlOmxlZ2FjeVVSTFBhc3RlYm9hcmRUeXBl
KCldOworICAgICAgICAgICAgICAgIGRpZFdyaXRlRGF0YSA9IFttX3Bhc3RlYm9hcmQgc2V0UHJv
cGVydHlMaXN0OkBbW3VybCBhYnNvbHV0ZVN0cmluZ10sIEAiIl0gZm9yVHlwZTpsZWdhY3lVUkxQ
YXN0ZWJvYXJkVHlwZSgpXTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBkaWRX
cml0ZURhdGEgPSBbbV9wYXN0ZWJvYXJkLmdldCgpIHNldFByb3BlcnR5TGlzdDpAW0AiIiwgQCIi
XSBmb3JUeXBlOmxlZ2FjeVVSTFBhc3RlYm9hcmRUeXBlKCldOworICAgICAgICAgICAgICAgIGRp
ZFdyaXRlRGF0YSA9IFttX3Bhc3RlYm9hcmQgc2V0UHJvcGVydHlMaXN0OkBbQCIiLCBAIiJdIGZv
clR5cGU6bGVnYWN5VVJMUGFzdGVib2FyZFR5cGUoKV07CiAKICAgICAgICAgICAgIGlmICghZGlk
V3JpdGVEYXRhKQogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAKLUFMTE9X
X0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCi0gICAgICAgIGlmIChbW21fcGFzdGVib2Fy
ZC5nZXQoKSB0eXBlc10gY29udGFpbnNPYmplY3Q6KE5TU3RyaW5nICopa1VUVHlwZVVSTF0pIHsK
LSAgICAgICAgICAgIGRpZFdyaXRlRGF0YSA9IFttX3Bhc3RlYm9hcmQuZ2V0KCkgc2V0U3RyaW5n
Olt1cmwgYWJzb2x1dGVTdHJpbmddIGZvclR5cGU6KE5TU3RyaW5nICopa1VUVHlwZVVSTF07Cisg
ICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCisgICAgICAgIGlmIChb
W21fcGFzdGVib2FyZCB0eXBlc10gY29udGFpbnNPYmplY3Q6KE5TU3RyaW5nICopa1VUVHlwZVVS
TF0pIHsKKyAgICAgICAgICAgIGRpZFdyaXRlRGF0YSA9IFttX3Bhc3RlYm9hcmQgc2V0U3RyaW5n
Olt1cmwgYWJzb2x1dGVTdHJpbmddIGZvclR5cGU6KE5TU3RyaW5nICopa1VUVHlwZVVSTF07CiAg
ICAgICAgICAgICBpZiAoIWRpZFdyaXRlRGF0YSkKICAgICAgICAgICAgICAgICByZXR1cm4gMDsK
ICAgICAgICAgfQogCi0gICAgICAgIGlmIChbW21fcGFzdGVib2FyZC5nZXQoKSB0eXBlc10gY29u
dGFpbnNPYmplY3Q6KE5TU3RyaW5nICopa1VUVHlwZUZpbGVVUkxdICYmIFt1cmwgaXNGaWxlVVJM
XSkgewotICAgICAgICAgICAgZGlkV3JpdGVEYXRhID0gW21fcGFzdGVib2FyZC5nZXQoKSBzZXRT
dHJpbmc6W3VybCBhYnNvbHV0ZVN0cmluZ10gZm9yVHlwZTooTlNTdHJpbmcgKilrVVRUeXBlRmls
ZVVSTF07CisgICAgICAgIGlmIChbW21fcGFzdGVib2FyZCB0eXBlc10gY29udGFpbnNPYmplY3Q6
KE5TU3RyaW5nICopa1VUVHlwZUZpbGVVUkxdICYmIFt1cmwgaXNGaWxlVVJMXSkgeworICAgICAg
ICAgICAgZGlkV3JpdGVEYXRhID0gW21fcGFzdGVib2FyZCBzZXRTdHJpbmc6W3VybCBhYnNvbHV0
ZVN0cmluZ10gZm9yVHlwZTooTlNTdHJpbmcgKilrVVRUeXBlRmlsZVVSTF07CiAgICAgICAgICAg
ICBpZiAoIWRpZFdyaXRlRGF0YSkKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAg
fQotQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECisgICAgICAgIEFMTE9XX0RFUFJF
Q0FURURfREVDTEFSQVRJT05TX0VORAogCiAgICAgfSBlbHNlIHsKLSAgICAgICAgZGlkV3JpdGVE
YXRhID0gW21fcGFzdGVib2FyZC5nZXQoKSBzZXRTdHJpbmc6c3RyaW5nIGZvclR5cGU6cGFzdGVi
b2FyZFR5cGVdOworICAgICAgICBkaWRXcml0ZURhdGEgPSBbbV9wYXN0ZWJvYXJkIHNldFN0cmlu
ZzpzdHJpbmcgZm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV07CiAgICAgICAgIGlmICghZGlkV3JpdGVE
YXRhKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1hYy5tbQpp
bmRleCAzNDNlYTY5NWJiMzlkMDE5NDRkZDE2ODI3MDM3MmVhZDkyOGNmMDgxLi5mYTc0NjVmZjc1
OWJiOWQ2OWQ0YTc5MWFkNzIyYmFlZGMxN2NkZTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1hYy5tbQpA
QCAtMjExLDcgKzIxMSw3IEBAIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OlBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2l6ZXIoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNsCiAKIFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2l6ZXI6On5QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKCkKIHsKLSAgICBbbV9w
bGF0Zm9ybVNwZWVjaFdyYXBwZXIuZ2V0KCkgaW52YWxpZGF0ZV07CisgICAgW21fcGxhdGZvcm1T
cGVlY2hXcmFwcGVyIGludmFsaWRhdGVdOwogfQogCiBzdGF0aWMgUmV0YWluUHRyPENGQXJyYXlS
ZWY+IHNwZWVjaFN5bnRoZXNpc0dldFZvaWNlSWRlbnRpZmllcnMoKQpAQCAtMjU4LDEyICsyNTgs
MTIgQEAgdm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjppbml0aWFsaXplVm9pY2VMaXN0
KCkKIAogdm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpwYXVzZSgpCiB7Ci0gICAgW21f
cGxhdGZvcm1TcGVlY2hXcmFwcGVyLmdldCgpIHBhdXNlXTsKKyAgICBbbV9wbGF0Zm9ybVNwZWVj
aFdyYXBwZXIgcGF1c2VdOwogfQogCiB2b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OnJl
c3VtZSgpCiB7Ci0gICAgW21fcGxhdGZvcm1TcGVlY2hXcmFwcGVyLmdldCgpIHJlc3VtZV07Cisg
ICAgW21fcGxhdGZvcm1TcGVlY2hXcmFwcGVyIHJlc3VtZV07CiB9CiAKIHZvaWQgUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplcjo6c3BlYWsoUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlPiYmIHV0dGVyYW5jZSkKQEAgLTI3MSwxNyArMjcxLDE3IEBAIHZvaWQgUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplcjo6c3BlYWsoUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlPiYmCiAgICAgaWYgKCFtX3BsYXRmb3JtU3BlZWNoV3JhcHBlcikKICAgICAgICAgbV9w
bGF0Zm9ybVNwZWVjaFdyYXBwZXIgPSBhZG9wdE5TKFtbV2ViU3BlZWNoU3ludGhlc2lzV3JhcHBl
ciBhbGxvY10gaW5pdFdpdGhTcGVlY2hTeW50aGVzaXplcjp0aGlzXSk7CiAKLSAgICBbbV9wbGF0
Zm9ybVNwZWVjaFdyYXBwZXIuZ2V0KCkgc3BlYWtVdHRlcmFuY2U6dXR0ZXJhbmNlLmdldCgpXTsK
KyAgICBbbV9wbGF0Zm9ybVNwZWVjaFdyYXBwZXIgc3BlYWtVdHRlcmFuY2U6dXR0ZXJhbmNlLmdl
dCgpXTsKIH0KIAogdm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpjYW5jZWwoKQogewot
ICAgIFttX3BsYXRmb3JtU3BlZWNoV3JhcHBlci5nZXQoKSBjYW5jZWxdOworICAgIFttX3BsYXRm
b3JtU3BlZWNoV3JhcHBlciBjYW5jZWxdOwogfQogCiB2b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhl
c2l6ZXI6OnJlc2V0U3RhdGUoKQogewotICAgIFttX3BsYXRmb3JtU3BlZWNoV3JhcHBlci5nZXQo
KSBjYW5jZWxdOworICAgIFttX3BsYXRmb3JtU3BlZWNoV3JhcHBlciBjYW5jZWxdOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9TZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjLm1tCmluZGV4IDE3NGJlMzFj
ZGNiYTMzMDc5Mzk5YTJhNDlkZDE1NDMzMTdiZDQzYTUuLjlkNWMxODRjMTZkNjcxYWJhOThhYWJl
MDRlZDEzZWJjOGM3NTcxOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9TZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9TZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjLm1tCkBAIC05NSw3ICs5NSw3
IEBAIGJvb2wgU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZU1hYzo6aXNFcXVhbChjb25zdCBTZXJp
YWxpemVkUGxhdGZvcm1EYXRhQ3VlJiBvdGhlCiAgICAgaWYgKCFtX25hdGl2ZVZhbHVlIHx8ICFv
dGhlck9iakMtPm5hdGl2ZVZhbHVlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJl
dHVybiBbbV9uYXRpdmVWYWx1ZS5nZXQoKSBpc0VxdWFsOm90aGVyT2JqQy0+bmF0aXZlVmFsdWUo
KV07CisgICAgcmV0dXJuIFttX25hdGl2ZVZhbHVlIGlzRXF1YWw6b3RoZXJPYmpDLT5uYXRpdmVW
YWx1ZSgpXTsKIH0KIAogU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZU1hYyogdG9TZXJpYWxpemVk
UGxhdGZvcm1EYXRhQ3VlTWFjKFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWUqIHJlcCkKQEAgLTEx
Nyw3ICsxMTcsNyBAQCBOU0FycmF5ICpTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjOjphbGxv
d2VkQ2xhc3Nlc0Zvck5hdGl2ZVZhbHVlcygpCiAKIFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVW
YWx1ZSBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjOjplbmNvZGFibGVWYWx1ZSgpIGNvbnN0
CiB7Ci0gICAgaWYgKFttX25hdGl2ZVZhbHVlLmdldCgpIGlzS2luZE9mQ2xhc3M6UEFMOjpnZXRB
Vk1ldGFkYXRhSXRlbUNsYXNzKCldKQorICAgIGlmIChbbV9uYXRpdmVWYWx1ZSBpc0tpbmRPZkNs
YXNzOlBBTDo6Z2V0QVZNZXRhZGF0YUl0ZW1DbGFzcygpXSkKICAgICAgICAgcmV0dXJuIHsgU2Vy
aWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlOjpQbGF0Zm9ybVR5cGU6Ok9iakMsIE5TRGljdGlv
bmFyeVdpdGhBVk1ldGFkYXRhSXRlbShtX25hdGl2ZVZhbHVlLmdldCgpKS5nZXQoKSB9OwogCiAg
ICAgcmV0dXJuIHsgU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlOjpQbGF0Zm9ybVR5cGU6
Ok9iakMsIG1fbmF0aXZlVmFsdWUuZ2V0KCkgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9XZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5t
bQppbmRleCBjMjJhMDBmZDdmZGZjZGJjNDUxMWQ4ZGYwNmYwMTU1YTYwNmZmMDJkLi4xNzBkMzRi
ZjU2Y2Q3ZGJmMjFiNjUzYTdmNzkxYWM5MWI4NDFkNjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xk
ZXJWaWV3Lm1tCkBAIC02Niw3ICs2Niw3IEBAIC0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClm
cmFtZVJlY3QKICAgICBfZXhpdFdhcm5pbmcuZ2V0KCkudGV4dENvbG9yID0gW05TQ29sb3IgdGVy
dGlhcnlMYWJlbENvbG9yXTsKICAgICBbX2V4aXRXYXJuaW5nIHNpemVUb0ZpdF07CiAKLSAgICBO
U1JlY3Qgd2FybmluZ0ZyYW1lID0gW19leGl0V2FybmluZy5nZXQoKSBmcmFtZV07CisgICAgTlNS
ZWN0IHdhcm5pbmdGcmFtZSA9IFtfZXhpdFdhcm5pbmcgZnJhbWVdOwogICAgIHdhcm5pbmdGcmFt
ZS5vcmlnaW4gPSBOU01ha2VQb2ludCgoZnJhbWVSZWN0LnNpemUud2lkdGggLSB3YXJuaW5nRnJh
bWUuc2l6ZS53aWR0aCkgLyAyLCBmcmFtZVJlY3Quc2l6ZS5oZWlnaHQgLyAyKTsKICAgICBfZXhp
dFdhcm5pbmcuZ2V0KCkuZnJhbWUgPSB3YXJuaW5nRnJhbWU7CiAgICAgW19lZmZlY3RWaWV3IGFk
ZFN1YnZpZXc6X2V4aXRXYXJuaW5nLmdldCgpXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9XZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3Lm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcubW0KaW5kZXgg
NWEyNjE5MWUyOWE4NDY4NmM2ZGNlMWVhZDBhNTUxMjQ1MTBjOTI5MS4uZmU4YTZhYzMwZDU1ZmJm
MGNjYmZlNmJkYzA5MTE0NzA5MzIzZDQxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1dlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcubW0KQEAgLTU4
LDEwICs1OCwxMCBAQCAtIChpZClpbml0V2l0aFRpdGxlOihOU1N0cmluZyopdGl0bGUKICAgICBb
c2VsZiBzZXRUaXRsZVBvc2l0aW9uOk5TTm9UaXRsZV07CiAKICAgICBfdGV4dEZpZWxkID0gYWRv
cHROUyhbW05TVGV4dEZpZWxkIGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3RdKTsKLSAg
ICBbX3RleHRGaWVsZC5nZXQoKSBzZXRFZGl0YWJsZTpOT107Ci0gICAgW190ZXh0RmllbGQuZ2V0
KCkgc2V0U2VsZWN0YWJsZTpOT107Ci0gICAgW190ZXh0RmllbGQuZ2V0KCkgc2V0Qm9yZGVyZWQ6
Tk9dOwotICAgIFtfdGV4dEZpZWxkLmdldCgpIHNldERyYXdzQmFja2dyb3VuZDpOT107CisgICAg
W190ZXh0RmllbGQgc2V0RWRpdGFibGU6Tk9dOworICAgIFtfdGV4dEZpZWxkIHNldFNlbGVjdGFi
bGU6Tk9dOworICAgIFtfdGV4dEZpZWxkIHNldEJvcmRlcmVkOk5PXTsKKyAgICBbX3RleHRGaWVs
ZCBzZXREcmF3c0JhY2tncm91bmQ6Tk9dOwogCiAgICAgTlNGb250KiB0ZXh0Rm9udCA9IFtOU0Zv
bnQgYm9sZFN5c3RlbUZvbnRPZlNpemU6V2FybmluZ1ZpZXdUZXh0U2l6ZV07CiAgICAgTlNDb2xv
ciogdGV4dENvbG9yID0gW05TQ29sb3IgY29sb3JXaXRoQ2FsaWJyYXRlZFdoaXRlOldhcm5pbmdW
aWV3VGV4dFdoaXRlIGFscGhhOldhcm5pbmdWaWV3VGV4dEFscGhhXTsKQEAgLTcwLDkgKzcwLDkg
QEAgLSAoaWQpaW5pdFdpdGhUaXRsZTooTlNTdHJpbmcqKXRpdGxlCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRDb2xvciwgTlNGb3JlZ3JvdW5k
Q29sb3JBdHRyaWJ1dGVOYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBuaWxdKTsKICAgICBSZXRhaW5QdHI8TlNBdHRyaWJ1dGVkU3RyaW5nPiB0
ZXh0ID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6
dGl0bGUgYXR0cmlidXRlczphdHRyaWJ1dGVzLmdldCgpXSk7Ci0gICAgW190ZXh0RmllbGQuZ2V0
KCkgc2V0QXR0cmlidXRlZFN0cmluZ1ZhbHVlOnRleHQuZ2V0KCldOwotICAgIFtfdGV4dEZpZWxk
LmdldCgpIHNpemVUb0ZpdF07Ci0gICAgTlNSZWN0IHRleHRGaWVsZEZyYW1lID0gW190ZXh0Rmll
bGQuZ2V0KCkgZnJhbWVdOworICAgIFtfdGV4dEZpZWxkIHNldEF0dHJpYnV0ZWRTdHJpbmdWYWx1
ZTp0ZXh0LmdldCgpXTsKKyAgICBbX3RleHRGaWVsZCBzaXplVG9GaXRdOworICAgIE5TUmVjdCB0
ZXh0RmllbGRGcmFtZSA9IFtfdGV4dEZpZWxkIGZyYW1lXTsKICAgICBOU1NpemUgZnJhbWVTaXpl
ID0gdGV4dEZpZWxkRnJhbWUuc2l6ZTsKICAgICBmcmFtZVNpemUud2lkdGggKz0gV2FybmluZ1Zp
ZXdQYWRkaW5nICogMjsKICAgICBmcmFtZVNpemUuaGVpZ2h0ICs9IFdhcm5pbmdWaWV3UGFkZGlu
ZyAqIDI7CkBAIC04Myw5ICs4Myw5IEBAIC0gKGlkKWluaXRXaXRoVGl0bGU6KE5TU3RyaW5nKil0
aXRsZQogICAgICAgICAoZnJhbWVTaXplLmhlaWdodCAtIHRleHRGaWVsZEZyYW1lLnNpemUuaGVp
Z2h0KSAvIDIpOwogCiAgICAgLy8gT2Zmc2V0IHRoZSBvcmlnaW4gYnkgdGhlIGZvbnQncyBkZXNj
ZW5kZXIsIHRvIGNlbnRlciB0aGUgdGV4dCBmaWVsZCBhYm91dCB0aGUgYmFzZWxpbmU6Ci0gICAg
dGV4dEZpZWxkRnJhbWUub3JpZ2luLnkgKz0gW1tfdGV4dEZpZWxkLmdldCgpIGZvbnRdIGRlc2Nl
bmRlcl07CisgICAgdGV4dEZpZWxkRnJhbWUub3JpZ2luLnkgKz0gW1tfdGV4dEZpZWxkIGZvbnRd
IGRlc2NlbmRlcl07CiAKLSAgICBbX3RleHRGaWVsZC5nZXQoKSBzZXRGcmFtZTpOU0ludGVncmFs
UmVjdCh0ZXh0RmllbGRGcmFtZSldOworICAgIFtfdGV4dEZpZWxkIHNldEZyYW1lOk5TSW50ZWdy
YWxSZWN0KHRleHRGaWVsZEZyYW1lKV07CiAgICAgW3NlbGYgYWRkU3VidmlldzpfdGV4dEZpZWxk
LmdldCgpXTsKIAogICAgIE5TQ29sb3IqIGJhY2tncm91bmRDb2xvciA9IFtOU0NvbG9yIGNvbG9y
V2l0aENhbGlicmF0ZWRXaGl0ZTpXYXJuaW5nVmlld0JhY2tncm91bmRXaGl0ZSBhbHBoYTpXYXJu
aW5nVmlld0JhY2tncm91bmRBbHBoYV07CkBAIC05Nyw5ICs5Nyw5IEBAIC0gKGlkKWluaXRXaXRo
VGl0bGU6KE5TU3RyaW5nKil0aXRsZQogCiAgICAgUmV0YWluUHRyPE5TU2hhZG93PiBzaGFkb3cg
PSBhZG9wdE5TKFtbTlNTaGFkb3cgYWxsb2NdIGluaXRdKTsKICAgICBSZXRhaW5QdHI8TlNDb2xv
cj4gc2hhZG93Q29sb3IgPSBbTlNDb2xvciBjb2xvcldpdGhDYWxpYnJhdGVkV2hpdGU6V2Fybmlu
Z1ZpZXdTaGFkb3dXaGl0ZSBhbHBoYTpXYXJuaW5nVmlld1NoYWRvd0FscGhhXTsKLSAgICBbc2hh
ZG93LmdldCgpIHNldFNoYWRvd0NvbG9yOnNoYWRvd0NvbG9yLmdldCgpXTsKLSAgICBbc2hhZG93
LmdldCgpIHNldFNoYWRvd09mZnNldDpXYXJuaW5nVmlld1NoYWRvd09mZnNldF07Ci0gICAgW3No
YWRvdy5nZXQoKSBzZXRTaGFkb3dCbHVyUmFkaXVzOldhcm5pbmdWaWV3U2hhZG93UmFkaXVzXTsK
KyAgICBbc2hhZG93IHNldFNoYWRvd0NvbG9yOnNoYWRvd0NvbG9yLmdldCgpXTsKKyAgICBbc2hh
ZG93IHNldFNoYWRvd09mZnNldDpXYXJuaW5nVmlld1NoYWRvd09mZnNldF07CisgICAgW3NoYWRv
dyBzZXRTaGFkb3dCbHVyUmFkaXVzOldhcm5pbmdWaWV3U2hhZG93UmFkaXVzXTsKICAgICBbc2Vs
ZiBzZXRTaGFkb3c6c2hhZG93LmdldCgpXTsKIAogICAgIHJldHVybiBzZWxmOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCmluZGV4IDJj
N2NhMmUwM2QyOTZjMDNkODFkMmNkYzE1MTcxNTkzZjFlNTA4Y2YuLjQyMDAxYTI1ZGFlMWVlNzUy
NDk0NWFkYzk2N2M4MTg3NThhYmExOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KQEAgLTE1OCw3ICsxNTgsNyBAQCBib29sIE1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjppbml0aWFsaXplKGNvbnN0IE1lZGlhUmVjb3JkZXJQ
cml2YXRlT3B0aW9ucyYgbwogICAgIH0KIAogICAgIG1fd3JpdGVyRGVsZWdhdGUgPSBhZG9wdE5T
KFtbV2ViQVZBc3NldFdyaXRlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFdyaXRlcjogKnRoaXNd
KTsKLSAgICBbbV93cml0ZXIuZ2V0KCkgc2V0RGVsZWdhdGU6bV93cml0ZXJEZWxlZ2F0ZS5nZXQo
KV07CisgICAgW21fd3JpdGVyIHNldERlbGVnYXRlOm1fd3JpdGVyRGVsZWdhdGUuZ2V0KCldOwog
CiAgICAgaWYgKG1faGFzQXVkaW8pIHsKICAgICAgICAgbV9hdWRpb0NvbXByZXNzb3IgPSBBdWRp
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmNyZWF0ZShjb21wcmVzc2VkQXVkaW9PdXRwdXRCdWZm
ZXJDYWxsYmFjaywgdGhpcyk7CkBAIC0yMTksMjkgKzIxOSwyOSBAQCB2b2lkIE1lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyOjpzdGFydEFzc2V0V3JpdGVyKCkKICAgICAgICAgaWYgKG1fdmlkZW9U
cmFuc2Zvcm0pCiAgICAgICAgICAgICBtX3ZpZGVvQXNzZXRXcml0ZXJJbnB1dC5nZXQoKS50cmFu
c2Zvcm0gPSAqbV92aWRlb1RyYW5zZm9ybTsKIAotICAgICAgICBpZiAoIVttX3dyaXRlci5nZXQo
KSBjYW5BZGRJbnB1dDptX3ZpZGVvQXNzZXRXcml0ZXJJbnB1dC5nZXQoKV0pIHsKKyAgICAgICAg
aWYgKCFbbV93cml0ZXIgY2FuQWRkSW5wdXQ6bV92aWRlb0Fzc2V0V3JpdGVySW5wdXQuZ2V0KCld
KSB7CiAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIk1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyOjpzdGFydEFzc2V0V3JpdGVyIGZhaWxlZCBjYW5BZGRJbnB1dCBm
b3IgdmlkZW8iKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBbbV93
cml0ZXIuZ2V0KCkgYWRkSW5wdXQ6bV92aWRlb0Fzc2V0V3JpdGVySW5wdXQuZ2V0KCldOworICAg
ICAgICBbbV93cml0ZXIgYWRkSW5wdXQ6bV92aWRlb0Fzc2V0V3JpdGVySW5wdXQuZ2V0KCldOwog
ICAgIH0KIAogICAgIGlmIChtX2hhc0F1ZGlvKSB7CiAgICAgICAgIG1fYXVkaW9Bc3NldFdyaXRl
cklucHV0ID0gYWRvcHROUyhbUEFMOjphbGxvY0FWQXNzZXRXcml0ZXJJbnB1dEluc3RhbmNlKCkg
aW5pdFdpdGhNZWRpYVR5cGU6QVZNZWRpYVR5cGVBdWRpbyBvdXRwdXRTZXR0aW5nczpuaWwgc291
cmNlRm9ybWF0SGludDptX2F1ZGlvRm9ybWF0RGVzY3JpcHRpb24uZ2V0KCldKTsKICAgICAgICAg
W21fYXVkaW9Bc3NldFdyaXRlcklucHV0IHNldEV4cGVjdHNNZWRpYURhdGFJblJlYWxUaW1lOnRy
dWVdOwotICAgICAgICBpZiAoIVttX3dyaXRlci5nZXQoKSBjYW5BZGRJbnB1dDptX2F1ZGlvQXNz
ZXRXcml0ZXJJbnB1dC5nZXQoKV0pIHsKKyAgICAgICAgaWYgKCFbbV93cml0ZXIgY2FuQWRkSW5w
dXQ6bV9hdWRpb0Fzc2V0V3JpdGVySW5wdXQuZ2V0KCldKSB7CiAgICAgICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzdGFy
dEFzc2V0V3JpdGVyIGZhaWxlZCBjYW5BZGRJbnB1dCBmb3IgYXVkaW8iKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQotICAgICAgICBbbV93cml0ZXIuZ2V0KCkgYWRkSW5wdXQ6bV9h
dWRpb0Fzc2V0V3JpdGVySW5wdXQuZ2V0KCldOworICAgICAgICBbbV93cml0ZXIgYWRkSW5wdXQ6
bV9hdWRpb0Fzc2V0V3JpdGVySW5wdXQuZ2V0KCldOwogICAgIH0KIAotICAgIGlmICghW21fd3Jp
dGVyLmdldCgpIHN0YXJ0V3JpdGluZ10pIHsKKyAgICBpZiAoIVttX3dyaXRlciBzdGFydFdyaXRp
bmddKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXI6OnN0YXJ0QXNzZXRXcml0ZXIgZmFpbGVkIHN0YXJ0V3JpdGluZyIp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgW21fd3JpdGVyLmdldCgpIHN0YXJ0U2Vz
c2lvbkF0U291cmNlVGltZTpQQUw6OmtDTVRpbWVaZXJvXTsKKyAgICBbbV93cml0ZXIgc3RhcnRT
ZXNzaW9uQXRTb3VyY2VUaW1lOlBBTDo6a0NNVGltZVplcm9dOwogCiAgICAgYXBwZW5kQ29tcHJl
c3NlZFNhbXBsZUJ1ZmZlcnMoKTsKIApAQCAtMjYzLDE0ICsyNjMsMTQgQEAgYm9vbCBNZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kQ29tcHJlc3NlZEF1ZGlvU2FtcGxlQnVmZmVySWZQ
b3NzaWJsZSgpCiAgICAgfQogCiAgICAgd2hpbGUgKCFtX3BlbmRpbmdBdWRpb1NhbXBsZVF1ZXVl
LmlzRW1wdHkoKSAmJiBbbV9hdWRpb0Fzc2V0V3JpdGVySW5wdXQgaXNSZWFkeUZvck1vcmVNZWRp
YURhdGFdKQotICAgICAgICBbbV9hdWRpb0Fzc2V0V3JpdGVySW5wdXQuZ2V0KCkgYXBwZW5kU2Ft
cGxlQnVmZmVyOm1fcGVuZGluZ0F1ZGlvU2FtcGxlUXVldWUudGFrZUZpcnN0KCkuZ2V0KCldOwor
ICAgICAgICBbbV9hdWRpb0Fzc2V0V3JpdGVySW5wdXQgYXBwZW5kU2FtcGxlQnVmZmVyOm1fcGVu
ZGluZ0F1ZGlvU2FtcGxlUXVldWUudGFrZUZpcnN0KCkuZ2V0KCldOwogCiAgICAgaWYgKCFbbV9h
dWRpb0Fzc2V0V3JpdGVySW5wdXQgaXNSZWFkeUZvck1vcmVNZWRpYURhdGFdKSB7CiAgICAgICAg
IG1fcGVuZGluZ0F1ZGlvU2FtcGxlUXVldWUuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIFttX2F1ZGlvQXNzZXRXcml0ZXJJbnB1dC5n
ZXQoKSBhcHBlbmRTYW1wbGVCdWZmZXI6YnVmZmVyLmdldCgpXTsKKyAgICBbbV9hdWRpb0Fzc2V0
V3JpdGVySW5wdXQgYXBwZW5kU2FtcGxlQnVmZmVyOmJ1ZmZlci5nZXQoKV07CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKQEAgLTMwNyw3ICszMDcsNyBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyOjphcHBlbmRDb21wcmVzc2VkVmlkZW9TYW1wbGVCdWZmZXIoQ01TYW1wbGVCdWZmZQog
ICAgIG1fbGFzdFZpZGVvRGVjb2RpbmdUaW1lID0gUEFMOjpDTVNhbXBsZUJ1ZmZlckdldERlY29k
ZVRpbWVTdGFtcChidWZmZXIpOwogICAgIG1faGFzRW5jb2RlZFZpZGVvU2FtcGxlcyA9IHRydWU7
CiAKLSAgICBbbV92aWRlb0Fzc2V0V3JpdGVySW5wdXQuZ2V0KCkgYXBwZW5kU2FtcGxlQnVmZmVy
OmJ1ZmZlcl07CisgICAgW21fdmlkZW9Bc3NldFdyaXRlcklucHV0IGFwcGVuZFNhbXBsZUJ1ZmZl
cjpidWZmZXJdOwogfQogCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmRD
b21wcmVzc2VkU2FtcGxlQnVmZmVycygpCkBAIC0zNTcsNyArMzU3LDcgQEAgdm9pZCBNZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlcjo6Zmx1c2hDb21wcmVzc2VkU2FtcGxlQnVmZmVycyhGdW5jdGlv
bjx2b2lkKCk+JiYKICAgICAgICAgfQogCiAgICAgICAgIHdoaWxlICghYXVkaW9TYW1wbGVRdWV1
ZS5pc0VtcHR5KCkgJiYgW21fYXVkaW9Bc3NldFdyaXRlcklucHV0IGlzUmVhZHlGb3JNb3JlTWVk
aWFEYXRhXSkKLSAgICAgICAgICAgIFttX2F1ZGlvQXNzZXRXcml0ZXJJbnB1dC5nZXQoKSBhcHBl
bmRTYW1wbGVCdWZmZXI6YXVkaW9TYW1wbGVRdWV1ZS50YWtlRmlyc3QoKS5nZXQoKV07CisgICAg
ICAgICAgICBbbV9hdWRpb0Fzc2V0V3JpdGVySW5wdXQgYXBwZW5kU2FtcGxlQnVmZmVyOmF1ZGlv
U2FtcGxlUXVldWUudGFrZUZpcnN0KCkuZ2V0KCldOwogCiAgICAgICAgIHdoaWxlICghdmlkZW9T
YW1wbGVRdWV1ZS5pc0VtcHR5KCkgJiYgW21fdmlkZW9Bc3NldFdyaXRlcklucHV0IGlzUmVhZHlG
b3JNb3JlTWVkaWFEYXRhXSkKICAgICAgICAgICAgIGFwcGVuZENvbXByZXNzZWRWaWRlb1NhbXBs
ZUJ1ZmZlcih2aWRlb1NhbXBsZVF1ZXVlLnRha2VGaXJzdCgpLmdldCgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VN
YW5hZ2VyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2Fw
dHVyZURldmljZU1hbmFnZXIubW0KaW5kZXggNGNiZGU0NGI0NTFlZTczZWM5NTc0ZWZiOTY5ZWFl
MDMwMzRkMzcxMC4uOGUzNzU4ZmU2NmFiODZhNjZhYjJkNzA5N2Q0Y2Y1NGYyOTdjMGZiOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVy
ZURldmljZU1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW0KQEAgLTExMiwxMSArMTEyLDExIEBAIHZv
aWQgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6dXBkYXRlQ2FjaGVkQVZDYXB0dXJlRGV2aWNlcygp
CiAgICAgICAgIGlmICghW2RldmljZSBoYXNNZWRpYVR5cGU6QVZNZWRpYVR5cGVWaWRlb10gJiYg
IVtkZXZpY2UgaGFzTWVkaWFUeXBlOkFWTWVkaWFUeXBlTXV4ZWRdKQogICAgICAgICAgICAgY29u
dGludWU7CiAKLSAgICAgICAgaWYgKFttX2F2Q2FwdHVyZURldmljZXMuZ2V0KCkgY29udGFpbnNP
YmplY3Q6ZGV2aWNlXSkKKyAgICAgICAgaWYgKFttX2F2Q2FwdHVyZURldmljZXMgY29udGFpbnNP
YmplY3Q6ZGV2aWNlXSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIFtkZXZpY2Ug
YWRkT2JzZXJ2ZXI6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAInN1c3BlbmRlZCIg
b3B0aW9uczpOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uTmV3IGNvbnRleHQ6KHZvaWQgKiluaWxd
OwotICAgICAgICBbbV9hdkNhcHR1cmVEZXZpY2VzLmdldCgpIGFkZE9iamVjdDpkZXZpY2VdOwor
ICAgICAgICBbbV9hdkNhcHR1cmVEZXZpY2VzIGFkZE9iamVjdDpkZXZpY2VdOwogICAgIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FW
VmlkZW9DYXB0dXJlU291cmNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tCmluZGV4IDRlZTdiYjMyNTQyYWZjZGM4NDk4
MmM2ZGE1YTMyZWQyNjRmNWM0N2UuLjE1ZGUyMGM4Y2YxNmI5YzA1NTEwMWYyODNmNDRlZTNkYTE0
ZDdlMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0KQEAgLTEyOSw3ICsxMjksNyBA
QCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6QVZWaWRlb0NhcHR1cmVTb3VyY2UoQVZDYXB0dXJlRGV2
aWNlKiBkZXZpY2UsIFN0cmluZyYmIGlkLAogICAgICwgbV9kZXZpY2UoZGV2aWNlKQogICAgICwg
bV92ZXJpZnlDYXB0dXJpbmdUaW1lcigqdGhpcywgJkFWVmlkZW9DYXB0dXJlU291cmNlOjp2ZXJp
ZnlJc0NhcHR1cmluZykKIHsKLSAgICBbbV9kZXZpY2UuZ2V0KCkgYWRkT2JzZXJ2ZXI6bV9vYmpj
T2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAInN1c3BlbmRlZCIgb3B0aW9uczpOU0tleVZhbHVl
T2JzZXJ2aW5nT3B0aW9uTmV3IGNvbnRleHQ6KHZvaWQgKiluaWxdOworICAgIFttX2RldmljZSBh
ZGRPYnNlcnZlcjptX29iamNPYnNlcnZlci5nZXQoKSBmb3JLZXlQYXRoOkAic3VzcGVuZGVkIiBv
cHRpb25zOk5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgY29udGV4dDoodm9pZCAqKW5pbF07
CiB9CiAKIEFWVmlkZW9DYXB0dXJlU291cmNlOjp+QVZWaWRlb0NhcHR1cmVTb3VyY2UoKQpAQCAt
NzI3LDcgKzcyNyw3IEBAIC0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDprZXlQYXRoIG9m
T2JqZWN0OihpZClvYmplY3QgY2hhbmdlOihOU0RpY3Rpb25hcnkqCiAgICAgaWYgKG1fY2FsbGJh
Y2stPmxvZ2dlclB0cigpKSB7CiAgICAgICAgIGF1dG8gaWRlbnRpZmllciA9IExvZ2dlcjo6TG9n
U2l0ZUlkZW50aWZpZXIoIkFWVmlkZW9DYXB0dXJlU291cmNlIiwgIm9ic2VydmVWYWx1ZUZvcktl
eVBhdGgiLCBtX2NhbGxiYWNrLT5sb2dJZGVudGlmaWVyKCkpOwogICAgICAgICBSZXRhaW5QdHI8
TlNTdHJpbmc+IHZhbHVlU3RyaW5nID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0
aEZvcm1hdDpAIiVAIiwgbmV3VmFsdWVdKTsKLSAgICAgICAgbV9jYWxsYmFjay0+bG9nZ2VyKCku
bG9nQWx3YXlzKG1fY2FsbGJhY2stPmxvZ0NoYW5uZWwoKSwgaWRlbnRpZmllciwgd2lsbENoYW5n
ZSA/ICJ3aWxsIiA6ICJkaWQiLCAiIGNoYW5nZSAnIiwgW2tleVBhdGggVVRGOFN0cmluZ10sICIn
IHRvICIsIFt2YWx1ZVN0cmluZy5nZXQoKSBVVEY4U3RyaW5nXSk7CisgICAgICAgIG1fY2FsbGJh
Y2stPmxvZ2dlcigpLmxvZ0Fsd2F5cyhtX2NhbGxiYWNrLT5sb2dDaGFubmVsKCksIGlkZW50aWZp
ZXIsIHdpbGxDaGFuZ2UgPyAid2lsbCIgOiAiZGlkIiwgIiBjaGFuZ2UgJyIsIFtrZXlQYXRoIFVU
RjhTdHJpbmddLCAiJyB0byAiLCBbdmFsdWVTdHJpbmcgVVRGOFN0cmluZ10pOwogICAgIH0KICNl
bmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L1Jlc291cmNlUmVxdWVzdENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQppbmRleCA4ZWYxNjcwNmZlNzJjNmJmNGZm
ZmZkMzJkYzg2NDBmMjU1NGM3MzY3Li5hN2ZiNDkyOWQxNmM4OTU2MjYzNWYwMDM3MzE4MTNmMTg1
ZjNkYjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L1Jlc291cmNlUmVxdWVzdENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KQEAgLTgzLDIxICs4MywyMSBAQCBz
dGF0aWMgaW5saW5lIE5TVVJMUmVxdWVzdENhY2hlUG9saWN5IHRvUGxhdGZvcm1SZXF1ZXN0Q2Fj
aGVQb2xpY3koUmVzb3VyY2VSZXF1ZQogCiB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVS
ZXNvdXJjZVJlcXVlc3QoKQogewotICAgIG1fdXJsID0gW21fbnNSZXF1ZXN0LmdldCgpIFVSTF07
CisgICAgbV91cmwgPSBbbV9uc1JlcXVlc3QgVVJMXTsKIAogICAgIGlmIChtX2NhY2hlUG9saWN5
ID09IFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5OjpVc2VQcm90b2NvbENhY2hlUG9saWN5KQot
ICAgICAgICBtX2NhY2hlUG9saWN5ID0gZnJvbVBsYXRmb3JtUmVxdWVzdENhY2hlUG9saWN5KFtt
X25zUmVxdWVzdC5nZXQoKSBjYWNoZVBvbGljeV0pOwotICAgIG1fdGltZW91dEludGVydmFsID0g
W21fbnNSZXF1ZXN0LmdldCgpIHRpbWVvdXRJbnRlcnZhbF07Ci0gICAgbV9maXJzdFBhcnR5Rm9y
Q29va2llcyA9IFttX25zUmVxdWVzdC5nZXQoKSBtYWluRG9jdW1lbnRVUkxdOworICAgICAgICBt
X2NhY2hlUG9saWN5ID0gZnJvbVBsYXRmb3JtUmVxdWVzdENhY2hlUG9saWN5KFttX25zUmVxdWVz
dCBjYWNoZVBvbGljeV0pOworICAgIG1fdGltZW91dEludGVydmFsID0gW21fbnNSZXF1ZXN0IHRp
bWVvdXRJbnRlcnZhbF07CisgICAgbV9maXJzdFBhcnR5Rm9yQ29va2llcyA9IFttX25zUmVxdWVz
dCBtYWluRG9jdW1lbnRVUkxdOwogCi0gICAgVVJMIHNpdGVGb3JDb29raWVzIHsgW21fbnNSZXF1
ZXN0LmdldCgpIF9wcm9wZXJ0eUZvcktleTpAIl9rQ0ZIVFRQQ29va2llUG9saWN5UHJvcGVydHlT
aXRlRm9yQ29va2llcyJdIH07CisgICAgVVJMIHNpdGVGb3JDb29raWVzIHsgW21fbnNSZXF1ZXN0
IF9wcm9wZXJ0eUZvcktleTpAIl9rQ0ZIVFRQQ29va2llUG9saWN5UHJvcGVydHlTaXRlRm9yQ29v
a2llcyJdIH07CiAgICAgbV9zYW1lU2l0ZURpc3Bvc2l0aW9uID0gc2l0ZUZvckNvb2tpZXMuaXNO
dWxsKCkgPyBTYW1lU2l0ZURpc3Bvc2l0aW9uOjpVbnNwZWNpZmllZCA6IChhcmVSZWdpc3RyYWJs
ZURvbWFpbnNFcXVhbChzaXRlRm9yQ29va2llcywgbV91cmwpID8gU2FtZVNpdGVEaXNwb3NpdGlv
bjo6U2FtZVNpdGUgOiBTYW1lU2l0ZURpc3Bvc2l0aW9uOjpDcm9zc1NpdGUpOwogCi0gICAgbV9p
c1RvcFNpdGUgPSBzdGF0aWNfY2FzdDxOU051bWJlcio+KFttX25zUmVxdWVzdC5nZXQoKSBfcHJv
cGVydHlGb3JLZXk6QCJfa0NGSFRUUENvb2tpZVBvbGljeVByb3BlcnR5SXNUb3BMZXZlbE5hdmln
YXRpb24iXSkuYm9vbFZhbHVlOworICAgIG1faXNUb3BTaXRlID0gc3RhdGljX2Nhc3Q8TlNOdW1i
ZXIqPihbbV9uc1JlcXVlc3QgX3Byb3BlcnR5Rm9yS2V5OkAiX2tDRkhUVFBDb29raWVQb2xpY3lQ
cm9wZXJ0eUlzVG9wTGV2ZWxOYXZpZ2F0aW9uIl0pLmJvb2xWYWx1ZTsKIAotICAgIGlmIChOU1N0
cmluZyogbWV0aG9kID0gW21fbnNSZXF1ZXN0LmdldCgpIEhUVFBNZXRob2RdKQorICAgIGlmIChO
U1N0cmluZyogbWV0aG9kID0gW21fbnNSZXF1ZXN0IEhUVFBNZXRob2RdKQogICAgICAgICBtX2h0
dHBNZXRob2QgPSBtZXRob2Q7Ci0gICAgbV9hbGxvd0Nvb2tpZXMgPSBbbV9uc1JlcXVlc3QuZ2V0
KCkgSFRUUFNob3VsZEhhbmRsZUNvb2tpZXNdOworICAgIG1fYWxsb3dDb29raWVzID0gW21fbnNS
ZXF1ZXN0IEhUVFBTaG91bGRIYW5kbGVDb29raWVzXTsKIAogICAgIGlmIChyZXNvdXJjZVByaW9y
aXRpZXNFbmFibGVkKCkpCiAgICAgICAgIG1fcHJpb3JpdHkgPSB0b1Jlc291cmNlTG9hZFByaW9y
aXR5KG1fbnNSZXF1ZXN0ID8gQ0ZVUkxSZXF1ZXN0R2V0UmVxdWVzdFByaW9yaXR5KFttX25zUmVx
dWVzdCBfQ0ZVUkxSZXF1ZXN0XSkgOiAwKTsKQEAgLTEwOCw3ICsxMDgsNyBAQCB2b2lkIFJlc291
cmNlUmVxdWVzdDo6ZG9VcGRhdGVSZXNvdXJjZVJlcXVlc3QoKQogICAgIH1dOwogCiAgICAgbV9y
ZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheS5jbGVhcigpOwot
ICAgIE5TQXJyYXkgKmVuY29kaW5nRmFsbGJhY2tzID0gW21fbnNSZXF1ZXN0LmdldCgpIGNvbnRl
bnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheV07CisgICAgTlNBcnJheSAqZW5jb2Rp
bmdGYWxsYmFja3MgPSBbbV9uc1JlcXVlc3QgY29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxs
YmFja0FycmF5XTsKICAgICBtX3Jlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxs
YmFja0FycmF5LnJlc2VydmVDYXBhY2l0eShbZW5jb2RpbmdGYWxsYmFja3MgY291bnRdKTsKICAg
ICBmb3IgKE5TTnVtYmVyICplbmNvZGluZ0ZhbGxiYWNrIGluIFttX25zUmVxdWVzdCBjb250ZW50
RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXldKSB7CiAgICAgICAgIENGU3RyaW5nRW5j
b2RpbmcgZW5jb2RpbmcgPSBDRlN0cmluZ0NvbnZlcnROU1N0cmluZ0VuY29kaW5nVG9FbmNvZGlu
ZyhbZW5jb2RpbmdGYWxsYmFjayB1bnNpZ25lZExvbmdWYWx1ZV0pOwpAQCAtMTI1LDkgKzEyNSw5
IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVJlc291cmNlUmVxdWVzdCgpCiAKIHZv
aWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVJlc291cmNlSFRUUEJvZHkoKQogewotICAgIGlm
IChOU0RhdGEqIGJvZHlEYXRhID0gW21fbnNSZXF1ZXN0LmdldCgpIEhUVFBCb2R5XSkKKyAgICBp
ZiAoTlNEYXRhKiBib2R5RGF0YSA9IFttX25zUmVxdWVzdCBIVFRQQm9keV0pCiAgICAgICAgIG1f
aHR0cEJvZHkgPSBGb3JtRGF0YTo6Y3JlYXRlKFtib2R5RGF0YSBieXRlc10sIFtib2R5RGF0YSBs
ZW5ndGhdKTsKLSAgICBlbHNlIGlmIChOU0lucHV0U3RyZWFtKiBib2R5U3RyZWFtID0gW21fbnNS
ZXF1ZXN0LmdldCgpIEhUVFBCb2R5U3RyZWFtXSkgeworICAgIGVsc2UgaWYgKE5TSW5wdXRTdHJl
YW0qIGJvZHlTdHJlYW0gPSBbbV9uc1JlcXVlc3QgSFRUUEJvZHlTdHJlYW1dKSB7CiAgICAgICAg
IEZvcm1EYXRhKiBmb3JtRGF0YSA9IGh0dHBCb2R5RnJvbVN0cmVhbShib2R5U3RyZWFtKTsKICAg
ICAgICAgLy8gVGhlcmUgaXMgbm8gRm9ybURhdGEgb2JqZWN0IGlmIGEgY2xpZW50IHByb3ZpZGVk
IGEgY3VzdG9tIGRhdGEgc3RyZWFtLgogICAgICAgICAvLyBXZSBzaG91bGRuJ3QgYmUgbG9va2lu
ZyBhdCBodHRwIGJvZHkgYWZ0ZXIgY2xpZW50IGNhbGxiYWNrcy4KQEAgLTE2NSw3ICsxNjUsNyBA
QCB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QoKQogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBuc1JlcXVlc3QgPSBhZG9wdE5TKFttX25zUmVx
dWVzdC5nZXQoKSBtdXRhYmxlQ29weV0pOworICAgIGF1dG8gbnNSZXF1ZXN0ID0gYWRvcHROUyhb
bV9uc1JlcXVlc3QgbXV0YWJsZUNvcHldKTsKIAogICAgIGlmIChuc1JlcXVlc3QpCiAgICAgICAg
IFtuc1JlcXVlc3Qgc2V0VVJMOnVybCgpXTsKQEAgLTI0MSw3ICsyNDEsNyBAQCB2b2lkIFJlc291
cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybUhUVFBCb2R5KCkKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIGF1dG8gbnNSZXF1ZXN0ID0gYWRvcHROUyhbbV9uc1JlcXVlc3QuZ2V0KCkg
bXV0YWJsZUNvcHldKTsKKyAgICBhdXRvIG5zUmVxdWVzdCA9IGFkb3B0TlMoW21fbnNSZXF1ZXN0
IG11dGFibGVDb3B5XSk7CiAKICAgICBpZiAobnNSZXF1ZXN0KQogICAgICAgICBbbnNSZXF1ZXN0
IHNldFVSTDp1cmwoKV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL1Jlc291cmNlUmVzcG9uc2VDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXNwb25zZUNvY29hLm1tCmluZGV4IDUxYTlmZTY1
NTU2YzFjMDczOTE5NTYyMTY0ZDE0NzJmOGJmZTcwY2QuLjNjM2M3NTMxZWRkMDY2OGNiZGRlNzYw
NmIyYjg4YmQ5NjUzODIyNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY29jb2EvUmVzb3VyY2VSZXNwb25zZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXNwb25zZUNvY29hLm1tCkBAIC02Nyw3
ICs2Nyw3IEBAIHZvaWQgUmVzb3VyY2VSZXNwb25zZTo6aW5pdE5TVVJMUmVzcG9uc2UoKSBjb25z
dAogICAgIG1fbnNSZXNwb25zZSA9IGFkb3B0TlMoW1tOU0hUVFBVUkxSZXNwb25zZSBhbGxvY10g
aW5pdFdpdGhVUkw6bV91cmwgc3RhdHVzQ29kZTptX2h0dHBTdGF0dXNDb2RlIEhUVFBWZXJzaW9u
OihOU1N0cmluZyopa0NGSFRUUFZlcnNpb24xXzEgaGVhZGVyRmllbGRzOmhlYWRlckRpY3Rpb25h
cnldKTsKIAogICAgIC8vIE1pbWUgdHlwZSBzbmlmZmluZyBkb2Vzbid0IHdvcmsgd2l0aCBhIHN5
bnRoZXNpemVkIHJlc3BvbnNlLgotICAgIFttX25zUmVzcG9uc2UuZ2V0KCkgX3NldE1JTUVUeXBl
OihOU1N0cmluZyAqKW1fbWltZVR5cGVdOworICAgIFttX25zUmVzcG9uc2UgX3NldE1JTUVUeXBl
OihOU1N0cmluZyAqKW1fbWltZVR5cGVdOwogfQogCiB2b2lkIFJlc291cmNlUmVzcG9uc2U6OmRp
c2FibGVMYXp5SW5pdGlhbGl6YXRpb24oKQpAQCAtMTYwLDE0ICsxNjAsMTQgQEAgdm9pZCBSZXNv
dXJjZVJlc3BvbnNlOjpwbGF0Zm9ybUxhenlJbml0KEluaXRMZXZlbCBpbml0TGV2ZWwpCiAgICAg
CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CiAKLSAgICAgICAgYXV0byBtZXNzYWdlUmVmID0gW21f
bnNSZXNwb25zZS5nZXQoKSBpc0tpbmRPZkNsYXNzOltOU0hUVFBVUkxSZXNwb25zZSBjbGFzc11d
ID8gQ0ZVUkxSZXNwb25zZUdldEhUVFBSZXNwb25zZShbIChOU0hUVFBVUkxSZXNwb25zZSAqKW1f
bnNSZXNwb25zZS5nZXQoKSBfQ0ZVUkxSZXNwb25zZV0pIDogbnVsbHB0cjsKKyAgICAgICAgYXV0
byBtZXNzYWdlUmVmID0gW21fbnNSZXNwb25zZSBpc0tpbmRPZkNsYXNzOltOU0hUVFBVUkxSZXNw
b25zZSBjbGFzc11dID8gQ0ZVUkxSZXNwb25zZUdldEhUVFBSZXNwb25zZShbIChOU0hUVFBVUkxS
ZXNwb25zZSAqKW1fbnNSZXNwb25zZS5nZXQoKSBfQ0ZVUkxSZXNwb25zZV0pIDogbnVsbHB0cjsK
IAogICAgICAgICBpZiAobV9pbml0TGV2ZWwgPCBDb21tb25GaWVsZHNPbmx5KSB7Ci0gICAgICAg
ICAgICBtX3VybCA9IFttX25zUmVzcG9uc2UuZ2V0KCkgVVJMXTsKLSAgICAgICAgICAgIG1fbWlt
ZVR5cGUgPSBbbV9uc1Jlc3BvbnNlLmdldCgpIE1JTUVUeXBlXTsKLSAgICAgICAgICAgIG1fZXhw
ZWN0ZWRDb250ZW50TGVuZ3RoID0gW21fbnNSZXNwb25zZS5nZXQoKSBleHBlY3RlZENvbnRlbnRM
ZW5ndGhdOworICAgICAgICAgICAgbV91cmwgPSBbbV9uc1Jlc3BvbnNlIFVSTF07CisgICAgICAg
ICAgICBtX21pbWVUeXBlID0gW21fbnNSZXNwb25zZSBNSU1FVHlwZV07CisgICAgICAgICAgICBt
X2V4cGVjdGVkQ29udGVudExlbmd0aCA9IFttX25zUmVzcG9uc2UgZXhwZWN0ZWRDb250ZW50TGVu
Z3RoXTsKICAgICAgICAgICAgIC8vIFN0cmlwcGluZyBkb3VibGUgcXVvdGVzIGFzIGEgd29ya2Fy
b3VuZCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzg3NTcwODg+LCBjYW4gYmUgcmVtb3ZlZCBvbmNlIHRo
YXQgaXMgZml4ZWQuCi0gICAgICAgICAgICBtX3RleHRFbmNvZGluZ05hbWUgPSBzdHJpcExlYWRp
bmdBbmRUcmFpbGluZ0RvdWJsZVF1b3RlKFttX25zUmVzcG9uc2UuZ2V0KCkgdGV4dEVuY29kaW5n
TmFtZV0pOworICAgICAgICAgICAgbV90ZXh0RW5jb2RpbmdOYW1lID0gc3RyaXBMZWFkaW5nQW5k
VHJhaWxpbmdEb3VibGVRdW90ZShbbV9uc1Jlc3BvbnNlIHRleHRFbmNvZGluZ05hbWVdKTsKICAg
ICAgICAgICAgIG1faHR0cFN0YXR1c0NvZGUgPSBtZXNzYWdlUmVmID8gQ0ZIVFRQTWVzc2FnZUdl
dFJlc3BvbnNlU3RhdHVzQ29kZShtZXNzYWdlUmVmKSA6IDA7CiAgICAgICAgICAgICBpZiAobWVz
c2FnZVJlZikKICAgICAgICAgICAgICAgICBtX2h0dHBIZWFkZXJGaWVsZHMgPSBpbml0aWFsaXpl
SFRUUEhlYWRlcnMobWVzc2FnZVJlZik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9BdXRoZW50aWNhdGlvbk1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL0F1dGhlbnRpY2F0aW9uTWFjLm1tCmluZGV4IGNmY2YxMGZjYWYy
MTk4Y2IxZTg5MjQyOWU5NjZiY2EyMzI2OTNkOWQuLjI3NDk2ZmM4OTczMDg0ZjU2ZDAzYmUyYzMw
MWEwZDI3ZDRiZDRhZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL0F1dGhlbnRpY2F0aW9uTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL0F1dGhlbnRpY2F0aW9uTWFjLm1tCkBAIC0xMjgsMTQgKzEyOCwxNCBAQCB2
b2lkIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpzZXRBdXRoZW50aWNhdGlvbkNsaWVudChBdXRo
ZW50aWNhdGlvbkNsaWVudCogY2xpZQogICAgICAgICBpZiAobV9uc0NoYWxsZW5nZSkKICAgICAg
ICAgICAgIG1fbnNDaGFsbGVuZ2UgPSBhZG9wdE5TKFtbTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSBhbGxvY10gaW5pdFdpdGhBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTptX25zQ2hhbGxlbmdl
LmdldCgpIHNlbmRlcjptX3NlbmRlci5nZXQoKV0pOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGlm
IChbbV9zZW5kZXIuZ2V0KCkgaXNNZW1iZXJPZkNsYXNzOltXZWJDb3JlQXV0aGVudGljYXRpb25D
bGllbnRBc0NoYWxsZW5nZVNlbmRlciBjbGFzc11dKQorICAgICAgICBpZiAoW21fc2VuZGVyIGlz
TWVtYmVyT2ZDbGFzczpbV2ViQ29yZUF1dGhlbnRpY2F0aW9uQ2xpZW50QXNDaGFsbGVuZ2VTZW5k
ZXIgY2xhc3NdXSkKICAgICAgICAgICAgIFsoV2ViQ29yZUF1dGhlbnRpY2F0aW9uQ2xpZW50QXND
aGFsbGVuZ2VTZW5kZXIgKiltX3NlbmRlci5nZXQoKSBkZXRhY2hDbGllbnRdOwogICAgIH0KIH0K
IAogQXV0aGVudGljYXRpb25DbGllbnQqIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjphdXRoZW50
aWNhdGlvbkNsaWVudCgpIGNvbnN0CiB7Ci0gICAgaWYgKFttX3NlbmRlci5nZXQoKSBpc01lbWJl
ck9mQ2xhc3M6W1dlYkNvcmVBdXRoZW50aWNhdGlvbkNsaWVudEFzQ2hhbGxlbmdlU2VuZGVyIGNs
YXNzXV0pCisgICAgaWYgKFttX3NlbmRlciBpc01lbWJlck9mQ2xhc3M6W1dlYkNvcmVBdXRoZW50
aWNhdGlvbkNsaWVudEFzQ2hhbGxlbmdlU2VuZGVyIGNsYXNzXV0pCiAgICAgICAgIHJldHVybiBb
c3RhdGljX2Nhc3Q8V2ViQ29yZUF1dGhlbnRpY2F0aW9uQ2xpZW50QXNDaGFsbGVuZ2VTZW5kZXIq
PihtX3NlbmRlci5nZXQoKSkgY2xpZW50XTsKICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJy
b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVy
cm9yTWFjLm1tCmluZGV4IGFkNjlhNWYwN2JhNDc4Y2E5N2Y0ODNhMTJjMzA1ODViNjVhOGVlODQu
LmVmYTEyNzJjZmVkY2RkOTg2ODUxN2U3MjMzNDhmYzkzMmQ1NmIzZDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5t
bQpAQCAtOTgsMTIgKzk4LDEyIEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNFcnJvcj4gY3JlYXRlTlNF
cnJvckZyb21SZXNvdXJjZUVycm9yQmFzZShjb25zdCBSZXNvdXJjZUVycm9yCiAgICAgUmV0YWlu
UHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IHVzZXJJbmZvID0gYWRvcHROUyhbW05TTXV0YWJsZURp
Y3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKIAogICAgIGlmICghcmVzb3VyY2VFcnJvci5sb2NhbGl6
ZWREZXNjcmlwdGlvbigpLmlzRW1wdHkoKSkKLSAgICAgICAgW3VzZXJJbmZvLmdldCgpIHNldFZh
bHVlOnJlc291cmNlRXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKSBmb3JLZXk6TlNMb2NhbGl6
ZWREZXNjcmlwdGlvbktleV07CisgICAgICAgIFt1c2VySW5mbyBzZXRWYWx1ZTpyZXNvdXJjZUVy
cm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkgZm9yS2V5Ok5TTG9jYWxpemVkRGVzY3JpcHRpb25L
ZXldOwogCiAgICAgaWYgKCFyZXNvdXJjZUVycm9yLmZhaWxpbmdVUkwoKS5pc0VtcHR5KCkpIHsK
LSAgICAgICAgW3VzZXJJbmZvLmdldCgpIHNldFZhbHVlOihOU1N0cmluZyAqKXJlc291cmNlRXJy
b3IuZmFpbGluZ1VSTCgpLnN0cmluZygpIGZvcktleTpAIk5TRXJyb3JGYWlsaW5nVVJMU3RyaW5n
S2V5Il07CisgICAgICAgIFt1c2VySW5mbyBzZXRWYWx1ZTooTlNTdHJpbmcgKilyZXNvdXJjZUVy
cm9yLmZhaWxpbmdVUkwoKS5zdHJpbmcoKSBmb3JLZXk6QCJOU0Vycm9yRmFpbGluZ1VSTFN0cmlu
Z0tleSJdOwogICAgICAgICBpZiAoTlNVUkwgKmNvY29hVVJMID0gKE5TVVJMICopcmVzb3VyY2VF
cnJvci5mYWlsaW5nVVJMKCkpCi0gICAgICAgICAgICBbdXNlckluZm8uZ2V0KCkgc2V0VmFsdWU6
Y29jb2FVUkwgZm9yS2V5OkAiTlNFcnJvckZhaWxpbmdVUkxLZXkiXTsKKyAgICAgICAgICAgIFt1
c2VySW5mbyBzZXRWYWx1ZTpjb2NvYVVSTCBmb3JLZXk6QCJOU0Vycm9yRmFpbGluZ1VSTEtleSJd
OwogICAgIH0KIAogICAgIHJldHVybiBhZG9wdE5TKFtbTlNFcnJvciBhbGxvY10gaW5pdFdpdGhE
b21haW46cmVzb3VyY2VFcnJvci5kb21haW4oKSBjb2RlOnJlc291cmNlRXJyb3IuZXJyb3JDb2Rl
KCkgdXNlckluZm86dXNlckluZm8uZ2V0KCldKTsKQEAgLTE0Miw4ICsxNDIsOCBAQCB2b2lkIFJl
c291cmNlRXJyb3I6Om1hcFBsYXRmb3JtRXJyb3IoKQogICAgIGlmICghbV9wbGF0Zm9ybUVycm9y
KQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGRvbWFpbiA9IFttX3BsYXRmb3JtRXJyb3Iu
Z2V0KCkgZG9tYWluXTsKLSAgICBhdXRvIGVycm9yQ29kZSA9IFttX3BsYXRmb3JtRXJyb3IuZ2V0
KCkgY29kZV07CisgICAgYXV0byBkb21haW4gPSBbbV9wbGF0Zm9ybUVycm9yIGRvbWFpbl07Cisg
ICAgYXV0byBlcnJvckNvZGUgPSBbbV9wbGF0Zm9ybUVycm9yIGNvZGVdOwogCiAgICAgaWYgKFtk
b21haW4gaXNFcXVhbFRvU3RyaW5nOk5TVVJMRXJyb3JEb21haW5dIHx8IFtkb21haW4gaXNFcXVh
bFRvU3RyaW5nOihfX2JyaWRnZSBOU1N0cmluZyAqKWtDRkVycm9yRG9tYWluQ0ZOZXR3b3JrXSkK
ICAgICAgICAgc2V0VHlwZSgoZXJyb3JDb2RlID09IE5TVVJMRXJyb3JUaW1lZE91dCkgPyBUeXBl
OjpUaW1lb3V0IDogKGVycm9yQ29kZSA9PSBOU1VSTEVycm9yQ2FuY2VsbGVkKSA/IFR5cGU6OkNh
bmNlbGxhdGlvbiA6IFR5cGU6OkdlbmVyYWwpOwpAQCAtMTU2LDE3ICsxNTYsMTcgQEAgdm9pZCBS
ZXNvdXJjZUVycm9yOjpwbGF0Zm9ybUxhenlJbml0KCkKICAgICBpZiAobV9kYXRhSXNVcFRvRGF0
ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9kb21haW4gPSBbbV9wbGF0Zm9ybUVycm9yLmdl
dCgpIGRvbWFpbl07Ci0gICAgbV9lcnJvckNvZGUgPSBbbV9wbGF0Zm9ybUVycm9yLmdldCgpIGNv
ZGVdOworICAgIG1fZG9tYWluID0gW21fcGxhdGZvcm1FcnJvciBkb21haW5dOworICAgIG1fZXJy
b3JDb2RlID0gW21fcGxhdGZvcm1FcnJvciBjb2RlXTsKIAotICAgIGlmIChOU1N0cmluZyogZmFp
bGluZ1VSTFN0cmluZyA9IFtbbV9wbGF0Zm9ybUVycm9yLmdldCgpIHVzZXJJbmZvXSB2YWx1ZUZv
cktleTpAIk5TRXJyb3JGYWlsaW5nVVJMU3RyaW5nS2V5Il0pCisgICAgaWYgKE5TU3RyaW5nKiBm
YWlsaW5nVVJMU3RyaW5nID0gW1ttX3BsYXRmb3JtRXJyb3IgdXNlckluZm9dIHZhbHVlRm9yS2V5
OkAiTlNFcnJvckZhaWxpbmdVUkxTdHJpbmdLZXkiXSkKICAgICAgICAgbV9mYWlsaW5nVVJMID0g
VVJMKFVSTCgpLCBmYWlsaW5nVVJMU3RyaW5nKTsKICAgICBlbHNlCi0gICAgICAgIG1fZmFpbGlu
Z1VSTCA9IFVSTCgoTlNVUkwgKilbW21fcGxhdGZvcm1FcnJvci5nZXQoKSB1c2VySW5mb10gdmFs
dWVGb3JLZXk6QCJOU0Vycm9yRmFpbGluZ1VSTEtleSJdKTsKKyAgICAgICAgbV9mYWlsaW5nVVJM
ID0gVVJMKChOU1VSTCAqKVtbbV9wbGF0Zm9ybUVycm9yIHVzZXJJbmZvXSB2YWx1ZUZvcktleTpA
Ik5TRXJyb3JGYWlsaW5nVVJMS2V5Il0pOwogICAgIC8vIFdvcmthcm91bmQgZm9yIDxyZGFyOi8v
cHJvYmxlbS82NTU0MDY3PgogICAgIG1fbG9jYWxpemVkRGVzY3JpcHRpb24gPSBtX2ZhaWxpbmdV
Ukwuc3RyaW5nKCk7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgbV9sb2Nh
bGl6ZWREZXNjcmlwdGlvbiA9IFttX3BsYXRmb3JtRXJyb3IuZ2V0KCkgX3dlYl9sb2NhbGl6ZWRE
ZXNjcmlwdGlvbl07CisgICAgbV9sb2NhbGl6ZWREZXNjcmlwdGlvbiA9IFttX3BsYXRmb3JtRXJy
b3IgX3dlYl9sb2NhbGl6ZWREZXNjcmlwdGlvbl07CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBU
SU9OUwogCiAgICAgbV9kYXRhSXNVcFRvRGF0ZSA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJh
dGlvblF1ZXVlRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0KaW5kZXgg
NjViN2JhOGM0MTUzNjA5ZTY3ZWNmMTZmYzYyNDAyYWViZTU0ZGEwYS4uMzE1ZTA2NTE1MzBkY2Ri
MDI4MDE2NTRiNzU3ZDgxNDczYzIwZmQzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURl
bGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNv
cmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQpAQCAtMTQzLDcgKzE0
Myw3IEBAIC0gKE5TVVJMUmVxdWVzdCAqKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNv
bm5lY3Rpb24gd2lsbFNlbmRSZXF1ZXN0OihOU1VSCiAKICAgICAgICAgUmVzb3VyY2VSZXNwb25z
ZSByZXNwb25zZShyZWRpcmVjdFJlc3BvbnNlLmdldCgpKTsKICAgICAgICAgUmVzb3VyY2VSZXF1
ZXN0IHJlZGlyZWN0UmVxdWVzdCA9IG5ld1JlcXVlc3QuZ2V0KCk7Ci0gICAgICAgIGlmIChbbmV3
UmVxdWVzdC5nZXQoKSBIVFRQQm9keVN0cmVhbV0pIHsKKyAgICAgICAgaWYgKFtuZXdSZXF1ZXN0
IEhUVFBCb2R5U3RyZWFtXSkgewogICAgICAgICAgICAgQVNTRVJUKG1faGFuZGxlLT5maXJzdFJl
cXVlc3QoKS5odHRwQm9keSgpKTsKICAgICAgICAgICAgIHJlZGlyZWN0UmVxdWVzdC5zZXRIVFRQ
Qm9keShtX2hhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkuaHR0cEJvZHkoKSk7CiAgICAgICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY29jb2EvTG9jYWxlQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NvY29hL0xvY2FsZUNvY29hLm1tCmlu
ZGV4IDA4NDRlOTBkNmMwNDhkNGU5N2VkNDllNmZiN2U0ZjQ5Y2I0OWU5YmYuLjFiMDk4ZmFmMzVl
YjJiYWM0NGY1NmM5YzM5MTgyYzNiODg1MjEwYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvY29jb2EvTG9jYWxlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9jb2NvYS9Mb2NhbGVDb2NvYS5tbQpAQCAtNjcsMTAgKzY3LDEwIEBAIExv
Y2FsZUNvY29hOjpMb2NhbGVDb2NvYShjb25zdCBBdG9tU3RyaW5nJiBsb2NhbGUpCiB7CiAgICAg
TlNBcnJheSogYXZhaWxhYmxlTGFuZ3VhZ2VzID0gW05TTG9jYWxlIElTT0xhbmd1YWdlQ29kZXNd
OwogICAgIC8vIE5TTG9jYWxlIHJldHVybnMgYSBsb3dlciBjYXNlIE5TTG9jYWxlTGFuZ3VhZ2VD
b2RlIHNvIHdlIGRvbid0IGhhdmUgY2FyZSBhYm91dCBjYXNlLgotICAgIE5TU3RyaW5nKiBsYW5n
dWFnZSA9IFttX2xvY2FsZS5nZXQoKSBvYmplY3RGb3JLZXk6TlNMb2NhbGVMYW5ndWFnZUNvZGVd
OworICAgIE5TU3RyaW5nKiBsYW5ndWFnZSA9IFttX2xvY2FsZSBvYmplY3RGb3JLZXk6TlNMb2Nh
bGVMYW5ndWFnZUNvZGVdOwogICAgIGlmIChbYXZhaWxhYmxlTGFuZ3VhZ2VzIGluZGV4T2ZPYmpl
Y3Q6bGFuZ3VhZ2VdID09IE5TTm90Rm91bmQpCiAgICAgICAgIG1fbG9jYWxlID0gYWRvcHROUyhb
W05TTG9jYWxlIGFsbG9jXSBpbml0V2l0aExvY2FsZUlkZW50aWZpZXI6ZGVmYXVsdExhbmd1YWdl
KCldKTsKLSAgICBbbV9ncmVnb3JpYW5DYWxlbmRhci5nZXQoKSBzZXRMb2NhbGU6bV9sb2NhbGUu
Z2V0KCldOworICAgIFttX2dyZWdvcmlhbkNhbGVuZGFyIHNldExvY2FsZTptX2xvY2FsZS5nZXQo
KV07CiB9CiAKIExvY2FsZUNvY29hOjp+TG9jYWxlQ29jb2EoKQpAQCAtMjQ4LDggKzI0OCw4IEBA
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBMb2NhbGVDb2NvYTo6dGltZUFNUE1MYWJlbHMoKQogICAg
ICAgICByZXR1cm4gbV90aW1lQU1QTUxhYmVsczsKICAgICBtX3RpbWVBTVBNTGFiZWxzLnJlc2Vy
dmVDYXBhY2l0eSgyKTsKICAgICBSZXRhaW5QdHI8TlNEYXRlRm9ybWF0dGVyPiBmb3JtYXR0ZXIg
PSBzaG9ydFRpbWVGb3JtYXR0ZXIoKTsKLSAgICBtX3RpbWVBTVBNTGFiZWxzLmFwcGVuZChbZm9y
bWF0dGVyLmdldCgpIEFNU3ltYm9sXSk7Ci0gICAgbV90aW1lQU1QTUxhYmVscy5hcHBlbmQoW2Zv
cm1hdHRlci5nZXQoKSBQTVN5bWJvbF0pOworICAgIG1fdGltZUFNUE1MYWJlbHMuYXBwZW5kKFtm
b3JtYXR0ZXIgQU1TeW1ib2xdKTsKKyAgICBtX3RpbWVBTVBNTGFiZWxzLmFwcGVuZChbZm9ybWF0
dGVyIFBNU3ltYm9sXSk7CiAgICAgcmV0dXJuIG1fdGltZUFNUE1MYWJlbHM7CiB9CiAKQEAgLTI4
NCwyNyArMjg0LDI3IEBAIHZvaWQgTG9jYWxlQ29jb2E6OmluaXRpYWxpemVMb2NhbGVEYXRhKCkK
ICAgICBtX2RpZEluaXRpYWxpemVOdW1iZXJEYXRhID0gdHJ1ZTsKIAogICAgIFJldGFpblB0cjxO
U051bWJlckZvcm1hdHRlcj4gZm9ybWF0dGVyID0gYWRvcHROUyhbW05TTnVtYmVyRm9ybWF0dGVy
IGFsbG9jXSBpbml0XSk7Ci0gICAgW2Zvcm1hdHRlci5nZXQoKSBzZXRMb2NhbGU6bV9sb2NhbGUu
Z2V0KCldOwotICAgIFtmb3JtYXR0ZXIuZ2V0KCkgc2V0TnVtYmVyU3R5bGU6TlNOdW1iZXJGb3Jt
YXR0ZXJEZWNpbWFsU3R5bGVdOwotICAgIFtmb3JtYXR0ZXIuZ2V0KCkgc2V0VXNlc0dyb3VwaW5n
U2VwYXJhdG9yOk5PXTsKKyAgICBbZm9ybWF0dGVyIHNldExvY2FsZTptX2xvY2FsZS5nZXQoKV07
CisgICAgW2Zvcm1hdHRlciBzZXROdW1iZXJTdHlsZTpOU051bWJlckZvcm1hdHRlckRlY2ltYWxT
dHlsZV07CisgICAgW2Zvcm1hdHRlciBzZXRVc2VzR3JvdXBpbmdTZXBhcmF0b3I6Tk9dOwogCiAg
ICAgUmV0YWluUHRyPE5TTnVtYmVyPiBzYW1wbGVOdW1iZXIgPSBhZG9wdE5TKFtbTlNOdW1iZXIg
YWxsb2NdIGluaXRXaXRoRG91YmxlOjk4NzY1NDMyMTBdKTsKLSAgICBTdHJpbmcgbmluZVRvWmVy
byhbZm9ybWF0dGVyLmdldCgpIHN0cmluZ0Zyb21OdW1iZXI6c2FtcGxlTnVtYmVyLmdldCgpXSk7
CisgICAgU3RyaW5nIG5pbmVUb1plcm8oW2Zvcm1hdHRlciBzdHJpbmdGcm9tTnVtYmVyOnNhbXBs
ZU51bWJlci5nZXQoKV0pOwogICAgIGlmIChuaW5lVG9aZXJvLmxlbmd0aCgpICE9IDEwKQogICAg
ICAgICByZXR1cm47CiAgICAgVmVjdG9yPFN0cmluZywgRGVjaW1hbFN5bWJvbHNTaXplPiBzeW1i
b2xzOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAxMDsgKytpKQogICAgICAgICBzeW1i
b2xzLmFwcGVuZChuaW5lVG9aZXJvLnN1YnN0cmluZyg5IC0gaSwgMSkpOwogICAgIEFTU0VSVChz
eW1ib2xzLnNpemUoKSA9PSBEZWNpbWFsU2VwYXJhdG9ySW5kZXgpOwotICAgIHN5bWJvbHMuYXBw
ZW5kKFtmb3JtYXR0ZXIuZ2V0KCkgZGVjaW1hbFNlcGFyYXRvcl0pOworICAgIHN5bWJvbHMuYXBw
ZW5kKFtmb3JtYXR0ZXIgZGVjaW1hbFNlcGFyYXRvcl0pOwogICAgIEFTU0VSVChzeW1ib2xzLnNp
emUoKSA9PSBHcm91cFNlcGFyYXRvckluZGV4KTsKLSAgICBzeW1ib2xzLmFwcGVuZChbZm9ybWF0
dGVyLmdldCgpIGdyb3VwaW5nU2VwYXJhdG9yXSk7CisgICAgc3ltYm9scy5hcHBlbmQoW2Zvcm1h
dHRlciBncm91cGluZ1NlcGFyYXRvcl0pOwogICAgIEFTU0VSVChzeW1ib2xzLnNpemUoKSA9PSBE
ZWNpbWFsU3ltYm9sc1NpemUpOwogCi0gICAgU3RyaW5nIHBvc2l0aXZlUHJlZml4KFtmb3JtYXR0
ZXIuZ2V0KCkgcG9zaXRpdmVQcmVmaXhdKTsKLSAgICBTdHJpbmcgcG9zaXRpdmVTdWZmaXgoW2Zv
cm1hdHRlci5nZXQoKSBwb3NpdGl2ZVN1ZmZpeF0pOwotICAgIFN0cmluZyBuZWdhdGl2ZVByZWZp
eChbZm9ybWF0dGVyLmdldCgpIG5lZ2F0aXZlUHJlZml4XSk7Ci0gICAgU3RyaW5nIG5lZ2F0aXZl
U3VmZml4KFtmb3JtYXR0ZXIuZ2V0KCkgbmVnYXRpdmVTdWZmaXhdKTsKKyAgICBTdHJpbmcgcG9z
aXRpdmVQcmVmaXgoW2Zvcm1hdHRlciBwb3NpdGl2ZVByZWZpeF0pOworICAgIFN0cmluZyBwb3Np
dGl2ZVN1ZmZpeChbZm9ybWF0dGVyIHBvc2l0aXZlU3VmZml4XSk7CisgICAgU3RyaW5nIG5lZ2F0
aXZlUHJlZml4KFtmb3JtYXR0ZXIgbmVnYXRpdmVQcmVmaXhdKTsKKyAgICBTdHJpbmcgbmVnYXRp
dmVTdWZmaXgoW2Zvcm1hdHRlciBuZWdhdGl2ZVN1ZmZpeF0pOwogICAgIHNldExvY2FsZURhdGEo
c3ltYm9scywgcG9zaXRpdmVQcmVmaXgsIHBvc2l0aXZlU3VmZml4LCBuZWdhdGl2ZVByZWZpeCwg
bmVnYXRpdmVTdWZmaXgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L2NvY29hL0xvY2FsaXplZERhdGVDYWNoZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvY29jb2EvTG9jYWxpemVkRGF0ZUNhY2hlLm1tCmluZGV4IDNhMWQxNjNhOGQ2NGMw
ZTZjYmIzNTg1N2YyNGQ3Yjc2MWNmZjljZDIuLjkzODRkMDJkYzcwYzQ5Y2NhMWM2MzVlNWU4ODZj
NDNlZDkzZDljMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY29j
b2EvTG9jYWxpemVkRGF0ZUNhY2hlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvY29jb2EvTG9jYWxpemVkRGF0ZUNhY2hlLm1tCkBAIC0xNDYsMTIgKzE0NiwxMiBAQCBmbG9h
dCBMb2NhbGl6ZWREYXRlQ2FjaGU6OmNhbGN1bGF0ZU1heGltdW1XaWR0aChEYXRlQ29tcG9uZW50
c1R5cGUgdHlwZSwgY29uc3QgTQogICAgIC8vIGRhdGUgZG9lc24ndCBhZGp1c3QgZm9yIHRoZSBj
dXJyZW50IHRpbWV6b25lLiBUaGlzIGlzIGFuIGFyYml0cmFyeSBkYXRlCiAgICAgLy8gKHgtMjct
MjAwNykgYW5kIHRpbWUgKDEwOjQ1IFBNKS4KICAgICBSZXRhaW5QdHI8TlNDYWxlbmRhcj4gZ3Jl
Z29yaWFuID0gYWRvcHROUyhbW05TQ2FsZW5kYXIgYWxsb2NdIGluaXRXaXRoQ2FsZW5kYXJJZGVu
dGlmaWVyOk5TQ2FsZW5kYXJJZGVudGlmaWVyR3JlZ29yaWFuXSk7Ci0gICAgW2dyZWdvcmlhbi5n
ZXQoKSBzZXRUaW1lWm9uZTpbTlNUaW1lWm9uZSB0aW1lWm9uZUZvclNlY29uZHNGcm9tR01UOjBd
XTsKKyAgICBbZ3JlZ29yaWFuIHNldFRpbWVab25lOltOU1RpbWVab25lIHRpbWVab25lRm9yU2Vj
b25kc0Zyb21HTVQ6MF1dOwogICAgIFJldGFpblB0cjxOU0RhdGVDb21wb25lbnRzPiBjb21wb25l
bnRzID0gYWRvcHROUyhbW05TRGF0ZUNvbXBvbmVudHMgYWxsb2NdIGluaXRdKTsKLSAgICBbY29t
cG9uZW50cy5nZXQoKSBzZXREYXk6MjddOwotICAgIFtjb21wb25lbnRzLmdldCgpIHNldFllYXI6
MjAwN107Ci0gICAgW2NvbXBvbmVudHMuZ2V0KCkgc2V0SG91cjoyMl07Ci0gICAgW2NvbXBvbmVu
dHMuZ2V0KCkgc2V0TWludXRlOjQ1XTsKKyAgICBbY29tcG9uZW50cyBzZXREYXk6MjddOworICAg
IFtjb21wb25lbnRzIHNldFllYXI6MjAwN107CisgICAgW2NvbXBvbmVudHMgc2V0SG91cjoyMl07
CisgICAgW2NvbXBvbmVudHMgc2V0TWludXRlOjQ1XTsKIAogICAgIHN0YXRpYyBjb25zdCBOU1VJ
bnRlZ2VyIG51bWJlck9mR3JlZ29yaWFuTW9udGhzID0gW1tkYXRlRm9ybWF0dGVyIG1vbnRoU3lt
Ym9sc10gY291bnRdOwogICAgIEFTU0VSVChudW1iZXJPZkdyZWdvcmlhbk1vbnRocyA9PSAxMik7
CkBAIC0xNjMsOCArMTYzLDggQEAgZmxvYXQgTG9jYWxpemVkRGF0ZUNhY2hlOjpjYWxjdWxhdGVN
YXhpbXVtV2lkdGgoRGF0ZUNvbXBvbmVudHNUeXBlIHR5cGUsIGNvbnN0IE0KICAgICAgICAgfHwg
dHlwZSA9PSBEYXRlQ29tcG9uZW50c1R5cGU6Ok1vbnRoKQogICAgICAgICB0b3RhbE1vbnRoc1Rv
VGVzdCA9IG51bWJlck9mR3JlZ29yaWFuTW9udGhzOwogICAgIGZvciAoTlNVSW50ZWdlciBpID0g
MDsgaSA8IHRvdGFsTW9udGhzVG9UZXN0OyArK2kpIHsKLSAgICAgICAgW2NvbXBvbmVudHMuZ2V0
KCkgc2V0TW9udGg6KGkgKyAxKV07Ci0gICAgICAgIE5TRGF0ZSAqZGF0ZSA9IFtncmVnb3JpYW4u
Z2V0KCkgZGF0ZUZyb21Db21wb25lbnRzOmNvbXBvbmVudHMuZ2V0KCldOworICAgICAgICBbY29t
cG9uZW50cyBzZXRNb250aDooaSArIDEpXTsKKyAgICAgICAgTlNEYXRlICpkYXRlID0gW2dyZWdv
cmlhbiBkYXRlRnJvbUNvbXBvbmVudHM6Y29tcG9uZW50cy5nZXQoKV07CiAgICAgICAgIE5TU3Ry
aW5nICpmb3JtYXR0ZWREYXRlID0gW2RhdGVGb3JtYXR0ZXIgc3RyaW5nRnJvbURhdGU6ZGF0ZV07
CiAgICAgICAgIG1heGltdW1XaWR0aCA9IG1heChtYXhpbXVtV2lkdGgsIG1lYXN1cmVyLm1lYXN1
cmVUZXh0KFN0cmluZyhmb3JtYXR0ZWREYXRlKSkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lQ29jb2EubW0KaW5kZXggMWZmY2I2YzcwZDQ2NDhlYjk5NzYx
Y2RkNmIwOGUwYTk0OTIzNzUyNC4uY2NhOTk3NjZkMmU0ZjZmOWE0ZTI4OTQwNmIwZmRjNWNlZmYy
NjFjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ29jb2EubW0K
QEAgLTIyOCw3ICsyMjgsNyBAQCBTdHJpbmcgUmVuZGVyVGhlbWVDb2NvYTo6bWVkaWFDb250cm9s
c0Zvcm1hdHRlZFN0cmluZ0ZvckR1cmF0aW9uKGNvbnN0IGRvdWJsZSBkdQogICAgICAgICBtX2R1
cmF0aW9uRm9ybWF0dGVyLmdldCgpLmZvcm1hdHRpbmdDb250ZXh0ID0gTlNGb3JtYXR0aW5nQ29u
dGV4dFN0YW5kYWxvbmU7CiAgICAgICAgIG1fZHVyYXRpb25Gb3JtYXR0ZXIuZ2V0KCkubWF4aW11
bVVuaXRDb3VudCA9IDI7CiAgICAgfQotICAgIHJldHVybiBbbV9kdXJhdGlvbkZvcm1hdHRlci5n
ZXQoKSBzdHJpbmdGcm9tVGltZUludGVydmFsOmR1cmF0aW9uSW5TZWNvbmRzXTsKKyAgICByZXR1
cm4gW21fZHVyYXRpb25Gb3JtYXR0ZXIgc3RyaW5nRnJvbVRpbWVJbnRlcnZhbDpkdXJhdGlvbklu
U2Vjb25kc107CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KaW5kZXggNjllZTQ5NjMzNjBlOGM2MDY1
YzFmZjcxMWYxZmIxNjZkZTNiNGY1ZS4uMjlkYTY1MGY4NDMwZTFiZGYwMjYzZjVkNmQ0ZDU0MDQz
Y2YxNWM2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQpA
QCAtMjAwOSwxMCArMjAwOSwxMCBAQCB2b2lkIFJlbmRlclRoZW1lSU9TOjpwYWludFN5c3RlbVBy
ZXZpZXdCYWRnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IFBhaW50SW5mbyYgcGFpbgogICAgICAgICAg
ICAgbV9sYXJnZUJhZGdlU3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlKHsgbGFyZ2VCYWRnZURp
bWVuc2lvbiwgbGFyZ2VCYWRnZURpbWVuc2lvbiB9LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKSk7CiAgICAgICAgIHN1cmZhY2UgPSBtX2xhcmdlQmFkZ2VTdXJmYWNlLT5zdXJmYWNlKCk7
CiAgICAgfQotICAgIFttX2NpQ29udGV4dC5nZXQoKSByZW5kZXI6dHJhbnNsYXRlZEltYWdlIHRv
SU9TdXJmYWNlOnN1cmZhY2UgYm91bmRzOmJhZGdlUmVjdCBjb2xvclNwYWNlOnNSR0JDb2xvclNw
YWNlUmVmKCldOworICAgIFttX2NpQ29udGV4dCByZW5kZXI6dHJhbnNsYXRlZEltYWdlIHRvSU9T
dXJmYWNlOnN1cmZhY2UgYm91bmRzOmJhZGdlUmVjdCBjb2xvclNwYWNlOnNSR0JDb2xvclNwYWNl
UmVmKCldOwogICAgIGNnSW1hZ2UgPSB1c2VTbWFsbEJhZGdlID8gbV9zbWFsbEJhZGdlU3VyZmFj
ZS0+Y3JlYXRlSW1hZ2UoKSA6IG1fbGFyZ2VCYWRnZVN1cmZhY2UtPmNyZWF0ZUltYWdlKCk7CiAj
ZWxzZQotICAgIGNnSW1hZ2UgPSBhZG9wdENGKFttX2NpQ29udGV4dC5nZXQoKSBjcmVhdGVDR0lt
YWdlOnNvdXJjZU92ZXJGaWx0ZXIub3V0cHV0SW1hZ2UgZnJvbVJlY3Q6ZmxpcHBlZEluc2V0QmFk
Z2VSZWN0XSk7CisgICAgY2dJbWFnZSA9IGFkb3B0Q0YoW21fY2lDb250ZXh0IGNyZWF0ZUNHSW1h
Z2U6c291cmNlT3ZlckZpbHRlci5vdXRwdXRJbWFnZSBmcm9tUmVjdDpmbGlwcGVkSW5zZXRCYWRn
ZVJlY3RdKTsKICNlbmRpZgogCiAgICAgLy8gQmVmb3JlIHdlIHJlbmRlciB0aGUgcmVzdWx0LCB3
ZSBzaG91bGQgY2xpcCB0byBhIGNpcmNsZSBhcm91bmQgdGhlIGJhZGdlIHJlY3RhbmdsZS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQppbmRleCA0MjE4MjM1MzNm
MmM1NjVkYTEwZjhjM2JjNmFkNGEyMGQ5OWJmYjgxLi5lOTY3NWYzZTM2NGM1NTAyMGFjZWQxZTBk
MjdiMzliNjZkYjUxNTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
TWFjLm1tCkBAIC0yMTI0LDggKzIxMjQsOCBAQCBOU1BvcFVwQnV0dG9uQ2VsbCogUmVuZGVyVGhl
bWVNYWM6OnBvcHVwQnV0dG9uKCkgY29uc3QKIHsKICAgICBpZiAoIW1fcG9wdXBCdXR0b24pIHsK
ICAgICAgICAgbV9wb3B1cEJ1dHRvbiA9IGFkb3B0TlMoW1tOU1BvcFVwQnV0dG9uQ2VsbCBhbGxv
Y10gaW5pdFRleHRDZWxsOkAiIiBwdWxsc0Rvd246Tk9dKTsKLSAgICAgICAgW21fcG9wdXBCdXR0
b24uZ2V0KCkgc2V0VXNlc0l0ZW1Gcm9tTWVudTpOT107Ci0gICAgICAgIFttX3BvcHVwQnV0dG9u
LmdldCgpIHNldEZvY3VzUmluZ1R5cGU6TlNGb2N1c1JpbmdUeXBlRXh0ZXJpb3JdOworICAgICAg
ICBbbV9wb3B1cEJ1dHRvbiBzZXRVc2VzSXRlbUZyb21NZW51Ok5PXTsKKyAgICAgICAgW21fcG9w
dXBCdXR0b24gc2V0Rm9jdXNSaW5nVHlwZTpOU0ZvY3VzUmluZ1R5cGVFeHRlcmlvcl07CiAgICAg
ICAgIFttX3BvcHVwQnV0dG9uIHNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246TlNVc2Vy
SW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uTGVmdFRvUmlnaHRdOwogICAgIH0KIApAQCAtMjEzNiwx
MSArMjEzNiwxMSBAQCBOU1NlYXJjaEZpZWxkQ2VsbCogUmVuZGVyVGhlbWVNYWM6OnNlYXJjaCgp
IGNvbnN0CiB7CiAgICAgaWYgKCFtX3NlYXJjaCkgewogICAgICAgICBtX3NlYXJjaCA9IGFkb3B0
TlMoW1tOU1NlYXJjaEZpZWxkQ2VsbCBhbGxvY10gaW5pdFRleHRDZWxsOkAiIl0pOwotICAgICAg
ICBbbV9zZWFyY2guZ2V0KCkgc2V0QmV6ZWxTdHlsZTpOU1RleHRGaWVsZFJvdW5kZWRCZXplbF07
Ci0gICAgICAgIFttX3NlYXJjaC5nZXQoKSBzZXRCZXplbGVkOllFU107Ci0gICAgICAgIFttX3Nl
YXJjaC5nZXQoKSBzZXRFZGl0YWJsZTpZRVNdOwotICAgICAgICBbbV9zZWFyY2guZ2V0KCkgc2V0
Rm9jdXNSaW5nVHlwZTpOU0ZvY3VzUmluZ1R5cGVFeHRlcmlvcl07Ci0gICAgICAgIFttX3NlYXJj
aC5nZXQoKSBzZXRDZW50ZXJlZExvb2s6Tk9dOworICAgICAgICBbbV9zZWFyY2ggc2V0QmV6ZWxT
dHlsZTpOU1RleHRGaWVsZFJvdW5kZWRCZXplbF07CisgICAgICAgIFttX3NlYXJjaCBzZXRCZXpl
bGVkOllFU107CisgICAgICAgIFttX3NlYXJjaCBzZXRFZGl0YWJsZTpZRVNdOworICAgICAgICBb
bV9zZWFyY2ggc2V0Rm9jdXNSaW5nVHlwZTpOU0ZvY3VzUmluZ1R5cGVFeHRlcmlvcl07CisgICAg
ICAgIFttX3NlYXJjaCBzZXRDZW50ZXJlZExvb2s6Tk9dOwogICAgIH0KIAogICAgIHJldHVybiBt
X3NlYXJjaC5nZXQoKTsKQEAgLTIxNTgsOSArMjE1OCw5IEBAIE5TU2xpZGVyQ2VsbCogUmVuZGVy
VGhlbWVNYWM6OnNsaWRlclRodW1iSG9yaXpvbnRhbCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3Ns
aWRlclRodW1iSG9yaXpvbnRhbCkgewogICAgICAgICBtX3NsaWRlclRodW1iSG9yaXpvbnRhbCA9
IGFkb3B0TlMoW1tOU1NsaWRlckNlbGwgYWxsb2NdIGluaXRdKTsKLSAgICAgICAgW21fc2xpZGVy
VGh1bWJIb3Jpem9udGFsLmdldCgpIHNldFNsaWRlclR5cGU6TlNTbGlkZXJUeXBlTGluZWFyXTsK
LSAgICAgICAgW21fc2xpZGVyVGh1bWJIb3Jpem9udGFsLmdldCgpIHNldENvbnRyb2xTaXplOk5T
Q29udHJvbFNpemVTbWFsbF07Ci0gICAgICAgIFttX3NsaWRlclRodW1iSG9yaXpvbnRhbC5nZXQo
KSBzZXRGb2N1c1JpbmdUeXBlOk5TRm9jdXNSaW5nVHlwZUV4dGVyaW9yXTsKKyAgICAgICAgW21f
c2xpZGVyVGh1bWJIb3Jpem9udGFsIHNldFNsaWRlclR5cGU6TlNTbGlkZXJUeXBlTGluZWFyXTsK
KyAgICAgICAgW21fc2xpZGVyVGh1bWJIb3Jpem9udGFsIHNldENvbnRyb2xTaXplOk5TQ29udHJv
bFNpemVTbWFsbF07CisgICAgICAgIFttX3NsaWRlclRodW1iSG9yaXpvbnRhbCBzZXRGb2N1c1Jp
bmdUeXBlOk5TRm9jdXNSaW5nVHlwZUV4dGVyaW9yXTsKICAgICB9CiAKICAgICByZXR1cm4gbV9z
bGlkZXJUaHVtYkhvcml6b250YWwuZ2V0KCk7CkBAIC0yMTcwLDkgKzIxNzAsOSBAQCBOU1NsaWRl
ckNlbGwqIFJlbmRlclRoZW1lTWFjOjpzbGlkZXJUaHVtYlZlcnRpY2FsKCkgY29uc3QKIHsKICAg
ICBpZiAoIW1fc2xpZGVyVGh1bWJWZXJ0aWNhbCkgewogICAgICAgICBtX3NsaWRlclRodW1iVmVy
dGljYWwgPSBhZG9wdE5TKFtbTlNTbGlkZXJDZWxsIGFsbG9jXSBpbml0XSk7Ci0gICAgICAgIFtt
X3NsaWRlclRodW1iVmVydGljYWwuZ2V0KCkgc2V0U2xpZGVyVHlwZTpOU1NsaWRlclR5cGVMaW5l
YXJdOwotICAgICAgICBbbV9zbGlkZXJUaHVtYlZlcnRpY2FsLmdldCgpIHNldENvbnRyb2xTaXpl
Ok5TQ29udHJvbFNpemVTbWFsbF07Ci0gICAgICAgIFttX3NsaWRlclRodW1iVmVydGljYWwuZ2V0
KCkgc2V0Rm9jdXNSaW5nVHlwZTpOU0ZvY3VzUmluZ1R5cGVFeHRlcmlvcl07CisgICAgICAgIFtt
X3NsaWRlclRodW1iVmVydGljYWwgc2V0U2xpZGVyVHlwZTpOU1NsaWRlclR5cGVMaW5lYXJdOwor
ICAgICAgICBbbV9zbGlkZXJUaHVtYlZlcnRpY2FsIHNldENvbnRyb2xTaXplOk5TQ29udHJvbFNp
emVTbWFsbF07CisgICAgICAgIFttX3NsaWRlclRodW1iVmVydGljYWwgc2V0Rm9jdXNSaW5nVHlw
ZTpOU0ZvY3VzUmluZ1R5cGVFeHRlcmlvcl07CiAgICAgfQogCiAgICAgcmV0dXJuIG1fc2xpZGVy
VGh1bWJWZXJ0aWNhbC5nZXQoKTsKQEAgLTIxODIsMTMgKzIxODIsMTMgQEAgTlNUZXh0RmllbGRD
ZWxsKiBSZW5kZXJUaGVtZU1hYzo6dGV4dEZpZWxkKCkgY29uc3QKIHsKICAgICBpZiAoIW1fdGV4
dEZpZWxkKSB7CiAgICAgICAgIG1fdGV4dEZpZWxkID0gYWRvcHROUyhbW1dlYkNvcmVUZXh0Rmll
bGRDZWxsIGFsbG9jXSBpbml0VGV4dENlbGw6QCIiXSk7Ci0gICAgICAgIFttX3RleHRGaWVsZC5n
ZXQoKSBzZXRCZXplbGVkOllFU107Ci0gICAgICAgIFttX3RleHRGaWVsZC5nZXQoKSBzZXRFZGl0
YWJsZTpZRVNdOwotICAgICAgICBbbV90ZXh0RmllbGQuZ2V0KCkgc2V0Rm9jdXNSaW5nVHlwZTpO
U0ZvY3VzUmluZ1R5cGVFeHRlcmlvcl07CisgICAgICAgIFttX3RleHRGaWVsZCBzZXRCZXplbGVk
OllFU107CisgICAgICAgIFttX3RleHRGaWVsZCBzZXRFZGl0YWJsZTpZRVNdOworICAgICAgICBb
bV90ZXh0RmllbGQgc2V0Rm9jdXNSaW5nVHlwZTpOU0ZvY3VzUmluZ1R5cGVFeHRlcmlvcl07CiAg
ICAgICAgIC8vIFBvc3QtTGlvbiwgV2ViQ29yZSBjYW4gYmUgaW4gY2hhcmdlIG9mIHBhaW50aW5u
ZyB0aGUgYmFja2dyb3VuZCB0aGFua3MgdG8KICAgICAgICAgLy8gdGhlIHdvcmthcm91bmQgaW4g
cGxhY2UgZm9yIDxyZGFyOi8vcHJvYmxlbS8xMTM4NTQ2MT4sIHdoaWNoIGlzIGltcGxlbWVudGVk
CiAgICAgICAgIC8vIGFib3ZlIGFzIF9jb3JlVUlEcmF3T3B0aW9uc1dpdGhGcmFtZS4KLSAgICAg
ICAgW21fdGV4dEZpZWxkLmdldCgpIHNldERyYXdzQmFja2dyb3VuZDpOT107CisgICAgICAgIFtt
X3RleHRGaWVsZCBzZXREcmF3c0JhY2tncm91bmQ6Tk9dOwogICAgIH0KIAogICAgIHJldHVybiBt
X3RleHRGaWVsZC5nZXQoKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>