<?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>219674</bug_id>
          
          <creation_ts>2020-12-09 02:35:39 -0800</creation_ts>
          <short_desc>Add a SFrame VP8 experimental compatibility mode</short_desc>
          <delta_ts>2020-12-11 12:45:03 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebRTC</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=219800</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>cdumez</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>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1713079</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-12-09 02:35:39 -0800</bug_when>
    <thetext>Add a SFrame VP8 experimental compatibility mode</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713082</commentid>
    <comment_count>1</comment_count>
      <attachid>415731</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-12-09 02:38:41 -0800</bug_when>
    <thetext>Created attachment 415731
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713084</commentid>
    <comment_count>2</comment_count>
      <attachid>415732</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-12-09 02:46:03 -0800</bug_when>
    <thetext>Created attachment 415732
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713110</commentid>
    <comment_count>3</comment_count>
      <attachid>415746</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-12-09 04:55:33 -0800</bug_when>
    <thetext>Created attachment 415746
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713489</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-12-10 04:49:24 -0800</bug_when>
    <thetext>Tools/Scripts/svn-apply failed to apply attachment 415746 to trunk.
Please resolve the conflicts and upload a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713543</commentid>
    <comment_count>5</comment_count>
      <attachid>415876</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-12-10 08:03:19 -0800</bug_when>
    <thetext>Created attachment 415876
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713641</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-12-10 11:49:03 -0800</bug_when>
    <thetext>Committed r270641: &lt;https://trac.webkit.org/changeset/270641&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 415876.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713642</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-12-10 11:50:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/72190731&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415731</attachid>
            <date>2020-12-09 02:38:41 -0800</date>
            <delta_ts>2020-12-09 02:45:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219674-20201209113839.patch</filename>
            <type>text/plain</type>
            <size>35721</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNTMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjBiZDRlNWZhNDQ0ODMz
ZGJjNDVjZTZhOGJmYjNjZDdhYmQxYTdmMy4uOTBjMDYwYTMzN2I0NTljYTU3ZTQ5NDc3YzFkZWJi
MDcyNzNkNjk0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIwLTEyLTA5ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYSBTRnJhbWUgVlA4
IGV4cGVyaW1lbnRhbCBjb21wYXRpYmlsaXR5IG1vZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTY3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbWlsYXJseSB0byBIMjY0LCBwcmVmaXggdGhlIFNG
cmFtZSBjb250ZW50IHdpdGggc29tZSBkYXRhIHRvIGVuc3VyZSBrZXkgZnJhbWVzIG9yIHJlc29s
dXRpb24gY2FuIGJlIGRldGVjdGVkCisgICAgICAgIHdpdGhvdXQgcmV2ZWFsaW5nIHRoZSBhY3R1
YWwgY29udGVudC4KKworICAgICAgICBDb3ZlcmVkIGJ5IHVwZGF0ZWQgdGVzdC4KKworICAgICAg
ICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmlkbDoKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpkZWNyeXB0RnJhbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmVuY3J5cHRGcmFtZSk6
CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5o
OgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vU0ZyYW1lVXRpbHMuY3BwOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9IMjY0VXRpbHMuY3BwLgor
ICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZUgyNjRQcmVmaXhPZmZzZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6Y29tcHV0ZUgyNjRQcmVmaXhCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6aXNWUDhL
ZXlGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlVlA4UHJlZml4T2Zmc2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OmNvbXB1dGVWUDhQcmVmaXhCdWZmZXIpOgorICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vU0ZyYW1lVXRpbHMuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vSDI2NFV0aWxzLmguCisgICAgICAgICogU291cmNlcy50eHQ6
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDIwLTEy
LTA4ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBHYXRlIFZQ
OSBleHBvc3VyZSBpbiBNZWRpYUNhcGFiaWxpdGllcyBvbiBWUDlEZWNvZGVyRW5hYmxlZCBwcmVm
ZXJlbmNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0gy
NjRVdGlscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0gyNjRVdGls
cy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQxODdlODFiNDEwN2M5YzkyYWFi
Mzc1YWRlNTQ0NDJlYzk1NDZjOWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9IMjY0VXRpbHMu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTg2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
SDI2NFV0aWxzLmgiCi0KLSNpZiBFTkFCTEUoV0VCX1JUQykKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1zdGF0aWMgaW5saW5lIGJvb2wgaXNTbGljZU5BTFUodWludDhfdCBkYXRhKQotewotICAg
IHJldHVybiAoZGF0YSAmIDB4MUYpID09IDE7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBpc1NQ
U05BTFUodWludDhfdCBkYXRhKQotewotICAgIHJldHVybiAoZGF0YSAmIDB4MUYpID09IDc7Ci19
Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBpc1BQU05BTFUodWludDhfdCBkYXRhKQotewotICAgIHJl
dHVybiAoZGF0YSAmIDB4MUYpID09IDg7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBpc0lEUk5B
TFUodWludDhfdCBkYXRhKQotewotICAgIHJldHVybiAoZGF0YSAmIDB4MUYpID09IDU7Ci19Ci0K
LXN0YXRpYyBpbmxpbmUgdm9pZCBmaW5kTmFsdXMoY29uc3QgdWludDhfdCogZnJhbWVEYXRhLCBz
aXplX3QgZnJhbWVTaXplLCBzaXplX3Qgb2Zmc2V0LCBjb25zdCBGdW5jdGlvbjxib29sKHNpemVf
dCk+JiBjYWxsYmFjaykKLXsKLSAgICBmb3IgKHNpemVfdCBpID0gNCArIG9mZnNldDsgaSA8IGZy
YW1lU2l6ZTsgKytpKSB7Ci0gICAgICAgIGlmIChmcmFtZURhdGFbaSAtIDRdID09IDAgJiYgZnJh
bWVEYXRhW2kgLSAzXSA9PSAwICYmIGZyYW1lRGF0YVtpIC0gMl0gPT0gMCAmJiBmcmFtZURhdGFb
aSAtIDFdID09IDEpIHsKLSAgICAgICAgICAgIGlmIChjYWxsYmFjayhpKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXNpemVfdCBjb21wdXRlUHJlZml4
T2Zmc2V0KGNvbnN0IHVpbnQ4X3QqIGZyYW1lRGF0YSwgc2l6ZV90IGZyYW1lU2l6ZSkKLXsKLSAg
ICBzaXplX3Qgb2Zmc2V0ID0gMDsKLSAgICBmaW5kTmFsdXMoZnJhbWVEYXRhLCBmcmFtZVNpemUs
IDAsIFsmb2Zmc2V0LCAmZnJhbWVEYXRhXShhdXRvIHBvc2l0aW9uKSB7Ci0gICAgICAgIGlmIChp
c0lEUk5BTFUoZnJhbWVEYXRhW3Bvc2l0aW9uXSkgfHwgaXNTbGljZU5BTFUoZnJhbWVEYXRhW3Bv
c2l0aW9uXSkpIHsKLSAgICAgICAgICAgIC8vIFNraXAgMDAgMDAgMDAgMDEsIG5hbHUgdHlwZSBi
eXRlIGFuZCB0aGUgbmV4dCBieXRlLgotICAgICAgICAgICAgb2Zmc2V0ID0gcG9zaXRpb24gKyAy
OwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0pOwotICAgIHJldHVybiBvZmZzZXQ7Ci19Ci0KLWJvb2wgbmVlZHNSYnNwVW5l
c2NhcGluZyhjb25zdCB1aW50OF90KiBmcmFtZURhdGEsIHNpemVfdCBmcmFtZVNpemUpCi17Ci0g
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmcmFtZVNpemUgLSAzOyArK2kpIHsKLSAgICAgICAg
aWYgKGZyYW1lRGF0YVtpXSA9PSAwICYmIGZyYW1lRGF0YVtpICsgMV0gPT0gMCAmJiBmcmFtZURh
dGFbaSArIDJdID09IDMpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0
dXJuIGZhbHNlOwotfQotCi1WZWN0b3I8dWludDhfdD4gZnJvbVJic3AoY29uc3QgdWludDhfdCog
ZnJhbWVEYXRhLCBzaXplX3QgZnJhbWVTaXplKQotewotICAgIFZlY3Rvcjx1aW50OF90PiBidWZm
ZXI7Ci0gICAgYnVmZmVyLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZnJhbWVTaXplKTsKLQotICAg
IHNpemVfdCBpOwotICAgIGZvciAoaSA9IDA7IGkgPCBmcmFtZVNpemUgLSAzOyArK2kpIHsKLSAg
ICAgICAgaWYgKGZyYW1lRGF0YVtpXSA9PSAwICYmIGZyYW1lRGF0YVtpICsgMV0gPT0gMCAmJiBm
cmFtZURhdGFbaSArIDJdID09IDMpIHsKLSAgICAgICAgICAgIGJ1ZmZlci51bmNoZWNrZWRBcHBl
bmQoZnJhbWVEYXRhW2ldKTsKLSAgICAgICAgICAgIGJ1ZmZlci51bmNoZWNrZWRBcHBlbmQoZnJh
bWVEYXRhW2kgKyAxXSk7Ci0gICAgICAgICAgICAvLyBTa2lwIG5leHQgYnl0ZSB3aGljaCBpcyBk
ZWxpbWl0ZXIuCi0gICAgICAgICAgICBpICs9IDI7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgYnVmZmVyLnVuY2hlY2tlZEFwcGVuZChmcmFtZURhdGFbaV0pOwotICAgIH0KLSAgICBmb3Ig
KDsgaSA8IGZyYW1lU2l6ZTsgKytpKQotICAgICAgICBidWZmZXIudW5jaGVja2VkQXBwZW5kKGZy
YW1lRGF0YVtpXSk7Ci0KLSAgICByZXR1cm4gYnVmZmVyOwotfQotCi1IMjY0UHJlZml4QnVmZmVy
IGNvbXB1dGVQcmVmaXhCdWZmZXIoY29uc3QgdWludDhfdCogZnJhbWVEYXRhLCBzaXplX3QgZnJh
bWVTaXplKQotewotICAgIC8vIERlbHRhIGFuZCBrZXkgcHJlZml4ZXMgYXNzdW1lIFNQUy9QUFMg
d2l0aCBJRHMgZXF1YWwgdG8gMCBoYXZlIGJlZW4gdHJhbnNtaXR0ZWQuCi0gICAgc3RhdGljIGNv
bnN0IHVpbnQ4X3QgcHJlZml4RGVsdGFGcmFtZVs2XSA9IHsgMHgwMCwgMHgwMCwgMHgwMCwgMHgw
MSwgMHgyMSwgMHhlMCB9OwotCi0gICAgaWYgKGZyYW1lU2l6ZSA8IDUpCi0gICAgICAgIHJldHVy
biB7IH07Ci0KLSAgICAvLyBXZSBhc3N1bWUgYSBrZXkgZnJhbWUgc3RhcnRzIHdpdGggU1BTLCB0
aGVuIFBQUy4gT3RoZXJ3aXNlIHdlIHdyYXAgaXQgYXMgYSBkZWx0YSBmcmFtZS4KLSAgICBpZiAo
IWlzU1BTTkFMVShmcmFtZURhdGFbNF0pKQotICAgICAgICByZXR1cm4gSDI2NFByZWZpeEJ1ZmZl
ciB7IHByZWZpeERlbHRhRnJhbWUsIHNpemVvZihwcmVmaXhEZWx0YUZyYW1lKSwgeyB9IH07Ci0K
LSAgICAvLyBTZWFyY2ggZm9yIFBQUwotICAgIHNpemVfdCBzcHNQcHNMZW5ndGggPSAwOwotICAg
IGZpbmROYWx1cyhmcmFtZURhdGEsIGZyYW1lU2l6ZSwgNSwgW2ZyYW1lRGF0YSwgJnNwc1Bwc0xl
bmd0aF0oYXV0byBwb3NpdGlvbikgewotICAgICAgICBpZiAoaXNQUFNOQUxVKGZyYW1lRGF0YVtw
b3NpdGlvbl0pKQotICAgICAgICAgICAgc3BzUHBzTGVuZ3RoID0gcG9zaXRpb247Ci0gICAgICAg
IHJldHVybiB0cnVlOwotICAgIH0pOwotICAgIGlmICghc3BzUHBzTGVuZ3RoKQotICAgICAgICBy
ZXR1cm4gSDI2NFByZWZpeEJ1ZmZlciB7IHByZWZpeERlbHRhRnJhbWUsIHNpemVvZihwcmVmaXhE
ZWx0YUZyYW1lKSwgeyB9IH07Ci0KLSAgICAvLyBTZWFyY2ggZm9yIG5leHQgTkFMVSB0byBjb21w
dXRlIHRoZSByZWFsIHNwc1Bwc0xlbmd0aCwgaW5jbHVkaW5nIHRoZSBuZXh0IDAwIDAwIDAwIDAx
LgotICAgIGZpbmROYWx1cyhmcmFtZURhdGEsIGZyYW1lU2l6ZSwgc3BzUHBzTGVuZ3RoICsgMSwg
WyZzcHNQcHNMZW5ndGhdKGF1dG8gcG9zaXRpb24pIHsKLSAgICAgICAgc3BzUHBzTGVuZ3RoID0g
cG9zaXRpb247Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0pOwotCi0gICAgVmVjdG9yPHVp
bnQ4X3Q+IGJ1ZmZlcjsKLSAgICBidWZmZXIucmVzaXplKHNwc1Bwc0xlbmd0aCArIDIpOwotICAg
IHN0ZDo6bWVtY3B5KGJ1ZmZlci5kYXRhKCksIGZyYW1lRGF0YSwgc3BzUHBzTGVuZ3RoKTsKLSAg
ICBidWZmZXJbc3BzUHBzTGVuZ3RoXSA9IDB4MjU7Ci0gICAgYnVmZmVyW3Nwc1Bwc0xlbmd0aCAr
IDFdID0gMHhiODsKLSAgICByZXR1cm4geyBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpLCBX
VEZNb3ZlKGJ1ZmZlcikgfTsKLX0KLQotc3RhdGljIGlubGluZSB2b2lkIGZpbmRFc2NhcGVSYnNw
UGF0dGVybnMoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBmcmFtZSwgc2l6ZV90IG9mZnNldCwgY29u
c3QgRnVuY3Rpb248dm9pZChzaXplX3QsIGJvb2wpPiYgY2FsbGJhY2spCi17Ci0gICAgc2l6ZV90
IG51bUNvbnNlY3V0aXZlWmVyb3MgPSAwOwotICAgIGF1dG8qIGRhdGEgPSBmcmFtZS5kYXRhKCk7
Ci0gICAgZm9yIChzaXplX3QgaSA9IG9mZnNldDsgaSA8IGZyYW1lLnNpemUoKTsgKytpKSB7Ci0g
ICAgICAgIGJvb2wgc2hvdWxkRXNjYXBlID0gZGF0YVtpXSA8PSAzICYmIG51bUNvbnNlY3V0aXZl
WmVyb3MgPj0gMjsKLSAgICAgICAgaWYgKHNob3VsZEVzY2FwZSkKLSAgICAgICAgICAgIG51bUNv
bnNlY3V0aXZlWmVyb3MgPSAwOwotCi0gICAgICAgIGlmIChkYXRhW2ldID09IDApCi0gICAgICAg
ICAgICArK251bUNvbnNlY3V0aXZlWmVyb3M7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG51
bUNvbnNlY3V0aXZlWmVyb3MgPSAwOwotCi0gICAgICAgIGNhbGxiYWNrKGksIHNob3VsZEVzY2Fw
ZSk7Ci0gICAgfQotfQotCi12b2lkIHRvUmJzcChWZWN0b3I8dWludDhfdD4mIGZyYW1lLCBzaXpl
X3Qgb2Zmc2V0KQotewotICAgIHNpemVfdCBjb3VudCA9IDA7Ci0gICAgZmluZEVzY2FwZVJic3BQ
YXR0ZXJucyhmcmFtZSwgb2Zmc2V0LCBbJmNvdW50XShzaXplX3QsIGJvb2wgc2hvdWRsQmVFc2Nh
cGVkKSB7Ci0gICAgICAgIGlmIChzaG91ZGxCZUVzY2FwZWQpCi0gICAgICAgICAgICBjb3VudCsr
OwotICAgIH0pOwotICAgIGlmICghY291bnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIFZlY3Rv
cjx1aW50OF90PiBuZXdGcmFtZTsKLSAgICBuZXdGcmFtZS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KGZyYW1lLnNpemUoKSArIGNvdW50KTsKLSAgICBuZXdGcmFtZS5hcHBlbmQoZnJhbWUuZGF0YSgp
LCBvZmZzZXQpOwotCi0gICAgZmluZEVzY2FwZVJic3BQYXR0ZXJucyhmcmFtZSwgb2Zmc2V0LCBb
ZGF0YSA9IGZyYW1lLmRhdGEoKSwgJm5ld0ZyYW1lXShzaXplX3QgcG9zaXRpb24sIGJvb2wgc2hv
dWRsQmVFc2NhcGVkKSB7Ci0gICAgICAgIGlmIChzaG91ZGxCZUVzY2FwZWQpCi0gICAgICAgICAg
ICBuZXdGcmFtZS51bmNoZWNrZWRBcHBlbmQoMyk7Ci0gICAgICAgIG5ld0ZyYW1lLnVuY2hlY2tl
ZEFwcGVuZChkYXRhW3Bvc2l0aW9uXSk7Ci0gICAgfSk7Ci0KLSAgICBmcmFtZSA9IFdURk1vdmUo
bmV3RnJhbWUpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFC
TEUoV0VCX1JUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vSDI2NFV0aWxzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0gyNjRV
dGlscy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNjZhNTc3MTI5YzhmNDUyMzUz
MzVmMDVjM2Q4NjkzMDI2NDJhMzRjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vSDI2NFV0aWxz
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCX1JU
QykKLQotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1z
dHJ1Y3QgSDI2NFByZWZpeEJ1ZmZlciB7Ci0gICAgY29uc3QgdWludDhfdCogZGF0YSB7IG51bGxw
dHIgfTsKLSAgICBzaXplX3Qgc2l6ZSB7IDAgfTsKLSAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVy
OwotfTsKLQotc2l6ZV90IGNvbXB1dGVQcmVmaXhPZmZzZXQoY29uc3QgdWludDhfdCosIHNpemVf
dCk7Ci1IMjY0UHJlZml4QnVmZmVyIGNvbXB1dGVQcmVmaXhCdWZmZXIoY29uc3QgdWludDhfdCos
IHNpemVfdCk7Ci0KLVdFQkNPUkVfRVhQT1JUIGJvb2wgbmVlZHNSYnNwVW5lc2NhcGluZyhjb25z
dCB1aW50OF90Kiwgc2l6ZV90KTsKLVdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBmcm9t
UmJzcChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLVdFQkNPUkVfRVhQT1JUIHZvaWQgdG9SYnNw
KFZlY3Rvcjx1aW50OF90PiYsIHNpemVfdCk7Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uaWRsIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uaWRsCmluZGV4IDBk
ZGNhNDQ0YzhjNzQzZjkwNzA0MTg1NzhjMGM5OGY5MzA4NWQ3YWYuLjYxZDE2YTVhOThmNmRhMmQ3
MTMyYzNmYjFlMGIyZTg1NDliMDFmNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmlkbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5pZGwKQEAgLTMw
LDcgKzMwLDggQEAgZW51bSBSVENSdHBTRnJhbWVUcmFuc2Zvcm1Sb2xlIHsKIAogZW51bSBSVENS
dHBTRnJhbWVUcmFuc2Zvcm1Db21wYXRpYmlsaXR5TW9kZSB7CiAgICAgIm5vbmUiLAotICAgICJI
MjY0IgorICAgICJIMjY0IiwKKyAgICAiVlA4IgogfTsKIAogZGljdGlvbmFyeSBSVENSdHBTRnJh
bWVUcmFuc2Zvcm1PcHRpb25zIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5jcHAKaW5kZXggYjc2
OTNhMDFiMzBmYTM1NWUxZWFkMDNmZTFiYjQ4MTQ4MGJkYzQ5MC4uODliMDhiMzJmYWI4MDdkNjhm
ZmI4ODRlZGIwNWRkOTcxNWM1ZGNmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5jcHAKQEAg
LTI4LDcgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShXRUJfUlRDKQogCi0jaW5jbHVkZSAiSDI2NFV0
aWxzLmgiCisjaW5jbHVkZSAiU0ZyYW1lVXRpbHMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC0xOTYsOCArMTk2LDkgQEAgRXhjZXB0aW9uT3I8dm9pZD4gUlRDUnRwU0ZyYW1lVHJhbnNm
b3JtZXI6OnVwZGF0ZUVuY3J5cHRpb25LZXkoY29uc3QgVmVjdG9yPHVpbnQKIEV4Y2VwdGlvbk9y
PFZlY3Rvcjx1aW50OF90Pj4gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmRlY3J5cHRGcmFtZShj
b25zdCB1aW50OF90KiBmcmFtZURhdGEsIHNpemVfdCBmcmFtZVNpemUpCiB7CiAgICAgVmVjdG9y
PHVpbnQ4X3Q+IGJ1ZmZlcjsKLSAgICBpZiAobV9jb21wYXRpYmlsaXR5TW9kZSA9PSBDb21wYXRp
YmlsaXR5TW9kZTo6SDI2NCkgewotICAgICAgICBhdXRvIG9mZnNldCA9IGNvbXB1dGVQcmVmaXhP
ZmZzZXQoZnJhbWVEYXRhLCBmcmFtZVNpemUpOworICAgIHN3aXRjaCAobV9jb21wYXRpYmlsaXR5
TW9kZSkgeworICAgIGNhc2UgQ29tcGF0aWJpbGl0eU1vZGU6OkgyNjQ6IHsKKyAgICAgICAgYXV0
byBvZmZzZXQgPSBjb21wdXRlSDI2NFByZWZpeE9mZnNldChmcmFtZURhdGEsIGZyYW1lU2l6ZSk7
CiAgICAgICAgIGZyYW1lRGF0YSArPSBvZmZzZXQ7CiAgICAgICAgIGZyYW1lU2l6ZSAtPSBvZmZz
ZXQ7CiAgICAgICAgIGlmIChuZWVkc1Jic3BVbmVzY2FwaW5nKGZyYW1lRGF0YSwgZnJhbWVTaXpl
KSkgewpAQCAtMjA1LDYgKzIwNiwxNiBAQCBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IFJU
Q1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpkZWNyeXB0RnJhbWUoY29uc3QgdWludDhfdAogICAgICAg
ICAgICAgZnJhbWVEYXRhID0gYnVmZmVyLmRhdGEoKTsKICAgICAgICAgICAgIGZyYW1lU2l6ZSA9
IGJ1ZmZlci5zaXplKCk7CiAgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNh
c2UgQ29tcGF0aWJpbGl0eU1vZGU6OlZQODogeworICAgICAgICBhdXRvIG9mZnNldCA9IGNvbXB1
dGVWUDhQcmVmaXhPZmZzZXQoZnJhbWVEYXRhLCBmcmFtZVNpemUpOworICAgICAgICBmcmFtZURh
dGEgKz0gb2Zmc2V0OworICAgICAgICBmcmFtZVNpemUgLT0gb2Zmc2V0OworICAgICAgICBicmVh
azsKKyAgICB9CisgICAgY2FzZSBDb21wYXRpYmlsaXR5TW9kZTo6Tm9uZToKKyAgICAgICAgYnJl
YWs7CiAgICAgfQogCiAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2tleUxvY2spOwpAQCAt
MjU5LDkgKzI3MCwxNyBAQCBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IFJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybWVyOjplbmNyeXB0RnJhbWUoY29uc3QgdWludDhfdAogICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBNYXhIZWFkZXJTaXplID0gMTc7CiAKICAgICBWZWN0b3I8dWludDhfdD4gdHJh
bnNmb3JtZWREYXRhOwotICAgIEgyNjRQcmVmaXhCdWZmZXIgcHJlZml4QnVmZmVyOwotICAgIGlm
IChtX2NvbXBhdGliaWxpdHlNb2RlID09IENvbXBhdGliaWxpdHlNb2RlOjpIMjY0KQotICAgICAg
ICBwcmVmaXhCdWZmZXIgPSBjb21wdXRlUHJlZml4QnVmZmVyKGZyYW1lRGF0YSwgZnJhbWVTaXpl
KTsKKyAgICBTRnJhbWVDb21wYXRpYmlsaXR5UHJlZml4QnVmZmVyIHByZWZpeEJ1ZmZlcjsKKyAg
ICBzd2l0Y2ggKG1fY29tcGF0aWJpbGl0eU1vZGUpIHsKKyAgICBjYXNlIENvbXBhdGliaWxpdHlN
b2RlOjpIMjY0OgorICAgICAgICBwcmVmaXhCdWZmZXIgPSBjb21wdXRlSDI2NFByZWZpeEJ1ZmZl
cihmcmFtZURhdGEsIGZyYW1lU2l6ZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ29tcGF0
aWJpbGl0eU1vZGU6OlZQODoKKyAgICAgICAgcHJlZml4QnVmZmVyID0gY29tcHV0ZVZQOFByZWZp
eEJ1ZmZlcihmcmFtZURhdGEsIGZyYW1lU2l6ZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
Q29tcGF0aWJpbGl0eU1vZGU6Ok5vbmU6CisgICAgICAgIGJyZWFrOworICAgIH0KIAogICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sobV9rZXlMb2NrKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5o
CmluZGV4IGM4ZDM4ZTdlYzU4M2RkNDBlNmFjYmM2ZjZjZTRkNjY0NTNiMjBlYjguLjM3ZWUxYWM5
MGQ0YjE1YWYzMzgyOTI0YjU5MjAwMzNmMzhhZDNlNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVy
LmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgQ3J5cHRvS2V5OwogCiBjbGFzcyBSVENSdHBTRnJh
bWVUcmFuc2Zvcm1lciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxSVENSdHBTRnJhbWVU
cmFuc2Zvcm1lciwgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFpbj4gewogcHVibGljOgotICAg
IGVudW0gY2xhc3MgQ29tcGF0aWJpbGl0eU1vZGUgeyBOb25lLCBIMjY0IH07CisgICAgZW51bSBj
bGFzcyBDb21wYXRpYmlsaXR5TW9kZSB7IE5vbmUsIEgyNjQsIFZQOCB9OwogCiAgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJlZjxSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcj4gY3JlYXRlKENvbXBh
dGliaWxpdHlNb2RlID0gQ29tcGF0aWJpbGl0eU1vZGU6Ok5vbmUpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIH5SVENSdHBTRnJhbWVUcmFuc2Zvcm1lcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9TRnJhbWVVdGlscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1NGcmFtZVV0aWxzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wODI3NTJiMzQ2
MmY4N2VhOGU3MTE0OTI2MmI2MTE4NjhjNWZiM2ZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9TRnJhbWVVdGlscy5jcHAKQEAgLTAsMCArMSwy
MDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU0ZyYW1lVXRpbHMuaCIKKworI2lmIEVOQUJMRShX
RUJfUlRDKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc1Ns
aWNlTkFMVSh1aW50OF90IGRhdGEpCit7CisgICAgcmV0dXJuIChkYXRhICYgMHgxRikgPT0gMTsK
K30KKworc3RhdGljIGlubGluZSBib29sIGlzU1BTTkFMVSh1aW50OF90IGRhdGEpCit7CisgICAg
cmV0dXJuIChkYXRhICYgMHgxRikgPT0gNzsKK30KKworc3RhdGljIGlubGluZSBib29sIGlzUFBT
TkFMVSh1aW50OF90IGRhdGEpCit7CisgICAgcmV0dXJuIChkYXRhICYgMHgxRikgPT0gODsKK30K
Kworc3RhdGljIGlubGluZSBib29sIGlzSURSTkFMVSh1aW50OF90IGRhdGEpCit7CisgICAgcmV0
dXJuIChkYXRhICYgMHgxRikgPT0gNTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGZpbmROYWx1
cyhjb25zdCB1aW50OF90KiBmcmFtZURhdGEsIHNpemVfdCBmcmFtZVNpemUsIHNpemVfdCBvZmZz
ZXQsIGNvbnN0IEZ1bmN0aW9uPGJvb2woc2l6ZV90KT4mIGNhbGxiYWNrKQoreworICAgIGZvciAo
c2l6ZV90IGkgPSA0ICsgb2Zmc2V0OyBpIDwgZnJhbWVTaXplOyArK2kpIHsKKyAgICAgICAgaWYg
KGZyYW1lRGF0YVtpIC0gNF0gPT0gMCAmJiBmcmFtZURhdGFbaSAtIDNdID09IDAgJiYgZnJhbWVE
YXRhW2kgLSAyXSA9PSAwICYmIGZyYW1lRGF0YVtpIC0gMV0gPT0gMSkgeworICAgICAgICAgICAg
aWYgKGNhbGxiYWNrKGkpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
IH0KK30KKworc2l6ZV90IGNvbXB1dGVIMjY0UHJlZml4T2Zmc2V0KGNvbnN0IHVpbnQ4X3QqIGZy
YW1lRGF0YSwgc2l6ZV90IGZyYW1lU2l6ZSkKK3sKKyAgICBzaXplX3Qgb2Zmc2V0ID0gMDsKKyAg
ICBmaW5kTmFsdXMoZnJhbWVEYXRhLCBmcmFtZVNpemUsIDAsIFsmb2Zmc2V0LCAmZnJhbWVEYXRh
XShhdXRvIHBvc2l0aW9uKSB7CisgICAgICAgIGlmIChpc0lEUk5BTFUoZnJhbWVEYXRhW3Bvc2l0
aW9uXSkgfHwgaXNTbGljZU5BTFUoZnJhbWVEYXRhW3Bvc2l0aW9uXSkpIHsKKyAgICAgICAgICAg
IC8vIFNraXAgMDAgMDAgMDAgMDEsIG5hbHUgdHlwZSBieXRlIGFuZCB0aGUgbmV4dCBieXRlLgor
ICAgICAgICAgICAgb2Zmc2V0ID0gcG9zaXRpb24gKyAyOworICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0pOworICAgIHJldHVy
biBvZmZzZXQ7Cit9CisKK2Jvb2wgbmVlZHNSYnNwVW5lc2NhcGluZyhjb25zdCB1aW50OF90KiBm
cmFtZURhdGEsIHNpemVfdCBmcmFtZVNpemUpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBmcmFtZVNpemUgLSAzOyArK2kpIHsKKyAgICAgICAgaWYgKGZyYW1lRGF0YVtpXSA9PSAwICYm
IGZyYW1lRGF0YVtpICsgMV0gPT0gMCAmJiBmcmFtZURhdGFbaSArIDJdID09IDMpCisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitWZWN0b3I8
dWludDhfdD4gZnJvbVJic3AoY29uc3QgdWludDhfdCogZnJhbWVEYXRhLCBzaXplX3QgZnJhbWVT
aXplKQoreworICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7CisgICAgYnVmZmVyLnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkoZnJhbWVTaXplKTsKKworICAgIHNpemVfdCBpOworICAgIGZvciAoaSA9
IDA7IGkgPCBmcmFtZVNpemUgLSAzOyArK2kpIHsKKyAgICAgICAgaWYgKGZyYW1lRGF0YVtpXSA9
PSAwICYmIGZyYW1lRGF0YVtpICsgMV0gPT0gMCAmJiBmcmFtZURhdGFbaSArIDJdID09IDMpIHsK
KyAgICAgICAgICAgIGJ1ZmZlci51bmNoZWNrZWRBcHBlbmQoZnJhbWVEYXRhW2ldKTsKKyAgICAg
ICAgICAgIGJ1ZmZlci51bmNoZWNrZWRBcHBlbmQoZnJhbWVEYXRhW2kgKyAxXSk7CisgICAgICAg
ICAgICAvLyBTa2lwIG5leHQgYnl0ZSB3aGljaCBpcyBkZWxpbWl0ZXIuCisgICAgICAgICAgICBp
ICs9IDI7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYnVmZmVyLnVuY2hlY2tlZEFwcGVu
ZChmcmFtZURhdGFbaV0pOworICAgIH0KKyAgICBmb3IgKDsgaSA8IGZyYW1lU2l6ZTsgKytpKQor
ICAgICAgICBidWZmZXIudW5jaGVja2VkQXBwZW5kKGZyYW1lRGF0YVtpXSk7CisKKyAgICByZXR1
cm4gYnVmZmVyOworfQorCitTRnJhbWVDb21wYXRpYmlsaXR5UHJlZml4QnVmZmVyIGNvbXB1dGVI
MjY0UHJlZml4QnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGZyYW1lRGF0YSwgc2l6ZV90IGZyYW1lU2l6
ZSkKK3sKKyAgICAvLyBEZWx0YSBhbmQga2V5IHByZWZpeGVzIGFzc3VtZSBTUFMvUFBTIHdpdGgg
SURzIGVxdWFsIHRvIDAgaGF2ZSBiZWVuIHRyYW5zbWl0dGVkLgorICAgIHN0YXRpYyBjb25zdCB1
aW50OF90IHByZWZpeERlbHRhRnJhbWVbNl0gPSB7IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4
MjEsIDB4ZTAgfTsKKworICAgIGlmIChmcmFtZVNpemUgPCA1KQorICAgICAgICByZXR1cm4geyB9
OworCisgICAgLy8gV2UgYXNzdW1lIGEga2V5IGZyYW1lIHN0YXJ0cyB3aXRoIFNQUywgdGhlbiBQ
UFMuIE90aGVyd2lzZSB3ZSB3cmFwIGl0IGFzIGEgZGVsdGEgZnJhbWUuCisgICAgaWYgKCFpc1NQ
U05BTFUoZnJhbWVEYXRhWzRdKSkKKyAgICAgICAgcmV0dXJuIFNGcmFtZUNvbXBhdGliaWxpdHlQ
cmVmaXhCdWZmZXIgeyBwcmVmaXhEZWx0YUZyYW1lLCBzaXplb2YocHJlZml4RGVsdGFGcmFtZSks
IHsgfSB9OworCisgICAgLy8gU2VhcmNoIGZvciBQUFMKKyAgICBzaXplX3Qgc3BzUHBzTGVuZ3Ro
ID0gMDsKKyAgICBmaW5kTmFsdXMoZnJhbWVEYXRhLCBmcmFtZVNpemUsIDUsIFtmcmFtZURhdGEs
ICZzcHNQcHNMZW5ndGhdKGF1dG8gcG9zaXRpb24pIHsKKyAgICAgICAgaWYgKGlzUFBTTkFMVShm
cmFtZURhdGFbcG9zaXRpb25dKSkKKyAgICAgICAgICAgIHNwc1Bwc0xlbmd0aCA9IHBvc2l0aW9u
OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9KTsKKyAgICBpZiAoIXNwc1Bwc0xlbmd0aCkK
KyAgICAgICAgcmV0dXJuIFNGcmFtZUNvbXBhdGliaWxpdHlQcmVmaXhCdWZmZXIgeyBwcmVmaXhE
ZWx0YUZyYW1lLCBzaXplb2YocHJlZml4RGVsdGFGcmFtZSksIHsgfSB9OworCisgICAgLy8gU2Vh
cmNoIGZvciBuZXh0IE5BTFUgdG8gY29tcHV0ZSB0aGUgcmVhbCBzcHNQcHNMZW5ndGgsIGluY2x1
ZGluZyB0aGUgbmV4dCAwMCAwMCAwMCAwMS4KKyAgICBmaW5kTmFsdXMoZnJhbWVEYXRhLCBmcmFt
ZVNpemUsIHNwc1Bwc0xlbmd0aCArIDEsIFsmc3BzUHBzTGVuZ3RoXShhdXRvIHBvc2l0aW9uKSB7
CisgICAgICAgIHNwc1Bwc0xlbmd0aCA9IHBvc2l0aW9uOworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9KTsKKworICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7CisgICAgYnVmZmVyLnJlc2l6
ZShzcHNQcHNMZW5ndGggKyAyKTsKKyAgICBzdGQ6Om1lbWNweShidWZmZXIuZGF0YSgpLCBmcmFt
ZURhdGEsIHNwc1Bwc0xlbmd0aCk7CisgICAgYnVmZmVyW3Nwc1Bwc0xlbmd0aF0gPSAweDI1Owor
ICAgIGJ1ZmZlcltzcHNQcHNMZW5ndGggKyAxXSA9IDB4Yjg7CisgICAgcmV0dXJuIHsgYnVmZmVy
LmRhdGEoKSwgYnVmZmVyLnNpemUoKSwgV1RGTW92ZShidWZmZXIpIH07Cit9CisKK3N0YXRpYyBp
bmxpbmUgdm9pZCBmaW5kRXNjYXBlUmJzcFBhdHRlcm5zKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
ZnJhbWUsIHNpemVfdCBvZmZzZXQsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoc2l6ZV90LCBib29sKT4m
IGNhbGxiYWNrKQoreworICAgIHNpemVfdCBudW1Db25zZWN1dGl2ZVplcm9zID0gMDsKKyAgICBh
dXRvKiBkYXRhID0gZnJhbWUuZGF0YSgpOworICAgIGZvciAoc2l6ZV90IGkgPSBvZmZzZXQ7IGkg
PCBmcmFtZS5zaXplKCk7ICsraSkgeworICAgICAgICBib29sIHNob3VsZEVzY2FwZSA9IGRhdGFb
aV0gPD0gMyAmJiBudW1Db25zZWN1dGl2ZVplcm9zID49IDI7CisgICAgICAgIGlmIChzaG91bGRF
c2NhcGUpCisgICAgICAgICAgICBudW1Db25zZWN1dGl2ZVplcm9zID0gMDsKKworICAgICAgICBp
ZiAoZGF0YVtpXSA9PSAwKQorICAgICAgICAgICAgKytudW1Db25zZWN1dGl2ZVplcm9zOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBudW1Db25zZWN1dGl2ZVplcm9zID0gMDsKKworICAgICAg
ICBjYWxsYmFjayhpLCBzaG91bGRFc2NhcGUpOworICAgIH0KK30KKwordm9pZCB0b1Jic3AoVmVj
dG9yPHVpbnQ4X3Q+JiBmcmFtZSwgc2l6ZV90IG9mZnNldCkKK3sKKyAgICBzaXplX3QgY291bnQg
PSAwOworICAgIGZpbmRFc2NhcGVSYnNwUGF0dGVybnMoZnJhbWUsIG9mZnNldCwgWyZjb3VudF0o
c2l6ZV90LCBib29sIHNob3VkbEJlRXNjYXBlZCkgeworICAgICAgICBpZiAoc2hvdWRsQmVFc2Nh
cGVkKQorICAgICAgICAgICAgY291bnQrKzsKKyAgICB9KTsKKyAgICBpZiAoIWNvdW50KQorICAg
ICAgICByZXR1cm47CisKKyAgICBWZWN0b3I8dWludDhfdD4gbmV3RnJhbWU7CisgICAgbmV3RnJh
bWUucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShmcmFtZS5zaXplKCkgKyBjb3VudCk7CisgICAgbmV3
RnJhbWUuYXBwZW5kKGZyYW1lLmRhdGEoKSwgb2Zmc2V0KTsKKworICAgIGZpbmRFc2NhcGVSYnNw
UGF0dGVybnMoZnJhbWUsIG9mZnNldCwgW2RhdGEgPSBmcmFtZS5kYXRhKCksICZuZXdGcmFtZV0o
c2l6ZV90IHBvc2l0aW9uLCBib29sIHNob3VkbEJlRXNjYXBlZCkgeworICAgICAgICBpZiAoc2hv
dWRsQmVFc2NhcGVkKQorICAgICAgICAgICAgbmV3RnJhbWUudW5jaGVja2VkQXBwZW5kKDMpOwor
ICAgICAgICBuZXdGcmFtZS51bmNoZWNrZWRBcHBlbmQoZGF0YVtwb3NpdGlvbl0pOworICAgIH0p
OworCisgICAgZnJhbWUgPSBXVEZNb3ZlKG5ld0ZyYW1lKTsKK30KKworc3RhdGljIGlubGluZSBi
b29sIGlzVlA4S2V5RnJhbWUoY29uc3QgdWludDhfdCogZnJhbWUsIHNpemVfdCBzaXplKQorewor
ICAgIEFTU0VSVF9VTlVTRUQoc2l6ZSwgc2l6ZSk7CisgICAgcmV0dXJuICEoKmZyYW1lICYgMHgw
MSk7Cit9CisKK3NpemVfdCBjb21wdXRlVlA4UHJlZml4T2Zmc2V0KGNvbnN0IHVpbnQ4X3QqIGZy
YW1lLCBzaXplX3Qgc2l6ZSkKK3sKKyAgICByZXR1cm4gaXNWUDhLZXlGcmFtZShmcmFtZSwgc2l6
ZSkgPyAxMCA6IDM7Cit9CisKK1NGcmFtZUNvbXBhdGliaWxpdHlQcmVmaXhCdWZmZXIgY29tcHV0
ZVZQOFByZWZpeEJ1ZmZlcihjb25zdCB1aW50OF90KiBmcmFtZSwgc2l6ZV90IHNpemUpCit7Cisg
ICAgVmVjdG9yPHVpbnQ4X3Q+IHByZWZpeDsKKyAgICBwcmVmaXguYXBwZW5kKGZyYW1lLCBpc1ZQ
OEtleUZyYW1lKGZyYW1lLCBzaXplKSA/IDEwIDogMyk7CisgICAgcmV0dXJuIHsgcHJlZml4LmRh
dGEoKSwgcHJlZml4LnNpemUoKSwgV1RGTW92ZShwcmVmaXgpIH07Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9TRnJhbWVVdGlscy5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9TRnJhbWVVdGlscy5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIwNWJj
OTI1NzlhMTJmYzYyMTczOGVlNjlhMGQ2MTYxOWMzM2Q1OTkKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1NGcmFtZVV0aWxzLmgKQEAgLTAsMCAr
MSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9SVEMpCisKKyNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IFNGcmFtZUNvbXBhdGliaWxpdHlQ
cmVmaXhCdWZmZXIgeworICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEgeyBudWxscHRyIH07CisgICAg
c2l6ZV90IHNpemUgeyAwIH07CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKK307CisKK3Np
emVfdCBjb21wdXRlSDI2NFByZWZpeE9mZnNldChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKK1NG
cmFtZUNvbXBhdGliaWxpdHlQcmVmaXhCdWZmZXIgY29tcHV0ZUgyNjRQcmVmaXhCdWZmZXIoY29u
c3QgdWludDhfdCosIHNpemVfdCk7CisKK1dFQkNPUkVfRVhQT1JUIGJvb2wgbmVlZHNSYnNwVW5l
c2NhcGluZyhjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKK1dFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1
aW50OF90PiBmcm9tUmJzcChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKK1dFQkNPUkVfRVhQT1JU
IHZvaWQgdG9SYnNwKFZlY3Rvcjx1aW50OF90PiYsIHNpemVfdCk7CisKK3NpemVfdCBjb21wdXRl
VlA4UHJlZml4T2Zmc2V0KGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworU0ZyYW1lQ29tcGF0aWJp
bGl0eVByZWZpeEJ1ZmZlciBjb21wdXRlVlA4UHJlZml4QnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBz
aXplX3QpOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VC
X1JUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKaW5kZXggOWJmYWU5NjRlMjRkMmMyN2JiZTc4N2ZiOTAwMTMzNjM1
ZTg0MDEyMy4uNjc4OWUzMDlmYjY2MTAxNjNkYjZhZTJhMDc4ODY3ZjdiM2I0NTc5OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKQEAgLTE0Myw3ICsxNDMsNiBAQCBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1
ZmZlci5jcHAKIE1vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyTGlzdC5jcHAKIE1vZHVs
ZXMvbWVkaWFzb3VyY2UvVmlkZW9QbGF5YmFja1F1YWxpdHkuY3BwCiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmNwcAotTW9kdWxlcy9tZWRpYXN0cmVh
bS9IMjY0VXRpbHMuY3BwCiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlSW5mby5jcHAK
IE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmNwcAogTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbS5jcHAKQEAgLTE3Nyw2ICsxNzYsNyBAQCBNb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1J0cFRyYW5zZm9ybS5jcHAKIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNjZWl2
ZXIuY3BwCiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1Nlc3Npb25EZXNjcmlwdGlvbi5jcHAKIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDVHJhY2tFdmVudC5jcHAKK01vZHVsZXMvbWVkaWFzdHJlYW0v
U0ZyYW1lVXRpbHMuY3BwCiBNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xsZXIu
Y3BwCiBNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCiBNb2R1bGVzL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENDZXJ0aWZpY2F0ZUdlbmVyYXRvci5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA0YWFlYzU3NTQ5NzE4ZWQ1MTZkOTc2OWMwMmRjZGEyODdjM2Q0NzJmLi41Y2FhYWQwY2Q2NTFj
ZGM1ZmJmMTBjNTZkODE1YmY0MGQyMzk2MDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTMzLDcgKzExMzMsNyBAQAogCQk0
MUIyOEIzRDFGODYwRUYzMDBGQjUyQUMgLyogTGliV2ViUlRDUHJvdmlkZXJDb2NvYS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFCMjhCMzYxRjg2MEJE
MDAwRkI1MkFDIC8qIExpYldlYlJUQ1Byb3ZpZGVyQ29jb2EuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MUIyQTYyNjFFRjFCRjZEMDAyQjlEN0Eg
LyogV2ViQXVkaW9Tb3VyY2VQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDFCMkE2MjUxRUYxQkY2MDAwMkI5RDdBIC8qIFdlYkF1ZGlvU291
cmNlUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk0MUI4Nzc2MjIzREUxMDQ1MDAzNjM4QjggLyogUmVhbHRpbWVNZWRpYVNvdXJjZUlk
ZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxQjg3NzYwMjNERTEwNDIwMDM2MzhCOCAvKiBSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmll
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTQx
QkJBODY2MjU3RTM3M0IwMEFDN0Y2RCAvKiBIMjY0VXRpbHMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMjA5RTI0MjU3QTJGQkIwMDEyMEFDQSAvKiBI
MjY0VXRpbHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQk0MUJCQTg2NjI1N0UzNzNCMDBBQzdGNkQgLyogU0ZyYW1lVXRpbHMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMjA5RTI0MjU3QTJGQkIwMDEy
MEFDQSAvKiBTRnJhbWVVdGlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTQxQkYyMDQ5MjJCQTdCRTgwMDA0RjgxMiAvKiBSZWFsdGltZVZpZGVv
U291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MUJGMjA0MDIyQjk0NzE2MDAwNEY4MTIgLyogUmVhbHRpbWVWaWRlb1NvdXJjZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxQzc2MEIxMEVERTAz
RDMwMEMxNjU1RiAvKiBTY3JpcHRTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDFDNzYwQjAwRURFMDNEMzAwQzE2NTVGIC8qIFNjcmlwdFN0YXRl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDFE
MDE1Q0EwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUQwMTVDODBGNEI1QzcxMDA0QTY2MkYgLyog
Q29udGVudFR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtNzU4NCw4ICs3NTg0LDggQEAKIAkJNDExODlFRjcxQUQ4MjMyODAwQjkwQTBEIC8q
IFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MTE4OUVGNzFBRDgyMzI4MDBCOTNGNjQgLyogUmVhZGFibGVCeXRlU3Ry
ZWFtQ29udHJvbGxlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVhZGFibGVCeXRlU3Ry
ZWFtQ29udHJvbGxlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTg5RUY3
MUFEODIzMjgwMEI5NTY3MiAvKiBSZWFkYWJsZVN0cmVhbUJZT0JSZXF1ZXN0LmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBSZWFkYWJsZVN0cmVhbUJZT0JSZXF1ZXN0LmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDEyMDlFMjQyNTdBMkZCQjAwMTIwQUNBIC8qIEgyNjRVdGls
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIMjY0VXRpbHMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDEyMDlFMjYyNTdBMkZCQjAwMTIwQUNBIC8qIEgyNjRV
dGlscy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIMjY0VXRpbHMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTIwOUUyNDI1N0EyRkJCMDAxMjBB
Q0EgLyogU0ZyYW1lVXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU0Zy
YW1lVXRpbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDEyMDlFMjYyNTdBMkZC
QjAwMTIwQUNBIC8qIFNGcmFtZVV0aWxzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFNGcmFtZVV0aWxzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDEyMDlFOTEyMTZENTkzQzAwQTczQTEyIC8qIFJUQ0NlcnRpZmljYXRlLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBSVENDZXJ0aWZpY2F0ZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxMjA5RTkzMjE2RDVDNzkwMEE3M0ExMiAvKiBSVENDZXJ0aWZpY2F0ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSVENDZXJ0aWZpY2F0ZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTIwOUU5NDIxNkVBNjlBMDBBNzNBMTIgLyogUlRDQ2VydGlm
aWNhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUlRDQ2VydGlm
aWNhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTcwNzgsOCArMTcwNzgs
NiBAQAogCQkJCTQxQzdFMTA4MUU2QUEzN0MwMDI3QjRERSAvKiBDYW52YXNDYXB0dXJlTWVkaWFT
dHJlYW1UcmFjay5pZGwgKi8sCiAJCQkJOTNBODA2MTExRTAzQjUxQzAwOEExRjI2IC8qIERvdWJs
ZVJhbmdlLmggKi8sCiAJCQkJOTNBODA2MTIxRTAzQjUxQzAwOEExRjI2IC8qIERvdWJsZVJhbmdl
LmlkbCAqLywKLQkJCQk0MTIwOUUyNjI1N0EyRkJCMDAxMjBBQ0EgLyogSDI2NFV0aWxzLmNwcCAq
LywKLQkJCQk0MTIwOUUyNDI1N0EyRkJCMDAxMjBBQ0EgLyogSDI2NFV0aWxzLmggKi8sCiAJCQkJ
OTNBODA2MTMxRTAzQjUxQzAwOEExRjI2IC8qIExvbmdSYW5nZS5oICovLAogCQkJCTkzQTgwNjE0
MUUwM0I1MUMwMDhBMUYyNiAvKiBMb25nUmFuZ2UuaWRsICovLAogCQkJCTE1OUFFODJBMUIzQTQw
MkYwMDM3NDc4QiAvKiBNZWRpYURldmljZUluZm8uY3BwICovLApAQCAtMTcyMDAsMTAgKzE3MTk4
LDEwIEBACiAJCQkJNDFFNTk0MDAyMTQ4NjVBQTAwRDNDQjYxIC8qIFJUQ1J0cEhlYWRlckV4dGVu
c2lvblBhcmFtZXRlcnMuaWRsICovLAogCQkJCTQxQTQ4QUE4MUU4NEFGMUQwMEQyQUMyRCAvKiBS
VENSdHBQYXJhbWV0ZXJzLmggKi8sCiAJCQkJNDFBNDhBQTcxRTg0QUVFQzAwRDJBQzJEIC8qIFJU
Q1J0cFBhcmFtZXRlcnMuaWRsICovLAotCQkJCTQxM0M4QjI0MjU1MkVFQTkwMEU2NTA1NSAvKiBS
VENSdHBSZWNlaXZlcitUcmFuc2Zvcm0uaWRsICovLAogCQkJCTVFMkM0MzU2MUJDRUUzMEQwMDAx
RTJCQyAvKiBSVENSdHBSZWNlaXZlci5jcHAgKi8sCiAJCQkJNUUyQzQzNTcxQkNFRTMwRDAwMDFF
MkJDIC8qIFJUQ1J0cFJlY2VpdmVyLmggKi8sCiAJCQkJNUUyQzQzNTgxQkNFRTMwRDAwMDFFMkJD
IC8qIFJUQ1J0cFJlY2VpdmVyLmlkbCAqLywKKwkJCQk0MTNDOEIyNDI1NTJFRUE5MDBFNjUwNTUg
LyogUlRDUnRwUmVjZWl2ZXIrVHJhbnNmb3JtLmlkbCAqLywKIAkJCQk0MUQxQTA0ODIxM0VEREVC
MDA2M0ZCNkIgLyogUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmggKi8sCiAJCQkJNDEzQzhCMzAyNTUy
RjI3QzAwRTY1MDU1IC8qIFJUQ1J0cFJlY2VpdmVyV2l0aFRyYW5zZm9ybS5oICovLAogCQkJCTQx
RkNCNzYwMjE0ODY3MDAwMDM4QURDNiAvKiBSVENSdHBSdHhQYXJhbWV0ZXJzLmggKi8sCkBAIC0x
NzIxOSwxMCArMTcyMTcsMTAgQEAKIAkJCQk0MTlFNkVENTI1NjdCRjZBMDAyQjUwMTAgLyogUlRD
UnRwU2NyaXB0VHJhbnNmb3JtZXJDb250ZXh0LmggKi8sCiAJCQkJNDE5RTZFRDIyNTY3QkY2OTAw
MkI1MDEwIC8qIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyQ29udGV4dC5pZGwgKi8sCiAJCQkJNDE0
MTg5RUYyNTYyREYwQzAwMzYzNDE3IC8qIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybVByb3ZpZGVyLmlk
bCAqLywKLQkJCQk0MTNDOEIyNjI1NTJFRUE5MDBFNjUwNTUgLyogUlRDUnRwU2VuZGVyK1RyYW5z
Zm9ybS5pZGwgKi8sCiAJCQkJNUUyQzQzNTkxQkNFRTMwRDAwMDFFMkJDIC8qIFJUQ1J0cFNlbmRl
ci5jcHAgKi8sCiAJCQkJNUUyQzQzNUExQkNFRTMwRDAwMDFFMkJDIC8qIFJUQ1J0cFNlbmRlci5o
ICovLAogCQkJCTVFMkM0MzVCMUJDRUUzMEQwMDAxRTJCQyAvKiBSVENSdHBTZW5kZXIuaWRsICov
LAorCQkJCTQxM0M4QjI2MjU1MkVFQTkwMEU2NTA1NSAvKiBSVENSdHBTZW5kZXIrVHJhbnNmb3Jt
LmlkbCAqLywKIAkJCQk0MUQxQTA0NjIxM0VEREVCMDA2M0ZCNkIgLyogUlRDUnRwU2VuZGVyQmFj
a2VuZC5oICovLAogCQkJCTQxM0M4QjJFMjU1MkYyN0IwMEU2NTA1NSAvKiBSVENSdHBTZW5kZXJX
aXRoVHJhbnNmb3JtLmggKi8sCiAJCQkJNDE0QUQzRkMyMTQ5ODQyMDAwNTIxNjc2IC8qIFJUQ1J0
cFNlbmRQYXJhbWV0ZXJzLmggKi8sCkBAIC0xNzI1Niw2ICsxNzI1NCw4IEBACiAJCQkJNUUyQzQz
NjQxQkNFRTM3MjAwMDFFMkJDIC8qIFJUQ1RyYWNrRXZlbnQuY3BwICovLAogCQkJCTVFMkM0MzY1
MUJDRUUzNzIwMDAxRTJCQyAvKiBSVENUcmFja0V2ZW50LmggKi8sCiAJCQkJNUUyQzQzNjYxQkNF
RTM3MjAwMDFFMkJDIC8qIFJUQ1RyYWNrRXZlbnQuaWRsICovLAorCQkJCTQxMjA5RTI2MjU3QTJG
QkIwMDEyMEFDQSAvKiBTRnJhbWVVdGlscy5jcHAgKi8sCisJCQkJNDEyMDlFMjQyNTdBMkZCQjAw
MTIwQUNBIC8qIFNGcmFtZVV0aWxzLmggKi8sCiAJCQkJMDcyMjFCOEQxN0NFQzMyNzAwODQ4RTUx
IC8qIFVzZXJNZWRpYUNsaWVudC5oICovLAogCQkJCTA3MjIxQjhFMTdDRUMzMjcwMDg0OEU1MSAv
KiBVc2VyTWVkaWFDb250cm9sbGVyLmNwcCAqLywKIAkJCQkwNzIyMUI4RjE3Q0VDMzI3MDA4NDhF
NTEgLyogVXNlck1lZGlhQ29udHJvbGxlci5oICovLApAQCAtMzIxNTgsNyArMzIxNTgsNyBAQAog
CQkJCUNERjc0ODNGMThGRUJDRUMwMDA2RUNDMCAvKiBHcmlkUG9zaXRpb25zUmVzb2x2ZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUExMkExMDUwMTY2NDQ0RkQwMDhGQTMxMSAvKiBHcmlkVHJhY2tT
aXplLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTJERTcxODFFNEI3NEE2MDBGOUFDQ0YgLyogR3Jp
ZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmggaW4gSGVhZGVycyAqLywKLQkJCQk0MUJCQTg2NjI1N0Uz
NzNCMDBBQzdGNkQgLyogSDI2NFV0aWxzLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MUJCQTg2NjI1
N0UzNzNCMDBBQzdGNkQgLyogU0ZyYW1lVXRpbHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTI2RUE4
OUE3MUI0RjJCNzUwMDhDNUZEMiAvKiBIYXNoYWJsZUFjdGlvbkxpc3QuaCBpbiBIZWFkZXJzICov
LAogCQkJCTg0ODJCNzQ2MTE5OEMzNTQwMEJGQjAwNSAvKiBIYXNoQ2hhbmdlRXZlbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE4NzQ4QkUwMTJDQkYyREMwMDFGQkE0MSAvKiBIYXNoVG9vbHMuaCBp
biBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDNiZjMyNzhkMzU5MjkzMzI3NzkyNzljNTA1YzFkNWZlZTQz
ZWJmZjQuLjIxZDk2MDJjYzc0NWZlNTUzZTk5Yjk4OGVhNTdjNWJjODYxNjZmZmEgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMyBAQAorMjAyMC0xMi0wOSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIGEgU0ZyYW1lIFZQOCBleHBlcmltZW50YWwgY29tcGF0aWJpbGl0
eSBtb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTk2NzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHdlYnJ0Yy92aWRlby1zZnJhbWUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYnJ0Yy92aWRl
by1zZnJhbWUuaHRtbDoKKwogMjAyMC0xMi0wOCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBs
ZS5jb20+CiAKICAgICAgICAgR2F0ZSBWUDkgZXhwb3N1cmUgaW4gTWVkaWFDYXBhYmlsaXRpZXMg
b24gVlA5RGVjb2RlckVuYWJsZWQgcHJlZmVyZW5jZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2VicnRjL3ZpZGVvLXNmcmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJydGMvdmlk
ZW8tc2ZyYW1lLWV4cGVjdGVkLnR4dAppbmRleCBmM2ZmNmM3YWY4OTkwMzBiZGUyMGI0MGRhZmU1
MzE0NjQzOTNiYjNjLi4xNjA5NTU1MzEzM2Y2MWMzZmVmYjRkOTBkN2I5NGZkODNmYjZlOTU5IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJydGMvdmlkZW8tc2ZyYW1lLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy93ZWJydGMvdmlkZW8tc2ZyYW1lLWV4cGVjdGVkLnR4dApAQCAtMiw0
ICsyLDUgQEAKIAogUEFTUyBWaWRlbyBleGNoYW5nZSB3aXRoIFNGcmFtZSAtIEgyNjQgYmFzZWxp
bmUKIFBBU1MgVmlkZW8gZXhjaGFuZ2Ugd2l0aCBTRnJhbWUgLSBIMjY0IGhpZ2gKK1BBU1MgVmlk
ZW8gZXhjaGFuZ2Ugd2l0aCBTRnJhbWUgLSBWUDgKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2VicnRjL3ZpZGVvLXNmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvd2VicnRjL3ZpZGVvLXNmcmFt
ZS5odG1sCmluZGV4IGUzMzczZTFhNTkzZTQ1ZDAwNTI1YTEwYWIyZjE4NzhmMmQwZGI1ZWMuLmMy
YzFkZDQ1ODBkZTFmNzJjNjM2YzlmNTRjM2I4Y2Y2N2M5ZjkxYmQgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3dlYnJ0Yy92aWRlby1zZnJhbWUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy93ZWJydGMv
dmlkZW8tc2ZyYW1lLmh0bWwKQEAgLTEwLDI5ICsxMCwyOSBAQAogICAgICAgICA8dmlkZW8gaWQ9
InJlbW90ZSIgYXV0b3BsYXkgcGxheXNJbmxpbmU+PC92aWRlbz4KICAgICAgICAgPHNjcmlwdCBz
cmMgPSJyb3V0aW5lcy5qcyI+PC9zY3JpcHQ+CiAgICAgICAgIDxzY3JpcHQ+Ci1hc3luYyBmdW5j
dGlvbiBkb1NGcmFtZVRlc3Qoc2VsZWN0Q29kZWMpCithc3luYyBmdW5jdGlvbiBkb1NGcmFtZVRl
c3QoY29kZWMsIG1vZGUsIHNob3VsZENsb3NlKQogeworICAgIGxldCBwYzEsIHBjMjsKICAgICBs
ZXQgc2VuZGVyLCByZWNlaXZlcjsKICAgICBjb25zdCBsb2NhbFN0cmVhbSA9IGF3YWl0IG5hdmln
YXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHt2aWRlbzogdHJ1ZX0pOwogICAgIGNvbnN0
IGtleSA9IGF3YWl0IGNyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KCJyYXciLCBuZXcgVWludDhBcnJh
eShbMTQzLCA3NywgNDMsIDEwLCA3MiwgMTksIDM3LCA2NywgMjM2LCAyMTksIDI0LCA5MywgMjYs
IDE2NSwgOTEsIDE3OF0pLCAiSEtERiIsIGZhbHNlLCBbImRlcml2ZUJpdHMiLCAiZGVyaXZlS2V5
Il0pOwogICAgIGNvbnN0IHN0cmVhbSA9IGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWpl
Y3QpID0+IHsKICAgICAgICAgY3JlYXRlQ29ubmVjdGlvbnMoKGZpcnN0Q29ubmVjdGlvbikgPT4g
eworICAgICAgICAgICAgcGMxID0gZmlyc3RDb25uZWN0aW9uOwogICAgICAgICAgICAgc2VuZGVy
ID0gZmlyc3RDb25uZWN0aW9uLmFkZFRyYWNrKGxvY2FsU3RyZWFtLmdldFRyYWNrcygpWzBdLCBs
b2NhbFN0cmVhbSk7Ci0gICAgICAgICAgICBsZXQgdHJhbnNmb3JtID0gbmV3IFJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybSh7Y29tcGF0aWJpbGl0eU1vZGU6ICJIMjY0In0pOworICAgICAgICAgICAgZmly
c3RDb25uZWN0aW9uLmdldFRyYW5zY2VpdmVycygpWzBdLnNldENvZGVjUHJlZmVyZW5jZXMoW2Nv
ZGVjXSk7CisgICAgICAgICAgICBsZXQgdHJhbnNmb3JtID0gbmV3IFJUQ1J0cFNGcmFtZVRyYW5z
Zm9ybSh7Y29tcGF0aWJpbGl0eU1vZGU6IG1vZGV9KTsKICAgICAgICAgICAgIHRyYW5zZm9ybS5z
ZXRFbmNyeXB0aW9uS2V5KGtleSk7CiAgICAgICAgICAgICBzZW5kZXIudHJhbnNmb3JtID0gdHJh
bnNmb3JtOwogICAgICAgICB9LCAoc2Vjb25kQ29ubmVjdGlvbikgPT4geworICAgICAgICAgICAg
cGMyID0gc2Vjb25kQ29ubmVjdGlvbjsKICAgICAgICAgICAgIHNlY29uZENvbm5lY3Rpb24ub250
cmFjayA9ICh0cmFja0V2ZW50KSA9PiB7Ci0gICAgICAgICAgICAgICAgbGV0IHRyYW5zZm9ybSA9
IG5ldyBSVENSdHBTRnJhbWVUcmFuc2Zvcm0oe2NvbXBhdGliaWxpdHlNb2RlOiAiSDI2NCJ9KTsK
KyAgICAgICAgICAgICAgICBsZXQgdHJhbnNmb3JtID0gbmV3IFJUQ1J0cFNGcmFtZVRyYW5zZm9y
bSh7Y29tcGF0aWJpbGl0eU1vZGU6IG1vZGV9KTsKICAgICAgICAgICAgICAgICB0cmFuc2Zvcm0u
c2V0RW5jcnlwdGlvbktleShrZXkpOwogICAgICAgICAgICAgICAgIHJlY2VpdmVyID0gdHJhY2tF
dmVudC5yZWNlaXZlcjsKICAgICAgICAgICAgICAgICByZWNlaXZlci50cmFuc2Zvcm0gPSB0cmFu
c2Zvcm07CiAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cmFja0V2ZW50LnN0cmVhbXNbMF0pOwog
ICAgICAgICAgICAgfTsKLSAgICAgICAgfSwgeyBvYnNlcnZlT2ZmZXIgOiAob2ZmZXIpID0+IHsK
LSAgICAgICAgICAgIG9mZmVyLnNkcCA9IHNlbGVjdENvZGVjKG9mZmVyLnNkcCk7Ci0gICAgICAg
ICAgICByZXR1cm4gb2ZmZXI7Ci0gICAgICAgIH0KICAgICAgICAgfSk7CiAgICAgICAgIHNldFRp
bWVvdXQoKCkgPT4gcmVqZWN0KCJUZXN0IHRpbWVkIG91dCIpLCA1MDAwKTsKICAgICB9KTsKQEAg
LTUwLDE1ICs1MCwyMyBAQCBhc3luYyBmdW5jdGlvbiBkb1NGcmFtZVRlc3Qoc2VsZWN0Q29kZWMp
CiAgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGludGVybmFscy5zZnJhbWVDb3VudGVyKHJlY2Vp
dmVyLnRyYW5zZm9ybSksIHJlY2VpdmVyQ291bnRlciwgInJlY2VpdmVyIik7CiAgICAgICAgIGFz
c2VydF9ub3RfZXF1YWxzKGludGVybmFscy5zZnJhbWVDb3VudGVyKHNlbmRlci50cmFuc2Zvcm0p
LCBzZW5kZXJDb3VudGVyLCAic2VuZGVyIik7CiAgICAgfQorICAgIGlmIChzaG91bGRDbG9zZSkg
eworICAgICAgICBwYzEuY2xvc2UoKTsKKyAgICAgICAgcGMyLmNsb3NlKCk7CisgICAgfQogfQog
CiBwcm9taXNlX3Rlc3QoKHRlc3QpID0+IHsKLSAgICByZXR1cm4gZG9TRnJhbWVUZXN0KHNldEgy
NjRCYXNlbGluZUNvZGVjKTsKKyAgICByZXR1cm4gZG9TRnJhbWVUZXN0KHtjbG9ja1JhdGU6IDkw
MDAwLCBtaW1lVHlwZTogInZpZGVvL0gyNjQiLCBzZHBGbXRwTGluZTogImxldmVsLWFzeW1tZXRy
eS1hbGxvd2VkPTE7cGFja2V0aXphdGlvbi1tb2RlPTE7cHJvZmlsZS1sZXZlbC1pZD00MmUwMWYi
fSwgIkgyNjQiLCB0cnVlKTsKIH0sICJWaWRlbyBleGNoYW5nZSB3aXRoIFNGcmFtZSAtIEgyNjQg
YmFzZWxpbmUiKTsKIAogcHJvbWlzZV90ZXN0KCh0ZXN0KSA9PiB7Ci0gICAgcmV0dXJuIGRvU0Zy
YW1lVGVzdChzZXRIMjY0SGlnaENvZGVjKTsKKyAgICByZXR1cm4gZG9TRnJhbWVUZXN0KHtjbG9j
a1JhdGU6IDkwMDAwLCBtaW1lVHlwZTogInZpZGVvL0gyNjQiLCBzZHBGbXRwTGluZTogImxldmVs
LWFzeW1tZXRyeS1hbGxvd2VkPTE7cGFja2V0aXphdGlvbi1tb2RlPTE7cHJvZmlsZS1sZXZlbC1p
ZD02NDBjMWYifSwgIkgyNjQiLCB0cnVlKTsKIH0sICJWaWRlbyBleGNoYW5nZSB3aXRoIFNGcmFt
ZSAtIEgyNjQgaGlnaCIpOworCitwcm9taXNlX3Rlc3QoKHRlc3QpID0+IHsKKyAgICByZXR1cm4g
ZG9TRnJhbWVUZXN0KHttaW1lVHlwZTogInZpZGVvL1ZQOCIsIGNsb2NrUmF0ZTogOTAwMDB9LCAi
VlA4IiwgZmFsc2UpOworfSwgIlZpZGVvIGV4Y2hhbmdlIHdpdGggU0ZyYW1lIC0gVlA4Iik7CiAg
ICAgICAgIDwvc2NyaXB0PgogICAgIDwvYm9keT4KIDwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415732</attachid>
            <date>2020-12-09 02:46:03 -0800</date>
            <delta_ts>2020-12-09 04:58:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219674-20201209114601.patch</filename>
            <type>text/plain</type>
            <size>39378</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNTMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjBiZDRlNWZhNDQ0ODMz
ZGJjNDVjZTZhOGJmYjNjZDdhYmQxYTdmMy4uOTBjMDYwYTMzN2I0NTljYTU3ZTQ5NDc3YzFkZWJi
MDcyNzNkNjk0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIwLTEyLTA5ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYSBTRnJhbWUgVlA4
IGV4cGVyaW1lbnRhbCBjb21wYXRpYmlsaXR5IG1vZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTY3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbWlsYXJseSB0byBIMjY0LCBwcmVmaXggdGhlIFNG
cmFtZSBjb250ZW50IHdpdGggc29tZSBkYXRhIHRvIGVuc3VyZSBrZXkgZnJhbWVzIG9yIHJlc29s
dXRpb24gY2FuIGJlIGRldGVjdGVkCisgICAgICAgIHdpdGhvdXQgcmV2ZWFsaW5nIHRoZSBhY3R1
YWwgY29udGVudC4KKworICAgICAgICBDb3ZlcmVkIGJ5IHVwZGF0ZWQgdGVzdC4KKworICAgICAg
ICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmlkbDoKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpkZWNyeXB0RnJhbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmVuY3J5cHRGcmFtZSk6
CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5o
OgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vU0ZyYW1lVXRpbHMuY3BwOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9IMjY0VXRpbHMuY3BwLgor
ICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZUgyNjRQcmVmaXhPZmZzZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6Y29tcHV0ZUgyNjRQcmVmaXhCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6aXNWUDhL
ZXlGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlVlA4UHJlZml4T2Zmc2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OmNvbXB1dGVWUDhQcmVmaXhCdWZmZXIpOgorICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vU0ZyYW1lVXRpbHMuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vSDI2NFV0aWxzLmguCisgICAgICAgICogU291cmNlcy50eHQ6
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDIwLTEy
LTA4ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBHYXRlIFZQ
OSBleHBvc3VyZSBpbiBNZWRpYUNhcGFiaWxpdGllcyBvbiBWUDlEZWNvZGVyRW5hYmxlZCBwcmVm
ZXJlbmNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0gy
NjRVdGlscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0gyNjRVdGls
cy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQxODdlODFiNDEwN2M5YzkyYWFi
Mzc1YWRlNTQ0NDJlYzk1NDZjOWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9IMjY0VXRpbHMu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTg2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
SDI2NFV0aWxzLmgiCi0KLSNpZiBFTkFCTEUoV0VCX1JUQykKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1zdGF0aWMgaW5saW5lIGJvb2wgaXNTbGljZU5BTFUodWludDhfdCBkYXRhKQotewotICAg
IHJldHVybiAoZGF0YSAmIDB4MUYpID09IDE7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBpc1NQ
U05BTFUodWludDhfdCBkYXRhKQotewotICAgIHJldHVybiAoZGF0YSAmIDB4MUYpID09IDc7Ci19
Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBpc1BQU05BTFUodWludDhfdCBkYXRhKQotewotICAgIHJl
dHVybiAoZGF0YSAmIDB4MUYpID09IDg7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBpc0lEUk5B
TFUodWludDhfdCBkYXRhKQotewotICAgIHJldHVybiAoZGF0YSAmIDB4MUYpID09IDU7Ci19Ci0K
LXN0YXRpYyBpbmxpbmUgdm9pZCBmaW5kTmFsdXMoY29uc3QgdWludDhfdCogZnJhbWVEYXRhLCBz
aXplX3QgZnJhbWVTaXplLCBzaXplX3Qgb2Zmc2V0LCBjb25zdCBGdW5jdGlvbjxib29sKHNpemVf
dCk+JiBjYWxsYmFjaykKLXsKLSAgICBmb3IgKHNpemVfdCBpID0gNCArIG9mZnNldDsgaSA8IGZy
YW1lU2l6ZTsgKytpKSB7Ci0gICAgICAgIGlmIChmcmFtZURhdGFbaSAtIDRdID09IDAgJiYgZnJh
bWVEYXRhW2kgLSAzXSA9PSAwICYmIGZyYW1lRGF0YVtpIC0gMl0gPT0gMCAmJiBmcmFtZURhdGFb
aSAtIDFdID09IDEpIHsKLSAgICAgICAgICAgIGlmIChjYWxsYmFjayhpKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXNpemVfdCBjb21wdXRlUHJlZml4
T2Zmc2V0KGNvbnN0IHVpbnQ4X3QqIGZyYW1lRGF0YSwgc2l6ZV90IGZyYW1lU2l6ZSkKLXsKLSAg
ICBzaXplX3Qgb2Zmc2V0ID0gMDsKLSAgICBmaW5kTmFsdXMoZnJhbWVEYXRhLCBmcmFtZVNpemUs
IDAsIFsmb2Zmc2V0LCAmZnJhbWVEYXRhXShhdXRvIHBvc2l0aW9uKSB7Ci0gICAgICAgIGlmIChp
c0lEUk5BTFUoZnJhbWVEYXRhW3Bvc2l0aW9uXSkgfHwgaXNTbGljZU5BTFUoZnJhbWVEYXRhW3Bv
c2l0aW9uXSkpIHsKLSAgICAgICAgICAgIC8vIFNraXAgMDAgMDAgMDAgMDEsIG5hbHUgdHlwZSBi
eXRlIGFuZCB0aGUgbmV4dCBieXRlLgotICAgICAgICAgICAgb2Zmc2V0ID0gcG9zaXRpb24gKyAy
OwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0pOwotICAgIHJldHVybiBvZmZzZXQ7Ci19Ci0KLWJvb2wgbmVlZHNSYnNwVW5l
c2NhcGluZyhjb25zdCB1aW50OF90KiBmcmFtZURhdGEsIHNpemVfdCBmcmFtZVNpemUpCi17Ci0g
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmcmFtZVNpemUgLSAzOyArK2kpIHsKLSAgICAgICAg
aWYgKGZyYW1lRGF0YVtpXSA9PSAwICYmIGZyYW1lRGF0YVtpICsgMV0gPT0gMCAmJiBmcmFtZURh
dGFbaSArIDJdID09IDMpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0
dXJuIGZhbHNlOwotfQotCi1WZWN0b3I8dWludDhfdD4gZnJvbVJic3AoY29uc3QgdWludDhfdCog
ZnJhbWVEYXRhLCBzaXplX3QgZnJhbWVTaXplKQotewotICAgIFZlY3Rvcjx1aW50OF90PiBidWZm
ZXI7Ci0gICAgYnVmZmVyLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZnJhbWVTaXplKTsKLQotICAg
IHNpemVfdCBpOwotICAgIGZvciAoaSA9IDA7IGkgPCBmcmFtZVNpemUgLSAzOyArK2kpIHsKLSAg
ICAgICAgaWYgKGZyYW1lRGF0YVtpXSA9PSAwICYmIGZyYW1lRGF0YVtpICsgMV0gPT0gMCAmJiBm
cmFtZURhdGFbaSArIDJdID09IDMpIHsKLSAgICAgICAgICAgIGJ1ZmZlci51bmNoZWNrZWRBcHBl
bmQoZnJhbWVEYXRhW2ldKTsKLSAgICAgICAgICAgIGJ1ZmZlci51bmNoZWNrZWRBcHBlbmQoZnJh
bWVEYXRhW2kgKyAxXSk7Ci0gICAgICAgICAgICAvLyBTa2lwIG5leHQgYnl0ZSB3aGljaCBpcyBk
ZWxpbWl0ZXIuCi0gICAgICAgICAgICBpICs9IDI7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgYnVmZmVyLnVuY2hlY2tlZEFwcGVuZChmcmFtZURhdGFbaV0pOwotICAgIH0KLSAgICBmb3Ig
KDsgaSA8IGZyYW1lU2l6ZTsgKytpKQotICAgICAgICBidWZmZXIudW5jaGVja2VkQXBwZW5kKGZy
YW1lRGF0YVtpXSk7Ci0KLSAgICByZXR1cm4gYnVmZmVyOwotfQotCi1IMjY0UHJlZml4QnVmZmVy
IGNvbXB1dGVQcmVmaXhCdWZmZXIoY29uc3QgdWludDhfdCogZnJhbWVEYXRhLCBzaXplX3QgZnJh
bWVTaXplKQotewotICAgIC8vIERlbHRhIGFuZCBrZXkgcHJlZml4ZXMgYXNzdW1lIFNQUy9QUFMg
d2l0aCBJRHMgZXF1YWwgdG8gMCBoYXZlIGJlZW4gdHJhbnNtaXR0ZWQuCi0gICAgc3RhdGljIGNv
bnN0IHVpbnQ4X3QgcHJlZml4RGVsdGFGcmFtZVs2XSA9IHsgMHgwMCwgMHgwMCwgMHgwMCwgMHgw
MSwgMHgyMSwgMHhlMCB9OwotCi0gICAgaWYgKGZyYW1lU2l6ZSA8IDUpCi0gICAgICAgIHJldHVy
biB7IH07Ci0KLSAgICAvLyBXZSBhc3N1bWUgYSBrZXkgZnJhbWUgc3RhcnRzIHdpdGggU1BTLCB0
aGVuIFBQUy4gT3RoZXJ3aXNlIHdlIHdyYXAgaXQgYXMgYSBkZWx0YSBmcmFtZS4KLSAgICBpZiAo
IWlzU1BTTkFMVShmcmFtZURhdGFbNF0pKQotICAgICAgICByZXR1cm4gSDI2NFByZWZpeEJ1ZmZl
ciB7IHByZWZpeERlbHRhRnJhbWUsIHNpemVvZihwcmVmaXhEZWx0YUZyYW1lKSwgeyB9IH07Ci0K
LSAgICAvLyBTZWFyY2ggZm9yIFBQUwotICAgIHNpemVfdCBzcHNQcHNMZW5ndGggPSAwOwotICAg
IGZpbmROYWx1cyhmcmFtZURhdGEsIGZyYW1lU2l6ZSwgNSwgW2ZyYW1lRGF0YSwgJnNwc1Bwc0xl
bmd0aF0oYXV0byBwb3NpdGlvbikgewotICAgICAgICBpZiAoaXNQUFNOQUxVKGZyYW1lRGF0YVtw
b3NpdGlvbl0pKQotICAgICAgICAgICAgc3BzUHBzTGVuZ3RoID0gcG9zaXRpb247Ci0gICAgICAg
IHJldHVybiB0cnVlOwotICAgIH0pOwotICAgIGlmICghc3BzUHBzTGVuZ3RoKQotICAgICAgICBy
ZXR1cm4gSDI2NFByZWZpeEJ1ZmZlciB7IHByZWZpeERlbHRhRnJhbWUsIHNpemVvZihwcmVmaXhE
ZWx0YUZyYW1lKSwgeyB9IH07Ci0KLSAgICAvLyBTZWFyY2ggZm9yIG5leHQgTkFMVSB0byBjb21w
dXRlIHRoZSByZWFsIHNwc1Bwc0xlbmd0aCwgaW5jbHVkaW5nIHRoZSBuZXh0IDAwIDAwIDAwIDAx
LgotICAgIGZpbmROYWx1cyhmcmFtZURhdGEsIGZyYW1lU2l6ZSwgc3BzUHBzTGVuZ3RoICsgMSwg
WyZzcHNQcHNMZW5ndGhdKGF1dG8gcG9zaXRpb24pIHsKLSAgICAgICAgc3BzUHBzTGVuZ3RoID0g
cG9zaXRpb247Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0pOwotCi0gICAgVmVjdG9yPHVp
bnQ4X3Q+IGJ1ZmZlcjsKLSAgICBidWZmZXIucmVzaXplKHNwc1Bwc0xlbmd0aCArIDIpOwotICAg
IHN0ZDo6bWVtY3B5KGJ1ZmZlci5kYXRhKCksIGZyYW1lRGF0YSwgc3BzUHBzTGVuZ3RoKTsKLSAg
ICBidWZmZXJbc3BzUHBzTGVuZ3RoXSA9IDB4MjU7Ci0gICAgYnVmZmVyW3Nwc1Bwc0xlbmd0aCAr
IDFdID0gMHhiODsKLSAgICByZXR1cm4geyBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpLCBX
VEZNb3ZlKGJ1ZmZlcikgfTsKLX0KLQotc3RhdGljIGlubGluZSB2b2lkIGZpbmRFc2NhcGVSYnNw
UGF0dGVybnMoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBmcmFtZSwgc2l6ZV90IG9mZnNldCwgY29u
c3QgRnVuY3Rpb248dm9pZChzaXplX3QsIGJvb2wpPiYgY2FsbGJhY2spCi17Ci0gICAgc2l6ZV90
IG51bUNvbnNlY3V0aXZlWmVyb3MgPSAwOwotICAgIGF1dG8qIGRhdGEgPSBmcmFtZS5kYXRhKCk7
Ci0gICAgZm9yIChzaXplX3QgaSA9IG9mZnNldDsgaSA8IGZyYW1lLnNpemUoKTsgKytpKSB7Ci0g
ICAgICAgIGJvb2wgc2hvdWxkRXNjYXBlID0gZGF0YVtpXSA8PSAzICYmIG51bUNvbnNlY3V0aXZl
WmVyb3MgPj0gMjsKLSAgICAgICAgaWYgKHNob3VsZEVzY2FwZSkKLSAgICAgICAgICAgIG51bUNv
bnNlY3V0aXZlWmVyb3MgPSAwOwotCi0gICAgICAgIGlmIChkYXRhW2ldID09IDApCi0gICAgICAg
ICAgICArK251bUNvbnNlY3V0aXZlWmVyb3M7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG51
bUNvbnNlY3V0aXZlWmVyb3MgPSAwOwotCi0gICAgICAgIGNhbGxiYWNrKGksIHNob3VsZEVzY2Fw
ZSk7Ci0gICAgfQotfQotCi12b2lkIHRvUmJzcChWZWN0b3I8dWludDhfdD4mIGZyYW1lLCBzaXpl
X3Qgb2Zmc2V0KQotewotICAgIHNpemVfdCBjb3VudCA9IDA7Ci0gICAgZmluZEVzY2FwZVJic3BQ
YXR0ZXJucyhmcmFtZSwgb2Zmc2V0LCBbJmNvdW50XShzaXplX3QsIGJvb2wgc2hvdWRsQmVFc2Nh
cGVkKSB7Ci0gICAgICAgIGlmIChzaG91ZGxCZUVzY2FwZWQpCi0gICAgICAgICAgICBjb3VudCsr
OwotICAgIH0pOwotICAgIGlmICghY291bnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIFZlY3Rv
cjx1aW50OF90PiBuZXdGcmFtZTsKLSAgICBuZXdGcmFtZS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KGZyYW1lLnNpemUoKSArIGNvdW50KTsKLSAgICBuZXdGcmFtZS5hcHBlbmQoZnJhbWUuZGF0YSgp
LCBvZmZzZXQpOwotCi0gICAgZmluZEVzY2FwZVJic3BQYXR0ZXJucyhmcmFtZSwgb2Zmc2V0LCBb
ZGF0YSA9IGZyYW1lLmRhdGEoKSwgJm5ld0ZyYW1lXShzaXplX3QgcG9zaXRpb24sIGJvb2wgc2hv
dWRsQmVFc2NhcGVkKSB7Ci0gICAgICAgIGlmIChzaG91ZGxCZUVzY2FwZWQpCi0gICAgICAgICAg
ICBuZXdGcmFtZS51bmNoZWNrZWRBcHBlbmQoMyk7Ci0gICAgICAgIG5ld0ZyYW1lLnVuY2hlY2tl
ZEFwcGVuZChkYXRhW3Bvc2l0aW9uXSk7Ci0gICAgfSk7Ci0KLSAgICBmcmFtZSA9IFdURk1vdmUo
bmV3RnJhbWUpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFC
TEUoV0VCX1JUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vSDI2NFV0aWxzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0gyNjRV
dGlscy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNjZhNTc3MTI5YzhmNDUyMzUz
MzVmMDVjM2Q4NjkzMDI2NDJhMzRjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vSDI2NFV0aWxz
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCX1JU
QykKLQotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1z
dHJ1Y3QgSDI2NFByZWZpeEJ1ZmZlciB7Ci0gICAgY29uc3QgdWludDhfdCogZGF0YSB7IG51bGxw
dHIgfTsKLSAgICBzaXplX3Qgc2l6ZSB7IDAgfTsKLSAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVy
OwotfTsKLQotc2l6ZV90IGNvbXB1dGVQcmVmaXhPZmZzZXQoY29uc3QgdWludDhfdCosIHNpemVf
dCk7Ci1IMjY0UHJlZml4QnVmZmVyIGNvbXB1dGVQcmVmaXhCdWZmZXIoY29uc3QgdWludDhfdCos
IHNpemVfdCk7Ci0KLVdFQkNPUkVfRVhQT1JUIGJvb2wgbmVlZHNSYnNwVW5lc2NhcGluZyhjb25z
dCB1aW50OF90Kiwgc2l6ZV90KTsKLVdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBmcm9t
UmJzcChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLVdFQkNPUkVfRVhQT1JUIHZvaWQgdG9SYnNw
KFZlY3Rvcjx1aW50OF90PiYsIHNpemVfdCk7Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uaWRsIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uaWRsCmluZGV4IDBk
ZGNhNDQ0YzhjNzQzZjkwNzA0MTg1NzhjMGM5OGY5MzA4NWQ3YWYuLjYxZDE2YTVhOThmNmRhMmQ3
MTMyYzNmYjFlMGIyZTg1NDliMDFmNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmlkbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5pZGwKQEAgLTMw
LDcgKzMwLDggQEAgZW51bSBSVENSdHBTRnJhbWVUcmFuc2Zvcm1Sb2xlIHsKIAogZW51bSBSVENS
dHBTRnJhbWVUcmFuc2Zvcm1Db21wYXRpYmlsaXR5TW9kZSB7CiAgICAgIm5vbmUiLAotICAgICJI
MjY0IgorICAgICJIMjY0IiwKKyAgICAiVlA4IgogfTsKIAogZGljdGlvbmFyeSBSVENSdHBTRnJh
bWVUcmFuc2Zvcm1PcHRpb25zIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5jcHAKaW5kZXggYjc2
OTNhMDFiMzBmYTM1NWUxZWFkMDNmZTFiYjQ4MTQ4MGJkYzQ5MC4uODliMDhiMzJmYWI4MDdkNjhm
ZmI4ODRlZGIwNWRkOTcxNWM1ZGNmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5jcHAKQEAg
LTI4LDcgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShXRUJfUlRDKQogCi0jaW5jbHVkZSAiSDI2NFV0
aWxzLmgiCisjaW5jbHVkZSAiU0ZyYW1lVXRpbHMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC0xOTYsOCArMTk2LDkgQEAgRXhjZXB0aW9uT3I8dm9pZD4gUlRDUnRwU0ZyYW1lVHJhbnNm
b3JtZXI6OnVwZGF0ZUVuY3J5cHRpb25LZXkoY29uc3QgVmVjdG9yPHVpbnQKIEV4Y2VwdGlvbk9y
PFZlY3Rvcjx1aW50OF90Pj4gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmRlY3J5cHRGcmFtZShj
b25zdCB1aW50OF90KiBmcmFtZURhdGEsIHNpemVfdCBmcmFtZVNpemUpCiB7CiAgICAgVmVjdG9y
PHVpbnQ4X3Q+IGJ1ZmZlcjsKLSAgICBpZiAobV9jb21wYXRpYmlsaXR5TW9kZSA9PSBDb21wYXRp
YmlsaXR5TW9kZTo6SDI2NCkgewotICAgICAgICBhdXRvIG9mZnNldCA9IGNvbXB1dGVQcmVmaXhP
ZmZzZXQoZnJhbWVEYXRhLCBmcmFtZVNpemUpOworICAgIHN3aXRjaCAobV9jb21wYXRpYmlsaXR5
TW9kZSkgeworICAgIGNhc2UgQ29tcGF0aWJpbGl0eU1vZGU6OkgyNjQ6IHsKKyAgICAgICAgYXV0
byBvZmZzZXQgPSBjb21wdXRlSDI2NFByZWZpeE9mZnNldChmcmFtZURhdGEsIGZyYW1lU2l6ZSk7
CiAgICAgICAgIGZyYW1lRGF0YSArPSBvZmZzZXQ7CiAgICAgICAgIGZyYW1lU2l6ZSAtPSBvZmZz
ZXQ7CiAgICAgICAgIGlmIChuZWVkc1Jic3BVbmVzY2FwaW5nKGZyYW1lRGF0YSwgZnJhbWVTaXpl
KSkgewpAQCAtMjA1LDYgKzIwNiwxNiBAQCBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IFJU
Q1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpkZWNyeXB0RnJhbWUoY29uc3QgdWludDhfdAogICAgICAg
ICAgICAgZnJhbWVEYXRhID0gYnVmZmVyLmRhdGEoKTsKICAgICAgICAgICAgIGZyYW1lU2l6ZSA9
IGJ1ZmZlci5zaXplKCk7CiAgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNh
c2UgQ29tcGF0aWJpbGl0eU1vZGU6OlZQODogeworICAgICAgICBhdXRvIG9mZnNldCA9IGNvbXB1
dGVWUDhQcmVmaXhPZmZzZXQoZnJhbWVEYXRhLCBmcmFtZVNpemUpOworICAgICAgICBmcmFtZURh
dGEgKz0gb2Zmc2V0OworICAgICAgICBmcmFtZVNpemUgLT0gb2Zmc2V0OworICAgICAgICBicmVh
azsKKyAgICB9CisgICAgY2FzZSBDb21wYXRpYmlsaXR5TW9kZTo6Tm9uZToKKyAgICAgICAgYnJl
YWs7CiAgICAgfQogCiAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2tleUxvY2spOwpAQCAt
MjU5LDkgKzI3MCwxNyBAQCBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IFJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybWVyOjplbmNyeXB0RnJhbWUoY29uc3QgdWludDhfdAogICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBNYXhIZWFkZXJTaXplID0gMTc7CiAKICAgICBWZWN0b3I8dWludDhfdD4gdHJh
bnNmb3JtZWREYXRhOwotICAgIEgyNjRQcmVmaXhCdWZmZXIgcHJlZml4QnVmZmVyOwotICAgIGlm
IChtX2NvbXBhdGliaWxpdHlNb2RlID09IENvbXBhdGliaWxpdHlNb2RlOjpIMjY0KQotICAgICAg
ICBwcmVmaXhCdWZmZXIgPSBjb21wdXRlUHJlZml4QnVmZmVyKGZyYW1lRGF0YSwgZnJhbWVTaXpl
KTsKKyAgICBTRnJhbWVDb21wYXRpYmlsaXR5UHJlZml4QnVmZmVyIHByZWZpeEJ1ZmZlcjsKKyAg
ICBzd2l0Y2ggKG1fY29tcGF0aWJpbGl0eU1vZGUpIHsKKyAgICBjYXNlIENvbXBhdGliaWxpdHlN
b2RlOjpIMjY0OgorICAgICAgICBwcmVmaXhCdWZmZXIgPSBjb21wdXRlSDI2NFByZWZpeEJ1ZmZl
cihmcmFtZURhdGEsIGZyYW1lU2l6ZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ29tcGF0
aWJpbGl0eU1vZGU6OlZQODoKKyAgICAgICAgcHJlZml4QnVmZmVyID0gY29tcHV0ZVZQOFByZWZp
eEJ1ZmZlcihmcmFtZURhdGEsIGZyYW1lU2l6ZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
Q29tcGF0aWJpbGl0eU1vZGU6Ok5vbmU6CisgICAgICAgIGJyZWFrOworICAgIH0KIAogICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sobV9rZXlMb2NrKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5o
CmluZGV4IGM4ZDM4ZTdlYzU4M2RkNDBlNmFjYmM2ZjZjZTRkNjY0NTNiMjBlYjguLjM3ZWUxYWM5
MGQ0YjE1YWYzMzgyOTI0YjU5MjAwMzNmMzhhZDNlNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVy
LmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgQ3J5cHRvS2V5OwogCiBjbGFzcyBSVENSdHBTRnJh
bWVUcmFuc2Zvcm1lciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxSVENSdHBTRnJhbWVU
cmFuc2Zvcm1lciwgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFpbj4gewogcHVibGljOgotICAg
IGVudW0gY2xhc3MgQ29tcGF0aWJpbGl0eU1vZGUgeyBOb25lLCBIMjY0IH07CisgICAgZW51bSBj
bGFzcyBDb21wYXRpYmlsaXR5TW9kZSB7IE5vbmUsIEgyNjQsIFZQOCB9OwogCiAgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJlZjxSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcj4gY3JlYXRlKENvbXBh
dGliaWxpdHlNb2RlID0gQ29tcGF0aWJpbGl0eU1vZGU6Ok5vbmUpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIH5SVENSdHBTRnJhbWVUcmFuc2Zvcm1lcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9TRnJhbWVVdGlscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1NGcmFtZVV0aWxzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wODI3NTJiMzQ2
MmY4N2VhOGU3MTE0OTI2MmI2MTE4NjhjNWZiM2ZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9TRnJhbWVVdGlscy5jcHAKQEAgLTAsMCArMSwy
MDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU0ZyYW1lVXRpbHMuaCIKKworI2lmIEVOQUJMRShX
RUJfUlRDKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc1Ns
aWNlTkFMVSh1aW50OF90IGRhdGEpCit7CisgICAgcmV0dXJuIChkYXRhICYgMHgxRikgPT0gMTsK
K30KKworc3RhdGljIGlubGluZSBib29sIGlzU1BTTkFMVSh1aW50OF90IGRhdGEpCit7CisgICAg
cmV0dXJuIChkYXRhICYgMHgxRikgPT0gNzsKK30KKworc3RhdGljIGlubGluZSBib29sIGlzUFBT
TkFMVSh1aW50OF90IGRhdGEpCit7CisgICAgcmV0dXJuIChkYXRhICYgMHgxRikgPT0gODsKK30K
Kworc3RhdGljIGlubGluZSBib29sIGlzSURSTkFMVSh1aW50OF90IGRhdGEpCit7CisgICAgcmV0
dXJuIChkYXRhICYgMHgxRikgPT0gNTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGZpbmROYWx1
cyhjb25zdCB1aW50OF90KiBmcmFtZURhdGEsIHNpemVfdCBmcmFtZVNpemUsIHNpemVfdCBvZmZz
ZXQsIGNvbnN0IEZ1bmN0aW9uPGJvb2woc2l6ZV90KT4mIGNhbGxiYWNrKQoreworICAgIGZvciAo
c2l6ZV90IGkgPSA0ICsgb2Zmc2V0OyBpIDwgZnJhbWVTaXplOyArK2kpIHsKKyAgICAgICAgaWYg
KGZyYW1lRGF0YVtpIC0gNF0gPT0gMCAmJiBmcmFtZURhdGFbaSAtIDNdID09IDAgJiYgZnJhbWVE
YXRhW2kgLSAyXSA9PSAwICYmIGZyYW1lRGF0YVtpIC0gMV0gPT0gMSkgeworICAgICAgICAgICAg
aWYgKGNhbGxiYWNrKGkpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
IH0KK30KKworc2l6ZV90IGNvbXB1dGVIMjY0UHJlZml4T2Zmc2V0KGNvbnN0IHVpbnQ4X3QqIGZy
YW1lRGF0YSwgc2l6ZV90IGZyYW1lU2l6ZSkKK3sKKyAgICBzaXplX3Qgb2Zmc2V0ID0gMDsKKyAg
ICBmaW5kTmFsdXMoZnJhbWVEYXRhLCBmcmFtZVNpemUsIDAsIFsmb2Zmc2V0LCAmZnJhbWVEYXRh
XShhdXRvIHBvc2l0aW9uKSB7CisgICAgICAgIGlmIChpc0lEUk5BTFUoZnJhbWVEYXRhW3Bvc2l0
aW9uXSkgfHwgaXNTbGljZU5BTFUoZnJhbWVEYXRhW3Bvc2l0aW9uXSkpIHsKKyAgICAgICAgICAg
IC8vIFNraXAgMDAgMDAgMDAgMDEsIG5hbHUgdHlwZSBieXRlIGFuZCB0aGUgbmV4dCBieXRlLgor
ICAgICAgICAgICAgb2Zmc2V0ID0gcG9zaXRpb24gKyAyOworICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0pOworICAgIHJldHVy
biBvZmZzZXQ7Cit9CisKK2Jvb2wgbmVlZHNSYnNwVW5lc2NhcGluZyhjb25zdCB1aW50OF90KiBm
cmFtZURhdGEsIHNpemVfdCBmcmFtZVNpemUpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBmcmFtZVNpemUgLSAzOyArK2kpIHsKKyAgICAgICAgaWYgKGZyYW1lRGF0YVtpXSA9PSAwICYm
IGZyYW1lRGF0YVtpICsgMV0gPT0gMCAmJiBmcmFtZURhdGFbaSArIDJdID09IDMpCisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitWZWN0b3I8
dWludDhfdD4gZnJvbVJic3AoY29uc3QgdWludDhfdCogZnJhbWVEYXRhLCBzaXplX3QgZnJhbWVT
aXplKQoreworICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7CisgICAgYnVmZmVyLnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkoZnJhbWVTaXplKTsKKworICAgIHNpemVfdCBpOworICAgIGZvciAoaSA9
IDA7IGkgPCBmcmFtZVNpemUgLSAzOyArK2kpIHsKKyAgICAgICAgaWYgKGZyYW1lRGF0YVtpXSA9
PSAwICYmIGZyYW1lRGF0YVtpICsgMV0gPT0gMCAmJiBmcmFtZURhdGFbaSArIDJdID09IDMpIHsK
KyAgICAgICAgICAgIGJ1ZmZlci51bmNoZWNrZWRBcHBlbmQoZnJhbWVEYXRhW2ldKTsKKyAgICAg
ICAgICAgIGJ1ZmZlci51bmNoZWNrZWRBcHBlbmQoZnJhbWVEYXRhW2kgKyAxXSk7CisgICAgICAg
ICAgICAvLyBTa2lwIG5leHQgYnl0ZSB3aGljaCBpcyBkZWxpbWl0ZXIuCisgICAgICAgICAgICBp
ICs9IDI7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYnVmZmVyLnVuY2hlY2tlZEFwcGVu
ZChmcmFtZURhdGFbaV0pOworICAgIH0KKyAgICBmb3IgKDsgaSA8IGZyYW1lU2l6ZTsgKytpKQor
ICAgICAgICBidWZmZXIudW5jaGVja2VkQXBwZW5kKGZyYW1lRGF0YVtpXSk7CisKKyAgICByZXR1
cm4gYnVmZmVyOworfQorCitTRnJhbWVDb21wYXRpYmlsaXR5UHJlZml4QnVmZmVyIGNvbXB1dGVI
MjY0UHJlZml4QnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGZyYW1lRGF0YSwgc2l6ZV90IGZyYW1lU2l6
ZSkKK3sKKyAgICAvLyBEZWx0YSBhbmQga2V5IHByZWZpeGVzIGFzc3VtZSBTUFMvUFBTIHdpdGgg
SURzIGVxdWFsIHRvIDAgaGF2ZSBiZWVuIHRyYW5zbWl0dGVkLgorICAgIHN0YXRpYyBjb25zdCB1
aW50OF90IHByZWZpeERlbHRhRnJhbWVbNl0gPSB7IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4
MjEsIDB4ZTAgfTsKKworICAgIGlmIChmcmFtZVNpemUgPCA1KQorICAgICAgICByZXR1cm4geyB9
OworCisgICAgLy8gV2UgYXNzdW1lIGEga2V5IGZyYW1lIHN0YXJ0cyB3aXRoIFNQUywgdGhlbiBQ
UFMuIE90aGVyd2lzZSB3ZSB3cmFwIGl0IGFzIGEgZGVsdGEgZnJhbWUuCisgICAgaWYgKCFpc1NQ
U05BTFUoZnJhbWVEYXRhWzRdKSkKKyAgICAgICAgcmV0dXJuIFNGcmFtZUNvbXBhdGliaWxpdHlQ
cmVmaXhCdWZmZXIgeyBwcmVmaXhEZWx0YUZyYW1lLCBzaXplb2YocHJlZml4RGVsdGFGcmFtZSks
IHsgfSB9OworCisgICAgLy8gU2VhcmNoIGZvciBQUFMKKyAgICBzaXplX3Qgc3BzUHBzTGVuZ3Ro
ID0gMDsKKyAgICBmaW5kTmFsdXMoZnJhbWVEYXRhLCBmcmFtZVNpemUsIDUsIFtmcmFtZURhdGEs
ICZzcHNQcHNMZW5ndGhdKGF1dG8gcG9zaXRpb24pIHsKKyAgICAgICAgaWYgKGlzUFBTTkFMVShm
cmFtZURhdGFbcG9zaXRpb25dKSkKKyAgICAgICAgICAgIHNwc1Bwc0xlbmd0aCA9IHBvc2l0aW9u
OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9KTsKKyAgICBpZiAoIXNwc1Bwc0xlbmd0aCkK
KyAgICAgICAgcmV0dXJuIFNGcmFtZUNvbXBhdGliaWxpdHlQcmVmaXhCdWZmZXIgeyBwcmVmaXhE
ZWx0YUZyYW1lLCBzaXplb2YocHJlZml4RGVsdGFGcmFtZSksIHsgfSB9OworCisgICAgLy8gU2Vh
cmNoIGZvciBuZXh0IE5BTFUgdG8gY29tcHV0ZSB0aGUgcmVhbCBzcHNQcHNMZW5ndGgsIGluY2x1
ZGluZyB0aGUgbmV4dCAwMCAwMCAwMCAwMS4KKyAgICBmaW5kTmFsdXMoZnJhbWVEYXRhLCBmcmFt
ZVNpemUsIHNwc1Bwc0xlbmd0aCArIDEsIFsmc3BzUHBzTGVuZ3RoXShhdXRvIHBvc2l0aW9uKSB7
CisgICAgICAgIHNwc1Bwc0xlbmd0aCA9IHBvc2l0aW9uOworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9KTsKKworICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7CisgICAgYnVmZmVyLnJlc2l6
ZShzcHNQcHNMZW5ndGggKyAyKTsKKyAgICBzdGQ6Om1lbWNweShidWZmZXIuZGF0YSgpLCBmcmFt
ZURhdGEsIHNwc1Bwc0xlbmd0aCk7CisgICAgYnVmZmVyW3Nwc1Bwc0xlbmd0aF0gPSAweDI1Owor
ICAgIGJ1ZmZlcltzcHNQcHNMZW5ndGggKyAxXSA9IDB4Yjg7CisgICAgcmV0dXJuIHsgYnVmZmVy
LmRhdGEoKSwgYnVmZmVyLnNpemUoKSwgV1RGTW92ZShidWZmZXIpIH07Cit9CisKK3N0YXRpYyBp
bmxpbmUgdm9pZCBmaW5kRXNjYXBlUmJzcFBhdHRlcm5zKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
ZnJhbWUsIHNpemVfdCBvZmZzZXQsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoc2l6ZV90LCBib29sKT4m
IGNhbGxiYWNrKQoreworICAgIHNpemVfdCBudW1Db25zZWN1dGl2ZVplcm9zID0gMDsKKyAgICBh
dXRvKiBkYXRhID0gZnJhbWUuZGF0YSgpOworICAgIGZvciAoc2l6ZV90IGkgPSBvZmZzZXQ7IGkg
PCBmcmFtZS5zaXplKCk7ICsraSkgeworICAgICAgICBib29sIHNob3VsZEVzY2FwZSA9IGRhdGFb
aV0gPD0gMyAmJiBudW1Db25zZWN1dGl2ZVplcm9zID49IDI7CisgICAgICAgIGlmIChzaG91bGRF
c2NhcGUpCisgICAgICAgICAgICBudW1Db25zZWN1dGl2ZVplcm9zID0gMDsKKworICAgICAgICBp
ZiAoZGF0YVtpXSA9PSAwKQorICAgICAgICAgICAgKytudW1Db25zZWN1dGl2ZVplcm9zOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBudW1Db25zZWN1dGl2ZVplcm9zID0gMDsKKworICAgICAg
ICBjYWxsYmFjayhpLCBzaG91bGRFc2NhcGUpOworICAgIH0KK30KKwordm9pZCB0b1Jic3AoVmVj
dG9yPHVpbnQ4X3Q+JiBmcmFtZSwgc2l6ZV90IG9mZnNldCkKK3sKKyAgICBzaXplX3QgY291bnQg
PSAwOworICAgIGZpbmRFc2NhcGVSYnNwUGF0dGVybnMoZnJhbWUsIG9mZnNldCwgWyZjb3VudF0o
c2l6ZV90LCBib29sIHNob3VkbEJlRXNjYXBlZCkgeworICAgICAgICBpZiAoc2hvdWRsQmVFc2Nh
cGVkKQorICAgICAgICAgICAgY291bnQrKzsKKyAgICB9KTsKKyAgICBpZiAoIWNvdW50KQorICAg
ICAgICByZXR1cm47CisKKyAgICBWZWN0b3I8dWludDhfdD4gbmV3RnJhbWU7CisgICAgbmV3RnJh
bWUucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShmcmFtZS5zaXplKCkgKyBjb3VudCk7CisgICAgbmV3
RnJhbWUuYXBwZW5kKGZyYW1lLmRhdGEoKSwgb2Zmc2V0KTsKKworICAgIGZpbmRFc2NhcGVSYnNw
UGF0dGVybnMoZnJhbWUsIG9mZnNldCwgW2RhdGEgPSBmcmFtZS5kYXRhKCksICZuZXdGcmFtZV0o
c2l6ZV90IHBvc2l0aW9uLCBib29sIHNob3VkbEJlRXNjYXBlZCkgeworICAgICAgICBpZiAoc2hv
dWRsQmVFc2NhcGVkKQorICAgICAgICAgICAgbmV3RnJhbWUudW5jaGVja2VkQXBwZW5kKDMpOwor
ICAgICAgICBuZXdGcmFtZS51bmNoZWNrZWRBcHBlbmQoZGF0YVtwb3NpdGlvbl0pOworICAgIH0p
OworCisgICAgZnJhbWUgPSBXVEZNb3ZlKG5ld0ZyYW1lKTsKK30KKworc3RhdGljIGlubGluZSBi
b29sIGlzVlA4S2V5RnJhbWUoY29uc3QgdWludDhfdCogZnJhbWUsIHNpemVfdCBzaXplKQorewor
ICAgIEFTU0VSVF9VTlVTRUQoc2l6ZSwgc2l6ZSk7CisgICAgcmV0dXJuICEoKmZyYW1lICYgMHgw
MSk7Cit9CisKK3NpemVfdCBjb21wdXRlVlA4UHJlZml4T2Zmc2V0KGNvbnN0IHVpbnQ4X3QqIGZy
YW1lLCBzaXplX3Qgc2l6ZSkKK3sKKyAgICByZXR1cm4gaXNWUDhLZXlGcmFtZShmcmFtZSwgc2l6
ZSkgPyAxMCA6IDM7Cit9CisKK1NGcmFtZUNvbXBhdGliaWxpdHlQcmVmaXhCdWZmZXIgY29tcHV0
ZVZQOFByZWZpeEJ1ZmZlcihjb25zdCB1aW50OF90KiBmcmFtZSwgc2l6ZV90IHNpemUpCit7Cisg
ICAgVmVjdG9yPHVpbnQ4X3Q+IHByZWZpeDsKKyAgICBwcmVmaXguYXBwZW5kKGZyYW1lLCBpc1ZQ
OEtleUZyYW1lKGZyYW1lLCBzaXplKSA/IDEwIDogMyk7CisgICAgcmV0dXJuIHsgcHJlZml4LmRh
dGEoKSwgcHJlZml4LnNpemUoKSwgV1RGTW92ZShwcmVmaXgpIH07Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9TRnJhbWVVdGlscy5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9TRnJhbWVVdGlscy5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIwNWJj
OTI1NzlhMTJmYzYyMTczOGVlNjlhMGQ2MTYxOWMzM2Q1OTkKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1NGcmFtZVV0aWxzLmgKQEAgLTAsMCAr
MSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9SVEMpCisKKyNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IFNGcmFtZUNvbXBhdGliaWxpdHlQ
cmVmaXhCdWZmZXIgeworICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEgeyBudWxscHRyIH07CisgICAg
c2l6ZV90IHNpemUgeyAwIH07CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKK307CisKK3Np
emVfdCBjb21wdXRlSDI2NFByZWZpeE9mZnNldChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKK1NG
cmFtZUNvbXBhdGliaWxpdHlQcmVmaXhCdWZmZXIgY29tcHV0ZUgyNjRQcmVmaXhCdWZmZXIoY29u
c3QgdWludDhfdCosIHNpemVfdCk7CisKK1dFQkNPUkVfRVhQT1JUIGJvb2wgbmVlZHNSYnNwVW5l
c2NhcGluZyhjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKK1dFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1
aW50OF90PiBmcm9tUmJzcChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKK1dFQkNPUkVfRVhQT1JU
IHZvaWQgdG9SYnNwKFZlY3Rvcjx1aW50OF90PiYsIHNpemVfdCk7CisKK3NpemVfdCBjb21wdXRl
VlA4UHJlZml4T2Zmc2V0KGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworU0ZyYW1lQ29tcGF0aWJp
bGl0eVByZWZpeEJ1ZmZlciBjb21wdXRlVlA4UHJlZml4QnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBz
aXplX3QpOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VC
X1JUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKaW5kZXggOWJmYWU5NjRlMjRkMmMyN2JiZTc4N2ZiOTAwMTMzNjM1
ZTg0MDEyMy4uNjc4OWUzMDlmYjY2MTAxNjNkYjZhZTJhMDc4ODY3ZjdiM2I0NTc5OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKQEAgLTE0Myw3ICsxNDMsNiBAQCBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1
ZmZlci5jcHAKIE1vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyTGlzdC5jcHAKIE1vZHVs
ZXMvbWVkaWFzb3VyY2UvVmlkZW9QbGF5YmFja1F1YWxpdHkuY3BwCiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmNwcAotTW9kdWxlcy9tZWRpYXN0cmVh
bS9IMjY0VXRpbHMuY3BwCiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlSW5mby5jcHAK
IE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmNwcAogTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbS5jcHAKQEAgLTE3Nyw2ICsxNzYsNyBAQCBNb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1J0cFRyYW5zZm9ybS5jcHAKIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNjZWl2
ZXIuY3BwCiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1Nlc3Npb25EZXNjcmlwdGlvbi5jcHAKIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDVHJhY2tFdmVudC5jcHAKK01vZHVsZXMvbWVkaWFzdHJlYW0v
U0ZyYW1lVXRpbHMuY3BwCiBNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xsZXIu
Y3BwCiBNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCiBNb2R1bGVzL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENDZXJ0aWZpY2F0ZUdlbmVyYXRvci5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA0YWFlYzU3NTQ5NzE4ZWQ1MTZkOTc2OWMwMmRjZGEyODdjM2Q0NzJmLi44ODAwNTkwOGEzNTVi
ZTNkNWMyMTFhNTBkY2UwYzAxMTI1ZTBjOWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTMzLDcgKzExMzMsNyBAQAogCQk0
MUIyOEIzRDFGODYwRUYzMDBGQjUyQUMgLyogTGliV2ViUlRDUHJvdmlkZXJDb2NvYS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFCMjhCMzYxRjg2MEJE
MDAwRkI1MkFDIC8qIExpYldlYlJUQ1Byb3ZpZGVyQ29jb2EuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MUIyQTYyNjFFRjFCRjZEMDAyQjlEN0Eg
LyogV2ViQXVkaW9Tb3VyY2VQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDFCMkE2MjUxRUYxQkY2MDAwMkI5RDdBIC8qIFdlYkF1ZGlvU291
cmNlUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk0MUI4Nzc2MjIzREUxMDQ1MDAzNjM4QjggLyogUmVhbHRpbWVNZWRpYVNvdXJjZUlk
ZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxQjg3NzYwMjNERTEwNDIwMDM2MzhCOCAvKiBSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmll
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTQx
QkJBODY2MjU3RTM3M0IwMEFDN0Y2RCAvKiBIMjY0VXRpbHMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMjA5RTI0MjU3QTJGQkIwMDEyMEFDQSAvKiBI
MjY0VXRpbHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQk0MUJCQTg2NjI1N0UzNzNCMDBBQzdGNkQgLyogU0ZyYW1lVXRpbHMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMjA5RTI0MjU3QTJGQkIwMDEy
MEFDQSAvKiBTRnJhbWVVdGlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTQxQkYyMDQ5MjJCQTdCRTgwMDA0RjgxMiAvKiBSZWFsdGltZVZpZGVv
U291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MUJGMjA0MDIyQjk0NzE2MDAwNEY4MTIgLyogUmVhbHRpbWVWaWRlb1NvdXJjZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxQzc2MEIxMEVERTAz
RDMwMEMxNjU1RiAvKiBTY3JpcHRTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDFDNzYwQjAwRURFMDNEMzAwQzE2NTVGIC8qIFNjcmlwdFN0YXRl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDFE
MDE1Q0EwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUQwMTVDODBGNEI1QzcxMDA0QTY2MkYgLyog
Q29udGVudFR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtNzU4NCw4ICs3NTg0LDggQEAKIAkJNDExODlFRjcxQUQ4MjMyODAwQjkwQTBEIC8q
IFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MTE4OUVGNzFBRDgyMzI4MDBCOTNGNjQgLyogUmVhZGFibGVCeXRlU3Ry
ZWFtQ29udHJvbGxlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVhZGFibGVCeXRlU3Ry
ZWFtQ29udHJvbGxlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTg5RUY3
MUFEODIzMjgwMEI5NTY3MiAvKiBSZWFkYWJsZVN0cmVhbUJZT0JSZXF1ZXN0LmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBSZWFkYWJsZVN0cmVhbUJZT0JSZXF1ZXN0LmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDEyMDlFMjQyNTdBMkZCQjAwMTIwQUNBIC8qIEgyNjRVdGls
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIMjY0VXRpbHMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDEyMDlFMjYyNTdBMkZCQjAwMTIwQUNBIC8qIEgyNjRV
dGlscy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIMjY0VXRpbHMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTIwOUUyNDI1N0EyRkJCMDAxMjBB
Q0EgLyogU0ZyYW1lVXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU0Zy
YW1lVXRpbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDEyMDlFMjYyNTdBMkZC
QjAwMTIwQUNBIC8qIFNGcmFtZVV0aWxzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFNGcmFtZVV0aWxzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDEyMDlFOTEyMTZENTkzQzAwQTczQTEyIC8qIFJUQ0NlcnRpZmljYXRlLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBSVENDZXJ0aWZpY2F0ZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxMjA5RTkzMjE2RDVDNzkwMEE3M0ExMiAvKiBSVENDZXJ0aWZpY2F0ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSVENDZXJ0aWZpY2F0ZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTIwOUU5NDIxNkVBNjlBMDBBNzNBMTIgLyogUlRDQ2VydGlm
aWNhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUlRDQ2VydGlm
aWNhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTcwNzgsOCArMTcwNzgs
NiBAQAogCQkJCTQxQzdFMTA4MUU2QUEzN0MwMDI3QjRERSAvKiBDYW52YXNDYXB0dXJlTWVkaWFT
dHJlYW1UcmFjay5pZGwgKi8sCiAJCQkJOTNBODA2MTExRTAzQjUxQzAwOEExRjI2IC8qIERvdWJs
ZVJhbmdlLmggKi8sCiAJCQkJOTNBODA2MTIxRTAzQjUxQzAwOEExRjI2IC8qIERvdWJsZVJhbmdl
LmlkbCAqLywKLQkJCQk0MTIwOUUyNjI1N0EyRkJCMDAxMjBBQ0EgLyogSDI2NFV0aWxzLmNwcCAq
LywKLQkJCQk0MTIwOUUyNDI1N0EyRkJCMDAxMjBBQ0EgLyogSDI2NFV0aWxzLmggKi8sCiAJCQkJ
OTNBODA2MTMxRTAzQjUxQzAwOEExRjI2IC8qIExvbmdSYW5nZS5oICovLAogCQkJCTkzQTgwNjE0
MUUwM0I1MUMwMDhBMUYyNiAvKiBMb25nUmFuZ2UuaWRsICovLAogCQkJCTE1OUFFODJBMUIzQTQw
MkYwMDM3NDc4QiAvKiBNZWRpYURldmljZUluZm8uY3BwICovLApAQCAtMTcyNTYsNiArMTcyNTQs
OCBAQAogCQkJCTVFMkM0MzY0MUJDRUUzNzIwMDAxRTJCQyAvKiBSVENUcmFja0V2ZW50LmNwcCAq
LywKIAkJCQk1RTJDNDM2NTFCQ0VFMzcyMDAwMUUyQkMgLyogUlRDVHJhY2tFdmVudC5oICovLAog
CQkJCTVFMkM0MzY2MUJDRUUzNzIwMDAxRTJCQyAvKiBSVENUcmFja0V2ZW50LmlkbCAqLywKKwkJ
CQk0MTIwOUUyNjI1N0EyRkJCMDAxMjBBQ0EgLyogU0ZyYW1lVXRpbHMuY3BwICovLAorCQkJCTQx
MjA5RTI0MjU3QTJGQkIwMDEyMEFDQSAvKiBTRnJhbWVVdGlscy5oICovLAogCQkJCTA3MjIxQjhE
MTdDRUMzMjcwMDg0OEU1MSAvKiBVc2VyTWVkaWFDbGllbnQuaCAqLywKIAkJCQkwNzIyMUI4RTE3
Q0VDMzI3MDA4NDhFNTEgLyogVXNlck1lZGlhQ29udHJvbGxlci5jcHAgKi8sCiAJCQkJMDcyMjFC
OEYxN0NFQzMyNzAwODQ4RTUxIC8qIFVzZXJNZWRpYUNvbnRyb2xsZXIuaCAqLywKQEAgLTMyMTU4
LDcgKzMyMTU4LDYgQEAKIAkJCQlDREY3NDgzRjE4RkVCQ0VDMDAwNkVDQzAgLyogR3JpZFBvc2l0
aW9uc1Jlc29sdmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTJBMTA1MDE2NjQ0NEZEMDA4RkEz
MTEgLyogR3JpZFRyYWNrU2l6ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTEyREU3MTgxRTRCNzRB
NjAwRjlBQ0NGIC8qIEdyaWRUcmFja1NpemluZ0FsZ29yaXRobS5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJNDFCQkE4NjYyNTdFMzczQjAwQUM3RjZEIC8qIEgyNjRVdGlscy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMjZFQTg5QTcxQjRGMkI3NTAwOEM1RkQyIC8qIEhhc2hhYmxlQWN0aW9uTGlzdC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODQ4MkI3NDYxMTk4QzM1NDAwQkZCMDA1IC8qIEhhc2hDaGFuZ2VF
dmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg3NDhCRTAxMkNCRjJEQzAwMUZCQTQxIC8qIEhh
c2hUb29scy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDQ4Nyw2ICszNDQ4Niw3IEBACiAJCQkJQjhE
QkRCNEMxMzBCMEY4QTAwRjVDREIxIC8qIFNldFNlbGVjdGlvbkNvbW1hbmQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTdDRDU4REZCMUY5NTY1QTUwMDExMjc5MSAvKiBTZXR0aW5ncy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJN0NDOTcyMkUxRjkzRTMzNjAwMDRENENGIC8qIFNldHRpbmdzQmFzZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNDFCQkE4NjYyNTdFMzczQjAwQUM3RjZEIC8qIFNGcmFtZVV0aWxz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjNERDQ1MDEyRjVFQTFCMDAwRDkxOTAgLyogU2hhZG93
Qmx1ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1RUI4QzQwRTgyMDMxQjAwQjI1OTY1IC8qIFNo
YWRvd0RhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUE2RDE2OTY0MTM0NkI0QzEwMDBFQjc3MCAv
KiBTaGFkb3dSb290LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5tbQppbmRleCA4YTk5
ZWM0ZDE3OGRiMGViYmY0YTNmYzBkOWI2ZjAzYTgxYjU1NzIyLi4xMWUyM2U3NjRkOTI0N2M3YTEw
ZjY3NTlhMTYwMGMyMmE0Yzc3MGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9TYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCkBAIC0zOSwyOSArMzks
MjkgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAvLyBUaGF0IHdheSBXZWJLaXQgZG9lcyBub3QgbmVl
ZCB0byBrbm93IGFib3V0IHRoZSBTYWZhcmlTYWZlQnJvd3NpbmcgZnJhbWV3b3JrJ3MgcG9zc2li
bGUgcHJvdmlkZXJzLgogc3RhdGljIGNvbnN0IGNoYXIqIG1hbHdhcmVEZXRhaWxzQmFzZShTU0JT
ZXJ2aWNlTG9va3VwUmVzdWx0ICpyZXN1bHQpCiB7Ci0gICAgaWYgKFtyZXN1bHQucHJvdmlkZXIg
aXNFcXVhbFRvU3RyaW5nOlNTQlByb3ZpZGVyVGVuY2VudF0pCi0gICAgICAgIHJldHVybiAiaHR0
cHM6Ly93d3cudXJsc2VjLnFxLmNvbS9jaGVjay5odG1sP3RwbD1zYWZhcmkiOworLy8gICAgaWYg
KFtyZXN1bHQucHJvdmlkZXIgaXNFcXVhbFRvU3RyaW5nOlNTQlByb3ZpZGVyVGVuY2VudF0pCisg
Ly8gICAgICAgcmV0dXJuICJodHRwczovL3d3dy51cmxzZWMucXEuY29tL2NoZWNrLmh0bWw/dHBs
PXNhZmFyaSI7CiAgICAgcmV0dXJuICJodHRwczovL2dvb2dsZS5jb20vc2FmZWJyb3dzaW5nL2Rp
YWdub3N0aWM/dHBsPXNhZmFyaSI7CiB9CiAKIHN0YXRpYyBOU1VSTCAqbGVhcm5Nb3JlVVJMKFNT
QlNlcnZpY2VMb29rdXBSZXN1bHQgKnJlc3VsdCkKIHsKLSAgICBpZiAoW3Jlc3VsdC5wcm92aWRl
ciBpc0VxdWFsVG9TdHJpbmc6U1NCUHJvdmlkZXJUZW5jZW50XSkKLSAgICAgICAgcmV0dXJuIFtO
U1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly93d3cudXJsc2VjLnFxLmNvbS9zdGFuZGFyZC9z
MS5odG1sP3RwbD1zYWZhcmkiXTsKKy8vICAgIGlmIChbcmVzdWx0LnByb3ZpZGVyIGlzRXF1YWxU
b1N0cmluZzpTU0JQcm92aWRlclRlbmNlbnRdKQorLy8gICAgICAgIHJldHVybiBbTlNVUkwgVVJM
V2l0aFN0cmluZzpAImh0dHBzOi8vd3d3LnVybHNlYy5xcS5jb20vc3RhbmRhcmQvczEuaHRtbD90
cGw9c2FmYXJpIl07CiAgICAgcmV0dXJuIFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly93
d3cuZ29vZ2xlLmNvbS9zdXBwb3J0L2Jpbi9hbnN3ZXIucHk/YW5zd2VyPTEwNjMxOCJdOwogfQog
CiBzdGF0aWMgY29uc3QgY2hhciogcmVwb3J0QW5FcnJvckJhc2UoU1NCU2VydmljZUxvb2t1cFJl
c3VsdCAqcmVzdWx0KQogewotICAgIGlmIChbcmVzdWx0LnByb3ZpZGVyIGlzRXF1YWxUb1N0cmlu
ZzpTU0JQcm92aWRlclRlbmNlbnRdKQotICAgICAgICByZXR1cm4gImh0dHBzOi8vd3d3LnVybHNl
Yy5xcS5jb20vY29tcGxhaW4uaHRtbD90cGw9c2FmYXJpIjsKKy8vICAgIGlmIChbcmVzdWx0LnBy
b3ZpZGVyIGlzRXF1YWxUb1N0cmluZzpTU0JQcm92aWRlclRlbmNlbnRdKQorLy8gICAgICAgIHJl
dHVybiAiaHR0cHM6Ly93d3cudXJsc2VjLnFxLmNvbS9jb21wbGFpbi5odG1sP3RwbD1zYWZhcmki
OwogICAgIHJldHVybiAiaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9zYWZlYnJvd3NpbmcvcmVwb3J0
X2Vycm9yLz90cGw9c2FmYXJpIjsKIH0KIAogc3RhdGljIFN0cmluZyBsb2NhbGl6ZWRQcm92aWRl
cihTU0JTZXJ2aWNlTG9va3VwUmVzdWx0ICpyZXN1bHQpCiB7Ci0gICAgaWYgKFtyZXN1bHQucHJv
dmlkZXIgaXNFcXVhbFRvU3RyaW5nOlNTQlByb3ZpZGVyVGVuY2VudF0pCi0gICAgICAgIHJldHVy
biBXRUJfVUlfTlNTVFJJTkcoQCJUZW5jZW50IFNhZmUgQnJvd3NpbmciLCAiVGVuY2VudCBTYWZl
IEJyb3dzaW5nIik7CisvLyAgICBpZiAoW3Jlc3VsdC5wcm92aWRlciBpc0VxdWFsVG9TdHJpbmc6
U1NCUHJvdmlkZXJUZW5jZW50XSkKKyAgLy8gICAgICByZXR1cm4gV0VCX1VJX05TU1RSSU5HKEAi
VGVuY2VudCBTYWZlIEJyb3dzaW5nIiwgIlRlbmNlbnQgU2FmZSBCcm93c2luZyIpOwogICAgIHJl
dHVybiBXRUJfVUlfTlNTVFJJTkcoQCJHb29nbGUgU2FmZSBCcm93c2luZyIsICJHb29nbGUgU2Fm
ZSBCcm93c2luZyIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlBhZ2VQcm94eUNvY29hLm1tCmluZGV4IGYwZjQ3YWRjYTIyMGVhODI0N2U4OWQ5MDE2YjNh
YmRmZjRjYzNmNGIuLmE3ZTAxNTJkYjVhNjJhNzBjZmI1NjhmODIyYWJlZmYwMjMzZjIyYzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29h
Lm1tCkBAIC0xMTIsMjkgKzExMiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpncmFudEFjY2Vzc1Rv
Q3VycmVudFBhc3RlYm9hcmREYXRhKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hCiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpiZWdpblNhZmVCcm93c2luZ0NoZWNrKGNvbnN0IFVSTCYgdXJsLCBib29s
IGZvck1haW5GcmFtZU5hdmlnYXRpb24sIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eSYgbGlz
dGVuZXIpCiB7Ci0jaWYgSEFWRShTQUZFX0JST1dTSU5HKQotICAgIFNTQkxvb2t1cENvbnRleHQg
KmNvbnRleHQgPSBbU1NCTG9va3VwQ29udGV4dCBzaGFyZWRMb29rdXBDb250ZXh0XTsKLSAgICBp
ZiAoIWNvbnRleHQpCi0gICAgICAgIHJldHVybiBsaXN0ZW5lci5kaWRSZWNlaXZlU2FmZUJyb3dz
aW5nUmVzdWx0cyh7IH0pOwotICAgIFtjb250ZXh0IGxvb2tVcFVSTDp1cmwgY29tcGxldGlvbkhh
bmRsZXI6bWFrZUJsb2NrUHRyKFtsaXN0ZW5lciA9IG1ha2VSZWYobGlzdGVuZXIpLCBmb3JNYWlu
RnJhbWVOYXZpZ2F0aW9uLCB1cmwgPSB1cmxdIChTU0JMb29rdXBSZXN1bHQgKnJlc3VsdCwgTlNF
cnJvciAqZXJyb3IpIG11dGFibGUgewotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2go
W2xpc3RlbmVyID0gV1RGTW92ZShsaXN0ZW5lciksIHJlc3VsdCA9IHJldGFpblB0cihyZXN1bHQp
LCBlcnJvciA9IHJldGFpblB0cihlcnJvciksIGZvck1haW5GcmFtZU5hdmlnYXRpb24sIHVybCA9
IFdURk1vdmUodXJsKV0gewotICAgICAgICAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAgICAg
ICAgbGlzdGVuZXItPmRpZFJlY2VpdmVTYWZlQnJvd3NpbmdSZXN1bHRzKHsgfSk7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBmb3IgKFNTQlNl
cnZpY2VMb29rdXBSZXN1bHQgKmxvb2t1cFJlc3VsdCBpbiBbcmVzdWx0IHNlcnZpY2VMb29rdXBS
ZXN1bHRzXSkgewotICAgICAgICAgICAgICAgIGlmIChsb29rdXBSZXN1bHQuaXNQaGlzaGluZyB8
fCBsb29rdXBSZXN1bHQuaXNNYWx3YXJlIHx8IGxvb2t1cFJlc3VsdC5pc1Vud2FudGVkU29mdHdh
cmUpIHsKLSAgICAgICAgICAgICAgICAgICAgbGlzdGVuZXItPmRpZFJlY2VpdmVTYWZlQnJvd3Np
bmdSZXN1bHRzKFNhZmVCcm93c2luZ1dhcm5pbmc6OmNyZWF0ZSh1cmwsIGZvck1haW5GcmFtZU5h
dmlnYXRpb24sIGxvb2t1cFJlc3VsdCkpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgbGlzdGVuZXItPmRp
ZFJlY2VpdmVTYWZlQnJvd3NpbmdSZXN1bHRzKHsgfSk7Ci0gICAgICAgIH0pOwotICAgIH0pLmdl
dCgpXTsKLSNlbHNlCiAgICAgbGlzdGVuZXIuZGlkUmVjZWl2ZVNhZmVCcm93c2luZ1Jlc3VsdHMo
eyB9KTsKLSNlbmRpZgogfQogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1JUQ1J0cFNGcmFtZVRyYW5z
Zm9ybWVyVGVzdHMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1JUQ1J0
cFNGcmFtZVRyYW5zZm9ybWVyVGVzdHMuY3BwCmluZGV4IDg3OGZmM2NkMmZlYTQyMjU0YjhjNGQ5
NjNlNTM0MjkyYmE4ZmUyNTMuLmQwZWQ0Yjg4MWZlOWVhNDI0ZmI3MjE3NzFjNTcyMWZlNzkxYzRj
NzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9SVENSdHBT
RnJhbWVUcmFuc2Zvcm1lclRlc3RzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXJUZXN0cy5jcHAKQEAgLTI3LDggKzI3LDgg
QEAKIAogI2lmIEVOQUJMRShXRUJfUlRDKQogCi0jaW5jbHVkZSA8V2ViQ29yZS9IMjY0VXRpbHMu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9TRnJhbWVVdGlscy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDNiZjMyNzhkMzU5MjkzMzI3NzkyNzljNTA1
YzFkNWZlZTQzZWJmZjQuLjIxZDk2MDJjYzc0NWZlNTUzZTk5Yjk4OGVhNTdjNWJjODYxNjZmZmEg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMC0xMi0wOSAgWW91ZW5uIEZhYmxldCAgPHlvdWVu
bkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGEgU0ZyYW1lIFZQOCBleHBlcmltZW50YWwgY29t
cGF0aWJpbGl0eSBtb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTk2NzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHdlYnJ0Yy92aWRlby1zZnJhbWUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdl
YnJ0Yy92aWRlby1zZnJhbWUuaHRtbDoKKwogMjAyMC0xMi0wOCAgWW91ZW5uIEZhYmxldCAgPHlv
dWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgR2F0ZSBWUDkgZXhwb3N1cmUgaW4gTWVkaWFDYXBh
YmlsaXRpZXMgb24gVlA5RGVjb2RlckVuYWJsZWQgcHJlZmVyZW5jZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2VicnRjL3ZpZGVvLXNmcmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93
ZWJydGMvdmlkZW8tc2ZyYW1lLWV4cGVjdGVkLnR4dAppbmRleCBmM2ZmNmM3YWY4OTkwMzBiZGUy
MGI0MGRhZmU1MzE0NjQzOTNiYjNjLi4xNjA5NTU1MzEzM2Y2MWMzZmVmYjRkOTBkN2I5NGZkODNm
YjZlOTU5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJydGMvdmlkZW8tc2ZyYW1lLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy93ZWJydGMvdmlkZW8tc2ZyYW1lLWV4cGVjdGVkLnR4
dApAQCAtMiw0ICsyLDUgQEAKIAogUEFTUyBWaWRlbyBleGNoYW5nZSB3aXRoIFNGcmFtZSAtIEgy
NjQgYmFzZWxpbmUKIFBBU1MgVmlkZW8gZXhjaGFuZ2Ugd2l0aCBTRnJhbWUgLSBIMjY0IGhpZ2gK
K1BBU1MgVmlkZW8gZXhjaGFuZ2Ugd2l0aCBTRnJhbWUgLSBWUDgKIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2VicnRjL3ZpZGVvLXNmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvd2VicnRjL3Zp
ZGVvLXNmcmFtZS5odG1sCmluZGV4IGUzMzczZTFhNTkzZTQ1ZDAwNTI1YTEwYWIyZjE4NzhmMmQw
ZGI1ZWMuLmMyYzFkZDQ1ODBkZTFmNzJjNjM2YzlmNTRjM2I4Y2Y2N2M5ZjkxYmQgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3dlYnJ0Yy92aWRlby1zZnJhbWUuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJydGMvdmlkZW8tc2ZyYW1lLmh0bWwKQEAgLTEwLDI5ICsxMCwyOSBAQAogICAgICAgICA8
dmlkZW8gaWQ9InJlbW90ZSIgYXV0b3BsYXkgcGxheXNJbmxpbmU+PC92aWRlbz4KICAgICAgICAg
PHNjcmlwdCBzcmMgPSJyb3V0aW5lcy5qcyI+PC9zY3JpcHQ+CiAgICAgICAgIDxzY3JpcHQ+Ci1h
c3luYyBmdW5jdGlvbiBkb1NGcmFtZVRlc3Qoc2VsZWN0Q29kZWMpCithc3luYyBmdW5jdGlvbiBk
b1NGcmFtZVRlc3QoY29kZWMsIG1vZGUsIHNob3VsZENsb3NlKQogeworICAgIGxldCBwYzEsIHBj
MjsKICAgICBsZXQgc2VuZGVyLCByZWNlaXZlcjsKICAgICBjb25zdCBsb2NhbFN0cmVhbSA9IGF3
YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHt2aWRlbzogdHJ1ZX0pOwog
ICAgIGNvbnN0IGtleSA9IGF3YWl0IGNyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KCJyYXciLCBuZXcg
VWludDhBcnJheShbMTQzLCA3NywgNDMsIDEwLCA3MiwgMTksIDM3LCA2NywgMjM2LCAyMTksIDI0
LCA5MywgMjYsIDE2NSwgOTEsIDE3OF0pLCAiSEtERiIsIGZhbHNlLCBbImRlcml2ZUJpdHMiLCAi
ZGVyaXZlS2V5Il0pOwogICAgIGNvbnN0IHN0cmVhbSA9IGF3YWl0IG5ldyBQcm9taXNlKChyZXNv
bHZlLCByZWplY3QpID0+IHsKICAgICAgICAgY3JlYXRlQ29ubmVjdGlvbnMoKGZpcnN0Q29ubmVj
dGlvbikgPT4geworICAgICAgICAgICAgcGMxID0gZmlyc3RDb25uZWN0aW9uOwogICAgICAgICAg
ICAgc2VuZGVyID0gZmlyc3RDb25uZWN0aW9uLmFkZFRyYWNrKGxvY2FsU3RyZWFtLmdldFRyYWNr
cygpWzBdLCBsb2NhbFN0cmVhbSk7Ci0gICAgICAgICAgICBsZXQgdHJhbnNmb3JtID0gbmV3IFJU
Q1J0cFNGcmFtZVRyYW5zZm9ybSh7Y29tcGF0aWJpbGl0eU1vZGU6ICJIMjY0In0pOworICAgICAg
ICAgICAgZmlyc3RDb25uZWN0aW9uLmdldFRyYW5zY2VpdmVycygpWzBdLnNldENvZGVjUHJlZmVy
ZW5jZXMoW2NvZGVjXSk7CisgICAgICAgICAgICBsZXQgdHJhbnNmb3JtID0gbmV3IFJUQ1J0cFNG
cmFtZVRyYW5zZm9ybSh7Y29tcGF0aWJpbGl0eU1vZGU6IG1vZGV9KTsKICAgICAgICAgICAgIHRy
YW5zZm9ybS5zZXRFbmNyeXB0aW9uS2V5KGtleSk7CiAgICAgICAgICAgICBzZW5kZXIudHJhbnNm
b3JtID0gdHJhbnNmb3JtOwogICAgICAgICB9LCAoc2Vjb25kQ29ubmVjdGlvbikgPT4geworICAg
ICAgICAgICAgcGMyID0gc2Vjb25kQ29ubmVjdGlvbjsKICAgICAgICAgICAgIHNlY29uZENvbm5l
Y3Rpb24ub250cmFjayA9ICh0cmFja0V2ZW50KSA9PiB7Ci0gICAgICAgICAgICAgICAgbGV0IHRy
YW5zZm9ybSA9IG5ldyBSVENSdHBTRnJhbWVUcmFuc2Zvcm0oe2NvbXBhdGliaWxpdHlNb2RlOiAi
SDI2NCJ9KTsKKyAgICAgICAgICAgICAgICBsZXQgdHJhbnNmb3JtID0gbmV3IFJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybSh7Y29tcGF0aWJpbGl0eU1vZGU6IG1vZGV9KTsKICAgICAgICAgICAgICAgICB0
cmFuc2Zvcm0uc2V0RW5jcnlwdGlvbktleShrZXkpOwogICAgICAgICAgICAgICAgIHJlY2VpdmVy
ID0gdHJhY2tFdmVudC5yZWNlaXZlcjsKICAgICAgICAgICAgICAgICByZWNlaXZlci50cmFuc2Zv
cm0gPSB0cmFuc2Zvcm07CiAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cmFja0V2ZW50LnN0cmVh
bXNbMF0pOwogICAgICAgICAgICAgfTsKLSAgICAgICAgfSwgeyBvYnNlcnZlT2ZmZXIgOiAob2Zm
ZXIpID0+IHsKLSAgICAgICAgICAgIG9mZmVyLnNkcCA9IHNlbGVjdENvZGVjKG9mZmVyLnNkcCk7
Ci0gICAgICAgICAgICByZXR1cm4gb2ZmZXI7Ci0gICAgICAgIH0KICAgICAgICAgfSk7CiAgICAg
ICAgIHNldFRpbWVvdXQoKCkgPT4gcmVqZWN0KCJUZXN0IHRpbWVkIG91dCIpLCA1MDAwKTsKICAg
ICB9KTsKQEAgLTUwLDE1ICs1MCwyMyBAQCBhc3luYyBmdW5jdGlvbiBkb1NGcmFtZVRlc3Qoc2Vs
ZWN0Q29kZWMpCiAgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGludGVybmFscy5zZnJhbWVDb3Vu
dGVyKHJlY2VpdmVyLnRyYW5zZm9ybSksIHJlY2VpdmVyQ291bnRlciwgInJlY2VpdmVyIik7CiAg
ICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGludGVybmFscy5zZnJhbWVDb3VudGVyKHNlbmRlci50
cmFuc2Zvcm0pLCBzZW5kZXJDb3VudGVyLCAic2VuZGVyIik7CiAgICAgfQorICAgIGlmIChzaG91
bGRDbG9zZSkgeworICAgICAgICBwYzEuY2xvc2UoKTsKKyAgICAgICAgcGMyLmNsb3NlKCk7Cisg
ICAgfQogfQogCiBwcm9taXNlX3Rlc3QoKHRlc3QpID0+IHsKLSAgICByZXR1cm4gZG9TRnJhbWVU
ZXN0KHNldEgyNjRCYXNlbGluZUNvZGVjKTsKKyAgICByZXR1cm4gZG9TRnJhbWVUZXN0KHtjbG9j
a1JhdGU6IDkwMDAwLCBtaW1lVHlwZTogInZpZGVvL0gyNjQiLCBzZHBGbXRwTGluZTogImxldmVs
LWFzeW1tZXRyeS1hbGxvd2VkPTE7cGFja2V0aXphdGlvbi1tb2RlPTE7cHJvZmlsZS1sZXZlbC1p
ZD00MmUwMWYifSwgIkgyNjQiLCB0cnVlKTsKIH0sICJWaWRlbyBleGNoYW5nZSB3aXRoIFNGcmFt
ZSAtIEgyNjQgYmFzZWxpbmUiKTsKIAogcHJvbWlzZV90ZXN0KCh0ZXN0KSA9PiB7Ci0gICAgcmV0
dXJuIGRvU0ZyYW1lVGVzdChzZXRIMjY0SGlnaENvZGVjKTsKKyAgICByZXR1cm4gZG9TRnJhbWVU
ZXN0KHtjbG9ja1JhdGU6IDkwMDAwLCBtaW1lVHlwZTogInZpZGVvL0gyNjQiLCBzZHBGbXRwTGlu
ZTogImxldmVsLWFzeW1tZXRyeS1hbGxvd2VkPTE7cGFja2V0aXphdGlvbi1tb2RlPTE7cHJvZmls
ZS1sZXZlbC1pZD02NDBjMWYifSwgIkgyNjQiLCB0cnVlKTsKIH0sICJWaWRlbyBleGNoYW5nZSB3
aXRoIFNGcmFtZSAtIEgyNjQgaGlnaCIpOworCitwcm9taXNlX3Rlc3QoKHRlc3QpID0+IHsKKyAg
ICByZXR1cm4gZG9TRnJhbWVUZXN0KHttaW1lVHlwZTogInZpZGVvL1ZQOCIsIGNsb2NrUmF0ZTog
OTAwMDB9LCAiVlA4IiwgZmFsc2UpOworfSwgIlZpZGVvIGV4Y2hhbmdlIHdpdGggU0ZyYW1lIC0g
VlA4Iik7CiAgICAgICAgIDwvc2NyaXB0PgogICAgIDwvYm9keT4KIDwvaHRtbD4K
</data>
<flag name="commit-queue"
          id="433030"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415746</attachid>
            <date>2020-12-09 04:55:33 -0800</date>
            <delta_ts>2020-12-10 08:03:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219674-20201209135531.patch</filename>
            <type>text/plain</type>
            <size>35311</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNTMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjBiZDRlNWZhNDQ0ODMz
ZGJjNDVjZTZhOGJmYjNjZDdhYmQxYTdmMy4uOTBjMDYwYTMzN2I0NTljYTU3ZTQ5NDc3YzFkZWJi
MDcyNzNkNjk0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIwLTEyLTA5ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYSBTRnJhbWUgVlA4
IGV4cGVyaW1lbnRhbCBjb21wYXRpYmlsaXR5IG1vZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTY3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbWlsYXJseSB0byBIMjY0LCBwcmVmaXggdGhlIFNG
cmFtZSBjb250ZW50IHdpdGggc29tZSBkYXRhIHRvIGVuc3VyZSBrZXkgZnJhbWVzIG9yIHJlc29s
dXRpb24gY2FuIGJlIGRldGVjdGVkCisgICAgICAgIHdpdGhvdXQgcmV2ZWFsaW5nIHRoZSBhY3R1
YWwgY29udGVudC4KKworICAgICAgICBDb3ZlcmVkIGJ5IHVwZGF0ZWQgdGVzdC4KKworICAgICAg
ICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmlkbDoKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpkZWNyeXB0RnJhbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmVuY3J5cHRGcmFtZSk6
CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5o
OgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vU0ZyYW1lVXRpbHMuY3BwOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9IMjY0VXRpbHMuY3BwLgor
ICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZUgyNjRQcmVmaXhPZmZzZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6Y29tcHV0ZUgyNjRQcmVmaXhCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6aXNWUDhL
ZXlGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlVlA4UHJlZml4T2Zmc2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OmNvbXB1dGVWUDhQcmVmaXhCdWZmZXIpOgorICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vU0ZyYW1lVXRpbHMuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vSDI2NFV0aWxzLmguCisgICAgICAgICogU291cmNlcy50eHQ6
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDIwLTEy
LTA4ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBHYXRlIFZQ
OSBleHBvc3VyZSBpbiBNZWRpYUNhcGFiaWxpdGllcyBvbiBWUDlEZWNvZGVyRW5hYmxlZCBwcmVm
ZXJlbmNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0gy
NjRVdGlscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0gyNjRVdGls
cy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQxODdlODFiNDEwN2M5YzkyYWFi
Mzc1YWRlNTQ0NDJlYzk1NDZjOWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9IMjY0VXRpbHMu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTg2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
SDI2NFV0aWxzLmgiCi0KLSNpZiBFTkFCTEUoV0VCX1JUQykKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1zdGF0aWMgaW5saW5lIGJvb2wgaXNTbGljZU5BTFUodWludDhfdCBkYXRhKQotewotICAg
IHJldHVybiAoZGF0YSAmIDB4MUYpID09IDE7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBpc1NQ
U05BTFUodWludDhfdCBkYXRhKQotewotICAgIHJldHVybiAoZGF0YSAmIDB4MUYpID09IDc7Ci19
Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBpc1BQU05BTFUodWludDhfdCBkYXRhKQotewotICAgIHJl
dHVybiAoZGF0YSAmIDB4MUYpID09IDg7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBpc0lEUk5B
TFUodWludDhfdCBkYXRhKQotewotICAgIHJldHVybiAoZGF0YSAmIDB4MUYpID09IDU7Ci19Ci0K
LXN0YXRpYyBpbmxpbmUgdm9pZCBmaW5kTmFsdXMoY29uc3QgdWludDhfdCogZnJhbWVEYXRhLCBz
aXplX3QgZnJhbWVTaXplLCBzaXplX3Qgb2Zmc2V0LCBjb25zdCBGdW5jdGlvbjxib29sKHNpemVf
dCk+JiBjYWxsYmFjaykKLXsKLSAgICBmb3IgKHNpemVfdCBpID0gNCArIG9mZnNldDsgaSA8IGZy
YW1lU2l6ZTsgKytpKSB7Ci0gICAgICAgIGlmIChmcmFtZURhdGFbaSAtIDRdID09IDAgJiYgZnJh
bWVEYXRhW2kgLSAzXSA9PSAwICYmIGZyYW1lRGF0YVtpIC0gMl0gPT0gMCAmJiBmcmFtZURhdGFb
aSAtIDFdID09IDEpIHsKLSAgICAgICAgICAgIGlmIChjYWxsYmFjayhpKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXNpemVfdCBjb21wdXRlUHJlZml4
T2Zmc2V0KGNvbnN0IHVpbnQ4X3QqIGZyYW1lRGF0YSwgc2l6ZV90IGZyYW1lU2l6ZSkKLXsKLSAg
ICBzaXplX3Qgb2Zmc2V0ID0gMDsKLSAgICBmaW5kTmFsdXMoZnJhbWVEYXRhLCBmcmFtZVNpemUs
IDAsIFsmb2Zmc2V0LCAmZnJhbWVEYXRhXShhdXRvIHBvc2l0aW9uKSB7Ci0gICAgICAgIGlmIChp
c0lEUk5BTFUoZnJhbWVEYXRhW3Bvc2l0aW9uXSkgfHwgaXNTbGljZU5BTFUoZnJhbWVEYXRhW3Bv
c2l0aW9uXSkpIHsKLSAgICAgICAgICAgIC8vIFNraXAgMDAgMDAgMDAgMDEsIG5hbHUgdHlwZSBi
eXRlIGFuZCB0aGUgbmV4dCBieXRlLgotICAgICAgICAgICAgb2Zmc2V0ID0gcG9zaXRpb24gKyAy
OwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0pOwotICAgIHJldHVybiBvZmZzZXQ7Ci19Ci0KLWJvb2wgbmVlZHNSYnNwVW5l
c2NhcGluZyhjb25zdCB1aW50OF90KiBmcmFtZURhdGEsIHNpemVfdCBmcmFtZVNpemUpCi17Ci0g
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmcmFtZVNpemUgLSAzOyArK2kpIHsKLSAgICAgICAg
aWYgKGZyYW1lRGF0YVtpXSA9PSAwICYmIGZyYW1lRGF0YVtpICsgMV0gPT0gMCAmJiBmcmFtZURh
dGFbaSArIDJdID09IDMpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0
dXJuIGZhbHNlOwotfQotCi1WZWN0b3I8dWludDhfdD4gZnJvbVJic3AoY29uc3QgdWludDhfdCog
ZnJhbWVEYXRhLCBzaXplX3QgZnJhbWVTaXplKQotewotICAgIFZlY3Rvcjx1aW50OF90PiBidWZm
ZXI7Ci0gICAgYnVmZmVyLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZnJhbWVTaXplKTsKLQotICAg
IHNpemVfdCBpOwotICAgIGZvciAoaSA9IDA7IGkgPCBmcmFtZVNpemUgLSAzOyArK2kpIHsKLSAg
ICAgICAgaWYgKGZyYW1lRGF0YVtpXSA9PSAwICYmIGZyYW1lRGF0YVtpICsgMV0gPT0gMCAmJiBm
cmFtZURhdGFbaSArIDJdID09IDMpIHsKLSAgICAgICAgICAgIGJ1ZmZlci51bmNoZWNrZWRBcHBl
bmQoZnJhbWVEYXRhW2ldKTsKLSAgICAgICAgICAgIGJ1ZmZlci51bmNoZWNrZWRBcHBlbmQoZnJh
bWVEYXRhW2kgKyAxXSk7Ci0gICAgICAgICAgICAvLyBTa2lwIG5leHQgYnl0ZSB3aGljaCBpcyBk
ZWxpbWl0ZXIuCi0gICAgICAgICAgICBpICs9IDI7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgYnVmZmVyLnVuY2hlY2tlZEFwcGVuZChmcmFtZURhdGFbaV0pOwotICAgIH0KLSAgICBmb3Ig
KDsgaSA8IGZyYW1lU2l6ZTsgKytpKQotICAgICAgICBidWZmZXIudW5jaGVja2VkQXBwZW5kKGZy
YW1lRGF0YVtpXSk7Ci0KLSAgICByZXR1cm4gYnVmZmVyOwotfQotCi1IMjY0UHJlZml4QnVmZmVy
IGNvbXB1dGVQcmVmaXhCdWZmZXIoY29uc3QgdWludDhfdCogZnJhbWVEYXRhLCBzaXplX3QgZnJh
bWVTaXplKQotewotICAgIC8vIERlbHRhIGFuZCBrZXkgcHJlZml4ZXMgYXNzdW1lIFNQUy9QUFMg
d2l0aCBJRHMgZXF1YWwgdG8gMCBoYXZlIGJlZW4gdHJhbnNtaXR0ZWQuCi0gICAgc3RhdGljIGNv
bnN0IHVpbnQ4X3QgcHJlZml4RGVsdGFGcmFtZVs2XSA9IHsgMHgwMCwgMHgwMCwgMHgwMCwgMHgw
MSwgMHgyMSwgMHhlMCB9OwotCi0gICAgaWYgKGZyYW1lU2l6ZSA8IDUpCi0gICAgICAgIHJldHVy
biB7IH07Ci0KLSAgICAvLyBXZSBhc3N1bWUgYSBrZXkgZnJhbWUgc3RhcnRzIHdpdGggU1BTLCB0
aGVuIFBQUy4gT3RoZXJ3aXNlIHdlIHdyYXAgaXQgYXMgYSBkZWx0YSBmcmFtZS4KLSAgICBpZiAo
IWlzU1BTTkFMVShmcmFtZURhdGFbNF0pKQotICAgICAgICByZXR1cm4gSDI2NFByZWZpeEJ1ZmZl
ciB7IHByZWZpeERlbHRhRnJhbWUsIHNpemVvZihwcmVmaXhEZWx0YUZyYW1lKSwgeyB9IH07Ci0K
LSAgICAvLyBTZWFyY2ggZm9yIFBQUwotICAgIHNpemVfdCBzcHNQcHNMZW5ndGggPSAwOwotICAg
IGZpbmROYWx1cyhmcmFtZURhdGEsIGZyYW1lU2l6ZSwgNSwgW2ZyYW1lRGF0YSwgJnNwc1Bwc0xl
bmd0aF0oYXV0byBwb3NpdGlvbikgewotICAgICAgICBpZiAoaXNQUFNOQUxVKGZyYW1lRGF0YVtw
b3NpdGlvbl0pKQotICAgICAgICAgICAgc3BzUHBzTGVuZ3RoID0gcG9zaXRpb247Ci0gICAgICAg
IHJldHVybiB0cnVlOwotICAgIH0pOwotICAgIGlmICghc3BzUHBzTGVuZ3RoKQotICAgICAgICBy
ZXR1cm4gSDI2NFByZWZpeEJ1ZmZlciB7IHByZWZpeERlbHRhRnJhbWUsIHNpemVvZihwcmVmaXhE
ZWx0YUZyYW1lKSwgeyB9IH07Ci0KLSAgICAvLyBTZWFyY2ggZm9yIG5leHQgTkFMVSB0byBjb21w
dXRlIHRoZSByZWFsIHNwc1Bwc0xlbmd0aCwgaW5jbHVkaW5nIHRoZSBuZXh0IDAwIDAwIDAwIDAx
LgotICAgIGZpbmROYWx1cyhmcmFtZURhdGEsIGZyYW1lU2l6ZSwgc3BzUHBzTGVuZ3RoICsgMSwg
WyZzcHNQcHNMZW5ndGhdKGF1dG8gcG9zaXRpb24pIHsKLSAgICAgICAgc3BzUHBzTGVuZ3RoID0g
cG9zaXRpb247Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0pOwotCi0gICAgVmVjdG9yPHVp
bnQ4X3Q+IGJ1ZmZlcjsKLSAgICBidWZmZXIucmVzaXplKHNwc1Bwc0xlbmd0aCArIDIpOwotICAg
IHN0ZDo6bWVtY3B5KGJ1ZmZlci5kYXRhKCksIGZyYW1lRGF0YSwgc3BzUHBzTGVuZ3RoKTsKLSAg
ICBidWZmZXJbc3BzUHBzTGVuZ3RoXSA9IDB4MjU7Ci0gICAgYnVmZmVyW3Nwc1Bwc0xlbmd0aCAr
IDFdID0gMHhiODsKLSAgICByZXR1cm4geyBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpLCBX
VEZNb3ZlKGJ1ZmZlcikgfTsKLX0KLQotc3RhdGljIGlubGluZSB2b2lkIGZpbmRFc2NhcGVSYnNw
UGF0dGVybnMoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBmcmFtZSwgc2l6ZV90IG9mZnNldCwgY29u
c3QgRnVuY3Rpb248dm9pZChzaXplX3QsIGJvb2wpPiYgY2FsbGJhY2spCi17Ci0gICAgc2l6ZV90
IG51bUNvbnNlY3V0aXZlWmVyb3MgPSAwOwotICAgIGF1dG8qIGRhdGEgPSBmcmFtZS5kYXRhKCk7
Ci0gICAgZm9yIChzaXplX3QgaSA9IG9mZnNldDsgaSA8IGZyYW1lLnNpemUoKTsgKytpKSB7Ci0g
ICAgICAgIGJvb2wgc2hvdWxkRXNjYXBlID0gZGF0YVtpXSA8PSAzICYmIG51bUNvbnNlY3V0aXZl
WmVyb3MgPj0gMjsKLSAgICAgICAgaWYgKHNob3VsZEVzY2FwZSkKLSAgICAgICAgICAgIG51bUNv
bnNlY3V0aXZlWmVyb3MgPSAwOwotCi0gICAgICAgIGlmIChkYXRhW2ldID09IDApCi0gICAgICAg
ICAgICArK251bUNvbnNlY3V0aXZlWmVyb3M7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG51
bUNvbnNlY3V0aXZlWmVyb3MgPSAwOwotCi0gICAgICAgIGNhbGxiYWNrKGksIHNob3VsZEVzY2Fw
ZSk7Ci0gICAgfQotfQotCi12b2lkIHRvUmJzcChWZWN0b3I8dWludDhfdD4mIGZyYW1lLCBzaXpl
X3Qgb2Zmc2V0KQotewotICAgIHNpemVfdCBjb3VudCA9IDA7Ci0gICAgZmluZEVzY2FwZVJic3BQ
YXR0ZXJucyhmcmFtZSwgb2Zmc2V0LCBbJmNvdW50XShzaXplX3QsIGJvb2wgc2hvdWRsQmVFc2Nh
cGVkKSB7Ci0gICAgICAgIGlmIChzaG91ZGxCZUVzY2FwZWQpCi0gICAgICAgICAgICBjb3VudCsr
OwotICAgIH0pOwotICAgIGlmICghY291bnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIFZlY3Rv
cjx1aW50OF90PiBuZXdGcmFtZTsKLSAgICBuZXdGcmFtZS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KGZyYW1lLnNpemUoKSArIGNvdW50KTsKLSAgICBuZXdGcmFtZS5hcHBlbmQoZnJhbWUuZGF0YSgp
LCBvZmZzZXQpOwotCi0gICAgZmluZEVzY2FwZVJic3BQYXR0ZXJucyhmcmFtZSwgb2Zmc2V0LCBb
ZGF0YSA9IGZyYW1lLmRhdGEoKSwgJm5ld0ZyYW1lXShzaXplX3QgcG9zaXRpb24sIGJvb2wgc2hv
dWRsQmVFc2NhcGVkKSB7Ci0gICAgICAgIGlmIChzaG91ZGxCZUVzY2FwZWQpCi0gICAgICAgICAg
ICBuZXdGcmFtZS51bmNoZWNrZWRBcHBlbmQoMyk7Ci0gICAgICAgIG5ld0ZyYW1lLnVuY2hlY2tl
ZEFwcGVuZChkYXRhW3Bvc2l0aW9uXSk7Ci0gICAgfSk7Ci0KLSAgICBmcmFtZSA9IFdURk1vdmUo
bmV3RnJhbWUpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFC
TEUoV0VCX1JUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vSDI2NFV0aWxzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0gyNjRV
dGlscy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNjZhNTc3MTI5YzhmNDUyMzUz
MzVmMDVjM2Q4NjkzMDI2NDJhMzRjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vSDI2NFV0aWxz
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCX1JU
QykKLQotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1z
dHJ1Y3QgSDI2NFByZWZpeEJ1ZmZlciB7Ci0gICAgY29uc3QgdWludDhfdCogZGF0YSB7IG51bGxw
dHIgfTsKLSAgICBzaXplX3Qgc2l6ZSB7IDAgfTsKLSAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVy
OwotfTsKLQotc2l6ZV90IGNvbXB1dGVQcmVmaXhPZmZzZXQoY29uc3QgdWludDhfdCosIHNpemVf
dCk7Ci1IMjY0UHJlZml4QnVmZmVyIGNvbXB1dGVQcmVmaXhCdWZmZXIoY29uc3QgdWludDhfdCos
IHNpemVfdCk7Ci0KLVdFQkNPUkVfRVhQT1JUIGJvb2wgbmVlZHNSYnNwVW5lc2NhcGluZyhjb25z
dCB1aW50OF90Kiwgc2l6ZV90KTsKLVdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBmcm9t
UmJzcChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLVdFQkNPUkVfRVhQT1JUIHZvaWQgdG9SYnNw
KFZlY3Rvcjx1aW50OF90PiYsIHNpemVfdCk7Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uaWRsIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uaWRsCmluZGV4IDBk
ZGNhNDQ0YzhjNzQzZjkwNzA0MTg1NzhjMGM5OGY5MzA4NWQ3YWYuLjYxZDE2YTVhOThmNmRhMmQ3
MTMyYzNmYjFlMGIyZTg1NDliMDFmNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmlkbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5pZGwKQEAgLTMw
LDcgKzMwLDggQEAgZW51bSBSVENSdHBTRnJhbWVUcmFuc2Zvcm1Sb2xlIHsKIAogZW51bSBSVENS
dHBTRnJhbWVUcmFuc2Zvcm1Db21wYXRpYmlsaXR5TW9kZSB7CiAgICAgIm5vbmUiLAotICAgICJI
MjY0IgorICAgICJIMjY0IiwKKyAgICAiVlA4IgogfTsKIAogZGljdGlvbmFyeSBSVENSdHBTRnJh
bWVUcmFuc2Zvcm1PcHRpb25zIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5jcHAKaW5kZXggYjc2
OTNhMDFiMzBmYTM1NWUxZWFkMDNmZTFiYjQ4MTQ4MGJkYzQ5MC4uODliMDhiMzJmYWI4MDdkNjhm
ZmI4ODRlZGIwNWRkOTcxNWM1ZGNmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5jcHAKQEAg
LTI4LDcgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShXRUJfUlRDKQogCi0jaW5jbHVkZSAiSDI2NFV0
aWxzLmgiCisjaW5jbHVkZSAiU0ZyYW1lVXRpbHMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC0xOTYsOCArMTk2LDkgQEAgRXhjZXB0aW9uT3I8dm9pZD4gUlRDUnRwU0ZyYW1lVHJhbnNm
b3JtZXI6OnVwZGF0ZUVuY3J5cHRpb25LZXkoY29uc3QgVmVjdG9yPHVpbnQKIEV4Y2VwdGlvbk9y
PFZlY3Rvcjx1aW50OF90Pj4gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmRlY3J5cHRGcmFtZShj
b25zdCB1aW50OF90KiBmcmFtZURhdGEsIHNpemVfdCBmcmFtZVNpemUpCiB7CiAgICAgVmVjdG9y
PHVpbnQ4X3Q+IGJ1ZmZlcjsKLSAgICBpZiAobV9jb21wYXRpYmlsaXR5TW9kZSA9PSBDb21wYXRp
YmlsaXR5TW9kZTo6SDI2NCkgewotICAgICAgICBhdXRvIG9mZnNldCA9IGNvbXB1dGVQcmVmaXhP
ZmZzZXQoZnJhbWVEYXRhLCBmcmFtZVNpemUpOworICAgIHN3aXRjaCAobV9jb21wYXRpYmlsaXR5
TW9kZSkgeworICAgIGNhc2UgQ29tcGF0aWJpbGl0eU1vZGU6OkgyNjQ6IHsKKyAgICAgICAgYXV0
byBvZmZzZXQgPSBjb21wdXRlSDI2NFByZWZpeE9mZnNldChmcmFtZURhdGEsIGZyYW1lU2l6ZSk7
CiAgICAgICAgIGZyYW1lRGF0YSArPSBvZmZzZXQ7CiAgICAgICAgIGZyYW1lU2l6ZSAtPSBvZmZz
ZXQ7CiAgICAgICAgIGlmIChuZWVkc1Jic3BVbmVzY2FwaW5nKGZyYW1lRGF0YSwgZnJhbWVTaXpl
KSkgewpAQCAtMjA1LDYgKzIwNiwxNiBAQCBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IFJU
Q1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpkZWNyeXB0RnJhbWUoY29uc3QgdWludDhfdAogICAgICAg
ICAgICAgZnJhbWVEYXRhID0gYnVmZmVyLmRhdGEoKTsKICAgICAgICAgICAgIGZyYW1lU2l6ZSA9
IGJ1ZmZlci5zaXplKCk7CiAgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNh
c2UgQ29tcGF0aWJpbGl0eU1vZGU6OlZQODogeworICAgICAgICBhdXRvIG9mZnNldCA9IGNvbXB1
dGVWUDhQcmVmaXhPZmZzZXQoZnJhbWVEYXRhLCBmcmFtZVNpemUpOworICAgICAgICBmcmFtZURh
dGEgKz0gb2Zmc2V0OworICAgICAgICBmcmFtZVNpemUgLT0gb2Zmc2V0OworICAgICAgICBicmVh
azsKKyAgICB9CisgICAgY2FzZSBDb21wYXRpYmlsaXR5TW9kZTo6Tm9uZToKKyAgICAgICAgYnJl
YWs7CiAgICAgfQogCiAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2tleUxvY2spOwpAQCAt
MjU5LDkgKzI3MCwxNyBAQCBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IFJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybWVyOjplbmNyeXB0RnJhbWUoY29uc3QgdWludDhfdAogICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBNYXhIZWFkZXJTaXplID0gMTc7CiAKICAgICBWZWN0b3I8dWludDhfdD4gdHJh
bnNmb3JtZWREYXRhOwotICAgIEgyNjRQcmVmaXhCdWZmZXIgcHJlZml4QnVmZmVyOwotICAgIGlm
IChtX2NvbXBhdGliaWxpdHlNb2RlID09IENvbXBhdGliaWxpdHlNb2RlOjpIMjY0KQotICAgICAg
ICBwcmVmaXhCdWZmZXIgPSBjb21wdXRlUHJlZml4QnVmZmVyKGZyYW1lRGF0YSwgZnJhbWVTaXpl
KTsKKyAgICBTRnJhbWVDb21wYXRpYmlsaXR5UHJlZml4QnVmZmVyIHByZWZpeEJ1ZmZlcjsKKyAg
ICBzd2l0Y2ggKG1fY29tcGF0aWJpbGl0eU1vZGUpIHsKKyAgICBjYXNlIENvbXBhdGliaWxpdHlN
b2RlOjpIMjY0OgorICAgICAgICBwcmVmaXhCdWZmZXIgPSBjb21wdXRlSDI2NFByZWZpeEJ1ZmZl
cihmcmFtZURhdGEsIGZyYW1lU2l6ZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ29tcGF0
aWJpbGl0eU1vZGU6OlZQODoKKyAgICAgICAgcHJlZml4QnVmZmVyID0gY29tcHV0ZVZQOFByZWZp
eEJ1ZmZlcihmcmFtZURhdGEsIGZyYW1lU2l6ZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
Q29tcGF0aWJpbGl0eU1vZGU6Ok5vbmU6CisgICAgICAgIGJyZWFrOworICAgIH0KIAogICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sobV9rZXlMb2NrKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5o
CmluZGV4IGM4ZDM4ZTdlYzU4M2RkNDBlNmFjYmM2ZjZjZTRkNjY0NTNiMjBlYjguLjM3ZWUxYWM5
MGQ0YjE1YWYzMzgyOTI0YjU5MjAwMzNmMzhhZDNlNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVy
LmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgQ3J5cHRvS2V5OwogCiBjbGFzcyBSVENSdHBTRnJh
bWVUcmFuc2Zvcm1lciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxSVENSdHBTRnJhbWVU
cmFuc2Zvcm1lciwgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFpbj4gewogcHVibGljOgotICAg
IGVudW0gY2xhc3MgQ29tcGF0aWJpbGl0eU1vZGUgeyBOb25lLCBIMjY0IH07CisgICAgZW51bSBj
bGFzcyBDb21wYXRpYmlsaXR5TW9kZSB7IE5vbmUsIEgyNjQsIFZQOCB9OwogCiAgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJlZjxSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcj4gY3JlYXRlKENvbXBh
dGliaWxpdHlNb2RlID0gQ29tcGF0aWJpbGl0eU1vZGU6Ok5vbmUpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIH5SVENSdHBTRnJhbWVUcmFuc2Zvcm1lcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9TRnJhbWVVdGlscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1NGcmFtZVV0aWxzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wODI3NTJiMzQ2
MmY4N2VhOGU3MTE0OTI2MmI2MTE4NjhjNWZiM2ZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9TRnJhbWVVdGlscy5jcHAKQEAgLTAsMCArMSwy
MDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU0ZyYW1lVXRpbHMuaCIKKworI2lmIEVOQUJMRShX
RUJfUlRDKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc1Ns
aWNlTkFMVSh1aW50OF90IGRhdGEpCit7CisgICAgcmV0dXJuIChkYXRhICYgMHgxRikgPT0gMTsK
K30KKworc3RhdGljIGlubGluZSBib29sIGlzU1BTTkFMVSh1aW50OF90IGRhdGEpCit7CisgICAg
cmV0dXJuIChkYXRhICYgMHgxRikgPT0gNzsKK30KKworc3RhdGljIGlubGluZSBib29sIGlzUFBT
TkFMVSh1aW50OF90IGRhdGEpCit7CisgICAgcmV0dXJuIChkYXRhICYgMHgxRikgPT0gODsKK30K
Kworc3RhdGljIGlubGluZSBib29sIGlzSURSTkFMVSh1aW50OF90IGRhdGEpCit7CisgICAgcmV0
dXJuIChkYXRhICYgMHgxRikgPT0gNTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGZpbmROYWx1
cyhjb25zdCB1aW50OF90KiBmcmFtZURhdGEsIHNpemVfdCBmcmFtZVNpemUsIHNpemVfdCBvZmZz
ZXQsIGNvbnN0IEZ1bmN0aW9uPGJvb2woc2l6ZV90KT4mIGNhbGxiYWNrKQoreworICAgIGZvciAo
c2l6ZV90IGkgPSA0ICsgb2Zmc2V0OyBpIDwgZnJhbWVTaXplOyArK2kpIHsKKyAgICAgICAgaWYg
KGZyYW1lRGF0YVtpIC0gNF0gPT0gMCAmJiBmcmFtZURhdGFbaSAtIDNdID09IDAgJiYgZnJhbWVE
YXRhW2kgLSAyXSA9PSAwICYmIGZyYW1lRGF0YVtpIC0gMV0gPT0gMSkgeworICAgICAgICAgICAg
aWYgKGNhbGxiYWNrKGkpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
IH0KK30KKworc2l6ZV90IGNvbXB1dGVIMjY0UHJlZml4T2Zmc2V0KGNvbnN0IHVpbnQ4X3QqIGZy
YW1lRGF0YSwgc2l6ZV90IGZyYW1lU2l6ZSkKK3sKKyAgICBzaXplX3Qgb2Zmc2V0ID0gMDsKKyAg
ICBmaW5kTmFsdXMoZnJhbWVEYXRhLCBmcmFtZVNpemUsIDAsIFsmb2Zmc2V0LCAmZnJhbWVEYXRh
XShhdXRvIHBvc2l0aW9uKSB7CisgICAgICAgIGlmIChpc0lEUk5BTFUoZnJhbWVEYXRhW3Bvc2l0
aW9uXSkgfHwgaXNTbGljZU5BTFUoZnJhbWVEYXRhW3Bvc2l0aW9uXSkpIHsKKyAgICAgICAgICAg
IC8vIFNraXAgMDAgMDAgMDAgMDEsIG5hbHUgdHlwZSBieXRlIGFuZCB0aGUgbmV4dCBieXRlLgor
ICAgICAgICAgICAgb2Zmc2V0ID0gcG9zaXRpb24gKyAyOworICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0pOworICAgIHJldHVy
biBvZmZzZXQ7Cit9CisKK2Jvb2wgbmVlZHNSYnNwVW5lc2NhcGluZyhjb25zdCB1aW50OF90KiBm
cmFtZURhdGEsIHNpemVfdCBmcmFtZVNpemUpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBmcmFtZVNpemUgLSAzOyArK2kpIHsKKyAgICAgICAgaWYgKGZyYW1lRGF0YVtpXSA9PSAwICYm
IGZyYW1lRGF0YVtpICsgMV0gPT0gMCAmJiBmcmFtZURhdGFbaSArIDJdID09IDMpCisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitWZWN0b3I8
dWludDhfdD4gZnJvbVJic3AoY29uc3QgdWludDhfdCogZnJhbWVEYXRhLCBzaXplX3QgZnJhbWVT
aXplKQoreworICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7CisgICAgYnVmZmVyLnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkoZnJhbWVTaXplKTsKKworICAgIHNpemVfdCBpOworICAgIGZvciAoaSA9
IDA7IGkgPCBmcmFtZVNpemUgLSAzOyArK2kpIHsKKyAgICAgICAgaWYgKGZyYW1lRGF0YVtpXSA9
PSAwICYmIGZyYW1lRGF0YVtpICsgMV0gPT0gMCAmJiBmcmFtZURhdGFbaSArIDJdID09IDMpIHsK
KyAgICAgICAgICAgIGJ1ZmZlci51bmNoZWNrZWRBcHBlbmQoZnJhbWVEYXRhW2ldKTsKKyAgICAg
ICAgICAgIGJ1ZmZlci51bmNoZWNrZWRBcHBlbmQoZnJhbWVEYXRhW2kgKyAxXSk7CisgICAgICAg
ICAgICAvLyBTa2lwIG5leHQgYnl0ZSB3aGljaCBpcyBkZWxpbWl0ZXIuCisgICAgICAgICAgICBp
ICs9IDI7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYnVmZmVyLnVuY2hlY2tlZEFwcGVu
ZChmcmFtZURhdGFbaV0pOworICAgIH0KKyAgICBmb3IgKDsgaSA8IGZyYW1lU2l6ZTsgKytpKQor
ICAgICAgICBidWZmZXIudW5jaGVja2VkQXBwZW5kKGZyYW1lRGF0YVtpXSk7CisKKyAgICByZXR1
cm4gYnVmZmVyOworfQorCitTRnJhbWVDb21wYXRpYmlsaXR5UHJlZml4QnVmZmVyIGNvbXB1dGVI
MjY0UHJlZml4QnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGZyYW1lRGF0YSwgc2l6ZV90IGZyYW1lU2l6
ZSkKK3sKKyAgICAvLyBEZWx0YSBhbmQga2V5IHByZWZpeGVzIGFzc3VtZSBTUFMvUFBTIHdpdGgg
SURzIGVxdWFsIHRvIDAgaGF2ZSBiZWVuIHRyYW5zbWl0dGVkLgorICAgIHN0YXRpYyBjb25zdCB1
aW50OF90IHByZWZpeERlbHRhRnJhbWVbNl0gPSB7IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4
MjEsIDB4ZTAgfTsKKworICAgIGlmIChmcmFtZVNpemUgPCA1KQorICAgICAgICByZXR1cm4geyB9
OworCisgICAgLy8gV2UgYXNzdW1lIGEga2V5IGZyYW1lIHN0YXJ0cyB3aXRoIFNQUywgdGhlbiBQ
UFMuIE90aGVyd2lzZSB3ZSB3cmFwIGl0IGFzIGEgZGVsdGEgZnJhbWUuCisgICAgaWYgKCFpc1NQ
U05BTFUoZnJhbWVEYXRhWzRdKSkKKyAgICAgICAgcmV0dXJuIFNGcmFtZUNvbXBhdGliaWxpdHlQ
cmVmaXhCdWZmZXIgeyBwcmVmaXhEZWx0YUZyYW1lLCBzaXplb2YocHJlZml4RGVsdGFGcmFtZSks
IHsgfSB9OworCisgICAgLy8gU2VhcmNoIGZvciBQUFMKKyAgICBzaXplX3Qgc3BzUHBzTGVuZ3Ro
ID0gMDsKKyAgICBmaW5kTmFsdXMoZnJhbWVEYXRhLCBmcmFtZVNpemUsIDUsIFtmcmFtZURhdGEs
ICZzcHNQcHNMZW5ndGhdKGF1dG8gcG9zaXRpb24pIHsKKyAgICAgICAgaWYgKGlzUFBTTkFMVShm
cmFtZURhdGFbcG9zaXRpb25dKSkKKyAgICAgICAgICAgIHNwc1Bwc0xlbmd0aCA9IHBvc2l0aW9u
OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9KTsKKyAgICBpZiAoIXNwc1Bwc0xlbmd0aCkK
KyAgICAgICAgcmV0dXJuIFNGcmFtZUNvbXBhdGliaWxpdHlQcmVmaXhCdWZmZXIgeyBwcmVmaXhE
ZWx0YUZyYW1lLCBzaXplb2YocHJlZml4RGVsdGFGcmFtZSksIHsgfSB9OworCisgICAgLy8gU2Vh
cmNoIGZvciBuZXh0IE5BTFUgdG8gY29tcHV0ZSB0aGUgcmVhbCBzcHNQcHNMZW5ndGgsIGluY2x1
ZGluZyB0aGUgbmV4dCAwMCAwMCAwMCAwMS4KKyAgICBmaW5kTmFsdXMoZnJhbWVEYXRhLCBmcmFt
ZVNpemUsIHNwc1Bwc0xlbmd0aCArIDEsIFsmc3BzUHBzTGVuZ3RoXShhdXRvIHBvc2l0aW9uKSB7
CisgICAgICAgIHNwc1Bwc0xlbmd0aCA9IHBvc2l0aW9uOworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9KTsKKworICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7CisgICAgYnVmZmVyLnJlc2l6
ZShzcHNQcHNMZW5ndGggKyAyKTsKKyAgICBzdGQ6Om1lbWNweShidWZmZXIuZGF0YSgpLCBmcmFt
ZURhdGEsIHNwc1Bwc0xlbmd0aCk7CisgICAgYnVmZmVyW3Nwc1Bwc0xlbmd0aF0gPSAweDI1Owor
ICAgIGJ1ZmZlcltzcHNQcHNMZW5ndGggKyAxXSA9IDB4Yjg7CisgICAgcmV0dXJuIHsgYnVmZmVy
LmRhdGEoKSwgYnVmZmVyLnNpemUoKSwgV1RGTW92ZShidWZmZXIpIH07Cit9CisKK3N0YXRpYyBp
bmxpbmUgdm9pZCBmaW5kRXNjYXBlUmJzcFBhdHRlcm5zKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
ZnJhbWUsIHNpemVfdCBvZmZzZXQsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoc2l6ZV90LCBib29sKT4m
IGNhbGxiYWNrKQoreworICAgIHNpemVfdCBudW1Db25zZWN1dGl2ZVplcm9zID0gMDsKKyAgICBh
dXRvKiBkYXRhID0gZnJhbWUuZGF0YSgpOworICAgIGZvciAoc2l6ZV90IGkgPSBvZmZzZXQ7IGkg
PCBmcmFtZS5zaXplKCk7ICsraSkgeworICAgICAgICBib29sIHNob3VsZEVzY2FwZSA9IGRhdGFb
aV0gPD0gMyAmJiBudW1Db25zZWN1dGl2ZVplcm9zID49IDI7CisgICAgICAgIGlmIChzaG91bGRF
c2NhcGUpCisgICAgICAgICAgICBudW1Db25zZWN1dGl2ZVplcm9zID0gMDsKKworICAgICAgICBp
ZiAoZGF0YVtpXSA9PSAwKQorICAgICAgICAgICAgKytudW1Db25zZWN1dGl2ZVplcm9zOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBudW1Db25zZWN1dGl2ZVplcm9zID0gMDsKKworICAgICAg
ICBjYWxsYmFjayhpLCBzaG91bGRFc2NhcGUpOworICAgIH0KK30KKwordm9pZCB0b1Jic3AoVmVj
dG9yPHVpbnQ4X3Q+JiBmcmFtZSwgc2l6ZV90IG9mZnNldCkKK3sKKyAgICBzaXplX3QgY291bnQg
PSAwOworICAgIGZpbmRFc2NhcGVSYnNwUGF0dGVybnMoZnJhbWUsIG9mZnNldCwgWyZjb3VudF0o
c2l6ZV90LCBib29sIHNob3VkbEJlRXNjYXBlZCkgeworICAgICAgICBpZiAoc2hvdWRsQmVFc2Nh
cGVkKQorICAgICAgICAgICAgY291bnQrKzsKKyAgICB9KTsKKyAgICBpZiAoIWNvdW50KQorICAg
ICAgICByZXR1cm47CisKKyAgICBWZWN0b3I8dWludDhfdD4gbmV3RnJhbWU7CisgICAgbmV3RnJh
bWUucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShmcmFtZS5zaXplKCkgKyBjb3VudCk7CisgICAgbmV3
RnJhbWUuYXBwZW5kKGZyYW1lLmRhdGEoKSwgb2Zmc2V0KTsKKworICAgIGZpbmRFc2NhcGVSYnNw
UGF0dGVybnMoZnJhbWUsIG9mZnNldCwgW2RhdGEgPSBmcmFtZS5kYXRhKCksICZuZXdGcmFtZV0o
c2l6ZV90IHBvc2l0aW9uLCBib29sIHNob3VkbEJlRXNjYXBlZCkgeworICAgICAgICBpZiAoc2hv
dWRsQmVFc2NhcGVkKQorICAgICAgICAgICAgbmV3RnJhbWUudW5jaGVja2VkQXBwZW5kKDMpOwor
ICAgICAgICBuZXdGcmFtZS51bmNoZWNrZWRBcHBlbmQoZGF0YVtwb3NpdGlvbl0pOworICAgIH0p
OworCisgICAgZnJhbWUgPSBXVEZNb3ZlKG5ld0ZyYW1lKTsKK30KKworc3RhdGljIGlubGluZSBi
b29sIGlzVlA4S2V5RnJhbWUoY29uc3QgdWludDhfdCogZnJhbWUsIHNpemVfdCBzaXplKQorewor
ICAgIEFTU0VSVF9VTlVTRUQoc2l6ZSwgc2l6ZSk7CisgICAgcmV0dXJuICEoKmZyYW1lICYgMHgw
MSk7Cit9CisKK3NpemVfdCBjb21wdXRlVlA4UHJlZml4T2Zmc2V0KGNvbnN0IHVpbnQ4X3QqIGZy
YW1lLCBzaXplX3Qgc2l6ZSkKK3sKKyAgICByZXR1cm4gaXNWUDhLZXlGcmFtZShmcmFtZSwgc2l6
ZSkgPyAxMCA6IDM7Cit9CisKK1NGcmFtZUNvbXBhdGliaWxpdHlQcmVmaXhCdWZmZXIgY29tcHV0
ZVZQOFByZWZpeEJ1ZmZlcihjb25zdCB1aW50OF90KiBmcmFtZSwgc2l6ZV90IHNpemUpCit7Cisg
ICAgVmVjdG9yPHVpbnQ4X3Q+IHByZWZpeDsKKyAgICBwcmVmaXguYXBwZW5kKGZyYW1lLCBpc1ZQ
OEtleUZyYW1lKGZyYW1lLCBzaXplKSA/IDEwIDogMyk7CisgICAgcmV0dXJuIHsgcHJlZml4LmRh
dGEoKSwgcHJlZml4LnNpemUoKSwgV1RGTW92ZShwcmVmaXgpIH07Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9TRnJhbWVVdGlscy5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9TRnJhbWVVdGlscy5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIwNWJj
OTI1NzlhMTJmYzYyMTczOGVlNjlhMGQ2MTYxOWMzM2Q1OTkKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1NGcmFtZVV0aWxzLmgKQEAgLTAsMCAr
MSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9SVEMpCisKKyNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IFNGcmFtZUNvbXBhdGliaWxpdHlQ
cmVmaXhCdWZmZXIgeworICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEgeyBudWxscHRyIH07CisgICAg
c2l6ZV90IHNpemUgeyAwIH07CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKK307CisKK3Np
emVfdCBjb21wdXRlSDI2NFByZWZpeE9mZnNldChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKK1NG
cmFtZUNvbXBhdGliaWxpdHlQcmVmaXhCdWZmZXIgY29tcHV0ZUgyNjRQcmVmaXhCdWZmZXIoY29u
c3QgdWludDhfdCosIHNpemVfdCk7CisKK1dFQkNPUkVfRVhQT1JUIGJvb2wgbmVlZHNSYnNwVW5l
c2NhcGluZyhjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKK1dFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1
aW50OF90PiBmcm9tUmJzcChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKK1dFQkNPUkVfRVhQT1JU
IHZvaWQgdG9SYnNwKFZlY3Rvcjx1aW50OF90PiYsIHNpemVfdCk7CisKK3NpemVfdCBjb21wdXRl
VlA4UHJlZml4T2Zmc2V0KGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworU0ZyYW1lQ29tcGF0aWJp
bGl0eVByZWZpeEJ1ZmZlciBjb21wdXRlVlA4UHJlZml4QnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBz
aXplX3QpOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VC
X1JUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKaW5kZXggOWJmYWU5NjRlMjRkMmMyN2JiZTc4N2ZiOTAwMTMzNjM1
ZTg0MDEyMy4uNjc4OWUzMDlmYjY2MTAxNjNkYjZhZTJhMDc4ODY3ZjdiM2I0NTc5OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKQEAgLTE0Myw3ICsxNDMsNiBAQCBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1
ZmZlci5jcHAKIE1vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyTGlzdC5jcHAKIE1vZHVs
ZXMvbWVkaWFzb3VyY2UvVmlkZW9QbGF5YmFja1F1YWxpdHkuY3BwCiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmNwcAotTW9kdWxlcy9tZWRpYXN0cmVh
bS9IMjY0VXRpbHMuY3BwCiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlSW5mby5jcHAK
IE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmNwcAogTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbS5jcHAKQEAgLTE3Nyw2ICsxNzYsNyBAQCBNb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1J0cFRyYW5zZm9ybS5jcHAKIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNjZWl2
ZXIuY3BwCiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1Nlc3Npb25EZXNjcmlwdGlvbi5jcHAKIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDVHJhY2tFdmVudC5jcHAKK01vZHVsZXMvbWVkaWFzdHJlYW0v
U0ZyYW1lVXRpbHMuY3BwCiBNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xsZXIu
Y3BwCiBNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCiBNb2R1bGVzL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENDZXJ0aWZpY2F0ZUdlbmVyYXRvci5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA0YWFlYzU3NTQ5NzE4ZWQ1MTZkOTc2OWMwMmRjZGEyODdjM2Q0NzJmLi44ODAwNTkwOGEzNTVi
ZTNkNWMyMTFhNTBkY2UwYzAxMTI1ZTBjOWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTMzLDcgKzExMzMsNyBAQAogCQk0
MUIyOEIzRDFGODYwRUYzMDBGQjUyQUMgLyogTGliV2ViUlRDUHJvdmlkZXJDb2NvYS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFCMjhCMzYxRjg2MEJE
MDAwRkI1MkFDIC8qIExpYldlYlJUQ1Byb3ZpZGVyQ29jb2EuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MUIyQTYyNjFFRjFCRjZEMDAyQjlEN0Eg
LyogV2ViQXVkaW9Tb3VyY2VQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDFCMkE2MjUxRUYxQkY2MDAwMkI5RDdBIC8qIFdlYkF1ZGlvU291
cmNlUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk0MUI4Nzc2MjIzREUxMDQ1MDAzNjM4QjggLyogUmVhbHRpbWVNZWRpYVNvdXJjZUlk
ZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxQjg3NzYwMjNERTEwNDIwMDM2MzhCOCAvKiBSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmll
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTQx
QkJBODY2MjU3RTM3M0IwMEFDN0Y2RCAvKiBIMjY0VXRpbHMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMjA5RTI0MjU3QTJGQkIwMDEyMEFDQSAvKiBI
MjY0VXRpbHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQk0MUJCQTg2NjI1N0UzNzNCMDBBQzdGNkQgLyogU0ZyYW1lVXRpbHMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMjA5RTI0MjU3QTJGQkIwMDEy
MEFDQSAvKiBTRnJhbWVVdGlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTQxQkYyMDQ5MjJCQTdCRTgwMDA0RjgxMiAvKiBSZWFsdGltZVZpZGVv
U291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MUJGMjA0MDIyQjk0NzE2MDAwNEY4MTIgLyogUmVhbHRpbWVWaWRlb1NvdXJjZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxQzc2MEIxMEVERTAz
RDMwMEMxNjU1RiAvKiBTY3JpcHRTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDFDNzYwQjAwRURFMDNEMzAwQzE2NTVGIC8qIFNjcmlwdFN0YXRl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDFE
MDE1Q0EwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUQwMTVDODBGNEI1QzcxMDA0QTY2MkYgLyog
Q29udGVudFR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtNzU4NCw4ICs3NTg0LDggQEAKIAkJNDExODlFRjcxQUQ4MjMyODAwQjkwQTBEIC8q
IFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MTE4OUVGNzFBRDgyMzI4MDBCOTNGNjQgLyogUmVhZGFibGVCeXRlU3Ry
ZWFtQ29udHJvbGxlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVhZGFibGVCeXRlU3Ry
ZWFtQ29udHJvbGxlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTg5RUY3
MUFEODIzMjgwMEI5NTY3MiAvKiBSZWFkYWJsZVN0cmVhbUJZT0JSZXF1ZXN0LmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBSZWFkYWJsZVN0cmVhbUJZT0JSZXF1ZXN0LmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDEyMDlFMjQyNTdBMkZCQjAwMTIwQUNBIC8qIEgyNjRVdGls
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIMjY0VXRpbHMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDEyMDlFMjYyNTdBMkZCQjAwMTIwQUNBIC8qIEgyNjRV
dGlscy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIMjY0VXRpbHMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTIwOUUyNDI1N0EyRkJCMDAxMjBB
Q0EgLyogU0ZyYW1lVXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU0Zy
YW1lVXRpbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDEyMDlFMjYyNTdBMkZC
QjAwMTIwQUNBIC8qIFNGcmFtZVV0aWxzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFNGcmFtZVV0aWxzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDEyMDlFOTEyMTZENTkzQzAwQTczQTEyIC8qIFJUQ0NlcnRpZmljYXRlLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBSVENDZXJ0aWZpY2F0ZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxMjA5RTkzMjE2RDVDNzkwMEE3M0ExMiAvKiBSVENDZXJ0aWZpY2F0ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSVENDZXJ0aWZpY2F0ZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTIwOUU5NDIxNkVBNjlBMDBBNzNBMTIgLyogUlRDQ2VydGlm
aWNhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUlRDQ2VydGlm
aWNhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTcwNzgsOCArMTcwNzgs
NiBAQAogCQkJCTQxQzdFMTA4MUU2QUEzN0MwMDI3QjRERSAvKiBDYW52YXNDYXB0dXJlTWVkaWFT
dHJlYW1UcmFjay5pZGwgKi8sCiAJCQkJOTNBODA2MTExRTAzQjUxQzAwOEExRjI2IC8qIERvdWJs
ZVJhbmdlLmggKi8sCiAJCQkJOTNBODA2MTIxRTAzQjUxQzAwOEExRjI2IC8qIERvdWJsZVJhbmdl
LmlkbCAqLywKLQkJCQk0MTIwOUUyNjI1N0EyRkJCMDAxMjBBQ0EgLyogSDI2NFV0aWxzLmNwcCAq
LywKLQkJCQk0MTIwOUUyNDI1N0EyRkJCMDAxMjBBQ0EgLyogSDI2NFV0aWxzLmggKi8sCiAJCQkJ
OTNBODA2MTMxRTAzQjUxQzAwOEExRjI2IC8qIExvbmdSYW5nZS5oICovLAogCQkJCTkzQTgwNjE0
MUUwM0I1MUMwMDhBMUYyNiAvKiBMb25nUmFuZ2UuaWRsICovLAogCQkJCTE1OUFFODJBMUIzQTQw
MkYwMDM3NDc4QiAvKiBNZWRpYURldmljZUluZm8uY3BwICovLApAQCAtMTcyNTYsNiArMTcyNTQs
OCBAQAogCQkJCTVFMkM0MzY0MUJDRUUzNzIwMDAxRTJCQyAvKiBSVENUcmFja0V2ZW50LmNwcCAq
LywKIAkJCQk1RTJDNDM2NTFCQ0VFMzcyMDAwMUUyQkMgLyogUlRDVHJhY2tFdmVudC5oICovLAog
CQkJCTVFMkM0MzY2MUJDRUUzNzIwMDAxRTJCQyAvKiBSVENUcmFja0V2ZW50LmlkbCAqLywKKwkJ
CQk0MTIwOUUyNjI1N0EyRkJCMDAxMjBBQ0EgLyogU0ZyYW1lVXRpbHMuY3BwICovLAorCQkJCTQx
MjA5RTI0MjU3QTJGQkIwMDEyMEFDQSAvKiBTRnJhbWVVdGlscy5oICovLAogCQkJCTA3MjIxQjhE
MTdDRUMzMjcwMDg0OEU1MSAvKiBVc2VyTWVkaWFDbGllbnQuaCAqLywKIAkJCQkwNzIyMUI4RTE3
Q0VDMzI3MDA4NDhFNTEgLyogVXNlck1lZGlhQ29udHJvbGxlci5jcHAgKi8sCiAJCQkJMDcyMjFC
OEYxN0NFQzMyNzAwODQ4RTUxIC8qIFVzZXJNZWRpYUNvbnRyb2xsZXIuaCAqLywKQEAgLTMyMTU4
LDcgKzMyMTU4LDYgQEAKIAkJCQlDREY3NDgzRjE4RkVCQ0VDMDAwNkVDQzAgLyogR3JpZFBvc2l0
aW9uc1Jlc29sdmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTJBMTA1MDE2NjQ0NEZEMDA4RkEz
MTEgLyogR3JpZFRyYWNrU2l6ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTEyREU3MTgxRTRCNzRB
NjAwRjlBQ0NGIC8qIEdyaWRUcmFja1NpemluZ0FsZ29yaXRobS5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJNDFCQkE4NjYyNTdFMzczQjAwQUM3RjZEIC8qIEgyNjRVdGlscy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMjZFQTg5QTcxQjRGMkI3NTAwOEM1RkQyIC8qIEhhc2hhYmxlQWN0aW9uTGlzdC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODQ4MkI3NDYxMTk4QzM1NDAwQkZCMDA1IC8qIEhhc2hDaGFuZ2VF
dmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg3NDhCRTAxMkNCRjJEQzAwMUZCQTQxIC8qIEhh
c2hUb29scy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDQ4Nyw2ICszNDQ4Niw3IEBACiAJCQkJQjhE
QkRCNEMxMzBCMEY4QTAwRjVDREIxIC8qIFNldFNlbGVjdGlvbkNvbW1hbmQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTdDRDU4REZCMUY5NTY1QTUwMDExMjc5MSAvKiBTZXR0aW5ncy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJN0NDOTcyMkUxRjkzRTMzNjAwMDRENENGIC8qIFNldHRpbmdzQmFzZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNDFCQkE4NjYyNTdFMzczQjAwQUM3RjZEIC8qIFNGcmFtZVV0aWxz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjNERDQ1MDEyRjVFQTFCMDAwRDkxOTAgLyogU2hhZG93
Qmx1ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1RUI4QzQwRTgyMDMxQjAwQjI1OTY1IC8qIFNo
YWRvd0RhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUE2RDE2OTY0MTM0NkI0QzEwMDBFQjc3MCAv
KiBTaGFkb3dSb290LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lclRlc3RzLmNwcCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lclRl
c3RzLmNwcAppbmRleCA4NzhmZjNjZDJmZWE0MjI1NGI4YzRkOTYzZTUzNDI5MmJhOGZlMjUzLi5k
MGVkNGI4ODFmZTllYTQyNGZiNzIxNzcxYzU3MjFmZTc5MWM0Yzc4IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXJUZXN0
cy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1JUQ1J0cFNGcmFt
ZVRyYW5zZm9ybWVyVGVzdHMuY3BwCkBAIC0yNyw4ICsyNyw4IEBACiAKICNpZiBFTkFCTEUoV0VC
X1JUQykKIAotI2luY2x1ZGUgPFdlYkNvcmUvSDI2NFV0aWxzLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU0ZyYW1lVXRp
bHMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
IHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCAzYmYzMjc4ZDM1OTI5MzMyNzc5Mjc5YzUwNWMxZDVmZWU0M2ViZmY0Li4yMWQ5
NjAyY2M3NDVmZTU1M2U5OWI5ODhlYTU3YzViYzg2MTY2ZmZhIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMjAtMTItMDkgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAg
ICAgIEFkZCBhIFNGcmFtZSBWUDggZXhwZXJpbWVudGFsIGNvbXBhdGliaWxpdHkgbW9kZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5Njc0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3ZWJydGMvdmlk
ZW8tc2ZyYW1lLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWJydGMvdmlkZW8tc2ZyYW1lLmh0
bWw6CisKIDIwMjAtMTItMDggIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAg
ICAgICAgIEdhdGUgVlA5IGV4cG9zdXJlIGluIE1lZGlhQ2FwYWJpbGl0aWVzIG9uIFZQOURlY29k
ZXJFbmFibGVkIHByZWZlcmVuY2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYnJ0Yy92aWRl
by1zZnJhbWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2VicnRjL3ZpZGVvLXNmcmFtZS1l
eHBlY3RlZC50eHQKaW5kZXggZjNmZjZjN2FmODk5MDMwYmRlMjBiNDBkYWZlNTMxNDY0MzkzYmIz
Yy4uMTYwOTU1NTMxMzNmNjFjM2ZlZmI0ZDkwZDdiOTRmZDgzZmI2ZTk1OSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvd2VicnRjL3ZpZGVvLXNmcmFtZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvd2VicnRjL3ZpZGVvLXNmcmFtZS1leHBlY3RlZC50eHQKQEAgLTIsNCArMiw1IEBACiAK
IFBBU1MgVmlkZW8gZXhjaGFuZ2Ugd2l0aCBTRnJhbWUgLSBIMjY0IGJhc2VsaW5lCiBQQVNTIFZp
ZGVvIGV4Y2hhbmdlIHdpdGggU0ZyYW1lIC0gSDI2NCBoaWdoCitQQVNTIFZpZGVvIGV4Y2hhbmdl
IHdpdGggU0ZyYW1lIC0gVlA4CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYnJ0Yy92aWRl
by1zZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL3dlYnJ0Yy92aWRlby1zZnJhbWUuaHRtbAppbmRl
eCBlMzM3M2UxYTU5M2U0NWQwMDUyNWExMGFiMmYxODc4ZjJkMGRiNWVjLi5jMmMxZGQ0NTgwZGUx
ZjcyYzYzNmM5ZjU0YzNiOGNmNjdjOWY5MWJkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJy
dGMvdmlkZW8tc2ZyYW1lLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvd2VicnRjL3ZpZGVvLXNmcmFt
ZS5odG1sCkBAIC0xMCwyOSArMTAsMjkgQEAKICAgICAgICAgPHZpZGVvIGlkPSJyZW1vdGUiIGF1
dG9wbGF5IHBsYXlzSW5saW5lPjwvdmlkZW8+CiAgICAgICAgIDxzY3JpcHQgc3JjID0icm91dGlu
ZXMuanMiPjwvc2NyaXB0PgogICAgICAgICA8c2NyaXB0PgotYXN5bmMgZnVuY3Rpb24gZG9TRnJh
bWVUZXN0KHNlbGVjdENvZGVjKQorYXN5bmMgZnVuY3Rpb24gZG9TRnJhbWVUZXN0KGNvZGVjLCBt
b2RlLCBzaG91bGRDbG9zZSkKIHsKKyAgICBsZXQgcGMxLCBwYzI7CiAgICAgbGV0IHNlbmRlciwg
cmVjZWl2ZXI7CiAgICAgY29uc3QgbG9jYWxTdHJlYW0gPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFE
ZXZpY2VzLmdldFVzZXJNZWRpYSh7dmlkZW86IHRydWV9KTsKICAgICBjb25zdCBrZXkgPSBhd2Fp
dCBjcnlwdG8uc3VidGxlLmltcG9ydEtleSgicmF3IiwgbmV3IFVpbnQ4QXJyYXkoWzE0MywgNzcs
IDQzLCAxMCwgNzIsIDE5LCAzNywgNjcsIDIzNiwgMjE5LCAyNCwgOTMsIDI2LCAxNjUsIDkxLCAx
NzhdKSwgIkhLREYiLCBmYWxzZSwgWyJkZXJpdmVCaXRzIiwgImRlcml2ZUtleSJdKTsKICAgICBj
b25zdCBzdHJlYW0gPSBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CiAg
ICAgICAgIGNyZWF0ZUNvbm5lY3Rpb25zKChmaXJzdENvbm5lY3Rpb24pID0+IHsKKyAgICAgICAg
ICAgIHBjMSA9IGZpcnN0Q29ubmVjdGlvbjsKICAgICAgICAgICAgIHNlbmRlciA9IGZpcnN0Q29u
bmVjdGlvbi5hZGRUcmFjayhsb2NhbFN0cmVhbS5nZXRUcmFja3MoKVswXSwgbG9jYWxTdHJlYW0p
OwotICAgICAgICAgICAgbGV0IHRyYW5zZm9ybSA9IG5ldyBSVENSdHBTRnJhbWVUcmFuc2Zvcm0o
e2NvbXBhdGliaWxpdHlNb2RlOiAiSDI2NCJ9KTsKKyAgICAgICAgICAgIGZpcnN0Q29ubmVjdGlv
bi5nZXRUcmFuc2NlaXZlcnMoKVswXS5zZXRDb2RlY1ByZWZlcmVuY2VzKFtjb2RlY10pOworICAg
ICAgICAgICAgbGV0IHRyYW5zZm9ybSA9IG5ldyBSVENSdHBTRnJhbWVUcmFuc2Zvcm0oe2NvbXBh
dGliaWxpdHlNb2RlOiBtb2RlfSk7CiAgICAgICAgICAgICB0cmFuc2Zvcm0uc2V0RW5jcnlwdGlv
bktleShrZXkpOwogICAgICAgICAgICAgc2VuZGVyLnRyYW5zZm9ybSA9IHRyYW5zZm9ybTsKICAg
ICAgICAgfSwgKHNlY29uZENvbm5lY3Rpb24pID0+IHsKKyAgICAgICAgICAgIHBjMiA9IHNlY29u
ZENvbm5lY3Rpb247CiAgICAgICAgICAgICBzZWNvbmRDb25uZWN0aW9uLm9udHJhY2sgPSAodHJh
Y2tFdmVudCkgPT4gewotICAgICAgICAgICAgICAgIGxldCB0cmFuc2Zvcm0gPSBuZXcgUlRDUnRw
U0ZyYW1lVHJhbnNmb3JtKHtjb21wYXRpYmlsaXR5TW9kZTogIkgyNjQifSk7CisgICAgICAgICAg
ICAgICAgbGV0IHRyYW5zZm9ybSA9IG5ldyBSVENSdHBTRnJhbWVUcmFuc2Zvcm0oe2NvbXBhdGli
aWxpdHlNb2RlOiBtb2RlfSk7CiAgICAgICAgICAgICAgICAgdHJhbnNmb3JtLnNldEVuY3J5cHRp
b25LZXkoa2V5KTsKICAgICAgICAgICAgICAgICByZWNlaXZlciA9IHRyYWNrRXZlbnQucmVjZWl2
ZXI7CiAgICAgICAgICAgICAgICAgcmVjZWl2ZXIudHJhbnNmb3JtID0gdHJhbnNmb3JtOwogICAg
ICAgICAgICAgICAgIHJlc29sdmUodHJhY2tFdmVudC5zdHJlYW1zWzBdKTsKICAgICAgICAgICAg
IH07Ci0gICAgICAgIH0sIHsgb2JzZXJ2ZU9mZmVyIDogKG9mZmVyKSA9PiB7Ci0gICAgICAgICAg
ICBvZmZlci5zZHAgPSBzZWxlY3RDb2RlYyhvZmZlci5zZHApOwotICAgICAgICAgICAgcmV0dXJu
IG9mZmVyOwotICAgICAgICB9CiAgICAgICAgIH0pOwogICAgICAgICBzZXRUaW1lb3V0KCgpID0+
IHJlamVjdCgiVGVzdCB0aW1lZCBvdXQiKSwgNTAwMCk7CiAgICAgfSk7CkBAIC01MCwxNSArNTAs
MjMgQEAgYXN5bmMgZnVuY3Rpb24gZG9TRnJhbWVUZXN0KHNlbGVjdENvZGVjKQogICAgICAgICBh
c3NlcnRfbm90X2VxdWFscyhpbnRlcm5hbHMuc2ZyYW1lQ291bnRlcihyZWNlaXZlci50cmFuc2Zv
cm0pLCByZWNlaXZlckNvdW50ZXIsICJyZWNlaXZlciIpOwogICAgICAgICBhc3NlcnRfbm90X2Vx
dWFscyhpbnRlcm5hbHMuc2ZyYW1lQ291bnRlcihzZW5kZXIudHJhbnNmb3JtKSwgc2VuZGVyQ291
bnRlciwgInNlbmRlciIpOwogICAgIH0KKyAgICBpZiAoc2hvdWxkQ2xvc2UpIHsKKyAgICAgICAg
cGMxLmNsb3NlKCk7CisgICAgICAgIHBjMi5jbG9zZSgpOworICAgIH0KIH0KIAogcHJvbWlzZV90
ZXN0KCh0ZXN0KSA9PiB7Ci0gICAgcmV0dXJuIGRvU0ZyYW1lVGVzdChzZXRIMjY0QmFzZWxpbmVD
b2RlYyk7CisgICAgcmV0dXJuIGRvU0ZyYW1lVGVzdCh7Y2xvY2tSYXRlOiA5MDAwMCwgbWltZVR5
cGU6ICJ2aWRlby9IMjY0Iiwgc2RwRm10cExpbmU6ICJsZXZlbC1hc3ltbWV0cnktYWxsb3dlZD0x
O3BhY2tldGl6YXRpb24tbW9kZT0xO3Byb2ZpbGUtbGV2ZWwtaWQ9NDJlMDFmIn0sICJIMjY0Iiwg
dHJ1ZSk7CiB9LCAiVmlkZW8gZXhjaGFuZ2Ugd2l0aCBTRnJhbWUgLSBIMjY0IGJhc2VsaW5lIik7
CiAKIHByb21pc2VfdGVzdCgodGVzdCkgPT4gewotICAgIHJldHVybiBkb1NGcmFtZVRlc3Qoc2V0
SDI2NEhpZ2hDb2RlYyk7CisgICAgcmV0dXJuIGRvU0ZyYW1lVGVzdCh7Y2xvY2tSYXRlOiA5MDAw
MCwgbWltZVR5cGU6ICJ2aWRlby9IMjY0Iiwgc2RwRm10cExpbmU6ICJsZXZlbC1hc3ltbWV0cnkt
YWxsb3dlZD0xO3BhY2tldGl6YXRpb24tbW9kZT0xO3Byb2ZpbGUtbGV2ZWwtaWQ9NjQwYzFmIn0s
ICJIMjY0IiwgdHJ1ZSk7CiB9LCAiVmlkZW8gZXhjaGFuZ2Ugd2l0aCBTRnJhbWUgLSBIMjY0IGhp
Z2giKTsKKworcHJvbWlzZV90ZXN0KCh0ZXN0KSA9PiB7CisgICAgcmV0dXJuIGRvU0ZyYW1lVGVz
dCh7bWltZVR5cGU6ICJ2aWRlby9WUDgiLCBjbG9ja1JhdGU6IDkwMDAwfSwgIlZQOCIsIGZhbHNl
KTsKK30sICJWaWRlbyBleGNoYW5nZSB3aXRoIFNGcmFtZSAtIFZQOCIpOwogICAgICAgICA8L3Nj
cmlwdD4KICAgICA8L2JvZHk+CiA8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415876</attachid>
            <date>2020-12-10 08:03:19 -0800</date>
            <delta_ts>2020-12-10 13:29:38 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-219674-20201210170317.patch</filename>
            <type>text/plain</type>
            <size>35111</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNjIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWM1ZjQ5Y2FhNWMwMTEy
YThjZGQ2OTYwMmRkNmFiYzA0NzI5MGQyYS4uZmNhM2VhOTliZmVkM2NlMWM4YWQ5M2M3Y2NiMDNh
YTAxOTZlZjViZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIwLTEyLTEwICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYSBTRnJhbWUgVlA4
IGV4cGVyaW1lbnRhbCBjb21wYXRpYmlsaXR5IG1vZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTY3NAorCisgICAgICAgIFJldmlld2VkIGJ5IEVy
aWMgQ2FybHNvbi4KKworICAgICAgICBTaW1pbGFybHkgdG8gSDI2NCwgcHJlZml4IHRoZSBTRnJh
bWUgY29udGVudCB3aXRoIHNvbWUgZGF0YSB0byBlbnN1cmUga2V5IGZyYW1lcyBvciByZXNvbHV0
aW9uIGNhbiBiZSBkZXRlY3RlZAorICAgICAgICB3aXRob3V0IHJldmVhbGluZyB0aGUgYWN0dWFs
IGNvbnRlbnQuCisKKyAgICAgICAgQ292ZXJlZCBieSB1cGRhdGVkIHRlc3QuCisKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5pZGw6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6ZGVjcnlwdEZyYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjplbmNyeXB0RnJhbWUpOgor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIuaDoK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1NGcmFtZVV0aWxzLmNwcDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vSDI2NFV0aWxzLmNwcC4KKyAg
ICAgICAgKFdlYkNvcmU6OmNvbXB1dGVIMjY0UHJlZml4T2Zmc2V0KToKKyAgICAgICAgKFdlYkNv
cmU6OmNvbXB1dGVIMjY0UHJlZml4QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OmlzVlA4S2V5
RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZVZQOFByZWZpeE9mZnNldCk6CisgICAg
ICAgIChXZWJDb3JlOjpjb21wdXRlVlA4UHJlZml4QnVmZmVyKToKKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhc3RyZWFtL1NGcmFtZVV0aWxzLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL0gyNjRVdGlscy5oLgorICAgICAgICAqIFNvdXJjZXMudHh0Ogor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMC0xMi0x
MCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgSUNFIGRvZXMg
bm90IHJlc29sdmUgZm9yIGB0dXJuc2AgcmVsYXkgY2FuZGlkYXRlcyByb290ZWQgaW4gTGV0c0Vu
Y3J5cHQgQ0EKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
SDI2NFV0aWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vSDI2NFV0
aWxzLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDE4N2U4MWI0MTA3YzljOTJh
YWIzNzVhZGU1NDQ0MmVjOTU0NmM5Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0gyNjRVdGls
cy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJIMjY0VXRpbHMuaCIKLQotI2lmIEVOQUJMRShXRUJfUlRDKQotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBpc1NsaWNlTkFMVSh1aW50OF90IGRhdGEpCi17Ci0g
ICAgcmV0dXJuIChkYXRhICYgMHgxRikgPT0gMTsKLX0KLQotc3RhdGljIGlubGluZSBib29sIGlz
U1BTTkFMVSh1aW50OF90IGRhdGEpCi17Ci0gICAgcmV0dXJuIChkYXRhICYgMHgxRikgPT0gNzsK
LX0KLQotc3RhdGljIGlubGluZSBib29sIGlzUFBTTkFMVSh1aW50OF90IGRhdGEpCi17Ci0gICAg
cmV0dXJuIChkYXRhICYgMHgxRikgPT0gODsKLX0KLQotc3RhdGljIGlubGluZSBib29sIGlzSURS
TkFMVSh1aW50OF90IGRhdGEpCi17Ci0gICAgcmV0dXJuIChkYXRhICYgMHgxRikgPT0gNTsKLX0K
LQotc3RhdGljIGlubGluZSB2b2lkIGZpbmROYWx1cyhjb25zdCB1aW50OF90KiBmcmFtZURhdGEs
IHNpemVfdCBmcmFtZVNpemUsIHNpemVfdCBvZmZzZXQsIGNvbnN0IEZ1bmN0aW9uPGJvb2woc2l6
ZV90KT4mIGNhbGxiYWNrKQotewotICAgIGZvciAoc2l6ZV90IGkgPSA0ICsgb2Zmc2V0OyBpIDwg
ZnJhbWVTaXplOyArK2kpIHsKLSAgICAgICAgaWYgKGZyYW1lRGF0YVtpIC0gNF0gPT0gMCAmJiBm
cmFtZURhdGFbaSAtIDNdID09IDAgJiYgZnJhbWVEYXRhW2kgLSAyXSA9PSAwICYmIGZyYW1lRGF0
YVtpIC0gMV0gPT0gMSkgewotICAgICAgICAgICAgaWYgKGNhbGxiYWNrKGkpKQotICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLX0KLQotc2l6ZV90IGNvbXB1dGVQcmVm
aXhPZmZzZXQoY29uc3QgdWludDhfdCogZnJhbWVEYXRhLCBzaXplX3QgZnJhbWVTaXplKQotewot
ICAgIHNpemVfdCBvZmZzZXQgPSAwOwotICAgIGZpbmROYWx1cyhmcmFtZURhdGEsIGZyYW1lU2l6
ZSwgMCwgWyZvZmZzZXQsICZmcmFtZURhdGFdKGF1dG8gcG9zaXRpb24pIHsKLSAgICAgICAgaWYg
KGlzSURSTkFMVShmcmFtZURhdGFbcG9zaXRpb25dKSB8fCBpc1NsaWNlTkFMVShmcmFtZURhdGFb
cG9zaXRpb25dKSkgewotICAgICAgICAgICAgLy8gU2tpcCAwMCAwMCAwMCAwMSwgbmFsdSB0eXBl
IGJ5dGUgYW5kIHRoZSBuZXh0IGJ5dGUuCi0gICAgICAgICAgICBvZmZzZXQgPSBwb3NpdGlvbiAr
IDI7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfSk7Ci0gICAgcmV0dXJuIG9mZnNldDsKLX0KLQotYm9vbCBuZWVkc1Jic3BV
bmVzY2FwaW5nKGNvbnN0IHVpbnQ4X3QqIGZyYW1lRGF0YSwgc2l6ZV90IGZyYW1lU2l6ZSkKLXsK
LSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZyYW1lU2l6ZSAtIDM7ICsraSkgewotICAgICAg
ICBpZiAoZnJhbWVEYXRhW2ldID09IDAgJiYgZnJhbWVEYXRhW2kgKyAxXSA9PSAwICYmIGZyYW1l
RGF0YVtpICsgMl0gPT0gMykKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBy
ZXR1cm4gZmFsc2U7Ci19Ci0KLVZlY3Rvcjx1aW50OF90PiBmcm9tUmJzcChjb25zdCB1aW50OF90
KiBmcmFtZURhdGEsIHNpemVfdCBmcmFtZVNpemUpCi17Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1
ZmZlcjsKLSAgICBidWZmZXIucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShmcmFtZVNpemUpOwotCi0g
ICAgc2l6ZV90IGk7Ci0gICAgZm9yIChpID0gMDsgaSA8IGZyYW1lU2l6ZSAtIDM7ICsraSkgewot
ICAgICAgICBpZiAoZnJhbWVEYXRhW2ldID09IDAgJiYgZnJhbWVEYXRhW2kgKyAxXSA9PSAwICYm
IGZyYW1lRGF0YVtpICsgMl0gPT0gMykgewotICAgICAgICAgICAgYnVmZmVyLnVuY2hlY2tlZEFw
cGVuZChmcmFtZURhdGFbaV0pOwotICAgICAgICAgICAgYnVmZmVyLnVuY2hlY2tlZEFwcGVuZChm
cmFtZURhdGFbaSArIDFdKTsKLSAgICAgICAgICAgIC8vIFNraXAgbmV4dCBieXRlIHdoaWNoIGlz
IGRlbGltaXRlci4KLSAgICAgICAgICAgIGkgKz0gMjsKLSAgICAgICAgfSBlbHNlCi0gICAgICAg
ICAgICBidWZmZXIudW5jaGVja2VkQXBwZW5kKGZyYW1lRGF0YVtpXSk7Ci0gICAgfQotICAgIGZv
ciAoOyBpIDwgZnJhbWVTaXplOyArK2kpCi0gICAgICAgIGJ1ZmZlci51bmNoZWNrZWRBcHBlbmQo
ZnJhbWVEYXRhW2ldKTsKLQotICAgIHJldHVybiBidWZmZXI7Ci19Ci0KLUgyNjRQcmVmaXhCdWZm
ZXIgY29tcHV0ZVByZWZpeEJ1ZmZlcihjb25zdCB1aW50OF90KiBmcmFtZURhdGEsIHNpemVfdCBm
cmFtZVNpemUpCi17Ci0gICAgLy8gRGVsdGEgYW5kIGtleSBwcmVmaXhlcyBhc3N1bWUgU1BTL1BQ
UyB3aXRoIElEcyBlcXVhbCB0byAwIGhhdmUgYmVlbiB0cmFuc21pdHRlZC4KLSAgICBzdGF0aWMg
Y29uc3QgdWludDhfdCBwcmVmaXhEZWx0YUZyYW1lWzZdID0geyAweDAwLCAweDAwLCAweDAwLCAw
eDAxLCAweDIxLCAweGUwIH07Ci0KLSAgICBpZiAoZnJhbWVTaXplIDwgNSkKLSAgICAgICAgcmV0
dXJuIHsgfTsKLQotICAgIC8vIFdlIGFzc3VtZSBhIGtleSBmcmFtZSBzdGFydHMgd2l0aCBTUFMs
IHRoZW4gUFBTLiBPdGhlcndpc2Ugd2Ugd3JhcCBpdCBhcyBhIGRlbHRhIGZyYW1lLgotICAgIGlm
ICghaXNTUFNOQUxVKGZyYW1lRGF0YVs0XSkpCi0gICAgICAgIHJldHVybiBIMjY0UHJlZml4QnVm
ZmVyIHsgcHJlZml4RGVsdGFGcmFtZSwgc2l6ZW9mKHByZWZpeERlbHRhRnJhbWUpLCB7IH0gfTsK
LQotICAgIC8vIFNlYXJjaCBmb3IgUFBTCi0gICAgc2l6ZV90IHNwc1Bwc0xlbmd0aCA9IDA7Ci0g
ICAgZmluZE5hbHVzKGZyYW1lRGF0YSwgZnJhbWVTaXplLCA1LCBbZnJhbWVEYXRhLCAmc3BzUHBz
TGVuZ3RoXShhdXRvIHBvc2l0aW9uKSB7Ci0gICAgICAgIGlmIChpc1BQU05BTFUoZnJhbWVEYXRh
W3Bvc2l0aW9uXSkpCi0gICAgICAgICAgICBzcHNQcHNMZW5ndGggPSBwb3NpdGlvbjsKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgfSk7Ci0gICAgaWYgKCFzcHNQcHNMZW5ndGgpCi0gICAgICAg
IHJldHVybiBIMjY0UHJlZml4QnVmZmVyIHsgcHJlZml4RGVsdGFGcmFtZSwgc2l6ZW9mKHByZWZp
eERlbHRhRnJhbWUpLCB7IH0gfTsKLQotICAgIC8vIFNlYXJjaCBmb3IgbmV4dCBOQUxVIHRvIGNv
bXB1dGUgdGhlIHJlYWwgc3BzUHBzTGVuZ3RoLCBpbmNsdWRpbmcgdGhlIG5leHQgMDAgMDAgMDAg
MDEuCi0gICAgZmluZE5hbHVzKGZyYW1lRGF0YSwgZnJhbWVTaXplLCBzcHNQcHNMZW5ndGggKyAx
LCBbJnNwc1Bwc0xlbmd0aF0oYXV0byBwb3NpdGlvbikgewotICAgICAgICBzcHNQcHNMZW5ndGgg
PSBwb3NpdGlvbjsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSk7Ci0KLSAgICBWZWN0b3I8
dWludDhfdD4gYnVmZmVyOwotICAgIGJ1ZmZlci5yZXNpemUoc3BzUHBzTGVuZ3RoICsgMik7Ci0g
ICAgc3RkOjptZW1jcHkoYnVmZmVyLmRhdGEoKSwgZnJhbWVEYXRhLCBzcHNQcHNMZW5ndGgpOwot
ICAgIGJ1ZmZlcltzcHNQcHNMZW5ndGhdID0gMHgyNTsKLSAgICBidWZmZXJbc3BzUHBzTGVuZ3Ro
ICsgMV0gPSAweGI4OwotICAgIHJldHVybiB7IGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCks
IFdURk1vdmUoYnVmZmVyKSB9OwotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQgZmluZEVzY2FwZVJi
c3BQYXR0ZXJucyhjb25zdCBWZWN0b3I8dWludDhfdD4mIGZyYW1lLCBzaXplX3Qgb2Zmc2V0LCBj
b25zdCBGdW5jdGlvbjx2b2lkKHNpemVfdCwgYm9vbCk+JiBjYWxsYmFjaykKLXsKLSAgICBzaXpl
X3QgbnVtQ29uc2VjdXRpdmVaZXJvcyA9IDA7Ci0gICAgYXV0byogZGF0YSA9IGZyYW1lLmRhdGEo
KTsKLSAgICBmb3IgKHNpemVfdCBpID0gb2Zmc2V0OyBpIDwgZnJhbWUuc2l6ZSgpOyArK2kpIHsK
LSAgICAgICAgYm9vbCBzaG91bGRFc2NhcGUgPSBkYXRhW2ldIDw9IDMgJiYgbnVtQ29uc2VjdXRp
dmVaZXJvcyA+PSAyOwotICAgICAgICBpZiAoc2hvdWxkRXNjYXBlKQotICAgICAgICAgICAgbnVt
Q29uc2VjdXRpdmVaZXJvcyA9IDA7Ci0KLSAgICAgICAgaWYgKGRhdGFbaV0gPT0gMCkKLSAgICAg
ICAgICAgICsrbnVtQ29uc2VjdXRpdmVaZXJvczsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
bnVtQ29uc2VjdXRpdmVaZXJvcyA9IDA7Ci0KLSAgICAgICAgY2FsbGJhY2soaSwgc2hvdWxkRXNj
YXBlKTsKLSAgICB9Ci19Ci0KLXZvaWQgdG9SYnNwKFZlY3Rvcjx1aW50OF90PiYgZnJhbWUsIHNp
emVfdCBvZmZzZXQpCi17Ci0gICAgc2l6ZV90IGNvdW50ID0gMDsKLSAgICBmaW5kRXNjYXBlUmJz
cFBhdHRlcm5zKGZyYW1lLCBvZmZzZXQsIFsmY291bnRdKHNpemVfdCwgYm9vbCBzaG91ZGxCZUVz
Y2FwZWQpIHsKLSAgICAgICAgaWYgKHNob3VkbEJlRXNjYXBlZCkKLSAgICAgICAgICAgIGNvdW50
Kys7Ci0gICAgfSk7Ci0gICAgaWYgKCFjb3VudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgVmVj
dG9yPHVpbnQ4X3Q+IG5ld0ZyYW1lOwotICAgIG5ld0ZyYW1lLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkoZnJhbWUuc2l6ZSgpICsgY291bnQpOwotICAgIG5ld0ZyYW1lLmFwcGVuZChmcmFtZS5kYXRh
KCksIG9mZnNldCk7Ci0KLSAgICBmaW5kRXNjYXBlUmJzcFBhdHRlcm5zKGZyYW1lLCBvZmZzZXQs
IFtkYXRhID0gZnJhbWUuZGF0YSgpLCAmbmV3RnJhbWVdKHNpemVfdCBwb3NpdGlvbiwgYm9vbCBz
aG91ZGxCZUVzY2FwZWQpIHsKLSAgICAgICAgaWYgKHNob3VkbEJlRXNjYXBlZCkKLSAgICAgICAg
ICAgIG5ld0ZyYW1lLnVuY2hlY2tlZEFwcGVuZCgzKTsKLSAgICAgICAgbmV3RnJhbWUudW5jaGVj
a2VkQXBwZW5kKGRhdGFbcG9zaXRpb25dKTsKLSAgICB9KTsKLQotICAgIGZyYW1lID0gV1RGTW92
ZShuZXdGcmFtZSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVO
QUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9IMjY0VXRpbHMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vSDI2
NFV0aWxzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2NmE1NzcxMjljOGY0NTIz
NTMzNWYwNWMzZDg2OTMwMjY0MmEzNGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9IMjY0VXRp
bHMuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJf
UlRDKQotCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LXN0cnVjdCBIMjY0UHJlZml4QnVmZmVyIHsKLSAgICBjb25zdCB1aW50OF90KiBkYXRhIHsgbnVs
bHB0ciB9OwotICAgIHNpemVfdCBzaXplIHsgMCB9OwotICAgIFZlY3Rvcjx1aW50OF90PiBidWZm
ZXI7Ci19OwotCi1zaXplX3QgY29tcHV0ZVByZWZpeE9mZnNldChjb25zdCB1aW50OF90Kiwgc2l6
ZV90KTsKLUgyNjRQcmVmaXhCdWZmZXIgY29tcHV0ZVByZWZpeEJ1ZmZlcihjb25zdCB1aW50OF90
Kiwgc2l6ZV90KTsKLQotV0VCQ09SRV9FWFBPUlQgYm9vbCBuZWVkc1Jic3BVbmVzY2FwaW5nKGNv
bnN0IHVpbnQ4X3QqLCBzaXplX3QpOwotV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGZy
b21SYnNwKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwotV0VCQ09SRV9FWFBPUlQgdm9pZCB0b1Ji
c3AoVmVjdG9yPHVpbnQ4X3Q+Jiwgc2l6ZV90KTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQl9SVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5pZGwKaW5kZXgg
MGVjZDk4MTZlNThiZDY0NGE2YzVkMTQ3YjAxMGJjOTc4Y2UyNTk3Yy4uNGE0NGVhNjVhNWQxNjFk
ZmI1YzIwMWUxOWRjNmM2ZjE1NzRjYTcyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmlkbApAQCAt
MzAsNyArMzAsOCBAQCBlbnVtIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybVJvbGUgewogCiBlbnVtIFJU
Q1J0cFNGcmFtZVRyYW5zZm9ybUNvbXBhdGliaWxpdHlNb2RlIHsKICAgICAibm9uZSIsCi0gICAg
IkgyNjQiCisgICAgIkgyNjQiLAorICAgICJWUDgiCiB9OwogCiBkaWN0aW9uYXJ5IFJUQ1J0cFNG
cmFtZVRyYW5zZm9ybU9wdGlvbnMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmNwcAppbmRleCBi
NzY5M2EwMWIzMGZhMzU1ZTFlYWQwM2ZlMWJiNDgxNDgwYmRjNDkwLi44OWIwOGIzMmZhYjgwN2Q2
OGZmYjg4NGVkYjA1ZGQ5NzE1YzVkY2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmNwcApA
QCAtMjgsNyArMjgsNyBAQAogCiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAKLSNpbmNsdWRlICJIMjY0
VXRpbHMuaCIKKyNpbmNsdWRlICJTRnJhbWVVdGlscy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTE5Niw4ICsxOTYsOSBAQCBFeGNlcHRpb25Pcjx2b2lkPiBSVENSdHBTRnJhbWVUcmFu
c2Zvcm1lcjo6dXBkYXRlRW5jcnlwdGlvbktleShjb25zdCBWZWN0b3I8dWludAogRXhjZXB0aW9u
T3I8VmVjdG9yPHVpbnQ4X3Q+PiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6ZGVjcnlwdEZyYW1l
KGNvbnN0IHVpbnQ4X3QqIGZyYW1lRGF0YSwgc2l6ZV90IGZyYW1lU2l6ZSkKIHsKICAgICBWZWN0
b3I8dWludDhfdD4gYnVmZmVyOwotICAgIGlmIChtX2NvbXBhdGliaWxpdHlNb2RlID09IENvbXBh
dGliaWxpdHlNb2RlOjpIMjY0KSB7Ci0gICAgICAgIGF1dG8gb2Zmc2V0ID0gY29tcHV0ZVByZWZp
eE9mZnNldChmcmFtZURhdGEsIGZyYW1lU2l6ZSk7CisgICAgc3dpdGNoIChtX2NvbXBhdGliaWxp
dHlNb2RlKSB7CisgICAgY2FzZSBDb21wYXRpYmlsaXR5TW9kZTo6SDI2NDogeworICAgICAgICBh
dXRvIG9mZnNldCA9IGNvbXB1dGVIMjY0UHJlZml4T2Zmc2V0KGZyYW1lRGF0YSwgZnJhbWVTaXpl
KTsKICAgICAgICAgZnJhbWVEYXRhICs9IG9mZnNldDsKICAgICAgICAgZnJhbWVTaXplIC09IG9m
ZnNldDsKICAgICAgICAgaWYgKG5lZWRzUmJzcFVuZXNjYXBpbmcoZnJhbWVEYXRhLCBmcmFtZVNp
emUpKSB7CkBAIC0yMDUsNiArMjA2LDE2IEBAIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4g
UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmRlY3J5cHRGcmFtZShjb25zdCB1aW50OF90CiAgICAg
ICAgICAgICBmcmFtZURhdGEgPSBidWZmZXIuZGF0YSgpOwogICAgICAgICAgICAgZnJhbWVTaXpl
ID0gYnVmZmVyLnNpemUoKTsKICAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9CisgICAg
Y2FzZSBDb21wYXRpYmlsaXR5TW9kZTo6VlA4OiB7CisgICAgICAgIGF1dG8gb2Zmc2V0ID0gY29t
cHV0ZVZQOFByZWZpeE9mZnNldChmcmFtZURhdGEsIGZyYW1lU2l6ZSk7CisgICAgICAgIGZyYW1l
RGF0YSArPSBvZmZzZXQ7CisgICAgICAgIGZyYW1lU2l6ZSAtPSBvZmZzZXQ7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKyAgICBjYXNlIENvbXBhdGliaWxpdHlNb2RlOjpOb25lOgorICAgICAgICBi
cmVhazsKICAgICB9CiAKICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fa2V5TG9jayk7CkBA
IC0yNTksOSArMjcwLDE3IEBAIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gUlRDUnRwU0Zy
YW1lVHJhbnNmb3JtZXI6OmVuY3J5cHRGcmFtZShjb25zdCB1aW50OF90CiAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIE1heEhlYWRlclNpemUgPSAxNzsKIAogICAgIFZlY3Rvcjx1aW50OF90PiB0
cmFuc2Zvcm1lZERhdGE7Ci0gICAgSDI2NFByZWZpeEJ1ZmZlciBwcmVmaXhCdWZmZXI7Ci0gICAg
aWYgKG1fY29tcGF0aWJpbGl0eU1vZGUgPT0gQ29tcGF0aWJpbGl0eU1vZGU6OkgyNjQpCi0gICAg
ICAgIHByZWZpeEJ1ZmZlciA9IGNvbXB1dGVQcmVmaXhCdWZmZXIoZnJhbWVEYXRhLCBmcmFtZVNp
emUpOworICAgIFNGcmFtZUNvbXBhdGliaWxpdHlQcmVmaXhCdWZmZXIgcHJlZml4QnVmZmVyOwor
ICAgIHN3aXRjaCAobV9jb21wYXRpYmlsaXR5TW9kZSkgeworICAgIGNhc2UgQ29tcGF0aWJpbGl0
eU1vZGU6OkgyNjQ6CisgICAgICAgIHByZWZpeEJ1ZmZlciA9IGNvbXB1dGVIMjY0UHJlZml4QnVm
ZmVyKGZyYW1lRGF0YSwgZnJhbWVTaXplKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDb21w
YXRpYmlsaXR5TW9kZTo6VlA4OgorICAgICAgICBwcmVmaXhCdWZmZXIgPSBjb21wdXRlVlA4UHJl
Zml4QnVmZmVyKGZyYW1lRGF0YSwgZnJhbWVTaXplKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBDb21wYXRpYmlsaXR5TW9kZTo6Tm9uZToKKyAgICAgICAgYnJlYWs7CisgICAgfQogCiAgICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2tleUxvY2spOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVy
LmgKaW5kZXggYzhkMzhlN2VjNTgzZGQ0MGU2YWNiYzZmNmNlNGQ2NjQ1M2IyMGViOC4uMzdlZTFh
YzkwZDRiMTVhZjMzODI5MjRiNTkyMDAzM2YzOGFkM2U2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3Jt
ZXIuaApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBDcnlwdG9LZXk7CiAKIGNsYXNzIFJUQ1J0cFNG
cmFtZVRyYW5zZm9ybWVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybWVyLCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPiB7CiBwdWJsaWM6Ci0g
ICAgZW51bSBjbGFzcyBDb21wYXRpYmlsaXR5TW9kZSB7IE5vbmUsIEgyNjQgfTsKKyAgICBlbnVt
IGNsYXNzIENvbXBhdGliaWxpdHlNb2RlIHsgTm9uZSwgSDI2NCwgVlA4IH07CiAKICAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmPFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyPiBjcmVhdGUoQ29t
cGF0aWJpbGl0eU1vZGUgPSBDb21wYXRpYmlsaXR5TW9kZTo6Tm9uZSk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgflJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1NGcmFtZVV0aWxzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vU0ZyYW1lVXRpbHMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA4Mjc1MmIz
NDYyZjg3ZWE4ZTcxMTQ5MjYyYjYxMTg2OGM1ZmIzZmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1NGcmFtZVV0aWxzLmNwcApAQCAtMCwwICsx
LDIwNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTRnJhbWVVdGlscy5oIgorCisjaWYgRU5BQkxF
KFdFQl9SVEMpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGlubGluZSBib29sIGlz
U2xpY2VOQUxVKHVpbnQ4X3QgZGF0YSkKK3sKKyAgICByZXR1cm4gKGRhdGEgJiAweDFGKSA9PSAx
OworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgaXNTUFNOQUxVKHVpbnQ4X3QgZGF0YSkKK3sKKyAg
ICByZXR1cm4gKGRhdGEgJiAweDFGKSA9PSA3OworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgaXNQ
UFNOQUxVKHVpbnQ4X3QgZGF0YSkKK3sKKyAgICByZXR1cm4gKGRhdGEgJiAweDFGKSA9PSA4Owor
fQorCitzdGF0aWMgaW5saW5lIGJvb2wgaXNJRFJOQUxVKHVpbnQ4X3QgZGF0YSkKK3sKKyAgICBy
ZXR1cm4gKGRhdGEgJiAweDFGKSA9PSA1OworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgZmluZE5h
bHVzKGNvbnN0IHVpbnQ4X3QqIGZyYW1lRGF0YSwgc2l6ZV90IGZyYW1lU2l6ZSwgc2l6ZV90IG9m
ZnNldCwgY29uc3QgRnVuY3Rpb248Ym9vbChzaXplX3QpPiYgY2FsbGJhY2spCit7CisgICAgZm9y
IChzaXplX3QgaSA9IDQgKyBvZmZzZXQ7IGkgPCBmcmFtZVNpemU7ICsraSkgeworICAgICAgICBp
ZiAoZnJhbWVEYXRhW2kgLSA0XSA9PSAwICYmIGZyYW1lRGF0YVtpIC0gM10gPT0gMCAmJiBmcmFt
ZURhdGFbaSAtIDJdID09IDAgJiYgZnJhbWVEYXRhW2kgLSAxXSA9PSAxKSB7CisgICAgICAgICAg
ICBpZiAoY2FsbGJhY2soaSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgfQorfQorCitzaXplX3QgY29tcHV0ZUgyNjRQcmVmaXhPZmZzZXQoY29uc3QgdWludDhfdCog
ZnJhbWVEYXRhLCBzaXplX3QgZnJhbWVTaXplKQoreworICAgIHNpemVfdCBvZmZzZXQgPSAwOwor
ICAgIGZpbmROYWx1cyhmcmFtZURhdGEsIGZyYW1lU2l6ZSwgMCwgWyZvZmZzZXQsICZmcmFtZURh
dGFdKGF1dG8gcG9zaXRpb24pIHsKKyAgICAgICAgaWYgKGlzSURSTkFMVShmcmFtZURhdGFbcG9z
aXRpb25dKSB8fCBpc1NsaWNlTkFMVShmcmFtZURhdGFbcG9zaXRpb25dKSkgeworICAgICAgICAg
ICAgLy8gU2tpcCAwMCAwMCAwMCAwMSwgbmFsdSB0eXBlIGJ5dGUgYW5kIHRoZSBuZXh0IGJ5dGUu
CisgICAgICAgICAgICBvZmZzZXQgPSBwb3NpdGlvbiArIDI7CisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfSk7CisgICAgcmV0
dXJuIG9mZnNldDsKK30KKworYm9vbCBuZWVkc1Jic3BVbmVzY2FwaW5nKGNvbnN0IHVpbnQ4X3Qq
IGZyYW1lRGF0YSwgc2l6ZV90IGZyYW1lU2l6ZSkKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGZyYW1lU2l6ZSAtIDM7ICsraSkgeworICAgICAgICBpZiAoZnJhbWVEYXRhW2ldID09IDAg
JiYgZnJhbWVEYXRhW2kgKyAxXSA9PSAwICYmIGZyYW1lRGF0YVtpICsgMl0gPT0gMykKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1ZlY3Rv
cjx1aW50OF90PiBmcm9tUmJzcChjb25zdCB1aW50OF90KiBmcmFtZURhdGEsIHNpemVfdCBmcmFt
ZVNpemUpCit7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKKyAgICBidWZmZXIucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShmcmFtZVNpemUpOworCisgICAgc2l6ZV90IGk7CisgICAgZm9yIChp
ID0gMDsgaSA8IGZyYW1lU2l6ZSAtIDM7ICsraSkgeworICAgICAgICBpZiAoZnJhbWVEYXRhW2ld
ID09IDAgJiYgZnJhbWVEYXRhW2kgKyAxXSA9PSAwICYmIGZyYW1lRGF0YVtpICsgMl0gPT0gMykg
eworICAgICAgICAgICAgYnVmZmVyLnVuY2hlY2tlZEFwcGVuZChmcmFtZURhdGFbaV0pOworICAg
ICAgICAgICAgYnVmZmVyLnVuY2hlY2tlZEFwcGVuZChmcmFtZURhdGFbaSArIDFdKTsKKyAgICAg
ICAgICAgIC8vIFNraXAgbmV4dCBieXRlIHdoaWNoIGlzIGRlbGltaXRlci4KKyAgICAgICAgICAg
IGkgKz0gMjsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBidWZmZXIudW5jaGVja2VkQXBw
ZW5kKGZyYW1lRGF0YVtpXSk7CisgICAgfQorICAgIGZvciAoOyBpIDwgZnJhbWVTaXplOyArK2kp
CisgICAgICAgIGJ1ZmZlci51bmNoZWNrZWRBcHBlbmQoZnJhbWVEYXRhW2ldKTsKKworICAgIHJl
dHVybiBidWZmZXI7Cit9CisKK1NGcmFtZUNvbXBhdGliaWxpdHlQcmVmaXhCdWZmZXIgY29tcHV0
ZUgyNjRQcmVmaXhCdWZmZXIoY29uc3QgdWludDhfdCogZnJhbWVEYXRhLCBzaXplX3QgZnJhbWVT
aXplKQoreworICAgIC8vIERlbHRhIGFuZCBrZXkgcHJlZml4ZXMgYXNzdW1lIFNQUy9QUFMgd2l0
aCBJRHMgZXF1YWwgdG8gMCBoYXZlIGJlZW4gdHJhbnNtaXR0ZWQuCisgICAgc3RhdGljIGNvbnN0
IHVpbnQ4X3QgcHJlZml4RGVsdGFGcmFtZVs2XSA9IHsgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwg
MHgyMSwgMHhlMCB9OworCisgICAgaWYgKGZyYW1lU2l6ZSA8IDUpCisgICAgICAgIHJldHVybiB7
IH07CisKKyAgICAvLyBXZSBhc3N1bWUgYSBrZXkgZnJhbWUgc3RhcnRzIHdpdGggU1BTLCB0aGVu
IFBQUy4gT3RoZXJ3aXNlIHdlIHdyYXAgaXQgYXMgYSBkZWx0YSBmcmFtZS4KKyAgICBpZiAoIWlz
U1BTTkFMVShmcmFtZURhdGFbNF0pKQorICAgICAgICByZXR1cm4gU0ZyYW1lQ29tcGF0aWJpbGl0
eVByZWZpeEJ1ZmZlciB7IHByZWZpeERlbHRhRnJhbWUsIHNpemVvZihwcmVmaXhEZWx0YUZyYW1l
KSwgeyB9IH07CisKKyAgICAvLyBTZWFyY2ggZm9yIFBQUworICAgIHNpemVfdCBzcHNQcHNMZW5n
dGggPSAwOworICAgIGZpbmROYWx1cyhmcmFtZURhdGEsIGZyYW1lU2l6ZSwgNSwgW2ZyYW1lRGF0
YSwgJnNwc1Bwc0xlbmd0aF0oYXV0byBwb3NpdGlvbikgeworICAgICAgICBpZiAoaXNQUFNOQUxV
KGZyYW1lRGF0YVtwb3NpdGlvbl0pKQorICAgICAgICAgICAgc3BzUHBzTGVuZ3RoID0gcG9zaXRp
b247CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0pOworICAgIGlmICghc3BzUHBzTGVuZ3Ro
KQorICAgICAgICByZXR1cm4gU0ZyYW1lQ29tcGF0aWJpbGl0eVByZWZpeEJ1ZmZlciB7IHByZWZp
eERlbHRhRnJhbWUsIHNpemVvZihwcmVmaXhEZWx0YUZyYW1lKSwgeyB9IH07CisKKyAgICAvLyBT
ZWFyY2ggZm9yIG5leHQgTkFMVSB0byBjb21wdXRlIHRoZSByZWFsIHNwc1Bwc0xlbmd0aCwgaW5j
bHVkaW5nIHRoZSBuZXh0IDAwIDAwIDAwIDAxLgorICAgIGZpbmROYWx1cyhmcmFtZURhdGEsIGZy
YW1lU2l6ZSwgc3BzUHBzTGVuZ3RoICsgMSwgWyZzcHNQcHNMZW5ndGhdKGF1dG8gcG9zaXRpb24p
IHsKKyAgICAgICAgc3BzUHBzTGVuZ3RoID0gcG9zaXRpb247CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0pOworCisgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKKyAgICBidWZmZXIucmVz
aXplKHNwc1Bwc0xlbmd0aCArIDIpOworICAgIHN0ZDo6bWVtY3B5KGJ1ZmZlci5kYXRhKCksIGZy
YW1lRGF0YSwgc3BzUHBzTGVuZ3RoKTsKKyAgICBidWZmZXJbc3BzUHBzTGVuZ3RoXSA9IDB4MjU7
CisgICAgYnVmZmVyW3Nwc1Bwc0xlbmd0aCArIDFdID0gMHhiODsKKyAgICByZXR1cm4geyBidWZm
ZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpLCBXVEZNb3ZlKGJ1ZmZlcikgfTsKK30KKworc3RhdGlj
IGlubGluZSB2b2lkIGZpbmRFc2NhcGVSYnNwUGF0dGVybnMoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBmcmFtZSwgc2l6ZV90IG9mZnNldCwgY29uc3QgRnVuY3Rpb248dm9pZChzaXplX3QsIGJvb2wp
PiYgY2FsbGJhY2spCit7CisgICAgc2l6ZV90IG51bUNvbnNlY3V0aXZlWmVyb3MgPSAwOworICAg
IGF1dG8qIGRhdGEgPSBmcmFtZS5kYXRhKCk7CisgICAgZm9yIChzaXplX3QgaSA9IG9mZnNldDsg
aSA8IGZyYW1lLnNpemUoKTsgKytpKSB7CisgICAgICAgIGJvb2wgc2hvdWxkRXNjYXBlID0gZGF0
YVtpXSA8PSAzICYmIG51bUNvbnNlY3V0aXZlWmVyb3MgPj0gMjsKKyAgICAgICAgaWYgKHNob3Vs
ZEVzY2FwZSkKKyAgICAgICAgICAgIG51bUNvbnNlY3V0aXZlWmVyb3MgPSAwOworCisgICAgICAg
IGlmIChkYXRhW2ldID09IDApCisgICAgICAgICAgICArK251bUNvbnNlY3V0aXZlWmVyb3M7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIG51bUNvbnNlY3V0aXZlWmVyb3MgPSAwOworCisgICAg
ICAgIGNhbGxiYWNrKGksIHNob3VsZEVzY2FwZSk7CisgICAgfQorfQorCit2b2lkIHRvUmJzcChW
ZWN0b3I8dWludDhfdD4mIGZyYW1lLCBzaXplX3Qgb2Zmc2V0KQoreworICAgIHNpemVfdCBjb3Vu
dCA9IDA7CisgICAgZmluZEVzY2FwZVJic3BQYXR0ZXJucyhmcmFtZSwgb2Zmc2V0LCBbJmNvdW50
XShzaXplX3QsIGJvb2wgc2hvdWRsQmVFc2NhcGVkKSB7CisgICAgICAgIGlmIChzaG91ZGxCZUVz
Y2FwZWQpCisgICAgICAgICAgICBjb3VudCsrOworICAgIH0pOworICAgIGlmICghY291bnQpCisg
ICAgICAgIHJldHVybjsKKworICAgIFZlY3Rvcjx1aW50OF90PiBuZXdGcmFtZTsKKyAgICBuZXdG
cmFtZS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGZyYW1lLnNpemUoKSArIGNvdW50KTsKKyAgICBu
ZXdGcmFtZS5hcHBlbmQoZnJhbWUuZGF0YSgpLCBvZmZzZXQpOworCisgICAgZmluZEVzY2FwZVJi
c3BQYXR0ZXJucyhmcmFtZSwgb2Zmc2V0LCBbZGF0YSA9IGZyYW1lLmRhdGEoKSwgJm5ld0ZyYW1l
XShzaXplX3QgcG9zaXRpb24sIGJvb2wgc2hvdWRsQmVFc2NhcGVkKSB7CisgICAgICAgIGlmIChz
aG91ZGxCZUVzY2FwZWQpCisgICAgICAgICAgICBuZXdGcmFtZS51bmNoZWNrZWRBcHBlbmQoMyk7
CisgICAgICAgIG5ld0ZyYW1lLnVuY2hlY2tlZEFwcGVuZChkYXRhW3Bvc2l0aW9uXSk7CisgICAg
fSk7CisKKyAgICBmcmFtZSA9IFdURk1vdmUobmV3RnJhbWUpOworfQorCitzdGF0aWMgaW5saW5l
IGJvb2wgaXNWUDhLZXlGcmFtZShjb25zdCB1aW50OF90KiBmcmFtZSwgc2l6ZV90IHNpemUpCit7
CisgICAgQVNTRVJUX1VOVVNFRChzaXplLCBzaXplKTsKKyAgICByZXR1cm4gISgqZnJhbWUgJiAw
eDAxKTsKK30KKworc2l6ZV90IGNvbXB1dGVWUDhQcmVmaXhPZmZzZXQoY29uc3QgdWludDhfdCog
ZnJhbWUsIHNpemVfdCBzaXplKQoreworICAgIHJldHVybiBpc1ZQOEtleUZyYW1lKGZyYW1lLCBz
aXplKSA/IDEwIDogMzsKK30KKworU0ZyYW1lQ29tcGF0aWJpbGl0eVByZWZpeEJ1ZmZlciBjb21w
dXRlVlA4UHJlZml4QnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGZyYW1lLCBzaXplX3Qgc2l6ZSkKK3sK
KyAgICBWZWN0b3I8dWludDhfdD4gcHJlZml4OworICAgIHByZWZpeC5hcHBlbmQoZnJhbWUsIGlz
VlA4S2V5RnJhbWUoZnJhbWUsIHNpemUpID8gMTAgOiAzKTsKKyAgICByZXR1cm4geyBwcmVmaXgu
ZGF0YSgpLCBwcmVmaXguc2l6ZSgpLCBXVEZNb3ZlKHByZWZpeCkgfTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9SVEMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1NGcmFtZVV0aWxzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1NGcmFtZVV0aWxzLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjA1
YmM5MjU3OWExMmZjNjIxNzM4ZWU2OWEwZDYxNjE5YzMzZDU5OQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vU0ZyYW1lVXRpbHMuaApAQCAtMCww
ICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX1JUQykKKworI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgU0ZyYW1lQ29tcGF0aWJpbGl0
eVByZWZpeEJ1ZmZlciB7CisgICAgY29uc3QgdWludDhfdCogZGF0YSB7IG51bGxwdHIgfTsKKyAg
ICBzaXplX3Qgc2l6ZSB7IDAgfTsKKyAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyOworfTsKKwor
c2l6ZV90IGNvbXB1dGVIMjY0UHJlZml4T2Zmc2V0KGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwor
U0ZyYW1lQ29tcGF0aWJpbGl0eVByZWZpeEJ1ZmZlciBjb21wdXRlSDI2NFByZWZpeEJ1ZmZlcihj
b25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKworV0VCQ09SRV9FWFBPUlQgYm9vbCBuZWVkc1Jic3BV
bmVzY2FwaW5nKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworV0VCQ09SRV9FWFBPUlQgVmVjdG9y
PHVpbnQ4X3Q+IGZyb21SYnNwKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworV0VCQ09SRV9FWFBP
UlQgdm9pZCB0b1Jic3AoVmVjdG9yPHVpbnQ4X3Q+Jiwgc2l6ZV90KTsKKworc2l6ZV90IGNvbXB1
dGVWUDhQcmVmaXhPZmZzZXQoY29uc3QgdWludDhfdCosIHNpemVfdCk7CitTRnJhbWVDb21wYXRp
YmlsaXR5UHJlZml4QnVmZmVyIGNvbXB1dGVWUDhQcmVmaXhCdWZmZXIoY29uc3QgdWludDhfdCos
IHNpemVfdCk7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShX
RUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCAzYjdlNGFmMDZmM2VmMDA0MDM0ZTdiZjMxYzk3YTJh
NTcwZjBlYTA0Li5hNDlmMzY4MmEyZjJkZTQ5MDU4OTM4MmFlMzE3NzM2ODE2YmUyMzYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dApAQCAtMTQzLDcgKzE0Myw2IEBAIE1vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNl
QnVmZmVyLmNwcAogTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXJMaXN0LmNwcAogTW9k
dWxlcy9tZWRpYXNvdXJjZS9WaWRlb1BsYXliYWNrUXVhbGl0eS5jcHAKIE1vZHVsZXMvbWVkaWFz
dHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suY3BwCi1Nb2R1bGVzL21lZGlhc3Ry
ZWFtL0gyNjRVdGlscy5jcHAKIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VJbmZvLmNw
cAogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwCiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtLmNwcApAQCAtMTc3LDYgKzE3Niw3IEBAIE1vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUnRwVHJhbnNmb3JtLmNwcAogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Nl
aXZlci5jcHAKIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDU2Vzc2lvbkRlc2NyaXB0aW9uLmNwcAog
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENUcmFja0V2ZW50LmNwcAorTW9kdWxlcy9tZWRpYXN0cmVh
bS9TRnJhbWVVdGlscy5jcHAKIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ29udHJvbGxl
ci5jcHAKIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAKIE1vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0NlcnRpZmljYXRlR2VuZXJhdG9yLmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGJlNGZjYWZmOWZjOTI1OWI0NmMzNTM5YjZlYTkzYWY0YWRjN2ZiMjUuLmVhYjFhZDBhOTZh
ZjYzNTg1ZGUwMmExYTlhOWQzZjY5ZjNhMzUxODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExMzQsNyArMTEzNCw3IEBACiAJ
CTQxQjI4QjNEMUY4NjBFRjMwMEZCNTJBQyAvKiBMaWJXZWJSVENQcm92aWRlckNvY29hLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUIyOEIzNjFGODYw
QkQwMDBGQjUyQUMgLyogTGliV2ViUlRDUHJvdmlkZXJDb2NvYS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxQjJBNjI2MUVGMUJGNkQwMDJCOUQ3
QSAvKiBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MUIyQTYyNTFFRjFCRjYwMDAyQjlEN0EgLyogV2ViQXVkaW9T
b3VyY2VQcm92aWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTQxQjg3NzYyMjNERTEwNDUwMDM2MzhCOCAvKiBSZWFsdGltZU1lZGlhU291cmNl
SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDFCODc3NjAyM0RFMTA0MjAwMzYzOEI4IC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlm
aWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJ
NDFCQkE4NjYyNTdFMzczQjAwQUM3RjZEIC8qIEgyNjRVdGlscy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEyMDlFMjQyNTdBMkZCQjAwMTIwQUNBIC8q
IEgyNjRVdGlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTQxQkJBODY2MjU3RTM3M0IwMEFDN0Y2RCAvKiBTRnJhbWVVdGlscy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEyMDlFMjQyNTdBMkZCQjAw
MTIwQUNBIC8qIFNGcmFtZVV0aWxzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNDFCRjIwNDkyMkJBN0JFODAwMDRGODEyIC8qIFJlYWx0aW1lVmlk
ZW9Tb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxQkYyMDQwMjJCOTQ3MTYwMDA0RjgxMiAvKiBSZWFsdGltZVZpZGVvU291cmNlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDFDNzYwQjEwRURF
MDNEMzAwQzE2NTVGIC8qIFNjcmlwdFN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MUM3NjBCMDBFREUwM0QzMDBDMTY1NUYgLyogU2NyaXB0U3Rh
dGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0
MUQwMTVDQTBGNEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRDAxNUM4MEY0QjVDNzEwMDRBNjYyRiAv
KiBDb250ZW50VHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC03NTkwLDggKzc1OTAsOCBAQAogCQk0MTE4OUVGNzFBRDgyMzI4MDBCOTBBMEQg
LyogUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQxMTg5RUY3MUFEODIzMjgwMEI5M0Y2NCAvKiBSZWFkYWJsZUJ5dGVT
dHJlYW1Db250cm9sbGVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZWFkYWJsZUJ5dGVT
dHJlYW1Db250cm9sbGVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExODlF
RjcxQUQ4MjMyODAwQjk1NjcyIC8qIFJlYWRhYmxlU3RyZWFtQllPQlJlcXVlc3QuaWRsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtQllPQlJlcXVlc3QuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk0MTIwOUUyNDI1N0EyRkJCMDAxMjBBQ0EgLyogSDI2NFV0
aWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEgyNjRVdGlscy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTIwOUUyNjI1N0EyRkJCMDAxMjBBQ0EgLyogSDI2
NFV0aWxzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEgyNjRVdGls
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMjA5RTI0MjU3QTJGQkIwMDEy
MEFDQSAvKiBTRnJhbWVVdGlscy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
RnJhbWVVdGlscy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTIwOUUyNjI1N0Ey
RkJCMDAxMjBBQ0EgLyogU0ZyYW1lVXRpbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU0ZyYW1lVXRpbHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MTIwOUU5MTIxNkQ1OTNDMDBBNzNBMTIgLyogUlRDQ2VydGlmaWNhdGUuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFJUQ0NlcnRpZmljYXRlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDEyMDlFOTMyMTZENUM3OTAwQTczQTEyIC8qIFJUQ0NlcnRpZmljYXRlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ0NlcnRpZmljYXRlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMjA5RTk0MjE2RUE2OUEwMEE3M0ExMiAvKiBSVENDZXJ0
aWZpY2F0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSVENDZXJ0
aWZpY2F0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzA5MSw4ICsxNzA5
MSw2IEBACiAJCQkJNDFDN0UxMDgxRTZBQTM3QzAwMjdCNERFIC8qIENhbnZhc0NhcHR1cmVNZWRp
YVN0cmVhbVRyYWNrLmlkbCAqLywKIAkJCQk5M0E4MDYxMTFFMDNCNTFDMDA4QTFGMjYgLyogRG91
YmxlUmFuZ2UuaCAqLywKIAkJCQk5M0E4MDYxMjFFMDNCNTFDMDA4QTFGMjYgLyogRG91YmxlUmFu
Z2UuaWRsICovLAotCQkJCTQxMjA5RTI2MjU3QTJGQkIwMDEyMEFDQSAvKiBIMjY0VXRpbHMuY3Bw
ICovLAotCQkJCTQxMjA5RTI0MjU3QTJGQkIwMDEyMEFDQSAvKiBIMjY0VXRpbHMuaCAqLywKIAkJ
CQk5M0E4MDYxMzFFMDNCNTFDMDA4QTFGMjYgLyogTG9uZ1JhbmdlLmggKi8sCiAJCQkJOTNBODA2
MTQxRTAzQjUxQzAwOEExRjI2IC8qIExvbmdSYW5nZS5pZGwgKi8sCiAJCQkJMTU5QUU4MkExQjNB
NDAyRjAwMzc0NzhCIC8qIE1lZGlhRGV2aWNlSW5mby5jcHAgKi8sCkBAIC0xNzI2OSw2ICsxNzI2
Nyw4IEBACiAJCQkJNUUyQzQzNjQxQkNFRTM3MjAwMDFFMkJDIC8qIFJUQ1RyYWNrRXZlbnQuY3Bw
ICovLAogCQkJCTVFMkM0MzY1MUJDRUUzNzIwMDAxRTJCQyAvKiBSVENUcmFja0V2ZW50LmggKi8s
CiAJCQkJNUUyQzQzNjYxQkNFRTM3MjAwMDFFMkJDIC8qIFJUQ1RyYWNrRXZlbnQuaWRsICovLAor
CQkJCTQxMjA5RTI2MjU3QTJGQkIwMDEyMEFDQSAvKiBTRnJhbWVVdGlscy5jcHAgKi8sCisJCQkJ
NDEyMDlFMjQyNTdBMkZCQjAwMTIwQUNBIC8qIFNGcmFtZVV0aWxzLmggKi8sCiAJCQkJMDcyMjFC
OEQxN0NFQzMyNzAwODQ4RTUxIC8qIFVzZXJNZWRpYUNsaWVudC5oICovLAogCQkJCTA3MjIxQjhF
MTdDRUMzMjcwMDg0OEU1MSAvKiBVc2VyTWVkaWFDb250cm9sbGVyLmNwcCAqLywKIAkJCQkwNzIy
MUI4RjE3Q0VDMzI3MDA4NDhFNTEgLyogVXNlck1lZGlhQ29udHJvbGxlci5oICovLApAQCAtMzIx
NzMsNyArMzIxNzMsNiBAQAogCQkJCUNERjc0ODNGMThGRUJDRUMwMDA2RUNDMCAvKiBHcmlkUG9z
aXRpb25zUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUExMkExMDUwMTY2NDQ0RkQwMDhG
QTMxMSAvKiBHcmlkVHJhY2tTaXplLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTJERTcxODFFNEI3
NEE2MDBGOUFDQ0YgLyogR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmggaW4gSGVhZGVycyAqLywK
LQkJCQk0MUJCQTg2NjI1N0UzNzNCMDBBQzdGNkQgLyogSDI2NFV0aWxzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkyNkVBODlBNzFCNEYyQjc1MDA4QzVGRDIgLyogSGFzaGFibGVBY3Rpb25MaXN0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4NDgyQjc0NjExOThDMzU0MDBCRkIwMDUgLyogSGFzaENoYW5n
ZUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODc0OEJFMDEyQ0JGMkRDMDAxRkJBNDEgLyog
SGFzaFRvb2xzLmggaW4gSGVhZGVycyAqLywKQEAgLTM0NTAzLDYgKzM0NTAyLDcgQEAKIAkJCQlC
OERCREI0QzEzMEIwRjhBMDBGNUNEQjEgLyogU2V0U2VsZWN0aW9uQ29tbWFuZC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJN0NENThERkIxRjk1NjVBNTAwMTEyNzkxIC8qIFNldHRpbmdzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3Q0M5NzIyRTFGOTNFMzM2MDAwNEQ0Q0YgLyogU2V0dGluZ3NCYXNlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk0MUJCQTg2NjI1N0UzNzNCMDBBQzdGNkQgLyogU0ZyYW1lVXRp
bHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGM0RENDUwMTJGNUVBMUIwMDBEOTE5MCAvKiBTaGFk
b3dCbHVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzVFQjhDNDBFODIwMzFCMDBCMjU5NjUgLyog
U2hhZG93RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTZEMTY5NjQxMzQ2QjRDMTAwMEVCNzcw
IC8qIFNoYWRvd1Jvb3QuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyVGVzdHMuY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVy
VGVzdHMuY3BwCmluZGV4IDg3OGZmM2NkMmZlYTQyMjU0YjhjNGQ5NjNlNTM0MjkyYmE4ZmUyNTMu
LmQwZWQ0Yjg4MWZlOWVhNDI0ZmI3MjE3NzFjNTcyMWZlNzkxYzRjNzggMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lclRl
c3RzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvUlRDUnRwU0Zy
YW1lVHJhbnNmb3JtZXJUZXN0cy5jcHAKQEAgLTI3LDggKzI3LDggQEAKIAogI2lmIEVOQUJMRShX
RUJfUlRDKQogCi0jaW5jbHVkZSA8V2ViQ29yZS9IMjY0VXRpbHMuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TRnJhbWVV
dGlscy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEkgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IDE1YTA3MzI4NTM2YWFmMWNmMmEyZWFiZDgxNDViNDg0YTAyMGFlNzkuLjRh
Y2VjZjM0NmU4ZDJjZTFmZDMxZTUzNGNjMGY0YWY5OTBjZDQ0MWIgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MyBAQAorMjAyMC0xMi0xMCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAg
ICAgICAgQWRkIGEgU0ZyYW1lIFZQOCBleHBlcmltZW50YWwgY29tcGF0aWJpbGl0eSBtb2RlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk2NzQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgKiB3ZWJydGMvdmlk
ZW8tc2ZyYW1lLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWJydGMvdmlkZW8tc2ZyYW1lLmh0
bWw6CisKIDIwMjAtMTItMTAgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAg
ICAgICAgIEV4cG9zZSBSVENSdHBTRnJhbWVUcmFuc2Zvcm0gYXMgU0ZyYW1lVHJhbnNmb3JtCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJydGMvdmlkZW8tc2ZyYW1lLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3dlYnJ0Yy92aWRlby1zZnJhbWUtZXhwZWN0ZWQudHh0CmluZGV4IGYzZmY2
YzdhZjg5OTAzMGJkZTIwYjQwZGFmZTUzMTQ2NDM5M2JiM2MuLjE2MDk1NTUzMTMzZjYxYzNmZWZi
NGQ5MGQ3Yjk0ZmQ4M2ZiNmU5NTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYnJ0Yy92aWRl
by1zZnJhbWUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3dlYnJ0Yy92aWRlby1zZnJh
bWUtZXhwZWN0ZWQudHh0CkBAIC0yLDQgKzIsNSBAQAogCiBQQVNTIFZpZGVvIGV4Y2hhbmdlIHdp
dGggU0ZyYW1lIC0gSDI2NCBiYXNlbGluZQogUEFTUyBWaWRlbyBleGNoYW5nZSB3aXRoIFNGcmFt
ZSAtIEgyNjQgaGlnaAorUEFTUyBWaWRlbyBleGNoYW5nZSB3aXRoIFNGcmFtZSAtIFZQOAogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJydGMvdmlkZW8tc2ZyYW1lLmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJydGMvdmlkZW8tc2ZyYW1lLmh0bWwKaW5kZXggN2Q2OWZlZWJiZDdlYzY4OTBlMzZk
MTNiNDgxMzRiYjNhOTM2ODQwZS4uZDAzNzUwOWM4NDU1MWE1Nzc2YTViMDg1YWMzNWU3MTYxNTkw
OGExMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2VicnRjL3ZpZGVvLXNmcmFtZS5odG1sCisr
KyBiL0xheW91dFRlc3RzL3dlYnJ0Yy92aWRlby1zZnJhbWUuaHRtbApAQCAtMTAsMTggKzEwLDIy
IEBACiAgICAgICAgIDx2aWRlbyBpZD0icmVtb3RlIiBhdXRvcGxheSBwbGF5c0lubGluZT48L3Zp
ZGVvPgogICAgICAgICA8c2NyaXB0IHNyYyA9InJvdXRpbmVzLmpzIj48L3NjcmlwdD4KICAgICAg
ICAgPHNjcmlwdD4KLWFzeW5jIGZ1bmN0aW9uIGRvU0ZyYW1lVGVzdChzZWxlY3RDb2RlYykKK2Fz
eW5jIGZ1bmN0aW9uIGRvU0ZyYW1lVGVzdChjb2RlYywgc2hvdWxkQ2xvc2UpCiB7CisgICAgbGV0
IHBjMSwgcGMyOwogICAgIGxldCBzZW5kZXIsIHJlY2VpdmVyOwogICAgIGNvbnN0IGxvY2FsU3Ry
ZWFtID0gYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe3ZpZGVvOiB0
cnVlfSk7CiAgICAgY29uc3Qga2V5ID0gYXdhaXQgY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoInJh
dyIsIG5ldyBVaW50OEFycmF5KFsxNDMsIDc3LCA0MywgMTAsIDcyLCAxOSwgMzcsIDY3LCAyMzYs
IDIxOSwgMjQsIDkzLCAyNiwgMTY1LCA5MSwgMTc4XSksICJIS0RGIiwgZmFsc2UsIFsiZGVyaXZl
Qml0cyIsICJkZXJpdmVLZXkiXSk7CiAgICAgY29uc3Qgc3RyZWFtID0gYXdhaXQgbmV3IFByb21p
c2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewogICAgICAgICBjcmVhdGVDb25uZWN0aW9ucygoZmly
c3RDb25uZWN0aW9uKSA9PiB7CisgICAgICAgICAgICBwYzEgPSBmaXJzdENvbm5lY3Rpb247CiAg
ICAgICAgICAgICBzZW5kZXIgPSBmaXJzdENvbm5lY3Rpb24uYWRkVHJhY2sobG9jYWxTdHJlYW0u
Z2V0VHJhY2tzKClbMF0sIGxvY2FsU3RyZWFtKTsKKyAgICAgICAgICAgIGZpcnN0Q29ubmVjdGlv
bi5nZXRUcmFuc2NlaXZlcnMoKVswXS5zZXRDb2RlY1ByZWZlcmVuY2VzKFtjb2RlY10pOwogICAg
ICAgICAgICAgbGV0IHRyYW5zZm9ybSA9IG5ldyBTRnJhbWVUcmFuc2Zvcm0oe2NvbXBhdGliaWxp
dHlNb2RlOiAiSDI2NCJ9KTsKICAgICAgICAgICAgIHRyYW5zZm9ybS5zZXRFbmNyeXB0aW9uS2V5
KGtleSk7CiAgICAgICAgICAgICBzZW5kZXIudHJhbnNmb3JtID0gdHJhbnNmb3JtOwogICAgICAg
ICB9LCAoc2Vjb25kQ29ubmVjdGlvbikgPT4geworICAgICAgICAgICAgcGMyID0gc2Vjb25kQ29u
bmVjdGlvbjsKICAgICAgICAgICAgIHNlY29uZENvbm5lY3Rpb24ub250cmFjayA9ICh0cmFja0V2
ZW50KSA9PiB7CiAgICAgICAgICAgICAgICAgbGV0IHRyYW5zZm9ybSA9IG5ldyBTRnJhbWVUcmFu
c2Zvcm0oe2NvbXBhdGliaWxpdHlNb2RlOiAiSDI2NCJ9KTsKICAgICAgICAgICAgICAgICB0cmFu
c2Zvcm0uc2V0RW5jcnlwdGlvbktleShrZXkpOwpAQCAtMjksMTAgKzMzLDYgQEAgYXN5bmMgZnVu
Y3Rpb24gZG9TRnJhbWVUZXN0KHNlbGVjdENvZGVjKQogICAgICAgICAgICAgICAgIHJlY2VpdmVy
LnRyYW5zZm9ybSA9IHRyYW5zZm9ybTsKICAgICAgICAgICAgICAgICByZXNvbHZlKHRyYWNrRXZl
bnQuc3RyZWFtc1swXSk7CiAgICAgICAgICAgICB9OwotICAgICAgICB9LCB7IG9ic2VydmVPZmZl
ciA6IChvZmZlcikgPT4gewotICAgICAgICAgICAgb2ZmZXIuc2RwID0gc2VsZWN0Q29kZWMob2Zm
ZXIuc2RwKTsKLSAgICAgICAgICAgIHJldHVybiBvZmZlcjsKLSAgICAgICAgfQogICAgICAgICB9
KTsKICAgICAgICAgc2V0VGltZW91dCgoKSA9PiByZWplY3QoIlRlc3QgdGltZWQgb3V0IiksIDUw
MDApOwogICAgIH0pOwpAQCAtNTAsMTUgKzUwLDIzIEBAIGFzeW5jIGZ1bmN0aW9uIGRvU0ZyYW1l
VGVzdChzZWxlY3RDb2RlYykKICAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoaW50ZXJuYWxzLnNm
cmFtZUNvdW50ZXIocmVjZWl2ZXIudHJhbnNmb3JtKSwgcmVjZWl2ZXJDb3VudGVyLCAicmVjZWl2
ZXIiKTsKICAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoaW50ZXJuYWxzLnNmcmFtZUNvdW50ZXIo
c2VuZGVyLnRyYW5zZm9ybSksIHNlbmRlckNvdW50ZXIsICJzZW5kZXIiKTsKICAgICB9CisgICAg
aWYgKHNob3VsZENsb3NlKSB7CisgICAgICAgIHBjMS5jbG9zZSgpOworICAgICAgICBwYzIuY2xv
c2UoKTsKKyAgICB9CiB9CiAKIHByb21pc2VfdGVzdCgodGVzdCkgPT4gewotICAgIHJldHVybiBk
b1NGcmFtZVRlc3Qoc2V0SDI2NEJhc2VsaW5lQ29kZWMpOworICAgIHJldHVybiBkb1NGcmFtZVRl
c3Qoe2Nsb2NrUmF0ZTogOTAwMDAsIG1pbWVUeXBlOiAidmlkZW8vSDI2NCIsIHNkcEZtdHBMaW5l
OiAibGV2ZWwtYXN5bW1ldHJ5LWFsbG93ZWQ9MTtwYWNrZXRpemF0aW9uLW1vZGU9MTtwcm9maWxl
LWxldmVsLWlkPTQyZTAxZiJ9LCAiSDI2NCIsIHRydWUpOwogfSwgIlZpZGVvIGV4Y2hhbmdlIHdp
dGggU0ZyYW1lIC0gSDI2NCBiYXNlbGluZSIpOwogCiBwcm9taXNlX3Rlc3QoKHRlc3QpID0+IHsK
LSAgICByZXR1cm4gZG9TRnJhbWVUZXN0KHNldEgyNjRIaWdoQ29kZWMpOworICAgIHJldHVybiBk
b1NGcmFtZVRlc3Qoe2Nsb2NrUmF0ZTogOTAwMDAsIG1pbWVUeXBlOiAidmlkZW8vSDI2NCIsIHNk
cEZtdHBMaW5lOiAibGV2ZWwtYXN5bW1ldHJ5LWFsbG93ZWQ9MTtwYWNrZXRpemF0aW9uLW1vZGU9
MTtwcm9maWxlLWxldmVsLWlkPTY0MGMxZiJ9LCAiSDI2NCIsIHRydWUpOwogfSwgIlZpZGVvIGV4
Y2hhbmdlIHdpdGggU0ZyYW1lIC0gSDI2NCBoaWdoIik7CisKK3Byb21pc2VfdGVzdCgodGVzdCkg
PT4geworICAgIHJldHVybiBkb1NGcmFtZVRlc3Qoe21pbWVUeXBlOiAidmlkZW8vVlA4IiwgY2xv
Y2tSYXRlOiA5MDAwMH0sICJWUDgiLCBmYWxzZSk7Cit9LCAiVmlkZW8gZXhjaGFuZ2Ugd2l0aCBT
RnJhbWUgLSBWUDgiKTsKICAgICAgICAgPC9zY3JpcHQ+CiAgICAgPC9ib2R5PgogPC9odG1sPgo=
</data>
<flag name="commit-queue"
          id="433279"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>