<?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>203343</bug_id>
          
          <creation_ts>2019-10-23 15:24:48 -0700</creation_ts>
          <short_desc>[ANGLE] Improve compile-time macOS guards and avoid ObjC if possible</short_desc>
          <delta_ts>2019-10-23 16:38:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGL</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dean Jackson">dino</reporter>
          <assigned_to name="Dean Jackson">dino</assigned_to>
          <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>graouts</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1583086</commentid>
    <comment_count>0</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2019-10-23 15:24:48 -0700</bug_when>
    <thetext>[ANGLE] Improve compile-time macOS guards and avoid ObjC if possible</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583088</commentid>
    <comment_count>1</comment_count>
      <attachid>381740</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2019-10-23 15:28:44 -0700</bug_when>
    <thetext>Created attachment 381740
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583097</commentid>
    <comment_count>2</comment_count>
      <attachid>381742</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2019-10-23 15:38:07 -0700</bug_when>
    <thetext>Created attachment 381742
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583100</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-10-23 15:39:16 -0700</bug_when>
    <thetext>Note that there are important steps to take when updating ANGLE. See http://trac.webkit.org/wiki/UpdatingANGLE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583105</commentid>
    <comment_count>4</comment_count>
      <attachid>381744</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2019-10-23 15:44:35 -0700</bug_when>
    <thetext>Created attachment 381744
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583141</commentid>
    <comment_count>5</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2019-10-23 16:38:01 -0700</bug_when>
    <thetext>Committed r251510: &lt;https://trac.webkit.org/changeset/251510&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583142</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-23 16:38:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/56560444&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381740</attachid>
            <date>2019-10-23 15:28:44 -0700</date>
            <delta_ts>2019-10-23 15:38:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203343-20191024092842.patch</filename>
            <type>text/plain</type>
            <size>85257</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNDk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9DaGFuZ2VMb2cgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cKaW5k
ZXggODkyOGI0Zjg4ZmY0MWJjMDQ4M2VmZjRjYWMxMTQzNmMyZDM5MDRiMC4uMGRhMjY0MjhkMTg0
ZTU0NWNmM2EyNzA0NjIwM2ZlZTE5OTY1YTZlNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDI0IEBACisyMDE5LTEwLTIzICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxl
LmNvbT4KKworICAgICAgICBbQU5HTEVdIEltcHJvdmUgY29tcGlsZS10aW1lIG1hY09TIGd1YXJk
cyBhbmQgYXZvaWQgT2JqQyBpZiBwb3NzaWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzMzQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVXNlIHRoZSBtb3JlIG9mZmljaWFsIGNvbXBpbGUtdGltZSBk
ZXRlY3Rpb24gb2YgQXBwbGUgcGxhdGZvcm1zLCBzbyB0aGF0CisgICAgICAgIGl0IHdpbGwgYmUg
ZWFzaWVyIHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbiBtYWNPUyBhbmQgaU9TLiBBbHNvIG1vdmUg
c29tZQorICAgICAgICAubW0gZmlsZXMgdG8gLmNwcCB3aGVyZSBwb3NzaWJsZS4KKworICAgICAg
ICAqIEFOR0xFLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogc3JjL2dwdV9p
bmZvX3V0aWwvU3lzdGVtSW5mb19tYWMuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2dwdV9pbmZvX3V0aWwvU3lzdGVtSW5mb19tYWMubW0uCisgICAgICAgIChh
bmdsZTo6R2V0U3lzdGVtSW5mbyk6CisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2ds
L2NnbC9EZXZpY2VDR0wuY3BwOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9j
Z2wvRGlzcGxheUNHTC5tbToKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2ds
L0lPU3VyZmFjZVN1cmZhY2VDR0wuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9JT1N1cmZhY2VTdXJmYWNlQ0dMLm1t
LgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvUGJ1ZmZlclN1cmZhY2VD
R0wuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2dsL2NnbC9QYnVmZmVyU3VyZmFjZUNHTC5tbS4KKyAgICAgICAgKiBzcmMvbGli
QU5HTEUvcmVuZGVyZXIvZ2wvY2dsL1JlbmRlcmVyQ0dMLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvUmVuZGVyZXJD
R0wubW0uCisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9XaW5kb3dTdXJm
YWNlQ0dMLm1tOgorCiAyMDE5LTEwLTIzICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4K
IAogICAgICAgICBEb24ndCB0cnkgdG8gY29tcGlsZSAuaW5jIGZpbGVzIGluIEFOR0xFCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9BTkdMRS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvQU5HTEUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCAwMWE0YTVlZjdiYWM3MWEwOGRkNjY1ZGNiYmIxZTU3NGYwM2YwZGFjLi5i
MTFhZDU3MDExMDk3YzVjNzRlNThhNTYyNWVjMDYxYWU3MzI0OGY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9BTkdMRS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0FOR0xFLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTYwLDIwICs2MCwxNCBAQAogCQkzMTAxMkU4MDE4Qjk3QjlCMDAzOTA2MkYgLyogVmVyc2lv
bkdMU0wuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMx
MDEyRTExMThCOTdCOUIwMDM5MDYyRiAvKiBWZXJzaW9uR0xTTC5oICovOyB9OwogCQkzMTJCREIw
QzE1RkVDQUM5MDA5N0VCQzcgLyogQU5HTEUucGxpc3QgaW4gQ29weUZpbGVzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMkJEQjA5MTVGRUM5MUUwMDk3RUJDNyAvKiBBTkdM
RS5wbGlzdCAqLzsgfTsKIAkJMzEyQkRCMEUxNUZFQ0FFNTAwOTdFQkM3IC8qIExJQ0VOU0UgaW4g
Q29weUZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMkJEQjBBMTVG
RUNBM0EwMDk3RUJDNyAvKiBMSUNFTlNFICovOyB9OwotCQkzMTNCQ0UzNjIzNjBGNzhBMDBGQzM5
RTUgLyogV2luZG93U3VyZmFjZUVBR0wubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAzMTNCQ0UyODIzNjBGNzg5MDBGQzM5RTUgLyogV2luZG93U3VyZmFj
ZUVBR0wubW0gKi87IH07CiAJCTMxM0JDRTM3MjM2MEY3OEEwMEZDMzlFNSAvKiBXaW5kb3dTdXJm
YWNlRUFHTC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MzEzQkNFMjkyMzYwRjc4OTAwRkMzOUU1IC8qIFdpbmRvd1N1cmZhY2VFQUdMLmggKi87IH07Ci0J
CTMxM0JDRTM4MjM2MEY3OEEwMEZDMzlFNSAvKiBEaXNwbGF5RUFHTC5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxM0JDRTJBMjM2MEY3ODkwMEZDMzlF
NSAvKiBEaXNwbGF5RUFHTC5tbSAqLzsgfTsKLQkJMzEzQkNFMzkyMzYwRjc4QTAwRkMzOUU1IC8q
IERldmljZUVBR0wuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzEzQkNFMkIyMzYwRjc4OTAwRkMzOUU1IC8qIERldmljZUVBR0wuY3BwICovOyB9Owot
CQkzMTNCQ0UzQTIzNjBGNzhBMDBGQzM5RTUgLyogQ29udGV4dEVBR0wuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEzQkNFMkMyMzYwRjc4OTAwRkMz
OUU1IC8qIENvbnRleHRFQUdMLmNwcCAqLzsgfTsKIAkJMzEzQkNFM0IyMzYwRjc4QTAwRkMzOUU1
IC8qIERpc3BsYXlFQUdMLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzMTNCQ0UyRDIzNjBGNzg5MDBGQzM5RTUgLyogRGlzcGxheUVBR0wuaCAqLzsgfTsK
IAkJMzEzQkNFM0MyMzYwRjc4QTAwRkMzOUU1IC8qIFBidWZmZXJTdXJmYWNlRUFHTC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEzQkNFMkUyMzYwRjc4
OTAwRkMzOUU1IC8qIFBidWZmZXJTdXJmYWNlRUFHTC5oICovOyB9OwogCQkzMTNCQ0UzRDIzNjBG
NzhBMDBGQzM5RTUgLyogQ29udGV4dEVBR0wuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDMxM0JDRTJGMjM2MEY3ODkwMEZDMzlFNSAvKiBDb250ZXh0RUFH
TC5oICovOyB9OwogCQkzMTNCQ0UzRTIzNjBGNzhBMDBGQzM5RTUgLyogUmVuZGVyZXJFQUdMLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTNCQ0UzMDIz
NjBGNzg5MDBGQzM5RTUgLyogUmVuZGVyZXJFQUdMLmggKi87IH07Ci0JCTMxM0JDRTNGMjM2MEY3
OEEwMEZDMzlFNSAvKiBJT1N1cmZhY2VTdXJmYWNlRUFHTC5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxM0JDRTMxMjM2MEY3ODkwMEZDMzlFNSAvKiBJ
T1N1cmZhY2VTdXJmYWNlRUFHTC5tbSAqLzsgfTsKLQkJMzEzQkNFNDAyMzYwRjc4QTAwRkMzOUU1
IC8qIFJlbmRlcmVyRUFHTC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDMxM0JDRTMyMjM2MEY3ODkwMEZDMzlFNSAvKiBSZW5kZXJlckVBR0wubW0gKi87
IH07CiAJCTMxM0JDRTQxMjM2MEY3OEEwMEZDMzlFNSAvKiBJT1N1cmZhY2VTdXJmYWNlRUFHTC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEzQkNFMzMy
MzYwRjc4OTAwRkMzOUU1IC8qIElPU3VyZmFjZVN1cmZhY2VFQUdMLmggKi87IH07Ci0JCTMxM0JD
RTQyMjM2MEY3OEEwMEZDMzlFNSAvKiBQYnVmZmVyU3VyZmFjZUVBR0wubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTNCQ0UzNDIzNjBGNzg5MDBGQzM5
RTUgLyogUGJ1ZmZlclN1cmZhY2VFQUdMLm1tICovOyB9OwogCQkzMTNCQ0U0MzIzNjBGNzhBMDBG
QzM5RTUgLyogRGV2aWNlRUFHTC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzEzQkNFMzUyMzYwRjc4OTAwRkMzOUU1IC8qIERldmljZUVBR0wuaCAqLzsg
fTsKKwkJMzEzQkNFNDUyMzYwRjlBRDAwRkMzOUU1IC8qIFN5c3RlbUluZm9faW50ZXJuYWwuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxM0JDRTQ0MjM2
MEY5QUQwMEZDMzlFNSAvKiBTeXN0ZW1JbmZvX2ludGVybmFsLmggKi87IH07CiAJCTMxNUVCRDNG
MUZDRTQzQkQwMEFDN0E4OSAvKiB1bmlmb3JtX3R5cGVfaW5mb19hdXRvZ2VuLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNUVCRDNFMUZDRTQzQkQw
MEFDN0E4OSAvKiB1bmlmb3JtX3R5cGVfaW5mb19hdXRvZ2VuLmNwcCAqLzsgfTsKIAkJMzE1RUJE
NzgxRkNFNDQzNjAwQUM3QTg5IC8qIFRyYW5zbGF0b3JWdWxrYW4uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE1RUJENDAxRkNFNDQyNjAwQUM3QTg5
IC8qIFRyYW5zbGF0b3JWdWxrYW4uY3BwICovOyB9OwogCQkzMTVFQkQ3QjFGQ0U0NDM2MDBBQzdB
ODkgLyogVXRpbHNITFNMLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDMxNUVCRDQzMUZDRTQ0MjcwMEFDN0E4OSAvKiBVdGlsc0hMU0wuY3BwICovOyB9
OwpAQCAtNTM3LDExICs1MzEsMTEgQEAKIAkJNUNDRDU5NkMyMjg0Rjc5NjAwMThGMkQ4IC8qIE1l
bW9yeU9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNUNDRDU5NUUyMjg0Rjc5NjAwMThGMkQ4IC8qIE1lbW9yeU9iamVjdC5oICovOyB9OwogCQk1
Q0NENTk2RDIyODRGNzk2MDAxOEYyRDggLyogdmFsaWRhdGlvbkVTRVhULmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0NENTk1RjIyODRGNzk2MDAxOEYy
RDggLyogdmFsaWRhdGlvbkVTRVhULmggKi87IH07CiAJCTVDQ0Q1OTZFMjI4NEY5NTEwMDE4RjJE
OCAvKiBEaXNwbGF5Q0dMLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNUNCMzAxNEExREUzOUY0NzAwRDJDNDA1IC8qIERpc3BsYXlDR0wubW0gKi87IH07
Ci0JCTVDQ0Q1OTZGMjI4NEY5NTUwMDE4RjJEOCAvKiBQYnVmZmVyU3VyZmFjZUNHTC5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQjMwMTRDMURFMzlG
NDcwMEQyQzQwNSAvKiBQYnVmZmVyU3VyZmFjZUNHTC5tbSAqLzsgfTsKKwkJNUNDRDU5NkYyMjg0
Rjk1NTAwMThGMkQ4IC8qIFBidWZmZXJTdXJmYWNlQ0dMLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQjMwMTRDMURFMzlGNDcwMEQyQzQwNSAvKiBQ
YnVmZmVyU3VyZmFjZUNHTC5jcHAgKi87IH07CiAJCTVDQ0Q1OTc3MjI4NEZBODMwMDE4RjJEOCAv
KiBJT1N1cmZhY2VTdXJmYWNlQ0dMLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1Q0NENTk3MTIyODRGQTgyMDAxOEYyRDggLyogSU9TdXJmYWNlU3VyZmFj
ZUNHTC5oICovOyB9OwogCQk1Q0NENTk3ODIyODRGQTgzMDAxOEYyRDggLyogQ29udGV4dENHTC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0NENTk3
MjIyODRGQTgyMDAxOEYyRDggLyogQ29udGV4dENHTC5jcHAgKi87IH07Ci0JCTVDQ0Q1OTc5MjI4
NEZBODMwMDE4RjJEOCAvKiBJT1N1cmZhY2VTdXJmYWNlQ0dMLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDRDU5NzMyMjg0RkE4MjAwMThGMkQ4IC8q
IElPU3VyZmFjZVN1cmZhY2VDR0wubW0gKi87IH07Ci0JCTVDQ0Q1OTdBMjI4NEZBODMwMDE4RjJE
OCAvKiBSZW5kZXJlckNHTC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDVDQ0Q1OTc0MjI4NEZBODIwMDE4RjJEOCAvKiBSZW5kZXJlckNHTC5tbSAqLzsg
fTsKKwkJNUNDRDU5NzkyMjg0RkE4MzAwMThGMkQ4IC8qIElPU3VyZmFjZVN1cmZhY2VDR0wuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDRDU5NzMy
Mjg0RkE4MjAwMThGMkQ4IC8qIElPU3VyZmFjZVN1cmZhY2VDR0wuY3BwICovOyB9OworCQk1Q0NE
NTk3QTIyODRGQTgzMDAxOEYyRDggLyogUmVuZGVyZXJDR0wuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDRDU5NzQyMjg0RkE4MjAwMThGMkQ4IC8q
IFJlbmRlcmVyQ0dMLmNwcCAqLzsgfTsKIAkJNUNDRDU5N0IyMjg0RkE4MzAwMThGMkQ4IC8qIENv
bnRleHRDR0wuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDVDQ0Q1OTc1MjI4NEZBODIwMDE4RjJEOCAvKiBDb250ZXh0Q0dMLmggKi87IH07CiAJCTVDQ0Q1
OTdDMjI4NEZBODMwMDE4RjJEOCAvKiBSZW5kZXJlckNHTC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDRDU5NzYyMjg0RkE4MzAwMThGMkQ4IC8qIFJl
bmRlcmVyQ0dMLmggKi87IH07CiAJCTVDQ0Q1OTgwMjI4NEZCOTAwMDE4RjJEOCAvKiBRdWVyeUlt
cGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUND
RDU5N0QyMjg0RkI4RjAwMThGMkQ4IC8qIFF1ZXJ5SW1wbC5jcHAgKi87IH07CkBAIC01NTYsNyAr
NTUwLDcgQEAKIAkJNUNDRDU5OTMyMjg0RkM0MDAwMThGMkQ4IC8qIGltYWdlZm9ybWF0cy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDRDU5OEIyMjg0
RkM0MDAwMThGMkQ4IC8qIGltYWdlZm9ybWF0cy5oICovOyB9OwogCQk1Q0NENTk5NDIyODRGQzQw
MDAxOEYyRDggLyogZ2VuZXJhdGVtaXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDVDQ0Q1OThDMjI4NEZDNDAwMDE4RjJEOCAvKiBnZW5lcmF0ZW1pcC5o
ICovOyB9OwogCQk1Q0NENTk5NTIyODRGQzQwMDAxOEYyRDggLyogbG9hZGltYWdlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQ0Q1OThEMjI4NEZD
NDAwMDE4RjJEOCAvKiBsb2FkaW1hZ2UuY3BwICovOyB9OwotCQk1Q0NENTk5QTIyODRGQzc1MDAx
OEYyRDggLyogU3lzdGVtSW5mb19tYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1Q0NENTk5NzIyODRGQzc1MDAxOEYyRDggLyogU3lzdGVtSW5mb19t
YWMubW0gKi87IH07CisJCTVDQ0Q1OTlBMjI4NEZDNzUwMDE4RjJEOCAvKiBTeXN0ZW1JbmZvX21h
Yy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0NE
NTk5NzIyODRGQzc1MDAxOEYyRDggLyogU3lzdGVtSW5mb19tYWMuY3BwICovOyB9OwogCQk1Q0NE
NTk5QjIyODRGQzc1MDAxOEYyRDggLyogU3lzdGVtSW5mby5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0NENTk5ODIyODRGQzc1MDAxOEYyRDggLyog
U3lzdGVtSW5mby5jcHAgKi87IH07CiAJCTVDQ0Q1OTlDMjI4NEZDNzUwMDE4RjJEOCAvKiBTeXN0
ZW1JbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
Q0NENTk5OTIyODRGQzc1MDAxOEYyRDggLyogU3lzdGVtSW5mby5oICovOyB9OwogCQk1Q0NENTk5
RTIyODRGQ0RFMDAxOEYyRDggLyogQ29udGV4dF9nbGVzXzFfMC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0NENTk5RDIyODRGQ0REMDAxOEYyRDgg
LyogQ29udGV4dF9nbGVzXzFfMC5jcHAgKi87IH07CkBAIC04MjksNiArODIzLDcgQEAKIAkJMzEz
QkNFMzMyMzYwRjc4OTAwRkMzOUU1IC8qIElPU3VyZmFjZVN1cmZhY2VFQUdMLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElPU3VyZmFjZVN1cmZhY2VFQUdMLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxM0JDRTM0MjM2MEY3ODkwMEZDMzlFNSAvKiBQYnVmZmVy
U3VyZmFjZUVBR0wubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQ
YnVmZmVyU3VyZmFjZUVBR0wubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxM0JD
RTM1MjM2MEY3ODkwMEZDMzlFNSAvKiBEZXZpY2VFQUdMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERldmljZUVBR0wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MzEzQkNFNDQyMzYwRjlBRDAwRkMzOUU1IC8qIFN5c3RlbUluZm9faW50ZXJuYWwuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3lzdGVtSW5mb19pbnRlcm5hbC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkzMTVFQkQzRTFGQ0U0M0JEMDBBQzdBODkgLyogdW5pZm9y
bV90eXBlX2luZm9fYXV0b2dlbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSB1bmlmb3JtX3R5cGVfaW5mb19hdXRvZ2VuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMzE1RUJENDAxRkNFNDQyNjAwQUM3QTg5IC8qIFRyYW5zbGF0b3JWdWxrYW4uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVHJhbnNsYXRvclZ1bGthbi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxNUVCRDQzMUZDRTQ0MjcwMEFDN0E4
OSAvKiBVdGlsc0hMU0wuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
VXRpbHNITFNMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyMjQsNyArMTIx
OSw3IEBACiAJCTVDQjMwMTQ5MURFMzlGNDcwMEQyQzQwNSAvKiBEaXNwbGF5Q0dMLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlDR0wuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNUNCMzAxNEExREUzOUY0NzAwRDJDNDA1IC8qIERpc3BsYXlDR0wubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEaXNwbGF5Q0dMLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0IzMDE0QjFERTM5RjQ3MDBEMkM0MDUgLyog
UGJ1ZmZlclN1cmZhY2VDR0wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGJ1
ZmZlclN1cmZhY2VDR0wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUNCMzAxNEMx
REUzOUY0NzAwRDJDNDA1IC8qIFBidWZmZXJTdXJmYWNlQ0dMLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGJ1ZmZlclN1cmZhY2VDR0wubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTVDQjMwMTRDMURFMzlGNDcwMEQyQzQwNSAvKiBQYnVmZmVyU3Vy
ZmFjZUNHTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYnVmZmVy
U3VyZmFjZUNHTC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQjMwNDhCMURF
NDE0MzUwMEQyQzQwNSAvKiBDb3JlR3JhcGhpY3MuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUg
PSBDb3JlR3JhcGhpY3MuZnJhbWV3b3JrOyBwYXRoID0gU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gU0RLUk9PVDsgfTsKIAkJNUNC
MzA0OEQxREU0MTQ0NDAwRDJDNDA1IC8qIE9wZW5HTC5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFt
ZSA9IE9wZW5HTC5mcmFtZXdvcms7IHBhdGggPSBTeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL09w
ZW5HTC5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBTREtST09UOyB9OwogCQk1Q0IzMDQ4RjFERTQx
NDU1MDBEMkM0MDUgLyogUXVhcnR6Q29yZS5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IFF1
YXJ0ekNvcmUuZnJhbWV3b3JrOyBwYXRoID0gU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RdWFy
dHpDb3JlLmZyYW1ld29yazsgc291cmNlVHJlZSA9IFNES1JPT1Q7IH07CkBAIC0xMjk3LDggKzEy
OTIsOCBAQAogCQk1Q0NENTk1RjIyODRGNzk2MDAxOEYyRDggLyogdmFsaWRhdGlvbkVTRVhULmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IHZhbGlkYXRpb25FU0VYVC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0NENTk3MTIyODRGQTgyMDAxOEYyRDggLyogSU9T
dXJmYWNlU3VyZmFjZUNHTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJT1N1
cmZhY2VTdXJmYWNlQ0dMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQ0Q1OTcy
MjI4NEZBODIwMDE4RjJEOCAvKiBDb250ZXh0Q0dMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IENvbnRleHRDR0wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk1Q0NENTk3MzIyODRGQTgyMDAxOEYyRDggLyogSU9TdXJmYWNlU3VyZmFjZUNHTC5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IElPU3VyZmFjZVN1cmZhY2VD
R0wubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTVDQ0Q1OTc0MjI4NEZBODIwMDE4
RjJEOCAvKiBSZW5kZXJlckNHTC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFJlbmRlcmVyQ0dMLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0NE
NTk3MzIyODRGQTgyMDAxOEYyRDggLyogSU9TdXJmYWNlU3VyZmFjZUNHTC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJT1N1cmZhY2VTdXJmYWNlQ0dMLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNDRDU5NzQyMjg0RkE4MjAwMThGMkQ4IC8qIFJl
bmRlcmVyQ0dMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRl
cmVyQ0dMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNDRDU5NzUyMjg0RkE4
MjAwMThGMkQ4IC8qIENvbnRleHRDR0wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ29udGV4dENHTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0NENTk3NjIy
ODRGQTgzMDAxOEYyRDggLyogUmVuZGVyZXJDR0wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVuZGVyZXJDR0wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUND
RDU5N0QyMjg0RkI4RjAwMThGMkQ4IC8qIFF1ZXJ5SW1wbC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBRdWVyeUltcGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTMxMyw3ICsxMzA4LDcgQEAKIAkJNUNDRDU5OEIyMjg0RkM0MDAwMThGMkQ4IC8q
IGltYWdlZm9ybWF0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBpbWFnZWZv
cm1hdHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNDRDU5OEMyMjg0RkM0MDAw
MThGMkQ4IC8qIGdlbmVyYXRlbWlwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IGdlbmVyYXRlbWlwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQ0Q1OThEMjI4
NEZDNDAwMDE4RjJEOCAvKiBsb2FkaW1hZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gbG9hZGltYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
NUNDRDU5OTcyMjg0RkM3NTAwMThGMkQ4IC8qIFN5c3RlbUluZm9fbWFjLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU3lzdGVtSW5mb19tYWMubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQ0Q1OTk3MjI4NEZDNzUwMDE4RjJEOCAvKiBTeXN0ZW1J
bmZvX21hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTeXN0ZW1J
bmZvX21hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQ0Q1OTk4MjI4NEZD
NzUwMDE4RjJEOCAvKiBTeXN0ZW1JbmZvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFN5c3RlbUluZm8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
Q0NENTk5OTIyODRGQzc1MDAxOEYyRDggLyogU3lzdGVtSW5mby5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTeXN0ZW1JbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTVDQ0Q1OTlEMjI4NEZDREQwMDE4RjJEOCAvKiBDb250ZXh0X2dsZXNfMV8wLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbnRleHRfZ2xlc18xXzAuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY1NCwyMCArMTY0OSwyMCBAQAogCQkzMTNC
Q0UyNzIzNjBGNzg5MDBGQzM5RTUgLyogZWFnbCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCi0JCQkJMzEzQkNFMjgyMzYwRjc4OTAwRkMzOUU1IC8qIFdpbmRvd1N1
cmZhY2VFQUdMLm1tICovLAotCQkJCTMxM0JDRTI5MjM2MEY3ODkwMEZDMzlFNSAvKiBXaW5kb3dT
dXJmYWNlRUFHTC5oICovLAotCQkJCTMxM0JDRTJBMjM2MEY3ODkwMEZDMzlFNSAvKiBEaXNwbGF5
RUFHTC5tbSAqLywKLQkJCQkzMTNCQ0UyQjIzNjBGNzg5MDBGQzM5RTUgLyogRGV2aWNlRUFHTC5j
cHAgKi8sCiAJCQkJMzEzQkNFMkMyMzYwRjc4OTAwRkMzOUU1IC8qIENvbnRleHRFQUdMLmNwcCAq
LywKKwkJCQkzMTNCQ0UyRjIzNjBGNzg5MDBGQzM5RTUgLyogQ29udGV4dEVBR0wuaCAqLywKKwkJ
CQkzMTNCQ0UyQjIzNjBGNzg5MDBGQzM5RTUgLyogRGV2aWNlRUFHTC5jcHAgKi8sCisJCQkJMzEz
QkNFMzUyMzYwRjc4OTAwRkMzOUU1IC8qIERldmljZUVBR0wuaCAqLywKIAkJCQkzMTNCQ0UyRDIz
NjBGNzg5MDBGQzM5RTUgLyogRGlzcGxheUVBR0wuaCAqLywKKwkJCQkzMTNCQ0UyQTIzNjBGNzg5
MDBGQzM5RTUgLyogRGlzcGxheUVBR0wubW0gKi8sCisJCQkJMzEzQkNFMzMyMzYwRjc4OTAwRkMz
OUU1IC8qIElPU3VyZmFjZVN1cmZhY2VFQUdMLmggKi8sCisJCQkJMzEzQkNFMzEyMzYwRjc4OTAw
RkMzOUU1IC8qIElPU3VyZmFjZVN1cmZhY2VFQUdMLm1tICovLAogCQkJCTMxM0JDRTJFMjM2MEY3
ODkwMEZDMzlFNSAvKiBQYnVmZmVyU3VyZmFjZUVBR0wuaCAqLywKLQkJCQkzMTNCQ0UyRjIzNjBG
Nzg5MDBGQzM5RTUgLyogQ29udGV4dEVBR0wuaCAqLywKKwkJCQkzMTNCQ0UzNDIzNjBGNzg5MDBG
QzM5RTUgLyogUGJ1ZmZlclN1cmZhY2VFQUdMLm1tICovLAogCQkJCTMxM0JDRTMwMjM2MEY3ODkw
MEZDMzlFNSAvKiBSZW5kZXJlckVBR0wuaCAqLywKLQkJCQkzMTNCQ0UzMTIzNjBGNzg5MDBGQzM5
RTUgLyogSU9TdXJmYWNlU3VyZmFjZUVBR0wubW0gKi8sCiAJCQkJMzEzQkNFMzIyMzYwRjc4OTAw
RkMzOUU1IC8qIFJlbmRlcmVyRUFHTC5tbSAqLywKLQkJCQkzMTNCQ0UzMzIzNjBGNzg5MDBGQzM5
RTUgLyogSU9TdXJmYWNlU3VyZmFjZUVBR0wuaCAqLywKLQkJCQkzMTNCQ0UzNDIzNjBGNzg5MDBG
QzM5RTUgLyogUGJ1ZmZlclN1cmZhY2VFQUdMLm1tICovLAotCQkJCTMxM0JDRTM1MjM2MEY3ODkw
MEZDMzlFNSAvKiBEZXZpY2VFQUdMLmggKi8sCisJCQkJMzEzQkNFMjkyMzYwRjc4OTAwRkMzOUU1
IC8qIFdpbmRvd1N1cmZhY2VFQUdMLmggKi8sCisJCQkJMzEzQkNFMjgyMzYwRjc4OTAwRkMzOUU1
IC8qIFdpbmRvd1N1cmZhY2VFQUdMLm1tICovLAogCQkJKTsKIAkJCXBhdGggPSBlYWdsOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTIwODgsOCArMjA4Myw4IEBACiAJCTVDQjMwMERG
MURFMzlGMDMwMEQyQzQwNSAvKiBnbCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCi0JCQkJMzEzQkNFMjcyMzYwRjc4OTAwRkMzOUU1IC8qIGVhZ2wgKi8sCiAJCQkJ
NUNCMzAxNDgxREUzOUYzNjAwRDJDNDA1IC8qIGNnbCAqLywKKwkJCQkzMTNCQ0UyNzIzNjBGNzg5
MDBGQzM5RTUgLyogZWFnbCAqLywKIAkJCQk1Q0IzMDBFMDFERTM5RjFBMDBEMkM0MDUgLyogQmxp
dEdMLmNwcCAqLywKIAkJCQk1Q0IzMDBFMTFERTM5RjFBMDBEMkM0MDUgLyogQmxpdEdMLmggKi8s
CiAJCQkJNUNCMzAwRTIxREUzOUYxQTAwRDJDNDA1IC8qIEJ1ZmZlckdMLmNwcCAqLywKQEAgLTIx
NjYsMTIgKzIxNjEsMTIgQEAKIAkJCQk2RTMxQTBBMjIzNEVFRUQ0MDBDODQ3ODQgLyogRGV2aWNl
Q0dMLmggKi8sCiAJCQkJNUNCMzAxNDkxREUzOUY0NzAwRDJDNDA1IC8qIERpc3BsYXlDR0wuaCAq
LywKIAkJCQk1Q0IzMDE0QTFERTM5RjQ3MDBEMkM0MDUgLyogRGlzcGxheUNHTC5tbSAqLywKKwkJ
CQk1Q0NENTk3MzIyODRGQTgyMDAxOEYyRDggLyogSU9TdXJmYWNlU3VyZmFjZUNHTC5jcHAgKi8s
CiAJCQkJNUNDRDU5NzEyMjg0RkE4MjAwMThGMkQ4IC8qIElPU3VyZmFjZVN1cmZhY2VDR0wuaCAq
LywKLQkJCQk1Q0NENTk3MzIyODRGQTgyMDAxOEYyRDggLyogSU9TdXJmYWNlU3VyZmFjZUNHTC5t
bSAqLywKKwkJCQk1Q0IzMDE0QzFERTM5RjQ3MDBEMkM0MDUgLyogUGJ1ZmZlclN1cmZhY2VDR0wu
Y3BwICovLAogCQkJCTVDQjMwMTRCMURFMzlGNDcwMEQyQzQwNSAvKiBQYnVmZmVyU3VyZmFjZUNH
TC5oICovLAotCQkJCTVDQjMwMTRDMURFMzlGNDcwMEQyQzQwNSAvKiBQYnVmZmVyU3VyZmFjZUNH
TC5tbSAqLywKKwkJCQk1Q0NENTk3NDIyODRGQTgyMDAxOEYyRDggLyogUmVuZGVyZXJDR0wuY3Bw
ICovLAogCQkJCTVDQ0Q1OTc2MjI4NEZBODMwMDE4RjJEOCAvKiBSZW5kZXJlckNHTC5oICovLAot
CQkJCTVDQ0Q1OTc0MjI4NEZBODIwMDE4RjJEOCAvKiBSZW5kZXJlckNHTC5tbSAqLywKIAkJCQlB
MzFCNjE4MTIzMEI3NDdFMDAxNjEwRDcgLyogV2luZG93U3VyZmFjZUNHTC5oICovLAogCQkJCUEz
MUI2MTgyMjMwQjc0N0YwMDE2MTBENyAvKiBXaW5kb3dTdXJmYWNlQ0dMLm1tICovLAogCQkJKTsK
QEAgLTIzODIsNyArMjM3Nyw4IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQk1Q0NENTk5ODIyODRG
Qzc1MDAxOEYyRDggLyogU3lzdGVtSW5mby5jcHAgKi8sCiAJCQkJNUNDRDU5OTkyMjg0RkM3NTAw
MThGMkQ4IC8qIFN5c3RlbUluZm8uaCAqLywKLQkJCQk1Q0NENTk5NzIyODRGQzc1MDAxOEYyRDgg
LyogU3lzdGVtSW5mb19tYWMubW0gKi8sCisJCQkJMzEzQkNFNDQyMzYwRjlBRDAwRkMzOUU1IC8q
IFN5c3RlbUluZm9faW50ZXJuYWwuaCAqLywKKwkJCQk1Q0NENTk5NzIyODRGQzc1MDAxOEYyRDgg
LyogU3lzdGVtSW5mb19tYWMuY3BwICovLAogCQkJKTsKIAkJCW5hbWUgPSBncHVpbmZvdXRpbDsK
IAkJCXBhdGggPSBncHVfaW5mb191dGlsOwpAQCAtMjU2Myw3ICsyNTU5LDYgQEAKIAkJCQk1Q0NE
NTk2ODIyODRGNzk2MDAxOEYyRDggLyogQmxvYkNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
QzFEQkMyNTFCMDQzNzVGMDAyMzU1NTIgLyogYmxvY2tsYXlvdXQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTVDMURCQzI3MUIwNDM3NUYwMDIzNTU1MiAvKiBibG9ja2xheW91dEhMU0wuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTMxM0JDRTNDMjM2MEY3OEEwMEZDMzlFNSAvKiBQYnVmZmVyU3VyZmFjZUVB
R0wuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDNTVENjU0MjI4MjZCOUYwMEI1QkEyQyAvKiBCcmVh
a1ZhcmlhYmxlQWxpYXNpbmdJbklubmVyTG9vcHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDMURC
REQ5MUIwNDM4RDMwMDIzNTU1MiAvKiBCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDQjMw
MTE5MURFMzlGMUEwMEQyQzQwNSAvKiBCdWZmZXJHTC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTky
LDYgKzI1ODcsNyBAQAogCQkJCTVDMURCREUzMUIwNDM4RDMwMDIzNTU1MiAvKiBDb250ZXh0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBMzAzMDcyNzIzMDVGN0M0MDAyREE5NzIgLyogQ29udGV4dC5p
bmwuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDQ0Q1OTdCMjI4NEZBODMwMDE4RjJEOCAvKiBDb250
ZXh0Q0dMLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMTNCQ0UzRDIzNjBGNzhBMDBGQzM5RTUgLyog
Q29udGV4dEVBR0wuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDQjMwMTFEMURFMzlGMUEwMEQyQzQw
NSAvKiBDb250ZXh0R0wuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDQjMwNERFMURFNDE2NDgwMEQy
QzQwNSAvKiBDb250ZXh0SW1wbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNDRDU5OEUyMjg0RkM0
MDAwMThGMkQ4IC8qIGNvcHlpbWFnZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjAyLDYgKzI1OTgs
NyBAQAogCQkJCTVDNTVENjg5MjI4MjZCOUYwMEI1QkEyQyAvKiBEZWZlckdsb2JhbEluaXRpYWxp
emVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMxREJERTcxQjA0MzhEMzAwMjM1NTUyIC8qIERl
dmljZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkUzMUEwQTQyMzRFRUVENDAwQzg0Nzg0IC8qIERl
dmljZUNHTC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzEzQkNFNDMyMzYwRjc4QTAwRkMzOUU1IC8q
IERldmljZUVBR0wuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDQjMwNEUwMURFNDE2NDgwMEQyQzQw
NSAvKiBEZXZpY2VJbXBsLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTAxMkUyNzE4Qjk3QjlCMDAz
OTA2MkYgLyogRGlhZ25vc3RpY3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUEyNjRGOEFEMTY5NzRE
RUQwMDZGQUE1QSAvKiBEaWFnbm9zdGljc0Jhc2UuaCBpbiBIZWFkZXJzICovLApAQCAtMjYxMSw2
ICsyNjA4LDcgQEAKIAkJCQkzMTVFQkRCQzFGQ0U0NEJGMDBBQzdBODkgLyogRGlzcGF0Y2hUYWJs
ZUdMX2F1dG9nZW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTVDMURCREU5MUIwNDM4RDMwMDIzNTU1
MiAvKiBEaXNwbGF5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0IzMDE0RjFERTM5RjQ3MDBEMkM0
MDUgLyogRGlzcGxheUNHTC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzEzQkNFM0IyMzYwRjc4QTAw
RkMzOUU1IC8qIERpc3BsYXlFQUdMLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0IzMDExRjFERTM5
RjFBMDBEMkM0MDUgLyogRGlzcGxheUdMLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0IzMDRFMjFE
RTQxNjQ4MDBEMkM0MDUgLyogRGlzcGxheUltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxNUVC
REM5MUZDRTQ0RTQwMEFDN0E4OSAvKiBkcml2ZXJfdXRpbHMuaCBpbiBIZWFkZXJzICovLApAQCAt
MjYxOSw3ICsyNjE3LDYgQEAKIAkJCQk2RUUyRkQyRDIyQkFFOTlDMDAxRDM2OUUgLyogZWdsZXh0
X2FuZ2xlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0IzMDRFMzFERTQxNjQ4MDBEMkM0MDUgLyog
RUdMSW1wbEZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDMUJBQUFDMURGQjYxMjQwMDI5
MDZCQiAvKiBlZ2xwbGF0Zm9ybS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzEzQkNFMzcyMzYwRjc4
QTAwRkMzOUU1IC8qIFdpbmRvd1N1cmZhY2VFQUdMLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0NE
NTk2NzIyODRGNzk2MDAxOEYyRDggLyogRUdMU3luYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM1
NUQ2NkEyMjgyNkI5RjAwQjVCQTJDIC8qIEVtdWxhdGVHTEZyYWdDb2xvckJyb2FkY2FzdC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTMwMzA2RjcyMzA1RjVFRTAwMkRBOTcyIC8qIEVtdWxhdGVNdWx0
aURyYXdTaGFkZXJCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjQ5LDcgKzI2NDYsNiBA
QAogCQkJCUEzMDMwNzA0MjMwNUY2MzYwMDJEQTk3MiAvKiBGaW5kRnVuY3Rpb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTVDNTVENkZGMjI4MjZDQjMwMEI1QkEyQyAvKiBGaW5kTWFpbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNUM1NUQ2RkIyMjgyNkNCMzAwQjVCQTJDIC8qIEZpbmRTeW1ib2xOb2Rl
LmggaW4gSGVhZGVycyAqLywKLQkJCQkzMTNCQ0UzRDIzNjBGNzhBMDBGQzM5RTUgLyogQ29udGV4
dEVBR0wuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDNTVENzI4MjI4Mjc0NzcwMEI1QkEyQyAvKiBG
aXhlZFZlY3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM5RkZGNEYxOTEwMkEwMDAwMjVCOEZB
IC8qIEZsYWdTdGQxNDBTdHJ1Y3RzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzU1RDZBNDIyODI2
QjlGMDBCNUJBMkMgLyogRm9sZEV4cHJlc3Npb25zLmggaW4gSGVhZGVycyAqLywKQEAgLTI3MDMs
MTYgKzI2OTksMTUgQEAKIAkJCQkzMTAxMkUzNTE4Qjk3QjlCMDAzOTA2MkYgLyogSW5mb1Npbmsu
aCBpbiBIZWFkZXJzICovLAogCQkJCTMxMDEyRTM3MThCOTdCOUIwMDM5MDYyRiAvKiBJbml0aWFs
aXplLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTAxMkUzOTE4Qjk3QjlCMDAzOTA2MkYgLyogSW5p
dGlhbGl6ZURsbC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzEzQkNFM0UyMzYwRjc4QTAwRkMzOUU1
IC8qIFJlbmRlcmVyRUFHTC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzEwMTJFM0ExOEI5N0I5QjAw
MzkwNjJGIC8qIEluaXRpYWxpemVHbG9iYWxzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzU1RDY3
QjIyODI2QjlGMDBCNUJBMkMgLyogSW5pdGlhbGl6ZVZhcmlhYmxlcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTI2NEY4QjUxNjk3NERFRDAwNkZBQTVBIC8qIElucHV0LmggaW4gSGVhZGVycyAqLywK
IAkJCQk1QzFEQkMzMTFCMDQzNzVGMDAyMzU1NTIgLyogSW50ZXJtTm9kZS5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJMzEzQkNFM0IyMzYwRjc4QTAwRkMzOUU1IC8qIERpc3BsYXlFQUdMLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1QzU1RDZGRTIyODI2Q0IzMDBCNUJBMkMgLyogSW50ZXJtTm9kZV91dGls
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzU1RDcwODIyODI2Q0IzMDBCNUJBMkMgLyogSW50ZXJt
Tm9kZVBhdHRlcm5NYXRjaGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzU1RDcwMTIyODI2Q0Iz
MDBCNUJBMkMgLyogSW50ZXJtVHJhdmVyc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDQ0Q1OTc3
MjI4NEZBODMwMDE4RjJEOCAvKiBJT1N1cmZhY2VTdXJmYWNlQ0dMLmggaW4gSGVhZGVycyAqLywK
KwkJCQkzMTNCQ0U0MTIzNjBGNzhBMDBGQzM5RTUgLyogSU9TdXJmYWNlU3VyZmFjZUVBR0wuaCBp
biBIZWFkZXJzICovLAogCQkJCTMxNUVCRDhFMUZDRTQ0MzYwMEFDN0E4OSAvKiBJc0FTVERlcHRo
QmVsb3dMaW1pdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTI2NEY4Q0QxNjk3NjJBQTAwNkZBQTVB
IC8qIGtocnBsYXRmb3JtLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzFEQkMzMjFCMDQzNzVGMDAy
MzU1NTIgLyogbGVuZ3RoX2xpbWl0cy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzUzLDYgKzI3NDgs
NyBAQAogCQkJCTVDQjMwMTJFMURFMzlGMUEwMEQyQzQwNSAvKiBQYXRoR0wuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTVDQjMwNEYxMURFNDE2NDgwMEQyQzQwNSAvKiBQYXRoSW1wbC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNUNCMzAxNTExREUzOUY0NzAwRDJDNDA1IC8qIFBidWZmZXJTdXJmYWNlQ0dM
LmggaW4gSGVhZGVycyAqLywKKwkJCQkzMTNCQ0UzQzIzNjBGNzhBMDBGQzM5RTUgLyogUGJ1ZmZl
clN1cmZhY2VFQUdMLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzFEQkJGNTFCMDQzNkVDMDAyMzU1
NTIgLyogcGxhdGZvcm0uaCBpbiBIZWFkZXJzICovLAogCQkJCTMxNUVCRTI5MUZDRjgwOEMwMEFD
N0E4OSAvKiBQTXVySGFzaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM1NUQ3MjcyMjgyNzQ3NzAw
QjVCQTJDIC8qIFBvb2xBbGxvYy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzg4LDEwICsyNzg0LDEw
IEBACiAJCQkJNUMxREJFMDgxQjA0MzhEMzAwMjM1NTUyIC8qIFJlbmRlcmJ1ZmZlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNUNCMzAxMzQxREUzOUYxQTAwRDJDNDA1IC8qIFJlbmRlcmJ1ZmZlckdM
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0IzMDRGNjFERTQxNjQ4MDBEMkM0MDUgLyogUmVuZGVy
YnVmZmVySW1wbC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzEzQkNFNDMyMzYwRjc4QTAwRkMzOUU1
IC8qIERldmljZUVBR0wuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDQjMwNEY1MURFNDE2NDgwMEQy
QzQwNSAvKiBSZW5kZXJidWZmZXJJbXBsX21vY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTVDQjMw
NEY4MURFNDE2NDgwMEQyQzQwNSAvKiByZW5kZXJlcl91dGlscy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNUNDRDU5N0MyMjg0RkE4MzAwMThGMkQ4IC8qIFJlbmRlcmVyQ0dMLmggaW4gSGVhZGVycyAq
LywKKwkJCQkzMTNCQ0UzRTIzNjBGNzhBMDBGQzM5RTUgLyogUmVuZGVyZXJFQUdMLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1Q0IzMDEzODFERTM5RjFBMDBEMkM0MDUgLyogUmVuZGVyZXJHTC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNUNCMzAxMzYxREUzOUYxQTAwRDJDNDA1IC8qIHJlbmRlcmVyZ2xf
dXRpbHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUEzMDMwNzA3MjMwNUY2MzYwMDJEQTk3MiAvKiBS
ZXBsYWNlU2hhZG93aW5nVmFyaWFibGVzLmggaW4gSGVhZGVycyAqLywKQEAgLTI4NTYsNiArMjg1
Miw3IEBACiAJCQkJMzFBMzMxQzcxRUE1RUQ1RjAwRkQyMjAzIC8qIHN5c3RlbV91dGlscy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNUM1NUQ3MkIyMjgyNzQ3NzAwQjVCQTJDIC8qIHN5c3RlbV91dGls
c191bml0dGVzdF9oZWxwZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDQ0Q1OTlDMjI4NEZDNzUw
MDE4RjJEOCAvKiBTeXN0ZW1JbmZvLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMTNCQ0U0NTIzNjBG
OUFEMDBGQzM5RTUgLyogU3lzdGVtSW5mb19pbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NUMxREJGMzExQjA0MzhEMzAwMjM1NTUyIC8qIFRleHR1cmUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTMxNUVCRDlFMUZDRTQ0MzYwMEFDN0E4OSAvKiBUZXh0dXJlRnVuY3Rpb25ITFNMLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1Q0IzMDE0MjFERTM5RjFBMDBEMkM0MDUgLyogVGV4dHVyZUdMLmggaW4g
SGVhZGVycyAqLywKQEAgLTI4ODMsNyArMjg4MCw2IEBACiAJCQkJNUNDN0Q0N0ExOTEwMjYyMTAw
MEI4QzFGIC8qIHV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE1RUJEOTMxRkNFNDQz
NjAwQUM3QTg5IC8qIFV0aWxzSExTTC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM1NUQ2RTEyMjgy
NkM3OTAwQjVCQTJDIC8qIFZhbGlkYXRlQVNULmggaW4gSGVhZGVycyAqLywKLQkJCQkzMTNCQ0U0
MTIzNjBGNzhBMDBGQzM5RTUgLyogSU9TdXJmYWNlU3VyZmFjZUVBR0wuaCBpbiBIZWFkZXJzICov
LAogCQkJCTVDMzE1RDExMUNDNUI2REEwMDc3NjY5NyAvKiBWYWxpZGF0ZUdsb2JhbEluaXRpYWxp
emVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTAxMkU3QTE4Qjk3QjlCMDAzOTA2MkYgLyogVmFs
aWRhdGVMaW1pdGF0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMzMTVEMTMxQ0M1QjZEQTAw
Nzc2Njk3IC8qIFZhbGlkYXRlTWF4UGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTM0
LDYgKzI5MzAsNyBAQAogCQkJCTVDMURCRjQyMUIwNDM4RDMwMDIzNTU1MiAvKiBWZXJ0ZXhBdHRy
aWJ1dGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDNTVENzAwMjI4MjZDQjMwMEI1QkEyQyAvKiBW
aXNpdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTMxQjYxODMyMzBCNzQ3RjAwMTYxMEQ3IC8qIFdp
bmRvd1N1cmZhY2VDR0wuaCBpbiBIZWFkZXJzICovLAorCQkJCTMxM0JDRTM3MjM2MEY3OEEwMEZD
MzlFNSAvKiBXaW5kb3dTdXJmYWNlRUFHTC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE1RUJERkEx
RkNFNDUyRDAwQUM3QTg5IC8qIFdvcmtlclRocmVhZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM1
NUQ2NzUyMjgyNkI5RjAwQjVCQTJDIC8qIFdyYXBTd2l0Y2hTdGF0ZW1lbnRzSW5CbG9ja3MuaCBp
biBIZWFkZXJzICovLAogCQkJCTVDQ0Q1OTUxMjI4NEVDRDEwMDE4RjJEOCAvKiB4eGhhc2guaCBp
biBIZWFkZXJzICovLApAQCAtMzAzMiwxMCArMzAyOSw4IEBACiAJCQkJNUMxREJDMjQxQjA0Mzc1
RjAwMjM1NTUyIC8qIGJsb2NrbGF5b3V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDMURCQzI2
MUIwNDM3NUYwMDIzNTU1MiAvKiBibG9ja2xheW91dEhMU0wuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNUM1NUQ2QUIyMjgyNkJDODAwQjVCQTJDIC8qIEJyZWFrVmFyaWFibGVBbGlhc2luZ0luSW5u
ZXJMb29wcy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkzMTNCQ0UzNjIzNjBGNzhBMDBGQzM5RTUg
LyogV2luZG93U3VyZmFjZUVBR0wubW0gaW4gU291cmNlcyAqLywKIAkJCQk1QzFEQkREODFCMDQz
OEQzMDAyMzU1NTIgLyogQnVmZmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDQjMwMTE4MURF
MzlGMUEwMEQyQzQwNSAvKiBCdWZmZXJHTC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkzMTNCQ0U0
MjIzNjBGNzhBMDBGQzM5RTUgLyogUGJ1ZmZlclN1cmZhY2VFQUdMLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJMzEwMTJFMTMxOEI5N0I5QjAwMzkwNjJGIC8qIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9y
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDMURCQzI4MUIwNDM3NUYwMDIzNTU1MiAvKiBCdWls
dEluRnVuY3Rpb25FbXVsYXRvckdMU0wuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE1RUJEODQx
RkNFNDQzNjAwQUM3QTg5IC8qIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9ySExTTC5jcHAgaW4gU291
cmNlcyAqLywKQEAgLTMwNTUsNyArMzA1MCw2IEBACiAJCQkJNUMxREJERTIxQjA0MzhEMzAwMjM1
NTUyIC8qIENvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTMwMzA3MjQyMzA1RjdDNDAw
MkRBOTcyIC8qIENvbnRleHRfZ2wuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNDRDU5OUUyMjg0
RkNERTAwMThGMkQ4IC8qIENvbnRleHRfZ2xlc18xXzAuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJ
MzEzQkNFM0YyMzYwRjc4QTAwRkMzOUU1IC8qIElPU3VyZmFjZVN1cmZhY2VFQUdMLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJNUNDRDU5NzgyMjg0RkE4MzAwMThGMkQ4IC8qIENvbnRleHRDR0wuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNUNCMzAxMUMxREUzOUYxQTAwRDJDNDA1IC8qIENvbnRleHRH
TC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1Q0IzMDRERDFERTQxNjQ4MDBEMkM0MDUgLyogQ29u
dGV4dEltcGwuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMTQ0LDcgKzMxMzgsNyBAQAogCQkJCTVD
NTVENzA5MjI4MjZDQjMwMEI1QkEyQyAvKiBJbnRlcm1Ob2RlX3V0aWwuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNUM1NUQ3MDQyMjgyNkNCMzAwQjVCQTJDIC8qIEludGVybU5vZGVQYXR0ZXJuTWF0
Y2hlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzU1RDcwMjIyODI2Q0IzMDBCNUJBMkMgLyog
SW50ZXJtVHJhdmVyc2UuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNUNDRDU5NzkyMjg0RkE4MzAw
MThGMkQ4IC8qIElPU3VyZmFjZVN1cmZhY2VDR0wubW0gaW4gU291cmNlcyAqLywKKwkJCQk1Q0NE
NTk3OTIyODRGQTgzMDAxOEYyRDggLyogSU9TdXJmYWNlU3VyZmFjZUNHTC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkzMTVFQkQ5QzFGQ0U0NDM2MDBBQzdBODkgLyogSXNBU1REZXB0aEJlbG93TGlt
aXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTI2NEY4QjYxNjk3NERFRDAwNkZBQTVBIC8qIExl
eGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDQjMwNEVGMURFNDE2NDgwMEQyQzQwNSAvKiBs
b2FkX2Z1bmN0aW9uc190YWJsZV9hdXRvZ2VuLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzE1Myw3
ICszMTQ3LDYgQEAKIAkJCQkzMTVFQkRFODFGQ0U0NTJEMDBBQzdBODkgLyogTG9nZ2luZ0Fubm90
YXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMjY0RjhCODE2OTc0REVEMDA2RkFBNUEgLyog
TWFjcm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTI2NEY4QkExNjk3NERFRDAwNkZBQTVBIC8q
IE1hY3JvRXhwYW5kZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMzEzQkNFM0EyMzYwRjc4QTAw
RkMzOUU1IC8qIENvbnRleHRFQUdMLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDQzdENDcyMTkx
MDI2MjEwMDBCOEMxRiAvKiBtYXRodXRpbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzU1RDcy
NTIyODI3NDc3MDBCNUJBMkMgLyogbWF0cml4X3V0aWxzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTVDMURCQkYxMUIwNDM2RUMwMDIzNTU1MiAvKiBNZW1vcnlCdWZmZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCkBAIC0zMTc1LDEyICszMTY4LDExIEBACiAJCQkJQTMxNTk4OEMyMzI5OTAzNzAwMDYxOUI5
IC8qIE92ZXJsYXlXaWRnZXRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDNTVENzIyMjI4Mjc0
NzcwMEI1QkEyQyAvKiBQYWNrZWRFR0xFbnVtc19hdXRvZ2VuLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTVDNTVENzJEMjI4Mjc0NzcwMEI1QkEyQyAvKiBQYWNrZWRFbnVtcy5jcHAgaW4gU291cmNl
cyAqLywKLQkJCQkzMTNCQ0U0MDIzNjBGNzhBMDBGQzM5RTUgLyogUmVuZGVyZXJFQUdMLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNUM1NUQ3MkUyMjgyNzQ3NzAwQjVCQTJDIC8qIFBhY2tlZEdMRW51
bXNfYXV0b2dlbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTAxMkU1NDE4Qjk3QjlCMDAzOTA2
MkYgLyogUGFyc2VDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDQ0Q4MTdBMURCRkU5
OTkwMDYwNjZCOCAvKiBQYXRoLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDQjMwMTJEMURFMzlG
MUEwMEQyQzQwNSAvKiBQYXRoR0wuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNUNDRDU5NkYyMjg0
Rjk1NTAwMThGMkQ4IC8qIFBidWZmZXJTdXJmYWNlQ0dMLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJ
NUNDRDU5NkYyMjg0Rjk1NTAwMThGMkQ4IC8qIFBidWZmZXJTdXJmYWNlQ0dMLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTVDMURCREZFMUIwNDM4RDMwMDIzNTU1MiAvKiBQbGF0Zm9ybS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkzMTVFQkUyODFGQ0Y4MDhDMDBBQzdBODkgLyogUE11ckhhc2guY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMzEwMTJFNTYxOEI5N0I5QjAwMzkwNjJGIC8qIFBvb2xBbGxv
Yy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMyMTEsNyArMzIwMyw3IEBACiAJCQkJNUMxREJFMDcx
QjA0MzhEMzAwMjM1NTUyIC8qIFJlbmRlcmJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1
Q0IzMDEzMzFERTM5RjFBMDBEMkM0MDUgLyogUmVuZGVyYnVmZmVyR0wuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNUNCMzA0RjcxREU0MTY0ODAwRDJDNDA1IC8qIHJlbmRlcmVyX3V0aWxzLmNwcCBp
biBTb3VyY2VzICovLAotCQkJCTVDQ0Q1OTdBMjI4NEZBODMwMDE4RjJEOCAvKiBSZW5kZXJlckNH
TC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTVDQ0Q1OTdBMjI4NEZBODMwMDE4RjJEOCAvKiBSZW5k
ZXJlckNHTC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1Q0IzMDEzNzFERTM5RjFBMDBEMkM0MDUg
LyogUmVuZGVyZXJHTC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1Q0IzMDEzNTFERTM5RjFBMDBE
MkM0MDUgLyogcmVuZGVyZXJnbF91dGlscy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMzAzMDcw
NTIzMDVGNjM2MDAyREE5NzIgLyogUmVwbGFjZVNoYWRvd2luZ1ZhcmlhYmxlcy5jcHAgaW4gU291
cmNlcyAqLywKQEAgLTMyMzQsNyArMzIyNiw2IEBACiAJCQkJNUNCMzAxMzkxREUzOUYxQTAwRDJD
NDA1IC8qIFNhbXBsZXJHTC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzU1RDZDQTIyODI2QkM4
MDBCNUJBMkMgLyogU2NhbGFyaXplVmVjQW5kTWF0Q29uc3RydWN0b3JBcmdzLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUEzMDMwNzI4MjMwNUY3QzQwMDJEQTk3MiAvKiBTZW1hcGhvcmUuY3BwIGlu
IFNvdXJjZXMgKi8sCi0JCQkJMzEzQkNFMzkyMzYwRjc4QTAwRkMzOUU1IC8qIERldmljZUVBR0wu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTMwMzA3OEEyMzA1RjhGMDAwMkRBOTcyIC8qIFNlbWFw
aG9yZUdMLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDNTVENkNCMjI4MjZCQzgwMEI1QkEyQyAv
KiBTZXBhcmF0ZUFycmF5Q29uc3RydWN0b3JTdGF0ZW1lbnRzLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTVDNTVENkNDMjI4MjZCQzgwMEI1QkEyQyAvKiBTZXBhcmF0ZUFycmF5SW5pdGlhbGl6YXRp
b24uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMjYxLDEyICszMjUyLDExIEBACiAJCQkJNUM1NUQ3
MEUyMjgyNzQxNDAwQjVCQTJDIC8qIFN5bWJvbFRhYmxlX2F1dG9nZW4uY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMzE1RUJEQUUxRkNFNDQzNjAwQUM3QTg5IC8qIFN5bWJvbFVuaXF1ZUlkLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTMxNUVCREMwMUZDRTQ0QkYwMEFDN0E4OSAvKiBTeW5jR0wuY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJMzEzQkNFMzgyMzYwRjc4QTAwRkMzOUU1IC8qIERpc3BsYXlF
QUdMLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzFBMzMxQzYxRUE1RUQ1RjAwRkQyMjAzIC8qIHN5
c3RlbV91dGlsc19tYWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUM1NUQ3MzAyMjgyNzQ3NzAw
QjVCQTJDIC8qIHN5c3RlbV91dGlsc19wb3NpeC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzU1
RDcyMDIyODI3NDc3MDBCNUJBMkMgLyogc3lzdGVtX3V0aWxzX3VuaXR0ZXN0X2hlbHBlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk1Q0NENTk5QjIyODRGQzc1MDAxOEYyRDggLyogU3lzdGVtSW5m
by5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1Q0NENTk5QTIyODRGQzc1MDAxOEYyRDggLyogU3lz
dGVtSW5mb19tYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQk1Q0NENTk5QTIyODRGQzc1MDAxOEYy
RDggLyogU3lzdGVtSW5mb19tYWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxREJGMzAxQjA0
MzhEMzAwMjM1NTUyIC8qIFRleHR1cmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE1RUJEOTkx
RkNFNDQzNjAwQUM3QTg5IC8qIFRleHR1cmVGdW5jdGlvbkhMU0wuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNUNCMzAxNDExREUzOUYxQTAwRDJDNDA1IC8qIFRleHR1cmVHTC5jcHAgaW4gU291cmNl
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9ncHVfaW5mb191
dGlsL1N5c3RlbUluZm9fbWFjLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9ncHVf
aW5mb191dGlsL1N5c3RlbUluZm9fbWFjLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NmVmNjE0YzMyMmY0MTk5
MzQ4NzY5NDA5OTE3ZTZlNTJlNTFjYzI2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2dwdV9pbmZvX3V0aWwvU3lzdGVtSW5mb19tYWMuY3BwCkBAIC0wLDAg
KzEsMjQ4IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTcgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBTeXN0ZW1JbmZvX21hYy5jcHA6IGltcGxlbWVudGF0
aW9uIG9mIHRoZSBNYWMtc3BlY2lmaWMgcGFydHMgb2YgU3lzdGVtSW5mby5oCisKKyNpZiBkZWZp
bmVkKF9fQVBQTEVfXykKKyNpbmNsdWRlIDxUYXJnZXRDb25kaXRpb25hbHMuaD4KKyNpZiBUQVJH
RVRfT1NfTUFDCisKKyNpbmNsdWRlICJncHVfaW5mb191dGlsL1N5c3RlbUluZm9faW50ZXJuYWwu
aCIKKworI2luY2x1ZGUgPENvcmVHcmFwaGljcy9DR0RpcmVjdERpc3BsYXkuaD4KKyNpbmNsdWRl
IDxJT0tpdC9JT0tpdExpYi5oPgorI2luY2x1ZGUgPE9wZW5HTC9PcGVuR0wuaD4KKworbmFtZXNw
YWNlIGFuZ2xlCit7CisKK25hbWVzcGFjZQoreworCit1c2luZyBQbGF0Zm9ybURpc3BsYXlJRCA9
IHVpbnQzMl90OworCitjb25zdGV4cHIgQ0dMUmVuZGVyZXJQcm9wZXJ0eSBrQ0dMUlBSZWdpc3Ry
eUlETG93ICA9IHN0YXRpY19jYXN0PENHTFJlbmRlcmVyUHJvcGVydHk+KDE0MCk7Citjb25zdGV4
cHIgQ0dMUmVuZGVyZXJQcm9wZXJ0eSBrQ0dMUlBSZWdpc3RyeUlESGlnaCA9IHN0YXRpY19jYXN0
PENHTFJlbmRlcmVyUHJvcGVydHk+KDE0MSk7CisKKy8vIENvZGUgZnJvbSBXZWJLaXQgdG8gZ2V0
IHRoZSBhY3RpdmUgR1BVJ3MgSUQgZ2l2ZW4gYSBkaXNwbGF5IElELgordWludDY0X3QgR2V0R3B1
SURGcm9tRGlzcGxheUlEKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKK3sKKyAgICBHTHVp
bnQgZGlzcGxheU1hc2sgICAgICAgICAgICAgID0gQ0dEaXNwbGF5SURUb09wZW5HTERpc3BsYXlN
YXNrKGRpc3BsYXlJRCk7CisgICAgR0xpbnQgbnVtUmVuZGVyZXJzICAgICAgICAgICAgICA9IDA7
CisgICAgQ0dMUmVuZGVyZXJJbmZvT2JqIHJlbmRlcmVySW5mbyA9IG51bGxwdHI7CisgICAgQ0dM
RXJyb3IgZXJyb3IgPSBDR0xRdWVyeVJlbmRlcmVySW5mbyhkaXNwbGF5TWFzaywgJnJlbmRlcmVy
SW5mbywgJm51bVJlbmRlcmVycyk7CisgICAgaWYgKCFudW1SZW5kZXJlcnMgfHwgIXJlbmRlcmVy
SW5mbyB8fCBlcnJvciAhPSBrQ0dMTm9FcnJvcikKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAv
LyBUaGUgMHRoIHJlbmRlcmVyIHNob3VsZCBub3QgYmUgdGhlIHNvZnR3YXJlIHJlbmRlcmVyLgor
ICAgIEdMaW50IGlzQWNjZWxlcmF0ZWQ7CisgICAgZXJyb3IgPSBDR0xEZXNjcmliZVJlbmRlcmVy
KHJlbmRlcmVySW5mbywgMCwga0NHTFJQQWNjZWxlcmF0ZWQsICZpc0FjY2VsZXJhdGVkKTsKKyAg
ICBpZiAoIWlzQWNjZWxlcmF0ZWQgfHwgZXJyb3IgIT0ga0NHTE5vRXJyb3IpCisgICAgeworICAg
ICAgICBDR0xEZXN0cm95UmVuZGVyZXJJbmZvKHJlbmRlcmVySW5mbyk7CisgICAgICAgIHJldHVy
biAwOworICAgIH0KKworICAgIEdMaW50IGdwdUlETG93ICA9IDA7CisgICAgR0xpbnQgZ3B1SURI
aWdoID0gMDsKKworICAgIGVycm9yID0gQ0dMRGVzY3JpYmVSZW5kZXJlcihyZW5kZXJlckluZm8s
IDAsIGtDR0xSUFJlZ2lzdHJ5SURMb3csICZncHVJRExvdyk7CisKKyAgICBpZiAoZXJyb3IgIT0g
a0NHTE5vRXJyb3IgfHwgZ3B1SURMb3cgPCAwKQorICAgIHsKKyAgICAgICAgQ0dMRGVzdHJveVJl
bmRlcmVySW5mbyhyZW5kZXJlckluZm8pOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAg
ICBlcnJvciA9IENHTERlc2NyaWJlUmVuZGVyZXIocmVuZGVyZXJJbmZvLCAwLCBrQ0dMUlBSZWdp
c3RyeUlESGlnaCwgJmdwdUlESGlnaCk7CisgICAgaWYgKGVycm9yICE9IGtDR0xOb0Vycm9yIHx8
IGdwdUlESGlnaCA8IDApCisgICAgeworICAgICAgICBDR0xEZXN0cm95UmVuZGVyZXJJbmZvKHJl
bmRlcmVySW5mbyk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIENHTERlc3Ryb3lS
ZW5kZXJlckluZm8ocmVuZGVyZXJJbmZvKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KGdwdUlESGlnaCkgPDwgMzIgfCBncHVJRExvdzsKK30KKworc3RkOjpzdHJpbmcgR2V0TWFj
aGluZU1vZGVsKCkKK3sKKyAgICBpb19zZXJ2aWNlX3QgcGxhdGZvcm1FeHBlcnQgPSBJT1NlcnZp
Y2VHZXRNYXRjaGluZ1NlcnZpY2UoCisgICAgICAgIGtJT01hc3RlclBvcnREZWZhdWx0LCBJT1Nl
cnZpY2VNYXRjaGluZygiSU9QbGF0Zm9ybUV4cGVydERldmljZSIpKTsKKworICAgIGlmIChwbGF0
Zm9ybUV4cGVydCA9PSBJT19PQkpFQ1RfTlVMTCkKKyAgICB7CisgICAgICAgIHJldHVybiAiIjsK
KyAgICB9CisKKyAgICBDRkRhdGFSZWYgbW9kZWxEYXRhID0gc3RhdGljX2Nhc3Q8Q0ZEYXRhUmVm
PigKKyAgICAgICAgSU9SZWdpc3RyeUVudHJ5Q3JlYXRlQ0ZQcm9wZXJ0eShwbGF0Zm9ybUV4cGVy
dCwgQ0ZTVFIoIm1vZGVsIiksIGtDRkFsbG9jYXRvckRlZmF1bHQsIDApKTsKKyAgICBpZiAobW9k
ZWxEYXRhID09IG51bGxwdHIpCisgICAgeworICAgICAgICBJT09iamVjdFJlbGVhc2UocGxhdGZv
cm1FeHBlcnQpOworICAgICAgICByZXR1cm4gIiI7CisgICAgfQorCisgICAgc3RkOjpzdHJpbmcg
cmVzdWx0ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyICo+KENGRGF0YUdldEJ5dGVQdHIo
bW9kZWxEYXRhKSk7CisKKyAgICBJT09iamVjdFJlbGVhc2UocGxhdGZvcm1FeHBlcnQpOworICAg
IENGUmVsZWFzZShtb2RlbERhdGEpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLy8gRXh0
cmFjdHMgb25lIGludGVnZXIgcHJvcGVydHkgZnJvbSBhIHJlZ2lzdHJ5IGVudHJ5LgorYm9vbCBH
ZXRFbnRyeVByb3BlcnR5KGlvX3JlZ2lzdHJ5X2VudHJ5X3QgZW50cnksIENGU3RyaW5nUmVmIG5h
bWUsIHVpbnQzMl90ICp2YWx1ZSkKK3sKKyAgICAqdmFsdWUgPSAwOworCisgICAgQ0ZEYXRhUmVm
IGRhdGEgPSBzdGF0aWNfY2FzdDxDRkRhdGFSZWY+KAorICAgICAgICBJT1JlZ2lzdHJ5RW50cnlT
ZWFyY2hDRlByb3BlcnR5KGVudHJ5LCBrSU9TZXJ2aWNlUGxhbmUsIG5hbWUsIGtDRkFsbG9jYXRv
ckRlZmF1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga0lPUmVn
aXN0cnlJdGVyYXRlUmVjdXJzaXZlbHkgfCBrSU9SZWdpc3RyeUl0ZXJhdGVQYXJlbnRzKSk7CisK
KyAgICBpZiAoZGF0YSA9PSBudWxscHRyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIGNvbnN0IHVpbnQzMl90ICp2YWx1ZVB0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDMyX3QgKj4oQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhKSk7CisKKyAgICBpZiAodmFs
dWVQdHIgPT0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIENGUmVsZWFzZShkYXRhKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgICp2YWx1ZSA9ICp2YWx1ZVB0cjsKKyAgICBD
RlJlbGVhc2UoZGF0YSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKKy8vIEdhdGhlcnMgdGhlIHZl
bmRvciBhbmQgZGV2aWNlIElEcyBmb3IgdGhlIFBDSSBHUFVzCitib29sIEdldFBDSURldmljZXMo
c3RkOjp2ZWN0b3I8R1BVRGV2aWNlSW5mbz4gKmRldmljZXMpCit7CisgICAgLy8gbWF0Y2hEaWN0
aW9uYXJ5IHdpbGwgYmUgY29uc3VtZWQgYnkgSU9TZXJ2aWNlR2V0TWF0Y2hpbmdTZXJ2aWNlcywg
bm8gbmVlZCB0byByZWxlYXNlIGl0LgorICAgIENGTXV0YWJsZURpY3Rpb25hcnlSZWYgbWF0Y2hE
aWN0aW9uYXJ5ID0gSU9TZXJ2aWNlTWF0Y2hpbmcoIklPUENJRGV2aWNlIik7CisKKyAgICBpb19p
dGVyYXRvcl90IGVudHJ5SXRlcmF0b3I7CisgICAgaWYgKElPU2VydmljZUdldE1hdGNoaW5nU2Vy
dmljZXMoa0lPTWFzdGVyUG9ydERlZmF1bHQsIG1hdGNoRGljdGlvbmFyeSwgJmVudHJ5SXRlcmF0
b3IpICE9CisgICAgICAgIGtJT1JldHVyblN1Y2Nlc3MpCisgICAgeworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgaW9fcmVnaXN0cnlfZW50cnlfdCBlbnRyeSA9IElPX09CSkVD
VF9OVUxMOworCisgICAgd2hpbGUgKChlbnRyeSA9IElPSXRlcmF0b3JOZXh0KGVudHJ5SXRlcmF0
b3IpKSAhPSBJT19PQkpFQ1RfTlVMTCkKKyAgICB7CisgICAgICAgIGNvbnN0ZXhwciB1aW50MzJf
dCBrQ2xhc3NDb2RlRGlzcGxheVZHQSA9IDB4MzAwMDA7CisgICAgICAgIHVpbnQzMl90IGNsYXNz
Q29kZTsKKyAgICAgICAgR1BVRGV2aWNlSW5mbyBpbmZvOworCisgICAgICAgIGlmIChHZXRFbnRy
eVByb3BlcnR5KGVudHJ5LCBDRlNUUigiY2xhc3MtY29kZSIpLCAmY2xhc3NDb2RlKSAmJgorICAg
ICAgICAgICAgY2xhc3NDb2RlID09IGtDbGFzc0NvZGVEaXNwbGF5VkdBICYmCisgICAgICAgICAg
ICBHZXRFbnRyeVByb3BlcnR5KGVudHJ5LCBDRlNUUigidmVuZG9yLWlkIiksICZpbmZvLnZlbmRv
cklkKSAmJgorICAgICAgICAgICAgR2V0RW50cnlQcm9wZXJ0eShlbnRyeSwgQ0ZTVFIoImRldmlj
ZS1pZCIpLCAmaW5mby5kZXZpY2VJZCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRldmljZXMt
PnB1c2hfYmFjayhpbmZvKTsKKyAgICAgICAgfQorCisgICAgICAgIElPT2JqZWN0UmVsZWFzZShl
bnRyeSk7CisgICAgfQorICAgIElPT2JqZWN0UmVsZWFzZShlbnRyeUl0ZXJhdG9yKTsKKworICAg
IHJldHVybiB0cnVlOworfQorCit2b2lkIFNldEFjdGl2ZUdQVUluZGV4KFN5c3RlbUluZm8gKmlu
Zm8pCit7CisgICAgVmVuZG9ySUQgYWN0aXZlVmVuZG9yOworICAgIERldmljZUlEIGFjdGl2ZURl
dmljZTsKKworICAgIHVpbnQ2NF90IGdwdUlEID0gR2V0R3B1SURGcm9tRGlzcGxheUlEKGtDR0Rp
cmVjdE1haW5EaXNwbGF5KTsKKworICAgIGlmIChncHVJRCA9PSAwKQorICAgICAgICByZXR1cm47
CisKKyAgICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIG1hdGNoRGljdGlvbmFyeSA9IElPUmVnaXN0
cnlFbnRyeUlETWF0Y2hpbmcoZ3B1SUQpOworICAgIGlvX3NlcnZpY2VfdCBncHVFbnRyeSA9IElP
U2VydmljZUdldE1hdGNoaW5nU2VydmljZShrSU9NYXN0ZXJQb3J0RGVmYXVsdCwgbWF0Y2hEaWN0
aW9uYXJ5KTsKKworICAgIGlmIChncHVFbnRyeSA9PSBJT19PQkpFQ1RfTlVMTCkKKyAgICB7Cisg
ICAgICAgIElPT2JqZWN0UmVsZWFzZShncHVFbnRyeSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBpZiAoIShHZXRFbnRyeVByb3BlcnR5KGdwdUVudHJ5LCBDRlNUUigidmVuZG9yLWlk
IiksICZhY3RpdmVWZW5kb3IpICYmCisgICAgICAgICAgR2V0RW50cnlQcm9wZXJ0eShncHVFbnRy
eSwgQ0ZTVFIoImRldmljZS1pZCIpLCAmYWN0aXZlRGV2aWNlKSkpCisgICAgeworICAgICAgICBJ
T09iamVjdFJlbGVhc2UoZ3B1RW50cnkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
SU9PYmplY3RSZWxlYXNlKGdwdUVudHJ5KTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
aW5mby0+Z3B1cy5zaXplKCk7ICsraSkKKyAgICB7CisgICAgICAgIGlmIChpbmZvLT5ncHVzW2ld
LnZlbmRvcklkID09IGFjdGl2ZVZlbmRvciAmJiBpbmZvLT5ncHVzW2ldLmRldmljZUlkID09IGFj
dGl2ZURldmljZSkKKyAgICAgICAgeworICAgICAgICAgICAgaW5mby0+YWN0aXZlR1BVSW5kZXgg
PSBzdGF0aWNfY2FzdDxpbnQ+KGkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg
ICB9Cit9CisKK30gIC8vIGFub255bW91cyBuYW1lc3BhY2UKKworYm9vbCBHZXRTeXN0ZW1JbmZv
KFN5c3RlbUluZm8gKmluZm8pCit7CisgICAgeworICAgICAgICBpbnQzMl90IG1ham9yID0gMDsK
KyAgICAgICAgaW50MzJfdCBtaW5vciA9IDA7CisgICAgICAgIFBhcnNlTWFjTWFjaGluZU1vZGVs
KEdldE1hY2hpbmVNb2RlbCgpLCAmaW5mby0+bWFjaGluZU1vZGVsTmFtZSwgJm1ham9yLCAmbWlu
b3IpOworICAgICAgICBpbmZvLT5tYWNoaW5lTW9kZWxWZXJzaW9uID0gc3RkOjp0b19zdHJpbmco
bWFqb3IpICsgIi4iICsgc3RkOjp0b19zdHJpbmcobWlub3IpOworICAgIH0KKworICAgIGlmICgh
R2V0UENJRGV2aWNlcygmKGluZm8tPmdwdXMpKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICBpZiAoaW5mby0+Z3B1cy5lbXB0eSgpKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIENhbGwgdGhlIGdlbmVyaWMgR2V0RHVhbEdQ
VUluZm8gZnVuY3Rpb24gdG8gaW5pdGlhbGl6ZSBpbmZvIGZpZWxkcworICAgIC8vIHN1Y2ggYXMg
aXNPcHRpbXVzLCBpc0FNRFN3aXRjaGFibGUsIGFuZCB0aGUgYWN0aXZlR1BVSW5kZXgKKyAgICBH
ZXREdWFsR1BVSW5mbyhpbmZvKTsKKworICAgIC8vIFRoZW4gb3ZlcnJpZGUgdGhlIGFjdGl2ZUdQ
VUluZGV4IGZpZWxkIG9mIGluZm8gdG8gcmVmbGVjdCB0aGUgY3VycmVudAorICAgIC8vIEdQVSBp
bnN0ZWFkIG9mIHRoZSBub24taW50ZWwgR1BVCisgICAgLy8gVE9ETyhkaW5vKTogVXNlIHN5c2N0
bCB0byBkZXRlY3QgT1MgdmVyc2lvbi4KKyAgICAvLyAgICBpZiAoQGF2YWlsYWJsZShtYWNPUyAx
MC4xMywgKikpCisgICAgU2V0QWN0aXZlR1BVSW5kZXgoaW5mbyk7CisKKyAgICAvLyBGaWd1cmUg
b3V0IHdoZXRoZXIgdGhpcyBpcyBhIGR1YWwtR1BVIHN5c3RlbS4KKyAgICAvLworICAgIC8vIFRP
RE8oa2JyKTogdGhpcyBjb2RlIHdhcyBwb3J0ZWQgb3ZlciBmcm9tIENocm9taXVtLCBhbmQgaXRz
IGNvcnJlY3RuZXNzCisgICAgLy8gY291bGQgYmUgaW1wcm92ZWQgLSBuZWVkIHRvIHVzZSBNYWMt
c3BlY2lmaWMgQVBJcyB0byBkZXRlcm1pbmUgd2hldGhlcgorICAgIC8vIG9mZmxpbmUgcmVuZGVy
ZXJzIGFyZSBhbGxvd2VkLCBhbmQgd2hldGhlciB0aGVzZSB0d28gR1BVcyBhcmUgcmVhbGx5IHRo
ZQorICAgIC8vIGludGVncmF0ZWQvZGlzY3JldGUgR1BVcyBpbiBhIGxhcHRvcC4KKyAgICBpZiAo
aW5mby0+Z3B1cy5zaXplKCkgPT0gMiAmJgorICAgICAgICAoKElzSW50ZWwoaW5mby0+Z3B1c1sw
XS52ZW5kb3JJZCkgJiYgIUlzSW50ZWwoaW5mby0+Z3B1c1sxXS52ZW5kb3JJZCkpIHx8CisgICAg
ICAgICAoIUlzSW50ZWwoaW5mby0+Z3B1c1swXS52ZW5kb3JJZCkgJiYgSXNJbnRlbChpbmZvLT5n
cHVzWzFdLnZlbmRvcklkKSkpKQorICAgIHsKKyAgICAgICAgaW5mby0+aXNNYWNTd2l0Y2hhYmxl
ID0gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAgLy8gbmFtZXNwYWNl
IGFuZ2xlCisKKyNlbmRpZiAgLy8gVEFSR0VUX09TX01BQworI2VuZGlmICAvLyBfX0FQUExFX18K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9ncHVfaW5mb191dGlsL1N5
c3RlbUluZm9fbWFjLm1tIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2dwdV9pbmZvX3V0
aWwvU3lzdGVtSW5mb19tYWMubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3Mjhk
M2U3NzBiNzFkZTZhMjcxZjQ2ODI4YWRlYTBmYzYxMDg0Y2UuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2dw
dV9pbmZvX3V0aWwvU3lzdGVtSW5mb19tYWMubW0KKysrIC9kZXYvbnVsbApAQCAtMSwyNDUgKzAs
MCBAQAotLy8KLS8vIENvcHlyaWdodCAyMDE3IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLgotLy8KLQotLy8gU3lzdGVtSW5mb19tYWMuY3BwOiBpbXBsZW1lbnRhdGlvbiBv
ZiB0aGUgTWFjLXNwZWNpZmljIHBhcnRzIG9mIFN5c3RlbUluZm8uaAotCi0jaWYgX19oYXNfaW5j
bHVkZSg8Q29jb2EvQ29jb2EuaD4pCi0KLSMgICAgaW5jbHVkZSAiZ3B1X2luZm9fdXRpbC9TeXN0
ZW1JbmZvX2ludGVybmFsLmgiCi0KLSMgICAgaW1wb3J0IDxDb2NvYS9Db2NvYS5oPgotIyAgICBp
bXBvcnQgPElPS2l0L0lPS2l0TGliLmg+Ci0KLW5hbWVzcGFjZSBhbmdsZQotewotCi1uYW1lc3Bh
Y2UKLXsKLQotdXNpbmcgUGxhdGZvcm1EaXNwbGF5SUQgPSB1aW50MzJfdDsKLQotY29uc3RleHBy
IENHTFJlbmRlcmVyUHJvcGVydHkga0NHTFJQUmVnaXN0cnlJRExvdyAgPSBzdGF0aWNfY2FzdDxD
R0xSZW5kZXJlclByb3BlcnR5PigxNDApOwotY29uc3RleHByIENHTFJlbmRlcmVyUHJvcGVydHkg
a0NHTFJQUmVnaXN0cnlJREhpZ2ggPSBzdGF0aWNfY2FzdDxDR0xSZW5kZXJlclByb3BlcnR5Pigx
NDEpOwotCi0vLyBDb2RlIGZyb20gV2ViS2l0IHRvIGdldCB0aGUgYWN0aXZlIEdQVSdzIElEIGdp
dmVuIGEgZGlzcGxheSBJRC4KLXVpbnQ2NF90IEdldEdwdUlERnJvbURpc3BsYXlJRChQbGF0Zm9y
bURpc3BsYXlJRCBkaXNwbGF5SUQpCi17Ci0gICAgR0x1aW50IGRpc3BsYXlNYXNrICAgICAgICAg
ICAgICA9IENHRGlzcGxheUlEVG9PcGVuR0xEaXNwbGF5TWFzayhkaXNwbGF5SUQpOwotICAgIEdM
aW50IG51bVJlbmRlcmVycyAgICAgICAgICAgICAgPSAwOwotICAgIENHTFJlbmRlcmVySW5mb09i
aiByZW5kZXJlckluZm8gPSBudWxscHRyOwotICAgIENHTEVycm9yIGVycm9yID0gQ0dMUXVlcnlS
ZW5kZXJlckluZm8oZGlzcGxheU1hc2ssICZyZW5kZXJlckluZm8sICZudW1SZW5kZXJlcnMpOwot
ICAgIGlmICghbnVtUmVuZGVyZXJzIHx8ICFyZW5kZXJlckluZm8gfHwgZXJyb3IgIT0ga0NHTE5v
RXJyb3IpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgLy8gVGhlIDB0aCByZW5kZXJlciBzaG91
bGQgbm90IGJlIHRoZSBzb2Z0d2FyZSByZW5kZXJlci4KLSAgICBHTGludCBpc0FjY2VsZXJhdGVk
OwotICAgIGVycm9yID0gQ0dMRGVzY3JpYmVSZW5kZXJlcihyZW5kZXJlckluZm8sIDAsIGtDR0xS
UEFjY2VsZXJhdGVkLCAmaXNBY2NlbGVyYXRlZCk7Ci0gICAgaWYgKCFpc0FjY2VsZXJhdGVkIHx8
IGVycm9yICE9IGtDR0xOb0Vycm9yKQotICAgIHsKLSAgICAgICAgQ0dMRGVzdHJveVJlbmRlcmVy
SW5mbyhyZW5kZXJlckluZm8pOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBHTGlu
dCBncHVJRExvdyAgPSAwOwotICAgIEdMaW50IGdwdUlESGlnaCA9IDA7Ci0KLSAgICBlcnJvciA9
IENHTERlc2NyaWJlUmVuZGVyZXIocmVuZGVyZXJJbmZvLCAwLCBrQ0dMUlBSZWdpc3RyeUlETG93
LCAmZ3B1SURMb3cpOwotCi0gICAgaWYgKGVycm9yICE9IGtDR0xOb0Vycm9yIHx8IGdwdUlETG93
IDwgMCkKLSAgICB7Ci0gICAgICAgIENHTERlc3Ryb3lSZW5kZXJlckluZm8ocmVuZGVyZXJJbmZv
KTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgZXJyb3IgPSBDR0xEZXNjcmliZVJl
bmRlcmVyKHJlbmRlcmVySW5mbywgMCwga0NHTFJQUmVnaXN0cnlJREhpZ2gsICZncHVJREhpZ2gp
OwotICAgIGlmIChlcnJvciAhPSBrQ0dMTm9FcnJvciB8fCBncHVJREhpZ2ggPCAwKQotICAgIHsK
LSAgICAgICAgQ0dMRGVzdHJveVJlbmRlcmVySW5mbyhyZW5kZXJlckluZm8pOwotICAgICAgICBy
ZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBDR0xEZXN0cm95UmVuZGVyZXJJbmZvKHJlbmRlcmVySW5m
byk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ2NF90PihncHVJREhpZ2gpIDw8IDMyIHwg
Z3B1SURMb3c7Ci19Ci0KLXN0ZDo6c3RyaW5nIEdldE1hY2hpbmVNb2RlbCgpCi17Ci0gICAgaW9f
c2VydmljZV90IHBsYXRmb3JtRXhwZXJ0ID0gSU9TZXJ2aWNlR2V0TWF0Y2hpbmdTZXJ2aWNlKAot
ICAgICAgICBrSU9NYXN0ZXJQb3J0RGVmYXVsdCwgSU9TZXJ2aWNlTWF0Y2hpbmcoIklPUGxhdGZv
cm1FeHBlcnREZXZpY2UiKSk7Ci0KLSAgICBpZiAocGxhdGZvcm1FeHBlcnQgPT0gSU9fT0JKRUNU
X05VTEwpCi0gICAgewotICAgICAgICByZXR1cm4gIiI7Ci0gICAgfQotCi0gICAgQ0ZEYXRhUmVm
IG1vZGVsRGF0YSA9IHN0YXRpY19jYXN0PENGRGF0YVJlZj4oCi0gICAgICAgIElPUmVnaXN0cnlF
bnRyeUNyZWF0ZUNGUHJvcGVydHkocGxhdGZvcm1FeHBlcnQsIENGU1RSKCJtb2RlbCIpLCBrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCAwKSk7Ci0gICAgaWYgKG1vZGVsRGF0YSA9PSBudWxscHRyKQotICAg
IHsKLSAgICAgICAgSU9PYmplY3RSZWxlYXNlKHBsYXRmb3JtRXhwZXJ0KTsKLSAgICAgICAgcmV0
dXJuICIiOwotICAgIH0KLQotICAgIHN0ZDo6c3RyaW5nIHJlc3VsdCA9IHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgY2hhciAqPihDRkRhdGFHZXRCeXRlUHRyKG1vZGVsRGF0YSkpOwotCi0gICAgSU9P
YmplY3RSZWxlYXNlKHBsYXRmb3JtRXhwZXJ0KTsKLSAgICBDRlJlbGVhc2UobW9kZWxEYXRhKTsK
LQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8vIEV4dHJhY3RzIG9uZSBpbnRlZ2VyIHByb3Bl
cnR5IGZyb20gYSByZWdpc3RyeSBlbnRyeS4KLWJvb2wgR2V0RW50cnlQcm9wZXJ0eShpb19yZWdp
c3RyeV9lbnRyeV90IGVudHJ5LCBDRlN0cmluZ1JlZiBuYW1lLCB1aW50MzJfdCAqdmFsdWUpCi17
Ci0gICAgKnZhbHVlID0gMDsKLQotICAgIENGRGF0YVJlZiBkYXRhID0gc3RhdGljX2Nhc3Q8Q0ZE
YXRhUmVmPigKLSAgICAgICAgSU9SZWdpc3RyeUVudHJ5U2VhcmNoQ0ZQcm9wZXJ0eShlbnRyeSwg
a0lPU2VydmljZVBsYW5lLCBuYW1lLCBrQ0ZBbGxvY2F0b3JEZWZhdWx0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtJT1JlZ2lzdHJ5SXRlcmF0ZVJlY3Vyc2l2ZWx5
IHwga0lPUmVnaXN0cnlJdGVyYXRlUGFyZW50cykpOwotCi0gICAgaWYgKGRhdGEgPT0gbnVsbHB0
cikKLSAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBjb25zdCB1aW50
MzJfdCAqdmFsdWVQdHIgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90ICo+KENGRGF0
YUdldEJ5dGVQdHIoZGF0YSkpOwotCi0gICAgaWYgKHZhbHVlUHRyID09IG51bGxwdHIpCi0gICAg
ewotICAgICAgICBDRlJlbGVhc2UoZGF0YSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0KLSAgICAqdmFsdWUgPSAqdmFsdWVQdHI7Ci0gICAgQ0ZSZWxlYXNlKGRhdGEpOwotICAgIHJl
dHVybiB0cnVlOwotfQotCi0vLyBHYXRoZXJzIHRoZSB2ZW5kb3IgYW5kIGRldmljZSBJRHMgZm9y
IHRoZSBQQ0kgR1BVcwotYm9vbCBHZXRQQ0lEZXZpY2VzKHN0ZDo6dmVjdG9yPEdQVURldmljZUlu
Zm8+ICpkZXZpY2VzKQotewotICAgIC8vIG1hdGNoRGljdGlvbmFyeSB3aWxsIGJlIGNvbnN1bWVk
IGJ5IElPU2VydmljZUdldE1hdGNoaW5nU2VydmljZXMsIG5vIG5lZWQgdG8gcmVsZWFzZSBpdC4K
LSAgICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIG1hdGNoRGljdGlvbmFyeSA9IElPU2VydmljZU1h
dGNoaW5nKCJJT1BDSURldmljZSIpOwotCi0gICAgaW9faXRlcmF0b3JfdCBlbnRyeUl0ZXJhdG9y
OwotICAgIGlmIChJT1NlcnZpY2VHZXRNYXRjaGluZ1NlcnZpY2VzKGtJT01hc3RlclBvcnREZWZh
dWx0LCBtYXRjaERpY3Rpb25hcnksICZlbnRyeUl0ZXJhdG9yKSAhPQotICAgICAgICBrSU9SZXR1
cm5TdWNjZXNzKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlv
X3JlZ2lzdHJ5X2VudHJ5X3QgZW50cnkgPSBJT19PQkpFQ1RfTlVMTDsKLQotICAgIHdoaWxlICgo
ZW50cnkgPSBJT0l0ZXJhdG9yTmV4dChlbnRyeUl0ZXJhdG9yKSkgIT0gSU9fT0JKRUNUX05VTEwp
Ci0gICAgewotICAgICAgICBjb25zdGV4cHIgdWludDMyX3Qga0NsYXNzQ29kZURpc3BsYXlWR0Eg
PSAweDMwMDAwOwotICAgICAgICB1aW50MzJfdCBjbGFzc0NvZGU7Ci0gICAgICAgIEdQVURldmlj
ZUluZm8gaW5mbzsKLQotICAgICAgICBpZiAoR2V0RW50cnlQcm9wZXJ0eShlbnRyeSwgQ0ZTVFIo
ImNsYXNzLWNvZGUiKSwgJmNsYXNzQ29kZSkgJiYKLSAgICAgICAgICAgIGNsYXNzQ29kZSA9PSBr
Q2xhc3NDb2RlRGlzcGxheVZHQSAmJgotICAgICAgICAgICAgR2V0RW50cnlQcm9wZXJ0eShlbnRy
eSwgQ0ZTVFIoInZlbmRvci1pZCIpLCAmaW5mby52ZW5kb3JJZCkgJiYKLSAgICAgICAgICAgIEdl
dEVudHJ5UHJvcGVydHkoZW50cnksIENGU1RSKCJkZXZpY2UtaWQiKSwgJmluZm8uZGV2aWNlSWQp
KQotICAgICAgICB7Ci0gICAgICAgICAgICBkZXZpY2VzLT5wdXNoX2JhY2soaW5mbyk7Ci0gICAg
ICAgIH0KLQotICAgICAgICBJT09iamVjdFJlbGVhc2UoZW50cnkpOwotICAgIH0KLSAgICBJT09i
amVjdFJlbGVhc2UoZW50cnlJdGVyYXRvcik7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9p
ZCBTZXRBY3RpdmVHUFVJbmRleChTeXN0ZW1JbmZvICppbmZvKQotewotICAgIFZlbmRvcklEIGFj
dGl2ZVZlbmRvcjsKLSAgICBEZXZpY2VJRCBhY3RpdmVEZXZpY2U7Ci0KLSAgICB1aW50NjRfdCBn
cHVJRCA9IEdldEdwdUlERnJvbURpc3BsYXlJRChrQ0dEaXJlY3RNYWluRGlzcGxheSk7Ci0KLSAg
ICBpZiAoZ3B1SUQgPT0gMCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQ0ZNdXRhYmxlRGljdGlv
bmFyeVJlZiBtYXRjaERpY3Rpb25hcnkgPSBJT1JlZ2lzdHJ5RW50cnlJRE1hdGNoaW5nKGdwdUlE
KTsKLSAgICBpb19zZXJ2aWNlX3QgZ3B1RW50cnkgPSBJT1NlcnZpY2VHZXRNYXRjaGluZ1NlcnZp
Y2Uoa0lPTWFzdGVyUG9ydERlZmF1bHQsIG1hdGNoRGljdGlvbmFyeSk7Ci0KLSAgICBpZiAoZ3B1
RW50cnkgPT0gSU9fT0JKRUNUX05VTEwpCi0gICAgewotICAgICAgICBJT09iamVjdFJlbGVhc2Uo
Z3B1RW50cnkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCEoR2V0RW50cnlQ
cm9wZXJ0eShncHVFbnRyeSwgQ0ZTVFIoInZlbmRvci1pZCIpLCAmYWN0aXZlVmVuZG9yKSAmJgot
ICAgICAgICAgIEdldEVudHJ5UHJvcGVydHkoZ3B1RW50cnksIENGU1RSKCJkZXZpY2UtaWQiKSwg
JmFjdGl2ZURldmljZSkpKQotICAgIHsKLSAgICAgICAgSU9PYmplY3RSZWxlYXNlKGdwdUVudHJ5
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIElPT2JqZWN0UmVsZWFzZShncHVFbnRy
eSk7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGluZm8tPmdwdXMuc2l6ZSgpOyArK2kp
Ci0gICAgewotICAgICAgICBpZiAoaW5mby0+Z3B1c1tpXS52ZW5kb3JJZCA9PSBhY3RpdmVWZW5k
b3IgJiYgaW5mby0+Z3B1c1tpXS5kZXZpY2VJZCA9PSBhY3RpdmVEZXZpY2UpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGluZm8tPmFjdGl2ZUdQVUluZGV4ID0gc3RhdGljX2Nhc3Q8aW50PihpKTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotfQotCi19ICAvLyBhbm9ueW1v
dXMgbmFtZXNwYWNlCi0KLWJvb2wgR2V0U3lzdGVtSW5mbyhTeXN0ZW1JbmZvICppbmZvKQotewot
ICAgIHsKLSAgICAgICAgaW50MzJfdCBtYWpvciA9IDA7Ci0gICAgICAgIGludDMyX3QgbWlub3Ig
PSAwOwotICAgICAgICBQYXJzZU1hY01hY2hpbmVNb2RlbChHZXRNYWNoaW5lTW9kZWwoKSwgJmlu
Zm8tPm1hY2hpbmVNb2RlbE5hbWUsICZtYWpvciwgJm1pbm9yKTsKLSAgICAgICAgaW5mby0+bWFj
aGluZU1vZGVsVmVyc2lvbiA9IHN0ZDo6dG9fc3RyaW5nKG1ham9yKSArICIuIiArIHN0ZDo6dG9f
c3RyaW5nKG1pbm9yKTsKLSAgICB9Ci0KLSAgICBpZiAoIUdldFBDSURldmljZXMoJihpbmZvLT5n
cHVzKSkpCi0gICAgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYgKGlu
Zm8tPmdwdXMuZW1wdHkoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0K
LSAgICAvLyBDYWxsIHRoZSBnZW5lcmljIEdldER1YWxHUFVJbmZvIGZ1bmN0aW9uIHRvIGluaXRp
YWxpemUgaW5mbyBmaWVsZHMKLSAgICAvLyBzdWNoIGFzIGlzT3B0aW11cywgaXNBTURTd2l0Y2hh
YmxlLCBhbmQgdGhlIGFjdGl2ZUdQVUluZGV4Ci0gICAgR2V0RHVhbEdQVUluZm8oaW5mbyk7Ci0K
LSAgICAvLyBUaGVuIG92ZXJyaWRlIHRoZSBhY3RpdmVHUFVJbmRleCBmaWVsZCBvZiBpbmZvIHRv
IHJlZmxlY3QgdGhlIGN1cnJlbnQKLSAgICAvLyBHUFUgaW5zdGVhZCBvZiB0aGUgbm9uLWludGVs
IEdQVQotICAgIGlmIChAYXZhaWxhYmxlKG1hY09TIDEwLjEzLCAqKSkKLSAgICB7Ci0gICAgICAg
IFNldEFjdGl2ZUdQVUluZGV4KGluZm8pOwotICAgIH0KLQotICAgIC8vIEZpZ3VyZSBvdXQgd2hl
dGhlciB0aGlzIGlzIGEgZHVhbC1HUFUgc3lzdGVtLgotICAgIC8vCi0gICAgLy8gVE9ETyhrYnIp
OiB0aGlzIGNvZGUgd2FzIHBvcnRlZCBvdmVyIGZyb20gQ2hyb21pdW0sIGFuZCBpdHMgY29ycmVj
dG5lc3MKLSAgICAvLyBjb3VsZCBiZSBpbXByb3ZlZCAtIG5lZWQgdG8gdXNlIE1hYy1zcGVjaWZp
YyBBUElzIHRvIGRldGVybWluZSB3aGV0aGVyCi0gICAgLy8gb2ZmbGluZSByZW5kZXJlcnMgYXJl
IGFsbG93ZWQsIGFuZCB3aGV0aGVyIHRoZXNlIHR3byBHUFVzIGFyZSByZWFsbHkgdGhlCi0gICAg
Ly8gaW50ZWdyYXRlZC9kaXNjcmV0ZSBHUFVzIGluIGEgbGFwdG9wLgotICAgIGlmIChpbmZvLT5n
cHVzLnNpemUoKSA9PSAyICYmCi0gICAgICAgICgoSXNJbnRlbChpbmZvLT5ncHVzWzBdLnZlbmRv
cklkKSAmJiAhSXNJbnRlbChpbmZvLT5ncHVzWzFdLnZlbmRvcklkKSkgfHwKLSAgICAgICAgICgh
SXNJbnRlbChpbmZvLT5ncHVzWzBdLnZlbmRvcklkKSAmJiBJc0ludGVsKGluZm8tPmdwdXNbMV0u
dmVuZG9ySWQpKSkpCi0gICAgewotICAgICAgICBpbmZvLT5pc01hY1N3aXRjaGFibGUgPSB0cnVl
OwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi19ICAvLyBuYW1lc3BhY2UgYW5nbGUK
LQotI2VuZGlmICAvLyBfX2hhc19pbmNsdWRlKDxDb2NvYS9Db2NvYS5oPikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvRGV2
aWNlQ0dMLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9nbC9jZ2wvRGV2aWNlQ0dMLmNwcAppbmRleCAxY2RkZDI5ZjUzZTVlOWY3ZmJiMWVjMjNhM2Q1
YmI2NzEyNmIxYjcyLi5lMWI5MjVkMjJkMGRiYzcwOGU3ZDZhZTI1MDQ3YWMzMmFmOWI5YzUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
Z2wvY2dsL0RldmljZUNHTC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9EZXZpY2VDR0wuY3BwCkBAIC02LDEyICs2LDE1IEBACiAK
IC8vIERldmljZUNHTC5jcHA6IENHTCBpbXBsZW1lbnRhdGlvbiBvZiBlZ2w6OkRldmljZQogCi0j
aWYgX19oYXNfaW5jbHVkZSg8Q29jb2EvQ29jb2EuaD4pCisjaWYgZGVmaW5lZChfX0FQUExFX18p
CisjaW5jbHVkZSA8VGFyZ2V0Q29uZGl0aW9uYWxzLmg+CisjaWYgVEFSR0VUX09TX01BQwogCi0j
ICAgIGluY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9EZXZpY2VDR0wuaCIKKyNpbmNs
dWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvRGV2aWNlQ0dMLmgiCiAKLSMgICAgaW5jbHVk
ZSA8RUdML2VnbGV4dC5oPgotIyAgICBpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wv
RGlzcGxheUNHTC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9EaXNwbGF5
Q0dMLmgiCisKKyNpbmNsdWRlIDxFR0wvZWdsZXh0Lmg+CiAKIG5hbWVzcGFjZSByeAogewpAQCAt
NTYsNCArNTksNSBAQCB2b2lkIERldmljZUNHTDo6Z2VuZXJhdGVFeHRlbnNpb25zKGVnbDo6RGV2
aWNlRXh0ZW5zaW9ucyAqb3V0RXh0ZW5zaW9ucykgY29uc3QKIAogfSAgLy8gbmFtZXNwYWNlIHJ4
CiAKLSNlbmRpZiAgLy8gX19oYXNfaW5jbHVkZSg8Q29jb2EvQ29jb2EuaD4pCisjZW5kaWYgIC8v
IFRBUkdFVF9PU19NQUMKKyNlbmRpZiAgLy8gX19BUFBMRV9fCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL0Rpc3BsYXlDR0wu
bW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2ds
L0Rpc3BsYXlDR0wubW0KaW5kZXggN2JhMGY4YzMwN2E2ODY3ZTk2ODgwMTYyMTVkZmIwMGNkMzMx
ODU0NS4uOTM4OWRkZDUwOTljNDhiNDViYmEzZTk2NDhhOTk4ZDg1NjAxMGYwYyAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9E
aXNwbGF5Q0dMLm1tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9nbC9jZ2wvRGlzcGxheUNHTC5tbQpAQCAtNCwyNSArNCwyOCBAQAogLy8gZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCiAKLS8vIERpc3BsYXlDR0wubW06IENHTCBpbXBsZW1l
bnRhdGlvbiBvZiBlZ2w6OkRpc3BsYXkKKy8vIERpc3BsYXlDR0wuY3BwOiBDR0wgaW1wbGVtZW50
YXRpb24gb2YgZWdsOjpEaXNwbGF5CiAKLSNpZiBfX2hhc19pbmNsdWRlKDxDb2NvYS9Db2NvYS5o
PikKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpbmNsdWRlIDxUYXJnZXRDb25kaXRpb25hbHMu
aD4KKyNpZiBUQVJHRVRfT1NfTUFDCiAKLSMgICAgaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIv
Z2wvY2dsL0Rpc3BsYXlDR0wuaCIKKyNpbXBvcnQgImxpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9E
aXNwbGF5Q0dMLmgiCiAKLSMgICAgaW1wb3J0IDxDb2NvYS9Db2NvYS5oPgotIyAgICBpbmNsdWRl
IDxFR0wvZWdsZXh0Lmg+Ci0jICAgIGluY2x1ZGUgPGRsZmNuLmg+CisjaW1wb3J0ICJjb21tb24v
ZGVidWcuaCIKKyNpbXBvcnQgImdwdV9pbmZvX3V0aWwvU3lzdGVtSW5mby5oIgorI2ltcG9ydCAi
bGliQU5HTEUvRGlzcGxheS5oIgorI2ltcG9ydCAibGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL0Nv
bnRleHRDR0wuaCIKKyNpbXBvcnQgImxpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9EZXZpY2VDR0wu
aCIKKyNpbXBvcnQgImxpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9JT1N1cmZhY2VTdXJmYWNlQ0dM
LmgiCisjaW1wb3J0ICJsaWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvUGJ1ZmZlclN1cmZhY2VDR0wu
aCIKKyNpbXBvcnQgImxpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9SZW5kZXJlckNHTC5oIgorI2lt
cG9ydCAibGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL1dpbmRvd1N1cmZhY2VDR0wuaCIKIAotIyAg
ICBpbmNsdWRlICJjb21tb24vZGVidWcuaCIKLSMgICAgaW5jbHVkZSAiZ3B1X2luZm9fdXRpbC9T
eXN0ZW1JbmZvLmgiCi0jICAgIGluY2x1ZGUgImxpYkFOR0xFL0Rpc3BsYXkuaCIKLSMgICAgaW5j
bHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL0NvbnRleHRDR0wuaCIKLSMgICAgaW5jbHVk
ZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL0RldmljZUNHTC5oIgotIyAgICBpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvSU9TdXJmYWNlU3VyZmFjZUNHTC5oIgotIyAgICBpbmNs
dWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvUGJ1ZmZlclN1cmZhY2VDR0wuaCIKLSMgICAg
aW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL1JlbmRlcmVyQ0dMLmgiCi0jICAgIGlu
Y2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9XaW5kb3dTdXJmYWNlQ0dMLmgiCisjaW1w
b3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPE9wZW5HTC9PcGVuR0wuaD4K
KyNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgorI2ltcG9ydCA8ZGxmY24uaD4KIAog
bmFtZXNwYWNlCiB7CkBAIC00NDYsNCArNDQ5LDUgQEAgdm9pZCBEaXNwbGF5Q0dMOjpwb3B1bGF0
ZUZlYXR1cmVMaXN0KGFuZ2xlOjpGZWF0dXJlTGlzdCAqZmVhdHVyZXMpCiB9CiB9CiAKLSNlbmRp
ZiAgLy8gX19oYXNfaW5jbHVkZSg8Q29jb2EvQ29jb2EuaD4pCisjZW5kaWYgIC8vIFRBUkdFVF9P
U19NQUMKKyNlbmRpZiAgLy8gX19BUFBMRV9fCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL0lPU3VyZmFjZVN1cmZhY2VDR0wu
Y3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2Nn
bC9JT1N1cmZhY2VTdXJmYWNlQ0dMLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44Y2Y5Mjk3YjYwZTI3NWQ0YmRi
ZThkMTk0MzY3YWIzMWJhZDMwYzZhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9JT1N1cmZhY2VTdXJmYWNlQ0dM
LmNwcApAQCAtMCwwICsxLDMzOSBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisv
LyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gUEJ1ZmZlclN1cmZhY2VDR0wu
Y3BwOiBhbiBpbXBsZW1lbnRhdGlvbiBvZiBQQnVmZmVycyBjcmVhdGVkIGZyb20gSU9TdXJmYWNl
cyB1c2luZworLy8gICAgICAgICAgICAgICAgICAgICAgICBFR0xfQU5HTEVfaW9zdXJmYWNlX2Ns
aWVudF9idWZmZXIKKworI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2luY2x1ZGUgPFRhcmdldENv
bmRpdGlvbmFscy5oPgorI2lmIFRBUkdFVF9PU19NQUMKKworI2luY2x1ZGUgImxpYkFOR0xFL3Jl
bmRlcmVyL2dsL2NnbC9JT1N1cmZhY2VTdXJmYWNlQ0dMLmgiCisKKyNpbmNsdWRlICJjb21tb24v
ZGVidWcuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9BdHRyaWJ1dGVNYXAuaCIKKyNpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci9nbC9CbGl0R0wuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJl
ci9nbC9GcmFtZWJ1ZmZlckdMLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvRnVu
Y3Rpb25zR0wuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9SZW5kZXJlckdMLmgi
CisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvU3RhdGVNYW5hZ2VyR0wuaCIKKyNpbmNs
dWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9UZXh0dXJlR0wuaCIKKyNpbmNsdWRlICJsaWJBTkdM
RS9yZW5kZXJlci9nbC9jZ2wvRGlzcGxheUNHTC5oIgorCisjaW5jbHVkZSA8SU9TdXJmYWNlL0lP
U3VyZmFjZS5oPgorI2luY2x1ZGUgPE9wZW5HTC9PcGVuR0wuaD4KKyNpbmNsdWRlIDxPcGVuR0wv
Q0dMSU9TdXJmYWNlLmg+CisKK25hbWVzcGFjZSByeAoreworCituYW1lc3BhY2UKK3sKKworc3Ry
dWN0IElPU3VyZmFjZUZvcm1hdEluZm8KK3sKKyAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQ7Cisg
ICAgR0xlbnVtIHR5cGU7CisKKyAgICBzaXplX3QgY29tcG9uZW50Qnl0ZXM7CisKKyAgICBHTGVu
dW0gbmF0aXZlSW50ZXJuYWxGb3JtYXQ7CisgICAgR0xlbnVtIG5hdGl2ZUZvcm1hdDsKKyAgICBH
TGVudW0gbmF0aXZlVHlwZTsKK307CisKKy8vIGNsYW5nLWZvcm1hdCBvZmYKK3N0YXRpYyBjb25z
dCBJT1N1cmZhY2VGb3JtYXRJbmZvIGtJT1N1cmZhY2VGb3JtYXRzW10gPSB7CisgICAge0dMX1JF
RCwgICAgICBHTF9VTlNJR05FRF9CWVRFLCAgMSwgR0xfUkVELCAgR0xfUkVELCAgR0xfVU5TSUdO
RURfQllURSAgICAgICAgICAgfSwKKyAgICB7R0xfUjE2VUksICAgIEdMX1VOU0lHTkVEX1NIT1JU
LCAyLCBHTF9SRUQsICBHTF9SRUQsICBHTF9VTlNJR05FRF9TSE9SVCAgICAgICAgICB9LAorICAg
IHtHTF9SRywgICAgICAgR0xfVU5TSUdORURfQllURSwgIDIsIEdMX1JHLCAgIEdMX1JHLCAgIEdM
X1VOU0lHTkVEX0JZVEUgICAgICAgICAgIH0sCisgICAge0dMX1JHQiwgICAgICBHTF9VTlNJR05F
RF9CWVRFLCAgNCwgR0xfQkdSQSwgR0xfUkdCQSwgR0xfVU5TSUdORURfSU5UXzhfOF84XzhfUkVW
fSwKKyAgICB7R0xfQkdSQV9FWFQsIEdMX1VOU0lHTkVEX0JZVEUsICA0LCBHTF9CR1JBLCBHTF9S
R0JBLCBHTF9VTlNJR05FRF9JTlRfOF84XzhfOF9SRVZ9LAorICAgIHtHTF9SR0JBLCAgICAgR0xf
SEFMRl9GTE9BVCwgICAgIDgsIEdMX1JHQkEsIEdMX1JHQkEsIEdMX0hBTEZfRkxPQVQgICAgICAg
ICAgICAgIH0sCit9OworLy8gY2xhbmctZm9ybWF0IG9uCisKK2ludCBGaW5kSU9TdXJmYWNlRm9y
bWF0SW5kZXgoR0xlbnVtIGludGVybmFsRm9ybWF0LCBHTGVudW0gdHlwZSkKK3sKKyAgICBmb3Ig
KGludCBpID0gMDsgaSA8IHN0YXRpY19jYXN0PGludD4oQXJyYXlTaXplKGtJT1N1cmZhY2VGb3Jt
YXRzKSk7ICsraSkKKyAgICB7CisgICAgICAgIGNvbnN0IGF1dG8gJmZvcm1hdEluZm8gPSBrSU9T
dXJmYWNlRm9ybWF0c1tpXTsKKyAgICAgICAgaWYgKGZvcm1hdEluZm8uaW50ZXJuYWxGb3JtYXQg
PT0gaW50ZXJuYWxGb3JtYXQgJiYgZm9ybWF0SW5mby50eXBlID09IHR5cGUpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybiBpOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiAtMTsK
K30KKworfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorCitJT1N1cmZhY2VTdXJmYWNlQ0dMOjpJ
T1N1cmZhY2VTdXJmYWNlQ0dMKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0dMQ29udGV4dE9iaiBjZ2xDb250
ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xDbGllbnRC
dWZmZXIgYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykKKyAgICA6IFN1cmZhY2VHTChzdGF0ZSks
CisgICAgICBtQ0dMQ29udGV4dChjZ2xDb250ZXh0KSwKKyAgICAgIG1JT1N1cmZhY2UobnVsbHB0
ciksCisgICAgICBtV2lkdGgoMCksCisgICAgICBtSGVpZ2h0KDApLAorICAgICAgbVBsYW5lKDAp
LAorICAgICAgbUZvcm1hdEluZGV4KC0xKSwKKyAgICAgIG1BbHBoYUluaXRpYWxpemVkKGZhbHNl
KQoreworICAgIC8vIEtlZXAgcmVmZXJlbmNlIHRvIHRoZSBJT1N1cmZhY2Ugc28gaXQgZG9lc24n
dCBnZXQgZGVsZXRlZCB3aGlsZSB0aGUgcGJ1ZmZlciBleGlzdHMuCisgICAgbUlPU3VyZmFjZSA9
IHJlaW50ZXJwcmV0X2Nhc3Q8SU9TdXJmYWNlUmVmPihidWZmZXIpOworICAgIENGUmV0YWluKG1J
T1N1cmZhY2UpOworCisgICAgLy8gRXh0cmFjdCBhdHRyaWJzIHVzZWZ1bCBmb3IgdGhlIGNhbGwg
dG8gQ0dMVGV4SW1hZ2VJT1N1cmZhY2UyRAorICAgIG1XaWR0aCAgPSBzdGF0aWNfY2FzdDxpbnQ+
KGF0dHJpYnMuZ2V0KEVHTF9XSURUSCkpOworICAgIG1IZWlnaHQgPSBzdGF0aWNfY2FzdDxpbnQ+
KGF0dHJpYnMuZ2V0KEVHTF9IRUlHSFQpKTsKKyAgICBtUGxhbmUgID0gc3RhdGljX2Nhc3Q8aW50
PihhdHRyaWJzLmdldChFR0xfSU9TVVJGQUNFX1BMQU5FX0FOR0xFKSk7CisKKyAgICBFR0xBdHRy
aWIgaW50ZXJuYWxGb3JtYXQgPSBhdHRyaWJzLmdldChFR0xfVEVYVFVSRV9JTlRFUk5BTF9GT1JN
QVRfQU5HTEUpOworICAgIEVHTEF0dHJpYiB0eXBlICAgICAgICAgICA9IGF0dHJpYnMuZ2V0KEVH
TF9URVhUVVJFX1RZUEVfQU5HTEUpOworICAgIG1Gb3JtYXRJbmRleCA9CisgICAgICAgIEZpbmRJ
T1N1cmZhY2VGb3JtYXRJbmRleChzdGF0aWNfY2FzdDxHTGVudW0+KGludGVybmFsRm9ybWF0KSwg
c3RhdGljX2Nhc3Q8R0xlbnVtPih0eXBlKSk7CisgICAgQVNTRVJUKG1Gb3JtYXRJbmRleCA+PSAw
KTsKKworICAgIG1BbHBoYUluaXRpYWxpemVkID0gIWhhc0VtdWxhdGVkQWxwaGFDaGFubmVsKCk7
Cit9CisKK0lPU3VyZmFjZVN1cmZhY2VDR0w6On5JT1N1cmZhY2VTdXJmYWNlQ0dMKCkKK3sKKyAg
ICBpZiAobUlPU3VyZmFjZSAhPSBudWxscHRyKQorICAgIHsKKyAgICAgICAgQ0ZSZWxlYXNlKG1J
T1N1cmZhY2UpOworICAgICAgICBtSU9TdXJmYWNlID0gbnVsbHB0cjsKKyAgICB9Cit9CisKK2Vn
bDo6RXJyb3IgSU9TdXJmYWNlU3VyZmFjZUNHTDo6aW5pdGlhbGl6ZShjb25zdCBlZ2w6OkRpc3Bs
YXkgKmRpc3BsYXkpCit7CisgICAgcmV0dXJuIGVnbDo6Tm9FcnJvcigpOworfQorCitlZ2w6OkVy
cm9yIElPU3VyZmFjZVN1cmZhY2VDR0w6Om1ha2VDdXJyZW50KGNvbnN0IGdsOjpDb250ZXh0ICpj
b250ZXh0KQoreworICAgIHJldHVybiBlZ2w6Ok5vRXJyb3IoKTsKK30KKworZWdsOjpFcnJvciBJ
T1N1cmZhY2VTdXJmYWNlQ0dMOjp1bk1ha2VDdXJyZW50KGNvbnN0IGdsOjpDb250ZXh0ICpjb250
ZXh0KQoreworICAgIEdldEZ1bmN0aW9uc0dMKGNvbnRleHQpLT5mbHVzaCgpOworICAgIHJldHVy
biBlZ2w6Ok5vRXJyb3IoKTsKK30KKworZWdsOjpFcnJvciBJT1N1cmZhY2VTdXJmYWNlQ0dMOjpz
d2FwKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0KQoreworICAgIHJldHVybiBlZ2w6Ok5vRXJy
b3IoKTsKK30KKworZWdsOjpFcnJvciBJT1N1cmZhY2VTdXJmYWNlQ0dMOjpwb3N0U3ViQnVmZmVy
KGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEVHTGludCB4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEVHTGludCB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEVHTGludCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgaGVpZ2h0KQoreworICAgIFVOUkVBQ0hBQkxF
KCk7CisgICAgcmV0dXJuIGVnbDo6Tm9FcnJvcigpOworfQorCitlZ2w6OkVycm9yIElPU3VyZmFj
ZVN1cmZhY2VDR0w6OnF1ZXJ5U3VyZmFjZVBvaW50ZXJBTkdMRShFR0xpbnQgYXR0cmlidXRlLCB2
b2lkICoqdmFsdWUpCit7CisgICAgVU5SRUFDSEFCTEUoKTsKKyAgICByZXR1cm4gZWdsOjpOb0Vy
cm9yKCk7Cit9CisKK2VnbDo6RXJyb3IgSU9TdXJmYWNlU3VyZmFjZUNHTDo6YmluZFRleEltYWdl
KGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2w6OlRleHR1cmUgKnRleHR1cmUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgYnVmZmVyKQoreworICAgIFN0YXRl
TWFuYWdlckdMICpzdGF0ZU1hbmFnZXIgPSBHZXRTdGF0ZU1hbmFnZXJHTChjb250ZXh0KTsKKwor
ICAgIGNvbnN0IFRleHR1cmVHTCAqdGV4dHVyZUdMID0gR2V0SW1wbEFzPFRleHR1cmVHTD4odGV4
dHVyZSk7CisgICAgR0x1aW50IHRleHR1cmVJRCAgICAgICAgICAgPSB0ZXh0dXJlR0wtPmdldFRl
eHR1cmVJRCgpOworICAgIHN0YXRlTWFuYWdlci0+YmluZFRleHR1cmUoZ2w6OlRleHR1cmVUeXBl
OjpSZWN0YW5nbGUsIHRleHR1cmVJRCk7CisKKyAgICBjb25zdCBhdXRvICZmb3JtYXQgPSBrSU9T
dXJmYWNlRm9ybWF0c1ttRm9ybWF0SW5kZXhdOworICAgIENHTEVycm9yIGVycm9yID0gQ0dMVGV4
SW1hZ2VJT1N1cmZhY2UyRChtQ0dMQ29udGV4dCwgR0xfVEVYVFVSRV9SRUNUQU5HTEUsIGZvcm1h
dC5uYXRpdmVGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1XaWR0aCwgbUhlaWdodCwgZm9ybWF0Lm5hdGl2ZUludGVybmFsRm9ybWF0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQubmF0aXZlVHlwZSwg
bUlPU3VyZmFjZSwgbVBsYW5lKTsKKworICAgIGlmIChlcnJvciAhPSBrQ0dMTm9FcnJvcikKKyAg
ICB7CisgICAgICAgIHJldHVybiBlZ2w6OkVnbENvbnRleHRMb3N0KCkgPDwgIkNHTFRleEltYWdl
SU9TdXJmYWNlMkQgZmFpbGVkOiAiIDw8IENHTEVycm9yU3RyaW5nKGVycm9yKTsKKyAgICB9CisK
KyAgICBpZiAoSXNFcnJvcihpbml0aWFsaXplQWxwaGFDaGFubmVsKGNvbnRleHQsIHRleHR1cmVJ
RCkpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6RWdsQ29udGV4dExvc3QoKSA8PCAiRmFp
bGVkIHRvIGluaXRpYWxpemUgSU9TdXJmYWNlIGFscGhhIGNoYW5uZWwuIjsKKyAgICB9CisKKyAg
ICByZXR1cm4gZWdsOjpOb0Vycm9yKCk7Cit9CisKK2VnbDo6RXJyb3IgSU9TdXJmYWNlU3VyZmFj
ZUNHTDo6cmVsZWFzZVRleEltYWdlKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LCBFR0xpbnQg
YnVmZmVyKQoreworICAgIGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMgPSBHZXRGdW5jdGlv
bnNHTChjb250ZXh0KTsKKyAgICBmdW5jdGlvbnMtPmZsdXNoKCk7CisgICAgcmV0dXJuIGVnbDo6
Tm9FcnJvcigpOworfQorCit2b2lkIElPU3VyZmFjZVN1cmZhY2VDR0w6OnNldFN3YXBJbnRlcnZh
bChFR0xpbnQgaW50ZXJ2YWwpCit7CisgICAgVU5SRUFDSEFCTEUoKTsKK30KKworRUdMaW50IElP
U3VyZmFjZVN1cmZhY2VDR0w6OmdldFdpZHRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVdpZHRo
OworfQorCitFR0xpbnQgSU9TdXJmYWNlU3VyZmFjZUNHTDo6Z2V0SGVpZ2h0KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbUhlaWdodDsKK30KKworRUdMaW50IElPU3VyZmFjZVN1cmZhY2VDR0w6Omlz
UG9zdFN1YkJ1ZmZlclN1cHBvcnRlZCgpIGNvbnN0Cit7CisgICAgVU5SRUFDSEFCTEUoKTsKKyAg
ICByZXR1cm4gRUdMX0ZBTFNFOworfQorCitFR0xpbnQgSU9TdXJmYWNlU3VyZmFjZUNHTDo6Z2V0
U3dhcEJlaGF2aW9yKCkgY29uc3QKK3sKKyAgICAvLyBOL0EgYmVjYXVzZSB5b3UgY2FuJ3QgTWFr
ZUN1cnJlbnQgYW4gSU9TdXJmYWNlLCByZXR1cm4gYW55IHZhbGlkIHZhbHVlLgorICAgIHJldHVy
biBFR0xfQlVGRkVSX1BSRVNFUlZFRDsKK30KKworLy8gc3RhdGljCitib29sIElPU3VyZmFjZVN1
cmZhY2VDR0w6OnZhbGlkYXRlQXR0cmlidXRlcyhFR0xDbGllbnRCdWZmZXIgYnVmZmVyLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRy
aWJ1dGVNYXAgJmF0dHJpYnMpCit7CisgICAgSU9TdXJmYWNlUmVmIGlvU3VyZmFjZSA9IHJlaW50
ZXJwcmV0X2Nhc3Q8SU9TdXJmYWNlUmVmPihidWZmZXIpOworCisgICAgLy8gVGhlIHBsYW5lIG11
c3QgZXhpc3QgZm9yIHRoaXMgSU9TdXJmYWNlLiBJT1N1cmZhY2VHZXRQbGFuZUNvdW50IGNhbiBy
ZXR1cm4gMCBmb3Igbm9uLXBsYW5hcgorICAgIC8vIGlvU3VyZmFjZXMgYnV0IHdlIHdpbGwgdHJl
YXQgbm9uLXBsYW5hciBsaWtlIGl0IGlzIGEgc2luZ2xlIHBsYW5lLgorICAgIHNpemVfdCBzdXJm
YWNlUGxhbmVDb3VudCA9IHN0ZDo6bWF4KHNpemVfdCgxKSwgSU9TdXJmYWNlR2V0UGxhbmVDb3Vu
dChpb1N1cmZhY2UpKTsKKyAgICBFR0xBdHRyaWIgcGxhbmUgICAgICAgICAgPSBhdHRyaWJzLmdl
dChFR0xfSU9TVVJGQUNFX1BMQU5FX0FOR0xFKTsKKyAgICBpZiAocGxhbmUgPCAwIHx8IHN0YXRp
Y19jYXN0PHNpemVfdD4ocGxhbmUpID49IHN1cmZhY2VQbGFuZUNvdW50KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIFRoZSB3aWR0aCBoZWlnaHQgc3BlY2lm
aWVkIG11c3QgYmUgYXQgbGVhc3QgKDEsIDEpIGFuZCBhdCBtb3N0IHRoZSBwbGFuZSBzaXplCisg
ICAgRUdMQXR0cmliIHdpZHRoICA9IGF0dHJpYnMuZ2V0KEVHTF9XSURUSCk7CisgICAgRUdMQXR0
cmliIGhlaWdodCA9IGF0dHJpYnMuZ2V0KEVHTF9IRUlHSFQpOworICAgIGlmICh3aWR0aCA8PSAw
IHx8IHN0YXRpY19jYXN0PHNpemVfdD4od2lkdGgpID4gSU9TdXJmYWNlR2V0V2lkdGhPZlBsYW5l
KGlvU3VyZmFjZSwgcGxhbmUpIHx8CisgICAgICAgIGhlaWdodCA8PSAwIHx8IHN0YXRpY19jYXN0
PHNpemVfdD4oaGVpZ2h0KSA+IElPU3VyZmFjZUdldEhlaWdodE9mUGxhbmUoaW9TdXJmYWNlLCBw
bGFuZSkpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gRmlu
ZCB0aGlzIElPU3VyZmFjZSBmb3JtYXQKKyAgICBFR0xBdHRyaWIgaW50ZXJuYWxGb3JtYXQgPSBh
dHRyaWJzLmdldChFR0xfVEVYVFVSRV9JTlRFUk5BTF9GT1JNQVRfQU5HTEUpOworICAgIEVHTEF0
dHJpYiB0eXBlICAgICAgICAgICA9IGF0dHJpYnMuZ2V0KEVHTF9URVhUVVJFX1RZUEVfQU5HTEUp
OworCisgICAgaW50IGZvcm1hdEluZGV4ID0KKyAgICAgICAgRmluZElPU3VyZmFjZUZvcm1hdElu
ZGV4KHN0YXRpY19jYXN0PEdMZW51bT4oaW50ZXJuYWxGb3JtYXQpLCBzdGF0aWNfY2FzdDxHTGVu
dW0+KHR5cGUpKTsKKworICAgIGlmIChmb3JtYXRJbmRleCA8IDApCisgICAgeworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gQ2hlY2sgdGhhdCB0aGUgZm9ybWF0IG1hdGNo
ZXMgdGhpcyBJT1N1cmZhY2UgcGxhbmUKKyAgICBpZiAoSU9TdXJmYWNlR2V0Qnl0ZXNQZXJFbGVt
ZW50T2ZQbGFuZShpb1N1cmZhY2UsIHBsYW5lKSAhPQorICAgICAgICBrSU9TdXJmYWNlRm9ybWF0
c1tmb3JtYXRJbmRleF0uY29tcG9uZW50Qnl0ZXMpCisgICAgeworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKKy8vIFdyYXBzIGEgRnJhbWVidWZm
ZXJHTCB0byBob29rIHRoZSBkZXN0cm95IGZ1bmN0aW9uIHRvIGRlbGV0ZSB0aGUgdGV4dHVyZSBh
c3NvY2lhdGVkIHdpdGggdGhlCisvLyBmcmFtZWJ1ZmZlci4KK2NsYXNzIElPU3VyZmFjZUZyYW1l
YnVmZmVyIDogcHVibGljIEZyYW1lYnVmZmVyR0wKK3sKKyAgcHVibGljOgorICAgIElPU3VyZmFj
ZUZyYW1lYnVmZmVyKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlclN0YXRlICZkYXRhLAorICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgdGV4dHVyZUlkLAorICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNEZWZhdWx0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZW11bGF0ZWRBbHBoYSkKKyAgICAgICAgOiBG
cmFtZWJ1ZmZlckdMKGRhdGEsIGlkLCBpc0RlZmF1bHQsIGVtdWxhdGVkQWxwaGEpLCBtVGV4dHVy
ZUlkKHRleHR1cmVJZCkKKyAgICB7fQorICAgIHZvaWQgZGVzdHJveShjb25zdCBnbDo6Q29udGV4
dCAqY29udGV4dCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIEdldEZ1bmN0aW9uc0dMKGNvbnRl
eHQpLT5kZWxldGVUZXh0dXJlcygxLCAmbVRleHR1cmVJZCk7CisgICAgICAgIEZyYW1lYnVmZmVy
R0w6OmRlc3Ryb3koY29udGV4dCk7CisgICAgfQorCisgIHByaXZhdGU6CisgICAgR0x1aW50IG1U
ZXh0dXJlSWQ7Cit9OworCitGcmFtZWJ1ZmZlckltcGwgKklPU3VyZmFjZVN1cmZhY2VDR0w6OmNy
ZWF0ZURlZmF1bHRGcmFtZWJ1ZmZlcihjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGdsOjpGcmFtZWJ1ZmZlclN0YXRlICZzdGF0ZSkKK3sKKyAgICBjb25zdCBGdW5jdGlv
bnNHTCAqZnVuY3Rpb25zID0gR2V0RnVuY3Rpb25zR0woY29udGV4dCk7CisgICAgU3RhdGVNYW5h
Z2VyR0wgKnN0YXRlTWFuYWdlciA9IEdldFN0YXRlTWFuYWdlckdMKGNvbnRleHQpOworCisgICAg
R0x1aW50IHRleHR1cmUgPSAwOworICAgIGZ1bmN0aW9ucy0+Z2VuVGV4dHVyZXMoMSwgJnRleHR1
cmUpOworICAgIGNvbnN0IGF1dG8gJmZvcm1hdCA9IGtJT1N1cmZhY2VGb3JtYXRzW21Gb3JtYXRJ
bmRleF07CisgICAgc3RhdGVNYW5hZ2VyLT5iaW5kVGV4dHVyZShnbDo6VGV4dHVyZVR5cGU6OlJl
Y3RhbmdsZSwgdGV4dHVyZSk7CisgICAgQ0dMRXJyb3IgZXJyb3IgPSBDR0xUZXhJbWFnZUlPU3Vy
ZmFjZTJEKG1DR0xDb250ZXh0LCBHTF9URVhUVVJFX1JFQ1RBTkdMRSwgZm9ybWF0Lm5hdGl2ZUZv
cm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVdpZHRo
LCBtSGVpZ2h0LCBmb3JtYXQubmF0aXZlSW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdC5uYXRpdmVUeXBlLCBtSU9TdXJmYWNl
LCBtUGxhbmUpOworICAgIGlmIChlcnJvciAhPSBrQ0dMTm9FcnJvcikKKyAgICB7CisgICAgICAg
IEVSUigpIDw8ICJDR0xUZXhJbWFnZUlPU3VyZmFjZTJEIGZhaWxlZDogIiA8PCBDR0xFcnJvclN0
cmluZyhlcnJvcik7CisgICAgfQorICAgIEFTU0VSVChlcnJvciA9PSBrQ0dMTm9FcnJvcik7CisK
KyAgICBpZiAoSXNFcnJvcihpbml0aWFsaXplQWxwaGFDaGFubmVsKGNvbnRleHQsIHRleHR1cmUp
KSkKKyAgICB7CisgICAgICAgIEVSUigpIDw8ICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBJT1N1cmZh
Y2UgYWxwaGEgY2hhbm5lbC4iOworICAgIH0KKworICAgIEdMdWludCBmcmFtZWJ1ZmZlciA9IDA7
CisgICAgZnVuY3Rpb25zLT5nZW5GcmFtZWJ1ZmZlcnMoMSwgJmZyYW1lYnVmZmVyKTsKKyAgICBz
dGF0ZU1hbmFnZXItPmJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgZnJhbWVidWZmZXIp
OworICAgIHN0YXRlTWFuYWdlci0+YmluZFRleHR1cmUoZ2w6OlRleHR1cmVUeXBlOjpSZWN0YW5n
bGUsIHRleHR1cmUpOworICAgIGZ1bmN0aW9ucy0+ZnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJB
TUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFX1JFQ1RBTkdMRSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHR1cmUsIDApOworCisgICAgcmV0
dXJuIG5ldyBJT1N1cmZhY2VGcmFtZWJ1ZmZlcihzdGF0ZSwgZnJhbWVidWZmZXIsIHRleHR1cmUs
IHRydWUsIGhhc0VtdWxhdGVkQWxwaGFDaGFubmVsKCkpOworfQorCithbmdsZTo6UmVzdWx0IElP
U3VyZmFjZVN1cmZhY2VDR0w6OmluaXRpYWxpemVBbHBoYUNoYW5uZWwoY29uc3QgZ2w6OkNvbnRl
eHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IHRleHR1cmUpCit7CisgICAgaWYgKG1BbHBoYUluaXRpYWxp
emVkKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOworICAg
IH0KKworICAgIEJsaXRHTCAqYmxpdHRlciA9IEdldEJsaXRHTChjb250ZXh0KTsKKyAgICBBTkdM
RV9UUlkoYmxpdHRlci0+Y2xlYXJSZW5kZXJhYmxlVGV4dHVyZUFscGhhVG9PbmUoY29udGV4dCwg
dGV4dHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ2w6OlRleHR1cmVUYXJnZXQ6OlJlY3RhbmdsZSwgMCkpOworICAgIG1BbHBoYUlu
aXRpYWxpemVkID0gdHJ1ZTsKKyAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7Cit9
CisKK2Jvb2wgSU9TdXJmYWNlU3VyZmFjZUNHTDo6aGFzRW11bGF0ZWRBbHBoYUNoYW5uZWwoKSBj
b25zdAoreworICAgIGNvbnN0IGF1dG8gJmZvcm1hdCA9IGtJT1N1cmZhY2VGb3JtYXRzW21Gb3Jt
YXRJbmRleF07CisgICAgcmV0dXJuIGZvcm1hdC5pbnRlcm5hbEZvcm1hdCA9PSBHTF9SR0I7Cit9
CisKK30gIC8vIG5hbWVzcGFjZSByeAorCisjZW5kaWYgIC8vIFRBUkdFVF9PU19NQUMKKyNlbmRp
ZiAgLy8gX19BUFBMRV9fCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL0lPU3VyZmFjZVN1cmZhY2VDR0wubW0gYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL0lPU3VyZmFjZVN1
cmZhY2VDR0wubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzYTBhM2Y1YjFiOGJh
OWYyMmE3Njg1Mzk4MTRiN2IzMTM5YzhiYWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2dsL2NnbC9JT1N1cmZhY2VTdXJmYWNlQ0dMLm1tCisrKyAvZGV2L251bGwKQEAgLTEs
MzM2ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLS8vIFBCdWZmZXJTdXJmYWNlQ0dMLmNwcDogYW4gaW1w
bGVtZW50YXRpb24gb2YgUEJ1ZmZlcnMgY3JlYXRlZCBmcm9tIElPU3VyZmFjZXMgdXNpbmcKLS8v
ICAgICAgICAgICAgICAgICAgICAgICAgRUdMX0FOR0xFX2lvc3VyZmFjZV9jbGllbnRfYnVmZmVy
Ci0KLSNpZiBfX2hhc19pbmNsdWRlKDxDb2NvYS9Db2NvYS5oPikKLQotIyAgICBpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvSU9TdXJmYWNlU3VyZmFjZUNHTC5oIgotCi0jICAgIGlt
cG9ydCA8Q29jb2EvQ29jb2EuaD4KLSMgICAgaW5jbHVkZSA8SU9TdXJmYWNlL0lPU3VyZmFjZS5o
PgotIyAgICBpbmNsdWRlIDxPcGVuR0wvQ0dMSU9TdXJmYWNlLmg+Ci0KLSMgICAgaW5jbHVkZSAi
Y29tbW9uL2RlYnVnLmgiCi0jICAgIGluY2x1ZGUgImxpYkFOR0xFL0F0dHJpYnV0ZU1hcC5oIgot
IyAgICBpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9CbGl0R0wuaCIKLSMgICAgaW5jbHVk
ZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvRnJhbWVidWZmZXJHTC5oIgotIyAgICBpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci9nbC9GdW5jdGlvbnNHTC5oIgotIyAgICBpbmNsdWRlICJsaWJBTkdM
RS9yZW5kZXJlci9nbC9SZW5kZXJlckdMLmgiCi0jICAgIGluY2x1ZGUgImxpYkFOR0xFL3JlbmRl
cmVyL2dsL1N0YXRlTWFuYWdlckdMLmgiCi0jICAgIGluY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L2dsL1RleHR1cmVHTC5oIgotIyAgICBpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wv
RGlzcGxheUNHTC5oIgotCi1uYW1lc3BhY2UgcngKLXsKLQotbmFtZXNwYWNlCi17Ci0KLXN0cnVj
dCBJT1N1cmZhY2VGb3JtYXRJbmZvCi17Ci0gICAgR0xlbnVtIGludGVybmFsRm9ybWF0OwotICAg
IEdMZW51bSB0eXBlOwotCi0gICAgc2l6ZV90IGNvbXBvbmVudEJ5dGVzOwotCi0gICAgR0xlbnVt
IG5hdGl2ZUludGVybmFsRm9ybWF0OwotICAgIEdMZW51bSBuYXRpdmVGb3JtYXQ7Ci0gICAgR0xl
bnVtIG5hdGl2ZVR5cGU7Ci19OwotCi0vLyBjbGFuZy1mb3JtYXQgb2ZmCi1zdGF0aWMgY29uc3Qg
SU9TdXJmYWNlRm9ybWF0SW5mbyBrSU9TdXJmYWNlRm9ybWF0c1tdID0gewotICAgIHtHTF9SRUQs
ICAgICAgR0xfVU5TSUdORURfQllURSwgIDEsIEdMX1JFRCwgIEdMX1JFRCwgIEdMX1VOU0lHTkVE
X0JZVEUgICAgICAgICAgIH0sCi0gICAge0dMX1IxNlVJLCAgICBHTF9VTlNJR05FRF9TSE9SVCwg
MiwgR0xfUkVELCAgR0xfUkVELCAgR0xfVU5TSUdORURfU0hPUlQgICAgICAgICAgfSwKLSAgICB7
R0xfUkcsICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsICAyLCBHTF9SRywgICBHTF9SRywgICBHTF9V
TlNJR05FRF9CWVRFICAgICAgICAgICB9LAotICAgIHtHTF9SR0IsICAgICAgR0xfVU5TSUdORURf
QllURSwgIDQsIEdMX0JHUkEsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0lOVF84XzhfOF84X1JFVn0s
Ci0gICAge0dMX0JHUkFfRVhULCBHTF9VTlNJR05FRF9CWVRFLCAgNCwgR0xfQkdSQSwgR0xfUkdC
QSwgR0xfVU5TSUdORURfSU5UXzhfOF84XzhfUkVWfSwKLSAgICB7R0xfUkdCQSwgICAgIEdMX0hB
TEZfRkxPQVQsICAgICA4LCBHTF9SR0JBLCBHTF9SR0JBLCBHTF9IQUxGX0ZMT0FUICAgICAgICAg
ICAgICB9LAotfTsKLS8vIGNsYW5nLWZvcm1hdCBvbgotCi1pbnQgRmluZElPU3VyZmFjZUZvcm1h
dEluZGV4KEdMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0xlbnVtIHR5cGUpCi17Ci0gICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBzdGF0aWNfY2FzdDxpbnQ+KEFycmF5U2l6ZShrSU9TdXJmYWNlRm9ybWF0
cykpOyArK2kpCi0gICAgewotICAgICAgICBjb25zdCBhdXRvICZmb3JtYXRJbmZvID0ga0lPU3Vy
ZmFjZUZvcm1hdHNbaV07Ci0gICAgICAgIGlmIChmb3JtYXRJbmZvLmludGVybmFsRm9ybWF0ID09
IGludGVybmFsRm9ybWF0ICYmIGZvcm1hdEluZm8udHlwZSA9PSB0eXBlKQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gaTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gLTE7Ci19
Ci0KLX0gIC8vIGFub255bW91cyBuYW1lc3BhY2UKLQotSU9TdXJmYWNlU3VyZmFjZUNHTDo6SU9T
dXJmYWNlU3VyZmFjZUNHTChjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENHTENvbnRleHRPYmogY2dsQ29udGV4
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMQ2xpZW50QnVm
ZmVyIGJ1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCi0gICAgOiBTdXJmYWNlR0woc3RhdGUpLAot
ICAgICAgbUNHTENvbnRleHQoY2dsQ29udGV4dCksCi0gICAgICBtSU9TdXJmYWNlKG51bGxwdHIp
LAotICAgICAgbVdpZHRoKDApLAotICAgICAgbUhlaWdodCgwKSwKLSAgICAgIG1QbGFuZSgwKSwK
LSAgICAgIG1Gb3JtYXRJbmRleCgtMSksCi0gICAgICBtQWxwaGFJbml0aWFsaXplZChmYWxzZSkK
LXsKLSAgICAvLyBLZWVwIHJlZmVyZW5jZSB0byB0aGUgSU9TdXJmYWNlIHNvIGl0IGRvZXNuJ3Qg
Z2V0IGRlbGV0ZWQgd2hpbGUgdGhlIHBidWZmZXIgZXhpc3RzLgotICAgIG1JT1N1cmZhY2UgPSBy
ZWludGVycHJldF9jYXN0PElPU3VyZmFjZVJlZj4oYnVmZmVyKTsKLSAgICBDRlJldGFpbihtSU9T
dXJmYWNlKTsKLQotICAgIC8vIEV4dHJhY3QgYXR0cmlicyB1c2VmdWwgZm9yIHRoZSBjYWxsIHRv
IENHTFRleEltYWdlSU9TdXJmYWNlMkQKLSAgICBtV2lkdGggID0gc3RhdGljX2Nhc3Q8aW50Pihh
dHRyaWJzLmdldChFR0xfV0lEVEgpKTsKLSAgICBtSGVpZ2h0ID0gc3RhdGljX2Nhc3Q8aW50Pihh
dHRyaWJzLmdldChFR0xfSEVJR0hUKSk7Ci0gICAgbVBsYW5lICA9IHN0YXRpY19jYXN0PGludD4o
YXR0cmlicy5nZXQoRUdMX0lPU1VSRkFDRV9QTEFORV9BTkdMRSkpOwotCi0gICAgRUdMQXR0cmli
IGludGVybmFsRm9ybWF0ID0gYXR0cmlicy5nZXQoRUdMX1RFWFRVUkVfSU5URVJOQUxfRk9STUFU
X0FOR0xFKTsKLSAgICBFR0xBdHRyaWIgdHlwZSAgICAgICAgICAgPSBhdHRyaWJzLmdldChFR0xf
VEVYVFVSRV9UWVBFX0FOR0xFKTsKLSAgICBtRm9ybWF0SW5kZXggPQotICAgICAgICBGaW5kSU9T
dXJmYWNlRm9ybWF0SW5kZXgoc3RhdGljX2Nhc3Q8R0xlbnVtPihpbnRlcm5hbEZvcm1hdCksIHN0
YXRpY19jYXN0PEdMZW51bT4odHlwZSkpOwotICAgIEFTU0VSVChtRm9ybWF0SW5kZXggPj0gMCk7
Ci0KLSAgICBtQWxwaGFJbml0aWFsaXplZCA9ICFoYXNFbXVsYXRlZEFscGhhQ2hhbm5lbCgpOwot
fQotCi1JT1N1cmZhY2VTdXJmYWNlQ0dMOjp+SU9TdXJmYWNlU3VyZmFjZUNHTCgpCi17Ci0gICAg
aWYgKG1JT1N1cmZhY2UgIT0gbnVsbHB0cikKLSAgICB7Ci0gICAgICAgIENGUmVsZWFzZShtSU9T
dXJmYWNlKTsKLSAgICAgICAgbUlPU3VyZmFjZSA9IG51bGxwdHI7Ci0gICAgfQotfQotCi1lZ2w6
OkVycm9yIElPU3VyZmFjZVN1cmZhY2VDR0w6OmluaXRpYWxpemUoY29uc3QgZWdsOjpEaXNwbGF5
ICpkaXNwbGF5KQotewotICAgIHJldHVybiBlZ2w6Ok5vRXJyb3IoKTsKLX0KLQotZWdsOjpFcnJv
ciBJT1N1cmZhY2VTdXJmYWNlQ0dMOjptYWtlQ3VycmVudChjb25zdCBnbDo6Q29udGV4dCAqY29u
dGV4dCkKLXsKLSAgICByZXR1cm4gZWdsOjpOb0Vycm9yKCk7Ci19Ci0KLWVnbDo6RXJyb3IgSU9T
dXJmYWNlU3VyZmFjZUNHTDo6dW5NYWtlQ3VycmVudChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4
dCkKLXsKLSAgICBHZXRGdW5jdGlvbnNHTChjb250ZXh0KS0+Zmx1c2goKTsKLSAgICByZXR1cm4g
ZWdsOjpOb0Vycm9yKCk7Ci19Ci0KLWVnbDo6RXJyb3IgSU9TdXJmYWNlU3VyZmFjZUNHTDo6c3dh
cChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCkKLXsKLSAgICByZXR1cm4gZWdsOjpOb0Vycm9y
KCk7Ci19Ci0KLWVnbDo6RXJyb3IgSU9TdXJmYWNlU3VyZmFjZUNHTDo6cG9zdFN1YkJ1ZmZlcihj
b25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBFR0xpbnQgeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBFR0xpbnQgeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBFR0xpbnQgd2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRUdMaW50IGhlaWdodCkKLXsKLSAgICBVTlJFQUNIQUJMRSgp
OwotICAgIHJldHVybiBlZ2w6Ok5vRXJyb3IoKTsKLX0KLQotZWdsOjpFcnJvciBJT1N1cmZhY2VT
dXJmYWNlQ0dMOjpxdWVyeVN1cmZhY2VQb2ludGVyQU5HTEUoRUdMaW50IGF0dHJpYnV0ZSwgdm9p
ZCAqKnZhbHVlKQotewotICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgcmV0dXJuIGVnbDo6Tm9FcnJv
cigpOwotfQotCi1lZ2w6OkVycm9yIElPU3VyZmFjZVN1cmZhY2VDR0w6OmJpbmRUZXhJbWFnZShj
b25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdsOjpUZXh0dXJlICp0ZXh0dXJlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IGJ1ZmZlcikKLXsKLSAgICBTdGF0ZU1h
bmFnZXJHTCAqc3RhdGVNYW5hZ2VyID0gR2V0U3RhdGVNYW5hZ2VyR0woY29udGV4dCk7Ci0KLSAg
ICBjb25zdCBUZXh0dXJlR0wgKnRleHR1cmVHTCA9IEdldEltcGxBczxUZXh0dXJlR0w+KHRleHR1
cmUpOwotICAgIEdMdWludCB0ZXh0dXJlSUQgICAgICAgICAgID0gdGV4dHVyZUdMLT5nZXRUZXh0
dXJlSUQoKTsKLSAgICBzdGF0ZU1hbmFnZXItPmJpbmRUZXh0dXJlKGdsOjpUZXh0dXJlVHlwZTo6
UmVjdGFuZ2xlLCB0ZXh0dXJlSUQpOwotCi0gICAgY29uc3QgYXV0byAmZm9ybWF0ID0ga0lPU3Vy
ZmFjZUZvcm1hdHNbbUZvcm1hdEluZGV4XTsKLSAgICBDR0xFcnJvciBlcnJvciA9IENHTFRleElt
YWdlSU9TdXJmYWNlMkQobUNHTENvbnRleHQsIEdMX1RFWFRVUkVfUkVDVEFOR0xFLCBmb3JtYXQu
bmF0aXZlRm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtV2lkdGgsIG1IZWlnaHQsIGZvcm1hdC5uYXRpdmVJbnRlcm5hbEZvcm1hdCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0Lm5hdGl2ZVR5cGUsIG1J
T1N1cmZhY2UsIG1QbGFuZSk7Ci0KLSAgICBpZiAoZXJyb3IgIT0ga0NHTE5vRXJyb3IpCi0gICAg
ewotICAgICAgICByZXR1cm4gZWdsOjpFZ2xDb250ZXh0TG9zdCgpIDw8ICJDR0xUZXhJbWFnZUlP
U3VyZmFjZTJEIGZhaWxlZDogIiA8PCBDR0xFcnJvclN0cmluZyhlcnJvcik7Ci0gICAgfQotCi0g
ICAgaWYgKElzRXJyb3IoaW5pdGlhbGl6ZUFscGhhQ2hhbm5lbChjb250ZXh0LCB0ZXh0dXJlSUQp
KSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlZ2w6OkVnbENvbnRleHRMb3N0KCkgPDwgIkZhaWxl
ZCB0byBpbml0aWFsaXplIElPU3VyZmFjZSBhbHBoYSBjaGFubmVsLiI7Ci0gICAgfQotCi0gICAg
cmV0dXJuIGVnbDo6Tm9FcnJvcigpOwotfQotCi1lZ2w6OkVycm9yIElPU3VyZmFjZVN1cmZhY2VD
R0w6OnJlbGVhc2VUZXhJbWFnZShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwgRUdMaW50IGJ1
ZmZlcikKLXsKLSAgICBjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25zID0gR2V0RnVuY3Rpb25z
R0woY29udGV4dCk7Ci0gICAgZnVuY3Rpb25zLT5mbHVzaCgpOwotICAgIHJldHVybiBlZ2w6Ok5v
RXJyb3IoKTsKLX0KLQotdm9pZCBJT1N1cmZhY2VTdXJmYWNlQ0dMOjpzZXRTd2FwSW50ZXJ2YWwo
RUdMaW50IGludGVydmFsKQotewotICAgIFVOUkVBQ0hBQkxFKCk7Ci19Ci0KLUVHTGludCBJT1N1
cmZhY2VTdXJmYWNlQ0dMOjpnZXRXaWR0aCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1XaWR0aDsK
LX0KLQotRUdMaW50IElPU3VyZmFjZVN1cmZhY2VDR0w6OmdldEhlaWdodCgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIG1IZWlnaHQ7Ci19Ci0KLUVHTGludCBJT1N1cmZhY2VTdXJmYWNlQ0dMOjppc1Bv
c3RTdWJCdWZmZXJTdXBwb3J0ZWQoKSBjb25zdAotewotICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAg
cmV0dXJuIEVHTF9GQUxTRTsKLX0KLQotRUdMaW50IElPU3VyZmFjZVN1cmZhY2VDR0w6OmdldFN3
YXBCZWhhdmlvcigpIGNvbnN0Ci17Ci0gICAgLy8gTi9BIGJlY2F1c2UgeW91IGNhbid0IE1ha2VD
dXJyZW50IGFuIElPU3VyZmFjZSwgcmV0dXJuIGFueSB2YWxpZCB2YWx1ZS4KLSAgICByZXR1cm4g
RUdMX0JVRkZFUl9QUkVTRVJWRUQ7Ci19Ci0KLS8vIHN0YXRpYwotYm9vbCBJT1N1cmZhY2VTdXJm
YWNlQ0dMOjp2YWxpZGF0ZUF0dHJpYnV0ZXMoRUdMQ2xpZW50QnVmZmVyIGJ1ZmZlciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmli
dXRlTWFwICZhdHRyaWJzKQotewotICAgIElPU3VyZmFjZVJlZiBpb1N1cmZhY2UgPSByZWludGVy
cHJldF9jYXN0PElPU3VyZmFjZVJlZj4oYnVmZmVyKTsKLQotICAgIC8vIFRoZSBwbGFuZSBtdXN0
IGV4aXN0IGZvciB0aGlzIElPU3VyZmFjZS4gSU9TdXJmYWNlR2V0UGxhbmVDb3VudCBjYW4gcmV0
dXJuIDAgZm9yIG5vbi1wbGFuYXIKLSAgICAvLyBpb1N1cmZhY2VzIGJ1dCB3ZSB3aWxsIHRyZWF0
IG5vbi1wbGFuYXIgbGlrZSBpdCBpcyBhIHNpbmdsZSBwbGFuZS4KLSAgICBzaXplX3Qgc3VyZmFj
ZVBsYW5lQ291bnQgPSBzdGQ6Om1heChzaXplX3QoMSksIElPU3VyZmFjZUdldFBsYW5lQ291bnQo
aW9TdXJmYWNlKSk7Ci0gICAgRUdMQXR0cmliIHBsYW5lICAgICAgICAgID0gYXR0cmlicy5nZXQo
RUdMX0lPU1VSRkFDRV9QTEFORV9BTkdMRSk7Ci0gICAgaWYgKHBsYW5lIDwgMCB8fCBzdGF0aWNf
Y2FzdDxzaXplX3Q+KHBsYW5lKSA+PSBzdXJmYWNlUGxhbmVDb3VudCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICAvLyBUaGUgd2lkdGggaGVpZ2h0IHNwZWNpZmll
ZCBtdXN0IGJlIGF0IGxlYXN0ICgxLCAxKSBhbmQgYXQgbW9zdCB0aGUgcGxhbmUgc2l6ZQotICAg
IEVHTEF0dHJpYiB3aWR0aCAgPSBhdHRyaWJzLmdldChFR0xfV0lEVEgpOwotICAgIEVHTEF0dHJp
YiBoZWlnaHQgPSBhdHRyaWJzLmdldChFR0xfSEVJR0hUKTsKLSAgICBpZiAod2lkdGggPD0gMCB8
fCBzdGF0aWNfY2FzdDxzaXplX3Q+KHdpZHRoKSA+IElPU3VyZmFjZUdldFdpZHRoT2ZQbGFuZShp
b1N1cmZhY2UsIHBsYW5lKSB8fAotICAgICAgICBoZWlnaHQgPD0gMCB8fCBzdGF0aWNfY2FzdDxz
aXplX3Q+KGhlaWdodCkgPiBJT1N1cmZhY2VHZXRIZWlnaHRPZlBsYW5lKGlvU3VyZmFjZSwgcGxh
bmUpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIC8vIEZpbmQg
dGhpcyBJT1N1cmZhY2UgZm9ybWF0Ci0gICAgRUdMQXR0cmliIGludGVybmFsRm9ybWF0ID0gYXR0
cmlicy5nZXQoRUdMX1RFWFRVUkVfSU5URVJOQUxfRk9STUFUX0FOR0xFKTsKLSAgICBFR0xBdHRy
aWIgdHlwZSAgICAgICAgICAgPSBhdHRyaWJzLmdldChFR0xfVEVYVFVSRV9UWVBFX0FOR0xFKTsK
LQotICAgIGludCBmb3JtYXRJbmRleCA9Ci0gICAgICAgIEZpbmRJT1N1cmZhY2VGb3JtYXRJbmRl
eChzdGF0aWNfY2FzdDxHTGVudW0+KGludGVybmFsRm9ybWF0KSwgc3RhdGljX2Nhc3Q8R0xlbnVt
Pih0eXBlKSk7Ci0KLSAgICBpZiAoZm9ybWF0SW5kZXggPCAwKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLQotICAgIC8vIENoZWNrIHRoYXQgdGhlIGZvcm1hdCBtYXRjaGVz
IHRoaXMgSU9TdXJmYWNlIHBsYW5lCi0gICAgaWYgKElPU3VyZmFjZUdldEJ5dGVzUGVyRWxlbWVu
dE9mUGxhbmUoaW9TdXJmYWNlLCBwbGFuZSkgIT0KLSAgICAgICAga0lPU3VyZmFjZUZvcm1hdHNb
Zm9ybWF0SW5kZXhdLmNvbXBvbmVudEJ5dGVzKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi0vLyBXcmFwcyBhIEZyYW1lYnVmZmVy
R0wgdG8gaG9vayB0aGUgZGVzdHJveSBmdW5jdGlvbiB0byBkZWxldGUgdGhlIHRleHR1cmUgYXNz
b2NpYXRlZCB3aXRoIHRoZQotLy8gZnJhbWVidWZmZXIuCi1jbGFzcyBJT1N1cmZhY2VGcmFtZWJ1
ZmZlciA6IHB1YmxpYyBGcmFtZWJ1ZmZlckdMCi17Ci0gIHB1YmxpYzoKLSAgICBJT1N1cmZhY2VG
cmFtZWJ1ZmZlcihjb25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAmZGF0YSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IHRleHR1cmVJZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzRGVmYXVsdCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIGVtdWxhdGVkQWxwaGEpCi0gICAgICAgIDogRnJh
bWVidWZmZXJHTChkYXRhLCBpZCwgaXNEZWZhdWx0LCBlbXVsYXRlZEFscGhhKSwgbVRleHR1cmVJ
ZCh0ZXh0dXJlSWQpCi0gICAge30KLSAgICB2b2lkIGRlc3Ryb3koY29uc3QgZ2w6OkNvbnRleHQg
KmNvbnRleHQpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBHZXRGdW5jdGlvbnNHTChjb250ZXh0
KS0+ZGVsZXRlVGV4dHVyZXMoMSwgJm1UZXh0dXJlSWQpOwotICAgICAgICBGcmFtZWJ1ZmZlckdM
OjpkZXN0cm95KGNvbnRleHQpOwotICAgIH0KLQotICBwcml2YXRlOgotICAgIEdMdWludCBtVGV4
dHVyZUlkOwotfTsKLQotRnJhbWVidWZmZXJJbXBsICpJT1N1cmZhY2VTdXJmYWNlQ0dMOjpjcmVh
dGVEZWZhdWx0RnJhbWVidWZmZXIoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAmc3RhdGUpCi17Ci0gICAgY29uc3QgRnVuY3Rpb25z
R0wgKmZ1bmN0aW9ucyA9IEdldEZ1bmN0aW9uc0dMKGNvbnRleHQpOwotICAgIFN0YXRlTWFuYWdl
ckdMICpzdGF0ZU1hbmFnZXIgPSBHZXRTdGF0ZU1hbmFnZXJHTChjb250ZXh0KTsKLQotICAgIEdM
dWludCB0ZXh0dXJlID0gMDsKLSAgICBmdW5jdGlvbnMtPmdlblRleHR1cmVzKDEsICZ0ZXh0dXJl
KTsKLSAgICBjb25zdCBhdXRvICZmb3JtYXQgPSBrSU9TdXJmYWNlRm9ybWF0c1ttRm9ybWF0SW5k
ZXhdOwotICAgIHN0YXRlTWFuYWdlci0+YmluZFRleHR1cmUoZ2w6OlRleHR1cmVUeXBlOjpSZWN0
YW5nbGUsIHRleHR1cmUpOwotICAgIENHTEVycm9yIGVycm9yID0gQ0dMVGV4SW1hZ2VJT1N1cmZh
Y2UyRChtQ0dMQ29udGV4dCwgR0xfVEVYVFVSRV9SRUNUQU5HTEUsIGZvcm1hdC5uYXRpdmVGb3Jt
YXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1XaWR0aCwg
bUhlaWdodCwgZm9ybWF0Lm5hdGl2ZUludGVybmFsRm9ybWF0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQubmF0aXZlVHlwZSwgbUlPU3VyZmFjZSwg
bVBsYW5lKTsKLSAgICBpZiAoZXJyb3IgIT0ga0NHTE5vRXJyb3IpCi0gICAgewotICAgICAgICBF
UlIoKSA8PCAiQ0dMVGV4SW1hZ2VJT1N1cmZhY2UyRCBmYWlsZWQ6ICIgPDwgQ0dMRXJyb3JTdHJp
bmcoZXJyb3IpOwotICAgIH0KLSAgICBBU1NFUlQoZXJyb3IgPT0ga0NHTE5vRXJyb3IpOwotCi0g
ICAgaWYgKElzRXJyb3IoaW5pdGlhbGl6ZUFscGhhQ2hhbm5lbChjb250ZXh0LCB0ZXh0dXJlKSkp
Ci0gICAgewotICAgICAgICBFUlIoKSA8PCAiRmFpbGVkIHRvIGluaXRpYWxpemUgSU9TdXJmYWNl
IGFscGhhIGNoYW5uZWwuIjsKLSAgICB9Ci0KLSAgICBHTHVpbnQgZnJhbWVidWZmZXIgPSAwOwot
ICAgIGZ1bmN0aW9ucy0+Z2VuRnJhbWVidWZmZXJzKDEsICZmcmFtZWJ1ZmZlcik7Ci0gICAgc3Rh
dGVNYW5hZ2VyLT5iaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIGZyYW1lYnVmZmVyKTsK
LSAgICBzdGF0ZU1hbmFnZXItPmJpbmRUZXh0dXJlKGdsOjpUZXh0dXJlVHlwZTo6UmVjdGFuZ2xl
LCB0ZXh0dXJlKTsKLSAgICBmdW5jdGlvbnMtPmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1F
QlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV9SRUNUQU5HTEUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlLCAwKTsKLQotICAgIHJldHVy
biBuZXcgSU9TdXJmYWNlRnJhbWVidWZmZXIoc3RhdGUsIGZyYW1lYnVmZmVyLCB0ZXh0dXJlLCB0
cnVlLCBoYXNFbXVsYXRlZEFscGhhQ2hhbm5lbCgpKTsKLX0KLQotYW5nbGU6OlJlc3VsdCBJT1N1
cmZhY2VTdXJmYWNlQ0dMOjppbml0aWFsaXplQWxwaGFDaGFubmVsKGNvbnN0IGdsOjpDb250ZXh0
ICpjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCB0ZXh0dXJlKQotewotICAgIGlmIChtQWxwaGFJbml0aWFsaXpl
ZCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKLSAgICB9
Ci0KLSAgICBCbGl0R0wgKmJsaXR0ZXIgPSBHZXRCbGl0R0woY29udGV4dCk7Ci0gICAgQU5HTEVf
VFJZKGJsaXR0ZXItPmNsZWFyUmVuZGVyYWJsZVRleHR1cmVBbHBoYVRvT25lKGNvbnRleHQsIHRl
eHR1cmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdsOjpUZXh0dXJlVGFyZ2V0OjpSZWN0YW5nbGUsIDApKTsKLSAgICBtQWxwaGFJbml0
aWFsaXplZCA9IHRydWU7Ci0gICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwotfQot
Ci1ib29sIElPU3VyZmFjZVN1cmZhY2VDR0w6Omhhc0VtdWxhdGVkQWxwaGFDaGFubmVsKCkgY29u
c3QKLXsKLSAgICBjb25zdCBhdXRvICZmb3JtYXQgPSBrSU9TdXJmYWNlRm9ybWF0c1ttRm9ybWF0
SW5kZXhdOwotICAgIHJldHVybiBmb3JtYXQuaW50ZXJuYWxGb3JtYXQgPT0gR0xfUkdCOwotfQot
Ci19ICAvLyBuYW1lc3BhY2UgcngKLQotI2VuZGlmICAvLyBfX2hhc19pbmNsdWRlKDxDb2NvYS9D
b2NvYS5oPikKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9nbC9jZ2wvUGJ1ZmZlclN1cmZhY2VDR0wuY3BwIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9QYnVmZmVyU3VyZmFjZUNHTC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNDc4MGMwNmRmMGQxNzZiYWVkNjE4YmQ3MjAxM2U4OGI5NGZiMzFiNwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9nbC9jZ2wvUGJ1ZmZlclN1cmZhY2VDR0wuY3BwCkBAIC0wLDAgKzEsMTUwIEBACisv
LworLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCisvLworCisvLyBQQnVmZmVyU3VyZmFjZUNHTC5jcHA6IGFuIGltcGxlbWVudGF0aW9uIG9m
IGVnbDo6U3VyZmFjZSBmb3IgUEJ1ZmZlcnMgZm9yIHRoZSBDTEcgYmFja2VuZCwKKy8vICAgICAg
ICAgICAgICAgICAgICAgIGN1cnJlbnRseSBpbXBsZW1lbnRlZCB1c2luZyByZW5kZXJidWZmZXJz
CisKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpbmNsdWRlIDxUYXJnZXRDb25kaXRpb25hbHMu
aD4KKyNpZiBUQVJHRVRfT1NfTUFDCisKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9j
Z2wvUGJ1ZmZlclN1cmZhY2VDR0wuaCIKKworI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorI2lu
Y2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL0Z1bmN0aW9uc0dMLmgiCisjaW5jbHVkZSAibGli
QU5HTEUvcmVuZGVyZXIvZ2wvRnJhbWVidWZmZXJHTC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3Jl
bmRlcmVyL2dsL1JlbmRlcmVyR0wuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9T
dGF0ZU1hbmFnZXJHTC5oIgorCituYW1lc3BhY2UgcngKK3sKKworUGJ1ZmZlclN1cmZhY2VDR0w6
OlBidWZmZXJTdXJmYWNlQ0dMKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJlckdMICpyZW5kZXJlciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgd2lkdGgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IGhlaWdodCkKKyAgICA6IFN1cmZh
Y2VHTChzdGF0ZSksCisgICAgICBtV2lkdGgod2lkdGgpLAorICAgICAgbUhlaWdodChoZWlnaHQp
LAorICAgICAgbUZ1bmN0aW9ucyhyZW5kZXJlci0+Z2V0RnVuY3Rpb25zKCkpLAorICAgICAgbVN0
YXRlTWFuYWdlcihyZW5kZXJlci0+Z2V0U3RhdGVNYW5hZ2VyKCkpLAorICAgICAgbUNvbG9yUmVu
ZGVyYnVmZmVyKDApLAorICAgICAgbURTUmVuZGVyYnVmZmVyKDApCit7Cit9CisKK1BidWZmZXJT
dXJmYWNlQ0dMOjp+UGJ1ZmZlclN1cmZhY2VDR0woKQoreworICAgIGlmIChtQ29sb3JSZW5kZXJi
dWZmZXIgIT0gMCkKKyAgICB7CisgICAgICAgIG1GdW5jdGlvbnMtPmRlbGV0ZVJlbmRlcmJ1ZmZl
cnMoMSwgJm1Db2xvclJlbmRlcmJ1ZmZlcik7CisgICAgICAgIG1Db2xvclJlbmRlcmJ1ZmZlciA9
IDA7CisgICAgfQorICAgIGlmIChtRFNSZW5kZXJidWZmZXIgIT0gMCkKKyAgICB7CisgICAgICAg
IG1GdW5jdGlvbnMtPmRlbGV0ZVJlbmRlcmJ1ZmZlcnMoMSwgJm1EU1JlbmRlcmJ1ZmZlcik7Cisg
ICAgICAgIG1EU1JlbmRlcmJ1ZmZlciA9IDA7CisgICAgfQorfQorCitlZ2w6OkVycm9yIFBidWZm
ZXJTdXJmYWNlQ0dMOjppbml0aWFsaXplKGNvbnN0IGVnbDo6RGlzcGxheSAqZGlzcGxheSkKK3sK
KyAgICBtRnVuY3Rpb25zLT5nZW5SZW5kZXJidWZmZXJzKDEsICZtQ29sb3JSZW5kZXJidWZmZXIp
OworICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRSZW5kZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCBt
Q29sb3JSZW5kZXJidWZmZXIpOworICAgIG1GdW5jdGlvbnMtPnJlbmRlcmJ1ZmZlclN0b3JhZ2Uo
R0xfUkVOREVSQlVGRkVSLCBHTF9SR0JBOCwgbVdpZHRoLCBtSGVpZ2h0KTsKKworICAgIG1GdW5j
dGlvbnMtPmdlblJlbmRlcmJ1ZmZlcnMoMSwgJm1EU1JlbmRlcmJ1ZmZlcik7CisgICAgbVN0YXRl
TWFuYWdlci0+YmluZFJlbmRlcmJ1ZmZlcihHTF9SRU5ERVJCVUZGRVIsIG1EU1JlbmRlcmJ1ZmZl
cik7CisgICAgbUZ1bmN0aW9ucy0+cmVuZGVyYnVmZmVyU3RvcmFnZShHTF9SRU5ERVJCVUZGRVIs
IEdMX0RFUFRIMjRfU1RFTkNJTDgsIG1XaWR0aCwgbUhlaWdodCk7CisKKyAgICByZXR1cm4gZWds
OjpOb0Vycm9yKCk7Cit9CisKK2VnbDo6RXJyb3IgUGJ1ZmZlclN1cmZhY2VDR0w6Om1ha2VDdXJy
ZW50KGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0KQoreworICAgIHJldHVybiBlZ2w6Ok5vRXJy
b3IoKTsKK30KKworZWdsOjpFcnJvciBQYnVmZmVyU3VyZmFjZUNHTDo6c3dhcChjb25zdCBnbDo6
Q29udGV4dCAqY29udGV4dCkKK3sKKyAgICByZXR1cm4gZWdsOjpOb0Vycm9yKCk7Cit9CisKK2Vn
bDo6RXJyb3IgUGJ1ZmZlclN1cmZhY2VDR0w6OnBvc3RTdWJCdWZmZXIoY29uc3QgZ2w6OkNvbnRl
eHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEVHTGludCB4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBF
R0xpbnQgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdM
aW50IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBF
R0xpbnQgaGVpZ2h0KQoreworICAgIHJldHVybiBlZ2w6Ok5vRXJyb3IoKTsKK30KKworZWdsOjpF
cnJvciBQYnVmZmVyU3VyZmFjZUNHTDo6cXVlcnlTdXJmYWNlUG9pbnRlckFOR0xFKEVHTGludCBh
dHRyaWJ1dGUsIHZvaWQgKip2YWx1ZSkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0
dXJuIGVnbDo6Tm9FcnJvcigpOworfQorCitlZ2w6OkVycm9yIFBidWZmZXJTdXJmYWNlQ0dMOjpi
aW5kVGV4SW1hZ2UoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OlRleHR1cmUgKnRleHR1cmUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IGJ1ZmZlcikKK3sKKyAg
ICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGVnbDo6Tm9FcnJvcigpOworfQorCitlZ2w6
OkVycm9yIFBidWZmZXJTdXJmYWNlQ0dMOjpyZWxlYXNlVGV4SW1hZ2UoY29uc3QgZ2w6OkNvbnRl
eHQgKmNvbnRleHQsIEVHTGludCBidWZmZXIpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAg
IHJldHVybiBlZ2w6Ok5vRXJyb3IoKTsKK30KKwordm9pZCBQYnVmZmVyU3VyZmFjZUNHTDo6c2V0
U3dhcEludGVydmFsKEVHTGludCBpbnRlcnZhbCkKK3sKK30KKworRUdMaW50IFBidWZmZXJTdXJm
YWNlQ0dMOjpnZXRXaWR0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1XaWR0aDsKK30KKworRUdM
aW50IFBidWZmZXJTdXJmYWNlQ0dMOjpnZXRIZWlnaHQoKSBjb25zdAoreworICAgIHJldHVybiBt
SGVpZ2h0OworfQorCitFR0xpbnQgUGJ1ZmZlclN1cmZhY2VDR0w6OmlzUG9zdFN1YkJ1ZmZlclN1
cHBvcnRlZCgpIGNvbnN0Cit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBFR0xf
RkFMU0U7Cit9CisKK0VHTGludCBQYnVmZmVyU3VyZmFjZUNHTDo6Z2V0U3dhcEJlaGF2aW9yKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gRUdMX0JVRkZFUl9QUkVTRVJWRUQ7Cit9CisKK0ZyYW1lYnVm
ZmVySW1wbCAqUGJ1ZmZlclN1cmZhY2VDR0w6OmNyZWF0ZURlZmF1bHRGcmFtZWJ1ZmZlcihjb25z
dCBnbDo6Q29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAm
c3RhdGUpCit7CisgICAgY29uc3QgRnVuY3Rpb25zR0wgKmZ1bmN0aW9ucyA9IEdldEZ1bmN0aW9u
c0dMKGNvbnRleHQpOworICAgIFN0YXRlTWFuYWdlckdMICpzdGF0ZU1hbmFnZXIgPSBHZXRTdGF0
ZU1hbmFnZXJHTChjb250ZXh0KTsKKworICAgIEdMdWludCBmcmFtZWJ1ZmZlciA9IDA7CisgICAg
ZnVuY3Rpb25zLT5nZW5GcmFtZWJ1ZmZlcnMoMSwgJmZyYW1lYnVmZmVyKTsKKyAgICBzdGF0ZU1h
bmFnZXItPmJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgZnJhbWVidWZmZXIpOworICAg
IGZ1bmN0aW9ucy0+ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0xfRlJBTUVCVUZGRVIsIEdMX0NP
TE9SX0FUVEFDSE1FTlQwLCBHTF9SRU5ERVJCVUZGRVIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtQ29sb3JSZW5kZXJidWZmZXIpOworICAgIGZ1bmN0aW9ucy0+ZnJh
bWVidWZmZXJSZW5kZXJidWZmZXIoR0xfRlJBTUVCVUZGRVIsIEdMX0RFUFRIX1NURU5DSUxfQVRU
QUNITUVOVCwgR0xfUkVOREVSQlVGRkVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbURTUmVuZGVyYnVmZmVyKTsKKworICAgIHJldHVybiBuZXcgRnJhbWVidWZmZXJH
TChzdGF0ZSwgZnJhbWVidWZmZXIsIHRydWUsIGZhbHNlKTsKK30KKworfSAgLy8gbmFtZXNwYWNl
IHJ4CisKKyNlbmRpZiAgLy8gVEFSR0VUX09TX01BQworI2VuZGlmICAvLyBfX0FQUExFX18KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9n
bC9jZ2wvUGJ1ZmZlclN1cmZhY2VDR0wubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL1BidWZmZXJTdXJmYWNlQ0dMLm1tCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAzOTg5MjdlODA3MDAyNTA4M2I2MmJhMWU2OGRhMGIxMThhM2Fk
MTJhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvUGJ1ZmZlclN1
cmZhY2VDR0wubW0KKysrIC9kZXYvbnVsbApAQCAtMSwxNDMgKzAsMCBAQAotLy8KLS8vIENvcHly
aWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQot
Ly8gUEJ1ZmZlclN1cmZhY2VDR0wuY3BwOiBhbiBpbXBsZW1lbnRhdGlvbiBvZiBlZ2w6OlN1cmZh
Y2UgZm9yIFBCdWZmZXJzIGZvciB0aGUgQ0xHIGJhY2tlbmQsCi0vLyAgICAgICAgICAgICAgICAg
ICAgICBjdXJyZW50bHkgaW1wbGVtZW50ZWQgdXNpbmcgcmVuZGVyYnVmZmVycwotCi0jaW5jbHVk
ZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL1BidWZmZXJTdXJmYWNlQ0dMLmgiCi0KLSNpbmNs
dWRlICJjb21tb24vZGVidWcuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9GdW5j
dGlvbnNHTC5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL0ZyYW1lYnVmZmVyR0wu
aCIKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9SZW5kZXJlckdMLmgiCi0jaW5jbHVk
ZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvU3RhdGVNYW5hZ2VyR0wuaCIKLQotbmFtZXNwYWNlIHJ4
Ci17Ci0KLVBidWZmZXJTdXJmYWNlQ0dMOjpQYnVmZmVyU3VyZmFjZUNHTChjb25zdCBlZ2w6OlN1
cmZhY2VTdGF0ZSAmc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UmVuZGVyZXJHTCAqcmVuZGVyZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRUdMaW50IHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVH
TGludCBoZWlnaHQpCi0gICAgOiBTdXJmYWNlR0woc3RhdGUpLAotICAgICAgbVdpZHRoKHdpZHRo
KSwKLSAgICAgIG1IZWlnaHQoaGVpZ2h0KSwKLSAgICAgIG1GdW5jdGlvbnMocmVuZGVyZXItPmdl
dEZ1bmN0aW9ucygpKSwKLSAgICAgIG1TdGF0ZU1hbmFnZXIocmVuZGVyZXItPmdldFN0YXRlTWFu
YWdlcigpKSwKLSAgICAgIG1Db2xvclJlbmRlcmJ1ZmZlcigwKSwKLSAgICAgIG1EU1JlbmRlcmJ1
ZmZlcigwKQotewotfQotCi1QYnVmZmVyU3VyZmFjZUNHTDo6flBidWZmZXJTdXJmYWNlQ0dMKCkK
LXsKLSAgICBpZiAobUNvbG9yUmVuZGVyYnVmZmVyICE9IDApCi0gICAgewotICAgICAgICBtRnVu
Y3Rpb25zLT5kZWxldGVSZW5kZXJidWZmZXJzKDEsICZtQ29sb3JSZW5kZXJidWZmZXIpOwotICAg
ICAgICBtQ29sb3JSZW5kZXJidWZmZXIgPSAwOwotICAgIH0KLSAgICBpZiAobURTUmVuZGVyYnVm
ZmVyICE9IDApCi0gICAgewotICAgICAgICBtRnVuY3Rpb25zLT5kZWxldGVSZW5kZXJidWZmZXJz
KDEsICZtRFNSZW5kZXJidWZmZXIpOwotICAgICAgICBtRFNSZW5kZXJidWZmZXIgPSAwOwotICAg
IH0KLX0KLQotZWdsOjpFcnJvciBQYnVmZmVyU3VyZmFjZUNHTDo6aW5pdGlhbGl6ZShjb25zdCBl
Z2w6OkRpc3BsYXkgKmRpc3BsYXkpCi17Ci0gICAgbUZ1bmN0aW9ucy0+Z2VuUmVuZGVyYnVmZmVy
cygxLCAmbUNvbG9yUmVuZGVyYnVmZmVyKTsKLSAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kUmVuZGVy
YnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgbUNvbG9yUmVuZGVyYnVmZmVyKTsKLSAgICBtRnVuY3Rp
b25zLT5yZW5kZXJidWZmZXJTdG9yYWdlKEdMX1JFTkRFUkJVRkZFUiwgR0xfUkdCQTgsIG1XaWR0
aCwgbUhlaWdodCk7Ci0KLSAgICBtRnVuY3Rpb25zLT5nZW5SZW5kZXJidWZmZXJzKDEsICZtRFNS
ZW5kZXJidWZmZXIpOwotICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRSZW5kZXJidWZmZXIoR0xfUkVO
REVSQlVGRkVSLCBtRFNSZW5kZXJidWZmZXIpOwotICAgIG1GdW5jdGlvbnMtPnJlbmRlcmJ1ZmZl
clN0b3JhZ2UoR0xfUkVOREVSQlVGRkVSLCBHTF9ERVBUSDI0X1NURU5DSUw4LCBtV2lkdGgsIG1I
ZWlnaHQpOwotCi0gICAgcmV0dXJuIGVnbDo6Tm9FcnJvcigpOwotfQotCi1lZ2w6OkVycm9yIFBi
dWZmZXJTdXJmYWNlQ0dMOjptYWtlQ3VycmVudChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCkK
LXsKLSAgICByZXR1cm4gZWdsOjpOb0Vycm9yKCk7Ci19Ci0KLWVnbDo6RXJyb3IgUGJ1ZmZlclN1
cmZhY2VDR0w6OnN3YXAoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQpCi17Ci0gICAgcmV0dXJu
IGVnbDo6Tm9FcnJvcigpOwotfQotCi1lZ2w6OkVycm9yIFBidWZmZXJTdXJmYWNlQ0dMOjpwb3N0
U3ViQnVmZmVyKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgeCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IHksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEVHTGludCB3aWR0aCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IGhlaWdodCkKLXsKLSAgICByZXR1cm4gZWds
OjpOb0Vycm9yKCk7Ci19Ci0KLWVnbDo6RXJyb3IgUGJ1ZmZlclN1cmZhY2VDR0w6OnF1ZXJ5U3Vy
ZmFjZVBvaW50ZXJBTkdMRShFR0xpbnQgYXR0cmlidXRlLCB2b2lkICoqdmFsdWUpCi17Ci0gICAg
VU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBlZ2w6Ok5vRXJyb3IoKTsKLX0KLQotZWdsOjpF
cnJvciBQYnVmZmVyU3VyZmFjZUNHTDo6YmluZFRleEltYWdlKGNvbnN0IGdsOjpDb250ZXh0ICpj
b250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpU
ZXh0dXJlICp0ZXh0dXJlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEVHTGludCBidWZmZXIpCi17Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBl
Z2w6Ok5vRXJyb3IoKTsKLX0KLQotZWdsOjpFcnJvciBQYnVmZmVyU3VyZmFjZUNHTDo6cmVsZWFz
ZVRleEltYWdlKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LCBFR0xpbnQgYnVmZmVyKQotewot
ICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm4gZWdsOjpOb0Vycm9yKCk7Ci19Ci0KLXZv
aWQgUGJ1ZmZlclN1cmZhY2VDR0w6OnNldFN3YXBJbnRlcnZhbChFR0xpbnQgaW50ZXJ2YWwpCi17
Ci19Ci0KLUVHTGludCBQYnVmZmVyU3VyZmFjZUNHTDo6Z2V0V2lkdGgoKSBjb25zdAotewotICAg
IHJldHVybiBtV2lkdGg7Ci19Ci0KLUVHTGludCBQYnVmZmVyU3VyZmFjZUNHTDo6Z2V0SGVpZ2h0
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbUhlaWdodDsKLX0KLQotRUdMaW50IFBidWZmZXJTdXJm
YWNlQ0dMOjppc1Bvc3RTdWJCdWZmZXJTdXBwb3J0ZWQoKSBjb25zdAotewotICAgIFVOSU1QTEVN
RU5URUQoKTsKLSAgICByZXR1cm4gRUdMX0ZBTFNFOwotfQotCi1FR0xpbnQgUGJ1ZmZlclN1cmZh
Y2VDR0w6OmdldFN3YXBCZWhhdmlvcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEVHTF9CVUZGRVJf
UFJFU0VSVkVEOwotfQotCi1GcmFtZWJ1ZmZlckltcGwgKlBidWZmZXJTdXJmYWNlQ0dMOjpjcmVh
dGVEZWZhdWx0RnJhbWVidWZmZXIoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ2w6OkZyYW1lYnVmZmVyU3RhdGUgJnN0YXRlKQotewotICAgIGNvbnN0IEZ1bmN0aW9uc0dM
ICpmdW5jdGlvbnMgPSBHZXRGdW5jdGlvbnNHTChjb250ZXh0KTsKLSAgICBTdGF0ZU1hbmFnZXJH
TCAqc3RhdGVNYW5hZ2VyID0gR2V0U3RhdGVNYW5hZ2VyR0woY29udGV4dCk7Ci0KLSAgICBHTHVp
bnQgZnJhbWVidWZmZXIgPSAwOwotICAgIGZ1bmN0aW9ucy0+Z2VuRnJhbWVidWZmZXJzKDEsICZm
cmFtZWJ1ZmZlcik7Ci0gICAgc3RhdGVNYW5hZ2VyLT5iaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVC
VUZGRVIsIGZyYW1lYnVmZmVyKTsKLSAgICBmdW5jdGlvbnMtPmZyYW1lYnVmZmVyUmVuZGVyYnVm
ZmVyKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfUkVOREVSQlVGRkVS
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUNvbG9yUmVuZGVyYnVm
ZmVyKTsKLSAgICBmdW5jdGlvbnMtPmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMX0ZSQU1FQlVG
RkVSLCBHTF9ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQsIEdMX1JFTkRFUkJVRkZFUiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1EU1JlbmRlcmJ1ZmZlcik7Ci0KLSAg
ICByZXR1cm4gbmV3IEZyYW1lYnVmZmVyR0woc3RhdGUsIGZyYW1lYnVmZmVyLCB0cnVlLCBmYWxz
ZSk7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSByeApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9SZW5kZXJlckNHTC5jcHAgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL1JlbmRl
cmVyQ0dMLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZTVjNTE2OGVlYWM2YzI5ZWRlNjk4MzEyZjdkYjY2MDFh
OTM5ZTUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9SZW5kZXJlckNHTC5jcHAKQEAgLTAsMCArMSwzNSBAQAor
Ly8KKy8vIENvcHlyaWdodCAyMDE5IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlLgorLy8KKworLy8gUmVuZGVyZXJDR0wubW06IEltcGxlbWVudHMgdGhlIGNsYXNzIG1ldGhv
ZHMgZm9yIFJlbmRlcmVyQ0dMLgorCisjaWYgZGVmaW5lZChfX0FQUExFX18pCisjaW5jbHVkZSA8
VGFyZ2V0Q29uZGl0aW9uYWxzLmg+CisjaWYgVEFSR0VUX09TX01BQworCisjaW5jbHVkZSAibGli
QU5HTEUvcmVuZGVyZXIvZ2wvY2dsL0Rpc3BsYXlDR0wuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9y
ZW5kZXJlci9nbC9jZ2wvUmVuZGVyZXJDR0wuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK1JlbmRl
cmVyQ0dMOjpSZW5kZXJlckNHTChzdGQ6OnVuaXF1ZV9wdHI8RnVuY3Rpb25zR0w+IGZ1bmN0aW9u
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0
cmliTWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgIERpc3BsYXlDR0wgKmRpc3BsYXkpCisg
ICAgOiBSZW5kZXJlckdMKHN0ZDo6bW92ZShmdW5jdGlvbnMpLCBhdHRyaWJNYXAsIGRpc3BsYXkp
LCBtRGlzcGxheShkaXNwbGF5KQore30KKworUmVuZGVyZXJDR0w6On5SZW5kZXJlckNHTCgpIHt9
CisKK1dvcmtlckNvbnRleHQgKlJlbmRlcmVyQ0dMOjpjcmVhdGVXb3JrZXJDb250ZXh0KHN0ZDo6
c3RyaW5nICppbmZvTG9nKQoreworICAgIHJldHVybiBtRGlzcGxheS0+Y3JlYXRlV29ya2VyQ29u
dGV4dChpbmZvTG9nKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHJ4CisKKyNlbmRpZiAgLy8gVEFS
R0VUX09TX01BQworI2VuZGlmICAvLyBfX0FQUExFX18KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvUmVuZGVyZXJDR0wubW0g
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL1Jl
bmRlcmVyQ0dMLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NmYzN2E5ZTNlYzVl
YTE4ZTc0N2JkNTEyMGVlNDYxM2NiOWM0YzFkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9nbC9jZ2wvUmVuZGVyZXJDR0wubW0KKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCww
IEBACi0vLwotLy8gQ29weXJpZ2h0IDIwMTkgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCi0vLwotCi0vLyBSZW5kZXJlckNHTC5tbTogSW1wbGVtZW50cyB0aGUgY2xhc3Mg
bWV0aG9kcyBmb3IgUmVuZGVyZXJDR0wuCi0KLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9n
bC9jZ2wvUmVuZGVyZXJDR0wuaCIKLQotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL2Nn
bC9EaXNwbGF5Q0dMLmgiCi0KLW5hbWVzcGFjZSByeAotewotCi1SZW5kZXJlckNHTDo6UmVuZGVy
ZXJDR0woc3RkOjp1bmlxdWVfcHRyPEZ1bmN0aW9uc0dMPiBmdW5jdGlvbnMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYk1hcCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICBEaXNwbGF5Q0dMICpkaXNwbGF5KQotICAgIDogUmVuZGVyZXJH
TChzdGQ6Om1vdmUoZnVuY3Rpb25zKSwgYXR0cmliTWFwLCBkaXNwbGF5KSwgbURpc3BsYXkoZGlz
cGxheSkKLXt9Ci0KLVJlbmRlcmVyQ0dMOjp+UmVuZGVyZXJDR0woKSB7fQotCi1Xb3JrZXJDb250
ZXh0ICpSZW5kZXJlckNHTDo6Y3JlYXRlV29ya2VyQ29udGV4dChzdGQ6OnN0cmluZyAqaW5mb0xv
ZykKLXsKLSAgICByZXR1cm4gbURpc3BsYXktPmNyZWF0ZVdvcmtlckNvbnRleHQoaW5mb0xvZyk7
Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSByeApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9XaW5kb3dTdXJmYWNlQ0dMLm1tIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9XaW5k
b3dTdXJmYWNlQ0dMLm1tCmluZGV4IDVmYTJmMzU0Yzc3ZmNjMDdhYzIwYmU2NzkzMmQwMzlhOTFm
NDFhM2QuLjcwMmI4MjA4ZTJlMGJmNTU2M2IwNGNiNDk1NTM1OGFkZGU0MWY5ZjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wv
V2luZG93U3VyZmFjZUNHTC5tbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZ2wvY2dsL1dpbmRvd1N1cmZhY2VDR0wubW0KQEAgLTYsMjAgKzYsMjEg
QEAKIAogLy8gV2luZG93U3VyZmFjZUNHTC5jcHA6IENHTCBpbXBsZW1lbnRhdGlvbiBvZiBlZ2w6
OlN1cmZhY2UgZm9yIHdpbmRvd3MKIAotI2lmIF9faGFzX2luY2x1ZGUoPENvY29hL0NvY29hLmg+
KQorI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2luY2x1ZGUgPFRhcmdldENvbmRpdGlvbmFscy5o
PgorI2lmIFRBUkdFVF9PU19NQUMKIAotIyAgICBpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9n
bC9jZ2wvV2luZG93U3VyZmFjZUNHTC5oIgorI2ltcG9ydCAibGliQU5HTEUvcmVuZGVyZXIvZ2wv
Y2dsL1dpbmRvd1N1cmZhY2VDR0wuaCIKIAotIyAgICBpbXBvcnQgPENvY29hL0NvY29hLmg+Ci0j
ICAgIGluY2x1ZGUgPE9wZW5HTC9PcGVuR0wuaD4KLSMgICAgaW1wb3J0IDxRdWFydHpDb3JlL1F1
YXJ0ekNvcmUuaD4KKyNpbXBvcnQgImNvbW1vbi9kZWJ1Zy5oIgorI2ltcG9ydCAibGliQU5HTEUv
Q29udGV4dC5oIgorI2ltcG9ydCAibGliQU5HTEUvcmVuZGVyZXIvZ2wvRnJhbWVidWZmZXJHTC5o
IgorI2ltcG9ydCAibGliQU5HTEUvcmVuZGVyZXIvZ2wvUmVuZGVyZXJHTC5oIgorI2ltcG9ydCAi
bGliQU5HTEUvcmVuZGVyZXIvZ2wvU3RhdGVNYW5hZ2VyR0wuaCIKKyNpbXBvcnQgImxpYkFOR0xF
L3JlbmRlcmVyL2dsL2NnbC9EaXNwbGF5Q0dMLmgiCiAKLSMgICAgaW5jbHVkZSAiY29tbW9uL2Rl
YnVnLmgiCi0jICAgIGluY2x1ZGUgImxpYkFOR0xFL0NvbnRleHQuaCIKLSMgICAgaW5jbHVkZSAi
bGliQU5HTEUvcmVuZGVyZXIvZ2wvRnJhbWVidWZmZXJHTC5oIgotIyAgICBpbmNsdWRlICJsaWJB
TkdMRS9yZW5kZXJlci9nbC9SZW5kZXJlckdMLmgiCi0jICAgIGluY2x1ZGUgImxpYkFOR0xFL3Jl
bmRlcmVyL2dsL1N0YXRlTWFuYWdlckdMLmgiCi0jICAgIGluY2x1ZGUgImxpYkFOR0xFL3JlbmRl
cmVyL2dsL2NnbC9EaXNwbGF5Q0dMLmgiCisjaW1wb3J0IDxPcGVuR0wvT3BlbkdMLmg+CisjaW1w
b3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KIAogQGludGVyZmFjZSBXZWJTd2FwTGF5ZXIg
OiBDQU9wZW5HTExheWVyIHsKICAgICBDR0xDb250ZXh0T2JqIG1EaXNwbGF5Q29udGV4dDsKQEAg
LTMzNyw0ICszMzgsNSBAQCBGcmFtZWJ1ZmZlckltcGwgKldpbmRvd1N1cmZhY2VDR0w6OmNyZWF0
ZURlZmF1bHRGcmFtZWJ1ZmZlcihjb25zdCBnbDo6Q29udGV4dCAqYwogCiB9ICAvLyBuYW1lc3Bh
Y2UgcngKIAotI2VuZGlmICAvLyBfX2hhc19pbmNsdWRlKDxDb2NvYS9Db2NvYS5oPikKKyNlbmRp
ZiAgLy8gVEFSR0VUX09TX01BQworI2VuZGlmICAvLyBfX0FQUExFX18K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381742</attachid>
            <date>2019-10-23 15:38:07 -0700</date>
            <delta_ts>2019-10-23 15:44:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203343-20191024093805.patch</filename>
            <type>text/plain</type>
            <size>73524</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNDk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9DaGFuZ2VMb2cgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cKaW5k
ZXggODkyOGI0Zjg4ZmY0MWJjMDQ4M2VmZjRjYWMxMTQzNmMyZDM5MDRiMC4uMGRhMjY0MjhkMTg0
ZTU0NWNmM2EyNzA0NjIwM2ZlZTE5OTY1YTZlNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDI0IEBACisyMDE5LTEwLTIzICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxl
LmNvbT4KKworICAgICAgICBbQU5HTEVdIEltcHJvdmUgY29tcGlsZS10aW1lIG1hY09TIGd1YXJk
cyBhbmQgYXZvaWQgT2JqQyBpZiBwb3NzaWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzMzQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVXNlIHRoZSBtb3JlIG9mZmljaWFsIGNvbXBpbGUtdGltZSBk
ZXRlY3Rpb24gb2YgQXBwbGUgcGxhdGZvcm1zLCBzbyB0aGF0CisgICAgICAgIGl0IHdpbGwgYmUg
ZWFzaWVyIHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbiBtYWNPUyBhbmQgaU9TLiBBbHNvIG1vdmUg
c29tZQorICAgICAgICAubW0gZmlsZXMgdG8gLmNwcCB3aGVyZSBwb3NzaWJsZS4KKworICAgICAg
ICAqIEFOR0xFLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogc3JjL2dwdV9p
bmZvX3V0aWwvU3lzdGVtSW5mb19tYWMuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2dwdV9pbmZvX3V0aWwvU3lzdGVtSW5mb19tYWMubW0uCisgICAgICAgIChh
bmdsZTo6R2V0U3lzdGVtSW5mbyk6CisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2ds
L2NnbC9EZXZpY2VDR0wuY3BwOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9j
Z2wvRGlzcGxheUNHTC5tbToKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2ds
L0lPU3VyZmFjZVN1cmZhY2VDR0wuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9JT1N1cmZhY2VTdXJmYWNlQ0dMLm1t
LgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvUGJ1ZmZlclN1cmZhY2VD
R0wuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2dsL2NnbC9QYnVmZmVyU3VyZmFjZUNHTC5tbS4KKyAgICAgICAgKiBzcmMvbGli
QU5HTEUvcmVuZGVyZXIvZ2wvY2dsL1JlbmRlcmVyQ0dMLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvUmVuZGVyZXJD
R0wubW0uCisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9XaW5kb3dTdXJm
YWNlQ0dMLm1tOgorCiAyMDE5LTEwLTIzICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4K
IAogICAgICAgICBEb24ndCB0cnkgdG8gY29tcGlsZSAuaW5jIGZpbGVzIGluIEFOR0xFCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9BTkdMRS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvQU5HTEUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCBjYzdlNjIwYTAzMjUzYmMyNzI1ZGYyZDY2NDRiYTFkNTI1OTRhZWUwLi4y
ZGEwNWZlNmJmMTg5Yjg4ZDZjMDFhMzQ0YmMwYmUyYWVjN2EyYWRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9BTkdMRS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0FOR0xFLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTUyMywxMSArNTIzLDExIEBACiAJCTVDQ0Q1OTZDMjI4NEY3OTYwMDE4RjJEOCAvKiBNZW1v
cnlPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDVDQ0Q1OTVFMjI4NEY3OTYwMDE4RjJEOCAvKiBNZW1vcnlPYmplY3QuaCAqLzsgfTsKIAkJNUND
RDU5NkQyMjg0Rjc5NjAwMThGMkQ4IC8qIHZhbGlkYXRpb25FU0VYVC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDRDU5NUYyMjg0Rjc5NjAwMThGMkQ4
IC8qIHZhbGlkYXRpb25FU0VYVC5oICovOyB9OwogCQk1Q0NENTk2RTIyODRGOTUxMDAxOEYyRDgg
LyogRGlzcGxheUNHTC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDVDQjMwMTRBMURFMzlGNDcwMEQyQzQwNSAvKiBEaXNwbGF5Q0dMLm1tICovOyB9Owot
CQk1Q0NENTk2RjIyODRGOTU1MDAxOEYyRDggLyogUGJ1ZmZlclN1cmZhY2VDR0wubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0IzMDE0QzFERTM5RjQ3
MDBEMkM0MDUgLyogUGJ1ZmZlclN1cmZhY2VDR0wubW0gKi87IH07CisJCTVDQ0Q1OTZGMjI4NEY5
NTUwMDE4RjJEOCAvKiBQYnVmZmVyU3VyZmFjZUNHTC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0IzMDE0QzFERTM5RjQ3MDBEMkM0MDUgLyogUGJ1
ZmZlclN1cmZhY2VDR0wuY3BwICovOyB9OwogCQk1Q0NENTk3NzIyODRGQTgzMDAxOEYyRDggLyog
SU9TdXJmYWNlU3VyZmFjZUNHTC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNUNDRDU5NzEyMjg0RkE4MjAwMThGMkQ4IC8qIElPU3VyZmFjZVN1cmZhY2VD
R0wuaCAqLzsgfTsKIAkJNUNDRDU5NzgyMjg0RkE4MzAwMThGMkQ4IC8qIENvbnRleHRDR0wuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDRDU5NzIy
Mjg0RkE4MjAwMThGMkQ4IC8qIENvbnRleHRDR0wuY3BwICovOyB9OwotCQk1Q0NENTk3OTIyODRG
QTgzMDAxOEYyRDggLyogSU9TdXJmYWNlU3VyZmFjZUNHTC5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQ0Q1OTczMjI4NEZBODIwMDE4RjJEOCAvKiBJ
T1N1cmZhY2VTdXJmYWNlQ0dMLm1tICovOyB9OwotCQk1Q0NENTk3QTIyODRGQTgzMDAxOEYyRDgg
LyogUmVuZGVyZXJDR0wubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1Q0NENTk3NDIyODRGQTgyMDAxOEYyRDggLyogUmVuZGVyZXJDR0wubW0gKi87IH07
CisJCTVDQ0Q1OTc5MjI4NEZBODMwMDE4RjJEOCAvKiBJT1N1cmZhY2VTdXJmYWNlQ0dMLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQ0Q1OTczMjI4
NEZBODIwMDE4RjJEOCAvKiBJT1N1cmZhY2VTdXJmYWNlQ0dMLmNwcCAqLzsgfTsKKwkJNUNDRDU5
N0EyMjg0RkE4MzAwMThGMkQ4IC8qIFJlbmRlcmVyQ0dMLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQ0Q1OTc0MjI4NEZBODIwMDE4RjJEOCAvKiBS
ZW5kZXJlckNHTC5jcHAgKi87IH07CiAJCTVDQ0Q1OTdCMjI4NEZBODMwMDE4RjJEOCAvKiBDb250
ZXh0Q0dMLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
Q0NENTk3NTIyODRGQTgyMDAxOEYyRDggLyogQ29udGV4dENHTC5oICovOyB9OwogCQk1Q0NENTk3
QzIyODRGQTgzMDAxOEYyRDggLyogUmVuZGVyZXJDR0wuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQ0Q1OTc2MjI4NEZBODMwMDE4RjJEOCAvKiBSZW5k
ZXJlckNHTC5oICovOyB9OwogCQk1Q0NENTk4MDIyODRGQjkwMDAxOEYyRDggLyogUXVlcnlJbXBs
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQ0Q1
OTdEMjI4NEZCOEYwMDE4RjJEOCAvKiBRdWVyeUltcGwuY3BwICovOyB9OwpAQCAtNTQyLDcgKzU0
Miw3IEBACiAJCTVDQ0Q1OTkzMjI4NEZDNDAwMDE4RjJEOCAvKiBpbWFnZWZvcm1hdHMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQ0Q1OThCMjI4NEZD
NDAwMDE4RjJEOCAvKiBpbWFnZWZvcm1hdHMuaCAqLzsgfTsKIAkJNUNDRDU5OTQyMjg0RkM0MDAw
MThGMkQ4IC8qIGdlbmVyYXRlbWlwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1Q0NENTk4QzIyODRGQzQwMDAxOEYyRDggLyogZ2VuZXJhdGVtaXAuaCAq
LzsgfTsKIAkJNUNDRDU5OTUyMjg0RkM0MDAwMThGMkQ4IC8qIGxvYWRpbWFnZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0NENTk4RDIyODRGQzQw
MDAxOEYyRDggLyogbG9hZGltYWdlLmNwcCAqLzsgfTsKLQkJNUNDRDU5OUEyMjg0RkM3NTAwMThG
MkQ4IC8qIFN5c3RlbUluZm9fbWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNUNDRDU5OTcyMjg0RkM3NTAwMThGMkQ4IC8qIFN5c3RlbUluZm9fbWFj
Lm1tICovOyB9OworCQk1Q0NENTk5QTIyODRGQzc1MDAxOEYyRDggLyogU3lzdGVtSW5mb19tYWMu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDRDU5
OTcyMjg0RkM3NTAwMThGMkQ4IC8qIFN5c3RlbUluZm9fbWFjLmNwcCAqLzsgfTsKIAkJNUNDRDU5
OUIyMjg0RkM3NTAwMThGMkQ4IC8qIFN5c3RlbUluZm8uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDRDU5OTgyMjg0RkM3NTAwMThGMkQ4IC8qIFN5
c3RlbUluZm8uY3BwICovOyB9OwogCQk1Q0NENTk5QzIyODRGQzc1MDAxOEYyRDggLyogU3lzdGVt
SW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUND
RDU5OTkyMjg0RkM3NTAwMThGMkQ4IC8qIFN5c3RlbUluZm8uaCAqLzsgfTsKIAkJNUNDRDU5OUUy
Mjg0RkNERTAwMThGMkQ4IC8qIENvbnRleHRfZ2xlc18xXzAuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDRDU5OUQyMjg0RkNERDAwMThGMkQ4IC8q
IENvbnRleHRfZ2xlc18xXzAuY3BwICovOyB9OwpAQCAtMTE5Niw3ICsxMTk2LDcgQEAKIAkJNUNC
MzAxNDkxREUzOUY0NzAwRDJDNDA1IC8qIERpc3BsYXlDR0wuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRGlzcGxheUNHTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1Q0IzMDE0QTFERTM5RjQ3MDBEMkM0MDUgLyogRGlzcGxheUNHTC5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERpc3BsYXlDR0wubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTVDQjMwMTRCMURFMzlGNDcwMEQyQzQwNSAvKiBQYnVmZmVyU3VyZmFj
ZUNHTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYnVmZmVyU3VyZmFjZUNH
TC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1Q0IzMDE0QzFERTM5RjQ3MDBEMkM0
MDUgLyogUGJ1ZmZlclN1cmZhY2VDR0wubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBQYnVmZmVyU3VyZmFjZUNHTC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNUNCMzAxNEMxREUzOUY0NzAwRDJDNDA1IC8qIFBidWZmZXJTdXJmYWNlQ0dMLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBidWZmZXJTdXJmYWNlQ0dMLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNCMzA0OEIxREU0MTQzNTAwRDJDNDA1
IC8qIENvcmVHcmFwaGljcy5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IENvcmVHcmFwaGlj
cy5mcmFtZXdvcms7IHBhdGggPSBTeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVHcmFwaGlj
cy5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBTREtST09UOyB9OwogCQk1Q0IzMDQ4RDFERTQxNDQ0
MDBEMkM0MDUgLyogT3BlbkdMLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gT3BlbkdMLmZy
YW1ld29yazsgcGF0aCA9IFN5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvT3BlbkdMLmZyYW1ld29y
azsgc291cmNlVHJlZSA9IFNES1JPT1Q7IH07CiAJCTVDQjMwNDhGMURFNDE0NTUwMEQyQzQwNSAv
KiBRdWFydHpDb3JlLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gUXVhcnR6Q29yZS5mcmFt
ZXdvcms7IHBhdGggPSBTeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1F1YXJ0ekNvcmUuZnJhbWV3
b3JrOyBzb3VyY2VUcmVlID0gU0RLUk9PVDsgfTsKQEAgLTEyNjksOCArMTI2OSw4IEBACiAJCTVD
Q0Q1OTVGMjI4NEY3OTYwMDE4RjJEOCAvKiB2YWxpZGF0aW9uRVNFWFQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gdmFsaWRhdGlvbkVTRVhULmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTVDQ0Q1OTcxMjI4NEZBODIwMDE4RjJEOCAvKiBJT1N1cmZhY2VTdXJmYWNl
Q0dMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElPU3VyZmFjZVN1cmZhY2VD
R0wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNDRDU5NzIyMjg0RkE4MjAwMThG
MkQ4IC8qIENvbnRleHRDR0wuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ29udGV4dENHTC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTVDQ0Q1OTcz
MjI4NEZBODIwMDE4RjJEOCAvKiBJT1N1cmZhY2VTdXJmYWNlQ0dMLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSU9TdXJmYWNlU3VyZmFjZUNHTC5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUNDRDU5NzQyMjg0RkE4MjAwMThGMkQ4IC8qIFJlbmRl
cmVyQ0dMLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVuZGVy
ZXJDR0wubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQ0Q1OTczMjI4NEZBODIw
MDE4RjJEOCAvKiBJT1N1cmZhY2VTdXJmYWNlQ0dMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IElPU3VyZmFjZVN1cmZhY2VDR0wuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1Q0NENTk3NDIyODRGQTgyMDAxOEYyRDggLyogUmVuZGVyZXJDR0wuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyZXJDR0wuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0NENTk3NTIyODRGQTgyMDAxOEYyRDggLyog
Q29udGV4dENHTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb250ZXh0Q0dM
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQ0Q1OTc2MjI4NEZBODMwMDE4RjJE
OCAvKiBSZW5kZXJlckNHTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5k
ZXJlckNHTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0NENTk3RDIyODRGQjhG
MDAxOEYyRDggLyogUXVlcnlJbXBsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFF1ZXJ5SW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjg1
LDcgKzEyODUsNyBAQAogCQk1Q0NENTk4QjIyODRGQzQwMDAxOEYyRDggLyogaW1hZ2Vmb3JtYXRz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGltYWdlZm9ybWF0cy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0NENTk4QzIyODRGQzQwMDAxOEYyRDggLyogZ2Vu
ZXJhdGVtaXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZ2VuZXJhdGVtaXAu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNDRDU5OEQyMjg0RkM0MDAwMThGMkQ4
IC8qIGxvYWRpbWFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBs
b2FkaW1hZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1Q0NENTk5NzIyODRG
Qzc1MDAxOEYyRDggLyogU3lzdGVtSW5mb19tYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBTeXN0ZW1JbmZvX21hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNUNDRDU5OTcyMjg0RkM3NTAwMThGMkQ4IC8qIFN5c3RlbUluZm9fbWFjLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN5c3RlbUluZm9fbWFjLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNDRDU5OTgyMjg0RkM3NTAwMThGMkQ4IC8q
IFN5c3RlbUluZm8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3lz
dGVtSW5mby5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQ0Q1OTk5MjI4NEZD
NzUwMDE4RjJEOCAvKiBTeXN0ZW1JbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFN5c3RlbUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNDRDU5OUQy
Mjg0RkNERDAwMThGMkQ4IC8qIENvbnRleHRfZ2xlc18xXzAuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQ29udGV4dF9nbGVzXzFfMC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0yMDQwLDYgKzIwNDAsNyBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKIAkJCQk1Q0IzMDE0ODFERTM5RjM2MDBEMkM0MDUgLyogY2dsICovLAor
CQkJCTMxM0JDRTI3MjM2MEY3ODkwMEZDMzlFNSAvKiBlYWdsICovLAogCQkJCTVDQjMwMEUwMURF
MzlGMUEwMEQyQzQwNSAvKiBCbGl0R0wuY3BwICovLAogCQkJCTVDQjMwMEUxMURFMzlGMUEwMEQy
QzQwNSAvKiBCbGl0R0wuaCAqLywKIAkJCQk1Q0IzMDBFMjFERTM5RjFBMDBEMkM0MDUgLyogQnVm
ZmVyR0wuY3BwICovLApAQCAtMjExNiwxMiArMjExNywxMiBAQAogCQkJCTZFMzFBMEEyMjM0RUVF
RDQwMEM4NDc4NCAvKiBEZXZpY2VDR0wuaCAqLywKIAkJCQk1Q0IzMDE0OTFERTM5RjQ3MDBEMkM0
MDUgLyogRGlzcGxheUNHTC5oICovLAogCQkJCTVDQjMwMTRBMURFMzlGNDcwMEQyQzQwNSAvKiBE
aXNwbGF5Q0dMLm1tICovLAorCQkJCTVDQ0Q1OTczMjI4NEZBODIwMDE4RjJEOCAvKiBJT1N1cmZh
Y2VTdXJmYWNlQ0dMLmNwcCAqLywKIAkJCQk1Q0NENTk3MTIyODRGQTgyMDAxOEYyRDggLyogSU9T
dXJmYWNlU3VyZmFjZUNHTC5oICovLAotCQkJCTVDQ0Q1OTczMjI4NEZBODIwMDE4RjJEOCAvKiBJ
T1N1cmZhY2VTdXJmYWNlQ0dMLm1tICovLAorCQkJCTVDQjMwMTRDMURFMzlGNDcwMEQyQzQwNSAv
KiBQYnVmZmVyU3VyZmFjZUNHTC5jcHAgKi8sCiAJCQkJNUNCMzAxNEIxREUzOUY0NzAwRDJDNDA1
IC8qIFBidWZmZXJTdXJmYWNlQ0dMLmggKi8sCi0JCQkJNUNCMzAxNEMxREUzOUY0NzAwRDJDNDA1
IC8qIFBidWZmZXJTdXJmYWNlQ0dMLm1tICovLAorCQkJCTVDQ0Q1OTc0MjI4NEZBODIwMDE4RjJE
OCAvKiBSZW5kZXJlckNHTC5jcHAgKi8sCiAJCQkJNUNDRDU5NzYyMjg0RkE4MzAwMThGMkQ4IC8q
IFJlbmRlcmVyQ0dMLmggKi8sCi0JCQkJNUNDRDU5NzQyMjg0RkE4MjAwMThGMkQ4IC8qIFJlbmRl
cmVyQ0dMLm1tICovLAogCQkJCUEzMUI2MTgxMjMwQjc0N0UwMDE2MTBENyAvKiBXaW5kb3dTdXJm
YWNlQ0dMLmggKi8sCiAJCQkJQTMxQjYxODIyMzBCNzQ3RjAwMTYxMEQ3IC8qIFdpbmRvd1N1cmZh
Y2VDR0wubW0gKi8sCiAJCQkpOwpAQCAtMjMzMiw3ICsyMzMzLDggQEAKIAkJCWNoaWxkcmVuID0g
KAogCQkJCTVDQ0Q1OTk4MjI4NEZDNzUwMDE4RjJEOCAvKiBTeXN0ZW1JbmZvLmNwcCAqLywKIAkJ
CQk1Q0NENTk5OTIyODRGQzc1MDAxOEYyRDggLyogU3lzdGVtSW5mby5oICovLAotCQkJCTVDQ0Q1
OTk3MjI4NEZDNzUwMDE4RjJEOCAvKiBTeXN0ZW1JbmZvX21hYy5tbSAqLywKKwkJCQkzMTNCQ0U0
NDIzNjBGOUFEMDBGQzM5RTUgLyogU3lzdGVtSW5mb19pbnRlcm5hbC5oICovLAorCQkJCTVDQ0Q1
OTk3MjI4NEZDNzUwMDE4RjJEOCAvKiBTeXN0ZW1JbmZvX21hYy5jcHAgKi8sCiAJCQkpOwogCQkJ
bmFtZSA9IGdwdWluZm91dGlsOwogCQkJcGF0aCA9IGdwdV9pbmZvX3V0aWw7CkBAIC0yNTQxLDYg
KzI1NDMsNyBAQAogCQkJCTVDMURCREUzMUIwNDM4RDMwMDIzNTU1MiAvKiBDb250ZXh0LmggaW4g
SGVhZGVycyAqLywKIAkJCQlBMzAzMDcyNzIzMDVGN0M0MDAyREE5NzIgLyogQ29udGV4dC5pbmwu
aCBpbiBIZWFkZXJzICovLAogCQkJCTVDQ0Q1OTdCMjI4NEZBODMwMDE4RjJEOCAvKiBDb250ZXh0
Q0dMLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMTNCQ0UzRDIzNjBGNzhBMDBGQzM5RTUgLyogQ29u
dGV4dEVBR0wuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDQjMwMTFEMURFMzlGMUEwMEQyQzQwNSAv
KiBDb250ZXh0R0wuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDQjMwNERFMURFNDE2NDgwMEQyQzQw
NSAvKiBDb250ZXh0SW1wbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNDRDU5OEUyMjg0RkM0MDAw
MThGMkQ4IC8qIGNvcHlpbWFnZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTUxLDYgKzI1NTQsNyBA
QAogCQkJCTVDNTVENjg5MjI4MjZCOUYwMEI1QkEyQyAvKiBEZWZlckdsb2JhbEluaXRpYWxpemVy
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMxREJERTcxQjA0MzhEMzAwMjM1NTUyIC8qIERldmlj
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkUzMUEwQTQyMzRFRUVENDAwQzg0Nzg0IC8qIERldmlj
ZUNHTC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzEzQkNFNDMyMzYwRjc4QTAwRkMzOUU1IC8qIERl
dmljZUVBR0wuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDQjMwNEUwMURFNDE2NDgwMEQyQzQwNSAv
KiBEZXZpY2VJbXBsLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTAxMkUyNzE4Qjk3QjlCMDAzOTA2
MkYgLyogRGlhZ25vc3RpY3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUEyNjRGOEFEMTY5NzRERUQw
MDZGQUE1QSAvKiBEaWFnbm9zdGljc0Jhc2UuaCBpbiBIZWFkZXJzICovLApAQCAtMjU2MCw2ICsy
NTY0LDcgQEAKIAkJCQkzMTVFQkRCQzFGQ0U0NEJGMDBBQzdBODkgLyogRGlzcGF0Y2hUYWJsZUdM
X2F1dG9nZW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTVDMURCREU5MUIwNDM4RDMwMDIzNTU1MiAv
KiBEaXNwbGF5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0IzMDE0RjFERTM5RjQ3MDBEMkM0MDUg
LyogRGlzcGxheUNHTC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzEzQkNFM0IyMzYwRjc4QTAwRkMz
OUU1IC8qIERpc3BsYXlFQUdMLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0IzMDExRjFERTM5RjFB
MDBEMkM0MDUgLyogRGlzcGxheUdMLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0IzMDRFMjFERTQx
NjQ4MDBEMkM0MDUgLyogRGlzcGxheUltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxNUVCREM5
MUZDRTQ0RTQwMEFDN0E4OSAvKiBkcml2ZXJfdXRpbHMuaCBpbiBIZWFkZXJzICovLApAQCAtMjY1
OCw2ICsyNjYzLDcgQEAKIAkJCQk1QzU1RDcwODIyODI2Q0IzMDBCNUJBMkMgLyogSW50ZXJtTm9k
ZVBhdHRlcm5NYXRjaGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzU1RDcwMTIyODI2Q0IzMDBC
NUJBMkMgLyogSW50ZXJtVHJhdmVyc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDQ0Q1OTc3MjI4
NEZBODMwMDE4RjJEOCAvKiBJT1N1cmZhY2VTdXJmYWNlQ0dMLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkzMTNCQ0U0MTIzNjBGNzhBMDBGQzM5RTUgLyogSU9TdXJmYWNlU3VyZmFjZUVBR0wuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTMxNUVCRDhFMUZDRTQ0MzYwMEFDN0E4OSAvKiBJc0FTVERlcHRoQmVs
b3dMaW1pdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTI2NEY4Q0QxNjk3NjJBQTAwNkZBQTVBIC8q
IGtocnBsYXRmb3JtLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzFEQkMzMjFCMDQzNzVGMDAyMzU1
NTIgLyogbGVuZ3RoX2xpbWl0cy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjk4LDYgKzI3MDQsNyBA
QAogCQkJCTVDQjMwMTJFMURFMzlGMUEwMEQyQzQwNSAvKiBQYXRoR0wuaCBpbiBIZWFkZXJzICov
LAogCQkJCTVDQjMwNEYxMURFNDE2NDgwMEQyQzQwNSAvKiBQYXRoSW1wbC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNUNCMzAxNTExREUzOUY0NzAwRDJDNDA1IC8qIFBidWZmZXJTdXJmYWNlQ0dMLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkzMTNCQ0UzQzIzNjBGNzhBMDBGQzM5RTUgLyogUGJ1ZmZlclN1
cmZhY2VFQUdMLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzFEQkJGNTFCMDQzNkVDMDAyMzU1NTIg
LyogcGxhdGZvcm0uaCBpbiBIZWFkZXJzICovLAogCQkJCTMxNUVCRTI5MUZDRjgwOEMwMEFDN0E4
OSAvKiBQTXVySGFzaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM1NUQ3MjcyMjgyNzQ3NzAwQjVC
QTJDIC8qIFBvb2xBbGxvYy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzM2LDYgKzI3NDMsNyBAQAog
CQkJCTVDQjMwNEY1MURFNDE2NDgwMEQyQzQwNSAvKiBSZW5kZXJidWZmZXJJbXBsX21vY2suaCBp
biBIZWFkZXJzICovLAogCQkJCTVDQjMwNEY4MURFNDE2NDgwMEQyQzQwNSAvKiByZW5kZXJlcl91
dGlscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNDRDU5N0MyMjg0RkE4MzAwMThGMkQ4IC8qIFJl
bmRlcmVyQ0dMLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMTNCQ0UzRTIzNjBGNzhBMDBGQzM5RTUg
LyogUmVuZGVyZXJFQUdMLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0IzMDEzODFERTM5RjFBMDBE
MkM0MDUgLyogUmVuZGVyZXJHTC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNCMzAxMzYxREUzOUYx
QTAwRDJDNDA1IC8qIHJlbmRlcmVyZ2xfdXRpbHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUEzMDMw
NzA3MjMwNUY2MzYwMDJEQTk3MiAvKiBSZXBsYWNlU2hhZG93aW5nVmFyaWFibGVzLmggaW4gSGVh
ZGVycyAqLywKQEAgLTI4MDAsNiArMjgwOCw3IEBACiAJCQkJMzFBMzMxQzcxRUE1RUQ1RjAwRkQy
MjAzIC8qIHN5c3RlbV91dGlscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM1NUQ3MkIyMjgyNzQ3
NzAwQjVCQTJDIC8qIHN5c3RlbV91dGlsc191bml0dGVzdF9oZWxwZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTVDQ0Q1OTlDMjI4NEZDNzUwMDE4RjJEOCAvKiBTeXN0ZW1JbmZvLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkzMTNCQ0U0NTIzNjBGOUFEMDBGQzM5RTUgLyogU3lzdGVtSW5mb19pbnRlcm5h
bC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMxREJGMzExQjA0MzhEMzAwMjM1NTUyIC8qIFRleHR1
cmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxNUVCRDlFMUZDRTQ0MzYwMEFDN0E4OSAvKiBUZXh0
dXJlRnVuY3Rpb25ITFNMLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0IzMDE0MjFERTM5RjFBMDBE
MkM0MDUgLyogVGV4dHVyZUdMLmggaW4gSGVhZGVycyAqLywKQEAgLTI4NzcsNiArMjg4Niw3IEBA
CiAJCQkJNUMxREJGNDIxQjA0MzhEMzAwMjM1NTUyIC8qIFZlcnRleEF0dHJpYnV0ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNUM1NUQ3MDAyMjgyNkNCMzAwQjVCQTJDIC8qIFZpc2l0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBMzFCNjE4MzIzMEI3NDdGMDAxNjEwRDcgLyogV2luZG93U3VyZmFjZUNH
TC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzEzQkNFMzcyMzYwRjc4QTAwRkMzOUU1IC8qIFdpbmRv
d1N1cmZhY2VFQUdMLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTVFQkRGQTFGQ0U0NTJEMDBBQzdB
ODkgLyogV29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzU1RDY3NTIyODI2QjlG
MDBCNUJBMkMgLyogV3JhcFN3aXRjaFN0YXRlbWVudHNJbkJsb2Nrcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNUNDRDU5NTEyMjg0RUNEMTAwMThGMkQ4IC8qIHh4aGFzaC5oIGluIEhlYWRlcnMgKi8s
CkBAIC0zMDg0LDcgKzMwOTQsNyBAQAogCQkJCTVDNTVENzA5MjI4MjZDQjMwMEI1QkEyQyAvKiBJ
bnRlcm1Ob2RlX3V0aWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUM1NUQ3MDQyMjgyNkNCMzAw
QjVCQTJDIC8qIEludGVybU5vZGVQYXR0ZXJuTWF0Y2hlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk1QzU1RDcwMjIyODI2Q0IzMDBCNUJBMkMgLyogSW50ZXJtVHJhdmVyc2UuY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJNUNDRDU5NzkyMjg0RkE4MzAwMThGMkQ4IC8qIElPU3VyZmFjZVN1cmZhY2VD
R0wubW0gaW4gU291cmNlcyAqLywKKwkJCQk1Q0NENTk3OTIyODRGQTgzMDAxOEYyRDggLyogSU9T
dXJmYWNlU3VyZmFjZUNHTC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTVFQkQ5QzFGQ0U0NDM2
MDBBQzdBODkgLyogSXNBU1REZXB0aEJlbG93TGltaXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTI2NEY4QjYxNjk3NERFRDAwNkZBQTVBIC8qIExleGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTVDQjMwNEVGMURFNDE2NDgwMEQyQzQwNSAvKiBsb2FkX2Z1bmN0aW9uc190YWJsZV9hdXRvZ2Vu
LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzExOCw3ICszMTI4LDcgQEAKIAkJCQkzMTAxMkU1NDE4
Qjk3QjlCMDAzOTA2MkYgLyogUGFyc2VDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVD
Q0Q4MTdBMURCRkU5OTkwMDYwNjZCOCAvKiBQYXRoLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVD
QjMwMTJEMURFMzlGMUEwMEQyQzQwNSAvKiBQYXRoR0wuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJ
NUNDRDU5NkYyMjg0Rjk1NTAwMThGMkQ4IC8qIFBidWZmZXJTdXJmYWNlQ0dMLm1tIGluIFNvdXJj
ZXMgKi8sCisJCQkJNUNDRDU5NkYyMjg0Rjk1NTAwMThGMkQ4IC8qIFBidWZmZXJTdXJmYWNlQ0dM
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDMURCREZFMUIwNDM4RDMwMDIzNTU1MiAvKiBQbGF0
Zm9ybS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTVFQkUyODFGQ0Y4MDhDMDBBQzdBODkgLyog
UE11ckhhc2guY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzEwMTJFNTYxOEI5N0I5QjAwMzkwNjJG
IC8qIFBvb2xBbGxvYy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMxNDksNyArMzE1OSw3IEBACiAJ
CQkJNUMxREJFMDcxQjA0MzhEMzAwMjM1NTUyIC8qIFJlbmRlcmJ1ZmZlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk1Q0IzMDEzMzFERTM5RjFBMDBEMkM0MDUgLyogUmVuZGVyYnVmZmVyR0wuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNUNCMzA0RjcxREU0MTY0ODAwRDJDNDA1IC8qIHJlbmRlcmVy
X3V0aWxzLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTVDQ0Q1OTdBMjI4NEZBODMwMDE4RjJEOCAv
KiBSZW5kZXJlckNHTC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTVDQ0Q1OTdBMjI4NEZBODMwMDE4
RjJEOCAvKiBSZW5kZXJlckNHTC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1Q0IzMDEzNzFERTM5
RjFBMDBEMkM0MDUgLyogUmVuZGVyZXJHTC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1Q0IzMDEz
NTFERTM5RjFBMDBEMkM0MDUgLyogcmVuZGVyZXJnbF91dGlscy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBMzAzMDcwNTIzMDVGNjM2MDAyREE5NzIgLyogUmVwbGFjZVNoYWRvd2luZ1ZhcmlhYmxl
cy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMyMDIsNyArMzIxMiw3IEBACiAJCQkJNUM1NUQ3MzAy
MjgyNzQ3NzAwQjVCQTJDIC8qIHN5c3RlbV91dGlsc19wb3NpeC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk1QzU1RDcyMDIyODI3NDc3MDBCNUJBMkMgLyogc3lzdGVtX3V0aWxzX3VuaXR0ZXN0X2hl
bHBlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1Q0NENTk5QjIyODRGQzc1MDAxOEYyRDggLyog
U3lzdGVtSW5mby5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1Q0NENTk5QTIyODRGQzc1MDAxOEYy
RDggLyogU3lzdGVtSW5mb19tYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQk1Q0NENTk5QTIyODRG
Qzc1MDAxOEYyRDggLyogU3lzdGVtSW5mb19tYWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMx
REJGMzAxQjA0MzhEMzAwMjM1NTUyIC8qIFRleHR1cmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MzE1RUJEOTkxRkNFNDQzNjAwQUM3QTg5IC8qIFRleHR1cmVGdW5jdGlvbkhMU0wuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNUNCMzAxNDExREUzOUYxQTAwRDJDNDA1IC8qIFRleHR1cmVHTC5jcHAg
aW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9n
cHVfaW5mb191dGlsL1N5c3RlbUluZm9fbWFjLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9ncHVfaW5mb191dGlsL1N5c3RlbUluZm9fbWFjLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NmVmNjE0
YzMyMmY0MTk5MzQ4NzY5NDA5OTE3ZTZlNTJlNTFjYzI2Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2dwdV9pbmZvX3V0aWwvU3lzdGVtSW5mb19tYWMuY3Bw
CkBAIC0wLDAgKzEsMjQ4IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTcgVGhlIEFOR0xFIFByb2pl
Y3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBTeXN0ZW1JbmZvX21hYy5jcHA6IGlt
cGxlbWVudGF0aW9uIG9mIHRoZSBNYWMtc3BlY2lmaWMgcGFydHMgb2YgU3lzdGVtSW5mby5oCisK
KyNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpbmNsdWRlIDxUYXJnZXRDb25kaXRpb25hbHMuaD4K
KyNpZiBUQVJHRVRfT1NfTUFDCisKKyNpbmNsdWRlICJncHVfaW5mb191dGlsL1N5c3RlbUluZm9f
aW50ZXJuYWwuaCIKKworI2luY2x1ZGUgPENvcmVHcmFwaGljcy9DR0RpcmVjdERpc3BsYXkuaD4K
KyNpbmNsdWRlIDxJT0tpdC9JT0tpdExpYi5oPgorI2luY2x1ZGUgPE9wZW5HTC9PcGVuR0wuaD4K
KworbmFtZXNwYWNlIGFuZ2xlCit7CisKK25hbWVzcGFjZQoreworCit1c2luZyBQbGF0Zm9ybURp
c3BsYXlJRCA9IHVpbnQzMl90OworCitjb25zdGV4cHIgQ0dMUmVuZGVyZXJQcm9wZXJ0eSBrQ0dM
UlBSZWdpc3RyeUlETG93ICA9IHN0YXRpY19jYXN0PENHTFJlbmRlcmVyUHJvcGVydHk+KDE0MCk7
Citjb25zdGV4cHIgQ0dMUmVuZGVyZXJQcm9wZXJ0eSBrQ0dMUlBSZWdpc3RyeUlESGlnaCA9IHN0
YXRpY19jYXN0PENHTFJlbmRlcmVyUHJvcGVydHk+KDE0MSk7CisKKy8vIENvZGUgZnJvbSBXZWJL
aXQgdG8gZ2V0IHRoZSBhY3RpdmUgR1BVJ3MgSUQgZ2l2ZW4gYSBkaXNwbGF5IElELgordWludDY0
X3QgR2V0R3B1SURGcm9tRGlzcGxheUlEKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKK3sK
KyAgICBHTHVpbnQgZGlzcGxheU1hc2sgICAgICAgICAgICAgID0gQ0dEaXNwbGF5SURUb09wZW5H
TERpc3BsYXlNYXNrKGRpc3BsYXlJRCk7CisgICAgR0xpbnQgbnVtUmVuZGVyZXJzICAgICAgICAg
ICAgICA9IDA7CisgICAgQ0dMUmVuZGVyZXJJbmZvT2JqIHJlbmRlcmVySW5mbyA9IG51bGxwdHI7
CisgICAgQ0dMRXJyb3IgZXJyb3IgPSBDR0xRdWVyeVJlbmRlcmVySW5mbyhkaXNwbGF5TWFzaywg
JnJlbmRlcmVySW5mbywgJm51bVJlbmRlcmVycyk7CisgICAgaWYgKCFudW1SZW5kZXJlcnMgfHwg
IXJlbmRlcmVySW5mbyB8fCBlcnJvciAhPSBrQ0dMTm9FcnJvcikKKyAgICAgICAgcmV0dXJuIDA7
CisKKyAgICAvLyBUaGUgMHRoIHJlbmRlcmVyIHNob3VsZCBub3QgYmUgdGhlIHNvZnR3YXJlIHJl
bmRlcmVyLgorICAgIEdMaW50IGlzQWNjZWxlcmF0ZWQ7CisgICAgZXJyb3IgPSBDR0xEZXNjcmli
ZVJlbmRlcmVyKHJlbmRlcmVySW5mbywgMCwga0NHTFJQQWNjZWxlcmF0ZWQsICZpc0FjY2VsZXJh
dGVkKTsKKyAgICBpZiAoIWlzQWNjZWxlcmF0ZWQgfHwgZXJyb3IgIT0ga0NHTE5vRXJyb3IpCisg
ICAgeworICAgICAgICBDR0xEZXN0cm95UmVuZGVyZXJJbmZvKHJlbmRlcmVySW5mbyk7CisgICAg
ICAgIHJldHVybiAwOworICAgIH0KKworICAgIEdMaW50IGdwdUlETG93ICA9IDA7CisgICAgR0xp
bnQgZ3B1SURIaWdoID0gMDsKKworICAgIGVycm9yID0gQ0dMRGVzY3JpYmVSZW5kZXJlcihyZW5k
ZXJlckluZm8sIDAsIGtDR0xSUFJlZ2lzdHJ5SURMb3csICZncHVJRExvdyk7CisKKyAgICBpZiAo
ZXJyb3IgIT0ga0NHTE5vRXJyb3IgfHwgZ3B1SURMb3cgPCAwKQorICAgIHsKKyAgICAgICAgQ0dM
RGVzdHJveVJlbmRlcmVySW5mbyhyZW5kZXJlckluZm8pOworICAgICAgICByZXR1cm4gMDsKKyAg
ICB9CisKKyAgICBlcnJvciA9IENHTERlc2NyaWJlUmVuZGVyZXIocmVuZGVyZXJJbmZvLCAwLCBr
Q0dMUlBSZWdpc3RyeUlESGlnaCwgJmdwdUlESGlnaCk7CisgICAgaWYgKGVycm9yICE9IGtDR0xO
b0Vycm9yIHx8IGdwdUlESGlnaCA8IDApCisgICAgeworICAgICAgICBDR0xEZXN0cm95UmVuZGVy
ZXJJbmZvKHJlbmRlcmVySW5mbyk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIENH
TERlc3Ryb3lSZW5kZXJlckluZm8ocmVuZGVyZXJJbmZvKTsKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KGdwdUlESGlnaCkgPDwgMzIgfCBncHVJRExvdzsKK30KKworc3RkOjpzdHJp
bmcgR2V0TWFjaGluZU1vZGVsKCkKK3sKKyAgICBpb19zZXJ2aWNlX3QgcGxhdGZvcm1FeHBlcnQg
PSBJT1NlcnZpY2VHZXRNYXRjaGluZ1NlcnZpY2UoCisgICAgICAgIGtJT01hc3RlclBvcnREZWZh
dWx0LCBJT1NlcnZpY2VNYXRjaGluZygiSU9QbGF0Zm9ybUV4cGVydERldmljZSIpKTsKKworICAg
IGlmIChwbGF0Zm9ybUV4cGVydCA9PSBJT19PQkpFQ1RfTlVMTCkKKyAgICB7CisgICAgICAgIHJl
dHVybiAiIjsKKyAgICB9CisKKyAgICBDRkRhdGFSZWYgbW9kZWxEYXRhID0gc3RhdGljX2Nhc3Q8
Q0ZEYXRhUmVmPigKKyAgICAgICAgSU9SZWdpc3RyeUVudHJ5Q3JlYXRlQ0ZQcm9wZXJ0eShwbGF0
Zm9ybUV4cGVydCwgQ0ZTVFIoIm1vZGVsIiksIGtDRkFsbG9jYXRvckRlZmF1bHQsIDApKTsKKyAg
ICBpZiAobW9kZWxEYXRhID09IG51bGxwdHIpCisgICAgeworICAgICAgICBJT09iamVjdFJlbGVh
c2UocGxhdGZvcm1FeHBlcnQpOworICAgICAgICByZXR1cm4gIiI7CisgICAgfQorCisgICAgc3Rk
OjpzdHJpbmcgcmVzdWx0ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyICo+KENGRGF0YUdl
dEJ5dGVQdHIobW9kZWxEYXRhKSk7CisKKyAgICBJT09iamVjdFJlbGVhc2UocGxhdGZvcm1FeHBl
cnQpOworICAgIENGUmVsZWFzZShtb2RlbERhdGEpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30K
KworLy8gRXh0cmFjdHMgb25lIGludGVnZXIgcHJvcGVydHkgZnJvbSBhIHJlZ2lzdHJ5IGVudHJ5
LgorYm9vbCBHZXRFbnRyeVByb3BlcnR5KGlvX3JlZ2lzdHJ5X2VudHJ5X3QgZW50cnksIENGU3Ry
aW5nUmVmIG5hbWUsIHVpbnQzMl90ICp2YWx1ZSkKK3sKKyAgICAqdmFsdWUgPSAwOworCisgICAg
Q0ZEYXRhUmVmIGRhdGEgPSBzdGF0aWNfY2FzdDxDRkRhdGFSZWY+KAorICAgICAgICBJT1JlZ2lz
dHJ5RW50cnlTZWFyY2hDRlByb3BlcnR5KGVudHJ5LCBrSU9TZXJ2aWNlUGxhbmUsIG5hbWUsIGtD
RkFsbG9jYXRvckRlZmF1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAga0lPUmVnaXN0cnlJdGVyYXRlUmVjdXJzaXZlbHkgfCBrSU9SZWdpc3RyeUl0ZXJhdGVQYXJl
bnRzKSk7CisKKyAgICBpZiAoZGF0YSA9PSBudWxscHRyKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIGNvbnN0IHVpbnQzMl90ICp2YWx1ZVB0ciA9IHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QgKj4oQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhKSk7CisKKyAg
ICBpZiAodmFsdWVQdHIgPT0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIENGUmVsZWFzZShkYXRh
KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgICp2YWx1ZSA9ICp2YWx1ZVB0
cjsKKyAgICBDRlJlbGVhc2UoZGF0YSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKKy8vIEdhdGhl
cnMgdGhlIHZlbmRvciBhbmQgZGV2aWNlIElEcyBmb3IgdGhlIFBDSSBHUFVzCitib29sIEdldFBD
SURldmljZXMoc3RkOjp2ZWN0b3I8R1BVRGV2aWNlSW5mbz4gKmRldmljZXMpCit7CisgICAgLy8g
bWF0Y2hEaWN0aW9uYXJ5IHdpbGwgYmUgY29uc3VtZWQgYnkgSU9TZXJ2aWNlR2V0TWF0Y2hpbmdT
ZXJ2aWNlcywgbm8gbmVlZCB0byByZWxlYXNlIGl0LgorICAgIENGTXV0YWJsZURpY3Rpb25hcnlS
ZWYgbWF0Y2hEaWN0aW9uYXJ5ID0gSU9TZXJ2aWNlTWF0Y2hpbmcoIklPUENJRGV2aWNlIik7CisK
KyAgICBpb19pdGVyYXRvcl90IGVudHJ5SXRlcmF0b3I7CisgICAgaWYgKElPU2VydmljZUdldE1h
dGNoaW5nU2VydmljZXMoa0lPTWFzdGVyUG9ydERlZmF1bHQsIG1hdGNoRGljdGlvbmFyeSwgJmVu
dHJ5SXRlcmF0b3IpICE9CisgICAgICAgIGtJT1JldHVyblN1Y2Nlc3MpCisgICAgeworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaW9fcmVnaXN0cnlfZW50cnlfdCBlbnRyeSA9
IElPX09CSkVDVF9OVUxMOworCisgICAgd2hpbGUgKChlbnRyeSA9IElPSXRlcmF0b3JOZXh0KGVu
dHJ5SXRlcmF0b3IpKSAhPSBJT19PQkpFQ1RfTlVMTCkKKyAgICB7CisgICAgICAgIGNvbnN0ZXhw
ciB1aW50MzJfdCBrQ2xhc3NDb2RlRGlzcGxheVZHQSA9IDB4MzAwMDA7CisgICAgICAgIHVpbnQz
Ml90IGNsYXNzQ29kZTsKKyAgICAgICAgR1BVRGV2aWNlSW5mbyBpbmZvOworCisgICAgICAgIGlm
IChHZXRFbnRyeVByb3BlcnR5KGVudHJ5LCBDRlNUUigiY2xhc3MtY29kZSIpLCAmY2xhc3NDb2Rl
KSAmJgorICAgICAgICAgICAgY2xhc3NDb2RlID09IGtDbGFzc0NvZGVEaXNwbGF5VkdBICYmCisg
ICAgICAgICAgICBHZXRFbnRyeVByb3BlcnR5KGVudHJ5LCBDRlNUUigidmVuZG9yLWlkIiksICZp
bmZvLnZlbmRvcklkKSAmJgorICAgICAgICAgICAgR2V0RW50cnlQcm9wZXJ0eShlbnRyeSwgQ0ZT
VFIoImRldmljZS1pZCIpLCAmaW5mby5kZXZpY2VJZCkpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGRldmljZXMtPnB1c2hfYmFjayhpbmZvKTsKKyAgICAgICAgfQorCisgICAgICAgIElPT2JqZWN0
UmVsZWFzZShlbnRyeSk7CisgICAgfQorICAgIElPT2JqZWN0UmVsZWFzZShlbnRyeUl0ZXJhdG9y
KTsKKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFNldEFjdGl2ZUdQVUluZGV4KFN5c3Rl
bUluZm8gKmluZm8pCit7CisgICAgVmVuZG9ySUQgYWN0aXZlVmVuZG9yOworICAgIERldmljZUlE
IGFjdGl2ZURldmljZTsKKworICAgIHVpbnQ2NF90IGdwdUlEID0gR2V0R3B1SURGcm9tRGlzcGxh
eUlEKGtDR0RpcmVjdE1haW5EaXNwbGF5KTsKKworICAgIGlmIChncHVJRCA9PSAwKQorICAgICAg
ICByZXR1cm47CisKKyAgICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIG1hdGNoRGljdGlvbmFyeSA9
IElPUmVnaXN0cnlFbnRyeUlETWF0Y2hpbmcoZ3B1SUQpOworICAgIGlvX3NlcnZpY2VfdCBncHVF
bnRyeSA9IElPU2VydmljZUdldE1hdGNoaW5nU2VydmljZShrSU9NYXN0ZXJQb3J0RGVmYXVsdCwg
bWF0Y2hEaWN0aW9uYXJ5KTsKKworICAgIGlmIChncHVFbnRyeSA9PSBJT19PQkpFQ1RfTlVMTCkK
KyAgICB7CisgICAgICAgIElPT2JqZWN0UmVsZWFzZShncHVFbnRyeSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBpZiAoIShHZXRFbnRyeVByb3BlcnR5KGdwdUVudHJ5LCBDRlNUUigi
dmVuZG9yLWlkIiksICZhY3RpdmVWZW5kb3IpICYmCisgICAgICAgICAgR2V0RW50cnlQcm9wZXJ0
eShncHVFbnRyeSwgQ0ZTVFIoImRldmljZS1pZCIpLCAmYWN0aXZlRGV2aWNlKSkpCisgICAgewor
ICAgICAgICBJT09iamVjdFJlbGVhc2UoZ3B1RW50cnkpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgSU9PYmplY3RSZWxlYXNlKGdwdUVudHJ5KTsKKworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgaW5mby0+Z3B1cy5zaXplKCk7ICsraSkKKyAgICB7CisgICAgICAgIGlmIChpbmZv
LT5ncHVzW2ldLnZlbmRvcklkID09IGFjdGl2ZVZlbmRvciAmJiBpbmZvLT5ncHVzW2ldLmRldmlj
ZUlkID09IGFjdGl2ZURldmljZSkKKyAgICAgICAgeworICAgICAgICAgICAgaW5mby0+YWN0aXZl
R1BVSW5kZXggPSBzdGF0aWNfY2FzdDxpbnQ+KGkpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICB9Cit9CisKK30gIC8vIGFub255bW91cyBuYW1lc3BhY2UKKworYm9vbCBHZXRT
eXN0ZW1JbmZvKFN5c3RlbUluZm8gKmluZm8pCit7CisgICAgeworICAgICAgICBpbnQzMl90IG1h
am9yID0gMDsKKyAgICAgICAgaW50MzJfdCBtaW5vciA9IDA7CisgICAgICAgIFBhcnNlTWFjTWFj
aGluZU1vZGVsKEdldE1hY2hpbmVNb2RlbCgpLCAmaW5mby0+bWFjaGluZU1vZGVsTmFtZSwgJm1h
am9yLCAmbWlub3IpOworICAgICAgICBpbmZvLT5tYWNoaW5lTW9kZWxWZXJzaW9uID0gc3RkOjp0
b19zdHJpbmcobWFqb3IpICsgIi4iICsgc3RkOjp0b19zdHJpbmcobWlub3IpOworICAgIH0KKwor
ICAgIGlmICghR2V0UENJRGV2aWNlcygmKGluZm8tPmdwdXMpKSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoaW5mby0+Z3B1cy5lbXB0eSgpKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIENhbGwgdGhlIGdlbmVyaWMg
R2V0RHVhbEdQVUluZm8gZnVuY3Rpb24gdG8gaW5pdGlhbGl6ZSBpbmZvIGZpZWxkcworICAgIC8v
IHN1Y2ggYXMgaXNPcHRpbXVzLCBpc0FNRFN3aXRjaGFibGUsIGFuZCB0aGUgYWN0aXZlR1BVSW5k
ZXgKKyAgICBHZXREdWFsR1BVSW5mbyhpbmZvKTsKKworICAgIC8vIFRoZW4gb3ZlcnJpZGUgdGhl
IGFjdGl2ZUdQVUluZGV4IGZpZWxkIG9mIGluZm8gdG8gcmVmbGVjdCB0aGUgY3VycmVudAorICAg
IC8vIEdQVSBpbnN0ZWFkIG9mIHRoZSBub24taW50ZWwgR1BVCisgICAgLy8gVE9ETyhkaW5vKTog
VXNlIHN5c2N0bCB0byBkZXRlY3QgT1MgdmVyc2lvbi4KKyAgICAvLyAgICBpZiAoQGF2YWlsYWJs
ZShtYWNPUyAxMC4xMywgKikpCisgICAgU2V0QWN0aXZlR1BVSW5kZXgoaW5mbyk7CisKKyAgICAv
LyBGaWd1cmUgb3V0IHdoZXRoZXIgdGhpcyBpcyBhIGR1YWwtR1BVIHN5c3RlbS4KKyAgICAvLwor
ICAgIC8vIFRPRE8oa2JyKTogdGhpcyBjb2RlIHdhcyBwb3J0ZWQgb3ZlciBmcm9tIENocm9taXVt
LCBhbmQgaXRzIGNvcnJlY3RuZXNzCisgICAgLy8gY291bGQgYmUgaW1wcm92ZWQgLSBuZWVkIHRv
IHVzZSBNYWMtc3BlY2lmaWMgQVBJcyB0byBkZXRlcm1pbmUgd2hldGhlcgorICAgIC8vIG9mZmxp
bmUgcmVuZGVyZXJzIGFyZSBhbGxvd2VkLCBhbmQgd2hldGhlciB0aGVzZSB0d28gR1BVcyBhcmUg
cmVhbGx5IHRoZQorICAgIC8vIGludGVncmF0ZWQvZGlzY3JldGUgR1BVcyBpbiBhIGxhcHRvcC4K
KyAgICBpZiAoaW5mby0+Z3B1cy5zaXplKCkgPT0gMiAmJgorICAgICAgICAoKElzSW50ZWwoaW5m
by0+Z3B1c1swXS52ZW5kb3JJZCkgJiYgIUlzSW50ZWwoaW5mby0+Z3B1c1sxXS52ZW5kb3JJZCkp
IHx8CisgICAgICAgICAoIUlzSW50ZWwoaW5mby0+Z3B1c1swXS52ZW5kb3JJZCkgJiYgSXNJbnRl
bChpbmZvLT5ncHVzWzFdLnZlbmRvcklkKSkpKQorICAgIHsKKyAgICAgICAgaW5mby0+aXNNYWNT
d2l0Y2hhYmxlID0gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAgLy8g
bmFtZXNwYWNlIGFuZ2xlCisKKyNlbmRpZiAgLy8gVEFSR0VUX09TX01BQworI2VuZGlmICAvLyBf
X0FQUExFX18KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9ncHVfaW5m
b191dGlsL1N5c3RlbUluZm9fbWFjLm1tIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2dw
dV9pbmZvX3V0aWwvU3lzdGVtSW5mb19tYWMubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDg3MjhkM2U3NzBiNzFkZTZhMjcxZjQ2ODI4YWRlYTBmYzYxMDg0Y2UuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2dwdV9pbmZvX3V0aWwvU3lzdGVtSW5mb19tYWMubW0KKysrIC9kZXYvbnVsbApAQCAt
MSwyNDUgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAyMDE3IFRoZSBBTkdMRSBQcm9qZWN0IEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotLy8gU3lzdGVtSW5mb19tYWMuY3BwOiBpbXBsZW1l
bnRhdGlvbiBvZiB0aGUgTWFjLXNwZWNpZmljIHBhcnRzIG9mIFN5c3RlbUluZm8uaAotCi0jaWYg
X19oYXNfaW5jbHVkZSg8Q29jb2EvQ29jb2EuaD4pCi0KLSMgICAgaW5jbHVkZSAiZ3B1X2luZm9f
dXRpbC9TeXN0ZW1JbmZvX2ludGVybmFsLmgiCi0KLSMgICAgaW1wb3J0IDxDb2NvYS9Db2NvYS5o
PgotIyAgICBpbXBvcnQgPElPS2l0L0lPS2l0TGliLmg+Ci0KLW5hbWVzcGFjZSBhbmdsZQotewot
Ci1uYW1lc3BhY2UKLXsKLQotdXNpbmcgUGxhdGZvcm1EaXNwbGF5SUQgPSB1aW50MzJfdDsKLQot
Y29uc3RleHByIENHTFJlbmRlcmVyUHJvcGVydHkga0NHTFJQUmVnaXN0cnlJRExvdyAgPSBzdGF0
aWNfY2FzdDxDR0xSZW5kZXJlclByb3BlcnR5PigxNDApOwotY29uc3RleHByIENHTFJlbmRlcmVy
UHJvcGVydHkga0NHTFJQUmVnaXN0cnlJREhpZ2ggPSBzdGF0aWNfY2FzdDxDR0xSZW5kZXJlclBy
b3BlcnR5PigxNDEpOwotCi0vLyBDb2RlIGZyb20gV2ViS2l0IHRvIGdldCB0aGUgYWN0aXZlIEdQ
VSdzIElEIGdpdmVuIGEgZGlzcGxheSBJRC4KLXVpbnQ2NF90IEdldEdwdUlERnJvbURpc3BsYXlJ
RChQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCi17Ci0gICAgR0x1aW50IGRpc3BsYXlNYXNr
ICAgICAgICAgICAgICA9IENHRGlzcGxheUlEVG9PcGVuR0xEaXNwbGF5TWFzayhkaXNwbGF5SUQp
OwotICAgIEdMaW50IG51bVJlbmRlcmVycyAgICAgICAgICAgICAgPSAwOwotICAgIENHTFJlbmRl
cmVySW5mb09iaiByZW5kZXJlckluZm8gPSBudWxscHRyOwotICAgIENHTEVycm9yIGVycm9yID0g
Q0dMUXVlcnlSZW5kZXJlckluZm8oZGlzcGxheU1hc2ssICZyZW5kZXJlckluZm8sICZudW1SZW5k
ZXJlcnMpOwotICAgIGlmICghbnVtUmVuZGVyZXJzIHx8ICFyZW5kZXJlckluZm8gfHwgZXJyb3Ig
IT0ga0NHTE5vRXJyb3IpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgLy8gVGhlIDB0aCByZW5k
ZXJlciBzaG91bGQgbm90IGJlIHRoZSBzb2Z0d2FyZSByZW5kZXJlci4KLSAgICBHTGludCBpc0Fj
Y2VsZXJhdGVkOwotICAgIGVycm9yID0gQ0dMRGVzY3JpYmVSZW5kZXJlcihyZW5kZXJlckluZm8s
IDAsIGtDR0xSUEFjY2VsZXJhdGVkLCAmaXNBY2NlbGVyYXRlZCk7Ci0gICAgaWYgKCFpc0FjY2Vs
ZXJhdGVkIHx8IGVycm9yICE9IGtDR0xOb0Vycm9yKQotICAgIHsKLSAgICAgICAgQ0dMRGVzdHJv
eVJlbmRlcmVySW5mbyhyZW5kZXJlckluZm8pOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0K
LSAgICBHTGludCBncHVJRExvdyAgPSAwOwotICAgIEdMaW50IGdwdUlESGlnaCA9IDA7Ci0KLSAg
ICBlcnJvciA9IENHTERlc2NyaWJlUmVuZGVyZXIocmVuZGVyZXJJbmZvLCAwLCBrQ0dMUlBSZWdp
c3RyeUlETG93LCAmZ3B1SURMb3cpOwotCi0gICAgaWYgKGVycm9yICE9IGtDR0xOb0Vycm9yIHx8
IGdwdUlETG93IDwgMCkKLSAgICB7Ci0gICAgICAgIENHTERlc3Ryb3lSZW5kZXJlckluZm8ocmVu
ZGVyZXJJbmZvKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgZXJyb3IgPSBDR0xE
ZXNjcmliZVJlbmRlcmVyKHJlbmRlcmVySW5mbywgMCwga0NHTFJQUmVnaXN0cnlJREhpZ2gsICZn
cHVJREhpZ2gpOwotICAgIGlmIChlcnJvciAhPSBrQ0dMTm9FcnJvciB8fCBncHVJREhpZ2ggPCAw
KQotICAgIHsKLSAgICAgICAgQ0dMRGVzdHJveVJlbmRlcmVySW5mbyhyZW5kZXJlckluZm8pOwot
ICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBDR0xEZXN0cm95UmVuZGVyZXJJbmZvKHJl
bmRlcmVySW5mbyk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ2NF90PihncHVJREhpZ2gp
IDw8IDMyIHwgZ3B1SURMb3c7Ci19Ci0KLXN0ZDo6c3RyaW5nIEdldE1hY2hpbmVNb2RlbCgpCi17
Ci0gICAgaW9fc2VydmljZV90IHBsYXRmb3JtRXhwZXJ0ID0gSU9TZXJ2aWNlR2V0TWF0Y2hpbmdT
ZXJ2aWNlKAotICAgICAgICBrSU9NYXN0ZXJQb3J0RGVmYXVsdCwgSU9TZXJ2aWNlTWF0Y2hpbmco
IklPUGxhdGZvcm1FeHBlcnREZXZpY2UiKSk7Ci0KLSAgICBpZiAocGxhdGZvcm1FeHBlcnQgPT0g
SU9fT0JKRUNUX05VTEwpCi0gICAgewotICAgICAgICByZXR1cm4gIiI7Ci0gICAgfQotCi0gICAg
Q0ZEYXRhUmVmIG1vZGVsRGF0YSA9IHN0YXRpY19jYXN0PENGRGF0YVJlZj4oCi0gICAgICAgIElP
UmVnaXN0cnlFbnRyeUNyZWF0ZUNGUHJvcGVydHkocGxhdGZvcm1FeHBlcnQsIENGU1RSKCJtb2Rl
bCIpLCBrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwKSk7Ci0gICAgaWYgKG1vZGVsRGF0YSA9PSBudWxs
cHRyKQotICAgIHsKLSAgICAgICAgSU9PYmplY3RSZWxlYXNlKHBsYXRmb3JtRXhwZXJ0KTsKLSAg
ICAgICAgcmV0dXJuICIiOwotICAgIH0KLQotICAgIHN0ZDo6c3RyaW5nIHJlc3VsdCA9IHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhciAqPihDRkRhdGFHZXRCeXRlUHRyKG1vZGVsRGF0YSkpOwot
Ci0gICAgSU9PYmplY3RSZWxlYXNlKHBsYXRmb3JtRXhwZXJ0KTsKLSAgICBDRlJlbGVhc2UobW9k
ZWxEYXRhKTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8vIEV4dHJhY3RzIG9uZSBpbnRl
Z2VyIHByb3BlcnR5IGZyb20gYSByZWdpc3RyeSBlbnRyeS4KLWJvb2wgR2V0RW50cnlQcm9wZXJ0
eShpb19yZWdpc3RyeV9lbnRyeV90IGVudHJ5LCBDRlN0cmluZ1JlZiBuYW1lLCB1aW50MzJfdCAq
dmFsdWUpCi17Ci0gICAgKnZhbHVlID0gMDsKLQotICAgIENGRGF0YVJlZiBkYXRhID0gc3RhdGlj
X2Nhc3Q8Q0ZEYXRhUmVmPigKLSAgICAgICAgSU9SZWdpc3RyeUVudHJ5U2VhcmNoQ0ZQcm9wZXJ0
eShlbnRyeSwga0lPU2VydmljZVBsYW5lLCBuYW1lLCBrQ0ZBbGxvY2F0b3JEZWZhdWx0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtJT1JlZ2lzdHJ5SXRlcmF0ZVJl
Y3Vyc2l2ZWx5IHwga0lPUmVnaXN0cnlJdGVyYXRlUGFyZW50cykpOwotCi0gICAgaWYgKGRhdGEg
PT0gbnVsbHB0cikKLSAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBj
b25zdCB1aW50MzJfdCAqdmFsdWVQdHIgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90
ICo+KENGRGF0YUdldEJ5dGVQdHIoZGF0YSkpOwotCi0gICAgaWYgKHZhbHVlUHRyID09IG51bGxw
dHIpCi0gICAgewotICAgICAgICBDRlJlbGVhc2UoZGF0YSk7Ci0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICB9Ci0KLSAgICAqdmFsdWUgPSAqdmFsdWVQdHI7Ci0gICAgQ0ZSZWxlYXNlKGRhdGEp
OwotICAgIHJldHVybiB0cnVlOwotfQotCi0vLyBHYXRoZXJzIHRoZSB2ZW5kb3IgYW5kIGRldmlj
ZSBJRHMgZm9yIHRoZSBQQ0kgR1BVcwotYm9vbCBHZXRQQ0lEZXZpY2VzKHN0ZDo6dmVjdG9yPEdQ
VURldmljZUluZm8+ICpkZXZpY2VzKQotewotICAgIC8vIG1hdGNoRGljdGlvbmFyeSB3aWxsIGJl
IGNvbnN1bWVkIGJ5IElPU2VydmljZUdldE1hdGNoaW5nU2VydmljZXMsIG5vIG5lZWQgdG8gcmVs
ZWFzZSBpdC4KLSAgICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIG1hdGNoRGljdGlvbmFyeSA9IElP
U2VydmljZU1hdGNoaW5nKCJJT1BDSURldmljZSIpOwotCi0gICAgaW9faXRlcmF0b3JfdCBlbnRy
eUl0ZXJhdG9yOwotICAgIGlmIChJT1NlcnZpY2VHZXRNYXRjaGluZ1NlcnZpY2VzKGtJT01hc3Rl
clBvcnREZWZhdWx0LCBtYXRjaERpY3Rpb25hcnksICZlbnRyeUl0ZXJhdG9yKSAhPQotICAgICAg
ICBrSU9SZXR1cm5TdWNjZXNzKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LQotICAgIGlvX3JlZ2lzdHJ5X2VudHJ5X3QgZW50cnkgPSBJT19PQkpFQ1RfTlVMTDsKLQotICAg
IHdoaWxlICgoZW50cnkgPSBJT0l0ZXJhdG9yTmV4dChlbnRyeUl0ZXJhdG9yKSkgIT0gSU9fT0JK
RUNUX05VTEwpCi0gICAgewotICAgICAgICBjb25zdGV4cHIgdWludDMyX3Qga0NsYXNzQ29kZURp
c3BsYXlWR0EgPSAweDMwMDAwOwotICAgICAgICB1aW50MzJfdCBjbGFzc0NvZGU7Ci0gICAgICAg
IEdQVURldmljZUluZm8gaW5mbzsKLQotICAgICAgICBpZiAoR2V0RW50cnlQcm9wZXJ0eShlbnRy
eSwgQ0ZTVFIoImNsYXNzLWNvZGUiKSwgJmNsYXNzQ29kZSkgJiYKLSAgICAgICAgICAgIGNsYXNz
Q29kZSA9PSBrQ2xhc3NDb2RlRGlzcGxheVZHQSAmJgotICAgICAgICAgICAgR2V0RW50cnlQcm9w
ZXJ0eShlbnRyeSwgQ0ZTVFIoInZlbmRvci1pZCIpLCAmaW5mby52ZW5kb3JJZCkgJiYKLSAgICAg
ICAgICAgIEdldEVudHJ5UHJvcGVydHkoZW50cnksIENGU1RSKCJkZXZpY2UtaWQiKSwgJmluZm8u
ZGV2aWNlSWQpKQotICAgICAgICB7Ci0gICAgICAgICAgICBkZXZpY2VzLT5wdXNoX2JhY2soaW5m
byk7Ci0gICAgICAgIH0KLQotICAgICAgICBJT09iamVjdFJlbGVhc2UoZW50cnkpOwotICAgIH0K
LSAgICBJT09iamVjdFJlbGVhc2UoZW50cnlJdGVyYXRvcik7Ci0KLSAgICByZXR1cm4gdHJ1ZTsK
LX0KLQotdm9pZCBTZXRBY3RpdmVHUFVJbmRleChTeXN0ZW1JbmZvICppbmZvKQotewotICAgIFZl
bmRvcklEIGFjdGl2ZVZlbmRvcjsKLSAgICBEZXZpY2VJRCBhY3RpdmVEZXZpY2U7Ci0KLSAgICB1
aW50NjRfdCBncHVJRCA9IEdldEdwdUlERnJvbURpc3BsYXlJRChrQ0dEaXJlY3RNYWluRGlzcGxh
eSk7Ci0KLSAgICBpZiAoZ3B1SUQgPT0gMCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQ0ZNdXRh
YmxlRGljdGlvbmFyeVJlZiBtYXRjaERpY3Rpb25hcnkgPSBJT1JlZ2lzdHJ5RW50cnlJRE1hdGNo
aW5nKGdwdUlEKTsKLSAgICBpb19zZXJ2aWNlX3QgZ3B1RW50cnkgPSBJT1NlcnZpY2VHZXRNYXRj
aGluZ1NlcnZpY2Uoa0lPTWFzdGVyUG9ydERlZmF1bHQsIG1hdGNoRGljdGlvbmFyeSk7Ci0KLSAg
ICBpZiAoZ3B1RW50cnkgPT0gSU9fT0JKRUNUX05VTEwpCi0gICAgewotICAgICAgICBJT09iamVj
dFJlbGVhc2UoZ3B1RW50cnkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCEo
R2V0RW50cnlQcm9wZXJ0eShncHVFbnRyeSwgQ0ZTVFIoInZlbmRvci1pZCIpLCAmYWN0aXZlVmVu
ZG9yKSAmJgotICAgICAgICAgIEdldEVudHJ5UHJvcGVydHkoZ3B1RW50cnksIENGU1RSKCJkZXZp
Y2UtaWQiKSwgJmFjdGl2ZURldmljZSkpKQotICAgIHsKLSAgICAgICAgSU9PYmplY3RSZWxlYXNl
KGdwdUVudHJ5KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIElPT2JqZWN0UmVsZWFz
ZShncHVFbnRyeSk7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGluZm8tPmdwdXMuc2l6
ZSgpOyArK2kpCi0gICAgewotICAgICAgICBpZiAoaW5mby0+Z3B1c1tpXS52ZW5kb3JJZCA9PSBh
Y3RpdmVWZW5kb3IgJiYgaW5mby0+Z3B1c1tpXS5kZXZpY2VJZCA9PSBhY3RpdmVEZXZpY2UpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGluZm8tPmFjdGl2ZUdQVUluZGV4ID0gc3RhdGljX2Nhc3Q8
aW50PihpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotfQotCi19ICAv
LyBhbm9ueW1vdXMgbmFtZXNwYWNlCi0KLWJvb2wgR2V0U3lzdGVtSW5mbyhTeXN0ZW1JbmZvICpp
bmZvKQotewotICAgIHsKLSAgICAgICAgaW50MzJfdCBtYWpvciA9IDA7Ci0gICAgICAgIGludDMy
X3QgbWlub3IgPSAwOwotICAgICAgICBQYXJzZU1hY01hY2hpbmVNb2RlbChHZXRNYWNoaW5lTW9k
ZWwoKSwgJmluZm8tPm1hY2hpbmVNb2RlbE5hbWUsICZtYWpvciwgJm1pbm9yKTsKLSAgICAgICAg
aW5mby0+bWFjaGluZU1vZGVsVmVyc2lvbiA9IHN0ZDo6dG9fc3RyaW5nKG1ham9yKSArICIuIiAr
IHN0ZDo6dG9fc3RyaW5nKG1pbm9yKTsKLSAgICB9Ci0KLSAgICBpZiAoIUdldFBDSURldmljZXMo
JihpbmZvLT5ncHVzKSkpCi0gICAgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0g
ICAgaWYgKGluZm8tPmdwdXMuZW1wdHkoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9Ci0KLSAgICAvLyBDYWxsIHRoZSBnZW5lcmljIEdldER1YWxHUFVJbmZvIGZ1bmN0aW9u
IHRvIGluaXRpYWxpemUgaW5mbyBmaWVsZHMKLSAgICAvLyBzdWNoIGFzIGlzT3B0aW11cywgaXNB
TURTd2l0Y2hhYmxlLCBhbmQgdGhlIGFjdGl2ZUdQVUluZGV4Ci0gICAgR2V0RHVhbEdQVUluZm8o
aW5mbyk7Ci0KLSAgICAvLyBUaGVuIG92ZXJyaWRlIHRoZSBhY3RpdmVHUFVJbmRleCBmaWVsZCBv
ZiBpbmZvIHRvIHJlZmxlY3QgdGhlIGN1cnJlbnQKLSAgICAvLyBHUFUgaW5zdGVhZCBvZiB0aGUg
bm9uLWludGVsIEdQVQotICAgIGlmIChAYXZhaWxhYmxlKG1hY09TIDEwLjEzLCAqKSkKLSAgICB7
Ci0gICAgICAgIFNldEFjdGl2ZUdQVUluZGV4KGluZm8pOwotICAgIH0KLQotICAgIC8vIEZpZ3Vy
ZSBvdXQgd2hldGhlciB0aGlzIGlzIGEgZHVhbC1HUFUgc3lzdGVtLgotICAgIC8vCi0gICAgLy8g
VE9ETyhrYnIpOiB0aGlzIGNvZGUgd2FzIHBvcnRlZCBvdmVyIGZyb20gQ2hyb21pdW0sIGFuZCBp
dHMgY29ycmVjdG5lc3MKLSAgICAvLyBjb3VsZCBiZSBpbXByb3ZlZCAtIG5lZWQgdG8gdXNlIE1h
Yy1zcGVjaWZpYyBBUElzIHRvIGRldGVybWluZSB3aGV0aGVyCi0gICAgLy8gb2ZmbGluZSByZW5k
ZXJlcnMgYXJlIGFsbG93ZWQsIGFuZCB3aGV0aGVyIHRoZXNlIHR3byBHUFVzIGFyZSByZWFsbHkg
dGhlCi0gICAgLy8gaW50ZWdyYXRlZC9kaXNjcmV0ZSBHUFVzIGluIGEgbGFwdG9wLgotICAgIGlm
IChpbmZvLT5ncHVzLnNpemUoKSA9PSAyICYmCi0gICAgICAgICgoSXNJbnRlbChpbmZvLT5ncHVz
WzBdLnZlbmRvcklkKSAmJiAhSXNJbnRlbChpbmZvLT5ncHVzWzFdLnZlbmRvcklkKSkgfHwKLSAg
ICAgICAgICghSXNJbnRlbChpbmZvLT5ncHVzWzBdLnZlbmRvcklkKSAmJiBJc0ludGVsKGluZm8t
PmdwdXNbMV0udmVuZG9ySWQpKSkpCi0gICAgewotICAgICAgICBpbmZvLT5pc01hY1N3aXRjaGFi
bGUgPSB0cnVlOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi19ICAvLyBuYW1lc3Bh
Y2UgYW5nbGUKLQotI2VuZGlmICAvLyBfX2hhc19pbmNsdWRlKDxDb2NvYS9Db2NvYS5oPikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9n
bC9jZ2wvRGV2aWNlQ0dMLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9nbC9jZ2wvRGV2aWNlQ0dMLmNwcAppbmRleCAxY2RkZDI5ZjUzZTVlOWY3ZmJi
MWVjMjNhM2Q1YmI2NzEyNmIxYjcyLi5lMWI5MjVkMjJkMGRiYzcwOGU3ZDZhZTI1MDQ3YWMzMmFm
OWI5YzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZ2wvY2dsL0RldmljZUNHTC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9EZXZpY2VDR0wuY3BwCkBAIC02LDEyICs2
LDE1IEBACiAKIC8vIERldmljZUNHTC5jcHA6IENHTCBpbXBsZW1lbnRhdGlvbiBvZiBlZ2w6OkRl
dmljZQogCi0jaWYgX19oYXNfaW5jbHVkZSg8Q29jb2EvQ29jb2EuaD4pCisjaWYgZGVmaW5lZChf
X0FQUExFX18pCisjaW5jbHVkZSA8VGFyZ2V0Q29uZGl0aW9uYWxzLmg+CisjaWYgVEFSR0VUX09T
X01BQwogCi0jICAgIGluY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9EZXZpY2VDR0wu
aCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvRGV2aWNlQ0dMLmgiCiAKLSMg
ICAgaW5jbHVkZSA8RUdML2VnbGV4dC5oPgotIyAgICBpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJl
ci9nbC9jZ2wvRGlzcGxheUNHTC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL2Nn
bC9EaXNwbGF5Q0dMLmgiCisKKyNpbmNsdWRlIDxFR0wvZWdsZXh0Lmg+CiAKIG5hbWVzcGFjZSBy
eAogewpAQCAtNTYsNCArNTksNSBAQCB2b2lkIERldmljZUNHTDo6Z2VuZXJhdGVFeHRlbnNpb25z
KGVnbDo6RGV2aWNlRXh0ZW5zaW9ucyAqb3V0RXh0ZW5zaW9ucykgY29uc3QKIAogfSAgLy8gbmFt
ZXNwYWNlIHJ4CiAKLSNlbmRpZiAgLy8gX19oYXNfaW5jbHVkZSg8Q29jb2EvQ29jb2EuaD4pCisj
ZW5kaWYgIC8vIFRBUkdFVF9PU19NQUMKKyNlbmRpZiAgLy8gX19BUFBMRV9fCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL0Rp
c3BsYXlDR0wubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZ2wvY2dsL0Rpc3BsYXlDR0wubW0KaW5kZXggN2JhMGY4YzMwN2E2ODY3ZTk2ODgwMTYyMTVk
ZmIwMGNkMzMxODU0NS4uOTM4OWRkZDUwOTljNDhiNDViYmEzZTk2NDhhOTk4ZDg1NjAxMGYwYyAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2dsL2NnbC9EaXNwbGF5Q0dMLm1tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvRGlzcGxheUNHTC5tbQpAQCAtNCwyNSArNCwyOCBAQAog
Ly8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCiAKLS8vIERpc3BsYXlDR0wubW06IENH
TCBpbXBsZW1lbnRhdGlvbiBvZiBlZ2w6OkRpc3BsYXkKKy8vIERpc3BsYXlDR0wuY3BwOiBDR0wg
aW1wbGVtZW50YXRpb24gb2YgZWdsOjpEaXNwbGF5CiAKLSNpZiBfX2hhc19pbmNsdWRlKDxDb2Nv
YS9Db2NvYS5oPikKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpbmNsdWRlIDxUYXJnZXRDb25k
aXRpb25hbHMuaD4KKyNpZiBUQVJHRVRfT1NfTUFDCiAKLSMgICAgaW5jbHVkZSAibGliQU5HTEUv
cmVuZGVyZXIvZ2wvY2dsL0Rpc3BsYXlDR0wuaCIKKyNpbXBvcnQgImxpYkFOR0xFL3JlbmRlcmVy
L2dsL2NnbC9EaXNwbGF5Q0dMLmgiCiAKLSMgICAgaW1wb3J0IDxDb2NvYS9Db2NvYS5oPgotIyAg
ICBpbmNsdWRlIDxFR0wvZWdsZXh0Lmg+Ci0jICAgIGluY2x1ZGUgPGRsZmNuLmg+CisjaW1wb3J0
ICJjb21tb24vZGVidWcuaCIKKyNpbXBvcnQgImdwdV9pbmZvX3V0aWwvU3lzdGVtSW5mby5oIgor
I2ltcG9ydCAibGliQU5HTEUvRGlzcGxheS5oIgorI2ltcG9ydCAibGliQU5HTEUvcmVuZGVyZXIv
Z2wvY2dsL0NvbnRleHRDR0wuaCIKKyNpbXBvcnQgImxpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9E
ZXZpY2VDR0wuaCIKKyNpbXBvcnQgImxpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9JT1N1cmZhY2VT
dXJmYWNlQ0dMLmgiCisjaW1wb3J0ICJsaWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvUGJ1ZmZlclN1
cmZhY2VDR0wuaCIKKyNpbXBvcnQgImxpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9SZW5kZXJlckNH
TC5oIgorI2ltcG9ydCAibGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL1dpbmRvd1N1cmZhY2VDR0wu
aCIKIAotIyAgICBpbmNsdWRlICJjb21tb24vZGVidWcuaCIKLSMgICAgaW5jbHVkZSAiZ3B1X2lu
Zm9fdXRpbC9TeXN0ZW1JbmZvLmgiCi0jICAgIGluY2x1ZGUgImxpYkFOR0xFL0Rpc3BsYXkuaCIK
LSMgICAgaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL0NvbnRleHRDR0wuaCIKLSMg
ICAgaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL0RldmljZUNHTC5oIgotIyAgICBp
bmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvSU9TdXJmYWNlU3VyZmFjZUNHTC5oIgot
IyAgICBpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvUGJ1ZmZlclN1cmZhY2VDR0wu
aCIKLSMgICAgaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL1JlbmRlcmVyQ0dMLmgi
Ci0jICAgIGluY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9XaW5kb3dTdXJmYWNlQ0dM
LmgiCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPE9wZW5HTC9P
cGVuR0wuaD4KKyNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgorI2ltcG9ydCA8ZGxm
Y24uaD4KIAogbmFtZXNwYWNlCiB7CkBAIC00NDYsNCArNDQ5LDUgQEAgdm9pZCBEaXNwbGF5Q0dM
Ojpwb3B1bGF0ZUZlYXR1cmVMaXN0KGFuZ2xlOjpGZWF0dXJlTGlzdCAqZmVhdHVyZXMpCiB9CiB9
CiAKLSNlbmRpZiAgLy8gX19oYXNfaW5jbHVkZSg8Q29jb2EvQ29jb2EuaD4pCisjZW5kaWYgIC8v
IFRBUkdFVF9PU19NQUMKKyNlbmRpZiAgLy8gX19BUFBMRV9fCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL0lPU3VyZmFjZVN1
cmZhY2VDR0wuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2dsL2NnbC9JT1N1cmZhY2VTdXJmYWNlQ0dMLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44Y2Y5Mjk3YjYw
ZTI3NWQ0YmRiZThkMTk0MzY3YWIzMWJhZDMwYzZhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9JT1N1cmZhY2VT
dXJmYWNlQ0dMLmNwcApAQCAtMCwwICsxLDMzOSBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE1IFRo
ZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gUEJ1ZmZlclN1
cmZhY2VDR0wuY3BwOiBhbiBpbXBsZW1lbnRhdGlvbiBvZiBQQnVmZmVycyBjcmVhdGVkIGZyb20g
SU9TdXJmYWNlcyB1c2luZworLy8gICAgICAgICAgICAgICAgICAgICAgICBFR0xfQU5HTEVfaW9z
dXJmYWNlX2NsaWVudF9idWZmZXIKKworI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2luY2x1ZGUg
PFRhcmdldENvbmRpdGlvbmFscy5oPgorI2lmIFRBUkdFVF9PU19NQUMKKworI2luY2x1ZGUgImxp
YkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9JT1N1cmZhY2VTdXJmYWNlQ0dMLmgiCisKKyNpbmNsdWRl
ICJjb21tb24vZGVidWcuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9BdHRyaWJ1dGVNYXAuaCIKKyNp
bmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9CbGl0R0wuaCIKKyNpbmNsdWRlICJsaWJBTkdM
RS9yZW5kZXJlci9nbC9GcmFtZWJ1ZmZlckdMLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVy
ZXIvZ2wvRnVuY3Rpb25zR0wuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9SZW5k
ZXJlckdMLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvU3RhdGVNYW5hZ2VyR0wu
aCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9UZXh0dXJlR0wuaCIKKyNpbmNsdWRl
ICJsaWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvRGlzcGxheUNHTC5oIgorCisjaW5jbHVkZSA8SU9T
dXJmYWNlL0lPU3VyZmFjZS5oPgorI2luY2x1ZGUgPE9wZW5HTC9PcGVuR0wuaD4KKyNpbmNsdWRl
IDxPcGVuR0wvQ0dMSU9TdXJmYWNlLmg+CisKK25hbWVzcGFjZSByeAoreworCituYW1lc3BhY2UK
K3sKKworc3RydWN0IElPU3VyZmFjZUZvcm1hdEluZm8KK3sKKyAgICBHTGVudW0gaW50ZXJuYWxG
b3JtYXQ7CisgICAgR0xlbnVtIHR5cGU7CisKKyAgICBzaXplX3QgY29tcG9uZW50Qnl0ZXM7CisK
KyAgICBHTGVudW0gbmF0aXZlSW50ZXJuYWxGb3JtYXQ7CisgICAgR0xlbnVtIG5hdGl2ZUZvcm1h
dDsKKyAgICBHTGVudW0gbmF0aXZlVHlwZTsKK307CisKKy8vIGNsYW5nLWZvcm1hdCBvZmYKK3N0
YXRpYyBjb25zdCBJT1N1cmZhY2VGb3JtYXRJbmZvIGtJT1N1cmZhY2VGb3JtYXRzW10gPSB7Cisg
ICAge0dMX1JFRCwgICAgICBHTF9VTlNJR05FRF9CWVRFLCAgMSwgR0xfUkVELCAgR0xfUkVELCAg
R0xfVU5TSUdORURfQllURSAgICAgICAgICAgfSwKKyAgICB7R0xfUjE2VUksICAgIEdMX1VOU0lH
TkVEX1NIT1JULCAyLCBHTF9SRUQsICBHTF9SRUQsICBHTF9VTlNJR05FRF9TSE9SVCAgICAgICAg
ICB9LAorICAgIHtHTF9SRywgICAgICAgR0xfVU5TSUdORURfQllURSwgIDIsIEdMX1JHLCAgIEdM
X1JHLCAgIEdMX1VOU0lHTkVEX0JZVEUgICAgICAgICAgIH0sCisgICAge0dMX1JHQiwgICAgICBH
TF9VTlNJR05FRF9CWVRFLCAgNCwgR0xfQkdSQSwgR0xfUkdCQSwgR0xfVU5TSUdORURfSU5UXzhf
OF84XzhfUkVWfSwKKyAgICB7R0xfQkdSQV9FWFQsIEdMX1VOU0lHTkVEX0JZVEUsICA0LCBHTF9C
R1JBLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9JTlRfOF84XzhfOF9SRVZ9LAorICAgIHtHTF9SR0JB
LCAgICAgR0xfSEFMRl9GTE9BVCwgICAgIDgsIEdMX1JHQkEsIEdMX1JHQkEsIEdMX0hBTEZfRkxP
QVQgICAgICAgICAgICAgIH0sCit9OworLy8gY2xhbmctZm9ybWF0IG9uCisKK2ludCBGaW5kSU9T
dXJmYWNlRm9ybWF0SW5kZXgoR0xlbnVtIGludGVybmFsRm9ybWF0LCBHTGVudW0gdHlwZSkKK3sK
KyAgICBmb3IgKGludCBpID0gMDsgaSA8IHN0YXRpY19jYXN0PGludD4oQXJyYXlTaXplKGtJT1N1
cmZhY2VGb3JtYXRzKSk7ICsraSkKKyAgICB7CisgICAgICAgIGNvbnN0IGF1dG8gJmZvcm1hdElu
Zm8gPSBrSU9TdXJmYWNlRm9ybWF0c1tpXTsKKyAgICAgICAgaWYgKGZvcm1hdEluZm8uaW50ZXJu
YWxGb3JtYXQgPT0gaW50ZXJuYWxGb3JtYXQgJiYgZm9ybWF0SW5mby50eXBlID09IHR5cGUpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBpOworICAgICAgICB9CisgICAgfQorICAgIHJl
dHVybiAtMTsKK30KKworfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorCitJT1N1cmZhY2VTdXJm
YWNlQ0dMOjpJT1N1cmZhY2VTdXJmYWNlQ0dMKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0dMQ29udGV4dE9i
aiBjZ2xDb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBF
R0xDbGllbnRCdWZmZXIgYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykKKyAgICA6IFN1cmZhY2VH
TChzdGF0ZSksCisgICAgICBtQ0dMQ29udGV4dChjZ2xDb250ZXh0KSwKKyAgICAgIG1JT1N1cmZh
Y2UobnVsbHB0ciksCisgICAgICBtV2lkdGgoMCksCisgICAgICBtSGVpZ2h0KDApLAorICAgICAg
bVBsYW5lKDApLAorICAgICAgbUZvcm1hdEluZGV4KC0xKSwKKyAgICAgIG1BbHBoYUluaXRpYWxp
emVkKGZhbHNlKQoreworICAgIC8vIEtlZXAgcmVmZXJlbmNlIHRvIHRoZSBJT1N1cmZhY2Ugc28g
aXQgZG9lc24ndCBnZXQgZGVsZXRlZCB3aGlsZSB0aGUgcGJ1ZmZlciBleGlzdHMuCisgICAgbUlP
U3VyZmFjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8SU9TdXJmYWNlUmVmPihidWZmZXIpOworICAgIENG
UmV0YWluKG1JT1N1cmZhY2UpOworCisgICAgLy8gRXh0cmFjdCBhdHRyaWJzIHVzZWZ1bCBmb3Ig
dGhlIGNhbGwgdG8gQ0dMVGV4SW1hZ2VJT1N1cmZhY2UyRAorICAgIG1XaWR0aCAgPSBzdGF0aWNf
Y2FzdDxpbnQ+KGF0dHJpYnMuZ2V0KEVHTF9XSURUSCkpOworICAgIG1IZWlnaHQgPSBzdGF0aWNf
Y2FzdDxpbnQ+KGF0dHJpYnMuZ2V0KEVHTF9IRUlHSFQpKTsKKyAgICBtUGxhbmUgID0gc3RhdGlj
X2Nhc3Q8aW50PihhdHRyaWJzLmdldChFR0xfSU9TVVJGQUNFX1BMQU5FX0FOR0xFKSk7CisKKyAg
ICBFR0xBdHRyaWIgaW50ZXJuYWxGb3JtYXQgPSBhdHRyaWJzLmdldChFR0xfVEVYVFVSRV9JTlRF
Uk5BTF9GT1JNQVRfQU5HTEUpOworICAgIEVHTEF0dHJpYiB0eXBlICAgICAgICAgICA9IGF0dHJp
YnMuZ2V0KEVHTF9URVhUVVJFX1RZUEVfQU5HTEUpOworICAgIG1Gb3JtYXRJbmRleCA9CisgICAg
ICAgIEZpbmRJT1N1cmZhY2VGb3JtYXRJbmRleChzdGF0aWNfY2FzdDxHTGVudW0+KGludGVybmFs
Rm9ybWF0KSwgc3RhdGljX2Nhc3Q8R0xlbnVtPih0eXBlKSk7CisgICAgQVNTRVJUKG1Gb3JtYXRJ
bmRleCA+PSAwKTsKKworICAgIG1BbHBoYUluaXRpYWxpemVkID0gIWhhc0VtdWxhdGVkQWxwaGFD
aGFubmVsKCk7Cit9CisKK0lPU3VyZmFjZVN1cmZhY2VDR0w6On5JT1N1cmZhY2VTdXJmYWNlQ0dM
KCkKK3sKKyAgICBpZiAobUlPU3VyZmFjZSAhPSBudWxscHRyKQorICAgIHsKKyAgICAgICAgQ0ZS
ZWxlYXNlKG1JT1N1cmZhY2UpOworICAgICAgICBtSU9TdXJmYWNlID0gbnVsbHB0cjsKKyAgICB9
Cit9CisKK2VnbDo6RXJyb3IgSU9TdXJmYWNlU3VyZmFjZUNHTDo6aW5pdGlhbGl6ZShjb25zdCBl
Z2w6OkRpc3BsYXkgKmRpc3BsYXkpCit7CisgICAgcmV0dXJuIGVnbDo6Tm9FcnJvcigpOworfQor
CitlZ2w6OkVycm9yIElPU3VyZmFjZVN1cmZhY2VDR0w6Om1ha2VDdXJyZW50KGNvbnN0IGdsOjpD
b250ZXh0ICpjb250ZXh0KQoreworICAgIHJldHVybiBlZ2w6Ok5vRXJyb3IoKTsKK30KKworZWds
OjpFcnJvciBJT1N1cmZhY2VTdXJmYWNlQ0dMOjp1bk1ha2VDdXJyZW50KGNvbnN0IGdsOjpDb250
ZXh0ICpjb250ZXh0KQoreworICAgIEdldEZ1bmN0aW9uc0dMKGNvbnRleHQpLT5mbHVzaCgpOwor
ICAgIHJldHVybiBlZ2w6Ok5vRXJyb3IoKTsKK30KKworZWdsOjpFcnJvciBJT1N1cmZhY2VTdXJm
YWNlQ0dMOjpzd2FwKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0KQoreworICAgIHJldHVybiBl
Z2w6Ok5vRXJyb3IoKTsKK30KKworZWdsOjpFcnJvciBJT1N1cmZhY2VTdXJmYWNlQ0dMOjpwb3N0
U3ViQnVmZmVyKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCB4LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCB5LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCB3aWR0aCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgaGVpZ2h0KQoreworICAgIFVO
UkVBQ0hBQkxFKCk7CisgICAgcmV0dXJuIGVnbDo6Tm9FcnJvcigpOworfQorCitlZ2w6OkVycm9y
IElPU3VyZmFjZVN1cmZhY2VDR0w6OnF1ZXJ5U3VyZmFjZVBvaW50ZXJBTkdMRShFR0xpbnQgYXR0
cmlidXRlLCB2b2lkICoqdmFsdWUpCit7CisgICAgVU5SRUFDSEFCTEUoKTsKKyAgICByZXR1cm4g
ZWdsOjpOb0Vycm9yKCk7Cit9CisKK2VnbDo6RXJyb3IgSU9TdXJmYWNlU3VyZmFjZUNHTDo6Ymlu
ZFRleEltYWdlKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OlRleHR1cmUgKnRleHR1cmUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgYnVmZmVyKQorewor
ICAgIFN0YXRlTWFuYWdlckdMICpzdGF0ZU1hbmFnZXIgPSBHZXRTdGF0ZU1hbmFnZXJHTChjb250
ZXh0KTsKKworICAgIGNvbnN0IFRleHR1cmVHTCAqdGV4dHVyZUdMID0gR2V0SW1wbEFzPFRleHR1
cmVHTD4odGV4dHVyZSk7CisgICAgR0x1aW50IHRleHR1cmVJRCAgICAgICAgICAgPSB0ZXh0dXJl
R0wtPmdldFRleHR1cmVJRCgpOworICAgIHN0YXRlTWFuYWdlci0+YmluZFRleHR1cmUoZ2w6OlRl
eHR1cmVUeXBlOjpSZWN0YW5nbGUsIHRleHR1cmVJRCk7CisKKyAgICBjb25zdCBhdXRvICZmb3Jt
YXQgPSBrSU9TdXJmYWNlRm9ybWF0c1ttRm9ybWF0SW5kZXhdOworICAgIENHTEVycm9yIGVycm9y
ID0gQ0dMVGV4SW1hZ2VJT1N1cmZhY2UyRChtQ0dMQ29udGV4dCwgR0xfVEVYVFVSRV9SRUNUQU5H
TEUsIGZvcm1hdC5uYXRpdmVGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1XaWR0aCwgbUhlaWdodCwgZm9ybWF0Lm5hdGl2ZUludGVybmFsRm9ybWF0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQubmF0
aXZlVHlwZSwgbUlPU3VyZmFjZSwgbVBsYW5lKTsKKworICAgIGlmIChlcnJvciAhPSBrQ0dMTm9F
cnJvcikKKyAgICB7CisgICAgICAgIHJldHVybiBlZ2w6OkVnbENvbnRleHRMb3N0KCkgPDwgIkNH
TFRleEltYWdlSU9TdXJmYWNlMkQgZmFpbGVkOiAiIDw8IENHTEVycm9yU3RyaW5nKGVycm9yKTsK
KyAgICB9CisKKyAgICBpZiAoSXNFcnJvcihpbml0aWFsaXplQWxwaGFDaGFubmVsKGNvbnRleHQs
IHRleHR1cmVJRCkpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6RWdsQ29udGV4dExvc3Qo
KSA8PCAiRmFpbGVkIHRvIGluaXRpYWxpemUgSU9TdXJmYWNlIGFscGhhIGNoYW5uZWwuIjsKKyAg
ICB9CisKKyAgICByZXR1cm4gZWdsOjpOb0Vycm9yKCk7Cit9CisKK2VnbDo6RXJyb3IgSU9TdXJm
YWNlU3VyZmFjZUNHTDo6cmVsZWFzZVRleEltYWdlKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0
LCBFR0xpbnQgYnVmZmVyKQoreworICAgIGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMgPSBH
ZXRGdW5jdGlvbnNHTChjb250ZXh0KTsKKyAgICBmdW5jdGlvbnMtPmZsdXNoKCk7CisgICAgcmV0
dXJuIGVnbDo6Tm9FcnJvcigpOworfQorCit2b2lkIElPU3VyZmFjZVN1cmZhY2VDR0w6OnNldFN3
YXBJbnRlcnZhbChFR0xpbnQgaW50ZXJ2YWwpCit7CisgICAgVU5SRUFDSEFCTEUoKTsKK30KKwor
RUdMaW50IElPU3VyZmFjZVN1cmZhY2VDR0w6OmdldFdpZHRoKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbVdpZHRoOworfQorCitFR0xpbnQgSU9TdXJmYWNlU3VyZmFjZUNHTDo6Z2V0SGVpZ2h0KCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbUhlaWdodDsKK30KKworRUdMaW50IElPU3VyZmFjZVN1cmZh
Y2VDR0w6OmlzUG9zdFN1YkJ1ZmZlclN1cHBvcnRlZCgpIGNvbnN0Cit7CisgICAgVU5SRUFDSEFC
TEUoKTsKKyAgICByZXR1cm4gRUdMX0ZBTFNFOworfQorCitFR0xpbnQgSU9TdXJmYWNlU3VyZmFj
ZUNHTDo6Z2V0U3dhcEJlaGF2aW9yKCkgY29uc3QKK3sKKyAgICAvLyBOL0EgYmVjYXVzZSB5b3Ug
Y2FuJ3QgTWFrZUN1cnJlbnQgYW4gSU9TdXJmYWNlLCByZXR1cm4gYW55IHZhbGlkIHZhbHVlLgor
ICAgIHJldHVybiBFR0xfQlVGRkVSX1BSRVNFUlZFRDsKK30KKworLy8gc3RhdGljCitib29sIElP
U3VyZmFjZVN1cmZhY2VDR0w6OnZhbGlkYXRlQXR0cmlidXRlcyhFR0xDbGllbnRCdWZmZXIgYnVm
ZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
ZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCit7CisgICAgSU9TdXJmYWNlUmVmIGlvU3VyZmFj
ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8SU9TdXJmYWNlUmVmPihidWZmZXIpOworCisgICAgLy8gVGhl
IHBsYW5lIG11c3QgZXhpc3QgZm9yIHRoaXMgSU9TdXJmYWNlLiBJT1N1cmZhY2VHZXRQbGFuZUNv
dW50IGNhbiByZXR1cm4gMCBmb3Igbm9uLXBsYW5hcgorICAgIC8vIGlvU3VyZmFjZXMgYnV0IHdl
IHdpbGwgdHJlYXQgbm9uLXBsYW5hciBsaWtlIGl0IGlzIGEgc2luZ2xlIHBsYW5lLgorICAgIHNp
emVfdCBzdXJmYWNlUGxhbmVDb3VudCA9IHN0ZDo6bWF4KHNpemVfdCgxKSwgSU9TdXJmYWNlR2V0
UGxhbmVDb3VudChpb1N1cmZhY2UpKTsKKyAgICBFR0xBdHRyaWIgcGxhbmUgICAgICAgICAgPSBh
dHRyaWJzLmdldChFR0xfSU9TVVJGQUNFX1BMQU5FX0FOR0xFKTsKKyAgICBpZiAocGxhbmUgPCAw
IHx8IHN0YXRpY19jYXN0PHNpemVfdD4ocGxhbmUpID49IHN1cmZhY2VQbGFuZUNvdW50KQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIFRoZSB3aWR0aCBoZWln
aHQgc3BlY2lmaWVkIG11c3QgYmUgYXQgbGVhc3QgKDEsIDEpIGFuZCBhdCBtb3N0IHRoZSBwbGFu
ZSBzaXplCisgICAgRUdMQXR0cmliIHdpZHRoICA9IGF0dHJpYnMuZ2V0KEVHTF9XSURUSCk7Cisg
ICAgRUdMQXR0cmliIGhlaWdodCA9IGF0dHJpYnMuZ2V0KEVHTF9IRUlHSFQpOworICAgIGlmICh3
aWR0aCA8PSAwIHx8IHN0YXRpY19jYXN0PHNpemVfdD4od2lkdGgpID4gSU9TdXJmYWNlR2V0V2lk
dGhPZlBsYW5lKGlvU3VyZmFjZSwgcGxhbmUpIHx8CisgICAgICAgIGhlaWdodCA8PSAwIHx8IHN0
YXRpY19jYXN0PHNpemVfdD4oaGVpZ2h0KSA+IElPU3VyZmFjZUdldEhlaWdodE9mUGxhbmUoaW9T
dXJmYWNlLCBwbGFuZSkpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgLy8gRmluZCB0aGlzIElPU3VyZmFjZSBmb3JtYXQKKyAgICBFR0xBdHRyaWIgaW50ZXJuYWxG
b3JtYXQgPSBhdHRyaWJzLmdldChFR0xfVEVYVFVSRV9JTlRFUk5BTF9GT1JNQVRfQU5HTEUpOwor
ICAgIEVHTEF0dHJpYiB0eXBlICAgICAgICAgICA9IGF0dHJpYnMuZ2V0KEVHTF9URVhUVVJFX1RZ
UEVfQU5HTEUpOworCisgICAgaW50IGZvcm1hdEluZGV4ID0KKyAgICAgICAgRmluZElPU3VyZmFj
ZUZvcm1hdEluZGV4KHN0YXRpY19jYXN0PEdMZW51bT4oaW50ZXJuYWxGb3JtYXQpLCBzdGF0aWNf
Y2FzdDxHTGVudW0+KHR5cGUpKTsKKworICAgIGlmIChmb3JtYXRJbmRleCA8IDApCisgICAgewor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gQ2hlY2sgdGhhdCB0aGUgZm9y
bWF0IG1hdGNoZXMgdGhpcyBJT1N1cmZhY2UgcGxhbmUKKyAgICBpZiAoSU9TdXJmYWNlR2V0Qnl0
ZXNQZXJFbGVtZW50T2ZQbGFuZShpb1N1cmZhY2UsIHBsYW5lKSAhPQorICAgICAgICBrSU9TdXJm
YWNlRm9ybWF0c1tmb3JtYXRJbmRleF0uY29tcG9uZW50Qnl0ZXMpCisgICAgeworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKKy8vIFdyYXBzIGEg
RnJhbWVidWZmZXJHTCB0byBob29rIHRoZSBkZXN0cm95IGZ1bmN0aW9uIHRvIGRlbGV0ZSB0aGUg
dGV4dHVyZSBhc3NvY2lhdGVkIHdpdGggdGhlCisvLyBmcmFtZWJ1ZmZlci4KK2NsYXNzIElPU3Vy
ZmFjZUZyYW1lYnVmZmVyIDogcHVibGljIEZyYW1lYnVmZmVyR0wKK3sKKyAgcHVibGljOgorICAg
IElPU3VyZmFjZUZyYW1lYnVmZmVyKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlclN0YXRlICZkYXRhLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpZCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgdGV4dHVyZUlkLAorICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNE
ZWZhdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZW11bGF0ZWRBbHBoYSkKKyAg
ICAgICAgOiBGcmFtZWJ1ZmZlckdMKGRhdGEsIGlkLCBpc0RlZmF1bHQsIGVtdWxhdGVkQWxwaGEp
LCBtVGV4dHVyZUlkKHRleHR1cmVJZCkKKyAgICB7fQorICAgIHZvaWQgZGVzdHJveShjb25zdCBn
bDo6Q29udGV4dCAqY29udGV4dCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIEdldEZ1bmN0aW9u
c0dMKGNvbnRleHQpLT5kZWxldGVUZXh0dXJlcygxLCAmbVRleHR1cmVJZCk7CisgICAgICAgIEZy
YW1lYnVmZmVyR0w6OmRlc3Ryb3koY29udGV4dCk7CisgICAgfQorCisgIHByaXZhdGU6CisgICAg
R0x1aW50IG1UZXh0dXJlSWQ7Cit9OworCitGcmFtZWJ1ZmZlckltcGwgKklPU3VyZmFjZVN1cmZh
Y2VDR0w6OmNyZWF0ZURlZmF1bHRGcmFtZWJ1ZmZlcihjb25zdCBnbDo6Q29udGV4dCAqY29udGV4
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlclN0YXRlICZzdGF0ZSkKK3sKKyAgICBjb25z
dCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25zID0gR2V0RnVuY3Rpb25zR0woY29udGV4dCk7CisgICAg
U3RhdGVNYW5hZ2VyR0wgKnN0YXRlTWFuYWdlciA9IEdldFN0YXRlTWFuYWdlckdMKGNvbnRleHQp
OworCisgICAgR0x1aW50IHRleHR1cmUgPSAwOworICAgIGZ1bmN0aW9ucy0+Z2VuVGV4dHVyZXMo
MSwgJnRleHR1cmUpOworICAgIGNvbnN0IGF1dG8gJmZvcm1hdCA9IGtJT1N1cmZhY2VGb3JtYXRz
W21Gb3JtYXRJbmRleF07CisgICAgc3RhdGVNYW5hZ2VyLT5iaW5kVGV4dHVyZShnbDo6VGV4dHVy
ZVR5cGU6OlJlY3RhbmdsZSwgdGV4dHVyZSk7CisgICAgQ0dMRXJyb3IgZXJyb3IgPSBDR0xUZXhJ
bWFnZUlPU3VyZmFjZTJEKG1DR0xDb250ZXh0LCBHTF9URVhUVVJFX1JFQ1RBTkdMRSwgZm9ybWF0
Lm5hdGl2ZUZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbVdpZHRoLCBtSGVpZ2h0LCBmb3JtYXQubmF0aXZlSW50ZXJuYWxGb3JtYXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdC5uYXRpdmVUeXBlLCBt
SU9TdXJmYWNlLCBtUGxhbmUpOworICAgIGlmIChlcnJvciAhPSBrQ0dMTm9FcnJvcikKKyAgICB7
CisgICAgICAgIEVSUigpIDw8ICJDR0xUZXhJbWFnZUlPU3VyZmFjZTJEIGZhaWxlZDogIiA8PCBD
R0xFcnJvclN0cmluZyhlcnJvcik7CisgICAgfQorICAgIEFTU0VSVChlcnJvciA9PSBrQ0dMTm9F
cnJvcik7CisKKyAgICBpZiAoSXNFcnJvcihpbml0aWFsaXplQWxwaGFDaGFubmVsKGNvbnRleHQs
IHRleHR1cmUpKSkKKyAgICB7CisgICAgICAgIEVSUigpIDw8ICJGYWlsZWQgdG8gaW5pdGlhbGl6
ZSBJT1N1cmZhY2UgYWxwaGEgY2hhbm5lbC4iOworICAgIH0KKworICAgIEdMdWludCBmcmFtZWJ1
ZmZlciA9IDA7CisgICAgZnVuY3Rpb25zLT5nZW5GcmFtZWJ1ZmZlcnMoMSwgJmZyYW1lYnVmZmVy
KTsKKyAgICBzdGF0ZU1hbmFnZXItPmJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgZnJh
bWVidWZmZXIpOworICAgIHN0YXRlTWFuYWdlci0+YmluZFRleHR1cmUoZ2w6OlRleHR1cmVUeXBl
OjpSZWN0YW5nbGUsIHRleHR1cmUpOworICAgIGZ1bmN0aW9ucy0+ZnJhbWVidWZmZXJUZXh0dXJl
MkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFX1JFQ1RB
TkdMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHR1cmUsIDApOwor
CisgICAgcmV0dXJuIG5ldyBJT1N1cmZhY2VGcmFtZWJ1ZmZlcihzdGF0ZSwgZnJhbWVidWZmZXIs
IHRleHR1cmUsIHRydWUsIGhhc0VtdWxhdGVkQWxwaGFDaGFubmVsKCkpOworfQorCithbmdsZTo6
UmVzdWx0IElPU3VyZmFjZVN1cmZhY2VDR0w6OmluaXRpYWxpemVBbHBoYUNoYW5uZWwoY29uc3Qg
Z2w6OkNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHRleHR1cmUpCit7CisgICAgaWYgKG1BbHBo
YUluaXRpYWxpemVkKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRp
bnVlOworICAgIH0KKworICAgIEJsaXRHTCAqYmxpdHRlciA9IEdldEJsaXRHTChjb250ZXh0KTsK
KyAgICBBTkdMRV9UUlkoYmxpdHRlci0+Y2xlYXJSZW5kZXJhYmxlVGV4dHVyZUFscGhhVG9PbmUo
Y29udGV4dCwgdGV4dHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2w6OlRleHR1cmVUYXJnZXQ6OlJlY3RhbmdsZSwgMCkpOworICAg
IG1BbHBoYUluaXRpYWxpemVkID0gdHJ1ZTsKKyAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29u
dGludWU7Cit9CisKK2Jvb2wgSU9TdXJmYWNlU3VyZmFjZUNHTDo6aGFzRW11bGF0ZWRBbHBoYUNo
YW5uZWwoKSBjb25zdAoreworICAgIGNvbnN0IGF1dG8gJmZvcm1hdCA9IGtJT1N1cmZhY2VGb3Jt
YXRzW21Gb3JtYXRJbmRleF07CisgICAgcmV0dXJuIGZvcm1hdC5pbnRlcm5hbEZvcm1hdCA9PSBH
TF9SR0I7Cit9CisKK30gIC8vIG5hbWVzcGFjZSByeAorCisjZW5kaWYgIC8vIFRBUkdFVF9PU19N
QUMKKyNlbmRpZiAgLy8gX19BUFBMRV9fCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL0lPU3VyZmFjZVN1cmZhY2VDR0wubW0g
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL0lP
U3VyZmFjZVN1cmZhY2VDR0wubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzYTBh
M2Y1YjFiOGJhOWYyMmE3Njg1Mzk4MTRiN2IzMTM5YzhiYWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9JT1N1cmZhY2VTdXJmYWNlQ0dMLm1tCisrKyAvZGV2L251
bGwKQEAgLTEsMzM2ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJv
amVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8g
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLS8vIFBCdWZmZXJTdXJmYWNlQ0dMLmNw
cDogYW4gaW1wbGVtZW50YXRpb24gb2YgUEJ1ZmZlcnMgY3JlYXRlZCBmcm9tIElPU3VyZmFjZXMg
dXNpbmcKLS8vICAgICAgICAgICAgICAgICAgICAgICAgRUdMX0FOR0xFX2lvc3VyZmFjZV9jbGll
bnRfYnVmZmVyCi0KLSNpZiBfX2hhc19pbmNsdWRlKDxDb2NvYS9Db2NvYS5oPikKLQotIyAgICBp
bmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvSU9TdXJmYWNlU3VyZmFjZUNHTC5oIgot
Ci0jICAgIGltcG9ydCA8Q29jb2EvQ29jb2EuaD4KLSMgICAgaW5jbHVkZSA8SU9TdXJmYWNlL0lP
U3VyZmFjZS5oPgotIyAgICBpbmNsdWRlIDxPcGVuR0wvQ0dMSU9TdXJmYWNlLmg+Ci0KLSMgICAg
aW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCi0jICAgIGluY2x1ZGUgImxpYkFOR0xFL0F0dHJpYnV0
ZU1hcC5oIgotIyAgICBpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9CbGl0R0wuaCIKLSMg
ICAgaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvRnJhbWVidWZmZXJHTC5oIgotIyAgICBp
bmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9GdW5jdGlvbnNHTC5oIgotIyAgICBpbmNsdWRl
ICJsaWJBTkdMRS9yZW5kZXJlci9nbC9SZW5kZXJlckdMLmgiCi0jICAgIGluY2x1ZGUgImxpYkFO
R0xFL3JlbmRlcmVyL2dsL1N0YXRlTWFuYWdlckdMLmgiCi0jICAgIGluY2x1ZGUgImxpYkFOR0xF
L3JlbmRlcmVyL2dsL1RleHR1cmVHTC5oIgotIyAgICBpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJl
ci9nbC9jZ2wvRGlzcGxheUNHTC5oIgotCi1uYW1lc3BhY2UgcngKLXsKLQotbmFtZXNwYWNlCi17
Ci0KLXN0cnVjdCBJT1N1cmZhY2VGb3JtYXRJbmZvCi17Ci0gICAgR0xlbnVtIGludGVybmFsRm9y
bWF0OwotICAgIEdMZW51bSB0eXBlOwotCi0gICAgc2l6ZV90IGNvbXBvbmVudEJ5dGVzOwotCi0g
ICAgR0xlbnVtIG5hdGl2ZUludGVybmFsRm9ybWF0OwotICAgIEdMZW51bSBuYXRpdmVGb3JtYXQ7
Ci0gICAgR0xlbnVtIG5hdGl2ZVR5cGU7Ci19OwotCi0vLyBjbGFuZy1mb3JtYXQgb2ZmCi1zdGF0
aWMgY29uc3QgSU9TdXJmYWNlRm9ybWF0SW5mbyBrSU9TdXJmYWNlRm9ybWF0c1tdID0gewotICAg
IHtHTF9SRUQsICAgICAgR0xfVU5TSUdORURfQllURSwgIDEsIEdMX1JFRCwgIEdMX1JFRCwgIEdM
X1VOU0lHTkVEX0JZVEUgICAgICAgICAgIH0sCi0gICAge0dMX1IxNlVJLCAgICBHTF9VTlNJR05F
RF9TSE9SVCwgMiwgR0xfUkVELCAgR0xfUkVELCAgR0xfVU5TSUdORURfU0hPUlQgICAgICAgICAg
fSwKLSAgICB7R0xfUkcsICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsICAyLCBHTF9SRywgICBHTF9S
RywgICBHTF9VTlNJR05FRF9CWVRFICAgICAgICAgICB9LAotICAgIHtHTF9SR0IsICAgICAgR0xf
VU5TSUdORURfQllURSwgIDQsIEdMX0JHUkEsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0lOVF84Xzhf
OF84X1JFVn0sCi0gICAge0dMX0JHUkFfRVhULCBHTF9VTlNJR05FRF9CWVRFLCAgNCwgR0xfQkdS
QSwgR0xfUkdCQSwgR0xfVU5TSUdORURfSU5UXzhfOF84XzhfUkVWfSwKLSAgICB7R0xfUkdCQSwg
ICAgIEdMX0hBTEZfRkxPQVQsICAgICA4LCBHTF9SR0JBLCBHTF9SR0JBLCBHTF9IQUxGX0ZMT0FU
ICAgICAgICAgICAgICB9LAotfTsKLS8vIGNsYW5nLWZvcm1hdCBvbgotCi1pbnQgRmluZElPU3Vy
ZmFjZUZvcm1hdEluZGV4KEdMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0xlbnVtIHR5cGUpCi17Ci0g
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzdGF0aWNfY2FzdDxpbnQ+KEFycmF5U2l6ZShrSU9TdXJm
YWNlRm9ybWF0cykpOyArK2kpCi0gICAgewotICAgICAgICBjb25zdCBhdXRvICZmb3JtYXRJbmZv
ID0ga0lPU3VyZmFjZUZvcm1hdHNbaV07Ci0gICAgICAgIGlmIChmb3JtYXRJbmZvLmludGVybmFs
Rm9ybWF0ID09IGludGVybmFsRm9ybWF0ICYmIGZvcm1hdEluZm8udHlwZSA9PSB0eXBlKQotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1
cm4gLTE7Ci19Ci0KLX0gIC8vIGFub255bW91cyBuYW1lc3BhY2UKLQotSU9TdXJmYWNlU3VyZmFj
ZUNHTDo6SU9TdXJmYWNlU3VyZmFjZUNHTChjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENHTENvbnRleHRPYmog
Y2dsQ29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdM
Q2xpZW50QnVmZmVyIGJ1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCi0gICAgOiBTdXJmYWNlR0wo
c3RhdGUpLAotICAgICAgbUNHTENvbnRleHQoY2dsQ29udGV4dCksCi0gICAgICBtSU9TdXJmYWNl
KG51bGxwdHIpLAotICAgICAgbVdpZHRoKDApLAotICAgICAgbUhlaWdodCgwKSwKLSAgICAgIG1Q
bGFuZSgwKSwKLSAgICAgIG1Gb3JtYXRJbmRleCgtMSksCi0gICAgICBtQWxwaGFJbml0aWFsaXpl
ZChmYWxzZSkKLXsKLSAgICAvLyBLZWVwIHJlZmVyZW5jZSB0byB0aGUgSU9TdXJmYWNlIHNvIGl0
IGRvZXNuJ3QgZ2V0IGRlbGV0ZWQgd2hpbGUgdGhlIHBidWZmZXIgZXhpc3RzLgotICAgIG1JT1N1
cmZhY2UgPSByZWludGVycHJldF9jYXN0PElPU3VyZmFjZVJlZj4oYnVmZmVyKTsKLSAgICBDRlJl
dGFpbihtSU9TdXJmYWNlKTsKLQotICAgIC8vIEV4dHJhY3QgYXR0cmlicyB1c2VmdWwgZm9yIHRo
ZSBjYWxsIHRvIENHTFRleEltYWdlSU9TdXJmYWNlMkQKLSAgICBtV2lkdGggID0gc3RhdGljX2Nh
c3Q8aW50PihhdHRyaWJzLmdldChFR0xfV0lEVEgpKTsKLSAgICBtSGVpZ2h0ID0gc3RhdGljX2Nh
c3Q8aW50PihhdHRyaWJzLmdldChFR0xfSEVJR0hUKSk7Ci0gICAgbVBsYW5lICA9IHN0YXRpY19j
YXN0PGludD4oYXR0cmlicy5nZXQoRUdMX0lPU1VSRkFDRV9QTEFORV9BTkdMRSkpOwotCi0gICAg
RUdMQXR0cmliIGludGVybmFsRm9ybWF0ID0gYXR0cmlicy5nZXQoRUdMX1RFWFRVUkVfSU5URVJO
QUxfRk9STUFUX0FOR0xFKTsKLSAgICBFR0xBdHRyaWIgdHlwZSAgICAgICAgICAgPSBhdHRyaWJz
LmdldChFR0xfVEVYVFVSRV9UWVBFX0FOR0xFKTsKLSAgICBtRm9ybWF0SW5kZXggPQotICAgICAg
ICBGaW5kSU9TdXJmYWNlRm9ybWF0SW5kZXgoc3RhdGljX2Nhc3Q8R0xlbnVtPihpbnRlcm5hbEZv
cm1hdCksIHN0YXRpY19jYXN0PEdMZW51bT4odHlwZSkpOwotICAgIEFTU0VSVChtRm9ybWF0SW5k
ZXggPj0gMCk7Ci0KLSAgICBtQWxwaGFJbml0aWFsaXplZCA9ICFoYXNFbXVsYXRlZEFscGhhQ2hh
bm5lbCgpOwotfQotCi1JT1N1cmZhY2VTdXJmYWNlQ0dMOjp+SU9TdXJmYWNlU3VyZmFjZUNHTCgp
Ci17Ci0gICAgaWYgKG1JT1N1cmZhY2UgIT0gbnVsbHB0cikKLSAgICB7Ci0gICAgICAgIENGUmVs
ZWFzZShtSU9TdXJmYWNlKTsKLSAgICAgICAgbUlPU3VyZmFjZSA9IG51bGxwdHI7Ci0gICAgfQot
fQotCi1lZ2w6OkVycm9yIElPU3VyZmFjZVN1cmZhY2VDR0w6OmluaXRpYWxpemUoY29uc3QgZWds
OjpEaXNwbGF5ICpkaXNwbGF5KQotewotICAgIHJldHVybiBlZ2w6Ok5vRXJyb3IoKTsKLX0KLQot
ZWdsOjpFcnJvciBJT1N1cmZhY2VTdXJmYWNlQ0dMOjptYWtlQ3VycmVudChjb25zdCBnbDo6Q29u
dGV4dCAqY29udGV4dCkKLXsKLSAgICByZXR1cm4gZWdsOjpOb0Vycm9yKCk7Ci19Ci0KLWVnbDo6
RXJyb3IgSU9TdXJmYWNlU3VyZmFjZUNHTDo6dW5NYWtlQ3VycmVudChjb25zdCBnbDo6Q29udGV4
dCAqY29udGV4dCkKLXsKLSAgICBHZXRGdW5jdGlvbnNHTChjb250ZXh0KS0+Zmx1c2goKTsKLSAg
ICByZXR1cm4gZWdsOjpOb0Vycm9yKCk7Ci19Ci0KLWVnbDo6RXJyb3IgSU9TdXJmYWNlU3VyZmFj
ZUNHTDo6c3dhcChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCkKLXsKLSAgICByZXR1cm4gZWds
OjpOb0Vycm9yKCk7Ci19Ci0KLWVnbDo6RXJyb3IgSU9TdXJmYWNlU3VyZmFjZUNHTDo6cG9zdFN1
YkJ1ZmZlcihjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgeCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgeSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgd2lkdGgsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IGhlaWdodCkKLXsKLSAgICBVTlJF
QUNIQUJMRSgpOwotICAgIHJldHVybiBlZ2w6Ok5vRXJyb3IoKTsKLX0KLQotZWdsOjpFcnJvciBJ
T1N1cmZhY2VTdXJmYWNlQ0dMOjpxdWVyeVN1cmZhY2VQb2ludGVyQU5HTEUoRUdMaW50IGF0dHJp
YnV0ZSwgdm9pZCAqKnZhbHVlKQotewotICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgcmV0dXJuIGVn
bDo6Tm9FcnJvcigpOwotfQotCi1lZ2w6OkVycm9yIElPU3VyZmFjZVN1cmZhY2VDR0w6OmJpbmRU
ZXhJbWFnZShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpUZXh0dXJlICp0ZXh0dXJlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IGJ1ZmZlcikKLXsKLSAg
ICBTdGF0ZU1hbmFnZXJHTCAqc3RhdGVNYW5hZ2VyID0gR2V0U3RhdGVNYW5hZ2VyR0woY29udGV4
dCk7Ci0KLSAgICBjb25zdCBUZXh0dXJlR0wgKnRleHR1cmVHTCA9IEdldEltcGxBczxUZXh0dXJl
R0w+KHRleHR1cmUpOwotICAgIEdMdWludCB0ZXh0dXJlSUQgICAgICAgICAgID0gdGV4dHVyZUdM
LT5nZXRUZXh0dXJlSUQoKTsKLSAgICBzdGF0ZU1hbmFnZXItPmJpbmRUZXh0dXJlKGdsOjpUZXh0
dXJlVHlwZTo6UmVjdGFuZ2xlLCB0ZXh0dXJlSUQpOwotCi0gICAgY29uc3QgYXV0byAmZm9ybWF0
ID0ga0lPU3VyZmFjZUZvcm1hdHNbbUZvcm1hdEluZGV4XTsKLSAgICBDR0xFcnJvciBlcnJvciA9
IENHTFRleEltYWdlSU9TdXJmYWNlMkQobUNHTENvbnRleHQsIEdMX1RFWFRVUkVfUkVDVEFOR0xF
LCBmb3JtYXQubmF0aXZlRm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtV2lkdGgsIG1IZWlnaHQsIGZvcm1hdC5uYXRpdmVJbnRlcm5hbEZvcm1hdCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0Lm5hdGl2
ZVR5cGUsIG1JT1N1cmZhY2UsIG1QbGFuZSk7Ci0KLSAgICBpZiAoZXJyb3IgIT0ga0NHTE5vRXJy
b3IpCi0gICAgewotICAgICAgICByZXR1cm4gZWdsOjpFZ2xDb250ZXh0TG9zdCgpIDw8ICJDR0xU
ZXhJbWFnZUlPU3VyZmFjZTJEIGZhaWxlZDogIiA8PCBDR0xFcnJvclN0cmluZyhlcnJvcik7Ci0g
ICAgfQotCi0gICAgaWYgKElzRXJyb3IoaW5pdGlhbGl6ZUFscGhhQ2hhbm5lbChjb250ZXh0LCB0
ZXh0dXJlSUQpKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlZ2w6OkVnbENvbnRleHRMb3N0KCkg
PDwgIkZhaWxlZCB0byBpbml0aWFsaXplIElPU3VyZmFjZSBhbHBoYSBjaGFubmVsLiI7Ci0gICAg
fQotCi0gICAgcmV0dXJuIGVnbDo6Tm9FcnJvcigpOwotfQotCi1lZ2w6OkVycm9yIElPU3VyZmFj
ZVN1cmZhY2VDR0w6OnJlbGVhc2VUZXhJbWFnZShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwg
RUdMaW50IGJ1ZmZlcikKLXsKLSAgICBjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25zID0gR2V0
RnVuY3Rpb25zR0woY29udGV4dCk7Ci0gICAgZnVuY3Rpb25zLT5mbHVzaCgpOwotICAgIHJldHVy
biBlZ2w6Ok5vRXJyb3IoKTsKLX0KLQotdm9pZCBJT1N1cmZhY2VTdXJmYWNlQ0dMOjpzZXRTd2Fw
SW50ZXJ2YWwoRUdMaW50IGludGVydmFsKQotewotICAgIFVOUkVBQ0hBQkxFKCk7Ci19Ci0KLUVH
TGludCBJT1N1cmZhY2VTdXJmYWNlQ0dMOjpnZXRXaWR0aCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IG1XaWR0aDsKLX0KLQotRUdMaW50IElPU3VyZmFjZVN1cmZhY2VDR0w6OmdldEhlaWdodCgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG1IZWlnaHQ7Ci19Ci0KLUVHTGludCBJT1N1cmZhY2VTdXJmYWNl
Q0dMOjppc1Bvc3RTdWJCdWZmZXJTdXBwb3J0ZWQoKSBjb25zdAotewotICAgIFVOUkVBQ0hBQkxF
KCk7Ci0gICAgcmV0dXJuIEVHTF9GQUxTRTsKLX0KLQotRUdMaW50IElPU3VyZmFjZVN1cmZhY2VD
R0w6OmdldFN3YXBCZWhhdmlvcigpIGNvbnN0Ci17Ci0gICAgLy8gTi9BIGJlY2F1c2UgeW91IGNh
bid0IE1ha2VDdXJyZW50IGFuIElPU3VyZmFjZSwgcmV0dXJuIGFueSB2YWxpZCB2YWx1ZS4KLSAg
ICByZXR1cm4gRUdMX0JVRkZFUl9QUkVTRVJWRUQ7Ci19Ci0KLS8vIHN0YXRpYwotYm9vbCBJT1N1
cmZhY2VTdXJmYWNlQ0dMOjp2YWxpZGF0ZUF0dHJpYnV0ZXMoRUdMQ2xpZW50QnVmZmVyIGJ1ZmZl
ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVn
bDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKQotewotICAgIElPU3VyZmFjZVJlZiBpb1N1cmZhY2Ug
PSByZWludGVycHJldF9jYXN0PElPU3VyZmFjZVJlZj4oYnVmZmVyKTsKLQotICAgIC8vIFRoZSBw
bGFuZSBtdXN0IGV4aXN0IGZvciB0aGlzIElPU3VyZmFjZS4gSU9TdXJmYWNlR2V0UGxhbmVDb3Vu
dCBjYW4gcmV0dXJuIDAgZm9yIG5vbi1wbGFuYXIKLSAgICAvLyBpb1N1cmZhY2VzIGJ1dCB3ZSB3
aWxsIHRyZWF0IG5vbi1wbGFuYXIgbGlrZSBpdCBpcyBhIHNpbmdsZSBwbGFuZS4KLSAgICBzaXpl
X3Qgc3VyZmFjZVBsYW5lQ291bnQgPSBzdGQ6Om1heChzaXplX3QoMSksIElPU3VyZmFjZUdldFBs
YW5lQ291bnQoaW9TdXJmYWNlKSk7Ci0gICAgRUdMQXR0cmliIHBsYW5lICAgICAgICAgID0gYXR0
cmlicy5nZXQoRUdMX0lPU1VSRkFDRV9QTEFORV9BTkdMRSk7Ci0gICAgaWYgKHBsYW5lIDwgMCB8
fCBzdGF0aWNfY2FzdDxzaXplX3Q+KHBsYW5lKSA+PSBzdXJmYWNlUGxhbmVDb3VudCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICAvLyBUaGUgd2lkdGggaGVpZ2h0
IHNwZWNpZmllZCBtdXN0IGJlIGF0IGxlYXN0ICgxLCAxKSBhbmQgYXQgbW9zdCB0aGUgcGxhbmUg
c2l6ZQotICAgIEVHTEF0dHJpYiB3aWR0aCAgPSBhdHRyaWJzLmdldChFR0xfV0lEVEgpOwotICAg
IEVHTEF0dHJpYiBoZWlnaHQgPSBhdHRyaWJzLmdldChFR0xfSEVJR0hUKTsKLSAgICBpZiAod2lk
dGggPD0gMCB8fCBzdGF0aWNfY2FzdDxzaXplX3Q+KHdpZHRoKSA+IElPU3VyZmFjZUdldFdpZHRo
T2ZQbGFuZShpb1N1cmZhY2UsIHBsYW5lKSB8fAotICAgICAgICBoZWlnaHQgPD0gMCB8fCBzdGF0
aWNfY2FzdDxzaXplX3Q+KGhlaWdodCkgPiBJT1N1cmZhY2VHZXRIZWlnaHRPZlBsYW5lKGlvU3Vy
ZmFjZSwgcGxhbmUpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAg
IC8vIEZpbmQgdGhpcyBJT1N1cmZhY2UgZm9ybWF0Ci0gICAgRUdMQXR0cmliIGludGVybmFsRm9y
bWF0ID0gYXR0cmlicy5nZXQoRUdMX1RFWFRVUkVfSU5URVJOQUxfRk9STUFUX0FOR0xFKTsKLSAg
ICBFR0xBdHRyaWIgdHlwZSAgICAgICAgICAgPSBhdHRyaWJzLmdldChFR0xfVEVYVFVSRV9UWVBF
X0FOR0xFKTsKLQotICAgIGludCBmb3JtYXRJbmRleCA9Ci0gICAgICAgIEZpbmRJT1N1cmZhY2VG
b3JtYXRJbmRleChzdGF0aWNfY2FzdDxHTGVudW0+KGludGVybmFsRm9ybWF0KSwgc3RhdGljX2Nh
c3Q8R0xlbnVtPih0eXBlKSk7Ci0KLSAgICBpZiAoZm9ybWF0SW5kZXggPCAwKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIC8vIENoZWNrIHRoYXQgdGhlIGZvcm1h
dCBtYXRjaGVzIHRoaXMgSU9TdXJmYWNlIHBsYW5lCi0gICAgaWYgKElPU3VyZmFjZUdldEJ5dGVz
UGVyRWxlbWVudE9mUGxhbmUoaW9TdXJmYWNlLCBwbGFuZSkgIT0KLSAgICAgICAga0lPU3VyZmFj
ZUZvcm1hdHNbZm9ybWF0SW5kZXhdLmNvbXBvbmVudEJ5dGVzKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi0vLyBXcmFwcyBhIEZy
YW1lYnVmZmVyR0wgdG8gaG9vayB0aGUgZGVzdHJveSBmdW5jdGlvbiB0byBkZWxldGUgdGhlIHRl
eHR1cmUgYXNzb2NpYXRlZCB3aXRoIHRoZQotLy8gZnJhbWVidWZmZXIuCi1jbGFzcyBJT1N1cmZh
Y2VGcmFtZWJ1ZmZlciA6IHB1YmxpYyBGcmFtZWJ1ZmZlckdMCi17Ci0gIHB1YmxpYzoKLSAgICBJ
T1N1cmZhY2VGcmFtZWJ1ZmZlcihjb25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAmZGF0YSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaWQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IHRleHR1cmVJZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzRGVm
YXVsdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGVtdWxhdGVkQWxwaGEpCi0gICAg
ICAgIDogRnJhbWVidWZmZXJHTChkYXRhLCBpZCwgaXNEZWZhdWx0LCBlbXVsYXRlZEFscGhhKSwg
bVRleHR1cmVJZCh0ZXh0dXJlSWQpCi0gICAge30KLSAgICB2b2lkIGRlc3Ryb3koY29uc3QgZ2w6
OkNvbnRleHQgKmNvbnRleHQpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBHZXRGdW5jdGlvbnNH
TChjb250ZXh0KS0+ZGVsZXRlVGV4dHVyZXMoMSwgJm1UZXh0dXJlSWQpOwotICAgICAgICBGcmFt
ZWJ1ZmZlckdMOjpkZXN0cm95KGNvbnRleHQpOwotICAgIH0KLQotICBwcml2YXRlOgotICAgIEdM
dWludCBtVGV4dHVyZUlkOwotfTsKLQotRnJhbWVidWZmZXJJbXBsICpJT1N1cmZhY2VTdXJmYWNl
Q0dMOjpjcmVhdGVEZWZhdWx0RnJhbWVidWZmZXIoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAmc3RhdGUpCi17Ci0gICAgY29uc3Qg
RnVuY3Rpb25zR0wgKmZ1bmN0aW9ucyA9IEdldEZ1bmN0aW9uc0dMKGNvbnRleHQpOwotICAgIFN0
YXRlTWFuYWdlckdMICpzdGF0ZU1hbmFnZXIgPSBHZXRTdGF0ZU1hbmFnZXJHTChjb250ZXh0KTsK
LQotICAgIEdMdWludCB0ZXh0dXJlID0gMDsKLSAgICBmdW5jdGlvbnMtPmdlblRleHR1cmVzKDEs
ICZ0ZXh0dXJlKTsKLSAgICBjb25zdCBhdXRvICZmb3JtYXQgPSBrSU9TdXJmYWNlRm9ybWF0c1tt
Rm9ybWF0SW5kZXhdOwotICAgIHN0YXRlTWFuYWdlci0+YmluZFRleHR1cmUoZ2w6OlRleHR1cmVU
eXBlOjpSZWN0YW5nbGUsIHRleHR1cmUpOwotICAgIENHTEVycm9yIGVycm9yID0gQ0dMVGV4SW1h
Z2VJT1N1cmZhY2UyRChtQ0dMQ29udGV4dCwgR0xfVEVYVFVSRV9SRUNUQU5HTEUsIGZvcm1hdC5u
YXRpdmVGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1XaWR0aCwgbUhlaWdodCwgZm9ybWF0Lm5hdGl2ZUludGVybmFsRm9ybWF0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQubmF0aXZlVHlwZSwgbUlP
U3VyZmFjZSwgbVBsYW5lKTsKLSAgICBpZiAoZXJyb3IgIT0ga0NHTE5vRXJyb3IpCi0gICAgewot
ICAgICAgICBFUlIoKSA8PCAiQ0dMVGV4SW1hZ2VJT1N1cmZhY2UyRCBmYWlsZWQ6ICIgPDwgQ0dM
RXJyb3JTdHJpbmcoZXJyb3IpOwotICAgIH0KLSAgICBBU1NFUlQoZXJyb3IgPT0ga0NHTE5vRXJy
b3IpOwotCi0gICAgaWYgKElzRXJyb3IoaW5pdGlhbGl6ZUFscGhhQ2hhbm5lbChjb250ZXh0LCB0
ZXh0dXJlKSkpCi0gICAgewotICAgICAgICBFUlIoKSA8PCAiRmFpbGVkIHRvIGluaXRpYWxpemUg
SU9TdXJmYWNlIGFscGhhIGNoYW5uZWwuIjsKLSAgICB9Ci0KLSAgICBHTHVpbnQgZnJhbWVidWZm
ZXIgPSAwOwotICAgIGZ1bmN0aW9ucy0+Z2VuRnJhbWVidWZmZXJzKDEsICZmcmFtZWJ1ZmZlcik7
Ci0gICAgc3RhdGVNYW5hZ2VyLT5iaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIGZyYW1l
YnVmZmVyKTsKLSAgICBzdGF0ZU1hbmFnZXItPmJpbmRUZXh0dXJlKGdsOjpUZXh0dXJlVHlwZTo6
UmVjdGFuZ2xlLCB0ZXh0dXJlKTsKLSAgICBmdW5jdGlvbnMtPmZyYW1lYnVmZmVyVGV4dHVyZTJE
KEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV9SRUNUQU5H
TEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlLCAwKTsKLQot
ICAgIHJldHVybiBuZXcgSU9TdXJmYWNlRnJhbWVidWZmZXIoc3RhdGUsIGZyYW1lYnVmZmVyLCB0
ZXh0dXJlLCB0cnVlLCBoYXNFbXVsYXRlZEFscGhhQ2hhbm5lbCgpKTsKLX0KLQotYW5nbGU6OlJl
c3VsdCBJT1N1cmZhY2VTdXJmYWNlQ0dMOjppbml0aWFsaXplQWxwaGFDaGFubmVsKGNvbnN0IGds
OjpDb250ZXh0ICpjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB0ZXh0dXJlKQotewotICAgIGlmIChtQWxwaGFJ
bml0aWFsaXplZCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51
ZTsKLSAgICB9Ci0KLSAgICBCbGl0R0wgKmJsaXR0ZXIgPSBHZXRCbGl0R0woY29udGV4dCk7Ci0g
ICAgQU5HTEVfVFJZKGJsaXR0ZXItPmNsZWFyUmVuZGVyYWJsZVRleHR1cmVBbHBoYVRvT25lKGNv
bnRleHQsIHRleHR1cmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdsOjpUZXh0dXJlVGFyZ2V0OjpSZWN0YW5nbGUsIDApKTsKLSAgICBt
QWxwaGFJbml0aWFsaXplZCA9IHRydWU7Ci0gICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRp
bnVlOwotfQotCi1ib29sIElPU3VyZmFjZVN1cmZhY2VDR0w6Omhhc0VtdWxhdGVkQWxwaGFDaGFu
bmVsKCkgY29uc3QKLXsKLSAgICBjb25zdCBhdXRvICZmb3JtYXQgPSBrSU9TdXJmYWNlRm9ybWF0
c1ttRm9ybWF0SW5kZXhdOwotICAgIHJldHVybiBmb3JtYXQuaW50ZXJuYWxGb3JtYXQgPT0gR0xf
UkdCOwotfQotCi19ICAvLyBuYW1lc3BhY2UgcngKLQotI2VuZGlmICAvLyBfX2hhc19pbmNsdWRl
KDxDb2NvYS9Db2NvYS5oPikKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvUGJ1ZmZlclN1cmZhY2VDR0wuY3BwIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9QYnVmZmVyU3Vy
ZmFjZUNHTC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDc4MGMwNmRmMGQxNzZiYWVkNjE4YmQ3MjAxM2U4OGI5
NGZiMzFiNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvUGJ1ZmZlclN1cmZhY2VDR0wuY3BwCkBAIC0wLDAgKzEs
MTUwIEBACisvLworLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUuCisvLworCisvLyBQQnVmZmVyU3VyZmFjZUNHTC5jcHA6IGFuIGltcGxlbWVu
dGF0aW9uIG9mIGVnbDo6U3VyZmFjZSBmb3IgUEJ1ZmZlcnMgZm9yIHRoZSBDTEcgYmFja2VuZCwK
Ky8vICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRseSBpbXBsZW1lbnRlZCB1c2luZyByZW5k
ZXJidWZmZXJzCisKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpbmNsdWRlIDxUYXJnZXRDb25k
aXRpb25hbHMuaD4KKyNpZiBUQVJHRVRfT1NfTUFDCisKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5k
ZXJlci9nbC9jZ2wvUGJ1ZmZlclN1cmZhY2VDR0wuaCIKKworI2luY2x1ZGUgImNvbW1vbi9kZWJ1
Zy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL0Z1bmN0aW9uc0dMLmgiCisjaW5j
bHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvRnJhbWVidWZmZXJHTC5oIgorI2luY2x1ZGUgImxp
YkFOR0xFL3JlbmRlcmVyL2dsL1JlbmRlcmVyR0wuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5k
ZXJlci9nbC9TdGF0ZU1hbmFnZXJHTC5oIgorCituYW1lc3BhY2UgcngKK3sKKworUGJ1ZmZlclN1
cmZhY2VDR0w6OlBidWZmZXJTdXJmYWNlQ0dMKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJlckdMICpyZW5k
ZXJlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgd2lkdGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IGhlaWdodCkKKyAg
ICA6IFN1cmZhY2VHTChzdGF0ZSksCisgICAgICBtV2lkdGgod2lkdGgpLAorICAgICAgbUhlaWdo
dChoZWlnaHQpLAorICAgICAgbUZ1bmN0aW9ucyhyZW5kZXJlci0+Z2V0RnVuY3Rpb25zKCkpLAor
ICAgICAgbVN0YXRlTWFuYWdlcihyZW5kZXJlci0+Z2V0U3RhdGVNYW5hZ2VyKCkpLAorICAgICAg
bUNvbG9yUmVuZGVyYnVmZmVyKDApLAorICAgICAgbURTUmVuZGVyYnVmZmVyKDApCit7Cit9CisK
K1BidWZmZXJTdXJmYWNlQ0dMOjp+UGJ1ZmZlclN1cmZhY2VDR0woKQoreworICAgIGlmIChtQ29s
b3JSZW5kZXJidWZmZXIgIT0gMCkKKyAgICB7CisgICAgICAgIG1GdW5jdGlvbnMtPmRlbGV0ZVJl
bmRlcmJ1ZmZlcnMoMSwgJm1Db2xvclJlbmRlcmJ1ZmZlcik7CisgICAgICAgIG1Db2xvclJlbmRl
cmJ1ZmZlciA9IDA7CisgICAgfQorICAgIGlmIChtRFNSZW5kZXJidWZmZXIgIT0gMCkKKyAgICB7
CisgICAgICAgIG1GdW5jdGlvbnMtPmRlbGV0ZVJlbmRlcmJ1ZmZlcnMoMSwgJm1EU1JlbmRlcmJ1
ZmZlcik7CisgICAgICAgIG1EU1JlbmRlcmJ1ZmZlciA9IDA7CisgICAgfQorfQorCitlZ2w6OkVy
cm9yIFBidWZmZXJTdXJmYWNlQ0dMOjppbml0aWFsaXplKGNvbnN0IGVnbDo6RGlzcGxheSAqZGlz
cGxheSkKK3sKKyAgICBtRnVuY3Rpb25zLT5nZW5SZW5kZXJidWZmZXJzKDEsICZtQ29sb3JSZW5k
ZXJidWZmZXIpOworICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRSZW5kZXJidWZmZXIoR0xfUkVOREVS
QlVGRkVSLCBtQ29sb3JSZW5kZXJidWZmZXIpOworICAgIG1GdW5jdGlvbnMtPnJlbmRlcmJ1ZmZl
clN0b3JhZ2UoR0xfUkVOREVSQlVGRkVSLCBHTF9SR0JBOCwgbVdpZHRoLCBtSGVpZ2h0KTsKKwor
ICAgIG1GdW5jdGlvbnMtPmdlblJlbmRlcmJ1ZmZlcnMoMSwgJm1EU1JlbmRlcmJ1ZmZlcik7Cisg
ICAgbVN0YXRlTWFuYWdlci0+YmluZFJlbmRlcmJ1ZmZlcihHTF9SRU5ERVJCVUZGRVIsIG1EU1Jl
bmRlcmJ1ZmZlcik7CisgICAgbUZ1bmN0aW9ucy0+cmVuZGVyYnVmZmVyU3RvcmFnZShHTF9SRU5E
RVJCVUZGRVIsIEdMX0RFUFRIMjRfU1RFTkNJTDgsIG1XaWR0aCwgbUhlaWdodCk7CisKKyAgICBy
ZXR1cm4gZWdsOjpOb0Vycm9yKCk7Cit9CisKK2VnbDo6RXJyb3IgUGJ1ZmZlclN1cmZhY2VDR0w6
Om1ha2VDdXJyZW50KGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0KQoreworICAgIHJldHVybiBl
Z2w6Ok5vRXJyb3IoKTsKK30KKworZWdsOjpFcnJvciBQYnVmZmVyU3VyZmFjZUNHTDo6c3dhcChj
b25zdCBnbDo6Q29udGV4dCAqY29udGV4dCkKK3sKKyAgICByZXR1cm4gZWdsOjpOb0Vycm9yKCk7
Cit9CisKK2VnbDo6RXJyb3IgUGJ1ZmZlclN1cmZhY2VDR0w6OnBvc3RTdWJCdWZmZXIoY29uc3Qg
Z2w6OkNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEVHTGludCB4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBFR0xpbnQgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRUdMaW50IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBFR0xpbnQgaGVpZ2h0KQoreworICAgIHJldHVybiBlZ2w6Ok5vRXJyb3IoKTsKK30K
KworZWdsOjpFcnJvciBQYnVmZmVyU3VyZmFjZUNHTDo6cXVlcnlTdXJmYWNlUG9pbnRlckFOR0xF
KEVHTGludCBhdHRyaWJ1dGUsIHZvaWQgKip2YWx1ZSkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7
CisgICAgcmV0dXJuIGVnbDo6Tm9FcnJvcigpOworfQorCitlZ2w6OkVycm9yIFBidWZmZXJTdXJm
YWNlQ0dMOjpiaW5kVGV4SW1hZ2UoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OlRleHR1cmUgKnRleHR1cmUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IGJ1ZmZl
cikKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGVnbDo6Tm9FcnJvcigpOwor
fQorCitlZ2w6OkVycm9yIFBidWZmZXJTdXJmYWNlQ0dMOjpyZWxlYXNlVGV4SW1hZ2UoY29uc3Qg
Z2w6OkNvbnRleHQgKmNvbnRleHQsIEVHTGludCBidWZmZXIpCit7CisgICAgVU5JTVBMRU1FTlRF
RCgpOworICAgIHJldHVybiBlZ2w6Ok5vRXJyb3IoKTsKK30KKwordm9pZCBQYnVmZmVyU3VyZmFj
ZUNHTDo6c2V0U3dhcEludGVydmFsKEVHTGludCBpbnRlcnZhbCkKK3sKK30KKworRUdMaW50IFBi
dWZmZXJTdXJmYWNlQ0dMOjpnZXRXaWR0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1XaWR0aDsK
K30KKworRUdMaW50IFBidWZmZXJTdXJmYWNlQ0dMOjpnZXRIZWlnaHQoKSBjb25zdAoreworICAg
IHJldHVybiBtSGVpZ2h0OworfQorCitFR0xpbnQgUGJ1ZmZlclN1cmZhY2VDR0w6OmlzUG9zdFN1
YkJ1ZmZlclN1cHBvcnRlZCgpIGNvbnN0Cit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJl
dHVybiBFR0xfRkFMU0U7Cit9CisKK0VHTGludCBQYnVmZmVyU3VyZmFjZUNHTDo6Z2V0U3dhcEJl
aGF2aW9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gRUdMX0JVRkZFUl9QUkVTRVJWRUQ7Cit9CisK
K0ZyYW1lYnVmZmVySW1wbCAqUGJ1ZmZlclN1cmZhY2VDR0w6OmNyZWF0ZURlZmF1bHRGcmFtZWJ1
ZmZlcihjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RnJhbWVidWZm
ZXJTdGF0ZSAmc3RhdGUpCit7CisgICAgY29uc3QgRnVuY3Rpb25zR0wgKmZ1bmN0aW9ucyA9IEdl
dEZ1bmN0aW9uc0dMKGNvbnRleHQpOworICAgIFN0YXRlTWFuYWdlckdMICpzdGF0ZU1hbmFnZXIg
PSBHZXRTdGF0ZU1hbmFnZXJHTChjb250ZXh0KTsKKworICAgIEdMdWludCBmcmFtZWJ1ZmZlciA9
IDA7CisgICAgZnVuY3Rpb25zLT5nZW5GcmFtZWJ1ZmZlcnMoMSwgJmZyYW1lYnVmZmVyKTsKKyAg
ICBzdGF0ZU1hbmFnZXItPmJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgZnJhbWVidWZm
ZXIpOworICAgIGZ1bmN0aW9ucy0+ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0xfRlJBTUVCVUZG
RVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9SRU5ERVJCVUZGRVIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtQ29sb3JSZW5kZXJidWZmZXIpOworICAgIGZ1bmN0
aW9ucy0+ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0xfRlJBTUVCVUZGRVIsIEdMX0RFUFRIX1NU
RU5DSUxfQVRUQUNITUVOVCwgR0xfUkVOREVSQlVGRkVSLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbURTUmVuZGVyYnVmZmVyKTsKKworICAgIHJldHVybiBuZXcgRnJh
bWVidWZmZXJHTChzdGF0ZSwgZnJhbWVidWZmZXIsIHRydWUsIGZhbHNlKTsKK30KKworfSAgLy8g
bmFtZXNwYWNlIHJ4CisKKyNlbmRpZiAgLy8gVEFSR0VUX09TX01BQworI2VuZGlmICAvLyBfX0FQ
UExFX18KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9nbC9jZ2wvUGJ1ZmZlclN1cmZhY2VDR0wubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL1BidWZmZXJTdXJmYWNlQ0dMLm1tCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOTg5MjdlODA3MDAyNTA4M2I2MmJhMWU2OGRh
MGIxMThhM2FkMTJhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wv
UGJ1ZmZlclN1cmZhY2VDR0wubW0KKysrIC9kZXYvbnVsbApAQCAtMSwxNDMgKzAsMCBAQAotLy8K
LS8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
LgotLy8KLQotLy8gUEJ1ZmZlclN1cmZhY2VDR0wuY3BwOiBhbiBpbXBsZW1lbnRhdGlvbiBvZiBl
Z2w6OlN1cmZhY2UgZm9yIFBCdWZmZXJzIGZvciB0aGUgQ0xHIGJhY2tlbmQsCi0vLyAgICAgICAg
ICAgICAgICAgICAgICBjdXJyZW50bHkgaW1wbGVtZW50ZWQgdXNpbmcgcmVuZGVyYnVmZmVycwot
Ci0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL1BidWZmZXJTdXJmYWNlQ0dMLmgi
Ci0KLSNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJl
ci9nbC9GdW5jdGlvbnNHTC5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL0ZyYW1l
YnVmZmVyR0wuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9SZW5kZXJlckdMLmgi
Ci0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvU3RhdGVNYW5hZ2VyR0wuaCIKLQotbmFt
ZXNwYWNlIHJ4Ci17Ci0KLVBidWZmZXJTdXJmYWNlQ0dMOjpQYnVmZmVyU3VyZmFjZUNHTChjb25z
dCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUmVuZGVyZXJHTCAqcmVuZGVyZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRUdMaW50IHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEVHTGludCBoZWlnaHQpCi0gICAgOiBTdXJmYWNlR0woc3RhdGUpLAotICAgICAgbVdp
ZHRoKHdpZHRoKSwKLSAgICAgIG1IZWlnaHQoaGVpZ2h0KSwKLSAgICAgIG1GdW5jdGlvbnMocmVu
ZGVyZXItPmdldEZ1bmN0aW9ucygpKSwKLSAgICAgIG1TdGF0ZU1hbmFnZXIocmVuZGVyZXItPmdl
dFN0YXRlTWFuYWdlcigpKSwKLSAgICAgIG1Db2xvclJlbmRlcmJ1ZmZlcigwKSwKLSAgICAgIG1E
U1JlbmRlcmJ1ZmZlcigwKQotewotfQotCi1QYnVmZmVyU3VyZmFjZUNHTDo6flBidWZmZXJTdXJm
YWNlQ0dMKCkKLXsKLSAgICBpZiAobUNvbG9yUmVuZGVyYnVmZmVyICE9IDApCi0gICAgewotICAg
ICAgICBtRnVuY3Rpb25zLT5kZWxldGVSZW5kZXJidWZmZXJzKDEsICZtQ29sb3JSZW5kZXJidWZm
ZXIpOwotICAgICAgICBtQ29sb3JSZW5kZXJidWZmZXIgPSAwOwotICAgIH0KLSAgICBpZiAobURT
UmVuZGVyYnVmZmVyICE9IDApCi0gICAgewotICAgICAgICBtRnVuY3Rpb25zLT5kZWxldGVSZW5k
ZXJidWZmZXJzKDEsICZtRFNSZW5kZXJidWZmZXIpOwotICAgICAgICBtRFNSZW5kZXJidWZmZXIg
PSAwOwotICAgIH0KLX0KLQotZWdsOjpFcnJvciBQYnVmZmVyU3VyZmFjZUNHTDo6aW5pdGlhbGl6
ZShjb25zdCBlZ2w6OkRpc3BsYXkgKmRpc3BsYXkpCi17Ci0gICAgbUZ1bmN0aW9ucy0+Z2VuUmVu
ZGVyYnVmZmVycygxLCAmbUNvbG9yUmVuZGVyYnVmZmVyKTsKLSAgICBtU3RhdGVNYW5hZ2VyLT5i
aW5kUmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgbUNvbG9yUmVuZGVyYnVmZmVyKTsKLSAg
ICBtRnVuY3Rpb25zLT5yZW5kZXJidWZmZXJTdG9yYWdlKEdMX1JFTkRFUkJVRkZFUiwgR0xfUkdC
QTgsIG1XaWR0aCwgbUhlaWdodCk7Ci0KLSAgICBtRnVuY3Rpb25zLT5nZW5SZW5kZXJidWZmZXJz
KDEsICZtRFNSZW5kZXJidWZmZXIpOwotICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRSZW5kZXJidWZm
ZXIoR0xfUkVOREVSQlVGRkVSLCBtRFNSZW5kZXJidWZmZXIpOwotICAgIG1GdW5jdGlvbnMtPnJl
bmRlcmJ1ZmZlclN0b3JhZ2UoR0xfUkVOREVSQlVGRkVSLCBHTF9ERVBUSDI0X1NURU5DSUw4LCBt
V2lkdGgsIG1IZWlnaHQpOwotCi0gICAgcmV0dXJuIGVnbDo6Tm9FcnJvcigpOwotfQotCi1lZ2w6
OkVycm9yIFBidWZmZXJTdXJmYWNlQ0dMOjptYWtlQ3VycmVudChjb25zdCBnbDo6Q29udGV4dCAq
Y29udGV4dCkKLXsKLSAgICByZXR1cm4gZWdsOjpOb0Vycm9yKCk7Ci19Ci0KLWVnbDo6RXJyb3Ig
UGJ1ZmZlclN1cmZhY2VDR0w6OnN3YXAoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQpCi17Ci0g
ICAgcmV0dXJuIGVnbDo6Tm9FcnJvcigpOwotfQotCi1lZ2w6OkVycm9yIFBidWZmZXJTdXJmYWNl
Q0dMOjpwb3N0U3ViQnVmZmVyKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgeCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IHksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCB3aWR0aCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IGhlaWdodCkKLXsKLSAgICBy
ZXR1cm4gZWdsOjpOb0Vycm9yKCk7Ci19Ci0KLWVnbDo6RXJyb3IgUGJ1ZmZlclN1cmZhY2VDR0w6
OnF1ZXJ5U3VyZmFjZVBvaW50ZXJBTkdMRShFR0xpbnQgYXR0cmlidXRlLCB2b2lkICoqdmFsdWUp
Ci17Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBlZ2w6Ok5vRXJyb3IoKTsKLX0K
LQotZWdsOjpFcnJvciBQYnVmZmVyU3VyZmFjZUNHTDo6YmluZFRleEltYWdlKGNvbnN0IGdsOjpD
b250ZXh0ICpjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdsOjpUZXh0dXJlICp0ZXh0dXJlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEVHTGludCBidWZmZXIpCi17Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAg
IHJldHVybiBlZ2w6Ok5vRXJyb3IoKTsKLX0KLQotZWdsOjpFcnJvciBQYnVmZmVyU3VyZmFjZUNH
TDo6cmVsZWFzZVRleEltYWdlKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LCBFR0xpbnQgYnVm
ZmVyKQotewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm4gZWdsOjpOb0Vycm9yKCk7
Ci19Ci0KLXZvaWQgUGJ1ZmZlclN1cmZhY2VDR0w6OnNldFN3YXBJbnRlcnZhbChFR0xpbnQgaW50
ZXJ2YWwpCi17Ci19Ci0KLUVHTGludCBQYnVmZmVyU3VyZmFjZUNHTDo6Z2V0V2lkdGgoKSBjb25z
dAotewotICAgIHJldHVybiBtV2lkdGg7Ci19Ci0KLUVHTGludCBQYnVmZmVyU3VyZmFjZUNHTDo6
Z2V0SGVpZ2h0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbUhlaWdodDsKLX0KLQotRUdMaW50IFBi
dWZmZXJTdXJmYWNlQ0dMOjppc1Bvc3RTdWJCdWZmZXJTdXBwb3J0ZWQoKSBjb25zdAotewotICAg
IFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm4gRUdMX0ZBTFNFOwotfQotCi1FR0xpbnQgUGJ1
ZmZlclN1cmZhY2VDR0w6OmdldFN3YXBCZWhhdmlvcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEVH
TF9CVUZGRVJfUFJFU0VSVkVEOwotfQotCi1GcmFtZWJ1ZmZlckltcGwgKlBidWZmZXJTdXJmYWNl
Q0dMOjpjcmVhdGVEZWZhdWx0RnJhbWVidWZmZXIoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyU3RhdGUgJnN0YXRlKQotewotICAgIGNvbnN0IEZ1
bmN0aW9uc0dMICpmdW5jdGlvbnMgPSBHZXRGdW5jdGlvbnNHTChjb250ZXh0KTsKLSAgICBTdGF0
ZU1hbmFnZXJHTCAqc3RhdGVNYW5hZ2VyID0gR2V0U3RhdGVNYW5hZ2VyR0woY29udGV4dCk7Ci0K
LSAgICBHTHVpbnQgZnJhbWVidWZmZXIgPSAwOwotICAgIGZ1bmN0aW9ucy0+Z2VuRnJhbWVidWZm
ZXJzKDEsICZmcmFtZWJ1ZmZlcik7Ci0gICAgc3RhdGVNYW5hZ2VyLT5iaW5kRnJhbWVidWZmZXIo
R0xfRlJBTUVCVUZGRVIsIGZyYW1lYnVmZmVyKTsKLSAgICBmdW5jdGlvbnMtPmZyYW1lYnVmZmVy
UmVuZGVyYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfUkVO
REVSQlVGRkVSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUNvbG9y
UmVuZGVyYnVmZmVyKTsKLSAgICBmdW5jdGlvbnMtPmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdM
X0ZSQU1FQlVGRkVSLCBHTF9ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQsIEdMX1JFTkRFUkJVRkZF
UiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1EU1JlbmRlcmJ1ZmZl
cik7Ci0KLSAgICByZXR1cm4gbmV3IEZyYW1lYnVmZmVyR0woc3RhdGUsIGZyYW1lYnVmZmVyLCB0
cnVlLCBmYWxzZSk7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSByeApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9SZW5kZXJlckNH
TC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wv
Y2dsL1JlbmRlcmVyQ0dMLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZTVjNTE2OGVlYWM2YzI5ZWRlNjk4MzEy
ZjdkYjY2MDFhOTM5ZTUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9SZW5kZXJlckNHTC5jcHAKQEAgLTAsMCAr
MSwzNSBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE5IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlLgorLy8KKworLy8gUmVuZGVyZXJDR0wubW06IEltcGxlbWVudHMgdGhlIGNs
YXNzIG1ldGhvZHMgZm9yIFJlbmRlcmVyQ0dMLgorCisjaWYgZGVmaW5lZChfX0FQUExFX18pCisj
aW5jbHVkZSA8VGFyZ2V0Q29uZGl0aW9uYWxzLmg+CisjaWYgVEFSR0VUX09TX01BQworCisjaW5j
bHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL0Rpc3BsYXlDR0wuaCIKKyNpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvUmVuZGVyZXJDR0wuaCIKKworbmFtZXNwYWNlIHJ4Cit7
CisKK1JlbmRlcmVyQ0dMOjpSZW5kZXJlckNHTChzdGQ6OnVuaXF1ZV9wdHI8RnVuY3Rpb25zR0w+
IGZ1bmN0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0
ZU1hcCAmYXR0cmliTWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgIERpc3BsYXlDR0wgKmRp
c3BsYXkpCisgICAgOiBSZW5kZXJlckdMKHN0ZDo6bW92ZShmdW5jdGlvbnMpLCBhdHRyaWJNYXAs
IGRpc3BsYXkpLCBtRGlzcGxheShkaXNwbGF5KQore30KKworUmVuZGVyZXJDR0w6On5SZW5kZXJl
ckNHTCgpIHt9CisKK1dvcmtlckNvbnRleHQgKlJlbmRlcmVyQ0dMOjpjcmVhdGVXb3JrZXJDb250
ZXh0KHN0ZDo6c3RyaW5nICppbmZvTG9nKQoreworICAgIHJldHVybiBtRGlzcGxheS0+Y3JlYXRl
V29ya2VyQ29udGV4dChpbmZvTG9nKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHJ4CisKKyNlbmRp
ZiAgLy8gVEFSR0VUX09TX01BQworI2VuZGlmICAvLyBfX0FQUExFX18KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvUmVuZGVy
ZXJDR0wubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
Z2wvY2dsL1JlbmRlcmVyQ0dMLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NmYz
N2E5ZTNlYzVlYTE4ZTc0N2JkNTEyMGVlNDYxM2NiOWM0YzFkLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvUmVuZGVyZXJDR0wubW0KKysrIC9kZXYvbnVsbApAQCAt
MSwyOSArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IDIwMTkgVGhlIEFOR0xFIFByb2plY3QgQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0vLyBSZW5kZXJlckNHTC5tbTogSW1wbGVtZW50cyB0
aGUgY2xhc3MgbWV0aG9kcyBmb3IgUmVuZGVyZXJDR0wuCi0KLSNpbmNsdWRlICJsaWJBTkdMRS9y
ZW5kZXJlci9nbC9jZ2wvUmVuZGVyZXJDR0wuaCIKLQotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRl
cmVyL2dsL2NnbC9EaXNwbGF5Q0dMLmgiCi0KLW5hbWVzcGFjZSByeAotewotCi1SZW5kZXJlckNH
TDo6UmVuZGVyZXJDR0woc3RkOjp1bmlxdWVfcHRyPEZ1bmN0aW9uc0dMPiBmdW5jdGlvbnMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYk1h
cCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBEaXNwbGF5Q0dMICpkaXNwbGF5KQotICAgIDog
UmVuZGVyZXJHTChzdGQ6Om1vdmUoZnVuY3Rpb25zKSwgYXR0cmliTWFwLCBkaXNwbGF5KSwgbURp
c3BsYXkoZGlzcGxheSkKLXt9Ci0KLVJlbmRlcmVyQ0dMOjp+UmVuZGVyZXJDR0woKSB7fQotCi1X
b3JrZXJDb250ZXh0ICpSZW5kZXJlckNHTDo6Y3JlYXRlV29ya2VyQ29udGV4dChzdGQ6OnN0cmlu
ZyAqaW5mb0xvZykKLXsKLSAgICByZXR1cm4gbURpc3BsYXktPmNyZWF0ZVdvcmtlckNvbnRleHQo
aW5mb0xvZyk7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSByeApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9XaW5kb3dTdXJmYWNl
Q0dMLm1tIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2ds
L2NnbC9XaW5kb3dTdXJmYWNlQ0dMLm1tCmluZGV4IDVmYTJmMzU0Yzc3ZmNjMDdhYzIwYmU2Nzkz
MmQwMzlhOTFmNDFhM2QuLjcwMmI4MjA4ZTJlMGJmNTU2M2IwNGNiNDk1NTM1OGFkZGU0MWY5ZjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9nbC9jZ2wvV2luZG93U3VyZmFjZUNHTC5tbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL1dpbmRvd1N1cmZhY2VDR0wubW0KQEAgLTYs
MjAgKzYsMjEgQEAKIAogLy8gV2luZG93U3VyZmFjZUNHTC5jcHA6IENHTCBpbXBsZW1lbnRhdGlv
biBvZiBlZ2w6OlN1cmZhY2UgZm9yIHdpbmRvd3MKIAotI2lmIF9faGFzX2luY2x1ZGUoPENvY29h
L0NvY29hLmg+KQorI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2luY2x1ZGUgPFRhcmdldENvbmRp
dGlvbmFscy5oPgorI2lmIFRBUkdFVF9PU19NQUMKIAotIyAgICBpbmNsdWRlICJsaWJBTkdMRS9y
ZW5kZXJlci9nbC9jZ2wvV2luZG93U3VyZmFjZUNHTC5oIgorI2ltcG9ydCAibGliQU5HTEUvcmVu
ZGVyZXIvZ2wvY2dsL1dpbmRvd1N1cmZhY2VDR0wuaCIKIAotIyAgICBpbXBvcnQgPENvY29hL0Nv
Y29hLmg+Ci0jICAgIGluY2x1ZGUgPE9wZW5HTC9PcGVuR0wuaD4KLSMgICAgaW1wb3J0IDxRdWFy
dHpDb3JlL1F1YXJ0ekNvcmUuaD4KKyNpbXBvcnQgImNvbW1vbi9kZWJ1Zy5oIgorI2ltcG9ydCAi
bGliQU5HTEUvQ29udGV4dC5oIgorI2ltcG9ydCAibGliQU5HTEUvcmVuZGVyZXIvZ2wvRnJhbWVi
dWZmZXJHTC5oIgorI2ltcG9ydCAibGliQU5HTEUvcmVuZGVyZXIvZ2wvUmVuZGVyZXJHTC5oIgor
I2ltcG9ydCAibGliQU5HTEUvcmVuZGVyZXIvZ2wvU3RhdGVNYW5hZ2VyR0wuaCIKKyNpbXBvcnQg
ImxpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9EaXNwbGF5Q0dMLmgiCiAKLSMgICAgaW5jbHVkZSAi
Y29tbW9uL2RlYnVnLmgiCi0jICAgIGluY2x1ZGUgImxpYkFOR0xFL0NvbnRleHQuaCIKLSMgICAg
aW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvRnJhbWVidWZmZXJHTC5oIgotIyAgICBpbmNs
dWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9SZW5kZXJlckdMLmgiCi0jICAgIGluY2x1ZGUgImxp
YkFOR0xFL3JlbmRlcmVyL2dsL1N0YXRlTWFuYWdlckdMLmgiCi0jICAgIGluY2x1ZGUgImxpYkFO
R0xFL3JlbmRlcmVyL2dsL2NnbC9EaXNwbGF5Q0dMLmgiCisjaW1wb3J0IDxPcGVuR0wvT3BlbkdM
Lmg+CisjaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KIAogQGludGVyZmFjZSBXZWJT
d2FwTGF5ZXIgOiBDQU9wZW5HTExheWVyIHsKICAgICBDR0xDb250ZXh0T2JqIG1EaXNwbGF5Q29u
dGV4dDsKQEAgLTMzNyw0ICszMzgsNSBAQCBGcmFtZWJ1ZmZlckltcGwgKldpbmRvd1N1cmZhY2VD
R0w6OmNyZWF0ZURlZmF1bHRGcmFtZWJ1ZmZlcihjb25zdCBnbDo6Q29udGV4dCAqYwogCiB9ICAv
LyBuYW1lc3BhY2UgcngKIAotI2VuZGlmICAvLyBfX2hhc19pbmNsdWRlKDxDb2NvYS9Db2NvYS5o
PikKKyNlbmRpZiAgLy8gVEFSR0VUX09TX01BQworI2VuZGlmICAvLyBfX0FQUExFX18K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381744</attachid>
            <date>2019-10-23 15:44:35 -0700</date>
            <delta_ts>2019-10-23 16:31:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203343-20191024094433.patch</filename>
            <type>text/plain</type>
            <size>73524</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNDk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9DaGFuZ2VMb2cgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cKaW5k
ZXggODkyOGI0Zjg4ZmY0MWJjMDQ4M2VmZjRjYWMxMTQzNmMyZDM5MDRiMC4uMGRhMjY0MjhkMTg0
ZTU0NWNmM2EyNzA0NjIwM2ZlZTE5OTY1YTZlNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDI0IEBACisyMDE5LTEwLTIzICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxl
LmNvbT4KKworICAgICAgICBbQU5HTEVdIEltcHJvdmUgY29tcGlsZS10aW1lIG1hY09TIGd1YXJk
cyBhbmQgYXZvaWQgT2JqQyBpZiBwb3NzaWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzMzQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVXNlIHRoZSBtb3JlIG9mZmljaWFsIGNvbXBpbGUtdGltZSBk
ZXRlY3Rpb24gb2YgQXBwbGUgcGxhdGZvcm1zLCBzbyB0aGF0CisgICAgICAgIGl0IHdpbGwgYmUg
ZWFzaWVyIHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbiBtYWNPUyBhbmQgaU9TLiBBbHNvIG1vdmUg
c29tZQorICAgICAgICAubW0gZmlsZXMgdG8gLmNwcCB3aGVyZSBwb3NzaWJsZS4KKworICAgICAg
ICAqIEFOR0xFLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogc3JjL2dwdV9p
bmZvX3V0aWwvU3lzdGVtSW5mb19tYWMuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2dwdV9pbmZvX3V0aWwvU3lzdGVtSW5mb19tYWMubW0uCisgICAgICAgIChh
bmdsZTo6R2V0U3lzdGVtSW5mbyk6CisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2ds
L2NnbC9EZXZpY2VDR0wuY3BwOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9j
Z2wvRGlzcGxheUNHTC5tbToKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2ds
L0lPU3VyZmFjZVN1cmZhY2VDR0wuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9JT1N1cmZhY2VTdXJmYWNlQ0dMLm1t
LgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvUGJ1ZmZlclN1cmZhY2VD
R0wuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2dsL2NnbC9QYnVmZmVyU3VyZmFjZUNHTC5tbS4KKyAgICAgICAgKiBzcmMvbGli
QU5HTEUvcmVuZGVyZXIvZ2wvY2dsL1JlbmRlcmVyQ0dMLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvUmVuZGVyZXJD
R0wubW0uCisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9XaW5kb3dTdXJm
YWNlQ0dMLm1tOgorCiAyMDE5LTEwLTIzICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4K
IAogICAgICAgICBEb24ndCB0cnkgdG8gY29tcGlsZSAuaW5jIGZpbGVzIGluIEFOR0xFCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9BTkdMRS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvQU5HTEUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCBjYzdlNjIwYTAzMjUzYmMyNzI1ZGYyZDY2NDRiYTFkNTI1OTRhZWUwLi4y
ZGEwNWZlNmJmMTg5Yjg4ZDZjMDFhMzQ0YmMwYmUyYWVjN2EyYWRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9BTkdMRS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0FOR0xFLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTUyMywxMSArNTIzLDExIEBACiAJCTVDQ0Q1OTZDMjI4NEY3OTYwMDE4RjJEOCAvKiBNZW1v
cnlPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDVDQ0Q1OTVFMjI4NEY3OTYwMDE4RjJEOCAvKiBNZW1vcnlPYmplY3QuaCAqLzsgfTsKIAkJNUND
RDU5NkQyMjg0Rjc5NjAwMThGMkQ4IC8qIHZhbGlkYXRpb25FU0VYVC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDRDU5NUYyMjg0Rjc5NjAwMThGMkQ4
IC8qIHZhbGlkYXRpb25FU0VYVC5oICovOyB9OwogCQk1Q0NENTk2RTIyODRGOTUxMDAxOEYyRDgg
LyogRGlzcGxheUNHTC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDVDQjMwMTRBMURFMzlGNDcwMEQyQzQwNSAvKiBEaXNwbGF5Q0dMLm1tICovOyB9Owot
CQk1Q0NENTk2RjIyODRGOTU1MDAxOEYyRDggLyogUGJ1ZmZlclN1cmZhY2VDR0wubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0IzMDE0QzFERTM5RjQ3
MDBEMkM0MDUgLyogUGJ1ZmZlclN1cmZhY2VDR0wubW0gKi87IH07CisJCTVDQ0Q1OTZGMjI4NEY5
NTUwMDE4RjJEOCAvKiBQYnVmZmVyU3VyZmFjZUNHTC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0IzMDE0QzFERTM5RjQ3MDBEMkM0MDUgLyogUGJ1
ZmZlclN1cmZhY2VDR0wuY3BwICovOyB9OwogCQk1Q0NENTk3NzIyODRGQTgzMDAxOEYyRDggLyog
SU9TdXJmYWNlU3VyZmFjZUNHTC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNUNDRDU5NzEyMjg0RkE4MjAwMThGMkQ4IC8qIElPU3VyZmFjZVN1cmZhY2VD
R0wuaCAqLzsgfTsKIAkJNUNDRDU5NzgyMjg0RkE4MzAwMThGMkQ4IC8qIENvbnRleHRDR0wuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDRDU5NzIy
Mjg0RkE4MjAwMThGMkQ4IC8qIENvbnRleHRDR0wuY3BwICovOyB9OwotCQk1Q0NENTk3OTIyODRG
QTgzMDAxOEYyRDggLyogSU9TdXJmYWNlU3VyZmFjZUNHTC5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQ0Q1OTczMjI4NEZBODIwMDE4RjJEOCAvKiBJ
T1N1cmZhY2VTdXJmYWNlQ0dMLm1tICovOyB9OwotCQk1Q0NENTk3QTIyODRGQTgzMDAxOEYyRDgg
LyogUmVuZGVyZXJDR0wubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1Q0NENTk3NDIyODRGQTgyMDAxOEYyRDggLyogUmVuZGVyZXJDR0wubW0gKi87IH07
CisJCTVDQ0Q1OTc5MjI4NEZBODMwMDE4RjJEOCAvKiBJT1N1cmZhY2VTdXJmYWNlQ0dMLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQ0Q1OTczMjI4
NEZBODIwMDE4RjJEOCAvKiBJT1N1cmZhY2VTdXJmYWNlQ0dMLmNwcCAqLzsgfTsKKwkJNUNDRDU5
N0EyMjg0RkE4MzAwMThGMkQ4IC8qIFJlbmRlcmVyQ0dMLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQ0Q1OTc0MjI4NEZBODIwMDE4RjJEOCAvKiBS
ZW5kZXJlckNHTC5jcHAgKi87IH07CiAJCTVDQ0Q1OTdCMjI4NEZBODMwMDE4RjJEOCAvKiBDb250
ZXh0Q0dMLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
Q0NENTk3NTIyODRGQTgyMDAxOEYyRDggLyogQ29udGV4dENHTC5oICovOyB9OwogCQk1Q0NENTk3
QzIyODRGQTgzMDAxOEYyRDggLyogUmVuZGVyZXJDR0wuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQ0Q1OTc2MjI4NEZBODMwMDE4RjJEOCAvKiBSZW5k
ZXJlckNHTC5oICovOyB9OwogCQk1Q0NENTk4MDIyODRGQjkwMDAxOEYyRDggLyogUXVlcnlJbXBs
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQ0Q1
OTdEMjI4NEZCOEYwMDE4RjJEOCAvKiBRdWVyeUltcGwuY3BwICovOyB9OwpAQCAtNTQyLDcgKzU0
Miw3IEBACiAJCTVDQ0Q1OTkzMjI4NEZDNDAwMDE4RjJEOCAvKiBpbWFnZWZvcm1hdHMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQ0Q1OThCMjI4NEZD
NDAwMDE4RjJEOCAvKiBpbWFnZWZvcm1hdHMuaCAqLzsgfTsKIAkJNUNDRDU5OTQyMjg0RkM0MDAw
MThGMkQ4IC8qIGdlbmVyYXRlbWlwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1Q0NENTk4QzIyODRGQzQwMDAxOEYyRDggLyogZ2VuZXJhdGVtaXAuaCAq
LzsgfTsKIAkJNUNDRDU5OTUyMjg0RkM0MDAwMThGMkQ4IC8qIGxvYWRpbWFnZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0NENTk4RDIyODRGQzQw
MDAxOEYyRDggLyogbG9hZGltYWdlLmNwcCAqLzsgfTsKLQkJNUNDRDU5OUEyMjg0RkM3NTAwMThG
MkQ4IC8qIFN5c3RlbUluZm9fbWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNUNDRDU5OTcyMjg0RkM3NTAwMThGMkQ4IC8qIFN5c3RlbUluZm9fbWFj
Lm1tICovOyB9OworCQk1Q0NENTk5QTIyODRGQzc1MDAxOEYyRDggLyogU3lzdGVtSW5mb19tYWMu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDRDU5
OTcyMjg0RkM3NTAwMThGMkQ4IC8qIFN5c3RlbUluZm9fbWFjLmNwcCAqLzsgfTsKIAkJNUNDRDU5
OUIyMjg0RkM3NTAwMThGMkQ4IC8qIFN5c3RlbUluZm8uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDRDU5OTgyMjg0RkM3NTAwMThGMkQ4IC8qIFN5
c3RlbUluZm8uY3BwICovOyB9OwogCQk1Q0NENTk5QzIyODRGQzc1MDAxOEYyRDggLyogU3lzdGVt
SW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUND
RDU5OTkyMjg0RkM3NTAwMThGMkQ4IC8qIFN5c3RlbUluZm8uaCAqLzsgfTsKIAkJNUNDRDU5OUUy
Mjg0RkNERTAwMThGMkQ4IC8qIENvbnRleHRfZ2xlc18xXzAuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDRDU5OUQyMjg0RkNERDAwMThGMkQ4IC8q
IENvbnRleHRfZ2xlc18xXzAuY3BwICovOyB9OwpAQCAtMTE5Niw3ICsxMTk2LDcgQEAKIAkJNUNC
MzAxNDkxREUzOUY0NzAwRDJDNDA1IC8qIERpc3BsYXlDR0wuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRGlzcGxheUNHTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1Q0IzMDE0QTFERTM5RjQ3MDBEMkM0MDUgLyogRGlzcGxheUNHTC5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERpc3BsYXlDR0wubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTVDQjMwMTRCMURFMzlGNDcwMEQyQzQwNSAvKiBQYnVmZmVyU3VyZmFj
ZUNHTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYnVmZmVyU3VyZmFjZUNH
TC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1Q0IzMDE0QzFERTM5RjQ3MDBEMkM0
MDUgLyogUGJ1ZmZlclN1cmZhY2VDR0wubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBQYnVmZmVyU3VyZmFjZUNHTC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNUNCMzAxNEMxREUzOUY0NzAwRDJDNDA1IC8qIFBidWZmZXJTdXJmYWNlQ0dMLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBidWZmZXJTdXJmYWNlQ0dMLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNCMzA0OEIxREU0MTQzNTAwRDJDNDA1
IC8qIENvcmVHcmFwaGljcy5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IENvcmVHcmFwaGlj
cy5mcmFtZXdvcms7IHBhdGggPSBTeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVHcmFwaGlj
cy5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBTREtST09UOyB9OwogCQk1Q0IzMDQ4RDFERTQxNDQ0
MDBEMkM0MDUgLyogT3BlbkdMLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gT3BlbkdMLmZy
YW1ld29yazsgcGF0aCA9IFN5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvT3BlbkdMLmZyYW1ld29y
azsgc291cmNlVHJlZSA9IFNES1JPT1Q7IH07CiAJCTVDQjMwNDhGMURFNDE0NTUwMEQyQzQwNSAv
KiBRdWFydHpDb3JlLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gUXVhcnR6Q29yZS5mcmFt
ZXdvcms7IHBhdGggPSBTeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1F1YXJ0ekNvcmUuZnJhbWV3
b3JrOyBzb3VyY2VUcmVlID0gU0RLUk9PVDsgfTsKQEAgLTEyNjksOCArMTI2OSw4IEBACiAJCTVD
Q0Q1OTVGMjI4NEY3OTYwMDE4RjJEOCAvKiB2YWxpZGF0aW9uRVNFWFQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gdmFsaWRhdGlvbkVTRVhULmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTVDQ0Q1OTcxMjI4NEZBODIwMDE4RjJEOCAvKiBJT1N1cmZhY2VTdXJmYWNl
Q0dMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElPU3VyZmFjZVN1cmZhY2VD
R0wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNDRDU5NzIyMjg0RkE4MjAwMThG
MkQ4IC8qIENvbnRleHRDR0wuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ29udGV4dENHTC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTVDQ0Q1OTcz
MjI4NEZBODIwMDE4RjJEOCAvKiBJT1N1cmZhY2VTdXJmYWNlQ0dMLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSU9TdXJmYWNlU3VyZmFjZUNHTC5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUNDRDU5NzQyMjg0RkE4MjAwMThGMkQ4IC8qIFJlbmRl
cmVyQ0dMLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVuZGVy
ZXJDR0wubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQ0Q1OTczMjI4NEZBODIw
MDE4RjJEOCAvKiBJT1N1cmZhY2VTdXJmYWNlQ0dMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IElPU3VyZmFjZVN1cmZhY2VDR0wuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1Q0NENTk3NDIyODRGQTgyMDAxOEYyRDggLyogUmVuZGVyZXJDR0wuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyZXJDR0wuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0NENTk3NTIyODRGQTgyMDAxOEYyRDggLyog
Q29udGV4dENHTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb250ZXh0Q0dM
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQ0Q1OTc2MjI4NEZBODMwMDE4RjJE
OCAvKiBSZW5kZXJlckNHTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5k
ZXJlckNHTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0NENTk3RDIyODRGQjhG
MDAxOEYyRDggLyogUXVlcnlJbXBsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFF1ZXJ5SW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjg1
LDcgKzEyODUsNyBAQAogCQk1Q0NENTk4QjIyODRGQzQwMDAxOEYyRDggLyogaW1hZ2Vmb3JtYXRz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGltYWdlZm9ybWF0cy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0NENTk4QzIyODRGQzQwMDAxOEYyRDggLyogZ2Vu
ZXJhdGVtaXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZ2VuZXJhdGVtaXAu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNDRDU5OEQyMjg0RkM0MDAwMThGMkQ4
IC8qIGxvYWRpbWFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBs
b2FkaW1hZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1Q0NENTk5NzIyODRG
Qzc1MDAxOEYyRDggLyogU3lzdGVtSW5mb19tYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBTeXN0ZW1JbmZvX21hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNUNDRDU5OTcyMjg0RkM3NTAwMThGMkQ4IC8qIFN5c3RlbUluZm9fbWFjLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN5c3RlbUluZm9fbWFjLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNDRDU5OTgyMjg0RkM3NTAwMThGMkQ4IC8q
IFN5c3RlbUluZm8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3lz
dGVtSW5mby5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQ0Q1OTk5MjI4NEZD
NzUwMDE4RjJEOCAvKiBTeXN0ZW1JbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFN5c3RlbUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNDRDU5OUQy
Mjg0RkNERDAwMThGMkQ4IC8qIENvbnRleHRfZ2xlc18xXzAuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQ29udGV4dF9nbGVzXzFfMC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0yMDQwLDYgKzIwNDAsNyBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKIAkJCQk1Q0IzMDE0ODFERTM5RjM2MDBEMkM0MDUgLyogY2dsICovLAor
CQkJCTMxM0JDRTI3MjM2MEY3ODkwMEZDMzlFNSAvKiBlYWdsICovLAogCQkJCTVDQjMwMEUwMURF
MzlGMUEwMEQyQzQwNSAvKiBCbGl0R0wuY3BwICovLAogCQkJCTVDQjMwMEUxMURFMzlGMUEwMEQy
QzQwNSAvKiBCbGl0R0wuaCAqLywKIAkJCQk1Q0IzMDBFMjFERTM5RjFBMDBEMkM0MDUgLyogQnVm
ZmVyR0wuY3BwICovLApAQCAtMjExNiwxMiArMjExNywxMiBAQAogCQkJCTZFMzFBMEEyMjM0RUVF
RDQwMEM4NDc4NCAvKiBEZXZpY2VDR0wuaCAqLywKIAkJCQk1Q0IzMDE0OTFERTM5RjQ3MDBEMkM0
MDUgLyogRGlzcGxheUNHTC5oICovLAogCQkJCTVDQjMwMTRBMURFMzlGNDcwMEQyQzQwNSAvKiBE
aXNwbGF5Q0dMLm1tICovLAorCQkJCTVDQ0Q1OTczMjI4NEZBODIwMDE4RjJEOCAvKiBJT1N1cmZh
Y2VTdXJmYWNlQ0dMLmNwcCAqLywKIAkJCQk1Q0NENTk3MTIyODRGQTgyMDAxOEYyRDggLyogSU9T
dXJmYWNlU3VyZmFjZUNHTC5oICovLAotCQkJCTVDQ0Q1OTczMjI4NEZBODIwMDE4RjJEOCAvKiBJ
T1N1cmZhY2VTdXJmYWNlQ0dMLm1tICovLAorCQkJCTVDQjMwMTRDMURFMzlGNDcwMEQyQzQwNSAv
KiBQYnVmZmVyU3VyZmFjZUNHTC5jcHAgKi8sCiAJCQkJNUNCMzAxNEIxREUzOUY0NzAwRDJDNDA1
IC8qIFBidWZmZXJTdXJmYWNlQ0dMLmggKi8sCi0JCQkJNUNCMzAxNEMxREUzOUY0NzAwRDJDNDA1
IC8qIFBidWZmZXJTdXJmYWNlQ0dMLm1tICovLAorCQkJCTVDQ0Q1OTc0MjI4NEZBODIwMDE4RjJE
OCAvKiBSZW5kZXJlckNHTC5jcHAgKi8sCiAJCQkJNUNDRDU5NzYyMjg0RkE4MzAwMThGMkQ4IC8q
IFJlbmRlcmVyQ0dMLmggKi8sCi0JCQkJNUNDRDU5NzQyMjg0RkE4MjAwMThGMkQ4IC8qIFJlbmRl
cmVyQ0dMLm1tICovLAogCQkJCUEzMUI2MTgxMjMwQjc0N0UwMDE2MTBENyAvKiBXaW5kb3dTdXJm
YWNlQ0dMLmggKi8sCiAJCQkJQTMxQjYxODIyMzBCNzQ3RjAwMTYxMEQ3IC8qIFdpbmRvd1N1cmZh
Y2VDR0wubW0gKi8sCiAJCQkpOwpAQCAtMjMzMiw3ICsyMzMzLDggQEAKIAkJCWNoaWxkcmVuID0g
KAogCQkJCTVDQ0Q1OTk4MjI4NEZDNzUwMDE4RjJEOCAvKiBTeXN0ZW1JbmZvLmNwcCAqLywKIAkJ
CQk1Q0NENTk5OTIyODRGQzc1MDAxOEYyRDggLyogU3lzdGVtSW5mby5oICovLAotCQkJCTVDQ0Q1
OTk3MjI4NEZDNzUwMDE4RjJEOCAvKiBTeXN0ZW1JbmZvX21hYy5tbSAqLywKKwkJCQkzMTNCQ0U0
NDIzNjBGOUFEMDBGQzM5RTUgLyogU3lzdGVtSW5mb19pbnRlcm5hbC5oICovLAorCQkJCTVDQ0Q1
OTk3MjI4NEZDNzUwMDE4RjJEOCAvKiBTeXN0ZW1JbmZvX21hYy5jcHAgKi8sCiAJCQkpOwogCQkJ
bmFtZSA9IGdwdWluZm91dGlsOwogCQkJcGF0aCA9IGdwdV9pbmZvX3V0aWw7CkBAIC0yNTQxLDYg
KzI1NDMsNyBAQAogCQkJCTVDMURCREUzMUIwNDM4RDMwMDIzNTU1MiAvKiBDb250ZXh0LmggaW4g
SGVhZGVycyAqLywKIAkJCQlBMzAzMDcyNzIzMDVGN0M0MDAyREE5NzIgLyogQ29udGV4dC5pbmwu
aCBpbiBIZWFkZXJzICovLAogCQkJCTVDQ0Q1OTdCMjI4NEZBODMwMDE4RjJEOCAvKiBDb250ZXh0
Q0dMLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMTNCQ0UzRDIzNjBGNzhBMDBGQzM5RTUgLyogQ29u
dGV4dEVBR0wuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDQjMwMTFEMURFMzlGMUEwMEQyQzQwNSAv
KiBDb250ZXh0R0wuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDQjMwNERFMURFNDE2NDgwMEQyQzQw
NSAvKiBDb250ZXh0SW1wbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNDRDU5OEUyMjg0RkM0MDAw
MThGMkQ4IC8qIGNvcHlpbWFnZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTUxLDYgKzI1NTQsNyBA
QAogCQkJCTVDNTVENjg5MjI4MjZCOUYwMEI1QkEyQyAvKiBEZWZlckdsb2JhbEluaXRpYWxpemVy
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMxREJERTcxQjA0MzhEMzAwMjM1NTUyIC8qIERldmlj
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkUzMUEwQTQyMzRFRUVENDAwQzg0Nzg0IC8qIERldmlj
ZUNHTC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzEzQkNFNDMyMzYwRjc4QTAwRkMzOUU1IC8qIERl
dmljZUVBR0wuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDQjMwNEUwMURFNDE2NDgwMEQyQzQwNSAv
KiBEZXZpY2VJbXBsLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTAxMkUyNzE4Qjk3QjlCMDAzOTA2
MkYgLyogRGlhZ25vc3RpY3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUEyNjRGOEFEMTY5NzRERUQw
MDZGQUE1QSAvKiBEaWFnbm9zdGljc0Jhc2UuaCBpbiBIZWFkZXJzICovLApAQCAtMjU2MCw2ICsy
NTY0LDcgQEAKIAkJCQkzMTVFQkRCQzFGQ0U0NEJGMDBBQzdBODkgLyogRGlzcGF0Y2hUYWJsZUdM
X2F1dG9nZW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTVDMURCREU5MUIwNDM4RDMwMDIzNTU1MiAv
KiBEaXNwbGF5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0IzMDE0RjFERTM5RjQ3MDBEMkM0MDUg
LyogRGlzcGxheUNHTC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzEzQkNFM0IyMzYwRjc4QTAwRkMz
OUU1IC8qIERpc3BsYXlFQUdMLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0IzMDExRjFERTM5RjFB
MDBEMkM0MDUgLyogRGlzcGxheUdMLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0IzMDRFMjFERTQx
NjQ4MDBEMkM0MDUgLyogRGlzcGxheUltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxNUVCREM5
MUZDRTQ0RTQwMEFDN0E4OSAvKiBkcml2ZXJfdXRpbHMuaCBpbiBIZWFkZXJzICovLApAQCAtMjY1
OCw2ICsyNjYzLDcgQEAKIAkJCQk1QzU1RDcwODIyODI2Q0IzMDBCNUJBMkMgLyogSW50ZXJtTm9k
ZVBhdHRlcm5NYXRjaGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzU1RDcwMTIyODI2Q0IzMDBC
NUJBMkMgLyogSW50ZXJtVHJhdmVyc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDQ0Q1OTc3MjI4
NEZBODMwMDE4RjJEOCAvKiBJT1N1cmZhY2VTdXJmYWNlQ0dMLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkzMTNCQ0U0MTIzNjBGNzhBMDBGQzM5RTUgLyogSU9TdXJmYWNlU3VyZmFjZUVBR0wuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTMxNUVCRDhFMUZDRTQ0MzYwMEFDN0E4OSAvKiBJc0FTVERlcHRoQmVs
b3dMaW1pdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTI2NEY4Q0QxNjk3NjJBQTAwNkZBQTVBIC8q
IGtocnBsYXRmb3JtLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzFEQkMzMjFCMDQzNzVGMDAyMzU1
NTIgLyogbGVuZ3RoX2xpbWl0cy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjk4LDYgKzI3MDQsNyBA
QAogCQkJCTVDQjMwMTJFMURFMzlGMUEwMEQyQzQwNSAvKiBQYXRoR0wuaCBpbiBIZWFkZXJzICov
LAogCQkJCTVDQjMwNEYxMURFNDE2NDgwMEQyQzQwNSAvKiBQYXRoSW1wbC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNUNCMzAxNTExREUzOUY0NzAwRDJDNDA1IC8qIFBidWZmZXJTdXJmYWNlQ0dMLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkzMTNCQ0UzQzIzNjBGNzhBMDBGQzM5RTUgLyogUGJ1ZmZlclN1
cmZhY2VFQUdMLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzFEQkJGNTFCMDQzNkVDMDAyMzU1NTIg
LyogcGxhdGZvcm0uaCBpbiBIZWFkZXJzICovLAogCQkJCTMxNUVCRTI5MUZDRjgwOEMwMEFDN0E4
OSAvKiBQTXVySGFzaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM1NUQ3MjcyMjgyNzQ3NzAwQjVC
QTJDIC8qIFBvb2xBbGxvYy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzM2LDYgKzI3NDMsNyBAQAog
CQkJCTVDQjMwNEY1MURFNDE2NDgwMEQyQzQwNSAvKiBSZW5kZXJidWZmZXJJbXBsX21vY2suaCBp
biBIZWFkZXJzICovLAogCQkJCTVDQjMwNEY4MURFNDE2NDgwMEQyQzQwNSAvKiByZW5kZXJlcl91
dGlscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNDRDU5N0MyMjg0RkE4MzAwMThGMkQ4IC8qIFJl
bmRlcmVyQ0dMLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMTNCQ0UzRTIzNjBGNzhBMDBGQzM5RTUg
LyogUmVuZGVyZXJFQUdMLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0IzMDEzODFERTM5RjFBMDBE
MkM0MDUgLyogUmVuZGVyZXJHTC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNCMzAxMzYxREUzOUYx
QTAwRDJDNDA1IC8qIHJlbmRlcmVyZ2xfdXRpbHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUEzMDMw
NzA3MjMwNUY2MzYwMDJEQTk3MiAvKiBSZXBsYWNlU2hhZG93aW5nVmFyaWFibGVzLmggaW4gSGVh
ZGVycyAqLywKQEAgLTI4MDAsNiArMjgwOCw3IEBACiAJCQkJMzFBMzMxQzcxRUE1RUQ1RjAwRkQy
MjAzIC8qIHN5c3RlbV91dGlscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM1NUQ3MkIyMjgyNzQ3
NzAwQjVCQTJDIC8qIHN5c3RlbV91dGlsc191bml0dGVzdF9oZWxwZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTVDQ0Q1OTlDMjI4NEZDNzUwMDE4RjJEOCAvKiBTeXN0ZW1JbmZvLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkzMTNCQ0U0NTIzNjBGOUFEMDBGQzM5RTUgLyogU3lzdGVtSW5mb19pbnRlcm5h
bC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMxREJGMzExQjA0MzhEMzAwMjM1NTUyIC8qIFRleHR1
cmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxNUVCRDlFMUZDRTQ0MzYwMEFDN0E4OSAvKiBUZXh0
dXJlRnVuY3Rpb25ITFNMLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0IzMDE0MjFERTM5RjFBMDBE
MkM0MDUgLyogVGV4dHVyZUdMLmggaW4gSGVhZGVycyAqLywKQEAgLTI4NzcsNiArMjg4Niw3IEBA
CiAJCQkJNUMxREJGNDIxQjA0MzhEMzAwMjM1NTUyIC8qIFZlcnRleEF0dHJpYnV0ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNUM1NUQ3MDAyMjgyNkNCMzAwQjVCQTJDIC8qIFZpc2l0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBMzFCNjE4MzIzMEI3NDdGMDAxNjEwRDcgLyogV2luZG93U3VyZmFjZUNH
TC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzEzQkNFMzcyMzYwRjc4QTAwRkMzOUU1IC8qIFdpbmRv
d1N1cmZhY2VFQUdMLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTVFQkRGQTFGQ0U0NTJEMDBBQzdB
ODkgLyogV29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzU1RDY3NTIyODI2QjlG
MDBCNUJBMkMgLyogV3JhcFN3aXRjaFN0YXRlbWVudHNJbkJsb2Nrcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNUNDRDU5NTEyMjg0RUNEMTAwMThGMkQ4IC8qIHh4aGFzaC5oIGluIEhlYWRlcnMgKi8s
CkBAIC0zMDg0LDcgKzMwOTQsNyBAQAogCQkJCTVDNTVENzA5MjI4MjZDQjMwMEI1QkEyQyAvKiBJ
bnRlcm1Ob2RlX3V0aWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUM1NUQ3MDQyMjgyNkNCMzAw
QjVCQTJDIC8qIEludGVybU5vZGVQYXR0ZXJuTWF0Y2hlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk1QzU1RDcwMjIyODI2Q0IzMDBCNUJBMkMgLyogSW50ZXJtVHJhdmVyc2UuY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJNUNDRDU5NzkyMjg0RkE4MzAwMThGMkQ4IC8qIElPU3VyZmFjZVN1cmZhY2VD
R0wubW0gaW4gU291cmNlcyAqLywKKwkJCQk1Q0NENTk3OTIyODRGQTgzMDAxOEYyRDggLyogSU9T
dXJmYWNlU3VyZmFjZUNHTC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTVFQkQ5QzFGQ0U0NDM2
MDBBQzdBODkgLyogSXNBU1REZXB0aEJlbG93TGltaXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTI2NEY4QjYxNjk3NERFRDAwNkZBQTVBIC8qIExleGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTVDQjMwNEVGMURFNDE2NDgwMEQyQzQwNSAvKiBsb2FkX2Z1bmN0aW9uc190YWJsZV9hdXRvZ2Vu
LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzExOCw3ICszMTI4LDcgQEAKIAkJCQkzMTAxMkU1NDE4
Qjk3QjlCMDAzOTA2MkYgLyogUGFyc2VDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVD
Q0Q4MTdBMURCRkU5OTkwMDYwNjZCOCAvKiBQYXRoLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVD
QjMwMTJEMURFMzlGMUEwMEQyQzQwNSAvKiBQYXRoR0wuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJ
NUNDRDU5NkYyMjg0Rjk1NTAwMThGMkQ4IC8qIFBidWZmZXJTdXJmYWNlQ0dMLm1tIGluIFNvdXJj
ZXMgKi8sCisJCQkJNUNDRDU5NkYyMjg0Rjk1NTAwMThGMkQ4IC8qIFBidWZmZXJTdXJmYWNlQ0dM
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDMURCREZFMUIwNDM4RDMwMDIzNTU1MiAvKiBQbGF0
Zm9ybS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTVFQkUyODFGQ0Y4MDhDMDBBQzdBODkgLyog
UE11ckhhc2guY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzEwMTJFNTYxOEI5N0I5QjAwMzkwNjJG
IC8qIFBvb2xBbGxvYy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMxNDksNyArMzE1OSw3IEBACiAJ
CQkJNUMxREJFMDcxQjA0MzhEMzAwMjM1NTUyIC8qIFJlbmRlcmJ1ZmZlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk1Q0IzMDEzMzFERTM5RjFBMDBEMkM0MDUgLyogUmVuZGVyYnVmZmVyR0wuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNUNCMzA0RjcxREU0MTY0ODAwRDJDNDA1IC8qIHJlbmRlcmVy
X3V0aWxzLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTVDQ0Q1OTdBMjI4NEZBODMwMDE4RjJEOCAv
KiBSZW5kZXJlckNHTC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTVDQ0Q1OTdBMjI4NEZBODMwMDE4
RjJEOCAvKiBSZW5kZXJlckNHTC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1Q0IzMDEzNzFERTM5
RjFBMDBEMkM0MDUgLyogUmVuZGVyZXJHTC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1Q0IzMDEz
NTFERTM5RjFBMDBEMkM0MDUgLyogcmVuZGVyZXJnbF91dGlscy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBMzAzMDcwNTIzMDVGNjM2MDAyREE5NzIgLyogUmVwbGFjZVNoYWRvd2luZ1ZhcmlhYmxl
cy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMyMDIsNyArMzIxMiw3IEBACiAJCQkJNUM1NUQ3MzAy
MjgyNzQ3NzAwQjVCQTJDIC8qIHN5c3RlbV91dGlsc19wb3NpeC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk1QzU1RDcyMDIyODI3NDc3MDBCNUJBMkMgLyogc3lzdGVtX3V0aWxzX3VuaXR0ZXN0X2hl
bHBlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1Q0NENTk5QjIyODRGQzc1MDAxOEYyRDggLyog
U3lzdGVtSW5mby5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1Q0NENTk5QTIyODRGQzc1MDAxOEYy
RDggLyogU3lzdGVtSW5mb19tYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQk1Q0NENTk5QTIyODRG
Qzc1MDAxOEYyRDggLyogU3lzdGVtSW5mb19tYWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMx
REJGMzAxQjA0MzhEMzAwMjM1NTUyIC8qIFRleHR1cmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MzE1RUJEOTkxRkNFNDQzNjAwQUM3QTg5IC8qIFRleHR1cmVGdW5jdGlvbkhMU0wuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNUNCMzAxNDExREUzOUYxQTAwRDJDNDA1IC8qIFRleHR1cmVHTC5jcHAg
aW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9n
cHVfaW5mb191dGlsL1N5c3RlbUluZm9fbWFjLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9ncHVfaW5mb191dGlsL1N5c3RlbUluZm9fbWFjLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MTJlZmVh
OTBmMTRjMGNkMjRmMzZhMzAxMjFlY2YzZjkzNGQ2YzI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2dwdV9pbmZvX3V0aWwvU3lzdGVtSW5mb19tYWMuY3Bw
CkBAIC0wLDAgKzEsMjQ4IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTcgVGhlIEFOR0xFIFByb2pl
Y3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBTeXN0ZW1JbmZvX21hYy5jcHA6IGlt
cGxlbWVudGF0aW9uIG9mIHRoZSBNYWMtc3BlY2lmaWMgcGFydHMgb2YgU3lzdGVtSW5mby5oCisK
KyNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpbmNsdWRlIDxUYXJnZXRDb25kaXRpb25hbHMuaD4K
KyNpZiBUQVJHRVRfT1NfT1NYCisKKyNpbmNsdWRlICJncHVfaW5mb191dGlsL1N5c3RlbUluZm9f
aW50ZXJuYWwuaCIKKworI2luY2x1ZGUgPENvcmVHcmFwaGljcy9DR0RpcmVjdERpc3BsYXkuaD4K
KyNpbmNsdWRlIDxJT0tpdC9JT0tpdExpYi5oPgorI2luY2x1ZGUgPE9wZW5HTC9PcGVuR0wuaD4K
KworbmFtZXNwYWNlIGFuZ2xlCit7CisKK25hbWVzcGFjZQoreworCit1c2luZyBQbGF0Zm9ybURp
c3BsYXlJRCA9IHVpbnQzMl90OworCitjb25zdGV4cHIgQ0dMUmVuZGVyZXJQcm9wZXJ0eSBrQ0dM
UlBSZWdpc3RyeUlETG93ICA9IHN0YXRpY19jYXN0PENHTFJlbmRlcmVyUHJvcGVydHk+KDE0MCk7
Citjb25zdGV4cHIgQ0dMUmVuZGVyZXJQcm9wZXJ0eSBrQ0dMUlBSZWdpc3RyeUlESGlnaCA9IHN0
YXRpY19jYXN0PENHTFJlbmRlcmVyUHJvcGVydHk+KDE0MSk7CisKKy8vIENvZGUgZnJvbSBXZWJL
aXQgdG8gZ2V0IHRoZSBhY3RpdmUgR1BVJ3MgSUQgZ2l2ZW4gYSBkaXNwbGF5IElELgordWludDY0
X3QgR2V0R3B1SURGcm9tRGlzcGxheUlEKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKK3sK
KyAgICBHTHVpbnQgZGlzcGxheU1hc2sgICAgICAgICAgICAgID0gQ0dEaXNwbGF5SURUb09wZW5H
TERpc3BsYXlNYXNrKGRpc3BsYXlJRCk7CisgICAgR0xpbnQgbnVtUmVuZGVyZXJzICAgICAgICAg
ICAgICA9IDA7CisgICAgQ0dMUmVuZGVyZXJJbmZvT2JqIHJlbmRlcmVySW5mbyA9IG51bGxwdHI7
CisgICAgQ0dMRXJyb3IgZXJyb3IgPSBDR0xRdWVyeVJlbmRlcmVySW5mbyhkaXNwbGF5TWFzaywg
JnJlbmRlcmVySW5mbywgJm51bVJlbmRlcmVycyk7CisgICAgaWYgKCFudW1SZW5kZXJlcnMgfHwg
IXJlbmRlcmVySW5mbyB8fCBlcnJvciAhPSBrQ0dMTm9FcnJvcikKKyAgICAgICAgcmV0dXJuIDA7
CisKKyAgICAvLyBUaGUgMHRoIHJlbmRlcmVyIHNob3VsZCBub3QgYmUgdGhlIHNvZnR3YXJlIHJl
bmRlcmVyLgorICAgIEdMaW50IGlzQWNjZWxlcmF0ZWQ7CisgICAgZXJyb3IgPSBDR0xEZXNjcmli
ZVJlbmRlcmVyKHJlbmRlcmVySW5mbywgMCwga0NHTFJQQWNjZWxlcmF0ZWQsICZpc0FjY2VsZXJh
dGVkKTsKKyAgICBpZiAoIWlzQWNjZWxlcmF0ZWQgfHwgZXJyb3IgIT0ga0NHTE5vRXJyb3IpCisg
ICAgeworICAgICAgICBDR0xEZXN0cm95UmVuZGVyZXJJbmZvKHJlbmRlcmVySW5mbyk7CisgICAg
ICAgIHJldHVybiAwOworICAgIH0KKworICAgIEdMaW50IGdwdUlETG93ICA9IDA7CisgICAgR0xp
bnQgZ3B1SURIaWdoID0gMDsKKworICAgIGVycm9yID0gQ0dMRGVzY3JpYmVSZW5kZXJlcihyZW5k
ZXJlckluZm8sIDAsIGtDR0xSUFJlZ2lzdHJ5SURMb3csICZncHVJRExvdyk7CisKKyAgICBpZiAo
ZXJyb3IgIT0ga0NHTE5vRXJyb3IgfHwgZ3B1SURMb3cgPCAwKQorICAgIHsKKyAgICAgICAgQ0dM
RGVzdHJveVJlbmRlcmVySW5mbyhyZW5kZXJlckluZm8pOworICAgICAgICByZXR1cm4gMDsKKyAg
ICB9CisKKyAgICBlcnJvciA9IENHTERlc2NyaWJlUmVuZGVyZXIocmVuZGVyZXJJbmZvLCAwLCBr
Q0dMUlBSZWdpc3RyeUlESGlnaCwgJmdwdUlESGlnaCk7CisgICAgaWYgKGVycm9yICE9IGtDR0xO
b0Vycm9yIHx8IGdwdUlESGlnaCA8IDApCisgICAgeworICAgICAgICBDR0xEZXN0cm95UmVuZGVy
ZXJJbmZvKHJlbmRlcmVySW5mbyk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIENH
TERlc3Ryb3lSZW5kZXJlckluZm8ocmVuZGVyZXJJbmZvKTsKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KGdwdUlESGlnaCkgPDwgMzIgfCBncHVJRExvdzsKK30KKworc3RkOjpzdHJp
bmcgR2V0TWFjaGluZU1vZGVsKCkKK3sKKyAgICBpb19zZXJ2aWNlX3QgcGxhdGZvcm1FeHBlcnQg
PSBJT1NlcnZpY2VHZXRNYXRjaGluZ1NlcnZpY2UoCisgICAgICAgIGtJT01hc3RlclBvcnREZWZh
dWx0LCBJT1NlcnZpY2VNYXRjaGluZygiSU9QbGF0Zm9ybUV4cGVydERldmljZSIpKTsKKworICAg
IGlmIChwbGF0Zm9ybUV4cGVydCA9PSBJT19PQkpFQ1RfTlVMTCkKKyAgICB7CisgICAgICAgIHJl
dHVybiAiIjsKKyAgICB9CisKKyAgICBDRkRhdGFSZWYgbW9kZWxEYXRhID0gc3RhdGljX2Nhc3Q8
Q0ZEYXRhUmVmPigKKyAgICAgICAgSU9SZWdpc3RyeUVudHJ5Q3JlYXRlQ0ZQcm9wZXJ0eShwbGF0
Zm9ybUV4cGVydCwgQ0ZTVFIoIm1vZGVsIiksIGtDRkFsbG9jYXRvckRlZmF1bHQsIDApKTsKKyAg
ICBpZiAobW9kZWxEYXRhID09IG51bGxwdHIpCisgICAgeworICAgICAgICBJT09iamVjdFJlbGVh
c2UocGxhdGZvcm1FeHBlcnQpOworICAgICAgICByZXR1cm4gIiI7CisgICAgfQorCisgICAgc3Rk
OjpzdHJpbmcgcmVzdWx0ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyICo+KENGRGF0YUdl
dEJ5dGVQdHIobW9kZWxEYXRhKSk7CisKKyAgICBJT09iamVjdFJlbGVhc2UocGxhdGZvcm1FeHBl
cnQpOworICAgIENGUmVsZWFzZShtb2RlbERhdGEpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30K
KworLy8gRXh0cmFjdHMgb25lIGludGVnZXIgcHJvcGVydHkgZnJvbSBhIHJlZ2lzdHJ5IGVudHJ5
LgorYm9vbCBHZXRFbnRyeVByb3BlcnR5KGlvX3JlZ2lzdHJ5X2VudHJ5X3QgZW50cnksIENGU3Ry
aW5nUmVmIG5hbWUsIHVpbnQzMl90ICp2YWx1ZSkKK3sKKyAgICAqdmFsdWUgPSAwOworCisgICAg
Q0ZEYXRhUmVmIGRhdGEgPSBzdGF0aWNfY2FzdDxDRkRhdGFSZWY+KAorICAgICAgICBJT1JlZ2lz
dHJ5RW50cnlTZWFyY2hDRlByb3BlcnR5KGVudHJ5LCBrSU9TZXJ2aWNlUGxhbmUsIG5hbWUsIGtD
RkFsbG9jYXRvckRlZmF1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAga0lPUmVnaXN0cnlJdGVyYXRlUmVjdXJzaXZlbHkgfCBrSU9SZWdpc3RyeUl0ZXJhdGVQYXJl
bnRzKSk7CisKKyAgICBpZiAoZGF0YSA9PSBudWxscHRyKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIGNvbnN0IHVpbnQzMl90ICp2YWx1ZVB0ciA9IHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QgKj4oQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhKSk7CisKKyAg
ICBpZiAodmFsdWVQdHIgPT0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIENGUmVsZWFzZShkYXRh
KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgICp2YWx1ZSA9ICp2YWx1ZVB0
cjsKKyAgICBDRlJlbGVhc2UoZGF0YSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKKy8vIEdhdGhl
cnMgdGhlIHZlbmRvciBhbmQgZGV2aWNlIElEcyBmb3IgdGhlIFBDSSBHUFVzCitib29sIEdldFBD
SURldmljZXMoc3RkOjp2ZWN0b3I8R1BVRGV2aWNlSW5mbz4gKmRldmljZXMpCit7CisgICAgLy8g
bWF0Y2hEaWN0aW9uYXJ5IHdpbGwgYmUgY29uc3VtZWQgYnkgSU9TZXJ2aWNlR2V0TWF0Y2hpbmdT
ZXJ2aWNlcywgbm8gbmVlZCB0byByZWxlYXNlIGl0LgorICAgIENGTXV0YWJsZURpY3Rpb25hcnlS
ZWYgbWF0Y2hEaWN0aW9uYXJ5ID0gSU9TZXJ2aWNlTWF0Y2hpbmcoIklPUENJRGV2aWNlIik7CisK
KyAgICBpb19pdGVyYXRvcl90IGVudHJ5SXRlcmF0b3I7CisgICAgaWYgKElPU2VydmljZUdldE1h
dGNoaW5nU2VydmljZXMoa0lPTWFzdGVyUG9ydERlZmF1bHQsIG1hdGNoRGljdGlvbmFyeSwgJmVu
dHJ5SXRlcmF0b3IpICE9CisgICAgICAgIGtJT1JldHVyblN1Y2Nlc3MpCisgICAgeworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaW9fcmVnaXN0cnlfZW50cnlfdCBlbnRyeSA9
IElPX09CSkVDVF9OVUxMOworCisgICAgd2hpbGUgKChlbnRyeSA9IElPSXRlcmF0b3JOZXh0KGVu
dHJ5SXRlcmF0b3IpKSAhPSBJT19PQkpFQ1RfTlVMTCkKKyAgICB7CisgICAgICAgIGNvbnN0ZXhw
ciB1aW50MzJfdCBrQ2xhc3NDb2RlRGlzcGxheVZHQSA9IDB4MzAwMDA7CisgICAgICAgIHVpbnQz
Ml90IGNsYXNzQ29kZTsKKyAgICAgICAgR1BVRGV2aWNlSW5mbyBpbmZvOworCisgICAgICAgIGlm
IChHZXRFbnRyeVByb3BlcnR5KGVudHJ5LCBDRlNUUigiY2xhc3MtY29kZSIpLCAmY2xhc3NDb2Rl
KSAmJgorICAgICAgICAgICAgY2xhc3NDb2RlID09IGtDbGFzc0NvZGVEaXNwbGF5VkdBICYmCisg
ICAgICAgICAgICBHZXRFbnRyeVByb3BlcnR5KGVudHJ5LCBDRlNUUigidmVuZG9yLWlkIiksICZp
bmZvLnZlbmRvcklkKSAmJgorICAgICAgICAgICAgR2V0RW50cnlQcm9wZXJ0eShlbnRyeSwgQ0ZT
VFIoImRldmljZS1pZCIpLCAmaW5mby5kZXZpY2VJZCkpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGRldmljZXMtPnB1c2hfYmFjayhpbmZvKTsKKyAgICAgICAgfQorCisgICAgICAgIElPT2JqZWN0
UmVsZWFzZShlbnRyeSk7CisgICAgfQorICAgIElPT2JqZWN0UmVsZWFzZShlbnRyeUl0ZXJhdG9y
KTsKKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFNldEFjdGl2ZUdQVUluZGV4KFN5c3Rl
bUluZm8gKmluZm8pCit7CisgICAgVmVuZG9ySUQgYWN0aXZlVmVuZG9yOworICAgIERldmljZUlE
IGFjdGl2ZURldmljZTsKKworICAgIHVpbnQ2NF90IGdwdUlEID0gR2V0R3B1SURGcm9tRGlzcGxh
eUlEKGtDR0RpcmVjdE1haW5EaXNwbGF5KTsKKworICAgIGlmIChncHVJRCA9PSAwKQorICAgICAg
ICByZXR1cm47CisKKyAgICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIG1hdGNoRGljdGlvbmFyeSA9
IElPUmVnaXN0cnlFbnRyeUlETWF0Y2hpbmcoZ3B1SUQpOworICAgIGlvX3NlcnZpY2VfdCBncHVF
bnRyeSA9IElPU2VydmljZUdldE1hdGNoaW5nU2VydmljZShrSU9NYXN0ZXJQb3J0RGVmYXVsdCwg
bWF0Y2hEaWN0aW9uYXJ5KTsKKworICAgIGlmIChncHVFbnRyeSA9PSBJT19PQkpFQ1RfTlVMTCkK
KyAgICB7CisgICAgICAgIElPT2JqZWN0UmVsZWFzZShncHVFbnRyeSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBpZiAoIShHZXRFbnRyeVByb3BlcnR5KGdwdUVudHJ5LCBDRlNUUigi
dmVuZG9yLWlkIiksICZhY3RpdmVWZW5kb3IpICYmCisgICAgICAgICAgR2V0RW50cnlQcm9wZXJ0
eShncHVFbnRyeSwgQ0ZTVFIoImRldmljZS1pZCIpLCAmYWN0aXZlRGV2aWNlKSkpCisgICAgewor
ICAgICAgICBJT09iamVjdFJlbGVhc2UoZ3B1RW50cnkpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgSU9PYmplY3RSZWxlYXNlKGdwdUVudHJ5KTsKKworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgaW5mby0+Z3B1cy5zaXplKCk7ICsraSkKKyAgICB7CisgICAgICAgIGlmIChpbmZv
LT5ncHVzW2ldLnZlbmRvcklkID09IGFjdGl2ZVZlbmRvciAmJiBpbmZvLT5ncHVzW2ldLmRldmlj
ZUlkID09IGFjdGl2ZURldmljZSkKKyAgICAgICAgeworICAgICAgICAgICAgaW5mby0+YWN0aXZl
R1BVSW5kZXggPSBzdGF0aWNfY2FzdDxpbnQ+KGkpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICB9Cit9CisKK30gIC8vIGFub255bW91cyBuYW1lc3BhY2UKKworYm9vbCBHZXRT
eXN0ZW1JbmZvKFN5c3RlbUluZm8gKmluZm8pCit7CisgICAgeworICAgICAgICBpbnQzMl90IG1h
am9yID0gMDsKKyAgICAgICAgaW50MzJfdCBtaW5vciA9IDA7CisgICAgICAgIFBhcnNlTWFjTWFj
aGluZU1vZGVsKEdldE1hY2hpbmVNb2RlbCgpLCAmaW5mby0+bWFjaGluZU1vZGVsTmFtZSwgJm1h
am9yLCAmbWlub3IpOworICAgICAgICBpbmZvLT5tYWNoaW5lTW9kZWxWZXJzaW9uID0gc3RkOjp0
b19zdHJpbmcobWFqb3IpICsgIi4iICsgc3RkOjp0b19zdHJpbmcobWlub3IpOworICAgIH0KKwor
ICAgIGlmICghR2V0UENJRGV2aWNlcygmKGluZm8tPmdwdXMpKSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoaW5mby0+Z3B1cy5lbXB0eSgpKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIENhbGwgdGhlIGdlbmVyaWMg
R2V0RHVhbEdQVUluZm8gZnVuY3Rpb24gdG8gaW5pdGlhbGl6ZSBpbmZvIGZpZWxkcworICAgIC8v
IHN1Y2ggYXMgaXNPcHRpbXVzLCBpc0FNRFN3aXRjaGFibGUsIGFuZCB0aGUgYWN0aXZlR1BVSW5k
ZXgKKyAgICBHZXREdWFsR1BVSW5mbyhpbmZvKTsKKworICAgIC8vIFRoZW4gb3ZlcnJpZGUgdGhl
IGFjdGl2ZUdQVUluZGV4IGZpZWxkIG9mIGluZm8gdG8gcmVmbGVjdCB0aGUgY3VycmVudAorICAg
IC8vIEdQVSBpbnN0ZWFkIG9mIHRoZSBub24taW50ZWwgR1BVCisgICAgLy8gVE9ETyhkaW5vKTog
VXNlIHN5c2N0bCB0byBkZXRlY3QgT1MgdmVyc2lvbi4KKyAgICAvLyAgICBpZiAoQGF2YWlsYWJs
ZShtYWNPUyAxMC4xMywgKikpCisgICAgU2V0QWN0aXZlR1BVSW5kZXgoaW5mbyk7CisKKyAgICAv
LyBGaWd1cmUgb3V0IHdoZXRoZXIgdGhpcyBpcyBhIGR1YWwtR1BVIHN5c3RlbS4KKyAgICAvLwor
ICAgIC8vIFRPRE8oa2JyKTogdGhpcyBjb2RlIHdhcyBwb3J0ZWQgb3ZlciBmcm9tIENocm9taXVt
LCBhbmQgaXRzIGNvcnJlY3RuZXNzCisgICAgLy8gY291bGQgYmUgaW1wcm92ZWQgLSBuZWVkIHRv
IHVzZSBNYWMtc3BlY2lmaWMgQVBJcyB0byBkZXRlcm1pbmUgd2hldGhlcgorICAgIC8vIG9mZmxp
bmUgcmVuZGVyZXJzIGFyZSBhbGxvd2VkLCBhbmQgd2hldGhlciB0aGVzZSB0d28gR1BVcyBhcmUg
cmVhbGx5IHRoZQorICAgIC8vIGludGVncmF0ZWQvZGlzY3JldGUgR1BVcyBpbiBhIGxhcHRvcC4K
KyAgICBpZiAoaW5mby0+Z3B1cy5zaXplKCkgPT0gMiAmJgorICAgICAgICAoKElzSW50ZWwoaW5m
by0+Z3B1c1swXS52ZW5kb3JJZCkgJiYgIUlzSW50ZWwoaW5mby0+Z3B1c1sxXS52ZW5kb3JJZCkp
IHx8CisgICAgICAgICAoIUlzSW50ZWwoaW5mby0+Z3B1c1swXS52ZW5kb3JJZCkgJiYgSXNJbnRl
bChpbmZvLT5ncHVzWzFdLnZlbmRvcklkKSkpKQorICAgIHsKKyAgICAgICAgaW5mby0+aXNNYWNT
d2l0Y2hhYmxlID0gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAgLy8g
bmFtZXNwYWNlIGFuZ2xlCisKKyNlbmRpZiAgLy8gVEFSR0VUX09TX09TWAorI2VuZGlmICAvLyBf
X0FQUExFX18KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9ncHVfaW5m
b191dGlsL1N5c3RlbUluZm9fbWFjLm1tIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2dw
dV9pbmZvX3V0aWwvU3lzdGVtSW5mb19tYWMubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDg3MjhkM2U3NzBiNzFkZTZhMjcxZjQ2ODI4YWRlYTBmYzYxMDg0Y2UuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2dwdV9pbmZvX3V0aWwvU3lzdGVtSW5mb19tYWMubW0KKysrIC9kZXYvbnVsbApAQCAt
MSwyNDUgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAyMDE3IFRoZSBBTkdMRSBQcm9qZWN0IEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotLy8gU3lzdGVtSW5mb19tYWMuY3BwOiBpbXBsZW1l
bnRhdGlvbiBvZiB0aGUgTWFjLXNwZWNpZmljIHBhcnRzIG9mIFN5c3RlbUluZm8uaAotCi0jaWYg
X19oYXNfaW5jbHVkZSg8Q29jb2EvQ29jb2EuaD4pCi0KLSMgICAgaW5jbHVkZSAiZ3B1X2luZm9f
dXRpbC9TeXN0ZW1JbmZvX2ludGVybmFsLmgiCi0KLSMgICAgaW1wb3J0IDxDb2NvYS9Db2NvYS5o
PgotIyAgICBpbXBvcnQgPElPS2l0L0lPS2l0TGliLmg+Ci0KLW5hbWVzcGFjZSBhbmdsZQotewot
Ci1uYW1lc3BhY2UKLXsKLQotdXNpbmcgUGxhdGZvcm1EaXNwbGF5SUQgPSB1aW50MzJfdDsKLQot
Y29uc3RleHByIENHTFJlbmRlcmVyUHJvcGVydHkga0NHTFJQUmVnaXN0cnlJRExvdyAgPSBzdGF0
aWNfY2FzdDxDR0xSZW5kZXJlclByb3BlcnR5PigxNDApOwotY29uc3RleHByIENHTFJlbmRlcmVy
UHJvcGVydHkga0NHTFJQUmVnaXN0cnlJREhpZ2ggPSBzdGF0aWNfY2FzdDxDR0xSZW5kZXJlclBy
b3BlcnR5PigxNDEpOwotCi0vLyBDb2RlIGZyb20gV2ViS2l0IHRvIGdldCB0aGUgYWN0aXZlIEdQ
VSdzIElEIGdpdmVuIGEgZGlzcGxheSBJRC4KLXVpbnQ2NF90IEdldEdwdUlERnJvbURpc3BsYXlJ
RChQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCi17Ci0gICAgR0x1aW50IGRpc3BsYXlNYXNr
ICAgICAgICAgICAgICA9IENHRGlzcGxheUlEVG9PcGVuR0xEaXNwbGF5TWFzayhkaXNwbGF5SUQp
OwotICAgIEdMaW50IG51bVJlbmRlcmVycyAgICAgICAgICAgICAgPSAwOwotICAgIENHTFJlbmRl
cmVySW5mb09iaiByZW5kZXJlckluZm8gPSBudWxscHRyOwotICAgIENHTEVycm9yIGVycm9yID0g
Q0dMUXVlcnlSZW5kZXJlckluZm8oZGlzcGxheU1hc2ssICZyZW5kZXJlckluZm8sICZudW1SZW5k
ZXJlcnMpOwotICAgIGlmICghbnVtUmVuZGVyZXJzIHx8ICFyZW5kZXJlckluZm8gfHwgZXJyb3Ig
IT0ga0NHTE5vRXJyb3IpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgLy8gVGhlIDB0aCByZW5k
ZXJlciBzaG91bGQgbm90IGJlIHRoZSBzb2Z0d2FyZSByZW5kZXJlci4KLSAgICBHTGludCBpc0Fj
Y2VsZXJhdGVkOwotICAgIGVycm9yID0gQ0dMRGVzY3JpYmVSZW5kZXJlcihyZW5kZXJlckluZm8s
IDAsIGtDR0xSUEFjY2VsZXJhdGVkLCAmaXNBY2NlbGVyYXRlZCk7Ci0gICAgaWYgKCFpc0FjY2Vs
ZXJhdGVkIHx8IGVycm9yICE9IGtDR0xOb0Vycm9yKQotICAgIHsKLSAgICAgICAgQ0dMRGVzdHJv
eVJlbmRlcmVySW5mbyhyZW5kZXJlckluZm8pOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0K
LSAgICBHTGludCBncHVJRExvdyAgPSAwOwotICAgIEdMaW50IGdwdUlESGlnaCA9IDA7Ci0KLSAg
ICBlcnJvciA9IENHTERlc2NyaWJlUmVuZGVyZXIocmVuZGVyZXJJbmZvLCAwLCBrQ0dMUlBSZWdp
c3RyeUlETG93LCAmZ3B1SURMb3cpOwotCi0gICAgaWYgKGVycm9yICE9IGtDR0xOb0Vycm9yIHx8
IGdwdUlETG93IDwgMCkKLSAgICB7Ci0gICAgICAgIENHTERlc3Ryb3lSZW5kZXJlckluZm8ocmVu
ZGVyZXJJbmZvKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgZXJyb3IgPSBDR0xE
ZXNjcmliZVJlbmRlcmVyKHJlbmRlcmVySW5mbywgMCwga0NHTFJQUmVnaXN0cnlJREhpZ2gsICZn
cHVJREhpZ2gpOwotICAgIGlmIChlcnJvciAhPSBrQ0dMTm9FcnJvciB8fCBncHVJREhpZ2ggPCAw
KQotICAgIHsKLSAgICAgICAgQ0dMRGVzdHJveVJlbmRlcmVySW5mbyhyZW5kZXJlckluZm8pOwot
ICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBDR0xEZXN0cm95UmVuZGVyZXJJbmZvKHJl
bmRlcmVySW5mbyk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ2NF90PihncHVJREhpZ2gp
IDw8IDMyIHwgZ3B1SURMb3c7Ci19Ci0KLXN0ZDo6c3RyaW5nIEdldE1hY2hpbmVNb2RlbCgpCi17
Ci0gICAgaW9fc2VydmljZV90IHBsYXRmb3JtRXhwZXJ0ID0gSU9TZXJ2aWNlR2V0TWF0Y2hpbmdT
ZXJ2aWNlKAotICAgICAgICBrSU9NYXN0ZXJQb3J0RGVmYXVsdCwgSU9TZXJ2aWNlTWF0Y2hpbmco
IklPUGxhdGZvcm1FeHBlcnREZXZpY2UiKSk7Ci0KLSAgICBpZiAocGxhdGZvcm1FeHBlcnQgPT0g
SU9fT0JKRUNUX05VTEwpCi0gICAgewotICAgICAgICByZXR1cm4gIiI7Ci0gICAgfQotCi0gICAg
Q0ZEYXRhUmVmIG1vZGVsRGF0YSA9IHN0YXRpY19jYXN0PENGRGF0YVJlZj4oCi0gICAgICAgIElP
UmVnaXN0cnlFbnRyeUNyZWF0ZUNGUHJvcGVydHkocGxhdGZvcm1FeHBlcnQsIENGU1RSKCJtb2Rl
bCIpLCBrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwKSk7Ci0gICAgaWYgKG1vZGVsRGF0YSA9PSBudWxs
cHRyKQotICAgIHsKLSAgICAgICAgSU9PYmplY3RSZWxlYXNlKHBsYXRmb3JtRXhwZXJ0KTsKLSAg
ICAgICAgcmV0dXJuICIiOwotICAgIH0KLQotICAgIHN0ZDo6c3RyaW5nIHJlc3VsdCA9IHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhciAqPihDRkRhdGFHZXRCeXRlUHRyKG1vZGVsRGF0YSkpOwot
Ci0gICAgSU9PYmplY3RSZWxlYXNlKHBsYXRmb3JtRXhwZXJ0KTsKLSAgICBDRlJlbGVhc2UobW9k
ZWxEYXRhKTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8vIEV4dHJhY3RzIG9uZSBpbnRl
Z2VyIHByb3BlcnR5IGZyb20gYSByZWdpc3RyeSBlbnRyeS4KLWJvb2wgR2V0RW50cnlQcm9wZXJ0
eShpb19yZWdpc3RyeV9lbnRyeV90IGVudHJ5LCBDRlN0cmluZ1JlZiBuYW1lLCB1aW50MzJfdCAq
dmFsdWUpCi17Ci0gICAgKnZhbHVlID0gMDsKLQotICAgIENGRGF0YVJlZiBkYXRhID0gc3RhdGlj
X2Nhc3Q8Q0ZEYXRhUmVmPigKLSAgICAgICAgSU9SZWdpc3RyeUVudHJ5U2VhcmNoQ0ZQcm9wZXJ0
eShlbnRyeSwga0lPU2VydmljZVBsYW5lLCBuYW1lLCBrQ0ZBbGxvY2F0b3JEZWZhdWx0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtJT1JlZ2lzdHJ5SXRlcmF0ZVJl
Y3Vyc2l2ZWx5IHwga0lPUmVnaXN0cnlJdGVyYXRlUGFyZW50cykpOwotCi0gICAgaWYgKGRhdGEg
PT0gbnVsbHB0cikKLSAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBj
b25zdCB1aW50MzJfdCAqdmFsdWVQdHIgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90
ICo+KENGRGF0YUdldEJ5dGVQdHIoZGF0YSkpOwotCi0gICAgaWYgKHZhbHVlUHRyID09IG51bGxw
dHIpCi0gICAgewotICAgICAgICBDRlJlbGVhc2UoZGF0YSk7Ci0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICB9Ci0KLSAgICAqdmFsdWUgPSAqdmFsdWVQdHI7Ci0gICAgQ0ZSZWxlYXNlKGRhdGEp
OwotICAgIHJldHVybiB0cnVlOwotfQotCi0vLyBHYXRoZXJzIHRoZSB2ZW5kb3IgYW5kIGRldmlj
ZSBJRHMgZm9yIHRoZSBQQ0kgR1BVcwotYm9vbCBHZXRQQ0lEZXZpY2VzKHN0ZDo6dmVjdG9yPEdQ
VURldmljZUluZm8+ICpkZXZpY2VzKQotewotICAgIC8vIG1hdGNoRGljdGlvbmFyeSB3aWxsIGJl
IGNvbnN1bWVkIGJ5IElPU2VydmljZUdldE1hdGNoaW5nU2VydmljZXMsIG5vIG5lZWQgdG8gcmVs
ZWFzZSBpdC4KLSAgICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIG1hdGNoRGljdGlvbmFyeSA9IElP
U2VydmljZU1hdGNoaW5nKCJJT1BDSURldmljZSIpOwotCi0gICAgaW9faXRlcmF0b3JfdCBlbnRy
eUl0ZXJhdG9yOwotICAgIGlmIChJT1NlcnZpY2VHZXRNYXRjaGluZ1NlcnZpY2VzKGtJT01hc3Rl
clBvcnREZWZhdWx0LCBtYXRjaERpY3Rpb25hcnksICZlbnRyeUl0ZXJhdG9yKSAhPQotICAgICAg
ICBrSU9SZXR1cm5TdWNjZXNzKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LQotICAgIGlvX3JlZ2lzdHJ5X2VudHJ5X3QgZW50cnkgPSBJT19PQkpFQ1RfTlVMTDsKLQotICAg
IHdoaWxlICgoZW50cnkgPSBJT0l0ZXJhdG9yTmV4dChlbnRyeUl0ZXJhdG9yKSkgIT0gSU9fT0JK
RUNUX05VTEwpCi0gICAgewotICAgICAgICBjb25zdGV4cHIgdWludDMyX3Qga0NsYXNzQ29kZURp
c3BsYXlWR0EgPSAweDMwMDAwOwotICAgICAgICB1aW50MzJfdCBjbGFzc0NvZGU7Ci0gICAgICAg
IEdQVURldmljZUluZm8gaW5mbzsKLQotICAgICAgICBpZiAoR2V0RW50cnlQcm9wZXJ0eShlbnRy
eSwgQ0ZTVFIoImNsYXNzLWNvZGUiKSwgJmNsYXNzQ29kZSkgJiYKLSAgICAgICAgICAgIGNsYXNz
Q29kZSA9PSBrQ2xhc3NDb2RlRGlzcGxheVZHQSAmJgotICAgICAgICAgICAgR2V0RW50cnlQcm9w
ZXJ0eShlbnRyeSwgQ0ZTVFIoInZlbmRvci1pZCIpLCAmaW5mby52ZW5kb3JJZCkgJiYKLSAgICAg
ICAgICAgIEdldEVudHJ5UHJvcGVydHkoZW50cnksIENGU1RSKCJkZXZpY2UtaWQiKSwgJmluZm8u
ZGV2aWNlSWQpKQotICAgICAgICB7Ci0gICAgICAgICAgICBkZXZpY2VzLT5wdXNoX2JhY2soaW5m
byk7Ci0gICAgICAgIH0KLQotICAgICAgICBJT09iamVjdFJlbGVhc2UoZW50cnkpOwotICAgIH0K
LSAgICBJT09iamVjdFJlbGVhc2UoZW50cnlJdGVyYXRvcik7Ci0KLSAgICByZXR1cm4gdHJ1ZTsK
LX0KLQotdm9pZCBTZXRBY3RpdmVHUFVJbmRleChTeXN0ZW1JbmZvICppbmZvKQotewotICAgIFZl
bmRvcklEIGFjdGl2ZVZlbmRvcjsKLSAgICBEZXZpY2VJRCBhY3RpdmVEZXZpY2U7Ci0KLSAgICB1
aW50NjRfdCBncHVJRCA9IEdldEdwdUlERnJvbURpc3BsYXlJRChrQ0dEaXJlY3RNYWluRGlzcGxh
eSk7Ci0KLSAgICBpZiAoZ3B1SUQgPT0gMCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQ0ZNdXRh
YmxlRGljdGlvbmFyeVJlZiBtYXRjaERpY3Rpb25hcnkgPSBJT1JlZ2lzdHJ5RW50cnlJRE1hdGNo
aW5nKGdwdUlEKTsKLSAgICBpb19zZXJ2aWNlX3QgZ3B1RW50cnkgPSBJT1NlcnZpY2VHZXRNYXRj
aGluZ1NlcnZpY2Uoa0lPTWFzdGVyUG9ydERlZmF1bHQsIG1hdGNoRGljdGlvbmFyeSk7Ci0KLSAg
ICBpZiAoZ3B1RW50cnkgPT0gSU9fT0JKRUNUX05VTEwpCi0gICAgewotICAgICAgICBJT09iamVj
dFJlbGVhc2UoZ3B1RW50cnkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCEo
R2V0RW50cnlQcm9wZXJ0eShncHVFbnRyeSwgQ0ZTVFIoInZlbmRvci1pZCIpLCAmYWN0aXZlVmVu
ZG9yKSAmJgotICAgICAgICAgIEdldEVudHJ5UHJvcGVydHkoZ3B1RW50cnksIENGU1RSKCJkZXZp
Y2UtaWQiKSwgJmFjdGl2ZURldmljZSkpKQotICAgIHsKLSAgICAgICAgSU9PYmplY3RSZWxlYXNl
KGdwdUVudHJ5KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIElPT2JqZWN0UmVsZWFz
ZShncHVFbnRyeSk7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGluZm8tPmdwdXMuc2l6
ZSgpOyArK2kpCi0gICAgewotICAgICAgICBpZiAoaW5mby0+Z3B1c1tpXS52ZW5kb3JJZCA9PSBh
Y3RpdmVWZW5kb3IgJiYgaW5mby0+Z3B1c1tpXS5kZXZpY2VJZCA9PSBhY3RpdmVEZXZpY2UpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGluZm8tPmFjdGl2ZUdQVUluZGV4ID0gc3RhdGljX2Nhc3Q8
aW50PihpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotfQotCi19ICAv
LyBhbm9ueW1vdXMgbmFtZXNwYWNlCi0KLWJvb2wgR2V0U3lzdGVtSW5mbyhTeXN0ZW1JbmZvICpp
bmZvKQotewotICAgIHsKLSAgICAgICAgaW50MzJfdCBtYWpvciA9IDA7Ci0gICAgICAgIGludDMy
X3QgbWlub3IgPSAwOwotICAgICAgICBQYXJzZU1hY01hY2hpbmVNb2RlbChHZXRNYWNoaW5lTW9k
ZWwoKSwgJmluZm8tPm1hY2hpbmVNb2RlbE5hbWUsICZtYWpvciwgJm1pbm9yKTsKLSAgICAgICAg
aW5mby0+bWFjaGluZU1vZGVsVmVyc2lvbiA9IHN0ZDo6dG9fc3RyaW5nKG1ham9yKSArICIuIiAr
IHN0ZDo6dG9fc3RyaW5nKG1pbm9yKTsKLSAgICB9Ci0KLSAgICBpZiAoIUdldFBDSURldmljZXMo
JihpbmZvLT5ncHVzKSkpCi0gICAgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0g
ICAgaWYgKGluZm8tPmdwdXMuZW1wdHkoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9Ci0KLSAgICAvLyBDYWxsIHRoZSBnZW5lcmljIEdldER1YWxHUFVJbmZvIGZ1bmN0aW9u
IHRvIGluaXRpYWxpemUgaW5mbyBmaWVsZHMKLSAgICAvLyBzdWNoIGFzIGlzT3B0aW11cywgaXNB
TURTd2l0Y2hhYmxlLCBhbmQgdGhlIGFjdGl2ZUdQVUluZGV4Ci0gICAgR2V0RHVhbEdQVUluZm8o
aW5mbyk7Ci0KLSAgICAvLyBUaGVuIG92ZXJyaWRlIHRoZSBhY3RpdmVHUFVJbmRleCBmaWVsZCBv
ZiBpbmZvIHRvIHJlZmxlY3QgdGhlIGN1cnJlbnQKLSAgICAvLyBHUFUgaW5zdGVhZCBvZiB0aGUg
bm9uLWludGVsIEdQVQotICAgIGlmIChAYXZhaWxhYmxlKG1hY09TIDEwLjEzLCAqKSkKLSAgICB7
Ci0gICAgICAgIFNldEFjdGl2ZUdQVUluZGV4KGluZm8pOwotICAgIH0KLQotICAgIC8vIEZpZ3Vy
ZSBvdXQgd2hldGhlciB0aGlzIGlzIGEgZHVhbC1HUFUgc3lzdGVtLgotICAgIC8vCi0gICAgLy8g
VE9ETyhrYnIpOiB0aGlzIGNvZGUgd2FzIHBvcnRlZCBvdmVyIGZyb20gQ2hyb21pdW0sIGFuZCBp
dHMgY29ycmVjdG5lc3MKLSAgICAvLyBjb3VsZCBiZSBpbXByb3ZlZCAtIG5lZWQgdG8gdXNlIE1h
Yy1zcGVjaWZpYyBBUElzIHRvIGRldGVybWluZSB3aGV0aGVyCi0gICAgLy8gb2ZmbGluZSByZW5k
ZXJlcnMgYXJlIGFsbG93ZWQsIGFuZCB3aGV0aGVyIHRoZXNlIHR3byBHUFVzIGFyZSByZWFsbHkg
dGhlCi0gICAgLy8gaW50ZWdyYXRlZC9kaXNjcmV0ZSBHUFVzIGluIGEgbGFwdG9wLgotICAgIGlm
IChpbmZvLT5ncHVzLnNpemUoKSA9PSAyICYmCi0gICAgICAgICgoSXNJbnRlbChpbmZvLT5ncHVz
WzBdLnZlbmRvcklkKSAmJiAhSXNJbnRlbChpbmZvLT5ncHVzWzFdLnZlbmRvcklkKSkgfHwKLSAg
ICAgICAgICghSXNJbnRlbChpbmZvLT5ncHVzWzBdLnZlbmRvcklkKSAmJiBJc0ludGVsKGluZm8t
PmdwdXNbMV0udmVuZG9ySWQpKSkpCi0gICAgewotICAgICAgICBpbmZvLT5pc01hY1N3aXRjaGFi
bGUgPSB0cnVlOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi19ICAvLyBuYW1lc3Bh
Y2UgYW5nbGUKLQotI2VuZGlmICAvLyBfX2hhc19pbmNsdWRlKDxDb2NvYS9Db2NvYS5oPikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9n
bC9jZ2wvRGV2aWNlQ0dMLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9nbC9jZ2wvRGV2aWNlQ0dMLmNwcAppbmRleCAxY2RkZDI5ZjUzZTVlOWY3ZmJi
MWVjMjNhM2Q1YmI2NzEyNmIxYjcyLi45MzNjZmY3NDMxMThiMWFiYmVkNGNhNWY2MTNjNzFmMGY2
YjIzNmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZ2wvY2dsL0RldmljZUNHTC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9EZXZpY2VDR0wuY3BwCkBAIC02LDEyICs2
LDE1IEBACiAKIC8vIERldmljZUNHTC5jcHA6IENHTCBpbXBsZW1lbnRhdGlvbiBvZiBlZ2w6OkRl
dmljZQogCi0jaWYgX19oYXNfaW5jbHVkZSg8Q29jb2EvQ29jb2EuaD4pCisjaWYgZGVmaW5lZChf
X0FQUExFX18pCisjaW5jbHVkZSA8VGFyZ2V0Q29uZGl0aW9uYWxzLmg+CisjaWYgVEFSR0VUX09T
X09TWAogCi0jICAgIGluY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9EZXZpY2VDR0wu
aCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvRGV2aWNlQ0dMLmgiCiAKLSMg
ICAgaW5jbHVkZSA8RUdML2VnbGV4dC5oPgotIyAgICBpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJl
ci9nbC9jZ2wvRGlzcGxheUNHTC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL2Nn
bC9EaXNwbGF5Q0dMLmgiCisKKyNpbmNsdWRlIDxFR0wvZWdsZXh0Lmg+CiAKIG5hbWVzcGFjZSBy
eAogewpAQCAtNTYsNCArNTksNSBAQCB2b2lkIERldmljZUNHTDo6Z2VuZXJhdGVFeHRlbnNpb25z
KGVnbDo6RGV2aWNlRXh0ZW5zaW9ucyAqb3V0RXh0ZW5zaW9ucykgY29uc3QKIAogfSAgLy8gbmFt
ZXNwYWNlIHJ4CiAKLSNlbmRpZiAgLy8gX19oYXNfaW5jbHVkZSg8Q29jb2EvQ29jb2EuaD4pCisj
ZW5kaWYgIC8vIFRBUkdFVF9PU19PU1gKKyNlbmRpZiAgLy8gX19BUFBMRV9fCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL0Rp
c3BsYXlDR0wubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZ2wvY2dsL0Rpc3BsYXlDR0wubW0KaW5kZXggN2JhMGY4YzMwN2E2ODY3ZTk2ODgwMTYyMTVk
ZmIwMGNkMzMxODU0NS4uZmVjOWFmMjljYmI1ZWNlYjFlNjgxZDk0NzFmZjIyYTc4ZDlhZjU3OSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2dsL2NnbC9EaXNwbGF5Q0dMLm1tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvRGlzcGxheUNHTC5tbQpAQCAtNCwyNSArNCwyOCBAQAog
Ly8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCiAKLS8vIERpc3BsYXlDR0wubW06IENH
TCBpbXBsZW1lbnRhdGlvbiBvZiBlZ2w6OkRpc3BsYXkKKy8vIERpc3BsYXlDR0wuY3BwOiBDR0wg
aW1wbGVtZW50YXRpb24gb2YgZWdsOjpEaXNwbGF5CiAKLSNpZiBfX2hhc19pbmNsdWRlKDxDb2Nv
YS9Db2NvYS5oPikKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpbmNsdWRlIDxUYXJnZXRDb25k
aXRpb25hbHMuaD4KKyNpZiBUQVJHRVRfT1NfT1NYCiAKLSMgICAgaW5jbHVkZSAibGliQU5HTEUv
cmVuZGVyZXIvZ2wvY2dsL0Rpc3BsYXlDR0wuaCIKKyNpbXBvcnQgImxpYkFOR0xFL3JlbmRlcmVy
L2dsL2NnbC9EaXNwbGF5Q0dMLmgiCiAKLSMgICAgaW1wb3J0IDxDb2NvYS9Db2NvYS5oPgotIyAg
ICBpbmNsdWRlIDxFR0wvZWdsZXh0Lmg+Ci0jICAgIGluY2x1ZGUgPGRsZmNuLmg+CisjaW1wb3J0
ICJjb21tb24vZGVidWcuaCIKKyNpbXBvcnQgImdwdV9pbmZvX3V0aWwvU3lzdGVtSW5mby5oIgor
I2ltcG9ydCAibGliQU5HTEUvRGlzcGxheS5oIgorI2ltcG9ydCAibGliQU5HTEUvcmVuZGVyZXIv
Z2wvY2dsL0NvbnRleHRDR0wuaCIKKyNpbXBvcnQgImxpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9E
ZXZpY2VDR0wuaCIKKyNpbXBvcnQgImxpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9JT1N1cmZhY2VT
dXJmYWNlQ0dMLmgiCisjaW1wb3J0ICJsaWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvUGJ1ZmZlclN1
cmZhY2VDR0wuaCIKKyNpbXBvcnQgImxpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9SZW5kZXJlckNH
TC5oIgorI2ltcG9ydCAibGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL1dpbmRvd1N1cmZhY2VDR0wu
aCIKIAotIyAgICBpbmNsdWRlICJjb21tb24vZGVidWcuaCIKLSMgICAgaW5jbHVkZSAiZ3B1X2lu
Zm9fdXRpbC9TeXN0ZW1JbmZvLmgiCi0jICAgIGluY2x1ZGUgImxpYkFOR0xFL0Rpc3BsYXkuaCIK
LSMgICAgaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL0NvbnRleHRDR0wuaCIKLSMg
ICAgaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL0RldmljZUNHTC5oIgotIyAgICBp
bmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvSU9TdXJmYWNlU3VyZmFjZUNHTC5oIgot
IyAgICBpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvUGJ1ZmZlclN1cmZhY2VDR0wu
aCIKLSMgICAgaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL1JlbmRlcmVyQ0dMLmgi
Ci0jICAgIGluY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9XaW5kb3dTdXJmYWNlQ0dM
LmgiCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPE9wZW5HTC9P
cGVuR0wuaD4KKyNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgorI2ltcG9ydCA8ZGxm
Y24uaD4KIAogbmFtZXNwYWNlCiB7CkBAIC00NDYsNCArNDQ5LDUgQEAgdm9pZCBEaXNwbGF5Q0dM
Ojpwb3B1bGF0ZUZlYXR1cmVMaXN0KGFuZ2xlOjpGZWF0dXJlTGlzdCAqZmVhdHVyZXMpCiB9CiB9
CiAKLSNlbmRpZiAgLy8gX19oYXNfaW5jbHVkZSg8Q29jb2EvQ29jb2EuaD4pCisjZW5kaWYgIC8v
IFRBUkdFVF9PU19PU1gKKyNlbmRpZiAgLy8gX19BUFBMRV9fCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL0lPU3VyZmFjZVN1
cmZhY2VDR0wuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2dsL2NnbC9JT1N1cmZhY2VTdXJmYWNlQ0dMLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NjM2OTAzYjUy
MjYyMjJkZmFmNTRlNWI0YmY3NmU0ZWEzZDRhYjU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9JT1N1cmZhY2VT
dXJmYWNlQ0dMLmNwcApAQCAtMCwwICsxLDMzOSBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE1IFRo
ZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gUEJ1ZmZlclN1
cmZhY2VDR0wuY3BwOiBhbiBpbXBsZW1lbnRhdGlvbiBvZiBQQnVmZmVycyBjcmVhdGVkIGZyb20g
SU9TdXJmYWNlcyB1c2luZworLy8gICAgICAgICAgICAgICAgICAgICAgICBFR0xfQU5HTEVfaW9z
dXJmYWNlX2NsaWVudF9idWZmZXIKKworI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2luY2x1ZGUg
PFRhcmdldENvbmRpdGlvbmFscy5oPgorI2lmIFRBUkdFVF9PU19PU1gKKworI2luY2x1ZGUgImxp
YkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9JT1N1cmZhY2VTdXJmYWNlQ0dMLmgiCisKKyNpbmNsdWRl
ICJjb21tb24vZGVidWcuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9BdHRyaWJ1dGVNYXAuaCIKKyNp
bmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9CbGl0R0wuaCIKKyNpbmNsdWRlICJsaWJBTkdM
RS9yZW5kZXJlci9nbC9GcmFtZWJ1ZmZlckdMLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVy
ZXIvZ2wvRnVuY3Rpb25zR0wuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9SZW5k
ZXJlckdMLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvU3RhdGVNYW5hZ2VyR0wu
aCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9UZXh0dXJlR0wuaCIKKyNpbmNsdWRl
ICJsaWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvRGlzcGxheUNHTC5oIgorCisjaW5jbHVkZSA8SU9T
dXJmYWNlL0lPU3VyZmFjZS5oPgorI2luY2x1ZGUgPE9wZW5HTC9PcGVuR0wuaD4KKyNpbmNsdWRl
IDxPcGVuR0wvQ0dMSU9TdXJmYWNlLmg+CisKK25hbWVzcGFjZSByeAoreworCituYW1lc3BhY2UK
K3sKKworc3RydWN0IElPU3VyZmFjZUZvcm1hdEluZm8KK3sKKyAgICBHTGVudW0gaW50ZXJuYWxG
b3JtYXQ7CisgICAgR0xlbnVtIHR5cGU7CisKKyAgICBzaXplX3QgY29tcG9uZW50Qnl0ZXM7CisK
KyAgICBHTGVudW0gbmF0aXZlSW50ZXJuYWxGb3JtYXQ7CisgICAgR0xlbnVtIG5hdGl2ZUZvcm1h
dDsKKyAgICBHTGVudW0gbmF0aXZlVHlwZTsKK307CisKKy8vIGNsYW5nLWZvcm1hdCBvZmYKK3N0
YXRpYyBjb25zdCBJT1N1cmZhY2VGb3JtYXRJbmZvIGtJT1N1cmZhY2VGb3JtYXRzW10gPSB7Cisg
ICAge0dMX1JFRCwgICAgICBHTF9VTlNJR05FRF9CWVRFLCAgMSwgR0xfUkVELCAgR0xfUkVELCAg
R0xfVU5TSUdORURfQllURSAgICAgICAgICAgfSwKKyAgICB7R0xfUjE2VUksICAgIEdMX1VOU0lH
TkVEX1NIT1JULCAyLCBHTF9SRUQsICBHTF9SRUQsICBHTF9VTlNJR05FRF9TSE9SVCAgICAgICAg
ICB9LAorICAgIHtHTF9SRywgICAgICAgR0xfVU5TSUdORURfQllURSwgIDIsIEdMX1JHLCAgIEdM
X1JHLCAgIEdMX1VOU0lHTkVEX0JZVEUgICAgICAgICAgIH0sCisgICAge0dMX1JHQiwgICAgICBH
TF9VTlNJR05FRF9CWVRFLCAgNCwgR0xfQkdSQSwgR0xfUkdCQSwgR0xfVU5TSUdORURfSU5UXzhf
OF84XzhfUkVWfSwKKyAgICB7R0xfQkdSQV9FWFQsIEdMX1VOU0lHTkVEX0JZVEUsICA0LCBHTF9C
R1JBLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9JTlRfOF84XzhfOF9SRVZ9LAorICAgIHtHTF9SR0JB
LCAgICAgR0xfSEFMRl9GTE9BVCwgICAgIDgsIEdMX1JHQkEsIEdMX1JHQkEsIEdMX0hBTEZfRkxP
QVQgICAgICAgICAgICAgIH0sCit9OworLy8gY2xhbmctZm9ybWF0IG9uCisKK2ludCBGaW5kSU9T
dXJmYWNlRm9ybWF0SW5kZXgoR0xlbnVtIGludGVybmFsRm9ybWF0LCBHTGVudW0gdHlwZSkKK3sK
KyAgICBmb3IgKGludCBpID0gMDsgaSA8IHN0YXRpY19jYXN0PGludD4oQXJyYXlTaXplKGtJT1N1
cmZhY2VGb3JtYXRzKSk7ICsraSkKKyAgICB7CisgICAgICAgIGNvbnN0IGF1dG8gJmZvcm1hdElu
Zm8gPSBrSU9TdXJmYWNlRm9ybWF0c1tpXTsKKyAgICAgICAgaWYgKGZvcm1hdEluZm8uaW50ZXJu
YWxGb3JtYXQgPT0gaW50ZXJuYWxGb3JtYXQgJiYgZm9ybWF0SW5mby50eXBlID09IHR5cGUpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBpOworICAgICAgICB9CisgICAgfQorICAgIHJl
dHVybiAtMTsKK30KKworfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorCitJT1N1cmZhY2VTdXJm
YWNlQ0dMOjpJT1N1cmZhY2VTdXJmYWNlQ0dMKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0dMQ29udGV4dE9i
aiBjZ2xDb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBF
R0xDbGllbnRCdWZmZXIgYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykKKyAgICA6IFN1cmZhY2VH
TChzdGF0ZSksCisgICAgICBtQ0dMQ29udGV4dChjZ2xDb250ZXh0KSwKKyAgICAgIG1JT1N1cmZh
Y2UobnVsbHB0ciksCisgICAgICBtV2lkdGgoMCksCisgICAgICBtSGVpZ2h0KDApLAorICAgICAg
bVBsYW5lKDApLAorICAgICAgbUZvcm1hdEluZGV4KC0xKSwKKyAgICAgIG1BbHBoYUluaXRpYWxp
emVkKGZhbHNlKQoreworICAgIC8vIEtlZXAgcmVmZXJlbmNlIHRvIHRoZSBJT1N1cmZhY2Ugc28g
aXQgZG9lc24ndCBnZXQgZGVsZXRlZCB3aGlsZSB0aGUgcGJ1ZmZlciBleGlzdHMuCisgICAgbUlP
U3VyZmFjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8SU9TdXJmYWNlUmVmPihidWZmZXIpOworICAgIENG
UmV0YWluKG1JT1N1cmZhY2UpOworCisgICAgLy8gRXh0cmFjdCBhdHRyaWJzIHVzZWZ1bCBmb3Ig
dGhlIGNhbGwgdG8gQ0dMVGV4SW1hZ2VJT1N1cmZhY2UyRAorICAgIG1XaWR0aCAgPSBzdGF0aWNf
Y2FzdDxpbnQ+KGF0dHJpYnMuZ2V0KEVHTF9XSURUSCkpOworICAgIG1IZWlnaHQgPSBzdGF0aWNf
Y2FzdDxpbnQ+KGF0dHJpYnMuZ2V0KEVHTF9IRUlHSFQpKTsKKyAgICBtUGxhbmUgID0gc3RhdGlj
X2Nhc3Q8aW50PihhdHRyaWJzLmdldChFR0xfSU9TVVJGQUNFX1BMQU5FX0FOR0xFKSk7CisKKyAg
ICBFR0xBdHRyaWIgaW50ZXJuYWxGb3JtYXQgPSBhdHRyaWJzLmdldChFR0xfVEVYVFVSRV9JTlRF
Uk5BTF9GT1JNQVRfQU5HTEUpOworICAgIEVHTEF0dHJpYiB0eXBlICAgICAgICAgICA9IGF0dHJp
YnMuZ2V0KEVHTF9URVhUVVJFX1RZUEVfQU5HTEUpOworICAgIG1Gb3JtYXRJbmRleCA9CisgICAg
ICAgIEZpbmRJT1N1cmZhY2VGb3JtYXRJbmRleChzdGF0aWNfY2FzdDxHTGVudW0+KGludGVybmFs
Rm9ybWF0KSwgc3RhdGljX2Nhc3Q8R0xlbnVtPih0eXBlKSk7CisgICAgQVNTRVJUKG1Gb3JtYXRJ
bmRleCA+PSAwKTsKKworICAgIG1BbHBoYUluaXRpYWxpemVkID0gIWhhc0VtdWxhdGVkQWxwaGFD
aGFubmVsKCk7Cit9CisKK0lPU3VyZmFjZVN1cmZhY2VDR0w6On5JT1N1cmZhY2VTdXJmYWNlQ0dM
KCkKK3sKKyAgICBpZiAobUlPU3VyZmFjZSAhPSBudWxscHRyKQorICAgIHsKKyAgICAgICAgQ0ZS
ZWxlYXNlKG1JT1N1cmZhY2UpOworICAgICAgICBtSU9TdXJmYWNlID0gbnVsbHB0cjsKKyAgICB9
Cit9CisKK2VnbDo6RXJyb3IgSU9TdXJmYWNlU3VyZmFjZUNHTDo6aW5pdGlhbGl6ZShjb25zdCBl
Z2w6OkRpc3BsYXkgKmRpc3BsYXkpCit7CisgICAgcmV0dXJuIGVnbDo6Tm9FcnJvcigpOworfQor
CitlZ2w6OkVycm9yIElPU3VyZmFjZVN1cmZhY2VDR0w6Om1ha2VDdXJyZW50KGNvbnN0IGdsOjpD
b250ZXh0ICpjb250ZXh0KQoreworICAgIHJldHVybiBlZ2w6Ok5vRXJyb3IoKTsKK30KKworZWds
OjpFcnJvciBJT1N1cmZhY2VTdXJmYWNlQ0dMOjp1bk1ha2VDdXJyZW50KGNvbnN0IGdsOjpDb250
ZXh0ICpjb250ZXh0KQoreworICAgIEdldEZ1bmN0aW9uc0dMKGNvbnRleHQpLT5mbHVzaCgpOwor
ICAgIHJldHVybiBlZ2w6Ok5vRXJyb3IoKTsKK30KKworZWdsOjpFcnJvciBJT1N1cmZhY2VTdXJm
YWNlQ0dMOjpzd2FwKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0KQoreworICAgIHJldHVybiBl
Z2w6Ok5vRXJyb3IoKTsKK30KKworZWdsOjpFcnJvciBJT1N1cmZhY2VTdXJmYWNlQ0dMOjpwb3N0
U3ViQnVmZmVyKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCB4LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCB5LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCB3aWR0aCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgaGVpZ2h0KQoreworICAgIFVO
UkVBQ0hBQkxFKCk7CisgICAgcmV0dXJuIGVnbDo6Tm9FcnJvcigpOworfQorCitlZ2w6OkVycm9y
IElPU3VyZmFjZVN1cmZhY2VDR0w6OnF1ZXJ5U3VyZmFjZVBvaW50ZXJBTkdMRShFR0xpbnQgYXR0
cmlidXRlLCB2b2lkICoqdmFsdWUpCit7CisgICAgVU5SRUFDSEFCTEUoKTsKKyAgICByZXR1cm4g
ZWdsOjpOb0Vycm9yKCk7Cit9CisKK2VnbDo6RXJyb3IgSU9TdXJmYWNlU3VyZmFjZUNHTDo6Ymlu
ZFRleEltYWdlKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OlRleHR1cmUgKnRleHR1cmUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgYnVmZmVyKQorewor
ICAgIFN0YXRlTWFuYWdlckdMICpzdGF0ZU1hbmFnZXIgPSBHZXRTdGF0ZU1hbmFnZXJHTChjb250
ZXh0KTsKKworICAgIGNvbnN0IFRleHR1cmVHTCAqdGV4dHVyZUdMID0gR2V0SW1wbEFzPFRleHR1
cmVHTD4odGV4dHVyZSk7CisgICAgR0x1aW50IHRleHR1cmVJRCAgICAgICAgICAgPSB0ZXh0dXJl
R0wtPmdldFRleHR1cmVJRCgpOworICAgIHN0YXRlTWFuYWdlci0+YmluZFRleHR1cmUoZ2w6OlRl
eHR1cmVUeXBlOjpSZWN0YW5nbGUsIHRleHR1cmVJRCk7CisKKyAgICBjb25zdCBhdXRvICZmb3Jt
YXQgPSBrSU9TdXJmYWNlRm9ybWF0c1ttRm9ybWF0SW5kZXhdOworICAgIENHTEVycm9yIGVycm9y
ID0gQ0dMVGV4SW1hZ2VJT1N1cmZhY2UyRChtQ0dMQ29udGV4dCwgR0xfVEVYVFVSRV9SRUNUQU5H
TEUsIGZvcm1hdC5uYXRpdmVGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1XaWR0aCwgbUhlaWdodCwgZm9ybWF0Lm5hdGl2ZUludGVybmFsRm9ybWF0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQubmF0
aXZlVHlwZSwgbUlPU3VyZmFjZSwgbVBsYW5lKTsKKworICAgIGlmIChlcnJvciAhPSBrQ0dMTm9F
cnJvcikKKyAgICB7CisgICAgICAgIHJldHVybiBlZ2w6OkVnbENvbnRleHRMb3N0KCkgPDwgIkNH
TFRleEltYWdlSU9TdXJmYWNlMkQgZmFpbGVkOiAiIDw8IENHTEVycm9yU3RyaW5nKGVycm9yKTsK
KyAgICB9CisKKyAgICBpZiAoSXNFcnJvcihpbml0aWFsaXplQWxwaGFDaGFubmVsKGNvbnRleHQs
IHRleHR1cmVJRCkpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6RWdsQ29udGV4dExvc3Qo
KSA8PCAiRmFpbGVkIHRvIGluaXRpYWxpemUgSU9TdXJmYWNlIGFscGhhIGNoYW5uZWwuIjsKKyAg
ICB9CisKKyAgICByZXR1cm4gZWdsOjpOb0Vycm9yKCk7Cit9CisKK2VnbDo6RXJyb3IgSU9TdXJm
YWNlU3VyZmFjZUNHTDo6cmVsZWFzZVRleEltYWdlKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0
LCBFR0xpbnQgYnVmZmVyKQoreworICAgIGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMgPSBH
ZXRGdW5jdGlvbnNHTChjb250ZXh0KTsKKyAgICBmdW5jdGlvbnMtPmZsdXNoKCk7CisgICAgcmV0
dXJuIGVnbDo6Tm9FcnJvcigpOworfQorCit2b2lkIElPU3VyZmFjZVN1cmZhY2VDR0w6OnNldFN3
YXBJbnRlcnZhbChFR0xpbnQgaW50ZXJ2YWwpCit7CisgICAgVU5SRUFDSEFCTEUoKTsKK30KKwor
RUdMaW50IElPU3VyZmFjZVN1cmZhY2VDR0w6OmdldFdpZHRoKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbVdpZHRoOworfQorCitFR0xpbnQgSU9TdXJmYWNlU3VyZmFjZUNHTDo6Z2V0SGVpZ2h0KCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbUhlaWdodDsKK30KKworRUdMaW50IElPU3VyZmFjZVN1cmZh
Y2VDR0w6OmlzUG9zdFN1YkJ1ZmZlclN1cHBvcnRlZCgpIGNvbnN0Cit7CisgICAgVU5SRUFDSEFC
TEUoKTsKKyAgICByZXR1cm4gRUdMX0ZBTFNFOworfQorCitFR0xpbnQgSU9TdXJmYWNlU3VyZmFj
ZUNHTDo6Z2V0U3dhcEJlaGF2aW9yKCkgY29uc3QKK3sKKyAgICAvLyBOL0EgYmVjYXVzZSB5b3Ug
Y2FuJ3QgTWFrZUN1cnJlbnQgYW4gSU9TdXJmYWNlLCByZXR1cm4gYW55IHZhbGlkIHZhbHVlLgor
ICAgIHJldHVybiBFR0xfQlVGRkVSX1BSRVNFUlZFRDsKK30KKworLy8gc3RhdGljCitib29sIElP
U3VyZmFjZVN1cmZhY2VDR0w6OnZhbGlkYXRlQXR0cmlidXRlcyhFR0xDbGllbnRCdWZmZXIgYnVm
ZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
ZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCit7CisgICAgSU9TdXJmYWNlUmVmIGlvU3VyZmFj
ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8SU9TdXJmYWNlUmVmPihidWZmZXIpOworCisgICAgLy8gVGhl
IHBsYW5lIG11c3QgZXhpc3QgZm9yIHRoaXMgSU9TdXJmYWNlLiBJT1N1cmZhY2VHZXRQbGFuZUNv
dW50IGNhbiByZXR1cm4gMCBmb3Igbm9uLXBsYW5hcgorICAgIC8vIGlvU3VyZmFjZXMgYnV0IHdl
IHdpbGwgdHJlYXQgbm9uLXBsYW5hciBsaWtlIGl0IGlzIGEgc2luZ2xlIHBsYW5lLgorICAgIHNp
emVfdCBzdXJmYWNlUGxhbmVDb3VudCA9IHN0ZDo6bWF4KHNpemVfdCgxKSwgSU9TdXJmYWNlR2V0
UGxhbmVDb3VudChpb1N1cmZhY2UpKTsKKyAgICBFR0xBdHRyaWIgcGxhbmUgICAgICAgICAgPSBh
dHRyaWJzLmdldChFR0xfSU9TVVJGQUNFX1BMQU5FX0FOR0xFKTsKKyAgICBpZiAocGxhbmUgPCAw
IHx8IHN0YXRpY19jYXN0PHNpemVfdD4ocGxhbmUpID49IHN1cmZhY2VQbGFuZUNvdW50KQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIFRoZSB3aWR0aCBoZWln
aHQgc3BlY2lmaWVkIG11c3QgYmUgYXQgbGVhc3QgKDEsIDEpIGFuZCBhdCBtb3N0IHRoZSBwbGFu
ZSBzaXplCisgICAgRUdMQXR0cmliIHdpZHRoICA9IGF0dHJpYnMuZ2V0KEVHTF9XSURUSCk7Cisg
ICAgRUdMQXR0cmliIGhlaWdodCA9IGF0dHJpYnMuZ2V0KEVHTF9IRUlHSFQpOworICAgIGlmICh3
aWR0aCA8PSAwIHx8IHN0YXRpY19jYXN0PHNpemVfdD4od2lkdGgpID4gSU9TdXJmYWNlR2V0V2lk
dGhPZlBsYW5lKGlvU3VyZmFjZSwgcGxhbmUpIHx8CisgICAgICAgIGhlaWdodCA8PSAwIHx8IHN0
YXRpY19jYXN0PHNpemVfdD4oaGVpZ2h0KSA+IElPU3VyZmFjZUdldEhlaWdodE9mUGxhbmUoaW9T
dXJmYWNlLCBwbGFuZSkpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgLy8gRmluZCB0aGlzIElPU3VyZmFjZSBmb3JtYXQKKyAgICBFR0xBdHRyaWIgaW50ZXJuYWxG
b3JtYXQgPSBhdHRyaWJzLmdldChFR0xfVEVYVFVSRV9JTlRFUk5BTF9GT1JNQVRfQU5HTEUpOwor
ICAgIEVHTEF0dHJpYiB0eXBlICAgICAgICAgICA9IGF0dHJpYnMuZ2V0KEVHTF9URVhUVVJFX1RZ
UEVfQU5HTEUpOworCisgICAgaW50IGZvcm1hdEluZGV4ID0KKyAgICAgICAgRmluZElPU3VyZmFj
ZUZvcm1hdEluZGV4KHN0YXRpY19jYXN0PEdMZW51bT4oaW50ZXJuYWxGb3JtYXQpLCBzdGF0aWNf
Y2FzdDxHTGVudW0+KHR5cGUpKTsKKworICAgIGlmIChmb3JtYXRJbmRleCA8IDApCisgICAgewor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gQ2hlY2sgdGhhdCB0aGUgZm9y
bWF0IG1hdGNoZXMgdGhpcyBJT1N1cmZhY2UgcGxhbmUKKyAgICBpZiAoSU9TdXJmYWNlR2V0Qnl0
ZXNQZXJFbGVtZW50T2ZQbGFuZShpb1N1cmZhY2UsIHBsYW5lKSAhPQorICAgICAgICBrSU9TdXJm
YWNlRm9ybWF0c1tmb3JtYXRJbmRleF0uY29tcG9uZW50Qnl0ZXMpCisgICAgeworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKKy8vIFdyYXBzIGEg
RnJhbWVidWZmZXJHTCB0byBob29rIHRoZSBkZXN0cm95IGZ1bmN0aW9uIHRvIGRlbGV0ZSB0aGUg
dGV4dHVyZSBhc3NvY2lhdGVkIHdpdGggdGhlCisvLyBmcmFtZWJ1ZmZlci4KK2NsYXNzIElPU3Vy
ZmFjZUZyYW1lYnVmZmVyIDogcHVibGljIEZyYW1lYnVmZmVyR0wKK3sKKyAgcHVibGljOgorICAg
IElPU3VyZmFjZUZyYW1lYnVmZmVyKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlclN0YXRlICZkYXRhLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpZCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgdGV4dHVyZUlkLAorICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNE
ZWZhdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZW11bGF0ZWRBbHBoYSkKKyAg
ICAgICAgOiBGcmFtZWJ1ZmZlckdMKGRhdGEsIGlkLCBpc0RlZmF1bHQsIGVtdWxhdGVkQWxwaGEp
LCBtVGV4dHVyZUlkKHRleHR1cmVJZCkKKyAgICB7fQorICAgIHZvaWQgZGVzdHJveShjb25zdCBn
bDo6Q29udGV4dCAqY29udGV4dCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIEdldEZ1bmN0aW9u
c0dMKGNvbnRleHQpLT5kZWxldGVUZXh0dXJlcygxLCAmbVRleHR1cmVJZCk7CisgICAgICAgIEZy
YW1lYnVmZmVyR0w6OmRlc3Ryb3koY29udGV4dCk7CisgICAgfQorCisgIHByaXZhdGU6CisgICAg
R0x1aW50IG1UZXh0dXJlSWQ7Cit9OworCitGcmFtZWJ1ZmZlckltcGwgKklPU3VyZmFjZVN1cmZh
Y2VDR0w6OmNyZWF0ZURlZmF1bHRGcmFtZWJ1ZmZlcihjb25zdCBnbDo6Q29udGV4dCAqY29udGV4
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlclN0YXRlICZzdGF0ZSkKK3sKKyAgICBjb25z
dCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25zID0gR2V0RnVuY3Rpb25zR0woY29udGV4dCk7CisgICAg
U3RhdGVNYW5hZ2VyR0wgKnN0YXRlTWFuYWdlciA9IEdldFN0YXRlTWFuYWdlckdMKGNvbnRleHQp
OworCisgICAgR0x1aW50IHRleHR1cmUgPSAwOworICAgIGZ1bmN0aW9ucy0+Z2VuVGV4dHVyZXMo
MSwgJnRleHR1cmUpOworICAgIGNvbnN0IGF1dG8gJmZvcm1hdCA9IGtJT1N1cmZhY2VGb3JtYXRz
W21Gb3JtYXRJbmRleF07CisgICAgc3RhdGVNYW5hZ2VyLT5iaW5kVGV4dHVyZShnbDo6VGV4dHVy
ZVR5cGU6OlJlY3RhbmdsZSwgdGV4dHVyZSk7CisgICAgQ0dMRXJyb3IgZXJyb3IgPSBDR0xUZXhJ
bWFnZUlPU3VyZmFjZTJEKG1DR0xDb250ZXh0LCBHTF9URVhUVVJFX1JFQ1RBTkdMRSwgZm9ybWF0
Lm5hdGl2ZUZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbVdpZHRoLCBtSGVpZ2h0LCBmb3JtYXQubmF0aXZlSW50ZXJuYWxGb3JtYXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdC5uYXRpdmVUeXBlLCBt
SU9TdXJmYWNlLCBtUGxhbmUpOworICAgIGlmIChlcnJvciAhPSBrQ0dMTm9FcnJvcikKKyAgICB7
CisgICAgICAgIEVSUigpIDw8ICJDR0xUZXhJbWFnZUlPU3VyZmFjZTJEIGZhaWxlZDogIiA8PCBD
R0xFcnJvclN0cmluZyhlcnJvcik7CisgICAgfQorICAgIEFTU0VSVChlcnJvciA9PSBrQ0dMTm9F
cnJvcik7CisKKyAgICBpZiAoSXNFcnJvcihpbml0aWFsaXplQWxwaGFDaGFubmVsKGNvbnRleHQs
IHRleHR1cmUpKSkKKyAgICB7CisgICAgICAgIEVSUigpIDw8ICJGYWlsZWQgdG8gaW5pdGlhbGl6
ZSBJT1N1cmZhY2UgYWxwaGEgY2hhbm5lbC4iOworICAgIH0KKworICAgIEdMdWludCBmcmFtZWJ1
ZmZlciA9IDA7CisgICAgZnVuY3Rpb25zLT5nZW5GcmFtZWJ1ZmZlcnMoMSwgJmZyYW1lYnVmZmVy
KTsKKyAgICBzdGF0ZU1hbmFnZXItPmJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgZnJh
bWVidWZmZXIpOworICAgIHN0YXRlTWFuYWdlci0+YmluZFRleHR1cmUoZ2w6OlRleHR1cmVUeXBl
OjpSZWN0YW5nbGUsIHRleHR1cmUpOworICAgIGZ1bmN0aW9ucy0+ZnJhbWVidWZmZXJUZXh0dXJl
MkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFX1JFQ1RB
TkdMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHR1cmUsIDApOwor
CisgICAgcmV0dXJuIG5ldyBJT1N1cmZhY2VGcmFtZWJ1ZmZlcihzdGF0ZSwgZnJhbWVidWZmZXIs
IHRleHR1cmUsIHRydWUsIGhhc0VtdWxhdGVkQWxwaGFDaGFubmVsKCkpOworfQorCithbmdsZTo6
UmVzdWx0IElPU3VyZmFjZVN1cmZhY2VDR0w6OmluaXRpYWxpemVBbHBoYUNoYW5uZWwoY29uc3Qg
Z2w6OkNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHRleHR1cmUpCit7CisgICAgaWYgKG1BbHBo
YUluaXRpYWxpemVkKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRp
bnVlOworICAgIH0KKworICAgIEJsaXRHTCAqYmxpdHRlciA9IEdldEJsaXRHTChjb250ZXh0KTsK
KyAgICBBTkdMRV9UUlkoYmxpdHRlci0+Y2xlYXJSZW5kZXJhYmxlVGV4dHVyZUFscGhhVG9PbmUo
Y29udGV4dCwgdGV4dHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2w6OlRleHR1cmVUYXJnZXQ6OlJlY3RhbmdsZSwgMCkpOworICAg
IG1BbHBoYUluaXRpYWxpemVkID0gdHJ1ZTsKKyAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29u
dGludWU7Cit9CisKK2Jvb2wgSU9TdXJmYWNlU3VyZmFjZUNHTDo6aGFzRW11bGF0ZWRBbHBoYUNo
YW5uZWwoKSBjb25zdAoreworICAgIGNvbnN0IGF1dG8gJmZvcm1hdCA9IGtJT1N1cmZhY2VGb3Jt
YXRzW21Gb3JtYXRJbmRleF07CisgICAgcmV0dXJuIGZvcm1hdC5pbnRlcm5hbEZvcm1hdCA9PSBH
TF9SR0I7Cit9CisKK30gIC8vIG5hbWVzcGFjZSByeAorCisjZW5kaWYgIC8vIFRBUkdFVF9PU19P
U1gKKyNlbmRpZiAgLy8gX19BUFBMRV9fCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL0lPU3VyZmFjZVN1cmZhY2VDR0wubW0g
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL0lP
U3VyZmFjZVN1cmZhY2VDR0wubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzYTBh
M2Y1YjFiOGJhOWYyMmE3Njg1Mzk4MTRiN2IzMTM5YzhiYWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9JT1N1cmZhY2VTdXJmYWNlQ0dMLm1tCisrKyAvZGV2L251
bGwKQEAgLTEsMzM2ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJv
amVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8g
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLS8vIFBCdWZmZXJTdXJmYWNlQ0dMLmNw
cDogYW4gaW1wbGVtZW50YXRpb24gb2YgUEJ1ZmZlcnMgY3JlYXRlZCBmcm9tIElPU3VyZmFjZXMg
dXNpbmcKLS8vICAgICAgICAgICAgICAgICAgICAgICAgRUdMX0FOR0xFX2lvc3VyZmFjZV9jbGll
bnRfYnVmZmVyCi0KLSNpZiBfX2hhc19pbmNsdWRlKDxDb2NvYS9Db2NvYS5oPikKLQotIyAgICBp
bmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvSU9TdXJmYWNlU3VyZmFjZUNHTC5oIgot
Ci0jICAgIGltcG9ydCA8Q29jb2EvQ29jb2EuaD4KLSMgICAgaW5jbHVkZSA8SU9TdXJmYWNlL0lP
U3VyZmFjZS5oPgotIyAgICBpbmNsdWRlIDxPcGVuR0wvQ0dMSU9TdXJmYWNlLmg+Ci0KLSMgICAg
aW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCi0jICAgIGluY2x1ZGUgImxpYkFOR0xFL0F0dHJpYnV0
ZU1hcC5oIgotIyAgICBpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9CbGl0R0wuaCIKLSMg
ICAgaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvRnJhbWVidWZmZXJHTC5oIgotIyAgICBp
bmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9GdW5jdGlvbnNHTC5oIgotIyAgICBpbmNsdWRl
ICJsaWJBTkdMRS9yZW5kZXJlci9nbC9SZW5kZXJlckdMLmgiCi0jICAgIGluY2x1ZGUgImxpYkFO
R0xFL3JlbmRlcmVyL2dsL1N0YXRlTWFuYWdlckdMLmgiCi0jICAgIGluY2x1ZGUgImxpYkFOR0xF
L3JlbmRlcmVyL2dsL1RleHR1cmVHTC5oIgotIyAgICBpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJl
ci9nbC9jZ2wvRGlzcGxheUNHTC5oIgotCi1uYW1lc3BhY2UgcngKLXsKLQotbmFtZXNwYWNlCi17
Ci0KLXN0cnVjdCBJT1N1cmZhY2VGb3JtYXRJbmZvCi17Ci0gICAgR0xlbnVtIGludGVybmFsRm9y
bWF0OwotICAgIEdMZW51bSB0eXBlOwotCi0gICAgc2l6ZV90IGNvbXBvbmVudEJ5dGVzOwotCi0g
ICAgR0xlbnVtIG5hdGl2ZUludGVybmFsRm9ybWF0OwotICAgIEdMZW51bSBuYXRpdmVGb3JtYXQ7
Ci0gICAgR0xlbnVtIG5hdGl2ZVR5cGU7Ci19OwotCi0vLyBjbGFuZy1mb3JtYXQgb2ZmCi1zdGF0
aWMgY29uc3QgSU9TdXJmYWNlRm9ybWF0SW5mbyBrSU9TdXJmYWNlRm9ybWF0c1tdID0gewotICAg
IHtHTF9SRUQsICAgICAgR0xfVU5TSUdORURfQllURSwgIDEsIEdMX1JFRCwgIEdMX1JFRCwgIEdM
X1VOU0lHTkVEX0JZVEUgICAgICAgICAgIH0sCi0gICAge0dMX1IxNlVJLCAgICBHTF9VTlNJR05F
RF9TSE9SVCwgMiwgR0xfUkVELCAgR0xfUkVELCAgR0xfVU5TSUdORURfU0hPUlQgICAgICAgICAg
fSwKLSAgICB7R0xfUkcsICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsICAyLCBHTF9SRywgICBHTF9S
RywgICBHTF9VTlNJR05FRF9CWVRFICAgICAgICAgICB9LAotICAgIHtHTF9SR0IsICAgICAgR0xf
VU5TSUdORURfQllURSwgIDQsIEdMX0JHUkEsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0lOVF84Xzhf
OF84X1JFVn0sCi0gICAge0dMX0JHUkFfRVhULCBHTF9VTlNJR05FRF9CWVRFLCAgNCwgR0xfQkdS
QSwgR0xfUkdCQSwgR0xfVU5TSUdORURfSU5UXzhfOF84XzhfUkVWfSwKLSAgICB7R0xfUkdCQSwg
ICAgIEdMX0hBTEZfRkxPQVQsICAgICA4LCBHTF9SR0JBLCBHTF9SR0JBLCBHTF9IQUxGX0ZMT0FU
ICAgICAgICAgICAgICB9LAotfTsKLS8vIGNsYW5nLWZvcm1hdCBvbgotCi1pbnQgRmluZElPU3Vy
ZmFjZUZvcm1hdEluZGV4KEdMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0xlbnVtIHR5cGUpCi17Ci0g
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzdGF0aWNfY2FzdDxpbnQ+KEFycmF5U2l6ZShrSU9TdXJm
YWNlRm9ybWF0cykpOyArK2kpCi0gICAgewotICAgICAgICBjb25zdCBhdXRvICZmb3JtYXRJbmZv
ID0ga0lPU3VyZmFjZUZvcm1hdHNbaV07Ci0gICAgICAgIGlmIChmb3JtYXRJbmZvLmludGVybmFs
Rm9ybWF0ID09IGludGVybmFsRm9ybWF0ICYmIGZvcm1hdEluZm8udHlwZSA9PSB0eXBlKQotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1
cm4gLTE7Ci19Ci0KLX0gIC8vIGFub255bW91cyBuYW1lc3BhY2UKLQotSU9TdXJmYWNlU3VyZmFj
ZUNHTDo6SU9TdXJmYWNlU3VyZmFjZUNHTChjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENHTENvbnRleHRPYmog
Y2dsQ29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdM
Q2xpZW50QnVmZmVyIGJ1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCi0gICAgOiBTdXJmYWNlR0wo
c3RhdGUpLAotICAgICAgbUNHTENvbnRleHQoY2dsQ29udGV4dCksCi0gICAgICBtSU9TdXJmYWNl
KG51bGxwdHIpLAotICAgICAgbVdpZHRoKDApLAotICAgICAgbUhlaWdodCgwKSwKLSAgICAgIG1Q
bGFuZSgwKSwKLSAgICAgIG1Gb3JtYXRJbmRleCgtMSksCi0gICAgICBtQWxwaGFJbml0aWFsaXpl
ZChmYWxzZSkKLXsKLSAgICAvLyBLZWVwIHJlZmVyZW5jZSB0byB0aGUgSU9TdXJmYWNlIHNvIGl0
IGRvZXNuJ3QgZ2V0IGRlbGV0ZWQgd2hpbGUgdGhlIHBidWZmZXIgZXhpc3RzLgotICAgIG1JT1N1
cmZhY2UgPSByZWludGVycHJldF9jYXN0PElPU3VyZmFjZVJlZj4oYnVmZmVyKTsKLSAgICBDRlJl
dGFpbihtSU9TdXJmYWNlKTsKLQotICAgIC8vIEV4dHJhY3QgYXR0cmlicyB1c2VmdWwgZm9yIHRo
ZSBjYWxsIHRvIENHTFRleEltYWdlSU9TdXJmYWNlMkQKLSAgICBtV2lkdGggID0gc3RhdGljX2Nh
c3Q8aW50PihhdHRyaWJzLmdldChFR0xfV0lEVEgpKTsKLSAgICBtSGVpZ2h0ID0gc3RhdGljX2Nh
c3Q8aW50PihhdHRyaWJzLmdldChFR0xfSEVJR0hUKSk7Ci0gICAgbVBsYW5lICA9IHN0YXRpY19j
YXN0PGludD4oYXR0cmlicy5nZXQoRUdMX0lPU1VSRkFDRV9QTEFORV9BTkdMRSkpOwotCi0gICAg
RUdMQXR0cmliIGludGVybmFsRm9ybWF0ID0gYXR0cmlicy5nZXQoRUdMX1RFWFRVUkVfSU5URVJO
QUxfRk9STUFUX0FOR0xFKTsKLSAgICBFR0xBdHRyaWIgdHlwZSAgICAgICAgICAgPSBhdHRyaWJz
LmdldChFR0xfVEVYVFVSRV9UWVBFX0FOR0xFKTsKLSAgICBtRm9ybWF0SW5kZXggPQotICAgICAg
ICBGaW5kSU9TdXJmYWNlRm9ybWF0SW5kZXgoc3RhdGljX2Nhc3Q8R0xlbnVtPihpbnRlcm5hbEZv
cm1hdCksIHN0YXRpY19jYXN0PEdMZW51bT4odHlwZSkpOwotICAgIEFTU0VSVChtRm9ybWF0SW5k
ZXggPj0gMCk7Ci0KLSAgICBtQWxwaGFJbml0aWFsaXplZCA9ICFoYXNFbXVsYXRlZEFscGhhQ2hh
bm5lbCgpOwotfQotCi1JT1N1cmZhY2VTdXJmYWNlQ0dMOjp+SU9TdXJmYWNlU3VyZmFjZUNHTCgp
Ci17Ci0gICAgaWYgKG1JT1N1cmZhY2UgIT0gbnVsbHB0cikKLSAgICB7Ci0gICAgICAgIENGUmVs
ZWFzZShtSU9TdXJmYWNlKTsKLSAgICAgICAgbUlPU3VyZmFjZSA9IG51bGxwdHI7Ci0gICAgfQot
fQotCi1lZ2w6OkVycm9yIElPU3VyZmFjZVN1cmZhY2VDR0w6OmluaXRpYWxpemUoY29uc3QgZWds
OjpEaXNwbGF5ICpkaXNwbGF5KQotewotICAgIHJldHVybiBlZ2w6Ok5vRXJyb3IoKTsKLX0KLQot
ZWdsOjpFcnJvciBJT1N1cmZhY2VTdXJmYWNlQ0dMOjptYWtlQ3VycmVudChjb25zdCBnbDo6Q29u
dGV4dCAqY29udGV4dCkKLXsKLSAgICByZXR1cm4gZWdsOjpOb0Vycm9yKCk7Ci19Ci0KLWVnbDo6
RXJyb3IgSU9TdXJmYWNlU3VyZmFjZUNHTDo6dW5NYWtlQ3VycmVudChjb25zdCBnbDo6Q29udGV4
dCAqY29udGV4dCkKLXsKLSAgICBHZXRGdW5jdGlvbnNHTChjb250ZXh0KS0+Zmx1c2goKTsKLSAg
ICByZXR1cm4gZWdsOjpOb0Vycm9yKCk7Ci19Ci0KLWVnbDo6RXJyb3IgSU9TdXJmYWNlU3VyZmFj
ZUNHTDo6c3dhcChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCkKLXsKLSAgICByZXR1cm4gZWds
OjpOb0Vycm9yKCk7Ci19Ci0KLWVnbDo6RXJyb3IgSU9TdXJmYWNlU3VyZmFjZUNHTDo6cG9zdFN1
YkJ1ZmZlcihjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgeCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgeSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgd2lkdGgsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IGhlaWdodCkKLXsKLSAgICBVTlJF
QUNIQUJMRSgpOwotICAgIHJldHVybiBlZ2w6Ok5vRXJyb3IoKTsKLX0KLQotZWdsOjpFcnJvciBJ
T1N1cmZhY2VTdXJmYWNlQ0dMOjpxdWVyeVN1cmZhY2VQb2ludGVyQU5HTEUoRUdMaW50IGF0dHJp
YnV0ZSwgdm9pZCAqKnZhbHVlKQotewotICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgcmV0dXJuIGVn
bDo6Tm9FcnJvcigpOwotfQotCi1lZ2w6OkVycm9yIElPU3VyZmFjZVN1cmZhY2VDR0w6OmJpbmRU
ZXhJbWFnZShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpUZXh0dXJlICp0ZXh0dXJlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IGJ1ZmZlcikKLXsKLSAg
ICBTdGF0ZU1hbmFnZXJHTCAqc3RhdGVNYW5hZ2VyID0gR2V0U3RhdGVNYW5hZ2VyR0woY29udGV4
dCk7Ci0KLSAgICBjb25zdCBUZXh0dXJlR0wgKnRleHR1cmVHTCA9IEdldEltcGxBczxUZXh0dXJl
R0w+KHRleHR1cmUpOwotICAgIEdMdWludCB0ZXh0dXJlSUQgICAgICAgICAgID0gdGV4dHVyZUdM
LT5nZXRUZXh0dXJlSUQoKTsKLSAgICBzdGF0ZU1hbmFnZXItPmJpbmRUZXh0dXJlKGdsOjpUZXh0
dXJlVHlwZTo6UmVjdGFuZ2xlLCB0ZXh0dXJlSUQpOwotCi0gICAgY29uc3QgYXV0byAmZm9ybWF0
ID0ga0lPU3VyZmFjZUZvcm1hdHNbbUZvcm1hdEluZGV4XTsKLSAgICBDR0xFcnJvciBlcnJvciA9
IENHTFRleEltYWdlSU9TdXJmYWNlMkQobUNHTENvbnRleHQsIEdMX1RFWFRVUkVfUkVDVEFOR0xF
LCBmb3JtYXQubmF0aXZlRm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtV2lkdGgsIG1IZWlnaHQsIGZvcm1hdC5uYXRpdmVJbnRlcm5hbEZvcm1hdCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0Lm5hdGl2
ZVR5cGUsIG1JT1N1cmZhY2UsIG1QbGFuZSk7Ci0KLSAgICBpZiAoZXJyb3IgIT0ga0NHTE5vRXJy
b3IpCi0gICAgewotICAgICAgICByZXR1cm4gZWdsOjpFZ2xDb250ZXh0TG9zdCgpIDw8ICJDR0xU
ZXhJbWFnZUlPU3VyZmFjZTJEIGZhaWxlZDogIiA8PCBDR0xFcnJvclN0cmluZyhlcnJvcik7Ci0g
ICAgfQotCi0gICAgaWYgKElzRXJyb3IoaW5pdGlhbGl6ZUFscGhhQ2hhbm5lbChjb250ZXh0LCB0
ZXh0dXJlSUQpKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlZ2w6OkVnbENvbnRleHRMb3N0KCkg
PDwgIkZhaWxlZCB0byBpbml0aWFsaXplIElPU3VyZmFjZSBhbHBoYSBjaGFubmVsLiI7Ci0gICAg
fQotCi0gICAgcmV0dXJuIGVnbDo6Tm9FcnJvcigpOwotfQotCi1lZ2w6OkVycm9yIElPU3VyZmFj
ZVN1cmZhY2VDR0w6OnJlbGVhc2VUZXhJbWFnZShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwg
RUdMaW50IGJ1ZmZlcikKLXsKLSAgICBjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25zID0gR2V0
RnVuY3Rpb25zR0woY29udGV4dCk7Ci0gICAgZnVuY3Rpb25zLT5mbHVzaCgpOwotICAgIHJldHVy
biBlZ2w6Ok5vRXJyb3IoKTsKLX0KLQotdm9pZCBJT1N1cmZhY2VTdXJmYWNlQ0dMOjpzZXRTd2Fw
SW50ZXJ2YWwoRUdMaW50IGludGVydmFsKQotewotICAgIFVOUkVBQ0hBQkxFKCk7Ci19Ci0KLUVH
TGludCBJT1N1cmZhY2VTdXJmYWNlQ0dMOjpnZXRXaWR0aCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IG1XaWR0aDsKLX0KLQotRUdMaW50IElPU3VyZmFjZVN1cmZhY2VDR0w6OmdldEhlaWdodCgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG1IZWlnaHQ7Ci19Ci0KLUVHTGludCBJT1N1cmZhY2VTdXJmYWNl
Q0dMOjppc1Bvc3RTdWJCdWZmZXJTdXBwb3J0ZWQoKSBjb25zdAotewotICAgIFVOUkVBQ0hBQkxF
KCk7Ci0gICAgcmV0dXJuIEVHTF9GQUxTRTsKLX0KLQotRUdMaW50IElPU3VyZmFjZVN1cmZhY2VD
R0w6OmdldFN3YXBCZWhhdmlvcigpIGNvbnN0Ci17Ci0gICAgLy8gTi9BIGJlY2F1c2UgeW91IGNh
bid0IE1ha2VDdXJyZW50IGFuIElPU3VyZmFjZSwgcmV0dXJuIGFueSB2YWxpZCB2YWx1ZS4KLSAg
ICByZXR1cm4gRUdMX0JVRkZFUl9QUkVTRVJWRUQ7Ci19Ci0KLS8vIHN0YXRpYwotYm9vbCBJT1N1
cmZhY2VTdXJmYWNlQ0dMOjp2YWxpZGF0ZUF0dHJpYnV0ZXMoRUdMQ2xpZW50QnVmZmVyIGJ1ZmZl
ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVn
bDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKQotewotICAgIElPU3VyZmFjZVJlZiBpb1N1cmZhY2Ug
PSByZWludGVycHJldF9jYXN0PElPU3VyZmFjZVJlZj4oYnVmZmVyKTsKLQotICAgIC8vIFRoZSBw
bGFuZSBtdXN0IGV4aXN0IGZvciB0aGlzIElPU3VyZmFjZS4gSU9TdXJmYWNlR2V0UGxhbmVDb3Vu
dCBjYW4gcmV0dXJuIDAgZm9yIG5vbi1wbGFuYXIKLSAgICAvLyBpb1N1cmZhY2VzIGJ1dCB3ZSB3
aWxsIHRyZWF0IG5vbi1wbGFuYXIgbGlrZSBpdCBpcyBhIHNpbmdsZSBwbGFuZS4KLSAgICBzaXpl
X3Qgc3VyZmFjZVBsYW5lQ291bnQgPSBzdGQ6Om1heChzaXplX3QoMSksIElPU3VyZmFjZUdldFBs
YW5lQ291bnQoaW9TdXJmYWNlKSk7Ci0gICAgRUdMQXR0cmliIHBsYW5lICAgICAgICAgID0gYXR0
cmlicy5nZXQoRUdMX0lPU1VSRkFDRV9QTEFORV9BTkdMRSk7Ci0gICAgaWYgKHBsYW5lIDwgMCB8
fCBzdGF0aWNfY2FzdDxzaXplX3Q+KHBsYW5lKSA+PSBzdXJmYWNlUGxhbmVDb3VudCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICAvLyBUaGUgd2lkdGggaGVpZ2h0
IHNwZWNpZmllZCBtdXN0IGJlIGF0IGxlYXN0ICgxLCAxKSBhbmQgYXQgbW9zdCB0aGUgcGxhbmUg
c2l6ZQotICAgIEVHTEF0dHJpYiB3aWR0aCAgPSBhdHRyaWJzLmdldChFR0xfV0lEVEgpOwotICAg
IEVHTEF0dHJpYiBoZWlnaHQgPSBhdHRyaWJzLmdldChFR0xfSEVJR0hUKTsKLSAgICBpZiAod2lk
dGggPD0gMCB8fCBzdGF0aWNfY2FzdDxzaXplX3Q+KHdpZHRoKSA+IElPU3VyZmFjZUdldFdpZHRo
T2ZQbGFuZShpb1N1cmZhY2UsIHBsYW5lKSB8fAotICAgICAgICBoZWlnaHQgPD0gMCB8fCBzdGF0
aWNfY2FzdDxzaXplX3Q+KGhlaWdodCkgPiBJT1N1cmZhY2VHZXRIZWlnaHRPZlBsYW5lKGlvU3Vy
ZmFjZSwgcGxhbmUpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAg
IC8vIEZpbmQgdGhpcyBJT1N1cmZhY2UgZm9ybWF0Ci0gICAgRUdMQXR0cmliIGludGVybmFsRm9y
bWF0ID0gYXR0cmlicy5nZXQoRUdMX1RFWFRVUkVfSU5URVJOQUxfRk9STUFUX0FOR0xFKTsKLSAg
ICBFR0xBdHRyaWIgdHlwZSAgICAgICAgICAgPSBhdHRyaWJzLmdldChFR0xfVEVYVFVSRV9UWVBF
X0FOR0xFKTsKLQotICAgIGludCBmb3JtYXRJbmRleCA9Ci0gICAgICAgIEZpbmRJT1N1cmZhY2VG
b3JtYXRJbmRleChzdGF0aWNfY2FzdDxHTGVudW0+KGludGVybmFsRm9ybWF0KSwgc3RhdGljX2Nh
c3Q8R0xlbnVtPih0eXBlKSk7Ci0KLSAgICBpZiAoZm9ybWF0SW5kZXggPCAwKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIC8vIENoZWNrIHRoYXQgdGhlIGZvcm1h
dCBtYXRjaGVzIHRoaXMgSU9TdXJmYWNlIHBsYW5lCi0gICAgaWYgKElPU3VyZmFjZUdldEJ5dGVz
UGVyRWxlbWVudE9mUGxhbmUoaW9TdXJmYWNlLCBwbGFuZSkgIT0KLSAgICAgICAga0lPU3VyZmFj
ZUZvcm1hdHNbZm9ybWF0SW5kZXhdLmNvbXBvbmVudEJ5dGVzKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi0vLyBXcmFwcyBhIEZy
YW1lYnVmZmVyR0wgdG8gaG9vayB0aGUgZGVzdHJveSBmdW5jdGlvbiB0byBkZWxldGUgdGhlIHRl
eHR1cmUgYXNzb2NpYXRlZCB3aXRoIHRoZQotLy8gZnJhbWVidWZmZXIuCi1jbGFzcyBJT1N1cmZh
Y2VGcmFtZWJ1ZmZlciA6IHB1YmxpYyBGcmFtZWJ1ZmZlckdMCi17Ci0gIHB1YmxpYzoKLSAgICBJ
T1N1cmZhY2VGcmFtZWJ1ZmZlcihjb25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAmZGF0YSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaWQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IHRleHR1cmVJZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzRGVm
YXVsdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGVtdWxhdGVkQWxwaGEpCi0gICAg
ICAgIDogRnJhbWVidWZmZXJHTChkYXRhLCBpZCwgaXNEZWZhdWx0LCBlbXVsYXRlZEFscGhhKSwg
bVRleHR1cmVJZCh0ZXh0dXJlSWQpCi0gICAge30KLSAgICB2b2lkIGRlc3Ryb3koY29uc3QgZ2w6
OkNvbnRleHQgKmNvbnRleHQpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBHZXRGdW5jdGlvbnNH
TChjb250ZXh0KS0+ZGVsZXRlVGV4dHVyZXMoMSwgJm1UZXh0dXJlSWQpOwotICAgICAgICBGcmFt
ZWJ1ZmZlckdMOjpkZXN0cm95KGNvbnRleHQpOwotICAgIH0KLQotICBwcml2YXRlOgotICAgIEdM
dWludCBtVGV4dHVyZUlkOwotfTsKLQotRnJhbWVidWZmZXJJbXBsICpJT1N1cmZhY2VTdXJmYWNl
Q0dMOjpjcmVhdGVEZWZhdWx0RnJhbWVidWZmZXIoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAmc3RhdGUpCi17Ci0gICAgY29uc3Qg
RnVuY3Rpb25zR0wgKmZ1bmN0aW9ucyA9IEdldEZ1bmN0aW9uc0dMKGNvbnRleHQpOwotICAgIFN0
YXRlTWFuYWdlckdMICpzdGF0ZU1hbmFnZXIgPSBHZXRTdGF0ZU1hbmFnZXJHTChjb250ZXh0KTsK
LQotICAgIEdMdWludCB0ZXh0dXJlID0gMDsKLSAgICBmdW5jdGlvbnMtPmdlblRleHR1cmVzKDEs
ICZ0ZXh0dXJlKTsKLSAgICBjb25zdCBhdXRvICZmb3JtYXQgPSBrSU9TdXJmYWNlRm9ybWF0c1tt
Rm9ybWF0SW5kZXhdOwotICAgIHN0YXRlTWFuYWdlci0+YmluZFRleHR1cmUoZ2w6OlRleHR1cmVU
eXBlOjpSZWN0YW5nbGUsIHRleHR1cmUpOwotICAgIENHTEVycm9yIGVycm9yID0gQ0dMVGV4SW1h
Z2VJT1N1cmZhY2UyRChtQ0dMQ29udGV4dCwgR0xfVEVYVFVSRV9SRUNUQU5HTEUsIGZvcm1hdC5u
YXRpdmVGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1XaWR0aCwgbUhlaWdodCwgZm9ybWF0Lm5hdGl2ZUludGVybmFsRm9ybWF0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQubmF0aXZlVHlwZSwgbUlP
U3VyZmFjZSwgbVBsYW5lKTsKLSAgICBpZiAoZXJyb3IgIT0ga0NHTE5vRXJyb3IpCi0gICAgewot
ICAgICAgICBFUlIoKSA8PCAiQ0dMVGV4SW1hZ2VJT1N1cmZhY2UyRCBmYWlsZWQ6ICIgPDwgQ0dM
RXJyb3JTdHJpbmcoZXJyb3IpOwotICAgIH0KLSAgICBBU1NFUlQoZXJyb3IgPT0ga0NHTE5vRXJy
b3IpOwotCi0gICAgaWYgKElzRXJyb3IoaW5pdGlhbGl6ZUFscGhhQ2hhbm5lbChjb250ZXh0LCB0
ZXh0dXJlKSkpCi0gICAgewotICAgICAgICBFUlIoKSA8PCAiRmFpbGVkIHRvIGluaXRpYWxpemUg
SU9TdXJmYWNlIGFscGhhIGNoYW5uZWwuIjsKLSAgICB9Ci0KLSAgICBHTHVpbnQgZnJhbWVidWZm
ZXIgPSAwOwotICAgIGZ1bmN0aW9ucy0+Z2VuRnJhbWVidWZmZXJzKDEsICZmcmFtZWJ1ZmZlcik7
Ci0gICAgc3RhdGVNYW5hZ2VyLT5iaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIGZyYW1l
YnVmZmVyKTsKLSAgICBzdGF0ZU1hbmFnZXItPmJpbmRUZXh0dXJlKGdsOjpUZXh0dXJlVHlwZTo6
UmVjdGFuZ2xlLCB0ZXh0dXJlKTsKLSAgICBmdW5jdGlvbnMtPmZyYW1lYnVmZmVyVGV4dHVyZTJE
KEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV9SRUNUQU5H
TEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlLCAwKTsKLQot
ICAgIHJldHVybiBuZXcgSU9TdXJmYWNlRnJhbWVidWZmZXIoc3RhdGUsIGZyYW1lYnVmZmVyLCB0
ZXh0dXJlLCB0cnVlLCBoYXNFbXVsYXRlZEFscGhhQ2hhbm5lbCgpKTsKLX0KLQotYW5nbGU6OlJl
c3VsdCBJT1N1cmZhY2VTdXJmYWNlQ0dMOjppbml0aWFsaXplQWxwaGFDaGFubmVsKGNvbnN0IGds
OjpDb250ZXh0ICpjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB0ZXh0dXJlKQotewotICAgIGlmIChtQWxwaGFJ
bml0aWFsaXplZCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51
ZTsKLSAgICB9Ci0KLSAgICBCbGl0R0wgKmJsaXR0ZXIgPSBHZXRCbGl0R0woY29udGV4dCk7Ci0g
ICAgQU5HTEVfVFJZKGJsaXR0ZXItPmNsZWFyUmVuZGVyYWJsZVRleHR1cmVBbHBoYVRvT25lKGNv
bnRleHQsIHRleHR1cmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdsOjpUZXh0dXJlVGFyZ2V0OjpSZWN0YW5nbGUsIDApKTsKLSAgICBt
QWxwaGFJbml0aWFsaXplZCA9IHRydWU7Ci0gICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRp
bnVlOwotfQotCi1ib29sIElPU3VyZmFjZVN1cmZhY2VDR0w6Omhhc0VtdWxhdGVkQWxwaGFDaGFu
bmVsKCkgY29uc3QKLXsKLSAgICBjb25zdCBhdXRvICZmb3JtYXQgPSBrSU9TdXJmYWNlRm9ybWF0
c1ttRm9ybWF0SW5kZXhdOwotICAgIHJldHVybiBmb3JtYXQuaW50ZXJuYWxGb3JtYXQgPT0gR0xf
UkdCOwotfQotCi19ICAvLyBuYW1lc3BhY2UgcngKLQotI2VuZGlmICAvLyBfX2hhc19pbmNsdWRl
KDxDb2NvYS9Db2NvYS5oPikKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvUGJ1ZmZlclN1cmZhY2VDR0wuY3BwIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9QYnVmZmVyU3Vy
ZmFjZUNHTC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Q1OWE3ZDJhNjVkMzI3ODNhMDZmYmE0YzYwMmY4NzFh
Y2M5ZDljZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvUGJ1ZmZlclN1cmZhY2VDR0wuY3BwCkBAIC0wLDAgKzEs
MTUwIEBACisvLworLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUuCisvLworCisvLyBQQnVmZmVyU3VyZmFjZUNHTC5jcHA6IGFuIGltcGxlbWVu
dGF0aW9uIG9mIGVnbDo6U3VyZmFjZSBmb3IgUEJ1ZmZlcnMgZm9yIHRoZSBDTEcgYmFja2VuZCwK
Ky8vICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRseSBpbXBsZW1lbnRlZCB1c2luZyByZW5k
ZXJidWZmZXJzCisKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpbmNsdWRlIDxUYXJnZXRDb25k
aXRpb25hbHMuaD4KKyNpZiBUQVJHRVRfT1NfT1NYCisKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5k
ZXJlci9nbC9jZ2wvUGJ1ZmZlclN1cmZhY2VDR0wuaCIKKworI2luY2x1ZGUgImNvbW1vbi9kZWJ1
Zy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL0Z1bmN0aW9uc0dMLmgiCisjaW5j
bHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvRnJhbWVidWZmZXJHTC5oIgorI2luY2x1ZGUgImxp
YkFOR0xFL3JlbmRlcmVyL2dsL1JlbmRlcmVyR0wuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5k
ZXJlci9nbC9TdGF0ZU1hbmFnZXJHTC5oIgorCituYW1lc3BhY2UgcngKK3sKKworUGJ1ZmZlclN1
cmZhY2VDR0w6OlBidWZmZXJTdXJmYWNlQ0dMKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJlckdMICpyZW5k
ZXJlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgd2lkdGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IGhlaWdodCkKKyAg
ICA6IFN1cmZhY2VHTChzdGF0ZSksCisgICAgICBtV2lkdGgod2lkdGgpLAorICAgICAgbUhlaWdo
dChoZWlnaHQpLAorICAgICAgbUZ1bmN0aW9ucyhyZW5kZXJlci0+Z2V0RnVuY3Rpb25zKCkpLAor
ICAgICAgbVN0YXRlTWFuYWdlcihyZW5kZXJlci0+Z2V0U3RhdGVNYW5hZ2VyKCkpLAorICAgICAg
bUNvbG9yUmVuZGVyYnVmZmVyKDApLAorICAgICAgbURTUmVuZGVyYnVmZmVyKDApCit7Cit9CisK
K1BidWZmZXJTdXJmYWNlQ0dMOjp+UGJ1ZmZlclN1cmZhY2VDR0woKQoreworICAgIGlmIChtQ29s
b3JSZW5kZXJidWZmZXIgIT0gMCkKKyAgICB7CisgICAgICAgIG1GdW5jdGlvbnMtPmRlbGV0ZVJl
bmRlcmJ1ZmZlcnMoMSwgJm1Db2xvclJlbmRlcmJ1ZmZlcik7CisgICAgICAgIG1Db2xvclJlbmRl
cmJ1ZmZlciA9IDA7CisgICAgfQorICAgIGlmIChtRFNSZW5kZXJidWZmZXIgIT0gMCkKKyAgICB7
CisgICAgICAgIG1GdW5jdGlvbnMtPmRlbGV0ZVJlbmRlcmJ1ZmZlcnMoMSwgJm1EU1JlbmRlcmJ1
ZmZlcik7CisgICAgICAgIG1EU1JlbmRlcmJ1ZmZlciA9IDA7CisgICAgfQorfQorCitlZ2w6OkVy
cm9yIFBidWZmZXJTdXJmYWNlQ0dMOjppbml0aWFsaXplKGNvbnN0IGVnbDo6RGlzcGxheSAqZGlz
cGxheSkKK3sKKyAgICBtRnVuY3Rpb25zLT5nZW5SZW5kZXJidWZmZXJzKDEsICZtQ29sb3JSZW5k
ZXJidWZmZXIpOworICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRSZW5kZXJidWZmZXIoR0xfUkVOREVS
QlVGRkVSLCBtQ29sb3JSZW5kZXJidWZmZXIpOworICAgIG1GdW5jdGlvbnMtPnJlbmRlcmJ1ZmZl
clN0b3JhZ2UoR0xfUkVOREVSQlVGRkVSLCBHTF9SR0JBOCwgbVdpZHRoLCBtSGVpZ2h0KTsKKwor
ICAgIG1GdW5jdGlvbnMtPmdlblJlbmRlcmJ1ZmZlcnMoMSwgJm1EU1JlbmRlcmJ1ZmZlcik7Cisg
ICAgbVN0YXRlTWFuYWdlci0+YmluZFJlbmRlcmJ1ZmZlcihHTF9SRU5ERVJCVUZGRVIsIG1EU1Jl
bmRlcmJ1ZmZlcik7CisgICAgbUZ1bmN0aW9ucy0+cmVuZGVyYnVmZmVyU3RvcmFnZShHTF9SRU5E
RVJCVUZGRVIsIEdMX0RFUFRIMjRfU1RFTkNJTDgsIG1XaWR0aCwgbUhlaWdodCk7CisKKyAgICBy
ZXR1cm4gZWdsOjpOb0Vycm9yKCk7Cit9CisKK2VnbDo6RXJyb3IgUGJ1ZmZlclN1cmZhY2VDR0w6
Om1ha2VDdXJyZW50KGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0KQoreworICAgIHJldHVybiBl
Z2w6Ok5vRXJyb3IoKTsKK30KKworZWdsOjpFcnJvciBQYnVmZmVyU3VyZmFjZUNHTDo6c3dhcChj
b25zdCBnbDo6Q29udGV4dCAqY29udGV4dCkKK3sKKyAgICByZXR1cm4gZWdsOjpOb0Vycm9yKCk7
Cit9CisKK2VnbDo6RXJyb3IgUGJ1ZmZlclN1cmZhY2VDR0w6OnBvc3RTdWJCdWZmZXIoY29uc3Qg
Z2w6OkNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEVHTGludCB4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBFR0xpbnQgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRUdMaW50IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBFR0xpbnQgaGVpZ2h0KQoreworICAgIHJldHVybiBlZ2w6Ok5vRXJyb3IoKTsKK30K
KworZWdsOjpFcnJvciBQYnVmZmVyU3VyZmFjZUNHTDo6cXVlcnlTdXJmYWNlUG9pbnRlckFOR0xF
KEVHTGludCBhdHRyaWJ1dGUsIHZvaWQgKip2YWx1ZSkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7
CisgICAgcmV0dXJuIGVnbDo6Tm9FcnJvcigpOworfQorCitlZ2w6OkVycm9yIFBidWZmZXJTdXJm
YWNlQ0dMOjpiaW5kVGV4SW1hZ2UoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OlRleHR1cmUgKnRleHR1cmUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IGJ1ZmZl
cikKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGVnbDo6Tm9FcnJvcigpOwor
fQorCitlZ2w6OkVycm9yIFBidWZmZXJTdXJmYWNlQ0dMOjpyZWxlYXNlVGV4SW1hZ2UoY29uc3Qg
Z2w6OkNvbnRleHQgKmNvbnRleHQsIEVHTGludCBidWZmZXIpCit7CisgICAgVU5JTVBMRU1FTlRF
RCgpOworICAgIHJldHVybiBlZ2w6Ok5vRXJyb3IoKTsKK30KKwordm9pZCBQYnVmZmVyU3VyZmFj
ZUNHTDo6c2V0U3dhcEludGVydmFsKEVHTGludCBpbnRlcnZhbCkKK3sKK30KKworRUdMaW50IFBi
dWZmZXJTdXJmYWNlQ0dMOjpnZXRXaWR0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1XaWR0aDsK
K30KKworRUdMaW50IFBidWZmZXJTdXJmYWNlQ0dMOjpnZXRIZWlnaHQoKSBjb25zdAoreworICAg
IHJldHVybiBtSGVpZ2h0OworfQorCitFR0xpbnQgUGJ1ZmZlclN1cmZhY2VDR0w6OmlzUG9zdFN1
YkJ1ZmZlclN1cHBvcnRlZCgpIGNvbnN0Cit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJl
dHVybiBFR0xfRkFMU0U7Cit9CisKK0VHTGludCBQYnVmZmVyU3VyZmFjZUNHTDo6Z2V0U3dhcEJl
aGF2aW9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gRUdMX0JVRkZFUl9QUkVTRVJWRUQ7Cit9CisK
K0ZyYW1lYnVmZmVySW1wbCAqUGJ1ZmZlclN1cmZhY2VDR0w6OmNyZWF0ZURlZmF1bHRGcmFtZWJ1
ZmZlcihjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RnJhbWVidWZm
ZXJTdGF0ZSAmc3RhdGUpCit7CisgICAgY29uc3QgRnVuY3Rpb25zR0wgKmZ1bmN0aW9ucyA9IEdl
dEZ1bmN0aW9uc0dMKGNvbnRleHQpOworICAgIFN0YXRlTWFuYWdlckdMICpzdGF0ZU1hbmFnZXIg
PSBHZXRTdGF0ZU1hbmFnZXJHTChjb250ZXh0KTsKKworICAgIEdMdWludCBmcmFtZWJ1ZmZlciA9
IDA7CisgICAgZnVuY3Rpb25zLT5nZW5GcmFtZWJ1ZmZlcnMoMSwgJmZyYW1lYnVmZmVyKTsKKyAg
ICBzdGF0ZU1hbmFnZXItPmJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgZnJhbWVidWZm
ZXIpOworICAgIGZ1bmN0aW9ucy0+ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0xfRlJBTUVCVUZG
RVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9SRU5ERVJCVUZGRVIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtQ29sb3JSZW5kZXJidWZmZXIpOworICAgIGZ1bmN0
aW9ucy0+ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0xfRlJBTUVCVUZGRVIsIEdMX0RFUFRIX1NU
RU5DSUxfQVRUQUNITUVOVCwgR0xfUkVOREVSQlVGRkVSLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbURTUmVuZGVyYnVmZmVyKTsKKworICAgIHJldHVybiBuZXcgRnJh
bWVidWZmZXJHTChzdGF0ZSwgZnJhbWVidWZmZXIsIHRydWUsIGZhbHNlKTsKK30KKworfSAgLy8g
bmFtZXNwYWNlIHJ4CisKKyNlbmRpZiAgLy8gVEFSR0VUX09TX09TWAorI2VuZGlmICAvLyBfX0FQ
UExFX18KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9nbC9jZ2wvUGJ1ZmZlclN1cmZhY2VDR0wubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL1BidWZmZXJTdXJmYWNlQ0dMLm1tCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOTg5MjdlODA3MDAyNTA4M2I2MmJhMWU2OGRh
MGIxMThhM2FkMTJhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wv
UGJ1ZmZlclN1cmZhY2VDR0wubW0KKysrIC9kZXYvbnVsbApAQCAtMSwxNDMgKzAsMCBAQAotLy8K
LS8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
LgotLy8KLQotLy8gUEJ1ZmZlclN1cmZhY2VDR0wuY3BwOiBhbiBpbXBsZW1lbnRhdGlvbiBvZiBl
Z2w6OlN1cmZhY2UgZm9yIFBCdWZmZXJzIGZvciB0aGUgQ0xHIGJhY2tlbmQsCi0vLyAgICAgICAg
ICAgICAgICAgICAgICBjdXJyZW50bHkgaW1wbGVtZW50ZWQgdXNpbmcgcmVuZGVyYnVmZmVycwot
Ci0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL1BidWZmZXJTdXJmYWNlQ0dMLmgi
Ci0KLSNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJl
ci9nbC9GdW5jdGlvbnNHTC5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL0ZyYW1l
YnVmZmVyR0wuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9SZW5kZXJlckdMLmgi
Ci0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvU3RhdGVNYW5hZ2VyR0wuaCIKLQotbmFt
ZXNwYWNlIHJ4Ci17Ci0KLVBidWZmZXJTdXJmYWNlQ0dMOjpQYnVmZmVyU3VyZmFjZUNHTChjb25z
dCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUmVuZGVyZXJHTCAqcmVuZGVyZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRUdMaW50IHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEVHTGludCBoZWlnaHQpCi0gICAgOiBTdXJmYWNlR0woc3RhdGUpLAotICAgICAgbVdp
ZHRoKHdpZHRoKSwKLSAgICAgIG1IZWlnaHQoaGVpZ2h0KSwKLSAgICAgIG1GdW5jdGlvbnMocmVu
ZGVyZXItPmdldEZ1bmN0aW9ucygpKSwKLSAgICAgIG1TdGF0ZU1hbmFnZXIocmVuZGVyZXItPmdl
dFN0YXRlTWFuYWdlcigpKSwKLSAgICAgIG1Db2xvclJlbmRlcmJ1ZmZlcigwKSwKLSAgICAgIG1E
U1JlbmRlcmJ1ZmZlcigwKQotewotfQotCi1QYnVmZmVyU3VyZmFjZUNHTDo6flBidWZmZXJTdXJm
YWNlQ0dMKCkKLXsKLSAgICBpZiAobUNvbG9yUmVuZGVyYnVmZmVyICE9IDApCi0gICAgewotICAg
ICAgICBtRnVuY3Rpb25zLT5kZWxldGVSZW5kZXJidWZmZXJzKDEsICZtQ29sb3JSZW5kZXJidWZm
ZXIpOwotICAgICAgICBtQ29sb3JSZW5kZXJidWZmZXIgPSAwOwotICAgIH0KLSAgICBpZiAobURT
UmVuZGVyYnVmZmVyICE9IDApCi0gICAgewotICAgICAgICBtRnVuY3Rpb25zLT5kZWxldGVSZW5k
ZXJidWZmZXJzKDEsICZtRFNSZW5kZXJidWZmZXIpOwotICAgICAgICBtRFNSZW5kZXJidWZmZXIg
PSAwOwotICAgIH0KLX0KLQotZWdsOjpFcnJvciBQYnVmZmVyU3VyZmFjZUNHTDo6aW5pdGlhbGl6
ZShjb25zdCBlZ2w6OkRpc3BsYXkgKmRpc3BsYXkpCi17Ci0gICAgbUZ1bmN0aW9ucy0+Z2VuUmVu
ZGVyYnVmZmVycygxLCAmbUNvbG9yUmVuZGVyYnVmZmVyKTsKLSAgICBtU3RhdGVNYW5hZ2VyLT5i
aW5kUmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgbUNvbG9yUmVuZGVyYnVmZmVyKTsKLSAg
ICBtRnVuY3Rpb25zLT5yZW5kZXJidWZmZXJTdG9yYWdlKEdMX1JFTkRFUkJVRkZFUiwgR0xfUkdC
QTgsIG1XaWR0aCwgbUhlaWdodCk7Ci0KLSAgICBtRnVuY3Rpb25zLT5nZW5SZW5kZXJidWZmZXJz
KDEsICZtRFNSZW5kZXJidWZmZXIpOwotICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRSZW5kZXJidWZm
ZXIoR0xfUkVOREVSQlVGRkVSLCBtRFNSZW5kZXJidWZmZXIpOwotICAgIG1GdW5jdGlvbnMtPnJl
bmRlcmJ1ZmZlclN0b3JhZ2UoR0xfUkVOREVSQlVGRkVSLCBHTF9ERVBUSDI0X1NURU5DSUw4LCBt
V2lkdGgsIG1IZWlnaHQpOwotCi0gICAgcmV0dXJuIGVnbDo6Tm9FcnJvcigpOwotfQotCi1lZ2w6
OkVycm9yIFBidWZmZXJTdXJmYWNlQ0dMOjptYWtlQ3VycmVudChjb25zdCBnbDo6Q29udGV4dCAq
Y29udGV4dCkKLXsKLSAgICByZXR1cm4gZWdsOjpOb0Vycm9yKCk7Ci19Ci0KLWVnbDo6RXJyb3Ig
UGJ1ZmZlclN1cmZhY2VDR0w6OnN3YXAoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQpCi17Ci0g
ICAgcmV0dXJuIGVnbDo6Tm9FcnJvcigpOwotfQotCi1lZ2w6OkVycm9yIFBidWZmZXJTdXJmYWNl
Q0dMOjpwb3N0U3ViQnVmZmVyKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgeCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IHksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCB3aWR0aCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IGhlaWdodCkKLXsKLSAgICBy
ZXR1cm4gZWdsOjpOb0Vycm9yKCk7Ci19Ci0KLWVnbDo6RXJyb3IgUGJ1ZmZlclN1cmZhY2VDR0w6
OnF1ZXJ5U3VyZmFjZVBvaW50ZXJBTkdMRShFR0xpbnQgYXR0cmlidXRlLCB2b2lkICoqdmFsdWUp
Ci17Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBlZ2w6Ok5vRXJyb3IoKTsKLX0K
LQotZWdsOjpFcnJvciBQYnVmZmVyU3VyZmFjZUNHTDo6YmluZFRleEltYWdlKGNvbnN0IGdsOjpD
b250ZXh0ICpjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdsOjpUZXh0dXJlICp0ZXh0dXJlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEVHTGludCBidWZmZXIpCi17Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAg
IHJldHVybiBlZ2w6Ok5vRXJyb3IoKTsKLX0KLQotZWdsOjpFcnJvciBQYnVmZmVyU3VyZmFjZUNH
TDo6cmVsZWFzZVRleEltYWdlKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LCBFR0xpbnQgYnVm
ZmVyKQotewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm4gZWdsOjpOb0Vycm9yKCk7
Ci19Ci0KLXZvaWQgUGJ1ZmZlclN1cmZhY2VDR0w6OnNldFN3YXBJbnRlcnZhbChFR0xpbnQgaW50
ZXJ2YWwpCi17Ci19Ci0KLUVHTGludCBQYnVmZmVyU3VyZmFjZUNHTDo6Z2V0V2lkdGgoKSBjb25z
dAotewotICAgIHJldHVybiBtV2lkdGg7Ci19Ci0KLUVHTGludCBQYnVmZmVyU3VyZmFjZUNHTDo6
Z2V0SGVpZ2h0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbUhlaWdodDsKLX0KLQotRUdMaW50IFBi
dWZmZXJTdXJmYWNlQ0dMOjppc1Bvc3RTdWJCdWZmZXJTdXBwb3J0ZWQoKSBjb25zdAotewotICAg
IFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm4gRUdMX0ZBTFNFOwotfQotCi1FR0xpbnQgUGJ1
ZmZlclN1cmZhY2VDR0w6OmdldFN3YXBCZWhhdmlvcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEVH
TF9CVUZGRVJfUFJFU0VSVkVEOwotfQotCi1GcmFtZWJ1ZmZlckltcGwgKlBidWZmZXJTdXJmYWNl
Q0dMOjpjcmVhdGVEZWZhdWx0RnJhbWVidWZmZXIoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyU3RhdGUgJnN0YXRlKQotewotICAgIGNvbnN0IEZ1
bmN0aW9uc0dMICpmdW5jdGlvbnMgPSBHZXRGdW5jdGlvbnNHTChjb250ZXh0KTsKLSAgICBTdGF0
ZU1hbmFnZXJHTCAqc3RhdGVNYW5hZ2VyID0gR2V0U3RhdGVNYW5hZ2VyR0woY29udGV4dCk7Ci0K
LSAgICBHTHVpbnQgZnJhbWVidWZmZXIgPSAwOwotICAgIGZ1bmN0aW9ucy0+Z2VuRnJhbWVidWZm
ZXJzKDEsICZmcmFtZWJ1ZmZlcik7Ci0gICAgc3RhdGVNYW5hZ2VyLT5iaW5kRnJhbWVidWZmZXIo
R0xfRlJBTUVCVUZGRVIsIGZyYW1lYnVmZmVyKTsKLSAgICBmdW5jdGlvbnMtPmZyYW1lYnVmZmVy
UmVuZGVyYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfUkVO
REVSQlVGRkVSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUNvbG9y
UmVuZGVyYnVmZmVyKTsKLSAgICBmdW5jdGlvbnMtPmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdM
X0ZSQU1FQlVGRkVSLCBHTF9ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQsIEdMX1JFTkRFUkJVRkZF
UiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1EU1JlbmRlcmJ1ZmZl
cik7Ci0KLSAgICByZXR1cm4gbmV3IEZyYW1lYnVmZmVyR0woc3RhdGUsIGZyYW1lYnVmZmVyLCB0
cnVlLCBmYWxzZSk7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSByeApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9SZW5kZXJlckNH
TC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wv
Y2dsL1JlbmRlcmVyQ0dMLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNWQ5NzM3NzNmMDU0YmUwZTMxZjY3NjBl
MjViMDYyMmEyMWMzNTU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9SZW5kZXJlckNHTC5jcHAKQEAgLTAsMCAr
MSwzNSBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE5IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlLgorLy8KKworLy8gUmVuZGVyZXJDR0wubW06IEltcGxlbWVudHMgdGhlIGNs
YXNzIG1ldGhvZHMgZm9yIFJlbmRlcmVyQ0dMLgorCisjaWYgZGVmaW5lZChfX0FQUExFX18pCisj
aW5jbHVkZSA8VGFyZ2V0Q29uZGl0aW9uYWxzLmg+CisjaWYgVEFSR0VUX09TX09TWAorCisjaW5j
bHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL0Rpc3BsYXlDR0wuaCIKKyNpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvUmVuZGVyZXJDR0wuaCIKKworbmFtZXNwYWNlIHJ4Cit7
CisKK1JlbmRlcmVyQ0dMOjpSZW5kZXJlckNHTChzdGQ6OnVuaXF1ZV9wdHI8RnVuY3Rpb25zR0w+
IGZ1bmN0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0
ZU1hcCAmYXR0cmliTWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgIERpc3BsYXlDR0wgKmRp
c3BsYXkpCisgICAgOiBSZW5kZXJlckdMKHN0ZDo6bW92ZShmdW5jdGlvbnMpLCBhdHRyaWJNYXAs
IGRpc3BsYXkpLCBtRGlzcGxheShkaXNwbGF5KQore30KKworUmVuZGVyZXJDR0w6On5SZW5kZXJl
ckNHTCgpIHt9CisKK1dvcmtlckNvbnRleHQgKlJlbmRlcmVyQ0dMOjpjcmVhdGVXb3JrZXJDb250
ZXh0KHN0ZDo6c3RyaW5nICppbmZvTG9nKQoreworICAgIHJldHVybiBtRGlzcGxheS0+Y3JlYXRl
V29ya2VyQ29udGV4dChpbmZvTG9nKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHJ4CisKKyNlbmRp
ZiAgLy8gVEFSR0VUX09TX09TWAorI2VuZGlmICAvLyBfX0FQUExFX18KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvUmVuZGVy
ZXJDR0wubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
Z2wvY2dsL1JlbmRlcmVyQ0dMLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NmYz
N2E5ZTNlYzVlYTE4ZTc0N2JkNTEyMGVlNDYxM2NiOWM0YzFkLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvUmVuZGVyZXJDR0wubW0KKysrIC9kZXYvbnVsbApAQCAt
MSwyOSArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IDIwMTkgVGhlIEFOR0xFIFByb2plY3QgQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0vLyBSZW5kZXJlckNHTC5tbTogSW1wbGVtZW50cyB0
aGUgY2xhc3MgbWV0aG9kcyBmb3IgUmVuZGVyZXJDR0wuCi0KLSNpbmNsdWRlICJsaWJBTkdMRS9y
ZW5kZXJlci9nbC9jZ2wvUmVuZGVyZXJDR0wuaCIKLQotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRl
cmVyL2dsL2NnbC9EaXNwbGF5Q0dMLmgiCi0KLW5hbWVzcGFjZSByeAotewotCi1SZW5kZXJlckNH
TDo6UmVuZGVyZXJDR0woc3RkOjp1bmlxdWVfcHRyPEZ1bmN0aW9uc0dMPiBmdW5jdGlvbnMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYk1h
cCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBEaXNwbGF5Q0dMICpkaXNwbGF5KQotICAgIDog
UmVuZGVyZXJHTChzdGQ6Om1vdmUoZnVuY3Rpb25zKSwgYXR0cmliTWFwLCBkaXNwbGF5KSwgbURp
c3BsYXkoZGlzcGxheSkKLXt9Ci0KLVJlbmRlcmVyQ0dMOjp+UmVuZGVyZXJDR0woKSB7fQotCi1X
b3JrZXJDb250ZXh0ICpSZW5kZXJlckNHTDo6Y3JlYXRlV29ya2VyQ29udGV4dChzdGQ6OnN0cmlu
ZyAqaW5mb0xvZykKLXsKLSAgICByZXR1cm4gbURpc3BsYXktPmNyZWF0ZVdvcmtlckNvbnRleHQo
aW5mb0xvZyk7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSByeApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9XaW5kb3dTdXJmYWNl
Q0dMLm1tIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2ds
L2NnbC9XaW5kb3dTdXJmYWNlQ0dMLm1tCmluZGV4IDVmYTJmMzU0Yzc3ZmNjMDdhYzIwYmU2Nzkz
MmQwMzlhOTFmNDFhM2QuLmMxODEyNjFkMmZhYjA3NzE1ZDgyNGY4MGY1MzlkNmNmMTJhN2E2YmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9nbC9jZ2wvV2luZG93U3VyZmFjZUNHTC5tbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL1dpbmRvd1N1cmZhY2VDR0wubW0KQEAgLTYs
MjAgKzYsMjEgQEAKIAogLy8gV2luZG93U3VyZmFjZUNHTC5jcHA6IENHTCBpbXBsZW1lbnRhdGlv
biBvZiBlZ2w6OlN1cmZhY2UgZm9yIHdpbmRvd3MKIAotI2lmIF9faGFzX2luY2x1ZGUoPENvY29h
L0NvY29hLmg+KQorI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2luY2x1ZGUgPFRhcmdldENvbmRp
dGlvbmFscy5oPgorI2lmIFRBUkdFVF9PU19PU1gKIAotIyAgICBpbmNsdWRlICJsaWJBTkdMRS9y
ZW5kZXJlci9nbC9jZ2wvV2luZG93U3VyZmFjZUNHTC5oIgorI2ltcG9ydCAibGliQU5HTEUvcmVu
ZGVyZXIvZ2wvY2dsL1dpbmRvd1N1cmZhY2VDR0wuaCIKIAotIyAgICBpbXBvcnQgPENvY29hL0Nv
Y29hLmg+Ci0jICAgIGluY2x1ZGUgPE9wZW5HTC9PcGVuR0wuaD4KLSMgICAgaW1wb3J0IDxRdWFy
dHpDb3JlL1F1YXJ0ekNvcmUuaD4KKyNpbXBvcnQgImNvbW1vbi9kZWJ1Zy5oIgorI2ltcG9ydCAi
bGliQU5HTEUvQ29udGV4dC5oIgorI2ltcG9ydCAibGliQU5HTEUvcmVuZGVyZXIvZ2wvRnJhbWVi
dWZmZXJHTC5oIgorI2ltcG9ydCAibGliQU5HTEUvcmVuZGVyZXIvZ2wvUmVuZGVyZXJHTC5oIgor
I2ltcG9ydCAibGliQU5HTEUvcmVuZGVyZXIvZ2wvU3RhdGVNYW5hZ2VyR0wuaCIKKyNpbXBvcnQg
ImxpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9EaXNwbGF5Q0dMLmgiCiAKLSMgICAgaW5jbHVkZSAi
Y29tbW9uL2RlYnVnLmgiCi0jICAgIGluY2x1ZGUgImxpYkFOR0xFL0NvbnRleHQuaCIKLSMgICAg
aW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvRnJhbWVidWZmZXJHTC5oIgotIyAgICBpbmNs
dWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9SZW5kZXJlckdMLmgiCi0jICAgIGluY2x1ZGUgImxp
YkFOR0xFL3JlbmRlcmVyL2dsL1N0YXRlTWFuYWdlckdMLmgiCi0jICAgIGluY2x1ZGUgImxpYkFO
R0xFL3JlbmRlcmVyL2dsL2NnbC9EaXNwbGF5Q0dMLmgiCisjaW1wb3J0IDxPcGVuR0wvT3BlbkdM
Lmg+CisjaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KIAogQGludGVyZmFjZSBXZWJT
d2FwTGF5ZXIgOiBDQU9wZW5HTExheWVyIHsKICAgICBDR0xDb250ZXh0T2JqIG1EaXNwbGF5Q29u
dGV4dDsKQEAgLTMzNyw0ICszMzgsNSBAQCBGcmFtZWJ1ZmZlckltcGwgKldpbmRvd1N1cmZhY2VD
R0w6OmNyZWF0ZURlZmF1bHRGcmFtZWJ1ZmZlcihjb25zdCBnbDo6Q29udGV4dCAqYwogCiB9ICAv
LyBuYW1lc3BhY2UgcngKIAotI2VuZGlmICAvLyBfX2hhc19pbmNsdWRlKDxDb2NvYS9Db2NvYS5o
PikKKyNlbmRpZiAgLy8gVEFSR0VUX09TX09TWAorI2VuZGlmICAvLyBfX0FQUExFX18K
</data>
<flag name="review"
          id="397481"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>