<?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>217603</bug_id>
          
          <creation_ts>2020-10-12 02:01:33 -0700</creation_ts>
          <short_desc>Remove ACCELERATED_2D_CANVAS build flags and guarded code</short_desc>
          <delta_ts>2020-10-14 11:13:19 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=207048</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>graouts</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jbedard</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>menard</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>quequotion</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>vjaquez</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1696803</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2020-10-12 02:01:33 -0700</bug_when>
    <thetext>Remove ACCELERATED_2D_CANVAS build flags and guarded code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696804</commentid>
    <comment_count>1</comment_count>
      <attachid>411104</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2020-10-12 02:02:13 -0700</bug_when>
    <thetext>Created attachment 411104
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696815</commentid>
    <comment_count>2</comment_count>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2020-10-12 03:30:41 -0700</bug_when>
    <thetext>It would be great if there was some justification in changelog, as it&apos;s not removing obviously dead code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696958</commentid>
    <comment_count>3</comment_count>
      <attachid>411138</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2020-10-12 11:40:04 -0700</bug_when>
    <thetext>Created attachment 411138
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697198</commentid>
    <comment_count>4</comment_count>
      <attachid>411138</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-10-13 01:12:29 -0700</bug_when>
    <thetext>Comment on attachment 411138
Patch

I guess this needs to be rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697223</commentid>
    <comment_count>5</comment_count>
      <attachid>411210</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2020-10-13 04:29:10 -0700</bug_when>
    <thetext>Created attachment 411210
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697242</commentid>
    <comment_count>6</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-10-13 07:23:57 -0700</bug_when>
    <thetext>(In reply to Konstantin Tokarev from comment #2)
&gt; It would be great if there was some justification in changelog, as it&apos;s not
&gt; removing obviously dead code

The updated changelog looks better. Also note it&apos;s been disabled by default everywhere since bug #148473. Probably long past time to remove it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697256</commentid>
    <comment_count>7</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2020-10-13 07:53:37 -0700</bug_when>
    <thetext>*** Bug 208523 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697675</commentid>
    <comment_count>8</comment_count>
      <attachid>411210</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2020-10-14 05:06:35 -0700</bug_when>
    <thetext>Comment on attachment 411210
Patch for landing

Clearing flags on attachment: 411210

Committed r268453: &lt;https://trac.webkit.org/changeset/268453&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697676</commentid>
    <comment_count>9</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2020-10-14 05:06:40 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697678</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-14 05:07:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/70288514&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411104</attachid>
            <date>2020-10-12 02:02:13 -0700</date>
            <delta_ts>2020-10-12 11:39:59 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-217603-20201012110212.patch</filename>
            <type>text/plain</type>
            <size>68228</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4MzM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDNiNWJjMjFkOTUzZWM5MjcxNWI1YzVk
OTE0ODEyZGRmOGVhY2MyODIuLmMwZGM2YmNiM2FmMjFlMmYxOWMyMzQ4Mzk3NzY5NWU2ZWUzMTA4
ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjAtMTAtMTIgIFphbiBEb2JlcnNlayAgPHpkb2Jl
cnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFJlbW92ZSBBQ0NFTEVSQVRFRF8yRF9DQU5WQVMg
YnVpbGQgZmxhZ3MgYW5kIGd1YXJkZWQgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NjAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1FbmFibGUuaDoKKwogMjAyMC0xMC0x
MSAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGdub21lLm9yZz4KIAogICAgICAgICBH
ZW5lcmF0ZVByZWZlcmVuY2VzLnJiIGlzIG5vaXN5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmY0MjNhMGJiMTZm
ZWNjOTBjNmEyMzg0MGVmMTkxYjM1YTk2Y2Y1Ni4uZGUxMWI4NGIwNDFjZmViNDBhNmQ3ZjAxNTg5
MjBiMzlkN2ZmOTEyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDIwLTEwLTEyICBa
YW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBSZW1vdmUgQUND
RUxFUkFURURfMkRfQ0FOVkFTIGJ1aWxkIGZsYWdzIGFuZCBndWFyZGVkIGNvZGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzYwMworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09Q
UyEpLgorCisgICAgICAgICogUGxhdGZvcm1NYWMuY21ha2U6CisgICAgICAgICogU291cmNlc0Nv
Y29hLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlQ29udGV4dDJkKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxDYW52YXNFbGVtZW50OjpjcmVhdGVDb250ZXh0Qml0bWFwUmVuZGVyZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OnNob3VsZEFjY2VsZXJhdGUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUltYWdlQnVmZmVyIGNvbnN0
KToKKyAgICAgICAgKiBodG1sL0ltYWdlQml0bWFwLmNwcDoKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmlzQWNjZWxlcmF0ZWQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJhd0ltYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNyZWF0ZVBhdHRl
cm4pOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZGlk
RHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpw
bGF0Zm9ybUxheWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvSW1hZ2VC
aXRtYXBSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9DYWlyby5jbWFr
ZToKKyAgICAgICAgKiBwbGF0Zm9ybS9Tb3VyY2VzQ2Fpcm8udHh0OgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0dMQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1Bs
YXRmb3JtSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9D
YWlyb1V0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWlyb1N1cmZhY2VTaXplKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvR0xTdXJm
YWNlQmFja2VuZC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vSW1hZ2VCdWZmZXJDYWlyb0dMU3VyZmFjZUJhY2tlbmQuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdMQ29udGV4dEVHTDo6fkdMQ29udGV4dEVHTCk6CisgICAgICAgIChXZWJDb3JlOjpHTENv
bnRleHRFR0w6OmNhaXJvRGV2aWNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9lZ2wvR0xDb250ZXh0RUdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4
L0dMQ29udGV4dEdMWC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRHTFg6On5HTENv
bnRleHRHTFgpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjpjYWlyb0RldmljZSk6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNwcDogUmVtb3ZlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5oOiBSZW1vdmVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbnZhc0NvbXBvc2l0aW5nU3Ry
YXRlZ3kpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDb25m
aWd1cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6Y29udGFp
bnNQYWludGVkQ29udGVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJh
Y2tpbmc6OmNvbnRlbnRDaGFuZ2VkKToKKwogMjAyMC0xMC0xMSAgTHVtaW5nIFlpbiAgPGx1bWlu
Z195aW5AYXBwbGUuY29tPgogCiAgICAgICAgIFN0cmlwIHBhdGNoIHZlcnNpb24gZnJvbSBUQVJH
RVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUiB3aGVuIGJ1aWxkaW5nIGZvciBtYWNPUyBCaWcgU3Vy
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaCBiL1NvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgKaW5kZXggZjQ0NzYzOGI0MThiODhkZDNmMzdiZjQ2Mjc0
Y2UzY2IwMzc4NDI1MS4uNjU5NmYxMjljMWNiNzVlOWEwMmUwMDMxMDdjZDNkNmZhOTJkN2E2MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCkBAIC0xODEsMTAgKzE4MSw2IEBACiAjZGVmaW5lIEVO
QUJMRV9BQ0NFU1NJQklMSVRZIDEKICNlbmRpZgogCi0jaWYgIWRlZmluZWQoRU5BQkxFX0FDQ0VM
RVJBVEVEXzJEX0NBTlZBUykKLSNkZWZpbmUgRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUyAw
Ci0jZW5kaWYKLQogI2lmICFkZWZpbmVkKEVOQUJMRV9PVkVSRkxPV19TQ1JPTExJTkdfVE9VQ0gp
CiAjZGVmaW5lIEVOQUJMRV9PVkVSRkxPV19TQ1JPTExJTkdfVE9VQ0ggMAogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IDBmMTZmNDRjNTUwMzA3YzljNjdlZDA5NmUxYmMyOTM5
Yzk1MjdmMmYuLjhkOTI0OTFhMDg1MzBlY2EyZTk2ZjRkYzFlNjJkMzI1YjE2ZTQ3NWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0zMzAsNyArMzMwLDYgQEAgbGlzdChBUFBFTkQgV2Vi
Q29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY3YvUGl4ZWxCdWZmZXJDb25mb3Jt
ZXJDVi5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jdi9WaWRlb1RleHR1cmVDb3BpZXJDVi5j
cHAKIAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNwcAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9UaWxpbmdEYXRhLmNwcAogCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0NvbG9yTWFjLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0
IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCBkNmY2ZjVjZmRmMDlkZGYx
YzNlMjZjNjU2Y2NhYzZjZTc5ZTFjMjJhLi5mOTU5ZTM5ODI5NjYwNTA5MDNhYWM4NWI4YWYyNDJk
YTE1NDM0YTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0Cisr
KyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTM3OCw3ICszNzgsNiBAQCBw
bGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULm1tCiBwbGF0Zm9ybS9n
cmFwaGljcy9jdi9QaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y3YvVmlkZW9UZXh0dXJlQ29waWVyQ1YuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2Uv
RmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0KLXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9U
ZXh0dXJlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RpbGluZ0RhdGEuY3BwCiBwbGF0Zm9y
bS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQmluZEdyb3VwQWxsb2NhdG9yTWV0YWwubW0KIHBsYXRm
b3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVCaW5kR3JvdXBMYXlvdXRNZXRhbC5tbQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDU5
M2Q2MmJmMTlkNDcxMzFiOTdkZTM2ZDAyZWNlMzlkOTFmMjJkNmYuLjFjODIxZTFhMTRlMDgwZjQ1
MTEwZDViNGNhOTFlZjI1YmZlYjBhNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyNzQsNyArMTI3NCw2IEBACiAJCTQ5NEJE
Nzk1MEY1NUM4RUUwMDc0NzgyOCAvKiBXZWJLaXRQb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk0QkQ3OTMwRjU1QzhFRTAwNzQ3ODI4IC8qIFdl
YktpdFBvaW50LmggKi87IH07CiAJCTQ5NEJENzlFMEY1NUM5NEMwMDc0NzgyOCAvKiBKU1dlYktp
dFBvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
OTRCRDc5QzBGNTVDOTRDMDA3NDc4MjggLyogSlNXZWJLaXRQb2ludC5oICovOyB9OwogCQk0OTY5
QjBGMzEzRDBCMzNGMDBERjM1MjEgLyogSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTY5QjBGMTEzRDBCMzNG
MDBERjM1MjEgLyogSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlLmggKi87IH07Ci0JCTQ5ODc3MEYx
MTI0MkM1MzUwMDIyMjZCQSAvKiBUZXh0dXJlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0OTg3NzBEODEyNDJDNTM1MDAyMjI2QkEgLyogVGV4dHVyZS5o
ICovOyB9OwogCQk0OTg3NzBGMzEyNDJDNTM1MDAyMjI2QkEgLyogVGlsaW5nRGF0YS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk4NzcwREExMjQyQzUz
NTAwMjIyNkJBIC8qIFRpbGluZ0RhdGEuaCAqLzsgfTsKIAkJNDk5OEFFQzYxM0Y5RDBFQTAwOTBC
MUFBIC8qIFJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTk4QUVDNDEzRjlEMEVBMDA5MEIxQUEgLyog
UmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2suaCAqLzsgfTsKIAkJNDk5OEFFQ0UxM0Y5RDZD
OTAwOTBCMUFBIC8qIEpTUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2suaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5OThBRUNDMTNGOUQ2QzkwMDkw
QjFBQSAvKiBKU1JlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrLmggKi87IH07CkBAIC04MDU5
LDggKzgwNTgsNiBAQAogCQk0OTU4NzgyMDEyQTU3RERGMDA3MjM4QUMgLyogUGxhdGZvcm1DQUxh
eWVyQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQbGF0
Zm9ybUNBTGF5ZXJDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDk2OUIw
RjAxM0QwQjMzRjAwREYzNTIxIC8qIEhpdFRlc3RpbmdUcmFuc2Zvcm1TdGF0ZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIaXRUZXN0aW5nVHJhbnNmb3JtU3RhdGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTY5QjBGMTEzRDBCMzNGMDBERjM1
MjEgLyogSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEhpdFRlc3RpbmdUcmFuc2Zvcm1TdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk0OTg3NzBENzEyNDJDNTM1MDAyMjI2QkEgLyogVGV4dHVyZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0dXJlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJNDk4NzcwRDgxMjQyQzUzNTAwMjIyNkJBIC8qIFRleHR1cmUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dHVyZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0OTg3NzBEOTEyNDJDNTM1MDAyMjI2QkEgLyogVGlsaW5nRGF0YS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUaWxpbmdEYXRhLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDk4NzcwREExMjQyQzUzNTAwMjIyNkJBIC8q
IFRpbGluZ0RhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGlsaW5nRGF0
YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTk4QUVDNDEzRjlEMEVBMDA5MEIx
QUEgLyogUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2suaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5NjgwLDggKzE5Njc3LDYgQEAKIAkJCQlEMEQ4NjQ5QjIx
QkExQzJEMDAzQzk4M0MgLyogR1BVVmVydGV4QXR0cmlidXRlRGVzY3JpcHRvci5oICovLAogCQkJ
CUQwRDg2NDlDMjFCQTFDRTgwMDNDOTgzQyAvKiBHUFVWZXJ0ZXhCdWZmZXJEZXNjcmlwdG9yLmgg
Ki8sCiAJCQkJRDBEODY0OTkyMUJBMUIxRjAwM0M5ODNDIC8qIEdQVVZlcnRleElucHV0RGVzY3Jp
cHRvci5oICovLAotCQkJCTQ5ODc3MEQ3MTI0MkM1MzUwMDIyMjZCQSAvKiBUZXh0dXJlLmNwcCAq
LywKLQkJCQk0OTg3NzBEODEyNDJDNTM1MDAyMjI2QkEgLyogVGV4dHVyZS5oICovLAogCQkJCTQ5
ODc3MEQ5MTI0MkM1MzUwMDIyMjZCQSAvKiBUaWxpbmdEYXRhLmNwcCAqLywKIAkJCQk0OTg3NzBE
QTEyNDJDNTM1MDAyMjI2QkEgLyogVGlsaW5nRGF0YS5oICovLAogCQkJKTsKQEAgLTM0MzY0LDcg
KzM0MzU5LDYgQEAKIAkJCQkxREY3RTgxRjI1MUE5RTA2MDBEQjhGNjEgLyogVGV4dFRyYWNrUmVw
cmVzZW50YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTFDNzNBNzEzMjE4NTc1N0UwMDRDQ0VB
NSAvKiBUZXh0VW5kZXJsaW5lT2Zmc2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkyOUZBRjRCNjE5
NUFCMDg5MDBBNTIyREMgLyogVGV4dFVuZG9JbnNlcnRpb25NYXJrdXBNYWMuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTQ5ODc3MEYxMTI0MkM1MzUwMDIyMjZCQSAvKiBUZXh0dXJlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk2RkIxMUI1QzIxNzgzRkQwMDBFMkE1NzQgLyogVGV4dFV0aWwuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDRTY1OEZGMEVBOTI0OEEwMDdFNDUzMyAvKiBUaGVtZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMzEwRDcxOTYxQjMzNUM5RTAwOUM3QjczIC8qIFRoZW1lQ29jb2EuaCBpbiBI
ZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAppbmRl
eCAzMDVmNjgwNmU4NjY0ZTg0NmQwNWM2ZDM0MjRkNmE5NWI1MTYwYzVmLi4xMTViYTU5YTlmYjVh
ZThiZDBjMzEwZTkzOGU2ZDAyMjJlY2RmYTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
YW52YXNFbGVtZW50LmNwcApAQCAtMzY5LDcgKzM2OSw3IEBAIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRCogSFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUNvbnRleHQyZChjb25zdCBTdHJpbmcmIHR5
cGUpCiAKICAgICBtX2NvbnRleHQgPSBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNyZWF0ZSgq
dGhpcywgZG9jdW1lbnQoKS5pblF1aXJrc01vZGUoKSk7CiAKLSNpZiBVU0UoSU9TVVJGQUNFX0NB
TlZBU19CQUNLSU5HX1NUT1JFKSB8fCBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQorI2lm
IFVTRShJT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJTkdfU1RPUkUpCiAgICAgLy8gTmVlZCB0byBtYWtl
IHN1cmUgYSBSZW5kZXJMYXllciBhbmQgY29tcG9zaXRpbmcgbGF5ZXIgZ2V0IGNyZWF0ZWQgZm9y
IHRoZSBDYW52YXMuCiAgICAgaW52YWxpZGF0ZVN0eWxlQW5kTGF5ZXJDb21wb3NpdGlvbigpOwog
I2VuZGlmCkBAIC01MjcsNyArNTI3LDcgQEAgSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0KiBI
VE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlQ29udGV4dEJpdG1hcFJlbmRlcmVyKGNvbnMKIAogICAg
IG1fY29udGV4dCA9IEltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlKCp0aGlzLCBX
VEZNb3ZlKHNldHRpbmdzKSk7CiAKLSNpZiBVU0UoSU9TVVJGQUNFX0NBTlZBU19CQUNLSU5HX1NU
T1JFKSB8fCBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQorI2lmIFVTRShJT1NVUkZBQ0Vf
Q0FOVkFTX0JBQ0tJTkdfU1RPUkUpCiAgICAgLy8gTmVlZCB0byBtYWtlIHN1cmUgYSBSZW5kZXJM
YXllciBhbmQgY29tcG9zaXRpbmcgbGF5ZXIgZ2V0IGNyZWF0ZWQgZm9yIHRoZSBDYW52YXMuCiAg
ICAgaW52YWxpZGF0ZVN0eWxlQW5kTGF5ZXJDb21wb3NpdGlvbigpOwogI2VuZGlmCkBAIC04NTYs
MTcgKzg1Niw2IEBAIGJvb2wgSFRNTENhbnZhc0VsZW1lbnQ6OnNob3VsZEFjY2VsZXJhdGUoY29u
c3QgSW50U2l6ZSYgc2l6ZSkgY29uc3QKIAogI2lmIFVTRShJT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJ
TkdfU1RPUkUpCiAgICAgcmV0dXJuIHNldHRpbmdzLmNhbnZhc1VzZXNBY2NlbGVyYXRlZERyYXdp
bmcoKTsKLSNlbGlmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCi0gICAgaWYgKG1fY29u
dGV4dCAmJiAhbV9jb250ZXh0LT5pczJkKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IGlmICghc2V0dGluZ3MuYWNjZWxlcmF0ZWQyZENhbnZhc0VuYWJsZWQoKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgaWYgKGFyZWEgPCBzZXR0aW5ncy5taW5pbXVtQWNjZWxlcmF0ZWQy
ZENhbnZhc1NpemUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7
CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShzaXplKTsKICAgICByZXR1cm4gZmFsc2U7CkBAIC05
NTUsNyArOTQ0LDcgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlSW1hZ2VCdWZmZXIo
KSBjb25zdAogICAgIGlmIChidWZmZXIoKSAmJiBidWZmZXIoKS0+ZHJhd2luZ0NvbnRleHQoKSkK
ICAgICAgICAgYnVmZmVyKCktPmRyYXdpbmdDb250ZXh0KCktPnNldFRyYWNrc0Rpc3BsYXlMaXN0
UmVwbGF5KG1fdHJhY2tzRGlzcGxheUxpc3RSZXBsYXkpOwogCi0jaWYgVVNFKElPU1VSRkFDRV9D
QU5WQVNfQkFDS0lOR19TVE9SRSkgfHwgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKKyNp
ZiBVU0UoSU9TVVJGQUNFX0NBTlZBU19CQUNLSU5HX1NUT1JFKQogICAgIGlmIChtX2NvbnRleHQg
JiYgbV9jb250ZXh0LT5pczJkKCkpIHsKICAgICAgICAgLy8gUmVjYWxjdWxhdGUgY29tcG9zaXRp
bmcgcmVxdWlyZW1lbnRzIGlmIGFjY2VsZXJhdGlvbiBzdGF0ZSBjaGFuZ2VkLgogICAgICAgICBj
b25zdF9jYXN0PEhUTUxDYW52YXNFbGVtZW50Kj4odGhpcyktPmludmFsaWRhdGVTdHlsZUFuZExh
eWVyQ29tcG9zaXRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VC
aXRtYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKaW5kZXggNDM5
YjZhOWQ3ZDgxMjBkOTFlMWUxYWZjNTZkMWFhZjZiZTBiNDllNC4uYmExMjk4ZTRmNzQ3YzNiZGIz
OGZhZTgwOTI4MjY4ODk2YmVlOWVmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9J
bWFnZUJpdG1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAK
QEAgLTYxLDcgKzYxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxM
T0NBVEVEX0lNUEwoSW1hZ2VCaXRtYXApOwogCi0jaWYgVVNFKElPU1VSRkFDRV9DQU5WQVNfQkFD
S0lOR19TVE9SRSkgfHwgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKKyNpZiBVU0UoSU9T
VVJGQUNFX0NBTlZBU19CQUNLSU5HX1NUT1JFKQogc3RhdGljIFJlbmRlcmluZ01vZGUgYnVmZmVy
UmVuZGVyaW5nTW9kZSA9IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkOwogI2Vsc2UKIHN0YXRp
YyBSZW5kZXJpbmdNb2RlIGJ1ZmZlclJlbmRlcmluZ01vZGUgPSBSZW5kZXJpbmdNb2RlOjpVbmFj
Y2VsZXJhdGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAppbmRleCA3MWE0NzA2MDY0NGJmODE5MDEz
OWJhNWU0NTE2OWMzYmQ4NTI1MjFiLi5lOGQ2ODEzZmQ0YWNhMTc0NjIzMWNiOTUxMThjMTYxNmVl
Y2UwODUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcApAQCAtMTQ1LDcgKzE0NSw3IEBAIENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyREJhc2U6On5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlKCkK
IAogYm9vbCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjppc0FjY2VsZXJhdGVkKCkgY29u
c3QKIHsKLSNpZiBVU0UoSU9TVVJGQUNFX0NBTlZBU19CQUNLSU5HX1NUT1JFKSB8fCBFTkFCTEUo
QUNDRUxFUkFURURfMkRfQ0FOVkFTKQorI2lmIFVTRShJT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJTkdf
U1RPUkUpCiAgICAgYXV0byogY29udGV4dCA9IGNhbnZhc0Jhc2UoKS5leGlzdGluZ0RyYXdpbmdD
b250ZXh0KCk7CiAgICAgcmV0dXJuIGNvbnRleHQgJiYgY29udGV4dC0+aXNBY2NlbGVyYXRlZENv
bnRleHQoKTsKICNlbHNlCkBAIC0xNTg1LDE2ICsxNTg1LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4g
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJhd0ltYWdlKENhbnZhc0Jhc2UmIHNvdXJj
ZUNhbnYKIAogICAgIGNoZWNrT3JpZ2luKCZzb3VyY2VDYW52YXMpOwogCi0jaWYgRU5BQkxFKEFD
Q0VMRVJBVEVEXzJEX0NBTlZBUykKLSAgICAvLyBJZiB3ZSdyZSBkcmF3aW5nIGZyb20gb25lIGFj
Y2VsZXJhdGVkIGNhbnZhcyAyZCB0byBhbm90aGVyLCBhdm9pZCBjYWxsaW5nIHNvdXJjZUNhbnZh
cy5tYWtlUmVuZGVyaW5nUmVzdWx0c0F2YWlsYWJsZSgpCi0gICAgLy8gYXMgdGhhdCB3aWxsIGRv
IGEgcmVhZGJhY2sgdG8gc29mdHdhcmUuCi0gICAgUmVmUHRyPENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQ+IHNvdXJjZUNvbnRleHQgPSBzb3VyY2VDYW52YXMucmVuZGVyaW5nQ29udGV4dCgpOwotICAg
IC8vIEZJWE1FOiBJbXBsZW1lbnQgYW4gYWNjZWxlcmF0ZWQgcGF0aCBmb3IgZHJhd2luZyBmcm9t
IGEgV2ViR0wgY2FudmFzIHRvIGEgMmQgY2FudmFzIHdoZW4gcG9zc2libGUuCi0gICAgaWYgKCFp
c0FjY2VsZXJhdGVkKCkgfHwgIXNvdXJjZUNvbnRleHQgfHwgIXNvdXJjZUNvbnRleHQtPmlzQWNj
ZWxlcmF0ZWQoKSB8fCAhc291cmNlQ29udGV4dC0+aXMyZCgpKQotICAgICAgICBzb3VyY2VDYW52
YXMubWFrZVJlbmRlcmluZ1Jlc3VsdHNBdmFpbGFibGUoKTsKLSNlbHNlCiAgICAgc291cmNlQ2Fu
dmFzLm1ha2VSZW5kZXJpbmdSZXN1bHRzQXZhaWxhYmxlKCk7Ci0jZW5kaWYKIAogICAgIGlmIChy
ZWN0Q29udGFpbnNDYW52YXMoZHN0UmVjdCkpIHsKICAgICAgICAgYy0+ZHJhd0ltYWdlQnVmZmVy
KCpidWZmZXIsIGRzdFJlY3QsIHNyY1JlY3QsIHsgc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUsIHN0
YXRlKCkuZ2xvYmFsQmxlbmQgfSk7CkBAIC0xNjQzLDcgKzE2MzQsNyBAQCBFeGNlcHRpb25Pcjx2
b2lkPiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3SW1hZ2UoSFRNTFZpZGVvRWxl
bWVudCYgdmlkZQogCiAgICAgY2hlY2tPcmlnaW4oJnZpZGVvKTsKIAotI2lmIFVTRShDRykgfHwg
KEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICYmIFVTRShHU1RSRUFNRVJfR0wpICYmIFVT
RShDQUlSTykpCisjaWYgVVNFKENHKQogICAgIGlmIChOYXRpdmVJbWFnZVB0ciBpbWFnZSA9IHZp
ZGVvLm5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSkgewogICAgICAgICBjLT5kcmF3TmF0aXZl
SW1hZ2UoaW1hZ2UsIEZsb2F0U2l6ZSh2aWRlby52aWRlb1dpZHRoKCksIHZpZGVvLnZpZGVvSGVp
Z2h0KCkpLCBkc3RSZWN0LCBzcmNSZWN0KTsKICAgICAgICAgaWYgKHJlY3RDb250YWluc0NhbnZh
cyhkc3RSZWN0KSkKQEAgLTE5NDksNyArMTk0MCw3IEBAIEV4Y2VwdGlvbk9yPFJlZlB0cjxDYW52
YXNQYXR0ZXJuPj4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Y3JlYXRlUGF0dGVybihI
CiAgICAgY2hlY2tPcmlnaW4oJnZpZGVvRWxlbWVudCk7CiAgICAgYm9vbCBvcmlnaW5DbGVhbiA9
IGNhbnZhc0Jhc2UoKS5vcmlnaW5DbGVhbigpOwogCi0jaWYgVVNFKENHKSB8fCAoRU5BQkxFKEFD
Q0VMRVJBVEVEXzJEX0NBTlZBUykgJiYgVVNFKEdTVFJFQU1FUl9HTCkgJiYgVVNFKENBSVJPKSkK
KyNpZiBVU0UoQ0cpCiAgICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2UgPSB2aWRlb0VsZW1lbnQubmF0
aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpKQogICAgICAgICByZXR1cm4gUmVmUHRyPENhbnZhc1Bh
dHRlcm4+IHsgQ2FudmFzUGF0dGVybjo6Y3JlYXRlKEJpdG1hcEltYWdlOjpjcmVhdGUoV1RGTW92
ZShuYXRpdmVJbWFnZSkpLCByZXBlYXRYLCByZXBlYXRZLCBvcmlnaW5DbGVhbikgfTsKICNlbmRp
ZgpAQCAtMTk5MywyMCArMTk4NCw2IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZTo6ZGlkRHJhdyhjb25zdCBGbG9hdFJlY3QmIHIsIHVuc2lnbmVkIG9wdGlvbnMpCiAgICAgaWYg
KCFzdGF0ZSgpLmhhc0ludmVydGlibGVUcmFuc2Zvcm0pCiAgICAgICAgIHJldHVybjsKIAotI2lm
IEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCi0gICAgLy8gSWYgd2UgYXJlIGRyYXdpbmcg
dG8gaGFyZHdhcmUgYW5kIHdlIGhhdmUgYSBjb21wb3NpdGVkIGxheWVyLCBqdXN0IGNhbGwgY29u
dGVudENoYW5nZWQoKS4KLSAgICBpZiAoaXNBY2NlbGVyYXRlZCgpICYmIGlzPEhUTUxDYW52YXNF
bGVtZW50PihjYW52YXNCYXNlKCkpKSB7Ci0gICAgICAgIGF1dG8mIGNhbnZhcyA9IGRvd25jYXN0
PEhUTUxDYW52YXNFbGVtZW50PihjYW52YXNCYXNlKCkpOwotICAgICAgICBSZW5kZXJCb3gqIHJl
bmRlckJveCA9IGNhbnZhcy5yZW5kZXJCb3goKTsKLSAgICAgICAgaWYgKHJlbmRlckJveCAmJiBy
ZW5kZXJCb3gtPmhhc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKSkgewotICAgICAgICAgICAgcmVu
ZGVyQm94LT5jb250ZW50Q2hhbmdlZChDYW52YXNQaXhlbHNDaGFuZ2VkKTsKLSAgICAgICAgICAg
IGNhbnZhcy5jbGVhckNvcGllZEltYWdlKCk7Ci0gICAgICAgICAgICBjYW52YXMubm90aWZ5T2Jz
ZXJ2ZXJzQ2FudmFzQ2hhbmdlZChyKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
ICAgIH0KLSNlbmRpZgotCiAgICAgRmxvYXRSZWN0IGRpcnR5UmVjdCA9IHI7CiAgICAgaWYgKG9w
dGlvbnMgJiBDYW52YXNEaWREcmF3QXBwbHlUcmFuc2Zvcm0pIHsKICAgICAgICAgQWZmaW5lVHJh
bnNmb3JtIGN0bSA9IHN0YXRlKCkudHJhbnNmb3JtOwpAQCAtMjE5OCwxOCArMjE3NSw2IEBAIHZv
aWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6aW5mbGF0ZVN0cm9rZVJlY3QoRmxvYXRS
ZWN0JiByZWN0KSBjb25zdAogICAgIHJlY3QuaW5mbGF0ZShkZWx0YSk7CiB9CiAKLSNpZiBFTkFC
TEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQotCi1QbGF0Zm9ybUxheWVyKiBDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkRCYXNlOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKLXsKLSAgICBpZiAoYXV0byog
YnVmZmVyID0gY2FudmFzQmFzZSgpLmJ1ZmZlcigpKQotICAgICAgICByZXR1cm4gYnVmZmVyLT5w
bGF0Zm9ybUxheWVyKCk7Ci0KLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotI2VuZGlmCi0KIHN0
YXRpYyBpbmxpbmUgSW50ZXJwb2xhdGlvblF1YWxpdHkgc21vb3RoaW5nVG9JbnRlcnBvbGF0aW9u
UXVhbGl0eShJbWFnZVNtb290aGluZ1F1YWxpdHkgcXVhbGl0eSkKIHsKICAgICBzd2l0Y2ggKHF1
YWxpdHkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyREJhc2UuaAppbmRleCBhOWU1OGVhMGY3ZDMyNjAzYjNjZjQ4ZWJh
MDU3ZTliMzUxNTVmNDM3Li40NjhlZTM4OGI2MTYyZDRmYjFhMmY3NjVhZmRhMjFhNDg5OWIxMzky
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkRCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEQmFzZS5oCkBAIC0zNjksMTAgKzM2OSw2IEBAIHByb3RlY3RlZDoKIAog
ICAgIGJvb2wgaGFzSW52ZXJ0aWJsZVRyYW5zZm9ybSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHN0YXRlKCkuaGFzSW52ZXJ0aWJsZVRyYW5zZm9ybTsgfQogCi0jaWYgRU5BQkxFKEFDQ0VMRVJB
VEVEXzJEX0NBTlZBUykKLSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Qg
b3ZlcnJpZGU7Ci0jZW5kaWYKLQogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBNYXhTYXZlQ291
bnQgPSAxMDI0ICogMTY7CiAgICAgVmVjdG9yPFN0YXRlLCAxPiBtX3N0YXRlU3RhY2s7CiAgICAg
dW5zaWduZWQgbV91bnJlYWxpemVkU2F2ZUNvdW50IHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dC5jcHAK
aW5kZXggZGUxZjc3NDY4NjE3Yzc4ZDA3MGY0NzVkMmIyNGM0ZDgyNDZkNGVhNS4uNTQyMGY1MDg0
ZjkxMTIzOWIzZjBmMTc1NjI3NDFhYTM4N2JhYTBjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9JbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQuY3BwCkBA
IC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9D
QVRFRF9JTVBMKEltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dCk7CiAKLSNpZiBVU0UoSU9TVVJG
QUNFX0NBTlZBU19CQUNLSU5HX1NUT1JFKSB8fCBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFT
KQorI2lmIFVTRShJT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJTkdfU1RPUkUpCiBzdGF0aWMgUmVuZGVy
aW5nTW9kZSBidWZmZXJSZW5kZXJpbmdNb2RlID0gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQ7
CiAjZWxzZQogc3RhdGljIFJlbmRlcmluZ01vZGUgYnVmZmVyUmVuZGVyaW5nTW9kZSA9IFJlbmRl
cmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9DYWlyby5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhaXJvLmNtYWtlCmlu
ZGV4IGZjNmM1ZjNjZDA0NjI2OTU2NjgyMmMwOGE0ODJjYzNiZDZhODgzYzAuLmMxYjUzNjA1NzEz
Nzc0ZGMwMDZkMDI4ZWRhN2M2YTgyMTNkNmNjYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0NhaXJvLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhaXJv
LmNtYWtlCkBAIC0xNCw3ICsxNCw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfUFJJVkFURV9GUkFN
RVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVz
LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8u
aAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmgK
LSAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvR0xTdXJmYWNlQmFj
a2VuZC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0ltYWdl
U3VyZmFjZUJhY2tlbmQuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVy
Q2Fpcm9TdXJmYWNlQmFja2VuZC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZv
cm1Db250ZXh0Q2Fpcm8uaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU291
cmNlc0NhaXJvLnR4dCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NvdXJjZXNDYWlyby50eHQK
aW5kZXggMjFkOTNkMDFhODBjMzc3N2QwMDRmMTY1MzFhNjFhN2EyMjEwZDNiNy4uNWYwMTQ5NGYz
Y2ExZTMxZDc0N2JmN2M3YWZiNzZhZDBjZDdmNjcwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU291cmNlc0NhaXJvLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Tb3VyY2VzQ2Fpcm8udHh0CkBAIC0zMSw3ICszMSw2IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0dyYXBoaWNzQ29udGV4dEdMQ2Fpcm8uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9H
cmFwaGljc0NvbnRleHRDYWlyby5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNz
Q29udGV4dEltcGxDYWlyby5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVy
Q2Fpcm9CYWNrZW5kLmNwcAotcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWly
b0dMU3VyZmFjZUJhY2tlbmQuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZl
ckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0lt
YWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0ltYWdlQnVmZmVyVXRpbGl0aWVzQ2Fpcm8uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dMQ29udGV4dC5oCmluZGV4IDZlY2U4OTBhYWZkODZiOWY1ZDI4ODE1YmVjMjll
MTE0NWUxY2JkZmQuLmU2MjI5MzE3OTg4MDdkZmYwYjA1Y2M3M2JlMmViN2VkNzEzNDdlMGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5oCkBAIC03NCwx
MCArNzQsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNFR0xDb250ZXh0KCkgY29u
c3QgPSAwOwogCi0jaWYgVVNFKENBSVJPKQotICAgIHZpcnR1YWwgY2Fpcm9fZGV2aWNlX3QqIGNh
aXJvRGV2aWNlKCkgPSAwOwotI2VuZGlmCi0KICNpZiBFTkFCTEUoR1JBUEhJQ1NfQ09OVEVYVF9H
TCkKICAgICB2aXJ0dWFsIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0wgcGxhdGZvcm1Db250ZXh0
KCkgPSAwOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9QbGF0Zm9ybUltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9QbGF0Zm9ybUltYWdlQnVmZmVyLmgKaW5kZXggNzYzODk3OGI4NWU0YTczNjNjNDIyNzgw
YzZmMzdmNjgxMzI1ZDU1NS4uYjA1ZmE2NTE2OTcxZDE3NjcxMzFkNTZhNDYzOTM1M2VmOTRlNDky
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1J
bWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRm
b3JtSW1hZ2VCdWZmZXIuaApAQCAtMzgsOCArMzgsNiBAQAogCiAjaWYgSEFWRShJT1NVUkZBQ0Up
CiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmgiCi0jZWxpZiBVU0UoQ0FJ
Uk8pICYmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCi0jaW5jbHVkZSAiSW1hZ2VCdWZm
ZXJDYWlyb0dMU3VyZmFjZUJhY2tlbmQuaCIKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC01NCw4ICs1Miw2IEBAIHVzaW5nIFVuYWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlckJhY2tlbmQg
PSBJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZDsKIAogI2lmIEhBVkUoSU9TVVJG
QUNFKQogdXNpbmcgQWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlckJhY2tlbmQgPSBJbWFnZUJ1ZmZlcklP
U3VyZmFjZUJhY2tlbmQ7Ci0jZWxpZiBVU0UoQ0FJUk8pICYmIEVOQUJMRShBQ0NFTEVSQVRFRF8y
RF9DQU5WQVMpCi11c2luZyBBY2NlbGVyYXRlZEltYWdlQnVmZmVyQmFja2VuZCA9IEltYWdlQnVm
ZmVyQ2Fpcm9HTFN1cmZhY2VCYWNrZW5kOwogI2Vsc2UKIHVzaW5nIEFjY2VsZXJhdGVkSW1hZ2VC
dWZmZXJCYWNrZW5kID0gVW5hY2NlbGVyYXRlZEltYWdlQnVmZmVyQmFja2VuZDsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9V
dGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fp
cm9VdGlsaXRpZXMuY3BwCmluZGV4IDA4NWM3MGRmZmQ0OTc4MDljNzU0MDNiNWViNDg5NzJkNjg3
NGUwODcuLjc0NGRmZTFiY2YxMzEyMGMzMGRmM2VhNGQ3MDJlZGM5YzcyMTE4YzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0
aWxpdGllcy5jcHAKQEAgLTQzLDEzICs0Myw2IEBACiAjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5
Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCi0jaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJE
X0NBTlZBUykKLSNpZiBVU0UoRUdMKSAmJiBVU0UoTElCRVBPWFkpCi0jaW5jbHVkZSAiRXBveHlF
R0wuaCIKLSNlbmRpZgotI2luY2x1ZGUgPGNhaXJvLWdsLmg+Ci0jZW5kaWYKLQogI2lmIE9TKFdJ
TkRPV1MpCiAjaW5jbHVkZSA8Y2Fpcm8td2luMzIuaD4KICNlbmRpZgpAQCAtMzIxLDEwICszMTQs
NiBAQCBJbnRTaXplIGNhaXJvU3VyZmFjZVNpemUoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlKQog
ICAgIHN3aXRjaCAoY2Fpcm9fc3VyZmFjZV9nZXRfdHlwZShzdXJmYWNlKSkgewogICAgIGNhc2Ug
Q0FJUk9fU1VSRkFDRV9UWVBFX0lNQUdFOgogICAgICAgICByZXR1cm4gSW50U2l6ZShjYWlyb19p
bWFnZV9zdXJmYWNlX2dldF93aWR0aChzdXJmYWNlKSwgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRf
aGVpZ2h0KHN1cmZhY2UpKTsKLSNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQotICAg
IGNhc2UgQ0FJUk9fU1VSRkFDRV9UWVBFX0dMOgotICAgICAgICByZXR1cm4gSW50U2l6ZShjYWly
b19nbF9zdXJmYWNlX2dldF93aWR0aChzdXJmYWNlKSwgY2Fpcm9fZ2xfc3VyZmFjZV9nZXRfaGVp
Z2h0KHN1cmZhY2UpKTsKLSNlbmRpZgogI2lmIE9TKFdJTkRPV1MpCiAgICAgY2FzZSBDQUlST19T
VVJGQUNFX1RZUEVfV0lOMzI6CiAgICAgICAgIHN1cmZhY2UgPSBjYWlyb193aW4zMl9zdXJmYWNl
X2dldF9pbWFnZShzdXJmYWNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9HTFN1cmZhY2VCYWNrZW5kLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9HTFN1
cmZhY2VCYWNrZW5kLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDM2MzcyZjkx
OWU3ZWNlOGNiYzZhMjYzYzQ4OWM5OWUwZTg3NjI0My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9JbWFnZUJ1ZmZlckNhaXJvR0xTdXJmYWNlQmFja2VuZC5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSwyNjggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiBOaWtvbGFzIFppbW1l
cm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAwNyBIb2xnZXIg
SGFucyBQZXRlciBGcmV5dGhlciA8emVja2VAc2VsZmlzaC5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMp
IDIwMDgsIDIwMDkgRGlyayBTY2h1bHplIDxrcml0QHdlYmtpdC5vcmc+Ci0gKiBDb3B5cmlnaHQg
KEMpIDIwMTAgVG9yY2ggTW9iaWxlIChCZWlqaW5nKSBDby4gTHRkLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJJbWFnZUJ1ZmZlckNhaXJvR0xTdXJmYWNlQmFja2VuZC5o
IgotCi0jaWYgVVNFKENBSVJPKSAmJiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLSNpbmNsdWRlICJHTENvbnRleHQuaCIKLSNpbmNsdWRlICJU
ZXh0dXJlTWFwcGVyR0wuaCIKLSNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgotCi0j
aWYgVVNFKEVHTCkKLSNpZiBVU0UoTElCRVBPWFkpCi0jaW5jbHVkZSAiRXBveHlFR0wuaCIKLSNl
bHNlCi0jaW5jbHVkZSA8RUdML2VnbC5oPgotI2VuZGlmCi0jZW5kaWYKLSNpbmNsdWRlIDxjYWly
by1nbC5oPgotCi0jaWYgVVNFKExJQkVQT1hZKQotI2luY2x1ZGUgPGVwb3h5L2dsLmg+Ci0jZWxp
ZiBVU0UoT1BFTkdMX0VTKQotI2luY2x1ZGUgPEdMRVMyL2dsMi5oPgotI2Vsc2UKLSNpbmNsdWRl
ICJPcGVuR0xTaGltcy5oIgotI2VuZGlmCi0KLSNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1Mp
Ci0jaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuaCIKLSNpbmNsdWRl
ICJUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmgiCi0jZW5kaWYKLQotV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRF9JTVBMKEltYWdlQnVmZmVyQ2Fpcm9HTFN1cmZhY2VCYWNrZW5kKTsKLQot
c3RhdGljIGlubGluZSB2b2lkIGNsZWFyU3VyZmFjZShjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2Up
Ci17Ci0gICAgUmVmUHRyPGNhaXJvX3Q+IGNyID0gYWRvcHRSZWYoY2Fpcm9fY3JlYXRlKHN1cmZh
Y2UpKTsKLSAgICBjYWlyb19zZXRfb3BlcmF0b3IoY3IuZ2V0KCksIENBSVJPX09QRVJBVE9SX0NM
RUFSKTsKLSAgICBjYWlyb19wYWludChjci5nZXQoKSk7Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlckNhaXJvR0xTdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJDYWlyb0dMU3VyZmFj
ZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25T
Y2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBIb3N0V2luZG93KikKLXsKLSAgICBJ
bnRTaXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2VuZFNpemUoc2l6ZSwgcmVzb2x1dGlv
blNjYWxlKTsKLSAgICBpZiAoYmFja2VuZFNpemUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLQotICAgIGF1dG8qIGNvbnRleHQgPSBQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERp
c3BsYXlGb3JDb21wb3NpdGluZygpLnNoYXJpbmdHTENvbnRleHQoKTsKLSAgICBjb250ZXh0LT5t
YWtlQ29udGV4dEN1cnJlbnQoKTsKLQotICAgIC8vIFdlIG11c3QgZ2VuZXJhdGUgdGhlIHRleHR1
cmUgb3Vyc2VsdmVzLCBiZWNhdXNlIHRoZXJlIGlzIG5vIENhaXJvIEFQSSBmb3IgZXh0cmFjdGlu
ZyBpdAotICAgIC8vIGZyb20gYSBwcmUtZXhpc3Rpbmcgc3VyZmFjZS4KLSAgICB1aW50MzJfdCB0
ZXh0dXJlCi0gICAgZ2xHZW5UZXh0dXJlcygxLCAmdGV4dHVyZSk7Ci0gICAgZ2xCaW5kVGV4dHVy
ZShHTF9URVhUVVJFXzJELCB0ZXh0dXJlKTsKLSAgICBnbFRleFBhcmFtZXRlcmYoR0xfVEVYVFVS
RV8yRCwgR0xfVEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOwotICAgIGdsVGV4UGFy
YW1ldGVyZihHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURH
RSk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJ
TFRFUiwgR0xfTElORUFSKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xf
VEVYVFVSRV9NQUdfRklMVEVSLCBHTF9MSU5FQVIpOwotCi0gICAgZ2xQaXhlbFN0b3JlaShHTF9V
TlBBQ0tfQUxJR05NRU5ULCAxKTsKLQotICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAw
IC8qIGxldmVsICovLCBHTF9SR0JBLCBiYWNrZW5kU2l6ZS53aWR0aCgpLCBiYWNrZW5kU2l6ZS5o
ZWlnaHQoKSwgMCAvKiBib3JkZXIgKi8sIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIDApOwot
Ci0gICAgY2Fpcm9fZGV2aWNlX3QqIGRldmljZSA9IGNvbnRleHQtPmNhaXJvRGV2aWNlKCk7Ci0K
LSAgICAvLyBUaHJlYWQtYXdhcmVuZXNzIGlzIGEgaHVnZSBwZXJmb3JtYW5jZSBoaXQgb24gbm9u
LUludGVsIGRyaXZlcnMuCi0gICAgY2Fpcm9fZ2xfZGV2aWNlX3NldF90aHJlYWRfYXdhcmUoZGV2
aWNlLCBGQUxTRSk7Ci0KLSAgICBhdXRvIHN1cmZhY2UgPSBhZG9wdFJlZihjYWlyb19nbF9zdXJm
YWNlX2NyZWF0ZV9mb3JfdGV4dHVyZShkZXZpY2UsIENBSVJPX0NPTlRFTlRfQ09MT1JfQUxQSEEs
IHRleHR1cmUsIGJhY2tlbmRTaXplLndpZHRoKCksIGJhY2tlbmRTaXplLmhlaWdodCgpKSk7Ci0g
ICAgaWYgKGNhaXJvX3N1cmZhY2Vfc3RhdHVzKHN1cmZhY2UpICE9IENBSVJPX1NUQVRVU19TVUND
RVNTKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGNsZWFyU3VyZmFjZShzdXJmYWNl
LmdldCgpKTsKLQotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDYWlyb0dM
U3VyZmFjZUJhY2tlbmQ+KG5ldyBJbWFnZUJ1ZmZlckNhaXJvR0xTdXJmYWNlQmFja2VuZChzaXpl
LCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBXVEZNb3ZlKHN1cmZh
Y2UpLCB0ZXh0dXJlKSk7Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNhaXJvR0xT
dXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJDYWlyb0dMU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShj
b25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpCi17Ci0gICAgcmV0
dXJuIEltYWdlQnVmZmVyQ2Fpcm9HTFN1cmZhY2VCYWNrZW5kOjpjcmVhdGUoc2l6ZSwgMSwgQ29s
b3JTcGFjZTo6U1JHQiwgbnVsbHB0cik7Ci19Ci0KLUltYWdlQnVmZmVyQ2Fpcm9HTFN1cmZhY2VC
YWNrZW5kOjpJbWFnZUJ1ZmZlckNhaXJvR0xTdXJmYWNlQmFja2VuZChjb25zdCBGbG9hdFNpemUm
IGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+JiYg
c3VyZmFjZSwgdWludDMyX3QgdGV4dHVyZSkKLSAgICA6IEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNl
QmFja2VuZChsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JT
cGFjZSwgV1RGTW92ZShzdXJmYWNlKSkKLSAgICAsIG1fdGV4dHVyZSh0ZXh0dXJlKQotewotI2lm
IFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKLSNpZiBVU0UoTklDT1NJQSkKLSAgICBtX25pY29z
aWFMYXllciA9IE5pY29zaWE6OkNvbnRlbnRMYXllcjo6Y3JlYXRlKE5pY29zaWE6OkNvbnRlbnRM
YXllclRleHR1cmVNYXBwZXJJbXBsOjpjcmVhdGVGYWN0b3J5KCp0aGlzKSk7Ci0jZWxzZQotICAg
IG1fcGxhdGZvcm1MYXllclByb3h5ID0gYWRvcHRSZWYobmV3IFRleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyUHJveHkpOwotI2VuZGlmCi0jZW5kaWYKLX0KLQotSW1hZ2VCdWZmZXJDYWlyb0dMU3Vy
ZmFjZUJhY2tlbmQ6On5JbWFnZUJ1ZmZlckNhaXJvR0xTdXJmYWNlQmFja2VuZCgpCi17Ci0jaWYg
VVNFKENPT1JESU5BVEVEX0dSQVBISUNTKSAmJiBVU0UoTklDT1NJQSkKLSAgICBkb3duY2FzdDxO
aWNvc2lhOjpDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbD4obV9uaWNvc2lhTGF5ZXItPmlt
cGwoKSkuaW52YWxpZGF0ZUNsaWVudCgpOwotI2VuZGlmCi0KLSAgICBHTENvbnRleHQqIHByZXZp
b3VzQWN0aXZlQ29udGV4dCA9IEdMQ29udGV4dDo6Y3VycmVudCgpOwotICAgIFBsYXRmb3JtRGlz
cGxheTo6c2hhcmVkRGlzcGxheUZvckNvbXBvc2l0aW5nKCkuc2hhcmluZ0dMQ29udGV4dCgpLT5t
YWtlQ29udGV4dEN1cnJlbnQoKTsKLQotICAgIGlmIChtX3RleHR1cmUpCi0gICAgICAgIGdsRGVs
ZXRlVGV4dHVyZXMoMSwgJm1fdGV4dHVyZSk7Ci0KLSNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJ
Q1MpCi0gICAgaWYgKG1fY29tcG9zaXRvclRleHR1cmUpCi0gICAgICAgIGdsRGVsZXRlVGV4dHVy
ZXMoMSwgJm1fY29tcG9zaXRvclRleHR1cmUpOwotI2VuZGlmCi0KLSAgICBpZiAocHJldmlvdXNB
Y3RpdmVDb250ZXh0KQotICAgICAgICBwcmV2aW91c0FjdGl2ZUNvbnRleHQtPm1ha2VDb250ZXh0
Q3VycmVudCgpOwotfQotCi1QbGF0Zm9ybUxheWVyKiBJbWFnZUJ1ZmZlcjo6cGxhdGZvcm1MYXll
cigpIGNvbnN0Ci17Ci0jaWYgVVNFKE5JQ09TSUEpCi0gICAgcmV0dXJuIG1fbmljb3NpYUxheWVy
LmdldCgpOwotI2Vsc2UKLSAgICBpZiAobV90ZXh0dXJlKQotICAgICAgICByZXR1cm4gdGhpczsK
LSNlbmRpZgotICAgIHJldHVybiBudWxscHRyOwotfQotCi1ib29sIEltYWdlQnVmZmVyQ2Fpcm9H
TFN1cmZhY2VCYWNrZW5kOjpjb3B5VG9QbGF0Zm9ybVRleHR1cmUoR0NHTGVudW0gdGFyZ2V0LCBQ
bGF0Zm9ybUdMT2JqZWN0IGRlc3RpbmF0aW9uVGV4dHVyZSwgR0NHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkKLXsKLSAgICBBU1NFUlRfV0lU
SF9NRVNTQUdFKG1fcmVzb2x1dGlvblNjYWxlID09IDEuMCwgIlNpbmNlIHRoZSBIaURQSSBDYW52
YXMgZmVhdHVyZSBpcyByZW1vdmVkLCB0aGUgcmVzb2x1dGlvbiBmYWN0b3IgaGVyZSBpcyBhbHdh
eXMgMS4iKTsKLSAgICBpZiAocHJlbXVsdGlwbHlBbHBoYSB8fCBmbGlwWSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgaWYgKCFtX3RleHR1cmUpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIEdDM0RlbnVtIGJpbmRUZXh0dXJlVGFyZ2V0OwotICAgIHN3aXRjaCAodGFyZ2V0KSB7
Ci0gICAgY2FzZSBHTF9URVhUVVJFXzJEOgotICAgICAgICBiaW5kVGV4dHVyZVRhcmdldCA9IEdM
X1RFWFRVUkVfMkQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01B
UF9QT1NJVElWRV9YOgotICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YOgot
ICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZOgotICAgIGNhc2UgR0xfVEVY
VFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZOgotICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9Q
T1NJVElWRV9aOgotICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aOgotICAg
ICAgICBiaW5kVGV4dHVyZVRhcmdldCA9IEdMX1RFWFRVUkVfQ1VCRV9NQVA7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBj
YWlyb19zdXJmYWNlX2ZsdXNoKG1fc3VyZmFjZS5nZXQoKSk7Ci0KLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8R0xDb250ZXh0PiBjb250ZXh0ID0gR0xDb250ZXh0OjpjcmVhdGVPZmZzY3JlZW5Db250ZXh0
KCZQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXlGb3JDb21wb3NpdGluZygpKTsKLSAgICBj
b250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICB1aW50MzJfdCBmYm87Ci0gICAgZ2xH
ZW5GcmFtZWJ1ZmZlcnMoMSwgJmZibyk7Ci0gICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVC
VUZGRVIsIGZibyk7Ci0gICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwg
R0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsIG1fdGV4dHVyZSwgMCk7Ci0gICAg
Z2xCaW5kVGV4dHVyZShiaW5kVGV4dHVyZVRhcmdldCwgZGVzdGluYXRpb25UZXh0dXJlKTsKLSAg
ICBnbENvcHlUZXhJbWFnZTJEKHRhcmdldCwgMCwgaW50ZXJuYWxmb3JtYXQsIDAsIDAsIG1fYmFj
a2VuZFNpemUud2lkdGgoKSwgbV9iYWNrZW5kU2l6ZS5oZWlnaHQoKSwgMCk7Ci0gICAgZ2xCaW5k
VGV4dHVyZShiaW5kVGV4dHVyZVRhcmdldCwgMCk7Ci0gICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xf
RlJBTUVCVUZGRVIsIDApOwotICAgIGdsRmx1c2goKTsKLSAgICBnbERlbGV0ZUZyYW1lYnVmZmVy
cygxLCAmZmJvKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotI2lmIFVTRShDT09SRElOQVRFRF9H
UkFQSElDUykKLXZvaWQgSW1hZ2VCdWZmZXJDYWlyb0dMU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZUNv
bXBvc2l0b3JCdWZmZXIoKQotewotICAgIGF1dG8qIGNvbnRleHQgPSBQbGF0Zm9ybURpc3BsYXk6
OnNoYXJlZERpc3BsYXlGb3JDb21wb3NpdGluZygpLnNoYXJpbmdHTENvbnRleHQoKTsKLSAgICBj
b250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKLQotICAgIGdsR2VuVGV4dHVyZXMoMSwgJm1f
Y29tcG9zaXRvclRleHR1cmUpOwotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbV9j
b21wb3NpdG9yVGV4dHVyZSk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJmKEdMX1RFWFRVUkVfMkQsIEdM
X1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsKLSAgICBnbFRleFBhcmFtZXRlcmYo
R0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VER0UpOwotICAg
IGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdM
X0xJTkVBUik7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVf
TUFHX0ZJTFRFUiwgR0xfTElORUFSKTsKLSAgICBnbFBpeGVsU3RvcmVpKEdMX1VOUEFDS19BTElH
Tk1FTlQsIDEpOwotICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwICwgR0xfUkdCQSwg
bV9iYWNrZW5kU2l6ZS53aWR0aCgpLCBtX2JhY2tlbmRTaXplLmhlaWdodCgpLCAwLCBHTF9SR0JB
LCBHTF9VTlNJR05FRF9CWVRFLCAwKTsKLQotICAgIG1fY29tcG9zaXRvclN1cmZhY2UgPSBhZG9w
dFJlZihjYWlyb19nbF9zdXJmYWNlX2NyZWF0ZV9mb3JfdGV4dHVyZShjb250ZXh0LT5jYWlyb0Rl
dmljZSgpLCBDQUlST19DT05URU5UX0NPTE9SX0FMUEhBLCBtX2NvbXBvc2l0b3JUZXh0dXJlLCBt
X2JhY2tlbmRTaXplLndpZHRoKCksIG1fYmFja2VuZFNpemUuaGVpZ2h0KCkpKTsKLSAgICBtX2Nv
bXBvc2l0b3JDciA9IGFkb3B0UmVmKGNhaXJvX2NyZWF0ZShtX2NvbXBvc2l0b3JTdXJmYWNlLmdl
dCgpKSk7Ci0gICAgY2Fpcm9fc2V0X2FudGlhbGlhcyhtX2NvbXBvc2l0b3JDci5nZXQoKSwgQ0FJ
Uk9fQU5USUFMSUFTX05PTkUpOwotfQotCi12b2lkIEltYWdlQnVmZmVyQ2Fpcm9HTFN1cmZhY2VC
YWNrZW5kOjpzd2FwQnVmZmVyc0lmTmVlZGVkKCkKLXsKLSAgICBHTENvbnRleHQqIHByZXZpb3Vz
QWN0aXZlQ29udGV4dCA9IEdMQ29udGV4dDo6Y3VycmVudCgpOwotCi0gICAgaWYgKCFtX2NvbXBv
c2l0b3JUZXh0dXJlKSB7Ci0gICAgICAgIGNyZWF0ZUNvbXBvc2l0b3JCdWZmZXIoKTsKLQotICAg
ICAgICBhdXRvIHByb3h5T3BlcmF0aW9uID0KLSAgICAgICAgICAgIFt0aGlzXShUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllclByb3h5JiBwcm94eSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBMb2NrSG9sZGVyIGhvbGRlcihwcm94eS5sb2NrKCkpOwotICAgICAgICAgICAgICAgIHBy
b3h5LnB1c2hOZXh0QnVmZmVyKG1ha2VVbmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJC
dWZmZXI+KG1fY29tcG9zaXRvclRleHR1cmUsIG1fYmFja2VuZFNpemUsIFRleHR1cmVNYXBwZXJH
TDo6U2hvdWxkQmxlbmQsIEdMX1JHQkEpKTsKLSAgICAgICAgICAgIH07Ci0jaWYgVVNFKE5JQ09T
SUEpCi0gICAgICAgIHByb3h5T3BlcmF0aW9uKGRvd25jYXN0PE5pY29zaWE6OkNvbnRlbnRMYXll
clRleHR1cmVNYXBwZXJJbXBsPihtX25pY29zaWFMYXllci0+aW1wbCgpKS5wcm94eSgpKTsKLSNl
bHNlCi0gICAgICAgIHByb3h5T3BlcmF0aW9uKCptX3BsYXRmb3JtTGF5ZXJQcm94eSk7Ci0jZW5k
aWYKLSAgICB9Ci0KLSAgICAvLyBJdCB3b3VsZCBiZSBncmVhdCBpZiB3ZSBjb3VsZCBqdXN0IHN3
YXAgdGhlIGJ1ZmZlcnMgaGVyZSBhcyB3ZSBkbyB3aXRoIHdlYmdsLCBidXQgdGhhdCBicmVha3Mg
dGhlIGNhc2VzCi0gICAgLy8gd2hlcmUgb25lIGZyYW1lIHVzZXMgdGhlIGNvbnRlbnQgYWxyZWFk
eSByZW5kZXJlZCBpbiB0aGUgcHJldmlvdXMgZnJhbWUuIFNvIHdlIGp1c3QgY29weSB0aGUgY29u
dGVudAotICAgIC8vIGludG8gdGhlIGNvbXBvc2l0b3IgYnVmZmVyLgotICAgIGNhaXJvX3NldF9z
b3VyY2Vfc3VyZmFjZShtX2NvbXBvc2l0b3JDci5nZXQoKSwgbV9zdXJmYWNlLmdldCgpLCAwLCAw
KTsKLSAgICBjYWlyb19zZXRfb3BlcmF0b3IobV9jb21wb3NpdG9yQ3IuZ2V0KCksIENBSVJPX09Q
RVJBVE9SX1NPVVJDRSk7Ci0gICAgY2Fpcm9fcGFpbnQobV9jb21wb3NpdG9yQ3IuZ2V0KCkpOwot
Ci0gICAgaWYgKHByZXZpb3VzQWN0aXZlQ29udGV4dCkKLSAgICAgICAgcHJldmlvdXNBY3RpdmVD
b250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKLX0KLSNlbHNlCi12b2lkIEltYWdlQnVmZmVy
Q2Fpcm9HTFN1cmZhY2VCYWNrZW5kOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVy
JiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiBtYXRyaXgsIGZsb2F0IG9wYWNpdHkpCi17Ci0gICAgQVNTRVJUKG1f
dGV4dHVyZSk7Ci0KLSAgICAvLyBDYWlybyBtYXkgY2hhbmdlIHRoZSBhY3RpdmUgY29udGV4dCwg
c28gd2UgbWFrZSBzdXJlIHRvIGNoYW5nZSBpdCBiYWNrIGFmdGVyIGZsdXNoaW5nLgotICAgIEdM
Q29udGV4dCogcHJldmlvdXNBY3RpdmVDb250ZXh0ID0gR0xDb250ZXh0OjpjdXJyZW50KCk7Ci0g
ICAgY2Fpcm9fc3VyZmFjZV9mbHVzaChtX3N1cmZhY2UuZ2V0KCkpOwotICAgIHByZXZpb3VzQWN0
aXZlQ29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7Ci0KLSAgICBzdGF0aWNfY2FzdDxUZXh0
dXJlTWFwcGVyR0wmPih0ZXh0dXJlTWFwcGVyKS5kcmF3VGV4dHVyZShtX3RleHR1cmUsIFRleHR1
cmVNYXBwZXJHTDo6U2hvdWxkQmxlbmQsIG1fYmFja2VuZFNpemUsIHRhcmdldFJlY3QsIG1hdHJp
eCwgb3BhY2l0eSk7Ci19Ci0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gVVNFKENBSVJPKSAmJiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJD
YWlyb0dMU3VyZmFjZUJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9HTFN1cmZhY2VCYWNrZW5kLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGNkZjBmYWU3ZTJjMzQ5ZTIxNjQxOTg0NTVkNDE4YzNjYWI2NzQ3YjQu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0dMU3VyZmFjZUJh
Y2tlbmQuaAorKysgL2Rldi9udWxsCkBAIC0xLDkyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+Ci0gKiBDb3B5
cmlnaHQgKEMpIDIwMDcgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIgPHplY2tlQHNlbGZpc2gu
b3JnPgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IERpcmsgU2NodWx6ZSA8a3JpdEB3ZWJr
aXQub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDEwIFRvcmNoIE1vYmlsZSAoQmVpamluZykgQ28u
IEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIFVTRShDQUlSTykgJiYgRU5BQkxFKEFD
Q0VMRVJBVEVEXzJEX0NBTlZBUykKLQotI2luY2x1ZGUgIkltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNl
QmFja2VuZC5oIgotI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KLQotI2lmIFVTRShOSUNPU0lB
KQotI2luY2x1ZGUgIk5pY29zaWFDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5oIgotI2Vs
c2UKLSNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCi0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1jbGFzcyBJbWFnZUJ1ZmZlckNhaXJvR0xTdXJmYWNlQmFja2VuZAotI2lmIFVTRShO
SUNPU0lBKQotICAgIDogcHVibGljIE5pY29zaWE6OkNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJ
bXBsOjpDbGllbnQKLSNlbHNlCi0gICAgOiBwdWJsaWMgUGxhdGZvcm1MYXllcgotI2VuZGlmCi0g
ICAgLCBwdWJsaWMgSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kIHsKLSAgICBXVEZfTUFL
RV9JU09fQUxMT0NBVEVEKEltYWdlQnVmZmVyQ2Fpcm9HTFN1cmZhY2VCYWNrZW5kKTsKLSAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShJbWFnZUJ1ZmZlckNhaXJvR0xTdXJmYWNlQmFja2VuZCk7Ci1w
dWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNhaXJvR0xTdXJm
YWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgQ29sb3JTcGFjZSwgY29uc3QgSG9zdFdpbmRvdyopOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXJDYWlyb0dMU3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBGbG9h
dFNpemUmLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKLQotICAgIH5JbWFnZUJ1ZmZlckNhaXJv
R0xTdXJmYWNlQmFja2VuZCgpOwotCi0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigp
IGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgY29weVRvUGxhdGZvcm1UZXh0dXJlKEdDR0xlbnVt
IHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBkZXN0aW5hdGlvblRleHR1cmUsIEdDR0xlbnVtIGlu
dGVybmFsZm9ybWF0LCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpIG92ZXJyaWRl
OwotCi1wcml2YXRlOgotICAgIEltYWdlQnVmZmVyQ2Fpcm9HTFN1cmZhY2VCYWNrZW5kKGNvbnN0
IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplLCBmbG9h
dCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+JiYp
OwotCi0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQotICAgIHZvaWQgY3JlYXRlQ29tcG9z
aXRvckJ1ZmZlcigpOwotICAgIHZvaWQgc3dhcEJ1ZmZlcnNJZk5lZWRlZCgpIG92ZXJyaWRlOwot
I2lmICFVU0UoTklDT1NJQSkKLSAgICBSZWZQdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQ
cm94eT4gcHJveHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3BsYXRmb3JtTGF5ZXJQcm94
eS5jb3B5UmVmKCk7IH0KLSNlbmRpZgotI2Vsc2UKLSAgICB2b2lkIHBhaW50VG9UZXh0dXJlTWFw
cGVyKFRleHR1cmVNYXBwZXImLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldCwgY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmLCBmbG9hdCBvcGFjaXR5KTsKLSNlbmRpZgotCi0jaWYgVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTKQotI2lmIFVTRShOSUNPU0lBKQotICAgIFJlZlB0cjxOaWNvc2lhOjpD
b250ZW50TGF5ZXI+IG1fbmljb3NpYUxheWVyOwotI2Vsc2UKLSAgICBSZWZQdHI8VGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJQcm94eT4gbV9wbGF0Zm9ybUxheWVyUHJveHk7Ci0jZW5kaWYKLSAg
ICB1aW50MzJfdCBtX3RleHR1cmU7Ci0gICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gbV9jb21w
b3NpdG9yU3VyZmFjZTsKLSAgICBSZWZQdHI8Y2Fpcm9fdD4gbV9jb21wb3NpdG9yQ3I7Ci0gICAg
dWludDMyX3QgbV9jb21wb3NpdG9yVGV4dHVyZSB7IDAgfTsKLSNlbmRpZgotICAgIHVpbnQzMl90
IG1fdGV4dHVyZSB7IDAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
IC8vIFVTRShDQUlSTykgJiYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHAK
aW5kZXggNmY0MGUzYTRkMDUzNGRmYzJkMTUwNDUwMmNiNWY4MzZjNWM0YjAyOS4uM2E3YTA3MjYw
N2JhYjVmNjA5ODcyNzFhYThlNjNhNmJlZTE0Y2QzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHAKQEAgLTQ1LDE0ICs0
NSw2IEBACiAjaW5jbHVkZSAiT3BlbkdMU2hpbXMuaCIKICNlbmRpZgogCi0jaWYgRU5BQkxFKEFD
Q0VMRVJBVEVEXzJEX0NBTlZBUykKLS8vIGNhaXJvLWdsLmggaW5jbHVkZXMgc29tZSBkZWZpbml0
aW9ucyBmcm9tIEdMWCB0aGF0IGNvbmZsaWN0IHdpdGgKLS8vIHRoZSBvbmVzIHByb3ZpZGVkIGJ5
IHVzLiBTaW5jZSBHTENvbnRleHRFR0wgZG9lc24ndCB1c2UgYW55IEdMWAotLy8gZnVuY3Rpb25z
IHdlIGNhbiBzYWZlbHkgZGlzYWJsZSB0aGVtLgotI3VuZGVmIENBSVJPX0hBU19HTFhfRlVOQ1RJ
T05TCi0jaW5jbHVkZSA8Y2Fpcm8tZ2wuaD4KLSNlbmRpZgotCiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNzUsMTEgKzM2Nyw2IEBAIEdMQ29udGV4
dEVHTDo6R0xDb250ZXh0RUdMKFBsYXRmb3JtRGlzcGxheSYgZGlzcGxheSwgRUdMQ29udGV4dCBj
b250ZXh0LCBFR0xTdXJmCiAKIEdMQ29udGV4dEVHTDo6fkdMQ29udGV4dEVHTCgpCiB7Ci0jaWYg
VVNFKENBSVJPKQotICAgIGlmIChtX2NhaXJvRGV2aWNlKQotICAgICAgICBjYWlyb19kZXZpY2Vf
ZGVzdHJveShtX2NhaXJvRGV2aWNlKTsKLSNlbmRpZgotCiAgICAgRUdMRGlzcGxheSBkaXNwbGF5
ID0gbV9kaXNwbGF5LmVnbERpc3BsYXkoKTsKICAgICBpZiAobV9jb250ZXh0KSB7CiAgICAgICAg
IGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCAwKTsKQEAgLTUwNCwyMCArNDkxLDYg
QEAgdm9pZCBHTENvbnRleHRFR0w6OnN3YXBJbnRlcnZhbChpbnQgaW50ZXJ2YWwpCiAgICAgZWds
U3dhcEludGVydmFsKG1fZGlzcGxheS5lZ2xEaXNwbGF5KCksIGludGVydmFsKTsKIH0KIAotI2lm
IFVTRShDQUlSTykKLWNhaXJvX2RldmljZV90KiBHTENvbnRleHRFR0w6OmNhaXJvRGV2aWNlKCkK
LXsKLSAgICBpZiAobV9jYWlyb0RldmljZSkKLSAgICAgICAgcmV0dXJuIG1fY2Fpcm9EZXZpY2U7
Ci0KLSNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQotICAgIG1fY2Fpcm9EZXZpY2Ug
PSBjYWlyb19lZ2xfZGV2aWNlX2NyZWF0ZShtX2Rpc3BsYXkuZWdsRGlzcGxheSgpLCBtX2NvbnRl
eHQpOwotI2VuZGlmCi0KLSAgICByZXR1cm4gbV9jYWlyb0RldmljZTsKLX0KLSNlbmRpZgotCiAj
aWYgRU5BQkxFKEdSQVBISUNTX0NPTlRFWFRfR0wpCiBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdM
IEdMQ29udGV4dEVHTDo6cGxhdGZvcm1Db250ZXh0KCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuaAppbmRleCA5ZGE2MzIyMDg2
MWIzNjMzNjcwOWYyMWU5NWM0MTc1NmI4ODE3YzJjLi4xYjU0YmI5NWI0ZWNlMzI0N2NmZDZlNDgy
ZGI3OWI3NjIwZDNkYjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9lZ2wvR0xDb250ZXh0RUdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZWdsL0dMQ29udGV4dEVHTC5oCkBAIC02Myw5ICs2Myw2IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBjYW5SZW5kZXJUb0RlZmF1bHRGcmFtZWJ1ZmZlcigpIG92ZXJyaWRlOwogICAgIEludFNp
emUgZGVmYXVsdEZyYW1lQnVmZmVyU2l6ZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgc3dhcEludGVy
dmFsKGludCkgb3ZlcnJpZGU7Ci0jaWYgVVNFKENBSVJPKQotICAgIGNhaXJvX2RldmljZV90KiBj
YWlyb0RldmljZSgpIG92ZXJyaWRlOwotI2VuZGlmCiAgICAgYm9vbCBpc0VHTENvbnRleHQoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKICNpZiBFTkFCTEUoR1JBUEhJQ1NfQ09O
VEVYVF9HTCkKQEAgLTExOCw5ICsxMTUsNiBAQCBwcml2YXRlOgogI2lmIFVTRShXUEVfUkVOREVS
RVIpCiAgICAgc3RydWN0IHdwZV9yZW5kZXJlcl9iYWNrZW5kX2VnbF9vZmZzY3JlZW5fdGFyZ2V0
KiBtX3dwZVRhcmdldCB7IG51bGxwdHIgfTsKICNlbmRpZgotI2lmIFVTRShDQUlSTykKLSAgICBj
YWlyb19kZXZpY2VfdCogbV9jYWlyb0RldmljZSB7IG51bGxwdHIgfTsKLSNlbmRpZgogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmNwcAppbmRleCBhMDZmZjllYjkzYzM4ODRhYjYw
NmZmZjljNmE4M2FiOTNkODhjN2U3Li5jMmNhNGUwYzlmMDYzODQ0YzIzN2IzMjlhNTliYzNmNDZk
YmQ4NGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nbHgv
R0xDb250ZXh0R0xYLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
bHgvR0xDb250ZXh0R0xYLmNwcApAQCAtMjYsMTAgKzI2LDYgQEAKICNpbmNsdWRlIDxHTC9nbHgu
aD4KICNpbmNsdWRlIDxjYWlyby5oPgogCi0jaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZB
UykKLSNpbmNsdWRlIDxjYWlyby1nbC5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogI2lmICFkZWZpbmVkKFBGTkdMWFNXQVBJTlRFUlZBTFNHSVBST0MpCkBAIC0zMjUsOSArMzIx
LDYgQEAgR0xDb250ZXh0R0xYOjpHTENvbnRleHRHTFgoUGxhdGZvcm1EaXNwbGF5JiBkaXNwbGF5
LCBYVW5pcXVlR0xYQ29udGV4dCYmIGNvbnRleHQKIAogR0xDb250ZXh0R0xYOjp+R0xDb250ZXh0
R0xYKCkKIHsKLSAgICBpZiAobV9jYWlyb0RldmljZSkKLSAgICAgICAgY2Fpcm9fZGV2aWNlX2Rl
c3Ryb3kobV9jYWlyb0RldmljZSk7Ci0KICAgICBpZiAobV9jb250ZXh0KSB7CiAgICAgICAgIC8v
IER1ZSB0byBhIGJ1ZyBpbiBzb21lIG52aWRpYSBkcml2ZXJzLCB3ZSBuZWVkIGJpbmQgdGhlIGRl
ZmF1bHQgZnJhbWVidWZmZXIgaW4gYSBjb250ZXh0IGJlZm9yZQogICAgICAgICAvLyBkZXN0cm95
aW5nIGl0IHRvIGF2b2lkIGEgY3Jhc2guIEluIG9yZGVyIHRvIGRvIHRoYXQsIHdlIG5lZWQgdG8g
bWFrZSB0aGUgY29udGV4dCBjdXJyZW50IGFuZCwKQEAgLTQwMSwxOCArMzk0LDYgQEAgdm9pZCBH
TENvbnRleHRHTFg6OnN3YXBJbnRlcnZhbChpbnQgaW50ZXJ2YWwpCiAgICAgZ2xYU3dhcEludGVy
dmFsU0dJKGludGVydmFsKTsKIH0KIAotY2Fpcm9fZGV2aWNlX3QqIEdMQ29udGV4dEdMWDo6Y2Fp
cm9EZXZpY2UoKQotewotICAgIGlmIChtX2NhaXJvRGV2aWNlKQotICAgICAgICByZXR1cm4gbV9j
YWlyb0RldmljZTsKLQotI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICYmIENBSVJP
X0hBU19HTFhfRlVOQ1RJT05TCi0gICAgbV9jYWlyb0RldmljZSA9IGNhaXJvX2dseF9kZXZpY2Vf
Y3JlYXRlKG1feDExRGlzcGxheSwgbV9jb250ZXh0LmdldCgpKTsKLSNlbmRpZgotCi0gICAgcmV0
dXJuIG1fY2Fpcm9EZXZpY2U7Ci19Ci0KICNpZiBFTkFCTEUoR1JBUEhJQ1NfQ09OVEVYVF9HTCkK
IFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0wgR0xDb250ZXh0R0xYOjpwbGF0Zm9ybUNvbnRleHQo
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dM
Q29udGV4dEdMWC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29u
dGV4dEdMWC5oCmluZGV4IDRjNzJhODM4YTczZWU0MDc3YzIzMGMyZjY5NzcyOTc5Njk2ODM4Yzcu
LjFiNWQzNWY2NmZjZDY4YWMyOWU4ZTkwM2NiZWI0YzU2YzQ4MjA5MDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRHTFguaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmgKQEAgLTQ3
LDcgKzQ3LDYgQEAgcHJpdmF0ZToKICAgICBib29sIGNhblJlbmRlclRvRGVmYXVsdEZyYW1lYnVm
ZmVyKCkgb3ZlcnJpZGU7CiAgICAgSW50U2l6ZSBkZWZhdWx0RnJhbWVCdWZmZXJTaXplKCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBzd2FwSW50ZXJ2YWwoaW50KSBvdmVycmlkZTsKLSAgICBjYWlyb19k
ZXZpY2VfdCogY2Fpcm9EZXZpY2UoKSBvdmVycmlkZTsKICAgICBib29sIGlzRUdMQ29udGV4dCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKICNpZiBFTkFCTEUoR1JBUEhJQ1Nf
Q09OVEVYVF9HTCkKQEAgLTY4LDcgKzY3LDYgQEAgcHJpdmF0ZToKICAgICBYVW5pcXVlR0xYUGJ1
ZmZlciBtX3BidWZmZXI7CiAgICAgWFVuaXF1ZVBpeG1hcCBtX3BpeG1hcDsKICAgICBYVW5pcXVl
R0xYUGl4bWFwIG1fZ2x4UGl4bWFwOwotICAgIGNhaXJvX2RldmljZV90KiBtX2NhaXJvRGV2aWNl
IHsgbnVsbHB0ciB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBlNTRkZjI0ZDJiZjJhZWNmOWE5YjBiMzhkN2QxOGVjYzRhZjVkMDlj
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDIyNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDEwLCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQot
ICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQot
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShBQ0NFTEVS
QVRFRF8yRF9DQU5WQVMpCi0KLSNpbmNsdWRlICJUZXh0dXJlLmgiCi0KLSNpbmNsdWRlICJFeHRl
bnNpb25zR0wuaCIKLSNpbmNsdWRlICJGbG9hdFJlY3QuaCIKLSNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTC5oIgotI2luY2x1ZGUgIkludFJlY3QuaCIKLSNpbmNsdWRlIDxhbGdvcml0
aG0+Ci0jaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVB
cnJheS5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVRleHR1cmU6OlRleHR1cmUoR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQsIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8dW5zaWdu
ZWQ+PiB0aWxlVGV4dHVyZUlkcywgRm9ybWF0IGZvcm1hdCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0
LCBpbnQgbWF4VGV4dHVyZVNpemUpCi0gICAgOiBtX2NvbnRleHQoY29udGV4dCkKLSAgICAsIG1f
Zm9ybWF0KGZvcm1hdCkKLSAgICAsIG1fdGlsZXMoSW50U2l6ZShtYXhUZXh0dXJlU2l6ZSwgbWF4
VGV4dHVyZVNpemUpLCBJbnRTaXplKHdpZHRoLCBoZWlnaHQpLCB0cnVlKQotICAgICwgbV90aWxl
VGV4dHVyZUlkcyhXVEZNb3ZlKHRpbGVUZXh0dXJlSWRzKSkKLXsKLX0KLQotVGV4dHVyZTo6flRl
eHR1cmUoKQotewotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3RpbGVUZXh0dXJlSWRz
LT5zaXplKCk7IGkrKykKLSAgICAgICAgbV9jb250ZXh0LT5kZWxldGVUZXh0dXJlKG1fdGlsZVRl
eHR1cmVJZHMtPmF0KGkpKTsKLX0KLQotc3RhdGljIHZvaWQgY29udmVydEZvcm1hdChHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTCogY29udGV4dCwgVGV4dHVyZTo6Rm9ybWF0IGZvcm1hdCwgdW5zaWdu
ZWQqIGdsRm9ybWF0LCB1bnNpZ25lZCogZ2xUeXBlLCBib29sKiBzd2l6emxlKQotewotICAgICpz
d2l6emxlID0gZmFsc2U7Ci0gICAgc3dpdGNoIChmb3JtYXQpIHsKLSAgICBjYXNlIFRleHR1cmU6
OlJHQkE4OgotICAgICAgICAqZ2xGb3JtYXQgPSBHcmFwaGljc0NvbnRleHRHTDo6UkdCQTsKLSAg
ICAgICAgKmdsVHlwZSA9IEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJR05FRF9CWVRFOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIFRleHR1cmU6OkJHUkE4OgotICAgICAgICBpZiAoY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgi
KSkgewotICAgICAgICAgICAgKmdsRm9ybWF0ID0gRXh0ZW5zaW9uc0dMOjpCR1JBX0VYVDsKLSAg
ICAgICAgICAgICpnbFR5cGUgPSBHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfQllURTsKLSAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICpnbEZvcm1hdCA9IEdyYXBoaWNzQ29udGV4dEdM
OjpSR0JBOwotICAgICAgICAgICAgKmdsVHlwZSA9IEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJR05F
RF9CWVRFOwotICAgICAgICAgICAgKnN3aXp6bGUgPSB0cnVlOwotICAgICAgICB9Ci0gICAgICAg
IGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICBicmVhazsKLSAgICB9Ci19Ci0KLVJlZlB0cjxUZXh0dXJlPiBUZXh0dXJlOjpjcmVhdGUo
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQsIEZvcm1hdCBmb3JtYXQsIGludCB3aWR0
aCwgaW50IGhlaWdodCkKLXsKLSAgICBpbnQgbWF4VGV4dHVyZVNpemUgPSAwOwotICAgIGNvbnRl
eHQtPmdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfVEVYVFVSRV9TSVpFLCAmbWF4
VGV4dHVyZVNpemUpOwotICAgIFRpbGluZ0RhdGEgdGlsaW5nKEludFNpemUobWF4VGV4dHVyZVNp
emUsIG1heFRleHR1cmVTaXplKSwgSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KSwgdHJ1ZSk7Ci0KLSAg
ICAvLyBDaGVjayBmb3Igb3ZlcmZsb3cuCi0gICAgaW50IG51bVRpbGVzID0gdGlsaW5nLm51bVRp
bGVzWCgpICogdGlsaW5nLm51bVRpbGVzWSgpOwotICAgIGlmIChudW1UaWxlcyAvIHRpbGluZy5u
dW1UaWxlc1goKSAhPSB0aWxpbmcubnVtVGlsZXNZKCkpIHsKLSAgICAgICAgdGlsaW5nLnNldFRv
dGFsU2l6ZShJbnRTaXplKCkpOwotICAgICAgICBudW1UaWxlcyA9IDA7Ci0gICAgfQotCi0gICAg
YXV0byB0ZXh0dXJlSWRzID0gbWFrZVVuaXF1ZTxWZWN0b3I8dW5zaWduZWQ+PihudW1UaWxlcyk7
Ci0gICAgdGV4dHVyZUlkcy0+ZmlsbCgwLCBudW1UaWxlcyk7Ci0KLSAgICBmb3IgKGludCBpID0g
MDsgaSA8IG51bVRpbGVzOyBpKyspIHsKLSAgICAgICAgaW50IHRleHR1cmVJZCA9IGNvbnRleHQt
PmNyZWF0ZVRleHR1cmUoKTsKLSAgICAgICAgaWYgKCF0ZXh0dXJlSWQpIHsKLSAgICAgICAgICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgbnVtVGlsZXM7IGkrKykKLSAgICAgICAgICAgICAgICBjb250
ZXh0LT5kZWxldGVUZXh0dXJlKHRleHR1cmVJZHMtPmF0KGkpKTsKLSAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwotICAgICAgICB9Ci0gICAgICAgIHRleHR1cmVJZHMtPmF0KGkpID0gdGV4dHVy
ZUlkOwotCi0gICAgICAgIGludCB4SW5kZXggPSBpICUgdGlsaW5nLm51bVRpbGVzWCgpOwotICAg
ICAgICBpbnQgeUluZGV4ID0gaSAvIHRpbGluZy5udW1UaWxlc1goKTsKLSAgICAgICAgSW50UmVj
dCB0aWxlQm91bmRzV2l0aEJvcmRlciA9IHRpbGluZy50aWxlQm91bmRzV2l0aEJvcmRlcih4SW5k
ZXgsIHlJbmRleCk7Ci0KLSAgICAgICAgdW5zaWduZWQgaW50IGdsRm9ybWF0ID0gMDsKLSAgICAg
ICAgdW5zaWduZWQgaW50IGdsVHlwZSA9IDA7Ci0gICAgICAgIGJvb2wgc3dpenpsZTsKLSAgICAg
ICAgY29udmVydEZvcm1hdChjb250ZXh0LCBmb3JtYXQsICZnbEZvcm1hdCwgJmdsVHlwZSwgJnN3
aXp6bGUpOwotICAgICAgICBjb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTDo6
VEVYVFVSRV8yRCwgdGV4dHVyZUlkKTsKLSAgICAgICAgY29udGV4dC0+dGV4SW1hZ2UyRFJlc291
cmNlU2FmZShHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV8yRCwgMCwgZ2xGb3JtYXQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlsZUJvdW5kc1dpdGhCb3JkZXIu
d2lkdGgoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWxlQm91
bmRzV2l0aEJvcmRlci5oZWlnaHQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAwLCBnbEZvcm1hdCwgZ2xUeXBlKTsKLSAgICB9Ci0gICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBUZXh0dXJlKGNvbnRleHQsIFdURk1vdmUodGV4dHVyZUlkcyksIGZvcm1hdCwgd2lkdGgs
IGhlaWdodCwgbWF4VGV4dHVyZVNpemUpKTsKLX0KLQotdGVtcGxhdGUgPGJvb2wgc3dpenpsZT4K
LXN0YXRpYyB1aW50MzJfdCogY29weVN1YlJlY3QodWludDMyX3QqIHNyYywgaW50IHNyY1gsIGlu
dCBzcmNZLCB1aW50MzJfdCogZHN0LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCBzcmNTdHJp
ZGUpCi17Ci0gICAgdWludDMyX3QqIHNyY09mZnNldCA9IHNyYyArIHNyY1ggKyBzcmNZICogc3Jj
U3RyaWRlOwotCi0gICAgaWYgKCFzd2l6emxlICYmIHdpZHRoID09IHNyY1N0cmlkZSkKLSAgICAg
ICAgcmV0dXJuIHNyY09mZnNldDsKLQotICAgIGlmIChzd2l6emxlKSB7Ci0gICAgICAgIHVpbnQz
Ml90KiBkc3RQaXhlbCA9IGRzdDsKLSAgICAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7
ICsreSkgewotICAgICAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0aCA7ICsreCkgewot
ICAgICAgICAgICAgICAgIHVpbnQzMl90IHBpeGVsID0gc3JjT2Zmc2V0W3ggKyB5ICogc3JjU3Ry
aWRlXTsKLSAgICAgICAgICAgICAgICAqZHN0UGl4ZWwgPSAocGl4ZWwgJiAweEZGMDBGRjAwKSB8
ICgocGl4ZWwgJiAweDAwRkYwMDAwKSA+PiAxNikgfCAoKHBpeGVsICYgMHgwMDAwMDBGRikgPDwg
MTYpOwotICAgICAgICAgICAgICAgIGRzdFBpeGVsKys7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLSAgICB9IGVsc2UgewotICAgICAgICBmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsgKyt5
KSB7Ci0gICAgICAgICAgICBtZW1jcHkoZHN0ICsgeSAqIHdpZHRoLCBzcmNPZmZzZXQgKyB5ICog
c3JjU3RyaWRlLCA0ICogd2lkdGgpOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBkc3Q7
Ci19Ci0KLXZvaWQgVGV4dHVyZTo6bG9hZCh2b2lkKiBwaXhlbHMpCi17Ci0gICAgdXBkYXRlU3Vi
UmVjdChwaXhlbHMsIEludFJlY3QoMCwgMCwgbV90aWxlcy50b3RhbFNpemUoKS53aWR0aCgpLCBt
X3RpbGVzLnRvdGFsU2l6ZSgpLmhlaWdodCgpKSk7Ci19Ci0KLXZvaWQgVGV4dHVyZTo6dXBkYXRl
U3ViUmVjdCh2b2lkKiBwaXhlbHMsIGNvbnN0IEludFJlY3QmIHVwZGF0ZVJlY3QpCi17Ci0gICAg
SW50UmVjdCB1cGRhdGVSZWN0U2FuaXRpemVkKHVwZGF0ZVJlY3QpOwotICAgIHVwZGF0ZVJlY3RT
YW5pdGl6ZWQuaW50ZXJzZWN0KEludFJlY3QoMCwgMCwgbV90aWxlcy50b3RhbFNpemUoKS53aWR0
aCgpLCBtX3RpbGVzLnRvdGFsU2l6ZSgpLmhlaWdodCgpKSk7Ci0KLSAgICB1aW50MzJfdCogcGl4
ZWxzMzIgPSBzdGF0aWNfY2FzdDx1aW50MzJfdCo+KHBpeGVscyk7Ci0gICAgdW5zaWduZWQgaW50
IGdsRm9ybWF0ID0gMDsKLSAgICB1bnNpZ25lZCBpbnQgZ2xUeXBlID0gMDsKLSAgICBib29sIHN3
aXp6bGU7Ci0gICAgY29udmVydEZvcm1hdChtX2NvbnRleHQsIG1fZm9ybWF0LCAmZ2xGb3JtYXQs
ICZnbFR5cGUsICZzd2l6emxlKTsKLSAgICBpZiAoc3dpenpsZSkgewotICAgICAgICBBU1NFUlQo
Z2xGb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlJHQkEgJiYgZ2xUeXBlID09IEdyYXBoaWNz
Q29udGV4dEdMOjpVTlNJR05FRF9CWVRFKTsKLSAgICAgICAgLy8gRklYTUU6ICBUaGlzIGNvdWxk
IHVzZSBQQk8ncyB0byBzYXZlIGRvaW5nIGFuIGV4dHJhIGNvcHkgaGVyZS4KLSAgICB9Ci0gICAg
aW50IHRlbXBCdWZmU2l6ZSA9IC8vIFRlbXBvcmFyeSBidWZmZXIgc2l6ZSBpcyB0aGUgc21hbGxl
ciBvZiB0aGUgbWF4IHRleHR1cmUgc2l6ZSBvciB0aGUgdXBkYXRlUmVjdFNhbml0aXplZAotICAg
ICAgICBzdGQ6Om1pbihtX3RpbGVzLm1heFRleHR1cmVTaXplKCkud2lkdGgoKSwgbV90aWxlcy5i
b3JkZXJUZXhlbHMoKSArIHVwZGF0ZVJlY3RTYW5pdGl6ZWQud2lkdGgoKSkgKgotICAgICAgICBz
dGQ6Om1pbihtX3RpbGVzLm1heFRleHR1cmVTaXplKCkuaGVpZ2h0KCksIG1fdGlsZXMuYm9yZGVy
VGV4ZWxzKCkgKyB1cGRhdGVSZWN0U2FuaXRpemVkLmhlaWdodCgpKTsKLSAgICBhdXRvIHRlbXBC
dWZmID0gbWFrZVVuaXF1ZUFycmF5PHVpbnQzMl90Pih0ZW1wQnVmZlNpemUpOwotCi0gICAgZm9y
IChpbnQgdGlsZSA9IDA7IHRpbGUgPCBtX3RpbGVzLm51bVRpbGVzWCgpICogbV90aWxlcy5udW1U
aWxlc1koKTsgdGlsZSsrKSB7Ci0gICAgICAgIGludCB4SW5kZXggPSB0aWxlICUgbV90aWxlcy5u
dW1UaWxlc1goKTsKLSAgICAgICAgaW50IHlJbmRleCA9IHRpbGUgLyBtX3RpbGVzLm51bVRpbGVz
WCgpOwotCi0gICAgICAgIC8vIEludGVyc2VjdCB3aXRoIHRpbGUKLSAgICAgICAgSW50UmVjdCB0
aWxlQm91bmRzV2l0aEJvcmRlciA9IG1fdGlsZXMudGlsZUJvdW5kc1dpdGhCb3JkZXIoeEluZGV4
LCB5SW5kZXgpOwotCi0gICAgICAgIEludFJlY3QgdXBkYXRlUmVjdEludGVyc2VjdGVkID0gdXBk
YXRlUmVjdFNhbml0aXplZDsKLSAgICAgICAgdXBkYXRlUmVjdEludGVyc2VjdGVkLmludGVyc2Vj
dCh0aWxlQm91bmRzV2l0aEJvcmRlcik7Ci0KLSAgICAgICAgSW50UmVjdCBkc3RSZWN0ID0gdXBk
YXRlUmVjdEludGVyc2VjdGVkOwotICAgICAgICBkc3RSZWN0Lm1vdmVCeSgtdGlsZUJvdW5kc1dp
dGhCb3JkZXIubG9jYXRpb24oKSk7Ci0KLSAgICAgICAgaWYgKHVwZGF0ZVJlY3RJbnRlcnNlY3Rl
ZC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAvLyBDb3B5IHN1
YiByZWN0YW5nbGUgb3V0IG9mIGxhcmdlciBwaXhlbCBkYXRhCi0gICAgICAgIHVpbnQzMl90KiB1
cGxvYWRCdWZmID0gMDsKLSAgICAgICAgaWYgKHN3aXp6bGUpIHsKLSAgICAgICAgICAgIHVwbG9h
ZEJ1ZmYgPSBjb3B5U3ViUmVjdDx0cnVlPigKLSAgICAgICAgICAgIHBpeGVsczMyLCB1cGRhdGVS
ZWN0SW50ZXJzZWN0ZWQueCgpLCB1cGRhdGVSZWN0SW50ZXJzZWN0ZWQueSgpLAotICAgICAgICAg
ICAgdGVtcEJ1ZmYuZ2V0KCksIHVwZGF0ZVJlY3RJbnRlcnNlY3RlZC53aWR0aCgpLCB1cGRhdGVS
ZWN0SW50ZXJzZWN0ZWQuaGVpZ2h0KCksIG1fdGlsZXMudG90YWxTaXplKCkud2lkdGgoKSk7Ci0g
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB1cGxvYWRCdWZmID0gY29weVN1YlJlY3Q8ZmFs
c2U+KAotICAgICAgICAgICAgcGl4ZWxzMzIsIHVwZGF0ZVJlY3RJbnRlcnNlY3RlZC54KCksIHVw
ZGF0ZVJlY3RJbnRlcnNlY3RlZC55KCksCi0gICAgICAgICAgICB0ZW1wQnVmZi5nZXQoKSwgdXBk
YXRlUmVjdEludGVyc2VjdGVkLndpZHRoKCksIHVwZGF0ZVJlY3RJbnRlcnNlY3RlZC5oZWlnaHQo
KSwgbV90aWxlcy50b3RhbFNpemUoKS53aWR0aCgpKTsKLSAgICAgICAgfQotCi0gICAgICAgIG1f
Y29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfMkQsIG1fdGls
ZVRleHR1cmVJZHMtPmF0KHRpbGUpKTsKLSAgICAgICAgbV9jb250ZXh0LT50ZXhTdWJJbWFnZTJE
KEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFXzJELCAwIC8qIGxldmVsICovLAotICAgICAgICAg
ICAgZHN0UmVjdC54KCksCi0gICAgICAgICAgICBkc3RSZWN0LnkoKSwKLSAgICAgICAgICAgIHVw
ZGF0ZVJlY3RJbnRlcnNlY3RlZC53aWR0aCgpLAotICAgICAgICAgICAgdXBkYXRlUmVjdEludGVy
c2VjdGVkLmhlaWdodCgpLCBnbEZvcm1hdCwgZ2xUeXBlLCB1cGxvYWRCdWZmKTsKLSAgICB9Ci19
Ci0KLXZvaWQgVGV4dHVyZTo6YmluZFRpbGUoaW50IHRpbGUpCi17Ci0gICAgbV9jb250ZXh0LT5i
aW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV8yRCwgbV90aWxlVGV4dHVyZUlk
cy0+YXQodGlsZSkpOwotICAgIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRl
eHRHTDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfTUlOX0ZJTFRFUiwg
R3JhcGhpY3NDb250ZXh0R0w6OkxJTkVBUik7Ci0gICAgbV9jb250ZXh0LT50ZXhQYXJhbWV0ZXJp
KEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVS
RV9NQUdfRklMVEVSLCBHcmFwaGljc0NvbnRleHRHTDo6TElORUFSKTsKLSAgICBtX2NvbnRleHQt
PnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29u
dGV4dEdMOjpURVhUVVJFX1dSQVBfUywgR3JhcGhpY3NDb250ZXh0R0w6OkNMQU1QX1RPX0VER0Up
OwotICAgIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVS
RV8yRCwgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfV1JBUF9ULCBHcmFwaGljc0NvbnRleHRH
TDo6Q0xBTVBfVE9fRURHRSk7Ci19Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNDJjMDJjMzg4OTk2MDMyMGM4MWNiODg5OTA4ZWM1M2JhOWNkZjM1Zi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0g
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaWZuZGVmIFRleHR1cmVfaAotI2RlZmluZSBUZXh0dXJlX2gKLQotI2luY2x1ZGUgIlRpbGlu
Z0RhdGEuaCIKLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNs
YXNzIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOwotCi1jbGFzcyBJbnRSZWN0OwotCi1jbGFzcyBU
ZXh0dXJlIDogcHVibGljIFJlZkNvdW50ZWQ8VGV4dHVyZT4gewotcHVibGljOgotICAgIH5UZXh0
dXJlKCk7Ci0gICAgZW51bSBGb3JtYXQgeyBSR0JBOCwgQkdSQTggfTsKLSAgICBzdGF0aWMgUmVm
UHRyPFRleHR1cmU+IGNyZWF0ZShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIEZvcm1hdCwgaW50
IHdpZHRoLCBpbnQgaGVpZ2h0KTsKLSAgICB2b2lkIGJpbmRUaWxlKGludCB0aWxlKTsKLSAgICB2
b2lkIGxvYWQodm9pZCogcGl4ZWxzKTsKLSAgICB2b2lkIHVwZGF0ZVN1YlJlY3Qodm9pZCogcGl4
ZWxzLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgRm9ybWF0IGZvcm1hdCgpIGNvbnN0IHsgcmV0dXJu
IG1fZm9ybWF0OyB9Ci0gICAgY29uc3QgVGlsaW5nRGF0YSYgdGlsZXMoKSBjb25zdCB7IHJldHVy
biBtX3RpbGVzOyB9Ci1wcml2YXRlOgotICAgIFRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0wqLCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPHVuc2lnbmVkPj4gdGlsZVRleHR1cmVJZHMsIEZv
cm1hdCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgbWF4VGV4dHVyZVNpemUpOwotICAgIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMKiBtX2NvbnRleHQ7Ci0gICAgRm9ybWF0IG1fZm9ybWF0Owot
ICAgIFRpbGluZ0RhdGEgbV90aWxlczsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPHVuc2ln
bmVkPj4gbV90aWxlVGV4dHVyZUlkczsKLX07Ci0KLX0KLQotI2VuZGlmIC8vIFRleHR1cmVfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCAz
YmYyZTEzZGY5MmFmN2U0YjdjNzczMzA0YjJjMWQwODZhMWZiODhmLi5hMzBjNjI2NzUxYzVmOTRm
ZjA1N2ZlNDczNDQwMWFhZjFmMDBmMmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMTI5LDEzICsxMjksNiBAQAogI2luY2x1ZGUgIlRl
eHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlcy5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJQcm94eS5oIgotI2lmIFVTRShDQUlSTykgJiYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZB
UykKLSNpbmNsdWRlIDxjYWlyby1nbC5oPgotI2luY2x1ZGUgIkdMQ29udGV4dC5oIgotI2luY2x1
ZGUgIlBsYXRmb3JtRGlzcGxheS5oIgotLy8gY2Fpcm8tZ2wuaCBlbmRzIHVwIGluY2x1ZGluZyBY
LmgsIHdoaWNoIGRlZmluZXMgTm9uZSwgYnJlYWtpbmcgTWVkaWFQbGF5ZXI6OiBlbnVtcy4KLSN1
bmRlZiBOb25lCi0jZW5kaWYKICNlbmRpZiAvLyBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCiAKICNp
ZiBVU0UoV1BFX1ZJREVPX1BMQU5FX0RJU1BMQVlfRE1BQlVGKQpAQCAtMzIxOCw0MCArMzIxMSw3
IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjb3B5VmlkZW9UZXh0dXJlVG9Q
bGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250CiAKIE5hdGl2ZUltYWdlUHRyIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCiB7Ci0jaWYgVVNF
KENBSVJPKSAmJiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQotICAgIGlmIChtX2lzVXNp
bmdGYWxsYmFja1ZpZGVvU2luaykKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBhdXRv
IHNhbXBsZUxvY2tlciA9IGhvbGRMb2NrKG1fc2FtcGxlTXV0ZXgpOwotCi0gICAgaWYgKCFHU1Rf
SVNfU0FNUExFKG1fc2FtcGxlLmdldCgpKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8R3N0VmlkZW9GcmFtZUhvbGRlcj4gZnJhbWVIb2xkZXIgPSBtYWtl
VW5pcXVlPEdzdFZpZGVvRnJhbWVIb2xkZXI+KG1fc2FtcGxlLmdldCgpLCBtX3ZpZGVvRGVjb2Rl
clBsYXRmb3JtLCBtX3RleHR1cmVNYXBwZXJGbGFncywgdHJ1ZSk7Ci0KLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IGxheWVyQnVmZmVyID0gZnJh
bWVIb2xkZXItPnBsYXRmb3JtTGF5ZXJCdWZmZXIoKTsKLSAgICBpZiAoIWxheWVyQnVmZmVyKQot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGF1dG8gc2l6ZSA9IGZyYW1lSG9sZGVyLT5z
aXplKCk7Ci0gICAgaWYgKG1fdmlkZW9Tb3VyY2VPcmllbnRhdGlvbi51c2VzV2lkdGhBc0hlaWdo
dCgpKQotICAgICAgICBzaXplID0gc2l6ZS50cmFuc3Bvc2VkU2l6ZSgpOwotCi0gICAgR0xDb250
ZXh0KiBjb250ZXh0ID0gUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5Rm9yQ29tcG9zaXRp
bmcoKS5zaGFyaW5nR0xDb250ZXh0KCk7Ci0gICAgY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50
KCk7Ci0KLSAgICBpZiAoIW1fdmlkZW9UZXh0dXJlQ29waWVyKQotICAgICAgICBtX3ZpZGVvVGV4
dHVyZUNvcGllciA9IG1ha2VVbmlxdWU8VmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyPihURVhU
VVJFX0NPUElFUl9DT0xPUl9DT05WRVJUX0ZMQUcpOwotCi0gICAgZnJhbWVIb2xkZXItPndhaXRG
b3JDUFVTeW5jKCk7Ci0KLSAgICBpZiAoIW1fdmlkZW9UZXh0dXJlQ29waWVyLT5jb3B5VmlkZW9U
ZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoKmxheWVyQnVmZmVyLmdldCgpLCBzaXplLCAwLCBHTF9U
RVhUVVJFXzJELCAwLCBHTF9SR0JBLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBmYWxzZSwg
bV92aWRlb1NvdXJjZU9yaWVudGF0aW9uKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAg
ICByZXR1cm4gYWRvcHRSZWYoY2Fpcm9fZ2xfc3VyZmFjZV9jcmVhdGVfZm9yX3RleHR1cmUoY29u
dGV4dC0+Y2Fpcm9EZXZpY2UoKSwgQ0FJUk9fQ09OVEVOVF9DT0xPUl9BTFBIQSwgbV92aWRlb1Rl
eHR1cmVDb3BpZXItPnJlc3VsdFRleHR1cmUoKSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgp
KSk7Ci0jZWxzZQogICAgIHJldHVybiBudWxscHRyOwotI2VuZGlmCiB9CiAjZW5kaWYgLy8gVVNF
KEdTVFJFQU1FUl9HTCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJCYWNraW5nLmNwcAppbmRleCA1YzJhNTU1NjgxODJkYzg4Yjc5MWVmZDIxNzQyNjZlYzgzM2Vi
ZDY3Li4yZjQ0ZjY2NmRmN2M1ZWFhYTZmMzhlNTc4YzczYjRiODA2NjZjZDc1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtOTQsMTEg
Kzk0LDcgQEAgQ2FudmFzQ29tcG9zaXRpbmdTdHJhdGVneSBjYW52YXNDb21wb3NpdGluZ1N0cmF0
ZWd5KGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIKICAgICBpZiAoY29udGV4dC0+aXNHUFVC
YXNlZCgpKQogICAgICAgICByZXR1cm4gQ2FudmFzQXNMYXllckNvbnRlbnRzOwogCi0jaWYgRU5B
QkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKLSAgICByZXR1cm4gQ2FudmFzQXNMYXllckNvbnRl
bnRzOwotI2Vsc2UKICAgICByZXR1cm4gQ2FudmFzUGFpbnRlZFRvTGF5ZXI7IC8vIE9uIE1hYyBh
bmQgaU9TIHdlIHBhaW50IGFjY2VsZXJhdGVkIGNhbnZhc2VzIGludG8gdGhlaXIgbGF5ZXJzLgot
I2VuZGlmCiB9CiAKIC8vIFRoaXMgYWN0cyBhcyBhIGNhY2hlIG9mIHdoYXQgd2Uga25vdyBhYm91
dCB3aGF0IGlzIHBhaW50aW5nIGludG8gdGhpcyBSZW5kZXJMYXllckJhY2tpbmcuCkBAIC0xMDU4
LDcgKzEwNTQsNyBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlQ29uZmlndXJhdGlv
bihjb25zdCBSZW5kZXJMYXllciogY29tcG9zaXRpbmdBbmNlcwogICAgICAgICB1cGRhdGVDb250
ZW50c1JlY3RzKCk7CiAgICAgfQogI2VuZGlmCi0jaWYgRU5BQkxFKFdFQkdMKSB8fCBFTkFCTEUo
QUNDRUxFUkFURURfMkRfQ0FOVkFTKSB8fCBFTkFCTEUoV0VCR1BVKSB8fCBFTkFCTEUoT0ZGU0NS
RUVOX0NBTlZBUykKKyNpZiBFTkFCTEUoV0VCR0wpIHx8IEVOQUJMRShXRUJHUFUpIHx8IEVOQUJM
RShPRkZTQ1JFRU5fQ0FOVkFTKQogICAgIGVsc2UgaWYgKHJlbmRlcmVyKCkuaXNDYW52YXMoKSAm
JiBjYW52YXNDb21wb3NpdGluZ1N0cmF0ZWd5KHJlbmRlcmVyKCkpID09IENhbnZhc0FzTGF5ZXJD
b250ZW50cykgewogICAgICAgICBjb25zdCBIVE1MQ2FudmFzRWxlbWVudCogY2FudmFzID0gZG93
bmNhc3Q8SFRNTENhbnZhc0VsZW1lbnQ+KHJlbmRlcmVyKCkuZWxlbWVudCgpKTsKICAgICAgICAg
aWYgKGF1dG8qIGNvbnRleHQgPSBjYW52YXMtPnJlbmRlcmluZ0NvbnRleHQoKSkKQEAgLTI3NzMs
NyArMjc2OSw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjpjb250YWluc1BhaW50ZWRDb250
ZW50KFBhaW50ZWRDb250ZW50c0luZm8mIGNvbnRlbnRzSW5mCiAgICAgICAgIHJldHVybiBtX293
bmluZ0xheWVyLmhhc1Zpc2libGVCb3hEZWNvcmF0aW9uc09yQmFja2dyb3VuZCgpIHx8ICghKGRv
d25jYXN0PFJlbmRlclZpZGVvPihyZW5kZXJlcigpKS5zdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVy
aW5nKCkpICYmIG1fcmVxdWlyZXNPd25CYWNraW5nU3RvcmUpOwogI2VuZGlmCiAKLSNpZiBFTkFC
TEUoV0VCR0wpIHx8IEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpIHx8IEVOQUJMRShPRkZT
Q1JFRU5fQ0FOVkFTKQorI2lmIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKE9GRlNDUkVFTl9DQU5W
QVMpCiAgICAgaWYgKGlzPFJlbmRlckhUTUxDYW52YXM+KHJlbmRlcmVyKCkpICYmIGNhbnZhc0Nv
bXBvc2l0aW5nU3RyYXRlZ3kocmVuZGVyZXIoKSkgPT0gQ2FudmFzQXNMYXllckNvbnRlbnRzKQog
ICAgICAgICByZXR1cm4gbV9vd25pbmdMYXllci5oYXNWaXNpYmxlQm94RGVjb3JhdGlvbnNPckJh
Y2tncm91bmQoKTsKICNlbmRpZgpAQCAtMjgzOCw3ICsyODM0LDcgQEAgdm9pZCBSZW5kZXJMYXll
ckJhY2tpbmc6OmNvbnRlbnRDaGFuZ2VkKENvbnRlbnRDaGFuZ2VUeXBlIGNoYW5nZVR5cGUpCiAg
ICAgaWYgKChjaGFuZ2VUeXBlID09IE1hc2tJbWFnZUNoYW5nZWQpICYmIG1fbWFza0xheWVyKQog
ICAgICAgICBtX293bmluZ0xheWVyLnNldE5lZWRzQ29tcG9zaXRpbmdDb25maWd1cmF0aW9uVXBk
YXRlKCk7CiAKLSNpZiBFTkFCTEUoV0VCR0wpIHx8IEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5W
QVMpIHx8IEVOQUJMRShXRUJHUFUpIHx8IEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQorI2lmIEVO
QUJMRShXRUJHTCkgfHwgRU5BQkxFKFdFQkdQVSkgfHwgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMp
CiAgICAgaWYgKChjaGFuZ2VUeXBlID09IENhbnZhc0NoYW5nZWQgfHwgY2hhbmdlVHlwZSA9PSBD
YW52YXNQaXhlbHNDaGFuZ2VkKSAmJiByZW5kZXJlcigpLmlzQ2FudmFzKCkgJiYgY2FudmFzQ29t
cG9zaXRpbmdTdHJhdGVneShyZW5kZXJlcigpKSA9PSBDYW52YXNBc0xheWVyQ29udGVudHMpIHsK
ICAgICAgICAgaWYgKGNoYW5nZVR5cGUgPT0gQ2FudmFzQ2hhbmdlZCkKICAgICAgICAgICAgIGNv
bXBvc2l0b3IoKS5zY2hlZHVsZUNvbXBvc2l0aW5nTGF5ZXJVcGRhdGUoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9jbWFrZS9GaW5kQ2Fpcm9HTC5jbWFrZSBiL1NvdXJjZS9jbWFrZS9GaW5kQ2Fpcm9H
TC5jbWFrZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODQ4NjYwN2UzZDQ2MzZmZmE3
YjA2ODczNTE5Mjk3NjQ4ZmIyZTRhZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvY21ha2UvRmluZENhaXJvR0wuY21ha2UKKysrIC9kZXYvbnVs
bApAQCAtMSw1MSArMCwwIEBACi0jIC0gVHJ5IHRvIGZpbmQgQ2Fpcm9HTAotIyBPbmNlIGRvbmUs
IHRoaXMgd2lsbCBkZWZpbmUKLSMKLSMgIENBSVJPR0xfRk9VTkQgLSBzeXN0ZW0gaGFzIENhaXJv
R0wKLSMgIENBSVJPR0xfSU5DTFVERV9ESVJTIC0gdGhlIENhaXJvR0wgaW5jbHVkZSBkaXJlY3Rv
cmllcwotIyAgQ0FJUk9HTF9MSUJSQVJJRVMgLSBsaW5rIHRoZXNlIHRvIHVzZSBDYWlyb0dMCi0j
Ci0jIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIgQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUwotIyBJUycnIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0jIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9S
IElUUwotIyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKLSMgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotIyBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsK
LSMgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksCi0jIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SCi0jIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYKLSMg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWZpbmRfcGFja2Fn
ZShQa2dDb25maWcgUVVJRVQpCi1wa2dfY2hlY2tfbW9kdWxlcyhDQUlST0dMIGNhaXJvLWdsKQot
Ci1pZiAoQ0FJUk9HTF9GT1VORCkKLSMgQXQgdGhlIG1vbWVudCBDYWlyb0dMIGRvZXMgbm90IGFk
ZCBhbnkgZXh0cmEgY2ZsYWdzIGFuZCBsaWJyYXJpZXMsIHNvIHdlIGNhbgotIyBzYWZlbHkgaWdu
b3JlIENBSVJPR0xfTElCUkFSSUVTIGFuZCBDQUlST0dMX0lOQ0xVREVfRElSUyBmb3IgdGhlIG1v
bWVudC4KLWZvcmVhY2ggKF9jb21wb25lbnQgJHtDYWlyb0dMX0ZJTkRfQ09NUE9ORU5UU30pCi0g
ICAgc3RyaW5nKFRPVVBQRVIgJHtfY29tcG9uZW50fSBfVVBQRVJfTkFNRSkKLSAgICBzdHJpbmco
UkVHRVggUkVQTEFDRSAiLSIgIl8iIF9VUFBFUl9OQU1FICR7X1VQUEVSX05BTUV9KQotICAgIHBr
Z19jaGVja19tb2R1bGVzKCR7X1VQUEVSX05BTUV9ICR7X2NvbXBvbmVudH0pCi0gICAgaWYgKCR7
X1VQUEVSX05BTUV9X0lOQ0xVREVfRElSUykKLSAgICAgIHNldChDQUlST0dMX0lOQ0xVREVfRElS
UyAke0NBSVJPR0xfSU5DTFVERV9ESVJTfSAke19VUFBFUl9OQU1FfV9JTkNMVURFX0RJUlMpCi0g
ICAgZW5kaWYgKCkKLSAgICBpZiAoJHtfVVBQRVJfTkFNRX1fTElCUkFSSUVTKQotICAgICAgc2V0
KENBSVJPR0xfTElCUkFSSUVTICR7Q0FJUk9HTF9MSUJSQVJJRVN9ICR7X1VQUEVSX05BTUV9X0xJ
QlJBUklFUykKLSAgICBlbmRpZiAoKQotZW5kZm9yZWFjaCAoKQotCi1pbmNsdWRlKEZpbmRQYWNr
YWdlSGFuZGxlU3RhbmRhcmRBcmdzKQotZmluZF9wYWNrYWdlX2hhbmRsZV9zdGFuZGFyZF9hcmdz
KENhaXJvR0wgREVGQVVMVF9NU0cgQ0FJUk9HTF9JTkNMVURFX0RJUlMgQ0FJUk9HTF9MSUJSQVJJ
RVMpCi1lbmRpZiAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNGVFcuY21ha2Ug
Yi9Tb3VyY2UvY21ha2UvT3B0aW9uc0ZUVy5jbWFrZQppbmRleCBmZTM5NTMxNmFkOWM3MjFiNzY2
N2I1NmVjYzE0NWFkZTZiMDk4NDYyLi4zMzI2NjU5MTU0NTU5YTllMzY2OTMwZmMwYzMxNTRmOWU3
NjBjY2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0ZUVy5jbWFrZQorKysgYi9T
b3VyY2UvY21ha2UvT3B0aW9uc0ZUVy5jbWFrZQpAQCAtMTMwLDcgKzEzMCw2IEBAIFdFQktJVF9P
UFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9XRUJHTDIgUFJJVkFURSBPRkYpCiBXRUJL
SVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfV0VCR1BVIFBSSVZBVEUgT0ZGKQog
CiAjIE9mZiBmb3Igbm93LCBidXQgc2hvdWxkIGJlIG9uCi1XRUJLSVRfT1BUSU9OX0RFRkFVTFRf
UE9SVF9WQUxVRShFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTIFBSSVZBVEUgT0ZGKQogV0VC
S0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0FQSV9URVNUUyBQUklWQVRFIE9G
RikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9BUFBMSUNBVElPTl9N
QU5JRkVTVCBQUklWQVRFIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVO
QUJMRV9BU1lOQ19TQ1JPTExJTkcgUFJJVkFURSBPRkYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21h
a2UvT3B0aW9uc0dUSy5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCmluZGV4
IDc0ZjBjOWU4Yzc2ZDYyNzFiYzYxOTk1NTE5OGYwMTc4N2E2ZTg2YjEuLmZjMjk3MDU1ZDY1OGMz
MmU5NTBjNDE0MjE1NmEzZDYxNTM3NWNhZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRp
b25zR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCkBAIC0xMDUs
MTEgKzEwNSw3IEBAIFdFQktJVF9PUFRJT05fREVGSU5FKFVTRV9TWVNURU1EICJXaGV0aGVyIHRv
IGVuYWJsZSBqb3VybmFsZCBsb2dnaW5nIiBQVUJMSUMgT04pCiAjIGNvbXBsZXRlbHkgdW5zdXBw
b3J0ZWQuIFRoZXkgYXJlIGludGVuZGVkIGZvciB1c2Ugb25seSBieSBXZWJLaXQgZGV2ZWxvcGVy
cy4KIFdFQktJVF9PUFRJT05fREVGSU5FKFVTRV9BTkdMRV9XRUJHTCAiV2hldGhlciB0byB1c2Ug
QU5HTEUgYXMgV2ViR0wgYmFja2VuZC4iIFBSSVZBVEUgT0ZGKQogCi0jIEZJWE1FOiBDYW4gd2Ug
dXNlIGNhaXJvLWdsZXN2MiB0byBhdm9pZCB0aGlzIGNvbmZsaWN0PwotV0VCS0lUX09QVElPTl9D
T05GTElDVChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTIEVOQUJMRV9HTEVTMikKLQogV0VC
S0lUX09QVElPTl9ERVBFTkQoRU5BQkxFXzNEX1RSQU5TRk9STVMgRU5BQkxFX0dSQVBISUNTX0NP
TlRFWFRfR0wpCi1XRUJLSVRfT1BUSU9OX0RFUEVORChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FO
VkFTIEVOQUJMRV9HUkFQSElDU19DT05URVhUX0dMKQogV0VCS0lUX09QVElPTl9ERVBFTkQoRU5B
QkxFX0FTWU5DX1NDUk9MTElORyBFTkFCTEVfR1JBUEhJQ1NfQ09OVEVYVF9HTCkKIFdFQktJVF9P
UFRJT05fREVQRU5EKEVOQUJMRV9HTEVTMiBFTkFCTEVfR1JBUEhJQ1NfQ09OVEVYVF9HTCkKIFdF
QktJVF9PUFRJT05fREVQRU5EKEVOQUJMRV9XRUJHTCBFTkFCTEVfR1JBUEhJQ1NfQ09OVEVYVF9H
TCkKQEAgLTE1MSw3ICsxNDcsNiBAQCBlbmRpZiAoKQogIyBQdWJsaWMgb3B0aW9ucyBzaGFyZWQg
d2l0aCBvdGhlciBXZWJLaXQgcG9ydHMuIERvIG5vdCBhZGQgYW55IG9wdGlvbnMgaGVyZQogIyB3
aXRob3V0IGFwcHJvdmFsIGZyb20gYSBHVEsgcmV2aWV3ZXIuIFRoZXJlIG11c3QgYmUgc3Ryb25n
IHJlYXNvbiB0byBzdXBwb3J0CiAjIGNoYW5naW5nIHRoZSB2YWx1ZSBvZiB0aGUgb3B0aW9uLgot
V0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NB
TlZBUyBQVUJMSUMgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxF
X0FTWU5DX1NDUk9MTElORyBQUklWQVRFIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRf
VkFMVUUoRU5BQkxFX0RSQUdfU1VQUE9SVCBQVUJMSUMgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFV
TFRfUE9SVF9WQUxVRShFTkFCTEVfU1BFTExDSEVDSyBQVUJMSUMgT04pCkBAIC0yNDQsMjAgKzIz
OSw2IEBAIGlmIChFTkFCTEVfWFNMVCkKICAgICBmaW5kX3BhY2thZ2UoTGliWHNsdCAxLjEuNyBS
RVFVSVJFRCkKIGVuZGlmICgpCiAKLWlmIChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKQot
ICAgIGlmIChHTFhfRk9VTkQpCi0gICAgICAgIGxpc3QoQVBQRU5EIENBSVJPR0xfQ09NUE9ORU5U
UyBjYWlyby1nbHgpCi0gICAgZW5kaWYgKCkKLSAgICBpZiAoRUdMX0ZPVU5EKQotICAgICAgICBs
aXN0KEFQUEVORCBDQUlST0dMX0NPTVBPTkVOVFMgY2Fpcm8tZWdsKQotICAgIGVuZGlmICgpCi0K
LSAgICBmaW5kX3BhY2thZ2UoQ2Fpcm9HTCAxLjEwLjIgQ09NUE9ORU5UUyAke0NBSVJPR0xfQ09N
UE9ORU5UU30pCi0gICAgaWYgKE5PVCBDQUlST0dMX0ZPVU5EKQotICAgICAgICBtZXNzYWdlKEZB
VEFMX0VSUk9SICJDYWlyb0dMIGlzIG5lZWRlZCBmb3IgRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NB
TlZBUyIpCi0gICAgZW5kaWYgKCkKLWVuZGlmICgpCi0KIGlmIChVU0VfTElCU0VDUkVUKQogICAg
IGZpbmRfcGFja2FnZShMaWJzZWNyZXQpCiAgICAgaWYgKE5PVCBMSUJTRUNSRVRfRk9VTkQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc1dQRS5jbWFrZSBiL1NvdXJjZS9jbWFrZS9P
cHRpb25zV1BFLmNtYWtlCmluZGV4IDY0NjZiZGE2Mzc4NWJiNmNmNmEyY2E5NTM1NWNjMTIxYWQ5
NTJjMzIuLmNlZmQ1MmI1YTZmZDI2MjE2OTEyOGU2YTFhYzNlNDM3Y2M0MmFlYzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zV1BFLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRp
b25zV1BFLmNtYWtlCkBAIC00NCw3ICs0NCw2IEBAIGluY2x1ZGUoR1N0cmVhbWVyRGVmaW5pdGlv
bnMpCiAjIFB1YmxpYyBvcHRpb25zIHNoYXJlZCB3aXRoIG90aGVyIFdlYktpdCBwb3J0cy4gRG8g
bm90IGFkZCBhbnkgb3B0aW9ucyBoZXJlCiAjIHdpdGhvdXQgYXBwcm92YWwgZnJvbSBhIFdQRSBy
ZXZpZXdlci4gVGhlcmUgbXVzdCBiZSBzdHJvbmcgcmVhc29uIHRvIHN1cHBvcnQKICMgY2hhbmdp
bmcgdGhlIHZhbHVlIG9mIHRoZSBvcHRpb24uCi1XRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9W
QUxVRShFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTIFBVQkxJQyBPRkYpCiBXRUJLSVRfT1BU
SU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfQUNDRVNTSUJJTElUWSBQVUJMSUMgT04pCiBX
RUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRU5DUllQVEVEX01FRElBIFBV
QkxJQyAke0VOQUJMRV9FWFBFUklNRU5UQUxfRkVBVFVSRVN9KQogV0VCS0lUX09QVElPTl9ERUZB
VUxUX1BPUlRfVkFMVUUoRU5BQkxFX1RIVU5ERVIgUFJJVkFURSBPRkYpCkBAIC0xNTIsMTAgKzE1
MSw2IEBAIGlmIChVU0VfV09GRjIpCiAgICAgZW5kaWYgKCkKIGVuZGlmICgpCiAKLWlmIChFTkFC
TEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKQotICAgIGZpbmRfcGFja2FnZShDYWlyb0dMIDEuMTAu
MiBSRVFVSVJFRCBDT01QT05FTlRTIGNhaXJvLWVnbCkKLWVuZGlmICgpCi0KIGlmIChFTkFCTEVf
V0VCX0NSWVBUTykKICAgICBmaW5kX3BhY2thZ2UoTGlidGFzbjEgUkVRVUlSRUQpCiAgICAgaWYg
KE5PVCBMSUJUQVNOMV9GT1VORCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zV2lu
LmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNXaW4uY21ha2UKaW5kZXggZTU1MzEyY2RlZDky
YzkyYzk1YzJhZmJhYjEyMWFjYjI1NWU0ZGU4YS4uYWQ3NTg1MTEwNDg2ZjczOTNlZmNhNzQxM2I2
OGI4NzE4ZmUwMjEzNyAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNXaW4uY21ha2UK
KysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNXaW4uY21ha2UKQEAgLTE4LDcgKzE4LDYgQEAgV0VC
S0lUX09QVElPTl9ERUZJTkUoVVNFX1ZFUlNJT05fU1RBTVBFUiAiVG9nZ2xlIHN0YW1waW5nIHZl
cnNpb24gaW5mb3JtYXRpb24gZHUKIAogIyBGSVhNRTogTW9zdCBvZiB0aGVzZSBvcHRpb25zIHNo
b3VsZCBub3QgYmUgcHVibGljLgogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5B
QkxFXzNEX1RSQU5TRk9STVMgUFVCTElDIE9OKQotV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRf
VkFMVUUoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUyBQVUJMSUMgT0ZGKQogV0VCS0lUX09Q
VElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX09WRVJGTE9XX1NDUk9MTElOR19UT1VDSCBQ
VUJMSUMgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0FQSV9U
RVNUUyBQVUJMSUMgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVf
QVRUQUNITUVOVF9FTEVNRU5UIFBVQkxJQyBPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9X
ZWJLaXRGZWF0dXJlcy5jbWFrZSBiL1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQpp
bmRleCBjYmFkYWNkMTA3MGJlZjQ2NzUzNTRiOGM2ZTY3ODE4NmI5M2RjMWVhLi5hMmZmNTNkZDYy
MWM1ZmM0NzcwYWMyZDc4MzE2ZWI1ZThjOWIwMzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2Uv
V2ViS2l0RmVhdHVyZXMuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNt
YWtlCkBAIC05Niw3ICs5Niw2IEBAIG1hY3JvKFdFQktJVF9PUFRJT05fQkVHSU4pCiAgICAgZW5k
aWYgKCkKIAogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV8zRF9UUkFOU0ZPUk1TICJU
b2dnbGUgM0QgdHJhbnNmb3JtcyBzdXBwb3J0IiBQUklWQVRFIE9OKQotICAgIFdFQktJVF9PUFRJ
T05fREVGSU5FKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMgIlRvZ2dsZSBBY2NlbGVyYXRl
ZCAyRCBDYW52YXMgc3VwcG9ydCIgUFJJVkFURSBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJ
TkUoRU5BQkxFX0NPUkVfSU1BR0VfQUNDRUxFUkFURURfRklMVEVSX1JFTkRFUiAiVG9nZ2xlIEFj
Y2VsZXJhdGVkIENTUy9TVkcgRmlsdGVyIFJlbmRlcmluZyB1c2luZyBDb3JlSW1hZ2UiIFBSSVZB
VEUgT0ZGKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9BQ0NFU1NJQklMSVRZICJX
aGV0aGVyIHRvIGVuYWJsZSBzdXBwb3J0IGZvciBhY2Nlc3NpYmlsaXR5IiBQUklWQVRFIE9OKQog
ICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9BQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RS
RUUgIlRvZ2dsZSBhY2Nlc3NpYmlsaXR5IGlzb2xhdGVkIHRyZWUgc3VwcG9ydCIgUFJJVkFURSBP
RkYpCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggYmU0ZjMzMjUzNWY5
NmYxNzY1ZDU1MTkyNGFhMzc3MTdjODE2NzIyMS4uMTkwM2M2NWViNTI2MzNjNjk5N2M1YWZiZjIx
YTNkZmNhNDA3MWU3OCAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE3IEBACisyMDIwLTEwLTEyICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlh
LmNvbT4KKworICAgICAgICBSZW1vdmUgQUNDRUxFUkFURURfMkRfQ0FOVkFTIGJ1aWxkIGZsYWdz
IGFuZCBndWFyZGVkIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxNzYwMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogU291cmNlL2NtYWtlL0ZpbmRDYWlyb0dMLmNtYWtlOiBSZW1vdmVkLgorICAg
ICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zRlRXLmNtYWtlOgorICAgICAgICAqIFNvdXJjZS9j
bWFrZS9PcHRpb25zR1RLLmNtYWtlOgorICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zV1BF
LmNtYWtlOgorICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zV2luLmNtYWtlOgorICAgICAg
ICAqIFNvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZToKKwogMjAyMC0xMC0wOSAgRnVq
aWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBbV2luQ2Fp
cm9dW0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyXSBiYWNrZHJvcC1maWx0ZXIgc3VwcG9ydAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411138</attachid>
            <date>2020-10-12 11:40:04 -0700</date>
            <delta_ts>2020-10-13 04:29:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217603-20201012204002.patch</filename>
            <type>text/plain</type>
            <size>79930</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4MzM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDNiNWJjMjFkOTUzZWM5MjcxNWI1YzVk
OTE0ODEyZGRmOGVhY2MyODIuLjJmMmIxMzk0YjU1MTg0YWU3NTdmZWNhMjcyYzhlYTJkYTBlMjQz
YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMTAtMTIgIFphbiBEb2JlcnNlayAgPHpkb2Jl
cnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFJlbW92ZSBBQ0NFTEVSQVRFRF8yRF9DQU5WQVMg
YnVpbGQgZmxhZ3MgYW5kIGd1YXJkZWQgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NjAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1FbmFibGUuaDoKKyAgICAgICAgUmVt
b3ZlIHRoZSBmYWxsYmFjayBFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTIGRlZmluaXRpb24u
CisKIDIwMjAtMTAtMTEgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0Bnbm9tZS5vcmc+
CiAKICAgICAgICAgR2VuZXJhdGVQcmVmZXJlbmNlcy5yYiBpcyBub2lzeQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IGJmNDIzYTBiYjE2ZmVjYzkwYzZhMjM4NDBlZjE5MWIzNWE5NmNmNTYuLjMwYjI1MGY5ZTFiN2I3
NzYzMWYwOTE2MTNiMmNmMjYxMTg0ZjJkODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1OSBAQAor
MjAyMC0xMC0xMiAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CisKKyAgICAg
ICAgUmVtb3ZlIEFDQ0VMRVJBVEVEXzJEX0NBTlZBUyBidWlsZCBmbGFncyBhbmQgZ3VhcmRlZCBj
b2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc2
MDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1v
dmUgY29kZSBndWFyZGVkIGJ5IHRoZSBBQ0NFTEVSQVRFRF8yRF9DQU5WQVMgYnVpbGQgZ3VhcmQs
IGFsb25nCisgICAgICAgIHdpdGggcmVsYXRlZCBidWlsZCBzeXN0ZW0gY3J1ZnQuIFRoaXMgZmVh
dHVyZSB3YXMgb25seSBpbXBsZW1lbnRlZCBmb3IKKyAgICAgICAgQ2Fpcm8sIGFuZCBldmVuIHRo
ZW4gd2FzIHVzaW5nIGFuIGV4cGVyaW1lbnRhbCBHTC1vcmllbnRlZCBiYWNrZW5kIG9mCisgICAg
ICAgIENhaXJvIHRoYXQgd2FzIG5vdCBwcm92aWRpbmcgbmVjZXNzYXJpbHkgYmV0dGVyIHBlcmZv
cm1hbmNlIG9yCisgICAgICAgIGV4cGVyaWVuY2UgYW5kIGlzIG5vdCBzZWVpbmcgZnVydGhlciBk
ZXZlbG9wbWVudC4KKworICAgICAgICAqIFBsYXRmb3JtTWFjLmNtYWtlOgorICAgICAgICAqIFNv
dXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUNvbnRleHQyZCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlQ29udGV4dEJpdG1hcFJlbmRlcmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpzaG91bGRBY2NlbGVyYXRlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpjcmVhdGVJbWFnZUJ1ZmZl
ciBjb25zdCk6CisgICAgICAgICogaHRtbC9JbWFnZUJpdG1hcC5jcHA6CisgICAgICAgICogaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjppc0FjY2VsZXJhdGVkIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjcmVh
dGVQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2U6OmRpZERyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
QmFzZTo6cGxhdGZvcm1MYXllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5oOgorICAgICAgICAqIGh0bWwvY2FudmFz
L0ltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vQ2Fp
cm8uY21ha2U6CisgICAgICAgICogcGxhdGZvcm0vU291cmNlc0NhaXJvLnR4dDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9QbGF0Zm9ybUltYWdlQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2Fpcm9TdXJmYWNl
U2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWly
b0dMU3VyZmFjZUJhY2tlbmQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9HTFN1cmZhY2VCYWNrZW5kLmg6IFJlbW92ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHTENvbnRleHRFR0w6On5HTENvbnRleHRFR0wpOgorICAgICAgICAoV2ViQ29y
ZTo6R0xDb250ZXh0RUdMOjpjYWlyb0RldmljZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dseC9HTENvbnRleHRHTFguY3BwOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xY
Ojp+R0xDb250ZXh0R0xYKToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEdMWDo6Y2Fpcm9E
ZXZpY2UpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRl
eHRHTFguaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHA6IFJl
bW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYW52YXNDb21wb3Np
dGluZ1N0cmF0ZWd5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBk
YXRlQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6
OmNvbnRhaW5zUGFpbnRlZENvbnRlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXJCYWNraW5nOjpjb250ZW50Q2hhbmdlZCk6CisKIDIwMjAtMTAtMTEgIEx1bWluZyBZaW4g
IDxsdW1pbmdfeWluQGFwcGxlLmNvbT4KIAogICAgICAgICBTdHJpcCBwYXRjaCB2ZXJzaW9uIGZy
b20gVEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1Igd2hlbiBidWlsZGluZyBmb3IgbWFjT1Mg
QmlnIFN1ciAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmggYi9T
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCmluZGV4IGY0NDc2MzhiNDE4Yjg4ZGQzZjM3
YmY0NjI3NGNlM2NiMDM3ODQyNTEuLjY1OTZmMTI5YzFjYjc1ZTlhMDJlMDAzMTA3Y2QzZDZmYTky
ZDdhNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgKKysrIGIv
U291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaApAQCAtMTgxLDEwICsxODEsNiBAQAogI2Rl
ZmluZSBFTkFCTEVfQUNDRVNTSUJJTElUWSAxCiAjZW5kaWYKIAotI2lmICFkZWZpbmVkKEVOQUJM
RV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCi0jZGVmaW5lIEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9D
QU5WQVMgMAotI2VuZGlmCi0KICNpZiAhZGVmaW5lZChFTkFCTEVfT1ZFUkZMT1dfU0NST0xMSU5H
X1RPVUNIKQogI2RlZmluZSBFTkFCTEVfT1ZFUkZMT1dfU0NST0xMSU5HX1RPVUNIIDAKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCAwZjE2ZjQ0YzU1MDMwN2M5YzY3ZWQwOTZl
MWJjMjkzOWM5NTI3ZjJmLi44ZDkyNDkxYTA4NTMwZWNhMmU5NmY0ZGMxZTYyZDMyNWIxNmU0NzVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtMzMwLDcgKzMzMCw2IEBAIGxpc3QoQVBQ
RU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2N2L1BpeGVsQnVmZmVy
Q29uZm9ybWVyQ1YuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlkZW9UZXh0dXJlQ29w
aWVyQ1YuY3BwCiAKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9ncHUvVGlsaW5nRGF0YS5jcHAKIAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL21hYy9Db2xvck1hYy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggZDZmNmY1Y2Zk
ZjA5ZGRmMWMzZTI2YzY1NmNjYWM2Y2U3OWUxYzIyYS4uZjk1OWUzOTgyOTY2MDUwOTAzYWFjODVi
OGFmMjQyZGExNTQzNGE4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29h
LnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0zNzgsNyArMzc4
LDYgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5tbQogcGxh
dGZvcm0vZ3JhcGhpY3MvY3YvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5jcHAKIHBsYXRmb3JtL2dy
YXBoaWNzL2N2L1ZpZGVvVGV4dHVyZUNvcGllckNWLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY29y
ZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tCi1wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvVGV4dHVyZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9UaWxpbmdEYXRhLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJpbmRHcm91cEFsbG9jYXRvck1ldGFsLm1t
CiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQmluZEdyb3VwTGF5b3V0TWV0YWwubW0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCA1OTNkNjJiZjE5ZDQ3MTMxYjk3ZGUzNmQwMmVjZTM5ZDkxZjIyZDZmLi4xYzgyMWUxYTE0
ZTA4MGY0NTExMGQ1YjRjYTkxZWYyNWJmZWIwYTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjc0LDcgKzEyNzQsNiBAQAog
CQk0OTRCRDc5NTBGNTVDOEVFMDA3NDc4MjggLyogV2ViS2l0UG9pbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5NEJENzkzMEY1NUM4RUUwMDc0Nzgy
OCAvKiBXZWJLaXRQb2ludC5oICovOyB9OwogCQk0OTRCRDc5RTBGNTVDOTRDMDA3NDc4MjggLyog
SlNXZWJLaXRQb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDk0QkQ3OUMwRjU1Qzk0QzAwNzQ3ODI4IC8qIEpTV2ViS2l0UG9pbnQuaCAqLzsgfTsK
IAkJNDk2OUIwRjMxM0QwQjMzRjAwREYzNTIxIC8qIEhpdFRlc3RpbmdUcmFuc2Zvcm1TdGF0ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk2OUIwRjEx
M0QwQjMzRjAwREYzNTIxIC8qIEhpdFRlc3RpbmdUcmFuc2Zvcm1TdGF0ZS5oICovOyB9OwotCQk0
OTg3NzBGMTEyNDJDNTM1MDAyMjI2QkEgLyogVGV4dHVyZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk4NzcwRDgxMjQyQzUzNTAwMjIyNkJBIC8qIFRl
eHR1cmUuaCAqLzsgfTsKIAkJNDk4NzcwRjMxMjQyQzUzNTAwMjIyNkJBIC8qIFRpbGluZ0RhdGEu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5ODc3MERB
MTI0MkM1MzUwMDIyMjZCQSAvKiBUaWxpbmdEYXRhLmggKi87IH07CiAJCTQ5OThBRUM2MTNGOUQw
RUEwMDkwQjFBQSAvKiBSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjay5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk5OEFFQzQxM0Y5RDBFQTAwOTBC
MUFBIC8qIFJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrLmggKi87IH07CiAJCTQ5OThBRUNF
MTNGOUQ2QzkwMDkwQjFBQSAvKiBKU1JlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTk4QUVDQzEzRjlE
NkM5MDA5MEIxQUEgLyogSlNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjay5oICovOyB9OwpA
QCAtODA1OSw4ICs4MDU4LDYgQEAKIAkJNDk1ODc4MjAxMkE1N0RERjAwNzIzOEFDIC8qIFBsYXRm
b3JtQ0FMYXllckNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gUGxhdGZvcm1DQUxheWVyQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQ5NjlCMEYwMTNEMEIzM0YwMERGMzUyMSAvKiBIaXRUZXN0aW5nVHJhbnNmb3JtU3RhdGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGl0VGVzdGluZ1RyYW5zZm9y
bVN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDk2OUIwRjExM0QwQjMz
RjAwREYzNTIxIC8qIEhpdFRlc3RpbmdUcmFuc2Zvcm1TdGF0ZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBIaXRUZXN0aW5nVHJhbnNmb3JtU3RhdGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJNDk4NzcwRDcxMjQyQzUzNTAwMjIyNkJBIC8qIFRleHR1cmUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dHVyZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ5ODc3MEQ4MTI0MkM1MzUwMDIyMjZCQSAvKiBUZXh0
dXJlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHR1cmUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDk4NzcwRDkxMjQyQzUzNTAwMjIyNkJBIC8qIFRpbGlu
Z0RhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGlsaW5nRGF0
YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5ODc3MERBMTI0MkM1MzUwMDIy
MjZCQSAvKiBUaWxpbmdEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRp
bGluZ0RhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDk5OEFFQzQxM0Y5RDBF
QTAwOTBCMUFBIC8qIFJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTY4MCw4ICsxOTY3Nyw2IEBACiAJCQkJRDBE
ODY0OUIyMUJBMUMyRDAwM0M5ODNDIC8qIEdQVVZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3IuaCAq
LywKIAkJCQlEMEQ4NjQ5QzIxQkExQ0U4MDAzQzk4M0MgLyogR1BVVmVydGV4QnVmZmVyRGVzY3Jp
cHRvci5oICovLAogCQkJCUQwRDg2NDk5MjFCQTFCMUYwMDNDOTgzQyAvKiBHUFVWZXJ0ZXhJbnB1
dERlc2NyaXB0b3IuaCAqLywKLQkJCQk0OTg3NzBENzEyNDJDNTM1MDAyMjI2QkEgLyogVGV4dHVy
ZS5jcHAgKi8sCi0JCQkJNDk4NzcwRDgxMjQyQzUzNTAwMjIyNkJBIC8qIFRleHR1cmUuaCAqLywK
IAkJCQk0OTg3NzBEOTEyNDJDNTM1MDAyMjI2QkEgLyogVGlsaW5nRGF0YS5jcHAgKi8sCiAJCQkJ
NDk4NzcwREExMjQyQzUzNTAwMjIyNkJBIC8qIFRpbGluZ0RhdGEuaCAqLywKIAkJCSk7CkBAIC0z
NDM2NCw3ICszNDM1OSw2IEBACiAJCQkJMURGN0U4MUYyNTFBOUUwNjAwREI4RjYxIC8qIFRleHRU
cmFja1JlcHJlc2VudGF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzczQTcxMzIxODU3NTdF
MDA0Q0NFQTUgLyogVGV4dFVuZGVybGluZU9mZnNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjlG
QUY0QjYxOTVBQjA4OTAwQTUyMkRDIC8qIFRleHRVbmRvSW5zZXJ0aW9uTWFya3VwTWFjLmggaW4g
SGVhZGVycyAqLywKLQkJCQk0OTg3NzBGMTEyNDJDNTM1MDAyMjI2QkEgLyogVGV4dHVyZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNkZCMTFCNUMyMTc4M0ZEMDAwRTJBNTc0IC8qIFRleHRVdGlsLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQ0U2NThGRjBFQTkyNDhBMDA3RTQ1MzMgLyogVGhlbWUuaCBp
biBIZWFkZXJzICovLAogCQkJCTMxMEQ3MTk2MUIzMzVDOUUwMDlDN0I3MyAvKiBUaGVtZUNvY29h
LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENh
bnZhc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5j
cHAKaW5kZXggMzA1ZjY4MDZlODY2NGU4NDZkMDVjNmQzNDI0ZDZhOTViNTE2MGM1Zi4uMTE1YmE1
OWE5ZmI1YWU4YmQwYzMxMGU5MzhlNmQwMjIyZWNkZmEwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKQEAgLTM2OSw3ICszNjksNyBAQCBDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQqIEhUTUxDYW52YXNFbGVtZW50OjpjcmVhdGVDb250ZXh0MmQoY29uc3QgU3Ry
aW5nJiB0eXBlKQogCiAgICAgbV9jb250ZXh0ID0gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpj
cmVhdGUoKnRoaXMsIGRvY3VtZW50KCkuaW5RdWlya3NNb2RlKCkpOwogCi0jaWYgVVNFKElPU1VS
RkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSkgfHwgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZB
UykKKyNpZiBVU0UoSU9TVVJGQUNFX0NBTlZBU19CQUNLSU5HX1NUT1JFKQogICAgIC8vIE5lZWQg
dG8gbWFrZSBzdXJlIGEgUmVuZGVyTGF5ZXIgYW5kIGNvbXBvc2l0aW5nIGxheWVyIGdldCBjcmVh
dGVkIGZvciB0aGUgQ2FudmFzLgogICAgIGludmFsaWRhdGVTdHlsZUFuZExheWVyQ29tcG9zaXRp
b24oKTsKICNlbmRpZgpAQCAtNTI3LDcgKzUyNyw3IEBAIEltYWdlQml0bWFwUmVuZGVyaW5nQ29u
dGV4dCogSFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUNvbnRleHRCaXRtYXBSZW5kZXJlcihjb25z
CiAKICAgICBtX2NvbnRleHQgPSBJbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZSgq
dGhpcywgV1RGTW92ZShzZXR0aW5ncykpOwogCi0jaWYgVVNFKElPU1VSRkFDRV9DQU5WQVNfQkFD
S0lOR19TVE9SRSkgfHwgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKKyNpZiBVU0UoSU9T
VVJGQUNFX0NBTlZBU19CQUNLSU5HX1NUT1JFKQogICAgIC8vIE5lZWQgdG8gbWFrZSBzdXJlIGEg
UmVuZGVyTGF5ZXIgYW5kIGNvbXBvc2l0aW5nIGxheWVyIGdldCBjcmVhdGVkIGZvciB0aGUgQ2Fu
dmFzLgogICAgIGludmFsaWRhdGVTdHlsZUFuZExheWVyQ29tcG9zaXRpb24oKTsKICNlbmRpZgpA
QCAtODU2LDE3ICs4NTYsNiBAQCBib29sIEhUTUxDYW52YXNFbGVtZW50OjpzaG91bGRBY2NlbGVy
YXRlKGNvbnN0IEludFNpemUmIHNpemUpIGNvbnN0CiAKICNpZiBVU0UoSU9TVVJGQUNFX0NBTlZB
U19CQUNLSU5HX1NUT1JFKQogICAgIHJldHVybiBzZXR0aW5ncy5jYW52YXNVc2VzQWNjZWxlcmF0
ZWREcmF3aW5nKCk7Ci0jZWxpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQotICAgIGlm
IChtX2NvbnRleHQgJiYgIW1fY29udGV4dC0+aXMyZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICBpZiAoIXNldHRpbmdzLmFjY2VsZXJhdGVkMmRDYW52YXNFbmFibGVkKCkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChhcmVhIDwgc2V0dGluZ3MubWluaW11bUFjY2Vs
ZXJhdGVkMmRDYW52YXNTaXplKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVy
biB0cnVlOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oc2l6ZSk7CiAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtOTU1LDcgKzk0NCw3IEBAIHZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUltYWdl
QnVmZmVyKCkgY29uc3QKICAgICBpZiAoYnVmZmVyKCkgJiYgYnVmZmVyKCktPmRyYXdpbmdDb250
ZXh0KCkpCiAgICAgICAgIGJ1ZmZlcigpLT5kcmF3aW5nQ29udGV4dCgpLT5zZXRUcmFja3NEaXNw
bGF5TGlzdFJlcGxheShtX3RyYWNrc0Rpc3BsYXlMaXN0UmVwbGF5KTsKIAotI2lmIFVTRShJT1NV
UkZBQ0VfQ0FOVkFTX0JBQ0tJTkdfU1RPUkUpIHx8IEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5W
QVMpCisjaWYgVVNFKElPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSkKICAgICBpZiAobV9j
b250ZXh0ICYmIG1fY29udGV4dC0+aXMyZCgpKSB7CiAgICAgICAgIC8vIFJlY2FsY3VsYXRlIGNv
bXBvc2l0aW5nIHJlcXVpcmVtZW50cyBpZiBhY2NlbGVyYXRpb24gc3RhdGUgY2hhbmdlZC4KICAg
ICAgICAgY29uc3RfY2FzdDxIVE1MQ2FudmFzRWxlbWVudCo+KHRoaXMpLT5pbnZhbGlkYXRlU3R5
bGVBbmRMYXllckNvbXBvc2l0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0ltYWdlQml0bWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwCmlu
ZGV4IDQzOWI2YTlkN2Q4MTIwZDkxZTFlMWFmYzU2ZDFhYWY2YmUwYjQ5ZTQuLmJhMTI5OGU0Zjc0
N2MzYmRiMzhmYWU4MDkyODI2ODg5NmJlZTllZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSW1hZ2VCaXRtYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRt
YXAuY3BwCkBAIC02MSw3ICs2MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRF9JTVBMKEltYWdlQml0bWFwKTsKIAotI2lmIFVTRShJT1NVUkZBQ0VfQ0FO
VkFTX0JBQ0tJTkdfU1RPUkUpIHx8IEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCisjaWYg
VVNFKElPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSkKIHN0YXRpYyBSZW5kZXJpbmdNb2Rl
IGJ1ZmZlclJlbmRlcmluZ01vZGUgPSBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZDsKICNlbHNl
CiBzdGF0aWMgUmVuZGVyaW5nTW9kZSBidWZmZXJSZW5kZXJpbmdNb2RlID0gUmVuZGVyaW5nTW9k
ZTo6VW5hY2NlbGVyYXRlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKaW5kZXggNzFhNDcwNjA2NDRi
ZjgxOTAxMzliYTVlNDUxNjljM2JkODUyNTIxYi4uZThkNjgxM2ZkNGFjYTE3NDYyMzFjYjk1MTE4
YzE2MTZlZWNlMDg1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKQEAgLTE0NSw3ICsxNDUsNyBA
QCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjp+Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
QmFzZSgpCiAKIGJvb2wgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6aXNBY2NlbGVyYXRl
ZCgpIGNvbnN0CiB7Ci0jaWYgVVNFKElPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSkgfHwg
RU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKKyNpZiBVU0UoSU9TVVJGQUNFX0NBTlZBU19C
QUNLSU5HX1NUT1JFKQogICAgIGF1dG8qIGNvbnRleHQgPSBjYW52YXNCYXNlKCkuZXhpc3RpbmdE
cmF3aW5nQ29udGV4dCgpOwogICAgIHJldHVybiBjb250ZXh0ICYmIGNvbnRleHQtPmlzQWNjZWxl
cmF0ZWRDb250ZXh0KCk7CiAjZWxzZQpAQCAtMTU4NSwxNiArMTU4NSw3IEBAIEV4Y2VwdGlvbk9y
PHZvaWQ+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdJbWFnZShDYW52YXNCYXNl
JiBzb3VyY2VDYW52CiAKICAgICBjaGVja09yaWdpbigmc291cmNlQ2FudmFzKTsKIAotI2lmIEVO
QUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCi0gICAgLy8gSWYgd2UncmUgZHJhd2luZyBmcm9t
IG9uZSBhY2NlbGVyYXRlZCBjYW52YXMgMmQgdG8gYW5vdGhlciwgYXZvaWQgY2FsbGluZyBzb3Vy
Y2VDYW52YXMubWFrZVJlbmRlcmluZ1Jlc3VsdHNBdmFpbGFibGUoKQotICAgIC8vIGFzIHRoYXQg
d2lsbCBkbyBhIHJlYWRiYWNrIHRvIHNvZnR3YXJlLgotICAgIFJlZlB0cjxDYW52YXNSZW5kZXJp
bmdDb250ZXh0PiBzb3VyY2VDb250ZXh0ID0gc291cmNlQ2FudmFzLnJlbmRlcmluZ0NvbnRleHQo
KTsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IGFuIGFjY2VsZXJhdGVkIHBhdGggZm9yIGRyYXdp
bmcgZnJvbSBhIFdlYkdMIGNhbnZhcyB0byBhIDJkIGNhbnZhcyB3aGVuIHBvc3NpYmxlLgotICAg
IGlmICghaXNBY2NlbGVyYXRlZCgpIHx8ICFzb3VyY2VDb250ZXh0IHx8ICFzb3VyY2VDb250ZXh0
LT5pc0FjY2VsZXJhdGVkKCkgfHwgIXNvdXJjZUNvbnRleHQtPmlzMmQoKSkKLSAgICAgICAgc291
cmNlQ2FudmFzLm1ha2VSZW5kZXJpbmdSZXN1bHRzQXZhaWxhYmxlKCk7Ci0jZWxzZQogICAgIHNv
dXJjZUNhbnZhcy5tYWtlUmVuZGVyaW5nUmVzdWx0c0F2YWlsYWJsZSgpOwotI2VuZGlmCiAKICAg
ICBpZiAocmVjdENvbnRhaW5zQ2FudmFzKGRzdFJlY3QpKSB7CiAgICAgICAgIGMtPmRyYXdJbWFn
ZUJ1ZmZlcigqYnVmZmVyLCBkc3RSZWN0LCBzcmNSZWN0LCB7IHN0YXRlKCkuZ2xvYmFsQ29tcG9z
aXRlLCBzdGF0ZSgpLmdsb2JhbEJsZW5kIH0pOwpAQCAtMTY0Myw3ICsxNjM0LDcgQEAgRXhjZXB0
aW9uT3I8dm9pZD4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJhd0ltYWdlKEhUTUxW
aWRlb0VsZW1lbnQmIHZpZGUKIAogICAgIGNoZWNrT3JpZ2luKCZ2aWRlbyk7CiAKLSNpZiBVU0Uo
Q0cpIHx8IChFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAmJiBVU0UoR1NUUkVBTUVSX0dM
KSAmJiBVU0UoQ0FJUk8pKQorI2lmIFVTRShDRykKICAgICBpZiAoTmF0aXZlSW1hZ2VQdHIgaW1h
Z2UgPSB2aWRlby5uYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkpIHsKICAgICAgICAgYy0+ZHJh
d05hdGl2ZUltYWdlKGltYWdlLCBGbG9hdFNpemUodmlkZW8udmlkZW9XaWR0aCgpLCB2aWRlby52
aWRlb0hlaWdodCgpKSwgZHN0UmVjdCwgc3JjUmVjdCk7CiAgICAgICAgIGlmIChyZWN0Q29udGFp
bnNDYW52YXMoZHN0UmVjdCkpCkBAIC0xOTQ5LDcgKzE5NDAsNyBAQCBFeGNlcHRpb25PcjxSZWZQ
dHI8Q2FudmFzUGF0dGVybj4+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNyZWF0ZVBh
dHRlcm4oSAogICAgIGNoZWNrT3JpZ2luKCZ2aWRlb0VsZW1lbnQpOwogICAgIGJvb2wgb3JpZ2lu
Q2xlYW4gPSBjYW52YXNCYXNlKCkub3JpZ2luQ2xlYW4oKTsKIAotI2lmIFVTRShDRykgfHwgKEVO
QUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICYmIFVTRShHU1RSRUFNRVJfR0wpICYmIFVTRShD
QUlSTykpCisjaWYgVVNFKENHKQogICAgIGlmIChhdXRvIG5hdGl2ZUltYWdlID0gdmlkZW9FbGVt
ZW50Lm5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSkKICAgICAgICAgcmV0dXJuIFJlZlB0cjxD
YW52YXNQYXR0ZXJuPiB7IENhbnZhc1BhdHRlcm46OmNyZWF0ZShCaXRtYXBJbWFnZTo6Y3JlYXRl
KFdURk1vdmUobmF0aXZlSW1hZ2UpKSwgcmVwZWF0WCwgcmVwZWF0WSwgb3JpZ2luQ2xlYW4pIH07
CiAjZW5kaWYKQEAgLTE5OTMsMjAgKzE5ODQsNiBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyREJhc2U6OmRpZERyYXcoY29uc3QgRmxvYXRSZWN0JiByLCB1bnNpZ25lZCBvcHRpb25zKQog
ICAgIGlmICghc3RhdGUoKS5oYXNJbnZlcnRpYmxlVHJhbnNmb3JtKQogICAgICAgICByZXR1cm47
CiAKLSNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQotICAgIC8vIElmIHdlIGFyZSBk
cmF3aW5nIHRvIGhhcmR3YXJlIGFuZCB3ZSBoYXZlIGEgY29tcG9zaXRlZCBsYXllciwganVzdCBj
YWxsIGNvbnRlbnRDaGFuZ2VkKCkuCi0gICAgaWYgKGlzQWNjZWxlcmF0ZWQoKSAmJiBpczxIVE1M
Q2FudmFzRWxlbWVudD4oY2FudmFzQmFzZSgpKSkgewotICAgICAgICBhdXRvJiBjYW52YXMgPSBk
b3duY2FzdDxIVE1MQ2FudmFzRWxlbWVudD4oY2FudmFzQmFzZSgpKTsKLSAgICAgICAgUmVuZGVy
Qm94KiByZW5kZXJCb3ggPSBjYW52YXMucmVuZGVyQm94KCk7Ci0gICAgICAgIGlmIChyZW5kZXJC
b3ggJiYgcmVuZGVyQm94LT5oYXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCkpIHsKLSAgICAgICAg
ICAgIHJlbmRlckJveC0+Y29udGVudENoYW5nZWQoQ2FudmFzUGl4ZWxzQ2hhbmdlZCk7Ci0gICAg
ICAgICAgICBjYW52YXMuY2xlYXJDb3BpZWRJbWFnZSgpOwotICAgICAgICAgICAgY2FudmFzLm5v
dGlmeU9ic2VydmVyc0NhbnZhc0NoYW5nZWQocik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLSAgICB9Ci0jZW5kaWYKLQogICAgIEZsb2F0UmVjdCBkaXJ0eVJlY3QgPSByOwogICAg
IGlmIChvcHRpb25zICYgQ2FudmFzRGlkRHJhd0FwcGx5VHJhbnNmb3JtKSB7CiAgICAgICAgIEFm
ZmluZVRyYW5zZm9ybSBjdG0gPSBzdGF0ZSgpLnRyYW5zZm9ybTsKQEAgLTIxOTgsMTggKzIxNzUs
NiBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmluZmxhdGVTdHJva2VSZWN0
KEZsb2F0UmVjdCYgcmVjdCkgY29uc3QKICAgICByZWN0LmluZmxhdGUoZGVsdGEpOwogfQogCi0j
aWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKLQotUGxhdGZvcm1MYXllciogQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6cGxhdGZvcm1MYXllcigpIGNvbnN0Ci17Ci0gICAgaWYg
KGF1dG8qIGJ1ZmZlciA9IGNhbnZhc0Jhc2UoKS5idWZmZXIoKSkKLSAgICAgICAgcmV0dXJuIGJ1
ZmZlci0+cGxhdGZvcm1MYXllcigpOwotCi0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLSNlbmRp
ZgotCiBzdGF0aWMgaW5saW5lIEludGVycG9sYXRpb25RdWFsaXR5IHNtb290aGluZ1RvSW50ZXJw
b2xhdGlvblF1YWxpdHkoSW1hZ2VTbW9vdGhpbmdRdWFsaXR5IHF1YWxpdHkpCiB7CiAgICAgc3dp
dGNoIChxdWFsaXR5KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmgKaW5kZXggYTllNThlYTBmN2QzMjYwM2Iz
Y2Y0OGViYTA1N2U5YjM1MTU1ZjQzNy4uNDY4ZWUzODhiNjE2MmQ0ZmIxYTJmNzY1YWZkYTIxYTQ4
OTliMTM5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuaApAQCAtMzY5LDEwICszNjksNiBAQCBwcm90ZWN0
ZWQ6CiAKICAgICBib29sIGhhc0ludmVydGlibGVUcmFuc2Zvcm0oKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBzdGF0ZSgpLmhhc0ludmVydGlibGVUcmFuc2Zvcm07IH0KIAotI2lmIEVOQUJMRShB
Q0NFTEVSQVRFRF8yRF9DQU5WQVMpCi0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigp
IGNvbnN0IG92ZXJyaWRlOwotI2VuZGlmCi0KICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgTWF4
U2F2ZUNvdW50ID0gMTAyNCAqIDE2OwogICAgIFZlY3RvcjxTdGF0ZSwgMT4gbV9zdGF0ZVN0YWNr
OwogICAgIHVuc2lnbmVkIG1fdW5yZWFsaXplZFNhdmVDb3VudCB7IDAgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9JbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRl
eHQuY3BwCmluZGV4IGRlMWY3NzQ2ODYxN2M3OGQwNzBmNDc1ZDJiMjRjNGQ4MjQ2ZDRlYTUuLjU0
MjBmNTA4NGY5MTEyMzliM2YwZjE3NTYyNzQxYWEzODdiYWEwY2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0
LmNwcApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lT
T19BTExPQ0FURURfSU1QTChJbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQpOwogCi0jaWYgVVNF
KElPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSkgfHwgRU5BQkxFKEFDQ0VMRVJBVEVEXzJE
X0NBTlZBUykKKyNpZiBVU0UoSU9TVVJGQUNFX0NBTlZBU19CQUNLSU5HX1NUT1JFKQogc3RhdGlj
IFJlbmRlcmluZ01vZGUgYnVmZmVyUmVuZGVyaW5nTW9kZSA9IFJlbmRlcmluZ01vZGU6OkFjY2Vs
ZXJhdGVkOwogI2Vsc2UKIHN0YXRpYyBSZW5kZXJpbmdNb2RlIGJ1ZmZlclJlbmRlcmluZ01vZGUg
PSBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vQ2Fpcm8uY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DYWlyby5j
bWFrZQppbmRleCBmYzZjNWYzY2QwNDYyNjk1NjY4MjJjMDhhNDgyY2MzYmQ2YTg4M2MwLi5jMWI1
MzYwNTcxMzc3NGRjMDA2ZDAyOGVkYTdjNmE4MjEzZDZjY2ExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9DYWlyby5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9DYWlyby5jbWFrZQpAQCAtMTQsNyArMTQsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1BSSVZB
VEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0
aWxpdGllcy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1w
bENhaXJvLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFj
a2VuZC5oCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0dMU3Vy
ZmFjZUJhY2tlbmQuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fp
cm9JbWFnZVN1cmZhY2VCYWNrZW5kLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFn
ZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L1BsYXRmb3JtQ29udGV4dENhaXJvLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NvdXJjZXNDYWlyby50eHQgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Tb3VyY2VzQ2Fp
cm8udHh0CmluZGV4IDIxZDkzZDAxYTgwYzM3NzdkMDA0ZjE2NTMxYTYxYTdhMjIxMGQzYjcuLjVm
MDE0OTRmM2NhMWUzMWQ3NDdiZjdjN2FmYjc2YWQwY2Q3ZjY3MGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NvdXJjZXNDYWlyby50eHQKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU291cmNlc0NhaXJvLnR4dApAQCAtMzEsNyArMzEsNiBAQCBwbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRHTENhaXJvLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9H
cmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFn
ZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAKLXBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVm
ZmVyQ2Fpcm9HTFN1cmZhY2VCYWNrZW5kLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1h
Z2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9JbWFnZUJ1ZmZlclV0aWxpdGllc0NhaXJvLmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuaAppbmRleCA2ZWNlODkwYWFmZDg2YjlmNWQyODgx
NWJlYzI5ZTExNDVlMWNiZGZkLi5lNjIyOTMxNzk4ODA3ZGZmMGIwNWNjNzNiZTJlYjdlZDcxMzQ3
ZTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRl
eHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuaApA
QCAtNzQsMTAgKzc0LDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGlzRUdMQ29udGV4
dCgpIGNvbnN0ID0gMDsKIAotI2lmIFVTRShDQUlSTykKLSAgICB2aXJ0dWFsIGNhaXJvX2Rldmlj
ZV90KiBjYWlyb0RldmljZSgpID0gMDsKLSNlbmRpZgotCiAjaWYgRU5BQkxFKEdSQVBISUNTX0NP
TlRFWFRfR0wpCiAgICAgdmlydHVhbCBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMIHBsYXRmb3Jt
Q29udGV4dCgpID0gMDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZUJ1ZmZlci5oCmluZGV4IDc2Mzg5NzhiODVlNGE3MzYz
YzQyMjc4MGM2ZjM3ZjY4MTMyNWQ1NTUuLmIwNWZhNjUxNjk3MWQxNzY3MTMxZDU2YTQ2MzkzNTNl
Zjk0ZTQ5MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Bs
YXRmb3JtSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9QbGF0Zm9ybUltYWdlQnVmZmVyLmgKQEAgLTM4LDggKzM4LDYgQEAKIAogI2lmIEhBVkUoSU9T
VVJGQUNFKQogI2luY2x1ZGUgIkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oIgotI2VsaWYg
VVNFKENBSVJPKSAmJiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQotI2luY2x1ZGUgIklt
YWdlQnVmZmVyQ2Fpcm9HTFN1cmZhY2VCYWNrZW5kLmgiCiAjZW5kaWYKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtNTQsOCArNTIsNiBAQCB1c2luZyBVbmFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJC
YWNrZW5kID0gSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ7CiAKICNpZiBIQVZF
KElPU1VSRkFDRSkKIHVzaW5nIEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJCYWNrZW5kID0gSW1hZ2VC
dWZmZXJJT1N1cmZhY2VCYWNrZW5kOwotI2VsaWYgVVNFKENBSVJPKSAmJiBFTkFCTEUoQUNDRUxF
UkFURURfMkRfQ0FOVkFTKQotdXNpbmcgQWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlckJhY2tlbmQgPSBJ
bWFnZUJ1ZmZlckNhaXJvR0xTdXJmYWNlQmFja2VuZDsKICNlbHNlCiB1c2luZyBBY2NlbGVyYXRl
ZEltYWdlQnVmZmVyQmFja2VuZCA9IFVuYWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlckJhY2tlbmQ7CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0NhaXJvVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0NhaXJvVXRpbGl0aWVzLmNwcAppbmRleCAwODVjNzBkZmZkNDk3ODA5Yzc1NDAzYjVlYjQ4
OTcyZDY4NzRlMDg3Li43NDRkZmUxYmNmMTMxMjBjMzBkZjNlYTRkNzAyZWRjOWM3MjExOGM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0
aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Q2Fpcm9VdGlsaXRpZXMuY3BwCkBAIC00MywxMyArNDMsNiBAQAogI2luY2x1ZGUgPHd0Zi9Vbmlx
dWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAotI2lmIEVOQUJMRShBQ0NFTEVS
QVRFRF8yRF9DQU5WQVMpCi0jaWYgVVNFKEVHTCkgJiYgVVNFKExJQkVQT1hZKQotI2luY2x1ZGUg
IkVwb3h5RUdMLmgiCi0jZW5kaWYKLSNpbmNsdWRlIDxjYWlyby1nbC5oPgotI2VuZGlmCi0KICNp
ZiBPUyhXSU5ET1dTKQogI2luY2x1ZGUgPGNhaXJvLXdpbjMyLmg+CiAjZW5kaWYKQEAgLTMyMSwx
MCArMzE0LDYgQEAgSW50U2l6ZSBjYWlyb1N1cmZhY2VTaXplKGNhaXJvX3N1cmZhY2VfdCogc3Vy
ZmFjZSkKICAgICBzd2l0Y2ggKGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUoc3VyZmFjZSkpIHsKICAg
ICBjYXNlIENBSVJPX1NVUkZBQ0VfVFlQRV9JTUFHRToKICAgICAgICAgcmV0dXJuIEludFNpemUo
Y2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgoc3VyZmFjZSksIGNhaXJvX2ltYWdlX3N1cmZh
Y2VfZ2V0X2hlaWdodChzdXJmYWNlKSk7Ci0jaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZB
UykKLSAgICBjYXNlIENBSVJPX1NVUkZBQ0VfVFlQRV9HTDoKLSAgICAgICAgcmV0dXJuIEludFNp
emUoY2Fpcm9fZ2xfc3VyZmFjZV9nZXRfd2lkdGgoc3VyZmFjZSksIGNhaXJvX2dsX3N1cmZhY2Vf
Z2V0X2hlaWdodChzdXJmYWNlKSk7Ci0jZW5kaWYKICNpZiBPUyhXSU5ET1dTKQogICAgIGNhc2Ug
Q0FJUk9fU1VSRkFDRV9UWVBFX1dJTjMyOgogICAgICAgICBzdXJmYWNlID0gY2Fpcm9fd2luMzJf
c3VyZmFjZV9nZXRfaW1hZ2Uoc3VyZmFjZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvR0xTdXJmYWNlQmFja2VuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNh
aXJvR0xTdXJmYWNlQmFja2VuZC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQz
NjM3MmY5MTllN2VjZThjYmM2YTI2M2M0ODljOTllMGU4NzYyNDMuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0dMU3VyZmFjZUJhY2tlbmQuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsMjY4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgTmlrb2xh
cyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDcg
SG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIgPHplY2tlQHNlbGZpc2gub3JnPgotICogQ29weXJp
Z2h0IChDKSAyMDA4LCAyMDA5IERpcmsgU2NodWx6ZSA8a3JpdEB3ZWJraXQub3JnPgotICogQ29w
eXJpZ2h0IChDKSAyMDEwIFRvcmNoIE1vYmlsZSAoQmVpamluZykgQ28uIEx0ZC4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSW1hZ2VCdWZmZXJDYWlyb0dMU3VyZmFjZUJh
Y2tlbmQuaCIKLQotI2lmIFVTRShDQUlSTykgJiYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZB
UykKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0jaW5jbHVkZSAiR0xDb250ZXh0LmgiCi0jaW5j
bHVkZSAiVGV4dHVyZU1hcHBlckdMLmgiCi0jaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMu
aD4KLQotI2lmIFVTRShFR0wpCi0jaWYgVVNFKExJQkVQT1hZKQotI2luY2x1ZGUgIkVwb3h5RUdM
LmgiCi0jZWxzZQotI2luY2x1ZGUgPEVHTC9lZ2wuaD4KLSNlbmRpZgotI2VuZGlmCi0jaW5jbHVk
ZSA8Y2Fpcm8tZ2wuaD4KLQotI2lmIFVTRShMSUJFUE9YWSkKLSNpbmNsdWRlIDxlcG94eS9nbC5o
PgotI2VsaWYgVVNFKE9QRU5HTF9FUykKLSNpbmNsdWRlIDxHTEVTMi9nbDIuaD4KLSNlbHNlCi0j
aW5jbHVkZSAiT3BlbkdMU2hpbXMuaCIKLSNlbmRpZgotCi0jaWYgVVNFKENPT1JESU5BVEVEX0dS
QVBISUNTKQotI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmgiCi0j
aW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5oIgotI2VuZGlmCi0KLVdU
Rl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChJbWFnZUJ1ZmZlckNhaXJvR0xTdXJmYWNlQmFja2Vu
ZCk7Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBjbGVhclN1cmZhY2UoY2Fpcm9fc3VyZmFjZV90KiBz
dXJmYWNlKQotewotICAgIFJlZlB0cjxjYWlyb190PiBjciA9IGFkb3B0UmVmKGNhaXJvX2NyZWF0
ZShzdXJmYWNlKSk7Ci0gICAgY2Fpcm9fc2V0X29wZXJhdG9yKGNyLmdldCgpLCBDQUlST19PUEVS
QVRPUl9DTEVBUik7Ci0gICAgY2Fpcm9fcGFpbnQoY3IuZ2V0KCkpOwotfQotCi1zdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXJDYWlyb0dMU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVyQ2Fpcm9H
TFN1cmZhY2VCYWNrZW5kOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNv
bHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgSG9zdFdpbmRvdyopCi17
Ci0gICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHNpemUsIHJl
c29sdXRpb25TY2FsZSk7Ci0gICAgaWYgKGJhY2tlbmRTaXplLmlzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0KLSAgICBhdXRvKiBjb250ZXh0ID0gUGxhdGZvcm1EaXNwbGF5Ojpz
aGFyZWREaXNwbGF5Rm9yQ29tcG9zaXRpbmcoKS5zaGFyaW5nR0xDb250ZXh0KCk7Ci0gICAgY29u
dGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7Ci0KLSAgICAvLyBXZSBtdXN0IGdlbmVyYXRlIHRo
ZSB0ZXh0dXJlIG91cnNlbHZlcywgYmVjYXVzZSB0aGVyZSBpcyBubyBDYWlybyBBUEkgZm9yIGV4
dHJhY3RpbmcgaXQKLSAgICAvLyBmcm9tIGEgcHJlLWV4aXN0aW5nIHN1cmZhY2UuCi0gICAgdWlu
dDMyX3QgdGV4dHVyZQotICAgIGdsR2VuVGV4dHVyZXMoMSwgJnRleHR1cmUpOwotICAgIGdsQmlu
ZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4dHVyZSk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJmKEdM
X1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsKLSAgICBn
bFRleFBhcmFtZXRlcmYoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1Q
X1RPX0VER0UpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJF
X01JTl9GSUxURVIsIEdMX0xJTkVBUik7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVf
MkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFSKTsKLQotICAgIGdsUGl4ZWxTdG9y
ZWkoR0xfVU5QQUNLX0FMSUdOTUVOVCwgMSk7Ci0KLSAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVS
RV8yRCwgMCAvKiBsZXZlbCAqLywgR0xfUkdCQSwgYmFja2VuZFNpemUud2lkdGgoKSwgYmFja2Vu
ZFNpemUuaGVpZ2h0KCksIDAgLyogYm9yZGVyICovLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRF
LCAwKTsKLQotICAgIGNhaXJvX2RldmljZV90KiBkZXZpY2UgPSBjb250ZXh0LT5jYWlyb0Rldmlj
ZSgpOwotCi0gICAgLy8gVGhyZWFkLWF3YXJlbmVzcyBpcyBhIGh1Z2UgcGVyZm9ybWFuY2UgaGl0
IG9uIG5vbi1JbnRlbCBkcml2ZXJzLgotICAgIGNhaXJvX2dsX2RldmljZV9zZXRfdGhyZWFkX2F3
YXJlKGRldmljZSwgRkFMU0UpOwotCi0gICAgYXV0byBzdXJmYWNlID0gYWRvcHRSZWYoY2Fpcm9f
Z2xfc3VyZmFjZV9jcmVhdGVfZm9yX3RleHR1cmUoZGV2aWNlLCBDQUlST19DT05URU5UX0NPTE9S
X0FMUEhBLCB0ZXh0dXJlLCBiYWNrZW5kU2l6ZS53aWR0aCgpLCBiYWNrZW5kU2l6ZS5oZWlnaHQo
KSkpOwotICAgIGlmIChjYWlyb19zdXJmYWNlX3N0YXR1cyhzdXJmYWNlKSAhPSBDQUlST19TVEFU
VVNfU1VDQ0VTUykKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBjbGVhclN1cmZhY2Uo
c3VyZmFjZS5nZXQoKSk7Ci0KLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
Q2Fpcm9HTFN1cmZhY2VCYWNrZW5kPihuZXcgSW1hZ2VCdWZmZXJDYWlyb0dMU3VyZmFjZUJhY2tl
bmQoc2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgV1RGTW92
ZShzdXJmYWNlKSwgdGV4dHVyZSkpOwotfQotCi1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJD
YWlyb0dMU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVyQ2Fpcm9HTFN1cmZhY2VCYWNrZW5kOjpj
cmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKQotewot
ICAgIHJldHVybiBJbWFnZUJ1ZmZlckNhaXJvR0xTdXJmYWNlQmFja2VuZDo6Y3JlYXRlKHNpemUs
IDEsIENvbG9yU3BhY2U6OlNSR0IsIG51bGxwdHIpOwotfQotCi1JbWFnZUJ1ZmZlckNhaXJvR0xT
dXJmYWNlQmFja2VuZDo6SW1hZ2VCdWZmZXJDYWlyb0dMU3VyZmFjZUJhY2tlbmQoY29uc3QgRmxv
YXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJl
c29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBSZWZQdHI8Y2Fpcm9fc3VyZmFj
ZV90PiYmIHN1cmZhY2UsIHVpbnQzMl90IHRleHR1cmUpCi0gICAgOiBJbWFnZUJ1ZmZlckNhaXJv
U3VyZmFjZUJhY2tlbmQobG9naWNhbFNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUs
IGNvbG9yU3BhY2UsIFdURk1vdmUoc3VyZmFjZSkpCi0gICAgLCBtX3RleHR1cmUodGV4dHVyZSkK
LXsKLSNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCi0jaWYgVVNFKE5JQ09TSUEpCi0gICAg
bV9uaWNvc2lhTGF5ZXIgPSBOaWNvc2lhOjpDb250ZW50TGF5ZXI6OmNyZWF0ZShOaWNvc2lhOjpD
b250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6Y3JlYXRlRmFjdG9yeSgqdGhpcykpOwotI2Vs
c2UKLSAgICBtX3BsYXRmb3JtTGF5ZXJQcm94eSA9IGFkb3B0UmVmKG5ldyBUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllclByb3h5KTsKLSNlbmRpZgotI2VuZGlmCi19Ci0KLUltYWdlQnVmZmVyQ2Fp
cm9HTFN1cmZhY2VCYWNrZW5kOjp+SW1hZ2VCdWZmZXJDYWlyb0dMU3VyZmFjZUJhY2tlbmQoKQot
ewotI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykgJiYgVVNFKE5JQ09TSUEpCi0gICAgZG93
bmNhc3Q8Tmljb3NpYTo6Q29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGw+KG1fbmljb3NpYUxh
eWVyLT5pbXBsKCkpLmludmFsaWRhdGVDbGllbnQoKTsKLSNlbmRpZgotCi0gICAgR0xDb250ZXh0
KiBwcmV2aW91c0FjdGl2ZUNvbnRleHQgPSBHTENvbnRleHQ6OmN1cnJlbnQoKTsKLSAgICBQbGF0
Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXlGb3JDb21wb3NpdGluZygpLnNoYXJpbmdHTENvbnRl
eHQoKS0+bWFrZUNvbnRleHRDdXJyZW50KCk7Ci0KLSAgICBpZiAobV90ZXh0dXJlKQotICAgICAg
ICBnbERlbGV0ZVRleHR1cmVzKDEsICZtX3RleHR1cmUpOwotCi0jaWYgVVNFKENPT1JESU5BVEVE
X0dSQVBISUNTKQotICAgIGlmIChtX2NvbXBvc2l0b3JUZXh0dXJlKQotICAgICAgICBnbERlbGV0
ZVRleHR1cmVzKDEsICZtX2NvbXBvc2l0b3JUZXh0dXJlKTsKLSNlbmRpZgotCi0gICAgaWYgKHBy
ZXZpb3VzQWN0aXZlQ29udGV4dCkKLSAgICAgICAgcHJldmlvdXNBY3RpdmVDb250ZXh0LT5tYWtl
Q29udGV4dEN1cnJlbnQoKTsKLX0KLQotUGxhdGZvcm1MYXllciogSW1hZ2VCdWZmZXI6OnBsYXRm
b3JtTGF5ZXIoKSBjb25zdAotewotI2lmIFVTRShOSUNPU0lBKQotICAgIHJldHVybiBtX25pY29z
aWFMYXllci5nZXQoKTsKLSNlbHNlCi0gICAgaWYgKG1fdGV4dHVyZSkKLSAgICAgICAgcmV0dXJu
IHRoaXM7Ci0jZW5kaWYKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotYm9vbCBJbWFnZUJ1ZmZl
ckNhaXJvR0xTdXJmYWNlQmFja2VuZDo6Y29weVRvUGxhdGZvcm1UZXh0dXJlKEdDR0xlbnVtIHRh
cmdldCwgUGxhdGZvcm1HTE9iamVjdCBkZXN0aW5hdGlvblRleHR1cmUsIEdDR0xlbnVtIGludGVy
bmFsZm9ybWF0LCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpCi17Ci0gICAgQVNT
RVJUX1dJVEhfTUVTU0FHRShtX3Jlc29sdXRpb25TY2FsZSA9PSAxLjAsICJTaW5jZSB0aGUgSGlE
UEkgQ2FudmFzIGZlYXR1cmUgaXMgcmVtb3ZlZCwgdGhlIHJlc29sdXRpb24gZmFjdG9yIGhlcmUg
aXMgYWx3YXlzIDEuIik7Ci0gICAgaWYgKHByZW11bHRpcGx5QWxwaGEgfHwgZmxpcFkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICghbV90ZXh0dXJlKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICBHQzNEZW51bSBiaW5kVGV4dHVyZVRhcmdldDsKLSAgICBzd2l0Y2ggKHRh
cmdldCkgewotICAgIGNhc2UgR0xfVEVYVFVSRV8yRDoKLSAgICAgICAgYmluZFRleHR1cmVUYXJn
ZXQgPSBHTF9URVhUVVJFXzJEOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEdMX1RFWFRVUkVf
Q1VCRV9NQVBfUE9TSVRJVkVfWDoKLSAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJ
VkVfWDoKLSAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWToKLSAgICBjYXNl
IEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWToKLSAgICBjYXNlIEdMX1RFWFRVUkVfQ1VC
RV9NQVBfUE9TSVRJVkVfWjoKLSAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVf
WjoKLSAgICAgICAgYmluZFRleHR1cmVUYXJnZXQgPSBHTF9URVhUVVJFX0NVQkVfTUFQOwotICAg
ICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
Ci0gICAgY2Fpcm9fc3VyZmFjZV9mbHVzaChtX3N1cmZhY2UuZ2V0KCkpOwotCi0gICAgc3RkOjp1
bmlxdWVfcHRyPEdMQ29udGV4dD4gY29udGV4dCA9IEdMQ29udGV4dDo6Y3JlYXRlT2Zmc2NyZWVu
Q29udGV4dCgmUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5Rm9yQ29tcG9zaXRpbmcoKSk7
Ci0gICAgY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgdWludDMyX3QgZmJvOwot
ICAgIGdsR2VuRnJhbWVidWZmZXJzKDEsICZmYm8pOwotICAgIGdsQmluZEZyYW1lYnVmZmVyKEdM
X0ZSQU1FQlVGRkVSLCBmYm8pOwotICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVC
VUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCBtX3RleHR1cmUsIDAp
OwotICAgIGdsQmluZFRleHR1cmUoYmluZFRleHR1cmVUYXJnZXQsIGRlc3RpbmF0aW9uVGV4dHVy
ZSk7Ci0gICAgZ2xDb3B5VGV4SW1hZ2UyRCh0YXJnZXQsIDAsIGludGVybmFsZm9ybWF0LCAwLCAw
LCBtX2JhY2tlbmRTaXplLndpZHRoKCksIG1fYmFja2VuZFNpemUuaGVpZ2h0KCksIDApOwotICAg
IGdsQmluZFRleHR1cmUoYmluZFRleHR1cmVUYXJnZXQsIDApOwotICAgIGdsQmluZEZyYW1lYnVm
ZmVyKEdMX0ZSQU1FQlVGRkVSLCAwKTsKLSAgICBnbEZsdXNoKCk7Ci0gICAgZ2xEZWxldGVGcmFt
ZWJ1ZmZlcnMoMSwgJmZibyk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLSNpZiBVU0UoQ09PUkRJ
TkFURURfR1JBUEhJQ1MpCi12b2lkIEltYWdlQnVmZmVyQ2Fpcm9HTFN1cmZhY2VCYWNrZW5kOjpj
cmVhdGVDb21wb3NpdG9yQnVmZmVyKCkKLXsKLSAgICBhdXRvKiBjb250ZXh0ID0gUGxhdGZvcm1E
aXNwbGF5OjpzaGFyZWREaXNwbGF5Rm9yQ29tcG9zaXRpbmcoKS5zaGFyaW5nR0xDb250ZXh0KCk7
Ci0gICAgY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7Ci0KLSAgICBnbEdlblRleHR1cmVz
KDEsICZtX2NvbXBvc2l0b3JUZXh0dXJlKTsKLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVf
MkQsIG1fY29tcG9zaXRvclRleHR1cmUpOwotICAgIGdsVGV4UGFyYW1ldGVyZihHTF9URVhUVVJF
XzJELCBHTF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7Ci0gICAgZ2xUZXhQYXJh
bWV0ZXJmKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdF
KTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklM
VEVSLCBHTF9MSU5FQVIpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9U
RVhUVVJFX01BR19GSUxURVIsIEdMX0xJTkVBUik7Ci0gICAgZ2xQaXhlbFN0b3JlaShHTF9VTlBB
Q0tfQUxJR05NRU5ULCAxKTsKLSAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCAsIEdM
X1JHQkEsIG1fYmFja2VuZFNpemUud2lkdGgoKSwgbV9iYWNrZW5kU2l6ZS5oZWlnaHQoKSwgMCwg
R0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgMCk7Ci0KLSAgICBtX2NvbXBvc2l0b3JTdXJmYWNl
ID0gYWRvcHRSZWYoY2Fpcm9fZ2xfc3VyZmFjZV9jcmVhdGVfZm9yX3RleHR1cmUoY29udGV4dC0+
Y2Fpcm9EZXZpY2UoKSwgQ0FJUk9fQ09OVEVOVF9DT0xPUl9BTFBIQSwgbV9jb21wb3NpdG9yVGV4
dHVyZSwgbV9iYWNrZW5kU2l6ZS53aWR0aCgpLCBtX2JhY2tlbmRTaXplLmhlaWdodCgpKSk7Ci0g
ICAgbV9jb21wb3NpdG9yQ3IgPSBhZG9wdFJlZihjYWlyb19jcmVhdGUobV9jb21wb3NpdG9yU3Vy
ZmFjZS5nZXQoKSkpOwotICAgIGNhaXJvX3NldF9hbnRpYWxpYXMobV9jb21wb3NpdG9yQ3IuZ2V0
KCksIENBSVJPX0FOVElBTElBU19OT05FKTsKLX0KLQotdm9pZCBJbWFnZUJ1ZmZlckNhaXJvR0xT
dXJmYWNlQmFja2VuZDo6c3dhcEJ1ZmZlcnNJZk5lZWRlZCgpCi17Ci0gICAgR0xDb250ZXh0KiBw
cmV2aW91c0FjdGl2ZUNvbnRleHQgPSBHTENvbnRleHQ6OmN1cnJlbnQoKTsKLQotICAgIGlmICgh
bV9jb21wb3NpdG9yVGV4dHVyZSkgewotICAgICAgICBjcmVhdGVDb21wb3NpdG9yQnVmZmVyKCk7
Ci0KLSAgICAgICAgYXV0byBwcm94eU9wZXJhdGlvbiA9Ci0gICAgICAgICAgICBbdGhpc10oVGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eSYgcHJveHkpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgTG9ja0hvbGRlciBob2xkZXIocHJveHkubG9jaygpKTsKLSAgICAgICAgICAg
ICAgICBwcm94eS5wdXNoTmV4dEJ1ZmZlcihtYWtlVW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyQnVmZmVyPihtX2NvbXBvc2l0b3JUZXh0dXJlLCBtX2JhY2tlbmRTaXplLCBUZXh0dXJl
TWFwcGVyR0w6OlNob3VsZEJsZW5kLCBHTF9SR0JBKSk7Ci0gICAgICAgICAgICB9OwotI2lmIFVT
RShOSUNPU0lBKQotICAgICAgICBwcm94eU9wZXJhdGlvbihkb3duY2FzdDxOaWNvc2lhOjpDb250
ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbD4obV9uaWNvc2lhTGF5ZXItPmltcGwoKSkucHJveHko
KSk7Ci0jZWxzZQotICAgICAgICBwcm94eU9wZXJhdGlvbigqbV9wbGF0Zm9ybUxheWVyUHJveHkp
OwotI2VuZGlmCi0gICAgfQotCi0gICAgLy8gSXQgd291bGQgYmUgZ3JlYXQgaWYgd2UgY291bGQg
anVzdCBzd2FwIHRoZSBidWZmZXJzIGhlcmUgYXMgd2UgZG8gd2l0aCB3ZWJnbCwgYnV0IHRoYXQg
YnJlYWtzIHRoZSBjYXNlcwotICAgIC8vIHdoZXJlIG9uZSBmcmFtZSB1c2VzIHRoZSBjb250ZW50
IGFscmVhZHkgcmVuZGVyZWQgaW4gdGhlIHByZXZpb3VzIGZyYW1lLiBTbyB3ZSBqdXN0IGNvcHkg
dGhlIGNvbnRlbnQKLSAgICAvLyBpbnRvIHRoZSBjb21wb3NpdG9yIGJ1ZmZlci4KLSAgICBjYWly
b19zZXRfc291cmNlX3N1cmZhY2UobV9jb21wb3NpdG9yQ3IuZ2V0KCksIG1fc3VyZmFjZS5nZXQo
KSwgMCwgMCk7Ci0gICAgY2Fpcm9fc2V0X29wZXJhdG9yKG1fY29tcG9zaXRvckNyLmdldCgpLCBD
QUlST19PUEVSQVRPUl9TT1VSQ0UpOwotICAgIGNhaXJvX3BhaW50KG1fY29tcG9zaXRvckNyLmdl
dCgpKTsKLQotICAgIGlmIChwcmV2aW91c0FjdGl2ZUNvbnRleHQpCi0gICAgICAgIHByZXZpb3Vz
QWN0aXZlQ29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7Ci19Ci0jZWxzZQotdm9pZCBJbWFn
ZUJ1ZmZlckNhaXJvR0xTdXJmYWNlQmFja2VuZDo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVy
ZU1hcHBlciYgdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4LCBmbG9hdCBvcGFjaXR5KQotewotICAgIEFT
U0VSVChtX3RleHR1cmUpOwotCi0gICAgLy8gQ2Fpcm8gbWF5IGNoYW5nZSB0aGUgYWN0aXZlIGNv
bnRleHQsIHNvIHdlIG1ha2Ugc3VyZSB0byBjaGFuZ2UgaXQgYmFjayBhZnRlciBmbHVzaGluZy4K
LSAgICBHTENvbnRleHQqIHByZXZpb3VzQWN0aXZlQ29udGV4dCA9IEdMQ29udGV4dDo6Y3VycmVu
dCgpOwotICAgIGNhaXJvX3N1cmZhY2VfZmx1c2gobV9zdXJmYWNlLmdldCgpKTsKLSAgICBwcmV2
aW91c0FjdGl2ZUNvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOwotCi0gICAgc3RhdGljX2Nh
c3Q8VGV4dHVyZU1hcHBlckdMJj4odGV4dHVyZU1hcHBlcikuZHJhd1RleHR1cmUobV90ZXh0dXJl
LCBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZEJsZW5kLCBtX2JhY2tlbmRTaXplLCB0YXJnZXRSZWN0
LCBtYXRyaXgsIG9wYWNpdHkpOwotfQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIFVTRShDQUlSTykgJiYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdl
QnVmZmVyQ2Fpcm9HTFN1cmZhY2VCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvR0xTdXJmYWNlQmFja2VuZC5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZGYwZmFlN2UyYzM0OWUyMTY0MTk4NDU1ZDQxOGMzY2Fi
Njc0N2I0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9HTFN1
cmZhY2VCYWNrZW5kLmgKKysrIC9kZXYvbnVsbApAQCAtMSw5MiArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgot
ICogQ29weXJpZ2h0IChDKSAyMDA3IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyIDx6ZWNrZUBz
ZWxmaXNoLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBEaXJrIFNjaHVsemUgPGty
aXRAd2Via2l0Lm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAxMCBUb3JjaCBNb2JpbGUgKEJlaWpp
bmcpIENvLiBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBVU0UoQ0FJUk8pICYmIEVO
QUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCi0KLSNpbmNsdWRlICJJbWFnZUJ1ZmZlckNhaXJv
U3VyZmFjZUJhY2tlbmQuaCIKLSNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+Ci0KLSNpZiBVU0Uo
TklDT1NJQSkKLSNpbmNsdWRlICJOaWNvc2lhQ29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGwu
aCIKLSNlbHNlCi0jaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgotI2VuZGlmCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotY2xhc3MgSW1hZ2VCdWZmZXJDYWlyb0dMU3VyZmFjZUJhY2tlbmQKLSNp
ZiBVU0UoTklDT1NJQSkKLSAgICA6IHB1YmxpYyBOaWNvc2lhOjpDb250ZW50TGF5ZXJUZXh0dXJl
TWFwcGVySW1wbDo6Q2xpZW50Ci0jZWxzZQotICAgIDogcHVibGljIFBsYXRmb3JtTGF5ZXIKLSNl
bmRpZgotICAgICwgcHVibGljIEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZCB7Ci0gICAg
V1RGX01BS0VfSVNPX0FMTE9DQVRFRChJbWFnZUJ1ZmZlckNhaXJvR0xTdXJmYWNlQmFja2VuZCk7
Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VCdWZmZXJDYWlyb0dMU3VyZmFjZUJhY2tl
bmQpOwotcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDYWly
b0dMU3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmLCBmbG9hdCByZXNvbHV0
aW9uU2NhbGUsIENvbG9yU3BhY2UsIGNvbnN0IEhvc3RXaW5kb3cqKTsKLSAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ2Fpcm9HTFN1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29u
c3QgRmxvYXRTaXplJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7Ci0KLSAgICB+SW1hZ2VCdWZm
ZXJDYWlyb0dMU3VyZmFjZUJhY2tlbmQoKTsKLQotICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3Jt
TGF5ZXIoKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIGNvcHlUb1BsYXRmb3JtVGV4dHVyZShH
Q0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgZGVzdGluYXRpb25UZXh0dXJlLCBHQ0dM
ZW51bSBpbnRlcm5hbGZvcm1hdCwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKSBv
dmVycmlkZTsKLQotcHJpdmF0ZToKLSAgICBJbWFnZUJ1ZmZlckNhaXJvR0xTdXJmYWNlQmFja2Vu
ZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlLCBSZWZQdHI8Y2Fpcm9fc3VyZmFj
ZV90PiYmKTsKLQotI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKLSAgICB2b2lkIGNyZWF0
ZUNvbXBvc2l0b3JCdWZmZXIoKTsKLSAgICB2b2lkIHN3YXBCdWZmZXJzSWZOZWVkZWQoKSBvdmVy
cmlkZTsKLSNpZiAhVVNFKE5JQ09TSUEpCi0gICAgUmVmUHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyUHJveHk+IHByb3h5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9wbGF0Zm9ybUxh
eWVyUHJveHkuY29weVJlZigpOyB9Ci0jZW5kaWYKLSNlbHNlCi0gICAgdm9pZCBwYWludFRvVGV4
dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyJiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXQsIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQgb3BhY2l0eSk7Ci0jZW5kaWYKLQotI2lmIFVT
RShDT09SRElOQVRFRF9HUkFQSElDUykKLSNpZiBVU0UoTklDT1NJQSkKLSAgICBSZWZQdHI8Tmlj
b3NpYTo6Q29udGVudExheWVyPiBtX25pY29zaWFMYXllcjsKLSNlbHNlCi0gICAgUmVmUHRyPFRl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk+IG1fcGxhdGZvcm1MYXllclByb3h5OwotI2Vu
ZGlmCi0gICAgdWludDMyX3QgbV90ZXh0dXJlOwotICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+
IG1fY29tcG9zaXRvclN1cmZhY2U7Ci0gICAgUmVmUHRyPGNhaXJvX3Q+IG1fY29tcG9zaXRvckNy
OwotICAgIHVpbnQzMl90IG1fY29tcG9zaXRvclRleHR1cmUgeyAwIH07Ci0jZW5kaWYKLSAgICB1
aW50MzJfdCBtX3RleHR1cmUgeyAwIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyBVU0UoQ0FJUk8pICYmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0
RUdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRF
R0wuY3BwCmluZGV4IDZmNDBlM2E0ZDA1MzRkZmMyZDE1MDQ1MDJjYjVmODM2YzVjNGIwMjkuLjNh
N2EwNzI2MDdiYWI1ZjYwOTg3MjcxYWE4ZTYzYTZiZWUxNGNkM2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuY3BwCkBAIC00
NSwxNCArNDUsNiBAQAogI2luY2x1ZGUgIk9wZW5HTFNoaW1zLmgiCiAjZW5kaWYKIAotI2lmIEVO
QUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCi0vLyBjYWlyby1nbC5oIGluY2x1ZGVzIHNvbWUg
ZGVmaW5pdGlvbnMgZnJvbSBHTFggdGhhdCBjb25mbGljdCB3aXRoCi0vLyB0aGUgb25lcyBwcm92
aWRlZCBieSB1cy4gU2luY2UgR0xDb250ZXh0RUdMIGRvZXNuJ3QgdXNlIGFueSBHTFgKLS8vIGZ1
bmN0aW9ucyB3ZSBjYW4gc2FmZWx5IGRpc2FibGUgdGhlbS4KLSN1bmRlZiBDQUlST19IQVNfR0xY
X0ZVTkNUSU9OUwotI2luY2x1ZGUgPGNhaXJvLWdsLmg+Ci0jZW5kaWYKLQogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzc1LDExICszNjcsNiBAQCBH
TENvbnRleHRFR0w6OkdMQ29udGV4dEVHTChQbGF0Zm9ybURpc3BsYXkmIGRpc3BsYXksIEVHTENv
bnRleHQgY29udGV4dCwgRUdMU3VyZgogCiBHTENvbnRleHRFR0w6On5HTENvbnRleHRFR0woKQog
ewotI2lmIFVTRShDQUlSTykKLSAgICBpZiAobV9jYWlyb0RldmljZSkKLSAgICAgICAgY2Fpcm9f
ZGV2aWNlX2Rlc3Ryb3kobV9jYWlyb0RldmljZSk7Ci0jZW5kaWYKLQogICAgIEVHTERpc3BsYXkg
ZGlzcGxheSA9IG1fZGlzcGxheS5lZ2xEaXNwbGF5KCk7CiAgICAgaWYgKG1fY29udGV4dCkgewog
ICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgMCk7CkBAIC01MDQsMjAg
KzQ5MSw2IEBAIHZvaWQgR0xDb250ZXh0RUdMOjpzd2FwSW50ZXJ2YWwoaW50IGludGVydmFsKQog
ICAgIGVnbFN3YXBJbnRlcnZhbChtX2Rpc3BsYXkuZWdsRGlzcGxheSgpLCBpbnRlcnZhbCk7CiB9
CiAKLSNpZiBVU0UoQ0FJUk8pCi1jYWlyb19kZXZpY2VfdCogR0xDb250ZXh0RUdMOjpjYWlyb0Rl
dmljZSgpCi17Ci0gICAgaWYgKG1fY2Fpcm9EZXZpY2UpCi0gICAgICAgIHJldHVybiBtX2NhaXJv
RGV2aWNlOwotCi0jaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKLSAgICBtX2NhaXJv
RGV2aWNlID0gY2Fpcm9fZWdsX2RldmljZV9jcmVhdGUobV9kaXNwbGF5LmVnbERpc3BsYXkoKSwg
bV9jb250ZXh0KTsKLSNlbmRpZgotCi0gICAgcmV0dXJuIG1fY2Fpcm9EZXZpY2U7Ci19Ci0jZW5k
aWYKLQogI2lmIEVOQUJMRShHUkFQSElDU19DT05URVhUX0dMKQogUGxhdGZvcm1HcmFwaGljc0Nv
bnRleHRHTCBHTENvbnRleHRFR0w6OnBsYXRmb3JtQ29udGV4dCgpCiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmgKaW5kZXggOWRh
NjMyMjA4NjFiMzYzMzY3MDlmMjFlOTVjNDE3NTZiODgxN2MyYy4uMWI1NGJiOTViNGVjZTMyNDdj
ZmQ2ZTQ4MmRiNzliNzYyMGQzZGIzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuaApAQCAtNjMsOSArNjMsNiBAQCBwcml2YXRl
OgogICAgIGJvb2wgY2FuUmVuZGVyVG9EZWZhdWx0RnJhbWVidWZmZXIoKSBvdmVycmlkZTsKICAg
ICBJbnRTaXplIGRlZmF1bHRGcmFtZUJ1ZmZlclNpemUoKSBvdmVycmlkZTsKICAgICB2b2lkIHN3
YXBJbnRlcnZhbChpbnQpIG92ZXJyaWRlOwotI2lmIFVTRShDQUlSTykKLSAgICBjYWlyb19kZXZp
Y2VfdCogY2Fpcm9EZXZpY2UoKSBvdmVycmlkZTsKLSNlbmRpZgogICAgIGJvb2wgaXNFR0xDb250
ZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiAjaWYgRU5BQkxFKEdSQVBI
SUNTX0NPTlRFWFRfR0wpCkBAIC0xMTgsOSArMTE1LDYgQEAgcHJpdmF0ZToKICNpZiBVU0UoV1BF
X1JFTkRFUkVSKQogICAgIHN0cnVjdCB3cGVfcmVuZGVyZXJfYmFja2VuZF9lZ2xfb2Zmc2NyZWVu
X3RhcmdldCogbV93cGVUYXJnZXQgeyBudWxscHRyIH07CiAjZW5kaWYKLSNpZiBVU0UoQ0FJUk8p
Ci0gICAgY2Fpcm9fZGV2aWNlX3QqIG1fY2Fpcm9EZXZpY2UgeyBudWxscHRyIH07Ci0jZW5kaWYK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRHTFguY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5jcHAKaW5kZXggYTA2ZmY5ZWI5M2Mz
ODg0YWI2MDZmZmY5YzZhODNhYjkzZDg4YzdlNy4uYzJjYTRlMGM5ZjA2Mzg0NGMyMzdiMzI5YTU5
YmMzZjQ2ZGJkODRkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ2x4L0dMQ29udGV4dEdMWC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5jcHAKQEAgLTI2LDEwICsyNiw2IEBACiAjaW5jbHVkZSA8
R0wvZ2x4Lmg+CiAjaW5jbHVkZSA8Y2Fpcm8uaD4KIAotI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8y
RF9DQU5WQVMpCi0jaW5jbHVkZSA8Y2Fpcm8tZ2wuaD4KLSNlbmRpZgotCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICNpZiAhZGVmaW5lZChQRk5HTFhTV0FQSU5URVJWQUxTR0lQUk9DKQpAQCAtMzI1
LDkgKzMyMSw2IEBAIEdMQ29udGV4dEdMWDo6R0xDb250ZXh0R0xYKFBsYXRmb3JtRGlzcGxheSYg
ZGlzcGxheSwgWFVuaXF1ZUdMWENvbnRleHQmJiBjb250ZXh0CiAKIEdMQ29udGV4dEdMWDo6fkdM
Q29udGV4dEdMWCgpCiB7Ci0gICAgaWYgKG1fY2Fpcm9EZXZpY2UpCi0gICAgICAgIGNhaXJvX2Rl
dmljZV9kZXN0cm95KG1fY2Fpcm9EZXZpY2UpOwotCiAgICAgaWYgKG1fY29udGV4dCkgewogICAg
ICAgICAvLyBEdWUgdG8gYSBidWcgaW4gc29tZSBudmlkaWEgZHJpdmVycywgd2UgbmVlZCBiaW5k
IHRoZSBkZWZhdWx0IGZyYW1lYnVmZmVyIGluIGEgY29udGV4dCBiZWZvcmUKICAgICAgICAgLy8g
ZGVzdHJveWluZyBpdCB0byBhdm9pZCBhIGNyYXNoLiBJbiBvcmRlciB0byBkbyB0aGF0LCB3ZSBu
ZWVkIHRvIG1ha2UgdGhlIGNvbnRleHQgY3VycmVudCBhbmQsCkBAIC00MDEsMTggKzM5NCw2IEBA
IHZvaWQgR0xDb250ZXh0R0xYOjpzd2FwSW50ZXJ2YWwoaW50IGludGVydmFsKQogICAgIGdsWFN3
YXBJbnRlcnZhbFNHSShpbnRlcnZhbCk7CiB9CiAKLWNhaXJvX2RldmljZV90KiBHTENvbnRleHRH
TFg6OmNhaXJvRGV2aWNlKCkKLXsKLSAgICBpZiAobV9jYWlyb0RldmljZSkKLSAgICAgICAgcmV0
dXJuIG1fY2Fpcm9EZXZpY2U7Ci0KLSNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAm
JiBDQUlST19IQVNfR0xYX0ZVTkNUSU9OUwotICAgIG1fY2Fpcm9EZXZpY2UgPSBjYWlyb19nbHhf
ZGV2aWNlX2NyZWF0ZShtX3gxMURpc3BsYXksIG1fY29udGV4dC5nZXQoKSk7Ci0jZW5kaWYKLQot
ICAgIHJldHVybiBtX2NhaXJvRGV2aWNlOwotfQotCiAjaWYgRU5BQkxFKEdSQVBISUNTX0NPTlRF
WFRfR0wpCiBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMIEdMQ29udGV4dEdMWDo6cGxhdGZvcm1D
b250ZXh0KCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dseC9HTENvbnRleHRHTFguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ds
eC9HTENvbnRleHRHTFguaAppbmRleCA0YzcyYTgzOGE3M2VlNDA3N2MyMzBjMmY2OTc3Mjk3OTY5
NjgzOGM3Li4xYjVkMzVmNjZmY2Q2OGFjMjllOGU5MDNjYmViNGM1NmM0ODIwOTA3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5o
CkBAIC00Nyw3ICs0Nyw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBjYW5SZW5kZXJUb0RlZmF1bHRG
cmFtZWJ1ZmZlcigpIG92ZXJyaWRlOwogICAgIEludFNpemUgZGVmYXVsdEZyYW1lQnVmZmVyU2l6
ZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgc3dhcEludGVydmFsKGludCkgb3ZlcnJpZGU7Ci0gICAg
Y2Fpcm9fZGV2aWNlX3QqIGNhaXJvRGV2aWNlKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc0VHTENv
bnRleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCiAjaWYgRU5BQkxFKEdS
QVBISUNTX0NPTlRFWFRfR0wpCkBAIC02OCw3ICs2Nyw2IEBAIHByaXZhdGU6CiAgICAgWFVuaXF1
ZUdMWFBidWZmZXIgbV9wYnVmZmVyOwogICAgIFhVbmlxdWVQaXhtYXAgbV9waXhtYXA7CiAgICAg
WFVuaXF1ZUdMWFBpeG1hcCBtX2dseFBpeG1hcDsKLSAgICBjYWlyb19kZXZpY2VfdCogbV9jYWly
b0RldmljZSB7IG51bGxwdHIgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTU0ZGYyNGQyYmYyYWVjZjlhOWIwYjM4ZDdkMThlY2M0
YWY1ZDA5Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSwyMjQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAxMCwgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUo
QUNDRUxFUkFURURfMkRfQ0FOVkFTKQotCi0jaW5jbHVkZSAiVGV4dHVyZS5oIgotCi0jaW5jbHVk
ZSAiRXh0ZW5zaW9uc0dMLmgiCi0jaW5jbHVkZSAiRmxvYXRSZWN0LmgiCi0jaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuaCIKLSNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSA8
YWxnb3JpdGhtPgotI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KLSNpbmNsdWRlIDx3dGYv
VW5pcXVlQXJyYXkuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1UZXh0dXJlOjpUZXh0dXJl
KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0LCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9y
PHVuc2lnbmVkPj4gdGlsZVRleHR1cmVJZHMsIEZvcm1hdCBmb3JtYXQsIGludCB3aWR0aCwgaW50
IGhlaWdodCwgaW50IG1heFRleHR1cmVTaXplKQotICAgIDogbV9jb250ZXh0KGNvbnRleHQpCi0g
ICAgLCBtX2Zvcm1hdChmb3JtYXQpCi0gICAgLCBtX3RpbGVzKEludFNpemUobWF4VGV4dHVyZVNp
emUsIG1heFRleHR1cmVTaXplKSwgSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KSwgdHJ1ZSkKLSAgICAs
IG1fdGlsZVRleHR1cmVJZHMoV1RGTW92ZSh0aWxlVGV4dHVyZUlkcykpCi17Ci19Ci0KLVRleHR1
cmU6On5UZXh0dXJlKCkKLXsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV90aWxlVGV4
dHVyZUlkcy0+c2l6ZSgpOyBpKyspCi0gICAgICAgIG1fY29udGV4dC0+ZGVsZXRlVGV4dHVyZSht
X3RpbGVUZXh0dXJlSWRzLT5hdChpKSk7Ci19Ci0KLXN0YXRpYyB2b2lkIGNvbnZlcnRGb3JtYXQo
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQsIFRleHR1cmU6OkZvcm1hdCBmb3JtYXQs
IHVuc2lnbmVkKiBnbEZvcm1hdCwgdW5zaWduZWQqIGdsVHlwZSwgYm9vbCogc3dpenpsZSkKLXsK
LSAgICAqc3dpenpsZSA9IGZhbHNlOwotICAgIHN3aXRjaCAoZm9ybWF0KSB7Ci0gICAgY2FzZSBU
ZXh0dXJlOjpSR0JBODoKLSAgICAgICAgKmdsRm9ybWF0ID0gR3JhcGhpY3NDb250ZXh0R0w6OlJH
QkE7Ci0gICAgICAgICpnbFR5cGUgPSBHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfQllURTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUZXh0dXJlOjpCR1JBODoKLSAgICAgICAgaWYgKGNv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfRVhUX3RleHR1cmVfZm9ybWF0X0JH
UkE4ODg4IikpIHsKLSAgICAgICAgICAgICpnbEZvcm1hdCA9IEV4dGVuc2lvbnNHTDo6QkdSQV9F
WFQ7Ci0gICAgICAgICAgICAqZ2xUeXBlID0gR3JhcGhpY3NDb250ZXh0R0w6OlVOU0lHTkVEX0JZ
VEU7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAqZ2xGb3JtYXQgPSBHcmFwaGljc0Nv
bnRleHRHTDo6UkdCQTsKLSAgICAgICAgICAgICpnbFR5cGUgPSBHcmFwaGljc0NvbnRleHRHTDo6
VU5TSUdORURfQllURTsKLSAgICAgICAgICAgICpzd2l6emxlID0gdHJ1ZTsKLSAgICAgICAgfQot
ICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotfQotCi1SZWZQdHI8VGV4dHVyZT4gVGV4dHVyZTo6
Y3JlYXRlKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0LCBGb3JtYXQgZm9ybWF0LCBp
bnQgd2lkdGgsIGludCBoZWlnaHQpCi17Ci0gICAgaW50IG1heFRleHR1cmVTaXplID0gMDsKLSAg
ICBjb250ZXh0LT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTDo6TUFYX1RFWFRVUkVfU0la
RSwgJm1heFRleHR1cmVTaXplKTsKLSAgICBUaWxpbmdEYXRhIHRpbGluZyhJbnRTaXplKG1heFRl
eHR1cmVTaXplLCBtYXhUZXh0dXJlU2l6ZSksIEludFNpemUod2lkdGgsIGhlaWdodCksIHRydWUp
OwotCi0gICAgLy8gQ2hlY2sgZm9yIG92ZXJmbG93LgotICAgIGludCBudW1UaWxlcyA9IHRpbGlu
Zy5udW1UaWxlc1goKSAqIHRpbGluZy5udW1UaWxlc1koKTsKLSAgICBpZiAobnVtVGlsZXMgLyB0
aWxpbmcubnVtVGlsZXNYKCkgIT0gdGlsaW5nLm51bVRpbGVzWSgpKSB7Ci0gICAgICAgIHRpbGlu
Zy5zZXRUb3RhbFNpemUoSW50U2l6ZSgpKTsKLSAgICAgICAgbnVtVGlsZXMgPSAwOwotICAgIH0K
LQotICAgIGF1dG8gdGV4dHVyZUlkcyA9IG1ha2VVbmlxdWU8VmVjdG9yPHVuc2lnbmVkPj4obnVt
VGlsZXMpOwotICAgIHRleHR1cmVJZHMtPmZpbGwoMCwgbnVtVGlsZXMpOwotCi0gICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBudW1UaWxlczsgaSsrKSB7Ci0gICAgICAgIGludCB0ZXh0dXJlSWQgPSBj
b250ZXh0LT5jcmVhdGVUZXh0dXJlKCk7Ci0gICAgICAgIGlmICghdGV4dHVyZUlkKSB7Ci0gICAg
ICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bVRpbGVzOyBpKyspCi0gICAgICAgICAgICAg
ICAgY29udGV4dC0+ZGVsZXRlVGV4dHVyZSh0ZXh0dXJlSWRzLT5hdChpKSk7Ci0gICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgfQotICAgICAgICB0ZXh0dXJlSWRzLT5hdChpKSA9
IHRleHR1cmVJZDsKLQotICAgICAgICBpbnQgeEluZGV4ID0gaSAlIHRpbGluZy5udW1UaWxlc1go
KTsKLSAgICAgICAgaW50IHlJbmRleCA9IGkgLyB0aWxpbmcubnVtVGlsZXNYKCk7Ci0gICAgICAg
IEludFJlY3QgdGlsZUJvdW5kc1dpdGhCb3JkZXIgPSB0aWxpbmcudGlsZUJvdW5kc1dpdGhCb3Jk
ZXIoeEluZGV4LCB5SW5kZXgpOwotCi0gICAgICAgIHVuc2lnbmVkIGludCBnbEZvcm1hdCA9IDA7
Ci0gICAgICAgIHVuc2lnbmVkIGludCBnbFR5cGUgPSAwOwotICAgICAgICBib29sIHN3aXp6bGU7
Ci0gICAgICAgIGNvbnZlcnRGb3JtYXQoY29udGV4dCwgZm9ybWF0LCAmZ2xGb3JtYXQsICZnbFR5
cGUsICZzd2l6emxlKTsKLSAgICAgICAgY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250
ZXh0R0w6OlRFWFRVUkVfMkQsIHRleHR1cmVJZCk7Ci0gICAgICAgIGNvbnRleHQtPnRleEltYWdl
MkRSZXNvdXJjZVNhZmUoR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfMkQsIDAsIGdsRm9ybWF0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbGVCb3VuZHNXaXRo
Qm9yZGVyLndpZHRoKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dGlsZUJvdW5kc1dpdGhCb3JkZXIuaGVpZ2h0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMCwgZ2xGb3JtYXQsIGdsVHlwZSk7Ci0gICAgfQotICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgVGV4dHVyZShjb250ZXh0LCBXVEZNb3ZlKHRleHR1cmVJZHMpLCBmb3JtYXQs
IHdpZHRoLCBoZWlnaHQsIG1heFRleHR1cmVTaXplKSk7Ci19Ci0KLXRlbXBsYXRlIDxib29sIHN3
aXp6bGU+Ci1zdGF0aWMgdWludDMyX3QqIGNvcHlTdWJSZWN0KHVpbnQzMl90KiBzcmMsIGludCBz
cmNYLCBpbnQgc3JjWSwgdWludDMyX3QqIGRzdCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQg
c3JjU3RyaWRlKQotewotICAgIHVpbnQzMl90KiBzcmNPZmZzZXQgPSBzcmMgKyBzcmNYICsgc3Jj
WSAqIHNyY1N0cmlkZTsKLQotICAgIGlmICghc3dpenpsZSAmJiB3aWR0aCA9PSBzcmNTdHJpZGUp
Ci0gICAgICAgIHJldHVybiBzcmNPZmZzZXQ7Ci0KLSAgICBpZiAoc3dpenpsZSkgewotICAgICAg
ICB1aW50MzJfdCogZHN0UGl4ZWwgPSBkc3Q7Ci0gICAgICAgIGZvciAoaW50IHkgPSAwOyB5IDwg
aGVpZ2h0OyArK3kpIHsKLSAgICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGggOyAr
K3gpIHsKLSAgICAgICAgICAgICAgICB1aW50MzJfdCBwaXhlbCA9IHNyY09mZnNldFt4ICsgeSAq
IHNyY1N0cmlkZV07Ci0gICAgICAgICAgICAgICAgKmRzdFBpeGVsID0gKHBpeGVsICYgMHhGRjAw
RkYwMCkgfCAoKHBpeGVsICYgMHgwMEZGMDAwMCkgPj4gMTYpIHwgKChwaXhlbCAmIDB4MDAwMDAw
RkYpIDw8IDE2KTsKLSAgICAgICAgICAgICAgICBkc3RQaXhlbCsrOwotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWln
aHQ7ICsreSkgewotICAgICAgICAgICAgbWVtY3B5KGRzdCArIHkgKiB3aWR0aCwgc3JjT2Zmc2V0
ICsgeSAqIHNyY1N0cmlkZSwgNCAqIHdpZHRoKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1
cm4gZHN0OwotfQotCi12b2lkIFRleHR1cmU6OmxvYWQodm9pZCogcGl4ZWxzKQotewotICAgIHVw
ZGF0ZVN1YlJlY3QocGl4ZWxzLCBJbnRSZWN0KDAsIDAsIG1fdGlsZXMudG90YWxTaXplKCkud2lk
dGgoKSwgbV90aWxlcy50b3RhbFNpemUoKS5oZWlnaHQoKSkpOwotfQotCi12b2lkIFRleHR1cmU6
OnVwZGF0ZVN1YlJlY3Qodm9pZCogcGl4ZWxzLCBjb25zdCBJbnRSZWN0JiB1cGRhdGVSZWN0KQot
ewotICAgIEludFJlY3QgdXBkYXRlUmVjdFNhbml0aXplZCh1cGRhdGVSZWN0KTsKLSAgICB1cGRh
dGVSZWN0U2FuaXRpemVkLmludGVyc2VjdChJbnRSZWN0KDAsIDAsIG1fdGlsZXMudG90YWxTaXpl
KCkud2lkdGgoKSwgbV90aWxlcy50b3RhbFNpemUoKS5oZWlnaHQoKSkpOwotCi0gICAgdWludDMy
X3QqIHBpeGVsczMyID0gc3RhdGljX2Nhc3Q8dWludDMyX3QqPihwaXhlbHMpOwotICAgIHVuc2ln
bmVkIGludCBnbEZvcm1hdCA9IDA7Ci0gICAgdW5zaWduZWQgaW50IGdsVHlwZSA9IDA7Ci0gICAg
Ym9vbCBzd2l6emxlOwotICAgIGNvbnZlcnRGb3JtYXQobV9jb250ZXh0LCBtX2Zvcm1hdCwgJmds
Rm9ybWF0LCAmZ2xUeXBlLCAmc3dpenpsZSk7Ci0gICAgaWYgKHN3aXp6bGUpIHsKLSAgICAgICAg
QVNTRVJUKGdsRm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dEdMOjpSR0JBICYmIGdsVHlwZSA9PSBH
cmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfQllURSk7Ci0gICAgICAgIC8vIEZJWE1FOiAgVGhp
cyBjb3VsZCB1c2UgUEJPJ3MgdG8gc2F2ZSBkb2luZyBhbiBleHRyYSBjb3B5IGhlcmUuCi0gICAg
fQotICAgIGludCB0ZW1wQnVmZlNpemUgPSAvLyBUZW1wb3JhcnkgYnVmZmVyIHNpemUgaXMgdGhl
IHNtYWxsZXIgb2YgdGhlIG1heCB0ZXh0dXJlIHNpemUgb3IgdGhlIHVwZGF0ZVJlY3RTYW5pdGl6
ZWQKLSAgICAgICAgc3RkOjptaW4obV90aWxlcy5tYXhUZXh0dXJlU2l6ZSgpLndpZHRoKCksIG1f
dGlsZXMuYm9yZGVyVGV4ZWxzKCkgKyB1cGRhdGVSZWN0U2FuaXRpemVkLndpZHRoKCkpICoKLSAg
ICAgICAgc3RkOjptaW4obV90aWxlcy5tYXhUZXh0dXJlU2l6ZSgpLmhlaWdodCgpLCBtX3RpbGVz
LmJvcmRlclRleGVscygpICsgdXBkYXRlUmVjdFNhbml0aXplZC5oZWlnaHQoKSk7Ci0gICAgYXV0
byB0ZW1wQnVmZiA9IG1ha2VVbmlxdWVBcnJheTx1aW50MzJfdD4odGVtcEJ1ZmZTaXplKTsKLQot
ICAgIGZvciAoaW50IHRpbGUgPSAwOyB0aWxlIDwgbV90aWxlcy5udW1UaWxlc1goKSAqIG1fdGls
ZXMubnVtVGlsZXNZKCk7IHRpbGUrKykgewotICAgICAgICBpbnQgeEluZGV4ID0gdGlsZSAlIG1f
dGlsZXMubnVtVGlsZXNYKCk7Ci0gICAgICAgIGludCB5SW5kZXggPSB0aWxlIC8gbV90aWxlcy5u
dW1UaWxlc1goKTsKLQotICAgICAgICAvLyBJbnRlcnNlY3Qgd2l0aCB0aWxlCi0gICAgICAgIElu
dFJlY3QgdGlsZUJvdW5kc1dpdGhCb3JkZXIgPSBtX3RpbGVzLnRpbGVCb3VuZHNXaXRoQm9yZGVy
KHhJbmRleCwgeUluZGV4KTsKLQotICAgICAgICBJbnRSZWN0IHVwZGF0ZVJlY3RJbnRlcnNlY3Rl
ZCA9IHVwZGF0ZVJlY3RTYW5pdGl6ZWQ7Ci0gICAgICAgIHVwZGF0ZVJlY3RJbnRlcnNlY3RlZC5p
bnRlcnNlY3QodGlsZUJvdW5kc1dpdGhCb3JkZXIpOwotCi0gICAgICAgIEludFJlY3QgZHN0UmVj
dCA9IHVwZGF0ZVJlY3RJbnRlcnNlY3RlZDsKLSAgICAgICAgZHN0UmVjdC5tb3ZlQnkoLXRpbGVC
b3VuZHNXaXRoQm9yZGVyLmxvY2F0aW9uKCkpOwotCi0gICAgICAgIGlmICh1cGRhdGVSZWN0SW50
ZXJzZWN0ZWQuaXNFbXB0eSgpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgLy8g
Q29weSBzdWIgcmVjdGFuZ2xlIG91dCBvZiBsYXJnZXIgcGl4ZWwgZGF0YQotICAgICAgICB1aW50
MzJfdCogdXBsb2FkQnVmZiA9IDA7Ci0gICAgICAgIGlmIChzd2l6emxlKSB7Ci0gICAgICAgICAg
ICB1cGxvYWRCdWZmID0gY29weVN1YlJlY3Q8dHJ1ZT4oCi0gICAgICAgICAgICBwaXhlbHMzMiwg
dXBkYXRlUmVjdEludGVyc2VjdGVkLngoKSwgdXBkYXRlUmVjdEludGVyc2VjdGVkLnkoKSwKLSAg
ICAgICAgICAgIHRlbXBCdWZmLmdldCgpLCB1cGRhdGVSZWN0SW50ZXJzZWN0ZWQud2lkdGgoKSwg
dXBkYXRlUmVjdEludGVyc2VjdGVkLmhlaWdodCgpLCBtX3RpbGVzLnRvdGFsU2l6ZSgpLndpZHRo
KCkpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdXBsb2FkQnVmZiA9IGNvcHlTdWJS
ZWN0PGZhbHNlPigKLSAgICAgICAgICAgIHBpeGVsczMyLCB1cGRhdGVSZWN0SW50ZXJzZWN0ZWQu
eCgpLCB1cGRhdGVSZWN0SW50ZXJzZWN0ZWQueSgpLAotICAgICAgICAgICAgdGVtcEJ1ZmYuZ2V0
KCksIHVwZGF0ZVJlY3RJbnRlcnNlY3RlZC53aWR0aCgpLCB1cGRhdGVSZWN0SW50ZXJzZWN0ZWQu
aGVpZ2h0KCksIG1fdGlsZXMudG90YWxTaXplKCkud2lkdGgoKSk7Ci0gICAgICAgIH0KLQotICAg
ICAgICBtX2NvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFXzJE
LCBtX3RpbGVUZXh0dXJlSWRzLT5hdCh0aWxlKSk7Ci0gICAgICAgIG1fY29udGV4dC0+dGV4U3Vi
SW1hZ2UyRChHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV8yRCwgMCAvKiBsZXZlbCAqLywKLSAg
ICAgICAgICAgIGRzdFJlY3QueCgpLAotICAgICAgICAgICAgZHN0UmVjdC55KCksCi0gICAgICAg
ICAgICB1cGRhdGVSZWN0SW50ZXJzZWN0ZWQud2lkdGgoKSwKLSAgICAgICAgICAgIHVwZGF0ZVJl
Y3RJbnRlcnNlY3RlZC5oZWlnaHQoKSwgZ2xGb3JtYXQsIGdsVHlwZSwgdXBsb2FkQnVmZik7Ci0g
ICAgfQotfQotCi12b2lkIFRleHR1cmU6OmJpbmRUaWxlKGludCB0aWxlKQotewotICAgIG1fY29u
dGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfMkQsIG1fdGlsZVRl
eHR1cmVJZHMtPmF0KHRpbGUpKTsKLSAgICBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhp
Y3NDb250ZXh0R0w6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX01JTl9G
SUxURVIsIEdyYXBoaWNzQ29udGV4dEdMOjpMSU5FQVIpOwotICAgIG1fY29udGV4dC0+dGV4UGFy
YW1ldGVyaShHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0R0w6
OlRFWFRVUkVfTUFHX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0R0w6OkxJTkVBUik7Ci0gICAgbV9j
b250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFXzJELCBHcmFw
aGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1MsIEdyYXBoaWNzQ29udGV4dEdMOjpDTEFNUF9U
T19FREdFKTsKLSAgICBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0R0w6
OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX1dSQVBfVCwgR3JhcGhpY3ND
b250ZXh0R0w6OkNMQU1QX1RPX0VER0UpOwotfQotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDQyYzAyYzM4ODk5NjAzMjBjODFjYjg4OTkwOGVjNTNiYTljZGYzNWYuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuaAorKysgL2Rldi9udWxsCkBAIC0xLDY0
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6
Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
LSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2lmbmRlZiBUZXh0dXJlX2gKLSNkZWZpbmUgVGV4dHVyZV9oCi0KLSNpbmNsdWRl
ICJUaWxpbmdEYXRhLmgiCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci1jbGFzcyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDsKLQotY2xhc3MgSW50UmVjdDsKLQot
Y2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBSZWZDb3VudGVkPFRleHR1cmU+IHsKLXB1YmxpYzoKLSAg
ICB+VGV4dHVyZSgpOwotICAgIGVudW0gRm9ybWF0IHsgUkdCQTgsIEJHUkE4IH07Ci0gICAgc3Rh
dGljIFJlZlB0cjxUZXh0dXJlPiBjcmVhdGUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBGb3Jt
YXQsIGludCB3aWR0aCwgaW50IGhlaWdodCk7Ci0gICAgdm9pZCBiaW5kVGlsZShpbnQgdGlsZSk7
Ci0gICAgdm9pZCBsb2FkKHZvaWQqIHBpeGVscyk7Ci0gICAgdm9pZCB1cGRhdGVTdWJSZWN0KHZv
aWQqIHBpeGVscywgY29uc3QgSW50UmVjdCYpOwotICAgIEZvcm1hdCBmb3JtYXQoKSBjb25zdCB7
IHJldHVybiBtX2Zvcm1hdDsgfQotICAgIGNvbnN0IFRpbGluZ0RhdGEmIHRpbGVzKCkgY29uc3Qg
eyByZXR1cm4gbV90aWxlczsgfQotcHJpdmF0ZToKLSAgICBUZXh0dXJlKEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMKiwgc3RkOjp1bmlxdWVfcHRyPFZlY3Rvcjx1bnNpZ25lZD4+IHRpbGVUZXh0dXJl
SWRzLCBGb3JtYXQsIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IG1heFRleHR1cmVTaXplKTsK
LSAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogbV9jb250ZXh0OwotICAgIEZvcm1hdCBtX2Zv
cm1hdDsKLSAgICBUaWxpbmdEYXRhIG1fdGlsZXM7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFZlY3Rv
cjx1bnNpZ25lZD4+IG1fdGlsZVRleHR1cmVJZHM7Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBUZXh0
dXJlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAK
aW5kZXggM2JmMmUxM2RmOTJhZjdlNGI3Yzc3MzMwNGIyYzFkMDg2YTFmYjg4Zi4uYTMwYzYyNjc1
MWM1Zjk0ZmYwNTdmZTQ3MzQ0MDFhYWYxZjAwZjJmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTEyOSwxMyArMTI5LDYgQEAKICNpbmNs
dWRlICJUZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyUHJveHkuaCIKLSNpZiBVU0UoQ0FJUk8pICYmIEVOQUJMRShBQ0NFTEVSQVRFRF8y
RF9DQU5WQVMpCi0jaW5jbHVkZSA8Y2Fpcm8tZ2wuaD4KLSNpbmNsdWRlICJHTENvbnRleHQuaCIK
LSNpbmNsdWRlICJQbGF0Zm9ybURpc3BsYXkuaCIKLS8vIGNhaXJvLWdsLmggZW5kcyB1cCBpbmNs
dWRpbmcgWC5oLCB3aGljaCBkZWZpbmVzIE5vbmUsIGJyZWFraW5nIE1lZGlhUGxheWVyOjogZW51
bXMuCi0jdW5kZWYgTm9uZQotI2VuZGlmCiAjZW5kaWYgLy8gVVNFKFRFWFRVUkVfTUFQUEVSX0dM
KQogCiAjaWYgVVNFKFdQRV9WSURFT19QTEFORV9ESVNQTEFZX0RNQUJVRikKQEAgLTMyMTgsNDAg
KzMyMTEsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y29weVZpZGVvVGV4
dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udAogCiBOYXRpdmVJbWFnZVB0ciBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQogewot
I2lmIFVTRShDQUlSTykgJiYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKLSAgICBpZiAo
bV9pc1VzaW5nRmFsbGJhY2tWaWRlb1NpbmspCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0g
ICAgYXV0byBzYW1wbGVMb2NrZXIgPSBob2xkTG9jayhtX3NhbXBsZU11dGV4KTsKLQotICAgIGlm
ICghR1NUX0lTX1NBTVBMRShtX3NhbXBsZS5nZXQoKSkpCi0gICAgICAgIHJldHVybiBudWxscHRy
OwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPEdzdFZpZGVvRnJhbWVIb2xkZXI+IGZyYW1lSG9sZGVy
ID0gbWFrZVVuaXF1ZTxHc3RWaWRlb0ZyYW1lSG9sZGVyPihtX3NhbXBsZS5nZXQoKSwgbV92aWRl
b0RlY29kZXJQbGF0Zm9ybSwgbV90ZXh0dXJlTWFwcGVyRmxhZ3MsIHRydWUpOwotCi0gICAgc3Rk
Ojp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBsYXllckJ1ZmZl
ciA9IGZyYW1lSG9sZGVyLT5wbGF0Zm9ybUxheWVyQnVmZmVyKCk7Ci0gICAgaWYgKCFsYXllckJ1
ZmZlcikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBhdXRvIHNpemUgPSBmcmFtZUhv
bGRlci0+c2l6ZSgpOwotICAgIGlmIChtX3ZpZGVvU291cmNlT3JpZW50YXRpb24udXNlc1dpZHRo
QXNIZWlnaHQoKSkKLSAgICAgICAgc2l6ZSA9IHNpemUudHJhbnNwb3NlZFNpemUoKTsKLQotICAg
IEdMQ29udGV4dCogY29udGV4dCA9IFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheUZvckNv
bXBvc2l0aW5nKCkuc2hhcmluZ0dMQ29udGV4dCgpOwotICAgIGNvbnRleHQtPm1ha2VDb250ZXh0
Q3VycmVudCgpOwotCi0gICAgaWYgKCFtX3ZpZGVvVGV4dHVyZUNvcGllcikKLSAgICAgICAgbV92
aWRlb1RleHR1cmVDb3BpZXIgPSBtYWtlVW5pcXVlPFZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1l
cj4oVEVYVFVSRV9DT1BJRVJfQ09MT1JfQ09OVkVSVF9GTEFHKTsKLQotICAgIGZyYW1lSG9sZGVy
LT53YWl0Rm9yQ1BVU3luYygpOwotCi0gICAgaWYgKCFtX3ZpZGVvVGV4dHVyZUNvcGllci0+Y29w
eVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKCpsYXllckJ1ZmZlci5nZXQoKSwgc2l6ZSwg
MCwgR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwg
ZmFsc2UsIG1fdmlkZW9Tb3VyY2VPcmllbnRhdGlvbikpCi0gICAgICAgIHJldHVybiBudWxscHRy
OwotCi0gICAgcmV0dXJuIGFkb3B0UmVmKGNhaXJvX2dsX3N1cmZhY2VfY3JlYXRlX2Zvcl90ZXh0
dXJlKGNvbnRleHQtPmNhaXJvRGV2aWNlKCksIENBSVJPX0NPTlRFTlRfQ09MT1JfQUxQSEEsIG1f
dmlkZW9UZXh0dXJlQ29waWVyLT5yZXN1bHRUZXh0dXJlKCksIHNpemUud2lkdGgoKSwgc2l6ZS5o
ZWlnaHQoKSkpOwotI2Vsc2UKICAgICByZXR1cm4gbnVsbHB0cjsKLSNlbmRpZgogfQogI2VuZGlm
IC8vIFVTRShHU1RSRUFNRVJfR0wpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggNWMyYTU1NTY4MTgyZGM4OGI3OTFlZmQyMTc0MjY2
ZWM4MzNlYmQ2Ny4uMmY0NGY2NjZkZjdjNWVhYWE2ZjM4ZTU3OGM3M2I0YjgwNjY2Y2Q3NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAg
LTk0LDExICs5NCw3IEBAIENhbnZhc0NvbXBvc2l0aW5nU3RyYXRlZ3kgY2FudmFzQ29tcG9zaXRp
bmdTdHJhdGVneShjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyCiAgICAgaWYgKGNvbnRleHQt
PmlzR1BVQmFzZWQoKSkKICAgICAgICAgcmV0dXJuIENhbnZhc0FzTGF5ZXJDb250ZW50czsKIAot
I2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCi0gICAgcmV0dXJuIENhbnZhc0FzTGF5
ZXJDb250ZW50czsKLSNlbHNlCiAgICAgcmV0dXJuIENhbnZhc1BhaW50ZWRUb0xheWVyOyAvLyBP
biBNYWMgYW5kIGlPUyB3ZSBwYWludCBhY2NlbGVyYXRlZCBjYW52YXNlcyBpbnRvIHRoZWlyIGxh
eWVycy4KLSNlbmRpZgogfQogCiAvLyBUaGlzIGFjdHMgYXMgYSBjYWNoZSBvZiB3aGF0IHdlIGtu
b3cgYWJvdXQgd2hhdCBpcyBwYWludGluZyBpbnRvIHRoaXMgUmVuZGVyTGF5ZXJCYWNraW5nLgpA
QCAtMTA1OCw3ICsxMDU0LDcgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUNvbmZp
Z3VyYXRpb24oY29uc3QgUmVuZGVyTGF5ZXIqIGNvbXBvc2l0aW5nQW5jZXMKICAgICAgICAgdXBk
YXRlQ29udGVudHNSZWN0cygpOwogICAgIH0KICNlbmRpZgotI2lmIEVOQUJMRShXRUJHTCkgfHwg
RU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykgfHwgRU5BQkxFKFdFQkdQVSkgfHwgRU5BQkxF
KE9GRlNDUkVFTl9DQU5WQVMpCisjaWYgRU5BQkxFKFdFQkdMKSB8fCBFTkFCTEUoV0VCR1BVKSB8
fCBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKICAgICBlbHNlIGlmIChyZW5kZXJlcigpLmlzQ2Fu
dmFzKCkgJiYgY2FudmFzQ29tcG9zaXRpbmdTdHJhdGVneShyZW5kZXJlcigpKSA9PSBDYW52YXNB
c0xheWVyQ29udGVudHMpIHsKICAgICAgICAgY29uc3QgSFRNTENhbnZhc0VsZW1lbnQqIGNhbnZh
cyA9IGRvd25jYXN0PEhUTUxDYW52YXNFbGVtZW50PihyZW5kZXJlcigpLmVsZW1lbnQoKSk7CiAg
ICAgICAgIGlmIChhdXRvKiBjb250ZXh0ID0gY2FudmFzLT5yZW5kZXJpbmdDb250ZXh0KCkpCkBA
IC0yNzczLDcgKzI3NjksNyBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6Y29udGFpbnNQYWlu
dGVkQ29udGVudChQYWludGVkQ29udGVudHNJbmZvJiBjb250ZW50c0luZgogICAgICAgICByZXR1
cm4gbV9vd25pbmdMYXllci5oYXNWaXNpYmxlQm94RGVjb3JhdGlvbnNPckJhY2tncm91bmQoKSB8
fCAoIShkb3duY2FzdDxSZW5kZXJWaWRlbz4ocmVuZGVyZXIoKSkuc3VwcG9ydHNBY2NlbGVyYXRl
ZFJlbmRlcmluZygpKSAmJiBtX3JlcXVpcmVzT3duQmFja2luZ1N0b3JlKTsKICNlbmRpZgogCi0j
aWYgRU5BQkxFKFdFQkdMKSB8fCBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKSB8fCBFTkFC
TEUoT0ZGU0NSRUVOX0NBTlZBUykKKyNpZiBFTkFCTEUoV0VCR0wpIHx8IEVOQUJMRShPRkZTQ1JF
RU5fQ0FOVkFTKQogICAgIGlmIChpczxSZW5kZXJIVE1MQ2FudmFzPihyZW5kZXJlcigpKSAmJiBj
YW52YXNDb21wb3NpdGluZ1N0cmF0ZWd5KHJlbmRlcmVyKCkpID09IENhbnZhc0FzTGF5ZXJDb250
ZW50cykKICAgICAgICAgcmV0dXJuIG1fb3duaW5nTGF5ZXIuaGFzVmlzaWJsZUJveERlY29yYXRp
b25zT3JCYWNrZ3JvdW5kKCk7CiAjZW5kaWYKQEAgLTI4MzgsNyArMjgzNCw3IEBAIHZvaWQgUmVu
ZGVyTGF5ZXJCYWNraW5nOjpjb250ZW50Q2hhbmdlZChDb250ZW50Q2hhbmdlVHlwZSBjaGFuZ2VU
eXBlKQogICAgIGlmICgoY2hhbmdlVHlwZSA9PSBNYXNrSW1hZ2VDaGFuZ2VkKSAmJiBtX21hc2tM
YXllcikKICAgICAgICAgbV9vd25pbmdMYXllci5zZXROZWVkc0NvbXBvc2l0aW5nQ29uZmlndXJh
dGlvblVwZGF0ZSgpOwogCi0jaWYgRU5BQkxFKFdFQkdMKSB8fCBFTkFCTEUoQUNDRUxFUkFURURf
MkRfQ0FOVkFTKSB8fCBFTkFCTEUoV0VCR1BVKSB8fCBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykK
KyNpZiBFTkFCTEUoV0VCR0wpIHx8IEVOQUJMRShXRUJHUFUpIHx8IEVOQUJMRShPRkZTQ1JFRU5f
Q0FOVkFTKQogICAgIGlmICgoY2hhbmdlVHlwZSA9PSBDYW52YXNDaGFuZ2VkIHx8IGNoYW5nZVR5
cGUgPT0gQ2FudmFzUGl4ZWxzQ2hhbmdlZCkgJiYgcmVuZGVyZXIoKS5pc0NhbnZhcygpICYmIGNh
bnZhc0NvbXBvc2l0aW5nU3RyYXRlZ3kocmVuZGVyZXIoKSkgPT0gQ2FudmFzQXNMYXllckNvbnRl
bnRzKSB7CiAgICAgICAgIGlmIChjaGFuZ2VUeXBlID09IENhbnZhc0NoYW5nZWQpCiAgICAgICAg
ICAgICBjb21wb3NpdG9yKCkuc2NoZWR1bGVDb21wb3NpdGluZ0xheWVyVXBkYXRlKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvY21ha2UvRmluZENhaXJvR0wuY21ha2UgYi9Tb3VyY2UvY21ha2UvRmlu
ZENhaXJvR0wuY21ha2UKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg0ODY2MDdlM2Q0
NjM2ZmZhN2IwNjg3MzUxOTI5NzY0OGZiMmU0YWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL2NtYWtlL0ZpbmRDYWlyb0dMLmNtYWtlCisrKyAv
ZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotIyAtIFRyeSB0byBmaW5kIENhaXJvR0wKLSMgT25j
ZSBkb25lLCB0aGlzIHdpbGwgZGVmaW5lCi0jCi0jICBDQUlST0dMX0ZPVU5EIC0gc3lzdGVtIGhh
cyBDYWlyb0dMCi0jICBDQUlST0dMX0lOQ0xVREVfRElSUyAtIHRoZSBDYWlyb0dMIGluY2x1ZGUg
ZGlyZWN0b3JpZXMKLSMgIENBSVJPR0xfTElCUkFSSUVTIC0gbGluayB0aGVzZSB0byB1c2UgQ2Fp
cm9HTAotIwotIyBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTC4KLSMKLSMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMKLSMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSMgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotIyBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhP
TERFUiBPUiBJVFMKLSMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0jIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSMgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7Ci0jIE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLAotIyBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUgotIyBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGCi0jIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1maW5k
X3BhY2thZ2UoUGtnQ29uZmlnIFFVSUVUKQotcGtnX2NoZWNrX21vZHVsZXMoQ0FJUk9HTCBjYWly
by1nbCkKLQotaWYgKENBSVJPR0xfRk9VTkQpCi0jIEF0IHRoZSBtb21lbnQgQ2Fpcm9HTCBkb2Vz
IG5vdCBhZGQgYW55IGV4dHJhIGNmbGFncyBhbmQgbGlicmFyaWVzLCBzbyB3ZSBjYW4KLSMgc2Fm
ZWx5IGlnbm9yZSBDQUlST0dMX0xJQlJBUklFUyBhbmQgQ0FJUk9HTF9JTkNMVURFX0RJUlMgZm9y
IHRoZSBtb21lbnQuCi1mb3JlYWNoIChfY29tcG9uZW50ICR7Q2Fpcm9HTF9GSU5EX0NPTVBPTkVO
VFN9KQotICAgIHN0cmluZyhUT1VQUEVSICR7X2NvbXBvbmVudH0gX1VQUEVSX05BTUUpCi0gICAg
c3RyaW5nKFJFR0VYIFJFUExBQ0UgIi0iICJfIiBfVVBQRVJfTkFNRSAke19VUFBFUl9OQU1FfSkK
LSAgICBwa2dfY2hlY2tfbW9kdWxlcygke19VUFBFUl9OQU1FfSAke19jb21wb25lbnR9KQotICAg
IGlmICgke19VUFBFUl9OQU1FfV9JTkNMVURFX0RJUlMpCi0gICAgICBzZXQoQ0FJUk9HTF9JTkNM
VURFX0RJUlMgJHtDQUlST0dMX0lOQ0xVREVfRElSU30gJHtfVVBQRVJfTkFNRX1fSU5DTFVERV9E
SVJTKQotICAgIGVuZGlmICgpCi0gICAgaWYgKCR7X1VQUEVSX05BTUV9X0xJQlJBUklFUykKLSAg
ICAgIHNldChDQUlST0dMX0xJQlJBUklFUyAke0NBSVJPR0xfTElCUkFSSUVTfSAke19VUFBFUl9O
QU1FfV9MSUJSQVJJRVMpCi0gICAgZW5kaWYgKCkKLWVuZGZvcmVhY2ggKCkKLQotaW5jbHVkZShG
aW5kUGFja2FnZUhhbmRsZVN0YW5kYXJkQXJncykKLWZpbmRfcGFja2FnZV9oYW5kbGVfc3RhbmRh
cmRfYXJncyhDYWlyb0dMIERFRkFVTFRfTVNHIENBSVJPR0xfSU5DTFVERV9ESVJTIENBSVJPR0xf
TElCUkFSSUVTKQotZW5kaWYgKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zRlRX
LmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNGVFcuY21ha2UKaW5kZXggZmUzOTUzMTZhZDlj
NzIxYjc2NjdiNTZlY2MxNDVhZGU2YjA5ODQ2Mi4uMzMyNjY1OTE1NDU1OWE5ZTM2NjkzMGZjMGMz
MTU0ZjllNzYwY2NkOCAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNGVFcuY21ha2UK
KysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNGVFcuY21ha2UKQEAgLTEzMCw3ICsxMzAsNiBAQCBX
RUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfV0VCR0wyIFBSSVZBVEUgT0ZG
KQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1dFQkdQVSBQUklWQVRF
IE9GRikKIAogIyBPZmYgZm9yIG5vdywgYnV0IHNob3VsZCBiZSBvbgotV0VCS0lUX09QVElPTl9E
RUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUyBQUklWQVRFIE9G
RikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9BUElfVEVTVFMgUFJJ
VkFURSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfQVBQTElD
QVRJT05fTUFOSUZFU1QgUFJJVkFURSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9W
QUxVRShFTkFCTEVfQVNZTkNfU0NST0xMSU5HIFBSSVZBVEUgT0ZGKQpkaWZmIC0tZ2l0IGEvU291
cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFr
ZQppbmRleCA3NGYwYzllOGM3NmQ2MjcxYmM2MTk5NTUxOThmMDE3ODdhNmU4NmIxLi5mYzI5NzA1
NWQ2NThjMzJlOTUwYzQxNDIxNTZhM2Q2MTUzNzVjYWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21h
a2UvT3B0aW9uc0dUSy5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQpA
QCAtMTA1LDExICsxMDUsNyBAQCBXRUJLSVRfT1BUSU9OX0RFRklORShVU0VfU1lTVEVNRCAiV2hl
dGhlciB0byBlbmFibGUgam91cm5hbGQgbG9nZ2luZyIgUFVCTElDIE9OKQogIyBjb21wbGV0ZWx5
IHVuc3VwcG9ydGVkLiBUaGV5IGFyZSBpbnRlbmRlZCBmb3IgdXNlIG9ubHkgYnkgV2ViS2l0IGRl
dmVsb3BlcnMuCiBXRUJLSVRfT1BUSU9OX0RFRklORShVU0VfQU5HTEVfV0VCR0wgIldoZXRoZXIg
dG8gdXNlIEFOR0xFIGFzIFdlYkdMIGJhY2tlbmQuIiBQUklWQVRFIE9GRikKIAotIyBGSVhNRTog
Q2FuIHdlIHVzZSBjYWlyby1nbGVzdjIgdG8gYXZvaWQgdGhpcyBjb25mbGljdD8KLVdFQktJVF9P
UFRJT05fQ09ORkxJQ1QoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUyBFTkFCTEVfR0xFUzIp
Ci0KIFdFQktJVF9PUFRJT05fREVQRU5EKEVOQUJMRV8zRF9UUkFOU0ZPUk1TIEVOQUJMRV9HUkFQ
SElDU19DT05URVhUX0dMKQotV0VCS0lUX09QVElPTl9ERVBFTkQoRU5BQkxFX0FDQ0VMRVJBVEVE
XzJEX0NBTlZBUyBFTkFCTEVfR1JBUEhJQ1NfQ09OVEVYVF9HTCkKIFdFQktJVF9PUFRJT05fREVQ
RU5EKEVOQUJMRV9BU1lOQ19TQ1JPTExJTkcgRU5BQkxFX0dSQVBISUNTX0NPTlRFWFRfR0wpCiBX
RUJLSVRfT1BUSU9OX0RFUEVORChFTkFCTEVfR0xFUzIgRU5BQkxFX0dSQVBISUNTX0NPTlRFWFRf
R0wpCiBXRUJLSVRfT1BUSU9OX0RFUEVORChFTkFCTEVfV0VCR0wgRU5BQkxFX0dSQVBISUNTX0NP
TlRFWFRfR0wpCkBAIC0xNTEsNyArMTQ3LDYgQEAgZW5kaWYgKCkKICMgUHVibGljIG9wdGlvbnMg
c2hhcmVkIHdpdGggb3RoZXIgV2ViS2l0IHBvcnRzLiBEbyBub3QgYWRkIGFueSBvcHRpb25zIGhl
cmUKICMgd2l0aG91dCBhcHByb3ZhbCBmcm9tIGEgR1RLIHJldmlld2VyLiBUaGVyZSBtdXN0IGJl
IHN0cm9uZyByZWFzb24gdG8gc3VwcG9ydAogIyBjaGFuZ2luZyB0aGUgdmFsdWUgb2YgdGhlIG9w
dGlvbi4KLVdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9BQ0NFTEVSQVRF
RF8yRF9DQU5WQVMgUFVCTElDIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVF
KEVOQUJMRV9BU1lOQ19TQ1JPTExJTkcgUFJJVkFURSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVM
VF9QT1JUX1ZBTFVFKEVOQUJMRV9EUkFHX1NVUFBPUlQgUFVCTElDIE9OKQogV0VCS0lUX09QVElP
Tl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1NQRUxMQ0hFQ0sgUFVCTElDIE9OKQpAQCAtMjQ0
LDIwICsyMzksNiBAQCBpZiAoRU5BQkxFX1hTTFQpCiAgICAgZmluZF9wYWNrYWdlKExpYlhzbHQg
MS4xLjcgUkVRVUlSRUQpCiBlbmRpZiAoKQogCi1pZiAoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NB
TlZBUykKLSAgICBpZiAoR0xYX0ZPVU5EKQotICAgICAgICBsaXN0KEFQUEVORCBDQUlST0dMX0NP
TVBPTkVOVFMgY2Fpcm8tZ2x4KQotICAgIGVuZGlmICgpCi0gICAgaWYgKEVHTF9GT1VORCkKLSAg
ICAgICAgbGlzdChBUFBFTkQgQ0FJUk9HTF9DT01QT05FTlRTIGNhaXJvLWVnbCkKLSAgICBlbmRp
ZiAoKQotCi0gICAgZmluZF9wYWNrYWdlKENhaXJvR0wgMS4xMC4yIENPTVBPTkVOVFMgJHtDQUlS
T0dMX0NPTVBPTkVOVFN9KQotICAgIGlmIChOT1QgQ0FJUk9HTF9GT1VORCkKLSAgICAgICAgbWVz
c2FnZShGQVRBTF9FUlJPUiAiQ2Fpcm9HTCBpcyBuZWVkZWQgZm9yIEVOQUJMRV9BQ0NFTEVSQVRF
RF8yRF9DQU5WQVMiKQotICAgIGVuZGlmICgpCi1lbmRpZiAoKQotCiBpZiAoVVNFX0xJQlNFQ1JF
VCkKICAgICBmaW5kX3BhY2thZ2UoTGlic2VjcmV0KQogICAgIGlmIChOT1QgTElCU0VDUkVUX0ZP
VU5EKQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNXUEUuY21ha2UgYi9Tb3VyY2Uv
Y21ha2UvT3B0aW9uc1dQRS5jbWFrZQppbmRleCA2NDY2YmRhNjM3ODViYjZjZjZhMmNhOTUzNTVj
YzEyMWFkOTUyYzMyLi5jZWZkNTJiNWE2ZmQyNjIxNjkxMjhlNmExYWMzZTQzN2NjNDJhZWM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc1dQRS5jbWFrZQorKysgYi9Tb3VyY2UvY21h
a2UvT3B0aW9uc1dQRS5jbWFrZQpAQCAtNDQsNyArNDQsNiBAQCBpbmNsdWRlKEdTdHJlYW1lckRl
ZmluaXRpb25zKQogIyBQdWJsaWMgb3B0aW9ucyBzaGFyZWQgd2l0aCBvdGhlciBXZWJLaXQgcG9y
dHMuIERvIG5vdCBhZGQgYW55IG9wdGlvbnMgaGVyZQogIyB3aXRob3V0IGFwcHJvdmFsIGZyb20g
YSBXUEUgcmV2aWV3ZXIuIFRoZXJlIG11c3QgYmUgc3Ryb25nIHJlYXNvbiB0byBzdXBwb3J0CiAj
IGNoYW5naW5nIHRoZSB2YWx1ZSBvZiB0aGUgb3B0aW9uLgotV0VCS0lUX09QVElPTl9ERUZBVUxU
X1BPUlRfVkFMVUUoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUyBQVUJMSUMgT0ZGKQogV0VC
S0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0FDQ0VTU0lCSUxJVFkgUFVCTElD
IE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0VOQ1JZUFRFRF9N
RURJQSBQVUJMSUMgJHtFTkFCTEVfRVhQRVJJTUVOVEFMX0ZFQVRVUkVTfSkKIFdFQktJVF9PUFRJ
T05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9USFVOREVSIFBSSVZBVEUgT0ZGKQpAQCAtMTUy
LDEwICsxNTEsNiBAQCBpZiAoVVNFX1dPRkYyKQogICAgIGVuZGlmICgpCiBlbmRpZiAoKQogCi1p
ZiAoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykKLSAgICBmaW5kX3BhY2thZ2UoQ2Fpcm9H
TCAxLjEwLjIgUkVRVUlSRUQgQ09NUE9ORU5UUyBjYWlyby1lZ2wpCi1lbmRpZiAoKQotCiBpZiAo
RU5BQkxFX1dFQl9DUllQVE8pCiAgICAgZmluZF9wYWNrYWdlKExpYnRhc24xIFJFUVVJUkVEKQog
ICAgIGlmIChOT1QgTElCVEFTTjFfRk9VTkQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0
aW9uc1dpbi5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luLmNtYWtlCmluZGV4IGU1NTMx
MmNkZWQ5MmM5MmM5NWMyYWZiYWIxMjFhY2IyNTVlNGRlOGEuLmFkNzU4NTExMDQ4NmY3MzkzZWZj
YTc0MTNiNjhiODcxOGZlMDIxMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zV2lu
LmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luLmNtYWtlCkBAIC0xOCw3ICsxOCw2
IEBAIFdFQktJVF9PUFRJT05fREVGSU5FKFVTRV9WRVJTSU9OX1NUQU1QRVIgIlRvZ2dsZSBzdGFt
cGluZyB2ZXJzaW9uIGluZm9ybWF0aW9uIGR1CiAKICMgRklYTUU6IE1vc3Qgb2YgdGhlc2Ugb3B0
aW9ucyBzaG91bGQgbm90IGJlIHB1YmxpYy4KIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZB
TFVFKEVOQUJMRV8zRF9UUkFOU0ZPUk1TIFBVQkxJQyBPTikKLVdFQktJVF9PUFRJT05fREVGQVVM
VF9QT1JUX1ZBTFVFKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMgUFVCTElDIE9GRikKIFdF
QktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9PVkVSRkxPV19TQ1JPTExJTkdf
VE9VQ0ggUFVCTElDIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJM
RV9BUElfVEVTVFMgUFVCTElDIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUo
RU5BQkxFX0FUVEFDSE1FTlRfRUxFTUVOVCBQVUJMSUMgT04pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
Y21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UgYi9Tb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMu
Y21ha2UKaW5kZXggY2JhZGFjZDEwNzBiZWY0Njc1MzU0YjhjNmU2NzgxODZiOTNkYzFlYS4uYTJm
ZjUzZGQ2MjFjNWZjNDc3MGFjMmQ3ODMxNmViNWU4YzliMDM4NiAxMDA2NDQKLS0tIGEvU291cmNl
L2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0
dXJlcy5jbWFrZQpAQCAtOTYsNyArOTYsNiBAQCBtYWNybyhXRUJLSVRfT1BUSU9OX0JFR0lOKQog
ICAgIGVuZGlmICgpCiAKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfM0RfVFJBTlNG
T1JNUyAiVG9nZ2xlIDNEIHRyYW5zZm9ybXMgc3VwcG9ydCIgUFJJVkFURSBPTikKLSAgICBXRUJL
SVRfT1BUSU9OX0RFRklORShFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTICJUb2dnbGUgQWNj
ZWxlcmF0ZWQgMkQgQ2FudmFzIHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQogICAgIFdFQktJVF9PUFRJ
T05fREVGSU5FKEVOQUJMRV9DT1JFX0lNQUdFX0FDQ0VMRVJBVEVEX0ZJTFRFUl9SRU5ERVIgIlRv
Z2dsZSBBY2NlbGVyYXRlZCBDU1MvU1ZHIEZpbHRlciBSZW5kZXJpbmcgdXNpbmcgQ29yZUltYWdl
IiBQUklWQVRFIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfQUNDRVNTSUJJ
TElUWSAiV2hldGhlciB0byBlbmFibGUgc3VwcG9ydCBmb3IgYWNjZXNzaWJpbGl0eSIgUFJJVkFU
RSBPTikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfQUNDRVNTSUJJTElUWV9JU09M
QVRFRF9UUkVFICJUb2dnbGUgYWNjZXNzaWJpbGl0eSBpc29sYXRlZCB0cmVlIHN1cHBvcnQiIFBS
SVZBVEUgT0ZGKQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL3Rvb2xzL3ZzcHJvcHMvRmVhdHVy
ZURlZmluZXMucHJvcHMgYi9Tb3VyY2UvY21ha2UvdG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5l
cy5wcm9wcwppbmRleCAxZTIzZDM0YTg1MzZiZDM3ZmI2OTIwZWUyNTlkMzZmMTAxODNkNzM3Li5i
Y2EwMTgwZDhiNzdhYTJkYWU0NjJiZjgyODYwNThiMWVhZmFlNjY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvY21ha2UvdG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lcy5wcm9wcworKysgYi9Tb3VyY2Uv
Y21ha2UvdG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lcy5wcm9wcwpAQCAtMiw3ICsyLDYgQEAK
IDxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5z
PSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgog
ICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyI+CiAgICAgPEVOQUJMRV8zRF9UUkFO
U0ZPUk1TPkVOQUJMRV8zRF9UUkFOU0ZPUk1TPC9FTkFCTEVfM0RfVFJBTlNGT1JNUz4KLSAgICA8
RU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUyAvPgogICAgIDxFTkFCTEVfT1ZFUkZMT1dfU0NS
T0xMSU5HX1RPVUNIIC8+CiAgICAgPEVOQUJMRV9BVFRBQ0hNRU5UX0VMRU1FTlQ+RU5BQkxFX0FU
VEFDSE1FTlRfRUxFTUVOVDwvRU5BQkxFX0FUVEFDSE1FTlRfRUxFTUVOVD4KICAgICA8RU5BQkxF
X0NIQU5ORUxfTUVTU0FHSU5HPkVOQUJMRV9DSEFOTkVMX01FU1NBR0lORzwvRU5BQkxFX0NIQU5O
RUxfTUVTU0FHSU5HPgpAQCAtNjksNyArNjgsNyBAQAogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJ
dGVtRGVmaW5pdGlvbkdyb3VwPgogICAgIDxDbENvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29y
RGVmaW5pdGlvbnM+JChFTkFCTEVfM0RfVFJBTlNGT1JNUyk7JChFTkFCTEVfQUNDRUxFUkFURURf
MkRfQ0FOVkFTKTskKEVOQUJMRV9PVkVSRkxPV19TQ1JPTExJTkdfVE9VQ0gpOyQoRU5BQkxFX0FU
VEFDSE1FTlRfRUxFTUVOVCk7JChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpOyQoRU5BQkxFX0NT
UzNfQ09ORElUSU9OQUxfUlVMRVMpOyQoRU5BQkxFX0NTU19JTUFHRV9TRVQpOyQoRU5BQkxFX0NT
UzNfVEVYVCk7JChFTkFCTEVfQ1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFLKTskKEVOQUJMRV9DU1Nf
U0hBREVSUyk7JChFTkFCTEVfQ1NTX0NPTVBPU0lUSU5HKTskKEVOQUJMRV9DU1NfU0VMRUNUT1JT
X0xFVkVMNCk7JChFTkFCTEVfQ1NTX1NIQVBFX0lOU0lERSk7JChFTkFCTEVfQ1NTX1RSQU5TRk9S
TVNfQU5JTUFUSU9OU19UUkFOU0lUSU9OU19VTlBSRUZJWEVEKTskKEVOQUJMRV9DVVJTT1JfVklT
SUJJTElUWSk7JChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKTskKEVOQUJMRV9EQVJLX01P
REVfQ1NTKTskKEVOQUJMRV9EQVRBR1JJRCk7JChFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCk7JChF
TkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKTskKEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEKTskKEVO
QUJMRV9FTkNSWVBURURfTUVESUEpOyQoRU5BQkxFX0ZFVENIX0FQSSk7JChFTkFCTEVfRklMRV9T
WVNURU0pOyQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKTskKEVOQUJMRV9HQU1FUEFEKTskKEVOQUJM
RV9HRU9MT0NBVElPTik7JChFTkFCTEVfSElHSF9EUElfQ0FOVkFTKTskKEVOQUJMRV9JTkRFWEVE
X0RBVEFCQVNFKTskKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SKTskKEVOQUJMRV9JTlBVVF9TUEVF
Q0gpOyQoRU5BQkxFX0lOUFVUX1RZUEVfREFURSk7JChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElN
RUxPQ0FMKTskKEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIKTskKEVOQUJMRV9JTlBVVF9UWVBFX1RJ
TUUpOyQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSyk7JChFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1Jf
UFJFRklYRVMpOyQoRU5BQkxFX0xFR0FDWV9FTkNSWVBURURfTUVESUEpOyQoRU5BQkxFX0xJTktf
UFJFUkVOREVSKTskKEVOQUJMRV9NQVRITUwpOyQoRU5BQkxFX01JQ1JPREFUQSk7JChFTkFCTEVf
TU9VU0VfQ1VSU09SX1NDQUxFKTskKEVOQUJMRV9OT1RJRklDQVRJT05TKTskKEVOQUJMRV9RVU9U
QSk7JChFTkFCTEVfU0NSSVBURURfU1BFRUNIKTskKEVOQUJMRV9TSEFSRURfV09SS0VSUyk7JChF
TkFCTEVfTUVESUFfQ09OVFJPTFNfU0NSSVBUKTskKEVOQUJMRV9NRURJQV9TT1VSQ0UpOyQoRU5B
QkxFX01FRElBX1NUQVRJU1RJQ1MpOyQoRU5BQkxFX1NRTF9EQVRBQkFTRSk7JChFTkFCTEVfU1RZ
TEVfU0NPUEVEKTskKEVOQUJMRV9TVUJQSVhFTF9MQVlPVVQpOyQoRU5BQkxFX1NWR19ET01fT0JK
Q19CSU5ESU5HUyk7JChFTkFCTEVfVklERU8pOyQoRU5BQkxFX1dFQl9BVURJTyk7JChFTkFCTEVf
V0VCR0wpOyQoRU5BQkxFX1dFQkdQVSk7JChFTkFCTEVfV0VCWFIpOyQoRU5BQkxFX1hIUl9USU1F
T1VUKTskKEVOQUJMRV9YU0xUKTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vz
c29yRGVmaW5pdGlvbnM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+JChFTkFCTEVf
M0RfVFJBTlNGT1JNUyk7JChFTkFCTEVfT1ZFUkZMT1dfU0NST0xMSU5HX1RPVUNIKTskKEVOQUJM
RV9BVFRBQ0hNRU5UX0VMRU1FTlQpOyQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKTskKEVOQUJM
RV9DU1MzX0NPTkRJVElPTkFMX1JVTEVTKTskKEVOQUJMRV9DU1NfSU1BR0VfU0VUKTskKEVOQUJM
RV9DU1MzX1RFWFQpOyQoRU5BQkxFX0NTU19CT1hfREVDT1JBVElPTl9CUkVBSyk7JChFTkFCTEVf
Q1NTX1NIQURFUlMpOyQoRU5BQkxFX0NTU19DT01QT1NJVElORyk7JChFTkFCTEVfQ1NTX1NFTEVD
VE9SU19MRVZFTDQpOyQoRU5BQkxFX0NTU19TSEFQRV9JTlNJREUpOyQoRU5BQkxFX0NTU19UUkFO
U0ZPUk1TX0FOSU1BVElPTlNfVFJBTlNJVElPTlNfVU5QUkVGSVhFRCk7JChFTkFCTEVfQ1VSU09S
X1ZJU0lCSUxJVFkpOyQoRU5BQkxFX0NVU1RPTV9TQ0hFTUVfSEFORExFUik7JChFTkFCTEVfREFS
S19NT0RFX0NTUyk7JChFTkFCTEVfREFUQUdSSUQpOyQoRU5BQkxFX0RBVEFMSVNUX0VMRU1FTlQp
OyQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTik7JChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCk7
JChFTkFCTEVfRU5DUllQVEVEX01FRElBKTskKEVOQUJMRV9GRVRDSF9BUEkpOyQoRU5BQkxFX0ZJ
TEVfU1lTVEVNKTskKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSk7JChFTkFCTEVfR0FNRVBBRCk7JChF
TkFCTEVfR0VPTE9DQVRJT04pOyQoRU5BQkxFX0hJR0hfRFBJX0NBTlZBUyk7JChFTkFCTEVfSU5E
RVhFRF9EQVRBQkFTRSk7JChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUik7JChFTkFCTEVfSU5QVVRf
U1BFRUNIKTskKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEUpOyQoRU5BQkxFX0lOUFVUX1RZUEVfREFU
RVRJTUVMT0NBTCk7JChFTkFCTEVfSU5QVVRfVFlQRV9NT05USCk7JChFTkFCTEVfSU5QVVRfVFlQ
RV9USU1FKTskKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUspOyQoRU5BQkxFX0xFR0FDWV9DU1NfVkVO
RE9SX1BSRUZJWEVTKTskKEVOQUJMRV9MRUdBQ1lfRU5DUllQVEVEX01FRElBKTskKEVOQUJMRV9M
SU5LX1BSRVJFTkRFUik7JChFTkFCTEVfTUFUSE1MKTskKEVOQUJMRV9NSUNST0RBVEEpOyQoRU5B
QkxFX01PVVNFX0NVUlNPUl9TQ0FMRSk7JChFTkFCTEVfTk9USUZJQ0FUSU9OUyk7JChFTkFCTEVf
UVVPVEEpOyQoRU5BQkxFX1NDUklQVEVEX1NQRUVDSCk7JChFTkFCTEVfU0hBUkVEX1dPUktFUlMp
OyQoRU5BQkxFX01FRElBX0NPTlRST0xTX1NDUklQVCk7JChFTkFCTEVfTUVESUFfU09VUkNFKTsk
KEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKTskKEVOQUJMRV9TUUxfREFUQUJBU0UpOyQoRU5BQkxF
X1NUWUxFX1NDT1BFRCk7JChFTkFCTEVfU1VCUElYRUxfTEFZT1VUKTskKEVOQUJMRV9TVkdfRE9N
X09CSkNfQklORElOR1MpOyQoRU5BQkxFX1ZJREVPKTskKEVOQUJMRV9XRUJfQVVESU8pOyQoRU5B
QkxFX1dFQkdMKTskKEVOQUJMRV9XRUJHUFUpOyQoRU5BQkxFX1dFQlhSKTskKEVOQUJMRV9YSFJf
VElNRU9VVCk7JChFTkFCTEVfWFNMVCk7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXBy
b2Nlc3NvckRlZmluaXRpb25zPgogICAgIDwvQ2xDb21waWxlPgogICA8L0l0ZW1EZWZpbml0aW9u
R3JvdXA+CiAgIDxJdGVtR3JvdXA+CkBAIC03NywxMCArNzYsNiBAQAogICAgICAgPFZhbHVlPiQo
RU5BQkxFXzNEX1RSQU5TRk9STVMpPC9WYWx1ZT4KICAgICAgIDxFbnZpcm9ubWVudFZhcmlhYmxl
PnRydWU8L0Vudmlyb25tZW50VmFyaWFibGU+CiAgICAgPC9CdWlsZE1hY3JvPgotICAgIDxCdWls
ZE1hY3JvIEluY2x1ZGU9IkVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMiPgotICAgICAgPFZh
bHVlPiQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUyk8L1ZhbHVlPgotICAgICAgPEVudmly
b25tZW50VmFyaWFibGU+dHJ1ZTwvRW52aXJvbm1lbnRWYXJpYWJsZT4KLSAgICA8L0J1aWxkTWFj
cm8+CiAgICAgPEJ1aWxkTWFjcm8gSW5jbHVkZT0iRU5BQkxFX09WRVJGTE9XX1NDUk9MTElOR19U
T1VDSCI+CiAgICAgICA8VmFsdWU+JChFTkFCTEVfT1ZFUkZMT1dfU0NST0xMSU5HX1RPVUNIKTwv
VmFsdWU+CiAgICAgICA8RW52aXJvbm1lbnRWYXJpYWJsZT50cnVlPC9FbnZpcm9ubWVudFZhcmlh
YmxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL3Rvb2xzL3ZzcHJvcHMvRmVhdHVyZURlZmlu
ZXNDYWlyby5wcm9wcyBiL1NvdXJjZS9jbWFrZS90b29scy92c3Byb3BzL0ZlYXR1cmVEZWZpbmVz
Q2Fpcm8ucHJvcHMKaW5kZXggZGI4ODI1MDA3ZDBlYzI3YzkzYTk3MWRmYmJkMjIyODZmMTQxOTg5
Ni4uNDVmMzhmZjI3MzgxOTYzZWRjZDJiNjI3MDZlM2JiZjczODc3OTI1YiAxMDA2NDQKLS0tIGEv
U291cmNlL2NtYWtlL3Rvb2xzL3ZzcHJvcHMvRmVhdHVyZURlZmluZXNDYWlyby5wcm9wcworKysg
Yi9Tb3VyY2UvY21ha2UvdG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lc0NhaXJvLnByb3BzCkBA
IC0yLDcgKzIsNiBAQAogPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNp
b249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21z
YnVpbGQvMjAwMyI+CiAgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIj4KICAgICA8
RU5BQkxFXzNEX1RSQU5TRk9STVM+RU5BQkxFXzNEX1RSQU5TRk9STVM8L0VOQUJMRV8zRF9UUkFO
U0ZPUk1TPgotICAgIDxFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTIC8+CiAgICAgPEVOQUJM
RV9PVkVSRkxPV19TQ1JPTExJTkdfVE9VQ0ggLz4KICAgICA8RU5BQkxFX0FUVEFDSE1FTlRfRUxF
TUVOVD5FTkFCTEVfQVRUQUNITUVOVF9FTEVNRU5UPC9FTkFCTEVfQVRUQUNITUVOVF9FTEVNRU5U
PgogICAgIDxFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkc+RU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5H
PC9FTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkc+CkBAIC02OSw3ICs2OCw3IEBACiAgIDwvUHJvcGVy
dHlHcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CiAgICAgPENsQ29tcGlsZT4KLSAgICAg
IDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4kKEVOQUJMRV8zRF9UUkFOU0ZPUk1TKTskKEVOQUJM
RV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpOyQoRU5BQkxFX09WRVJGTE9XX1NDUk9MTElOR19UT1VD
SCk7JChFTkFCTEVfQVRUQUNITUVOVF9FTEVNRU5UKTskKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lO
Ryk7JChFTkFCTEVfQ1NTM19DT05ESVRJT05BTF9SVUxFUyk7JChFTkFCTEVfQ1NTX0lNQUdFX1NF
VCk7JChFTkFCTEVfQ1NTM19URVhUKTskKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUsp
OyQoRU5BQkxFX0NTU19TSEFERVJTKTskKEVOQUJMRV9DU1NfQ09NUE9TSVRJTkcpOyQoRU5BQkxF
X0NTU19TRUxFQ1RPUlNfTEVWRUw0KTskKEVOQUJMRV9DU1NfU0hBUEVfSU5TSURFKTskKEVOQUJM
RV9DU1NfVFJBTlNGT1JNU19BTklNQVRJT05TX1RSQU5TSVRJT05TX1VOUFJFRklYRUQpOyQoRU5B
QkxFX0NVUlNPUl9WSVNJQklMSVRZKTskKEVOQUJMRV9DVVNUT01fU0NIRU1FX0hBTkRMRVIpOyQo
RU5BQkxFX0RBUktfTU9ERV9DU1MpOyQoRU5BQkxFX0RBVEFHUklEKTskKEVOQUJMRV9EQVRBTElT
VF9FTEVNRU5UKTskKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pOyQoRU5BQkxFX0RJUkVDVE9S
WV9VUExPQUQpOyQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSk7JChFTkFCTEVfRkVUQ0hfQVBJKTsk
KEVOQUJMRV9GSUxFX1NZU1RFTSk7JChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpOyQoRU5BQkxFX0dB
TUVQQUQpOyQoRU5BQkxFX0dFT0xPQ0FUSU9OKTskKEVOQUJMRV9ISUdIX0RQSV9DQU5WQVMpOyQo
RU5BQkxFX0lOREVYRURfREFUQUJBU0UpOyQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IpOyQoRU5B
QkxFX0lOUFVUX1NQRUVDSCk7JChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKTskKEVOQUJMRV9JTlBV
VF9UWVBFX0RBVEVUSU1FTE9DQUwpOyQoRU5BQkxFX0lOUFVUX1RZUEVfTU9OVEgpOyQoRU5BQkxF
X0lOUFVUX1RZUEVfVElNRSk7JChFTkFCTEVfSU5QVVRfVFlQRV9XRUVLKTskKEVOQUJMRV9MRUdB
Q1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUyk7JChFTkFCTEVfTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSk7
JChFTkFCTEVfTElOS19QUkVSRU5ERVIpOyQoRU5BQkxFX01BVEhNTCk7JChFTkFCTEVfTUlDUk9E
QVRBKTskKEVOQUJMRV9NT1VTRV9DVVJTT1JfU0NBTEUpOyQoRU5BQkxFX05PVElGSUNBVElPTlMp
OyQoRU5BQkxFX1FVT1RBKTskKEVOQUJMRV9TQ1JJUFRFRF9TUEVFQ0gpOyQoRU5BQkxFX1NIQVJF
RF9XT1JLRVJTKTskKEVOQUJMRV9NRURJQV9DT05UUk9MU19TQ1JJUFQpOyQoRU5BQkxFX01FRElB
X1NPVVJDRSk7JChFTkFCTEVfTUVESUFfU1RBVElTVElDUyk7JChFTkFCTEVfU1FMX0RBVEFCQVNF
KTskKEVOQUJMRV9TVFlMRV9TQ09QRUQpOyQoRU5BQkxFX1NVQlBJWEVMX0xBWU9VVCk7JChFTkFC
TEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKTskKEVOQUJMRV9WSURFTyk7JChFTkFCTEVfV0VCX0FV
RElPKTskKEVOQUJMRV9XRUJHTCk7JChFTkFCTEVfV0VCWFIpOyQoRU5BQkxFX1hIUl9USU1FT1VU
KTskKEVOQUJMRV9YU0xUKTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29y
RGVmaW5pdGlvbnM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+JChFTkFCTEVfM0Rf
VFJBTlNGT1JNUyk7JChFTkFCTEVfT1ZFUkZMT1dfU0NST0xMSU5HX1RPVUNIKTskKEVOQUJMRV9B
VFRBQ0hNRU5UX0VMRU1FTlQpOyQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKTskKEVOQUJMRV9D
U1MzX0NPTkRJVElPTkFMX1JVTEVTKTskKEVOQUJMRV9DU1NfSU1BR0VfU0VUKTskKEVOQUJMRV9D
U1MzX1RFWFQpOyQoRU5BQkxFX0NTU19CT1hfREVDT1JBVElPTl9CUkVBSyk7JChFTkFCTEVfQ1NT
X1NIQURFUlMpOyQoRU5BQkxFX0NTU19DT01QT1NJVElORyk7JChFTkFCTEVfQ1NTX1NFTEVDVE9S
U19MRVZFTDQpOyQoRU5BQkxFX0NTU19TSEFQRV9JTlNJREUpOyQoRU5BQkxFX0NTU19UUkFOU0ZP
Uk1TX0FOSU1BVElPTlNfVFJBTlNJVElPTlNfVU5QUkVGSVhFRCk7JChFTkFCTEVfQ1VSU09SX1ZJ
U0lCSUxJVFkpOyQoRU5BQkxFX0NVU1RPTV9TQ0hFTUVfSEFORExFUik7JChFTkFCTEVfREFSS19N
T0RFX0NTUyk7JChFTkFCTEVfREFUQUdSSUQpOyQoRU5BQkxFX0RBVEFMSVNUX0VMRU1FTlQpOyQo
RU5BQkxFX0RFVklDRV9PUklFTlRBVElPTik7JChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCk7JChF
TkFCTEVfRU5DUllQVEVEX01FRElBKTskKEVOQUJMRV9GRVRDSF9BUEkpOyQoRU5BQkxFX0ZJTEVf
U1lTVEVNKTskKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSk7JChFTkFCTEVfR0FNRVBBRCk7JChFTkFC
TEVfR0VPTE9DQVRJT04pOyQoRU5BQkxFX0hJR0hfRFBJX0NBTlZBUyk7JChFTkFCTEVfSU5ERVhF
RF9EQVRBQkFTRSk7JChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUik7JChFTkFCTEVfSU5QVVRfU1BF
RUNIKTskKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEUpOyQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJ
TUVMT0NBTCk7JChFTkFCTEVfSU5QVVRfVFlQRV9NT05USCk7JChFTkFCTEVfSU5QVVRfVFlQRV9U
SU1FKTskKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUspOyQoRU5BQkxFX0xFR0FDWV9DU1NfVkVORE9S
X1BSRUZJWEVTKTskKEVOQUJMRV9MRUdBQ1lfRU5DUllQVEVEX01FRElBKTskKEVOQUJMRV9MSU5L
X1BSRVJFTkRFUik7JChFTkFCTEVfTUFUSE1MKTskKEVOQUJMRV9NSUNST0RBVEEpOyQoRU5BQkxF
X01PVVNFX0NVUlNPUl9TQ0FMRSk7JChFTkFCTEVfTk9USUZJQ0FUSU9OUyk7JChFTkFCTEVfUVVP
VEEpOyQoRU5BQkxFX1NDUklQVEVEX1NQRUVDSCk7JChFTkFCTEVfU0hBUkVEX1dPUktFUlMpOyQo
RU5BQkxFX01FRElBX0NPTlRST0xTX1NDUklQVCk7JChFTkFCTEVfTUVESUFfU09VUkNFKTskKEVO
QUJMRV9NRURJQV9TVEFUSVNUSUNTKTskKEVOQUJMRV9TUUxfREFUQUJBU0UpOyQoRU5BQkxFX1NU
WUxFX1NDT1BFRCk7JChFTkFCTEVfU1VCUElYRUxfTEFZT1VUKTskKEVOQUJMRV9TVkdfRE9NX09C
SkNfQklORElOR1MpOyQoRU5BQkxFX1ZJREVPKTskKEVOQUJMRV9XRUJfQVVESU8pOyQoRU5BQkxF
X1dFQkdMKTskKEVOQUJMRV9XRUJYUik7JChFTkFCTEVfWEhSX1RJTUVPVVQpOyQoRU5BQkxFX1hT
TFQpOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4K
ICAgICA8L0NsQ29tcGlsZT4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbUdyb3Vw
PgpAQCAtNzcsMTAgKzc2LDYgQEAKICAgICAgIDxWYWx1ZT4kKEVOQUJMRV8zRF9UUkFOU0ZPUk1T
KTwvVmFsdWU+CiAgICAgICA8RW52aXJvbm1lbnRWYXJpYWJsZT50cnVlPC9FbnZpcm9ubWVudFZh
cmlhYmxlPgogICAgIDwvQnVpbGRNYWNybz4KLSAgICA8QnVpbGRNYWNybyBJbmNsdWRlPSJFTkFC
TEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTIj4KLSAgICAgIDxWYWx1ZT4kKEVOQUJMRV9BQ0NFTEVS
QVRFRF8yRF9DQU5WQVMpPC9WYWx1ZT4KLSAgICAgIDxFbnZpcm9ubWVudFZhcmlhYmxlPnRydWU8
L0Vudmlyb25tZW50VmFyaWFibGU+Ci0gICAgPC9CdWlsZE1hY3JvPgogICAgIDxCdWlsZE1hY3Jv
IEluY2x1ZGU9IkVOQUJMRV9PVkVSRkxPV19TQ1JPTExJTkdfVE9VQ0giPgogICAgICAgPFZhbHVl
PiQoRU5BQkxFX09WRVJGTE9XX1NDUk9MTElOR19UT1VDSCk8L1ZhbHVlPgogICAgICAgPEVudmly
b25tZW50VmFyaWFibGU+dHJ1ZTwvRW52aXJvbm1lbnRWYXJpYWJsZT4KZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjMzZhYWIzYjY2MzFjZDIzZWQ4
Mzg1Mjc0YmI5YWViNTViMDE1MjJiLi5jYzM5MTRhZmNiOWVjMDMwNWFiYzQ1NWY5NTliMzE2OGU1
N2MwZTZjIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMTAtMTIgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0Bp
Z2FsaWEuY29tPgorCisgICAgICAgIFJlbW92ZSBBQ0NFTEVSQVRFRF8yRF9DQU5WQVMgYnVpbGQg
ZmxhZ3MgYW5kIGd1YXJkZWQgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE3NjAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG06CisgICAg
ICAgIFJlbW92ZSB0aGUgQUNDRUxFUkFURURfMkRfQ0FOVkFTIGZlYXR1cmUgZmxhZy4KKwogMjAy
MC0xMC0xMSAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGdub21lLm9yZz4KIAogICAg
ICAgICAtV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIGNhdXNlZCBieSBXS1RSIHVzaW5nIFdLQnVu
ZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRwZXJsL0ZlYXR1cmVMaXN0LnBtIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVM
aXN0LnBtCmluZGV4IDQyNDk4Yzk4NzU2N2Q3ZWZmMDdhZGRkNTVlMTIxYWQzYjFiNDc1ODMuLmUx
YjVjZGY1YzJkYTg1ZmNjMDI1NjE0ZjdkYWJlNjA4MmQ2MWQ5ODYgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQorKysgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KQEAgLTQ5LDcgKzQ5LDYgQEAgQkVHSU4gewogfQogCiBt
eSAoCi0gICAgJGFjY2VsZXJhdGVkMkRDYW52YXNTdXBwb3J0LAogICAgICRhY2Nlc3NpYmlsaXR5
SXNvbGF0ZWRUcmVlU3VwcG9ydCwKICAgICAkYXBwbGVQYXlTZXNzaW9uVjNTdXBwb3J0LAogICAg
ICRhcHBsZVBheVNlc3Npb25WNFN1cHBvcnQsCkBAIC0xOTcsOSArMTk2LDYgQEAgbXkgQGZlYXR1
cmVzID0gKAogICAgIHsgb3B0aW9uID0+ICIzZC1yZW5kZXJpbmciLCBkZXNjID0+ICJUb2dnbGUg
M0QgcmVuZGVyaW5nIHN1cHBvcnQiLAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVfM0RfVFJBTlNG
T1JNUyIsIHZhbHVlID0+IFwkdGhyZWVEVHJhbnNmb3Jtc1N1cHBvcnQgfSwKIAotICAgIHsgb3B0
aW9uID0+ICJhY2NlbGVyYXRlZC0yZC1jYW52YXMiLCBkZXNjID0+ICJUb2dnbGUgQWNjZWxlcmF0
ZWQgMkQgQ2FudmFzIHN1cHBvcnQiLAotICAgICAgZGVmaW5lID0+ICJFTkFCTEVfQUNDRUxFUkFU
RURfMkRfQ0FOVkFTIiwgdmFsdWUgPT4gXCRhY2NlbGVyYXRlZDJEQ2FudmFzU3VwcG9ydCB9LAot
CiAgICAgeyBvcHRpb24gPT4gImFjY2Vzc2liaWxpdHktaXNvbGF0ZWQtdHJlZSIsIGRlc2MgPT4g
IlRvZ2dsZSBhY2Nlc3NpYmlsaXR5IGlzb2xhdGVkIHRyZWUgc3VwcG9ydCIsCiAgICAgICBkZWZp
bmUgPT4gIkVOQUJMRV9BQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUiLCB2YWx1ZSA9PiBcJGFj
Y2Vzc2liaWxpdHlJc29sYXRlZFRyZWVTdXBwb3J0IH0sCiAKZGlmZiAtLWdpdCBhL0NoYW5nZUxv
ZyBiL0NoYW5nZUxvZwppbmRleCBiZTRmMzMyNTM1Zjk2ZjE3NjVkNTUxOTI0YWEzNzcxN2M4MTY3
MjIxLi5kZTE4NDM3MzM1ZmY2Njk3ZjAzYTkzNzY2MjdlYzAwODk3MzRmNmYyIDEwMDY0NAotLS0g
YS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjAtMTAtMTIg
IFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFJlbW92ZSBB
Q0NFTEVSQVRFRF8yRF9DQU5WQVMgYnVpbGQgZmxhZ3MgYW5kIGd1YXJkZWQgY29kZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NjAzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgWWFuayB0aGUgQ01ha2Ug
RU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUyBvcHRpb24gbm93IHRoYXQgaXQgd29uJ3QKKyAg
ICAgICAgaGF2ZSBhbnkgZWZmZWN0LiBGaW5kQ2Fpcm9HTC5jbWFrZSBjYW4gYWxzbyBiZSByZW1v
dmVkLgorCisgICAgICAgICogU291cmNlL2NtYWtlL0ZpbmRDYWlyb0dMLmNtYWtlOiBSZW1vdmVk
LgorICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zRlRXLmNtYWtlOgorICAgICAgICAqIFNv
dXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlOgorICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRp
b25zV1BFLmNtYWtlOgorICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zV2luLmNtYWtlOgor
ICAgICAgICAqIFNvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZToKKyAgICAgICAgKiBT
b3VyY2UvY21ha2UvdG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lcy5wcm9wczoKKyAgICAgICAg
KiBTb3VyY2UvY21ha2UvdG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lc0NhaXJvLnByb3BzOgor
CiAyMDIwLTEwLTA5ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgog
CiAgICAgICAgIFtXaW5DYWlyb11bR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXJdIGJhY2tkcm9w
LWZpbHRlciBzdXBwb3J0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411210</attachid>
            <date>2020-10-13 04:29:10 -0700</date>
            <delta_ts>2020-10-13 04:29:10 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-217603-20201013132909.patch</filename>
            <type>text/plain</type>
            <size>80030</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4MzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDgyN2YwZmYzZTRjMDMzMGY4OTQzMGEx
NzVjZTdlZjU0OTUwNDlhNDQuLjI0YWEzNjkwZThiNTkxOTZiZDZmZjEyMjU4YzAyNDg0MTdmODRi
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMTAtMTMgIFphbiBEb2JlcnNlayAgPHpkb2Jl
cnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFJlbW92ZSBBQ0NFTEVSQVRFRF8yRF9DQU5WQVMg
YnVpbGQgZmxhZ3MgYW5kIGd1YXJkZWQgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NjAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2FybG9z
IEdhcmNpYSBDYW1wb3MuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1FbmFibGUuaDoKKyAgICAg
ICAgUmVtb3ZlIHRoZSBmYWxsYmFjayBFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTIGRlZmlu
aXRpb24uCisKIDIwMjAtMTAtMTIgIEx1bWluZyBZaW4gIDxsdW1pbmdfeWluQGFwcGxlLmNvbT4K
IAogICAgICAgICBbbWFjT1NdIFdvcmthcm91bmQgZm9yIE1BQ19PU19YX1ZFUlNJT05fTUFKT1Ig
aW5jb3JyZWN0bHkgaW5jbHVkaW5nIG1pbm9yIHZlcnNpb24gd2hlbiBidWlsZGluZyAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCA4NTViNjg3NjVjMDcyMmVjMzlmYjFlNTNiMTZhNzMxZDE3MGIzYzgzLi41NjE3NTQy
MzllMTFlMTBhYzdhMTk5YjVhYzJlMzVlMGI5NTY4MzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NTkgQEAKKzIwMjAtMTAtMTMgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgor
CisgICAgICAgIFJlbW92ZSBBQ0NFTEVSQVRFRF8yRF9DQU5WQVMgYnVpbGQgZmxhZ3MgYW5kIGd1
YXJkZWQgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjE3NjAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2FybG9zIEdhcmNpYSBDYW1wb3MuCisK
KyAgICAgICAgUmVtb3ZlIGNvZGUgZ3VhcmRlZCBieSB0aGUgQUNDRUxFUkFURURfMkRfQ0FOVkFT
IGJ1aWxkIGd1YXJkLCBhbG9uZworICAgICAgICB3aXRoIHJlbGF0ZWQgYnVpbGQgc3lzdGVtIGNy
dWZ0LiBUaGlzIGZlYXR1cmUgd2FzIG9ubHkgaW1wbGVtZW50ZWQgZm9yCisgICAgICAgIENhaXJv
LCBhbmQgZXZlbiB0aGVuIHdhcyB1c2luZyBhbiBleHBlcmltZW50YWwgR0wtb3JpZW50ZWQgYmFj
a2VuZCBvZgorICAgICAgICBDYWlybyB0aGF0IHdhcyBub3QgcHJvdmlkaW5nIG5lY2Vzc2FyaWx5
IGJldHRlciBwZXJmb3JtYW5jZSBvcgorICAgICAgICBleHBlcmllbmNlIGFuZCBpcyBub3Qgc2Vl
aW5nIGZ1cnRoZXIgZGV2ZWxvcG1lbnQuCisKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFrZToK
KyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpjcmVhdGVDb250ZXh0MmQpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUNvbnRleHRCaXRtYXBS
ZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6c2hvdWxkQWNj
ZWxlcmF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6Y3Jl
YXRlSW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIGh0bWwvSW1hZ2VCaXRtYXAuY3BwOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6aXNBY2NlbGVy
YXRlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRC
YXNlOjpkcmF3SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQmFzZTo6Y3JlYXRlUGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkRCYXNlOjpkaWREcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRl
cmluZ0NvbnRleHQyREJhc2U6OnBsYXRmb3JtTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuaDoKKyAgICAgICAg
KiBodG1sL2NhbnZhcy9JbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL0NhaXJvLmNtYWtlOgorICAgICAgICAqIHBsYXRmb3JtL1NvdXJjZXNDYWlyby50
eHQ6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0Lmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZUJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNhaXJvU3VyZmFjZVNpemUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0lt
YWdlQnVmZmVyQ2Fpcm9HTFN1cmZhY2VCYWNrZW5kLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvR0xTdXJmYWNlQmFja2VuZC5o
OiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0RUdMOjp+R0xDb250ZXh0RUdMKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y2Fpcm9EZXZpY2UpOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdMQ29udGV4dEdMWDo6fkdMQ29udGV4dEdMWCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRl
eHRHTFg6OmNhaXJvRGV2aWNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9nbHgvR0xDb250ZXh0R0xYLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1Rl
eHR1cmUuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0
dXJlLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y2FudmFzQ29tcG9zaXRpbmdTdHJhdGVneSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
ckJhY2tpbmc6OnVwZGF0ZUNvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXJCYWNraW5nOjpjb250YWluc1BhaW50ZWRDb250ZW50IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6Y29udGVudENoYW5nZWQpOgorCiAyMDIwLTEwLTEz
ICBBZHJpYW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CiAKICAgICAgICAg
W0dUS10gTWFrZSBnYW1lcGFkcyB2aXNpYmxlIGFmdGVyIHRoZWlyIGZpcnN0IGlucHV0IGlzIHJl
Y2VpdmVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oIGIvU291
cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaAppbmRleCBmNDQ3NjM4YjQxOGI4OGRkM2YzN2Jm
NDYyNzRjZTNjYjAzNzg0MjUxLi42NTk2ZjEyOWMxY2I3NWU5YTAyZTAwMzEwN2NkM2Q2ZmE5MmQ3
YTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgKQEAgLTE4MSwxMCArMTgxLDYgQEAKICNkZWZp
bmUgRU5BQkxFX0FDQ0VTU0lCSUxJVFkgMQogI2VuZGlmCiAKLSNpZiAhZGVmaW5lZChFTkFCTEVf
QUNDRUxFUkFURURfMkRfQ0FOVkFTKQotI2RlZmluZSBFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FO
VkFTIDAKLSNlbmRpZgotCiAjaWYgIWRlZmluZWQoRU5BQkxFX09WRVJGTE9XX1NDUk9MTElOR19U
T1VDSCkKICNkZWZpbmUgRU5BQkxFX09WRVJGTE9XX1NDUk9MTElOR19UT1VDSCAwCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dl
YkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXggMGYxNmY0NGM1NTAzMDdjOWM2N2VkMDk2ZTFi
YzI5MzljOTUyN2YyZi4uOGQ5MjQ5MWEwODUzMGVjYTJlOTZmNGRjMWU2MmQzMjViMTZlNDc1YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTMzMCw3ICszMzAsNiBAQCBsaXN0KEFQUEVO
RCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jdi9QaXhlbEJ1ZmZlckNv
bmZvcm1lckNWLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2N2L1ZpZGVvVGV4dHVyZUNvcGll
ckNWLmNwcAogCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L1RpbGluZ0RhdGEuY3BwCiAKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvQ29sb3JNYWMubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2Nv
YS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IGQ2ZjZmNWNmZGYw
OWRkZjFjM2UyNmM2NTZjY2FjNmNlNzllMWMyMmEuLmY5NTllMzk4Mjk2NjA1MDkwM2FhYzg1Yjhh
ZjI0MmRhMTU0MzRhODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50
eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMzc4LDcgKzM3OCw2
IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQubW0KIHBsYXRm
b3JtL2dyYXBoaWNzL2N2L1BpeGVsQnVmZmVyQ29uZm9ybWVyQ1YuY3BwCiBwbGF0Zm9ybS9ncmFw
aGljcy9jdi9WaWRlb1RleHR1cmVDb3BpZXJDVi5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmVp
bWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbQotcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L1RleHR1cmUuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGlsaW5nRGF0YS5jcHAKIHBs
YXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVCaW5kR3JvdXBBbGxvY2F0b3JNZXRhbC5tbQog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJpbmRHcm91cExheW91dE1ldGFsLm1tCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggZTllYTk5OGQ1NzY3MTgwMjdlZGI4MzhjYWQ1YzIzYjUzMjQ3NjZjYS4uYjExMmNjMzQ0Njg1
OGEwMzI3ZGE3ZjNlNWY5MDM1ZjU3NWUwMTgzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI3NCw3ICsxMjc0LDYgQEAKIAkJ
NDk0QkQ3OTUwRjU1QzhFRTAwNzQ3ODI4IC8qIFdlYktpdFBvaW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTRCRDc5MzBGNTVDOEVFMDA3NDc4Mjgg
LyogV2ViS2l0UG9pbnQuaCAqLzsgfTsKIAkJNDk0QkQ3OUUwRjU1Qzk0QzAwNzQ3ODI4IC8qIEpT
V2ViS2l0UG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ5NEJENzlDMEY1NUM5NEMwMDc0NzgyOCAvKiBKU1dlYktpdFBvaW50LmggKi87IH07CiAJ
CTQ5NjlCMEYzMTNEMEIzM0YwMERGMzUyMSAvKiBIaXRUZXN0aW5nVHJhbnNmb3JtU3RhdGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5NjlCMEYxMTNE
MEIzM0YwMERGMzUyMSAvKiBIaXRUZXN0aW5nVHJhbnNmb3JtU3RhdGUuaCAqLzsgfTsKLQkJNDk4
NzcwRjExMjQyQzUzNTAwMjIyNkJBIC8qIFRleHR1cmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5ODc3MEQ4MTI0MkM1MzUwMDIyMjZCQSAvKiBUZXh0
dXJlLmggKi87IH07CiAJCTQ5ODc3MEYzMTI0MkM1MzUwMDIyMjZCQSAvKiBUaWxpbmdEYXRhLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTg3NzBEQTEy
NDJDNTM1MDAyMjI2QkEgLyogVGlsaW5nRGF0YS5oICovOyB9OwogCQk0OTk4QUVDNjEzRjlEMEVB
MDA5MEIxQUEgLyogUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2suaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5OThBRUM0MTNGOUQwRUEwMDkwQjFB
QSAvKiBSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjay5oICovOyB9OwogCQk0OTk4QUVDRTEz
RjlENkM5MDA5MEIxQUEgLyogSlNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjay5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk5OEFFQ0MxM0Y5RDZD
OTAwOTBCMUFBIC8qIEpTUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2suaCAqLzsgfTsKQEAg
LTgwNjQsOCArODA2Myw2IEBACiAJCTQ5NTg3ODIwMTJBNTdEREYwMDcyMzhBQyAvKiBQbGF0Zm9y
bUNBTGF5ZXJDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFBsYXRmb3JtQ0FMYXllckNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
OTY5QjBGMDEzRDBCMzNGMDBERjM1MjEgLyogSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhpdFRlc3RpbmdUcmFuc2Zvcm1T
dGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5NjlCMEYxMTNEMEIzM0Yw
MERGMzUyMSAvKiBIaXRUZXN0aW5nVHJhbnNmb3JtU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTQ5ODc3MEQ3MTI0MkM1MzUwMDIyMjZCQSAvKiBUZXh0dXJlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHR1cmUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk0OTg3NzBEODEyNDJDNTM1MDAyMjI2QkEgLyogVGV4dHVy
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0dXJlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5ODc3MEQ5MTI0MkM1MzUwMDIyMjZCQSAvKiBUaWxpbmdE
YXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRpbGluZ0RhdGEu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTg3NzBEQTEyNDJDNTM1MDAyMjI2
QkEgLyogVGlsaW5nRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaWxp
bmdEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5OThBRUM0MTNGOUQwRUEw
MDkwQjFBQSAvKiBSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjay5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjay5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTk2OTAsOCArMTk2ODcsNiBAQAogCQkJCUQwRDg2
NDlCMjFCQTFDMkQwMDNDOTgzQyAvKiBHUFVWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yLmggKi8s
CiAJCQkJRDBEODY0OUMyMUJBMUNFODAwM0M5ODNDIC8qIEdQVVZlcnRleEJ1ZmZlckRlc2NyaXB0
b3IuaCAqLywKIAkJCQlEMEQ4NjQ5OTIxQkExQjFGMDAzQzk4M0MgLyogR1BVVmVydGV4SW5wdXRE
ZXNjcmlwdG9yLmggKi8sCi0JCQkJNDk4NzcwRDcxMjQyQzUzNTAwMjIyNkJBIC8qIFRleHR1cmUu
Y3BwICovLAotCQkJCTQ5ODc3MEQ4MTI0MkM1MzUwMDIyMjZCQSAvKiBUZXh0dXJlLmggKi8sCiAJ
CQkJNDk4NzcwRDkxMjQyQzUzNTAwMjIyNkJBIC8qIFRpbGluZ0RhdGEuY3BwICovLAogCQkJCTQ5
ODc3MERBMTI0MkM1MzUwMDIyMjZCQSAvKiBUaWxpbmdEYXRhLmggKi8sCiAJCQkpOwpAQCAtMzQz
ODAsNyArMzQzNzUsNiBAQAogCQkJCTFERjdFODFGMjUxQTlFMDYwMERCOEY2MSAvKiBUZXh0VHJh
Y2tSZXByZXNlbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUM3M0E3MTMyMTg1NzU3RTAw
NENDRUE1IC8qIFRleHRVbmRlcmxpbmVPZmZzZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5RkFG
NEI2MTk1QUIwODkwMEE1MjJEQyAvKiBUZXh0VW5kb0luc2VydGlvbk1hcmt1cE1hYy5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJNDk4NzcwRjExMjQyQzUzNTAwMjIyNkJBIC8qIFRleHR1cmUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTZGQjExQjVDMjE3ODNGRDAwMEUyQTU3NCAvKiBUZXh0VXRpbC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkNFNjU4RkYwRUE5MjQ4QTAwN0U0NTMzIC8qIFRoZW1lLmggaW4g
SGVhZGVycyAqLywKIAkJCQkzMTBENzE5NjFCMzM1QzlFMDA5QzdCNzMgLyogVGhlbWVDb2NvYS5o
IGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52
YXNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3Bw
CmluZGV4IDMwNWY2ODA2ZTg2NjRlODQ2ZDA1YzZkMzQyNGQ2YTk1YjUxNjBjNWYuLjExNWJhNTlh
OWZiNWFlOGJkMGMzMTBlOTM4ZTZkMDIyMmVjZGZhMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTENhbnZhc0VsZW1lbnQuY3BwCkBAIC0zNjksNyArMzY5LDcgQEAgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEKiBIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlQ29udGV4dDJkKGNvbnN0IFN0cmlu
ZyYgdHlwZSkKIAogICAgIG1fY29udGV4dCA9IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y3Jl
YXRlKCp0aGlzLCBkb2N1bWVudCgpLmluUXVpcmtzTW9kZSgpKTsKIAotI2lmIFVTRShJT1NVUkZB
Q0VfQ0FOVkFTX0JBQ0tJTkdfU1RPUkUpIHx8IEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMp
CisjaWYgVVNFKElPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSkKICAgICAvLyBOZWVkIHRv
IG1ha2Ugc3VyZSBhIFJlbmRlckxheWVyIGFuZCBjb21wb3NpdGluZyBsYXllciBnZXQgY3JlYXRl
ZCBmb3IgdGhlIENhbnZhcy4KICAgICBpbnZhbGlkYXRlU3R5bGVBbmRMYXllckNvbXBvc2l0aW9u
KCk7CiAjZW5kaWYKQEAgLTUyNyw3ICs1MjcsNyBAQCBJbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRl
eHQqIEhUTUxDYW52YXNFbGVtZW50OjpjcmVhdGVDb250ZXh0Qml0bWFwUmVuZGVyZXIoY29ucwog
CiAgICAgbV9jb250ZXh0ID0gSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGUoKnRo
aXMsIFdURk1vdmUoc2V0dGluZ3MpKTsKIAotI2lmIFVTRShJT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJ
TkdfU1RPUkUpIHx8IEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCisjaWYgVVNFKElPU1VS
RkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSkKICAgICAvLyBOZWVkIHRvIG1ha2Ugc3VyZSBhIFJl
bmRlckxheWVyIGFuZCBjb21wb3NpdGluZyBsYXllciBnZXQgY3JlYXRlZCBmb3IgdGhlIENhbnZh
cy4KICAgICBpbnZhbGlkYXRlU3R5bGVBbmRMYXllckNvbXBvc2l0aW9uKCk7CiAjZW5kaWYKQEAg
LTg1NiwxNyArODU2LDYgQEAgYm9vbCBIVE1MQ2FudmFzRWxlbWVudDo6c2hvdWxkQWNjZWxlcmF0
ZShjb25zdCBJbnRTaXplJiBzaXplKSBjb25zdAogCiAjaWYgVVNFKElPU1VSRkFDRV9DQU5WQVNf
QkFDS0lOR19TVE9SRSkKICAgICByZXR1cm4gc2V0dGluZ3MuY2FudmFzVXNlc0FjY2VsZXJhdGVk
RHJhd2luZygpOwotI2VsaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKLSAgICBpZiAo
bV9jb250ZXh0ICYmICFtX2NvbnRleHQtPmlzMmQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgaWYgKCFzZXR0aW5ncy5hY2NlbGVyYXRlZDJkQ2FudmFzRW5hYmxlZCgpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoYXJlYSA8IHNldHRpbmdzLm1pbmltdW1BY2NlbGVy
YXRlZDJkQ2FudmFzU2l6ZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4g
dHJ1ZTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHNpemUpOwogICAgIHJldHVybiBmYWxzZTsK
QEAgLTk1NSw3ICs5NDQsNyBAQCB2b2lkIEhUTUxDYW52YXNFbGVtZW50OjpjcmVhdGVJbWFnZUJ1
ZmZlcigpIGNvbnN0CiAgICAgaWYgKGJ1ZmZlcigpICYmIGJ1ZmZlcigpLT5kcmF3aW5nQ29udGV4
dCgpKQogICAgICAgICBidWZmZXIoKS0+ZHJhd2luZ0NvbnRleHQoKS0+c2V0VHJhY2tzRGlzcGxh
eUxpc3RSZXBsYXkobV90cmFja3NEaXNwbGF5TGlzdFJlcGxheSk7CiAKLSNpZiBVU0UoSU9TVVJG
QUNFX0NBTlZBU19CQUNLSU5HX1NUT1JFKSB8fCBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFT
KQorI2lmIFVTRShJT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJTkdfU1RPUkUpCiAgICAgaWYgKG1fY29u
dGV4dCAmJiBtX2NvbnRleHQtPmlzMmQoKSkgewogICAgICAgICAvLyBSZWNhbGN1bGF0ZSBjb21w
b3NpdGluZyByZXF1aXJlbWVudHMgaWYgYWNjZWxlcmF0aW9uIHN0YXRlIGNoYW5nZWQuCiAgICAg
ICAgIGNvbnN0X2Nhc3Q8SFRNTENhbnZhc0VsZW1lbnQqPih0aGlzKS0+aW52YWxpZGF0ZVN0eWxl
QW5kTGF5ZXJDb21wb3NpdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9J
bWFnZUJpdG1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcAppbmRl
eCA0MzliNmE5ZDdkODEyMGQ5MWUxZTFhZmM1NmQxYWFmNmJlMGI0OWU0Li5iYTEyOThlNGY3NDdj
M2JkYjM4ZmFlODA5MjgyNjg4OTZiZWU5ZWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0ltYWdlQml0bWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFw
LmNwcApAQCAtNjEsNyArNjEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lT
T19BTExPQ0FURURfSU1QTChJbWFnZUJpdG1hcCk7CiAKLSNpZiBVU0UoSU9TVVJGQUNFX0NBTlZB
U19CQUNLSU5HX1NUT1JFKSB8fCBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQorI2lmIFVT
RShJT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJTkdfU1RPUkUpCiBzdGF0aWMgUmVuZGVyaW5nTW9kZSBi
dWZmZXJSZW5kZXJpbmdNb2RlID0gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQ7CiAjZWxzZQog
c3RhdGljIFJlbmRlcmluZ01vZGUgYnVmZmVyUmVuZGVyaW5nTW9kZSA9IFJlbmRlcmluZ01vZGU6
OlVuYWNjZWxlcmF0ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCmluZGV4IDcxYTQ3MDYwNjQ0YmY4
MTkwMTM5YmE1ZTQ1MTY5YzNiZDg1MjUyMWIuLmU4ZDY4MTNmZDRhY2ExNzQ2MjMxY2I5NTExOGMx
NjE2ZWVjZTA4NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCkBAIC0xNDUsNyArMTQ1LDcgQEAg
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6fkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2UoKQogCiBib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmlzQWNjZWxlcmF0ZWQo
KSBjb25zdAogewotI2lmIFVTRShJT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJTkdfU1RPUkUpIHx8IEVO
QUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCisjaWYgVVNFKElPU1VSRkFDRV9DQU5WQVNfQkFD
S0lOR19TVE9SRSkKICAgICBhdXRvKiBjb250ZXh0ID0gY2FudmFzQmFzZSgpLmV4aXN0aW5nRHJh
d2luZ0NvbnRleHQoKTsKICAgICByZXR1cm4gY29udGV4dCAmJiBjb250ZXh0LT5pc0FjY2VsZXJh
dGVkQ29udGV4dCgpOwogI2Vsc2UKQEAgLTE1ODUsMTYgKzE1ODUsNyBAQCBFeGNlcHRpb25Pcjx2
b2lkPiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3SW1hZ2UoQ2FudmFzQmFzZSYg
c291cmNlQ2FudgogCiAgICAgY2hlY2tPcmlnaW4oJnNvdXJjZUNhbnZhcyk7CiAKLSNpZiBFTkFC
TEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQotICAgIC8vIElmIHdlJ3JlIGRyYXdpbmcgZnJvbSBv
bmUgYWNjZWxlcmF0ZWQgY2FudmFzIDJkIHRvIGFub3RoZXIsIGF2b2lkIGNhbGxpbmcgc291cmNl
Q2FudmFzLm1ha2VSZW5kZXJpbmdSZXN1bHRzQXZhaWxhYmxlKCkKLSAgICAvLyBhcyB0aGF0IHdp
bGwgZG8gYSByZWFkYmFjayB0byBzb2Z0d2FyZS4KLSAgICBSZWZQdHI8Q2FudmFzUmVuZGVyaW5n
Q29udGV4dD4gc291cmNlQ29udGV4dCA9IHNvdXJjZUNhbnZhcy5yZW5kZXJpbmdDb250ZXh0KCk7
Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCBhbiBhY2NlbGVyYXRlZCBwYXRoIGZvciBkcmF3aW5n
IGZyb20gYSBXZWJHTCBjYW52YXMgdG8gYSAyZCBjYW52YXMgd2hlbiBwb3NzaWJsZS4KLSAgICBp
ZiAoIWlzQWNjZWxlcmF0ZWQoKSB8fCAhc291cmNlQ29udGV4dCB8fCAhc291cmNlQ29udGV4dC0+
aXNBY2NlbGVyYXRlZCgpIHx8ICFzb3VyY2VDb250ZXh0LT5pczJkKCkpCi0gICAgICAgIHNvdXJj
ZUNhbnZhcy5tYWtlUmVuZGVyaW5nUmVzdWx0c0F2YWlsYWJsZSgpOwotI2Vsc2UKICAgICBzb3Vy
Y2VDYW52YXMubWFrZVJlbmRlcmluZ1Jlc3VsdHNBdmFpbGFibGUoKTsKLSNlbmRpZgogCiAgICAg
aWYgKHJlY3RDb250YWluc0NhbnZhcyhkc3RSZWN0KSkgewogICAgICAgICBjLT5kcmF3SW1hZ2VC
dWZmZXIoKmJ1ZmZlciwgZHN0UmVjdCwgc3JjUmVjdCwgeyBzdGF0ZSgpLmdsb2JhbENvbXBvc2l0
ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCB9KTsKQEAgLTE2NDMsNyArMTYzNCw3IEBAIEV4Y2VwdGlv
bk9yPHZvaWQ+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdJbWFnZShIVE1MVmlk
ZW9FbGVtZW50JiB2aWRlCiAKICAgICBjaGVja09yaWdpbigmdmlkZW8pOwogCi0jaWYgVVNFKENH
KSB8fCAoRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJiYgVVNFKEdTVFJFQU1FUl9HTCkg
JiYgVVNFKENBSVJPKSkKKyNpZiBVU0UoQ0cpCiAgICAgaWYgKE5hdGl2ZUltYWdlUHRyIGltYWdl
ID0gdmlkZW8ubmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpKSB7CiAgICAgICAgIGMtPmRyYXdO
YXRpdmVJbWFnZShpbWFnZSwgRmxvYXRTaXplKHZpZGVvLnZpZGVvV2lkdGgoKSwgdmlkZW8udmlk
ZW9IZWlnaHQoKSksIGRzdFJlY3QsIHNyY1JlY3QpOwogICAgICAgICBpZiAocmVjdENvbnRhaW5z
Q2FudmFzKGRzdFJlY3QpKQpAQCAtMTk0OSw3ICsxOTQwLDcgQEAgRXhjZXB0aW9uT3I8UmVmUHRy
PENhbnZhc1BhdHRlcm4+PiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjcmVhdGVQYXR0
ZXJuKEgKICAgICBjaGVja09yaWdpbigmdmlkZW9FbGVtZW50KTsKICAgICBib29sIG9yaWdpbkNs
ZWFuID0gY2FudmFzQmFzZSgpLm9yaWdpbkNsZWFuKCk7CiAKLSNpZiBVU0UoQ0cpIHx8IChFTkFC
TEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAmJiBVU0UoR1NUUkVBTUVSX0dMKSAmJiBVU0UoQ0FJ
Uk8pKQorI2lmIFVTRShDRykKICAgICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IHZpZGVvRWxlbWVu
dC5uYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkpCiAgICAgICAgIHJldHVybiBSZWZQdHI8Q2Fu
dmFzUGF0dGVybj4geyBDYW52YXNQYXR0ZXJuOjpjcmVhdGUoQml0bWFwSW1hZ2U6OmNyZWF0ZShX
VEZNb3ZlKG5hdGl2ZUltYWdlKSksIHJlcGVhdFgsIHJlcGVhdFksIG9yaWdpbkNsZWFuKSB9Owog
I2VuZGlmCkBAIC0xOTkzLDIwICsxOTg0LDYgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlOjpkaWREcmF3KGNvbnN0IEZsb2F0UmVjdCYgciwgdW5zaWduZWQgb3B0aW9ucykKICAg
ICBpZiAoIXN0YXRlKCkuaGFzSW52ZXJ0aWJsZVRyYW5zZm9ybSkKICAgICAgICAgcmV0dXJuOwog
Ci0jaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKLSAgICAvLyBJZiB3ZSBhcmUgZHJh
d2luZyB0byBoYXJkd2FyZSBhbmQgd2UgaGF2ZSBhIGNvbXBvc2l0ZWQgbGF5ZXIsIGp1c3QgY2Fs
bCBjb250ZW50Q2hhbmdlZCgpLgotICAgIGlmIChpc0FjY2VsZXJhdGVkKCkgJiYgaXM8SFRNTENh
bnZhc0VsZW1lbnQ+KGNhbnZhc0Jhc2UoKSkpIHsKLSAgICAgICAgYXV0byYgY2FudmFzID0gZG93
bmNhc3Q8SFRNTENhbnZhc0VsZW1lbnQ+KGNhbnZhc0Jhc2UoKSk7Ci0gICAgICAgIFJlbmRlckJv
eCogcmVuZGVyQm94ID0gY2FudmFzLnJlbmRlckJveCgpOwotICAgICAgICBpZiAocmVuZGVyQm94
ICYmIHJlbmRlckJveC0+aGFzQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpKSB7Ci0gICAgICAgICAg
ICByZW5kZXJCb3gtPmNvbnRlbnRDaGFuZ2VkKENhbnZhc1BpeGVsc0NoYW5nZWQpOwotICAgICAg
ICAgICAgY2FudmFzLmNsZWFyQ29waWVkSW1hZ2UoKTsKLSAgICAgICAgICAgIGNhbnZhcy5ub3Rp
ZnlPYnNlcnZlcnNDYW52YXNDaGFuZ2VkKHIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0gICAgfQotI2VuZGlmCi0KICAgICBGbG9hdFJlY3QgZGlydHlSZWN0ID0gcjsKICAgICBp
ZiAob3B0aW9ucyAmIENhbnZhc0RpZERyYXdBcHBseVRyYW5zZm9ybSkgewogICAgICAgICBBZmZp
bmVUcmFuc2Zvcm0gY3RtID0gc3RhdGUoKS50cmFuc2Zvcm07CkBAIC0yMTk4LDE4ICsyMTc1LDYg
QEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjppbmZsYXRlU3Ryb2tlUmVjdChG
bG9hdFJlY3QmIHJlY3QpIGNvbnN0CiAgICAgcmVjdC5pbmZsYXRlKGRlbHRhKTsKIH0KIAotI2lm
IEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCi0KLVBsYXRmb3JtTGF5ZXIqIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREJhc2U6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAotewotICAgIGlmIChh
dXRvKiBidWZmZXIgPSBjYW52YXNCYXNlKCkuYnVmZmVyKCkpCi0gICAgICAgIHJldHVybiBidWZm
ZXItPnBsYXRmb3JtTGF5ZXIoKTsKLQotICAgIHJldHVybiBudWxscHRyOwotfQotCi0jZW5kaWYK
LQogc3RhdGljIGlubGluZSBJbnRlcnBvbGF0aW9uUXVhbGl0eSBzbW9vdGhpbmdUb0ludGVycG9s
YXRpb25RdWFsaXR5KEltYWdlU21vb3RoaW5nUXVhbGl0eSBxdWFsaXR5KQogewogICAgIHN3aXRj
aCAocXVhbGl0eSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5oCmluZGV4IGE5ZTU4ZWEwZjdkMzI2MDNiM2Nm
NDhlYmEwNTdlOWIzNTE1NWY0MzcuLjQ2OGVlMzg4YjYxNjJkNGZiMWEyZjc2NWFmZGEyMWE0ODk5
YjEzOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyREJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmgKQEAgLTM2OSwxMCArMzY5LDYgQEAgcHJvdGVjdGVk
OgogCiAgICAgYm9vbCBoYXNJbnZlcnRpYmxlVHJhbnNmb3JtKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gc3RhdGUoKS5oYXNJbnZlcnRpYmxlVHJhbnNmb3JtOyB9CiAKLSNpZiBFTkFCTEUoQUND
RUxFUkFURURfMkRfQ0FOVkFTKQotICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBj
b25zdCBvdmVycmlkZTsKLSNlbmRpZgotCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIE1heFNh
dmVDb3VudCA9IDEwMjQgKiAxNjsKICAgICBWZWN0b3I8U3RhdGUsIDE+IG1fc3RhdGVTdGFjazsK
ICAgICB1bnNpZ25lZCBtX3VucmVhbGl6ZWRTYXZlQ291bnQgeyAwIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9JbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0
LmNwcAppbmRleCBkZTFmNzc0Njg2MTdjNzhkMDcwZjQ3NWQyYjI0YzRkODI0NmQ0ZWE1Li41NDIw
ZjUwODRmOTExMjM5YjNmMGYxNzU2Mjc0MWFhMzg3YmFhMGNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9JbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dC5j
cHAKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEX0lNUEwoSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0KTsKIAotI2lmIFVTRShJ
T1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJTkdfU1RPUkUpIHx8IEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9D
QU5WQVMpCisjaWYgVVNFKElPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSkKIHN0YXRpYyBS
ZW5kZXJpbmdNb2RlIGJ1ZmZlclJlbmRlcmluZ01vZGUgPSBSZW5kZXJpbmdNb2RlOjpBY2NlbGVy
YXRlZDsKICNlbHNlCiBzdGF0aWMgUmVuZGVyaW5nTW9kZSBidWZmZXJSZW5kZXJpbmdNb2RlID0g
UmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0NhaXJvLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2Fpcm8uY21h
a2UKaW5kZXggZmM2YzVmM2NkMDQ2MjY5NTY2ODIyYzA4YTQ4MmNjM2JkNmE4ODNjMC4uYzFiNTM2
MDU3MTM3NzRkYzAwNmQwMjhlZGE3YzZhODIxM2Q2Y2NhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vQ2Fpcm8uY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Q2Fpcm8uY21ha2UKQEAgLTE0LDcgKzE0LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9QUklWQVRF
X0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9VdGls
aXRpZXMuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxD
YWlyby5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tl
bmQuaAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9HTFN1cmZh
Y2VCYWNrZW5kLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJv
SW1hZ2VTdXJmYWNlQmFja2VuZC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VC
dWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Q
bGF0Zm9ybUNvbnRleHRDYWlyby5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Tb3VyY2VzQ2Fpcm8udHh0IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc0NhaXJv
LnR4dAppbmRleCAyMWQ5M2QwMWE4MGMzNzc3ZDAwNGYxNjUzMWE2MWE3YTIyMTBkM2I3Li41ZjAx
NDk0ZjNjYTFlMzFkNzQ3YmY3YzdhZmI3NmFkMGNkN2Y2NzBiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9Tb3VyY2VzQ2Fpcm8udHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NvdXJjZXNDYWlyby50eHQKQEAgLTMxLDcgKzMxLDYgQEAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0R0xDYWlyby5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3Jh
cGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VC
dWZmZXJDYWlyb0JhY2tlbmQuY3BwCi1wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZl
ckNhaXJvR0xTdXJmYWNlQmFja2VuZC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdl
QnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vSW1hZ2VCdWZmZXJVdGlsaXRpZXNDYWlyby5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmgKaW5kZXggNmVjZTg5MGFhZmQ4NmI5ZjVkMjg4MTVi
ZWMyOWUxMTQ1ZTFjYmRmZC4uZTYyMjkzMTc5ODgwN2RmZjBiMDVjYzczYmUyZWI3ZWQ3MTM0N2Uw
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmgKQEAg
LTc0LDEwICs3NCw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBpc0VHTENvbnRleHQo
KSBjb25zdCA9IDA7CiAKLSNpZiBVU0UoQ0FJUk8pCi0gICAgdmlydHVhbCBjYWlyb19kZXZpY2Vf
dCogY2Fpcm9EZXZpY2UoKSA9IDA7Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShHUkFQSElDU19DT05U
RVhUX0dMKQogICAgIHZpcnR1YWwgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTCBwbGF0Zm9ybUNv
bnRleHQoKSA9IDA7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VCdWZmZXIuaAppbmRleCA3NjM4OTc4Yjg1ZTRhNzM2M2M0
MjI3ODBjNmYzN2Y2ODEzMjVkNTU1Li5iMDVmYTY1MTY5NzFkMTc2NzEzMWQ1NmE0NjM5MzUzZWY5
NGU0OTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0
Zm9ybUltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UGxhdGZvcm1JbWFnZUJ1ZmZlci5oCkBAIC0zOCw4ICszOCw2IEBACiAKICNpZiBIQVZFKElPU1VS
RkFDRSkKICNpbmNsdWRlICJJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaCIKLSNlbGlmIFVT
RShDQUlSTykgJiYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKLSNpbmNsdWRlICJJbWFn
ZUJ1ZmZlckNhaXJvR0xTdXJmYWNlQmFja2VuZC5oIgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTU0LDggKzUyLDYgQEAgdXNpbmcgVW5hY2NlbGVyYXRlZEltYWdlQnVmZmVyQmFj
a2VuZCA9IEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kOwogCiAjaWYgSEFWRShJ
T1NVUkZBQ0UpCiB1c2luZyBBY2NlbGVyYXRlZEltYWdlQnVmZmVyQmFja2VuZCA9IEltYWdlQnVm
ZmVySU9TdXJmYWNlQmFja2VuZDsKLSNlbGlmIFVTRShDQUlSTykgJiYgRU5BQkxFKEFDQ0VMRVJB
VEVEXzJEX0NBTlZBUykKLXVzaW5nIEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJCYWNrZW5kID0gSW1h
Z2VCdWZmZXJDYWlyb0dMU3VyZmFjZUJhY2tlbmQ7CiAjZWxzZQogdXNpbmcgQWNjZWxlcmF0ZWRJ
bWFnZUJ1ZmZlckJhY2tlbmQgPSBVbmFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJCYWNrZW5kOwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9D
YWlyb1V0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9DYWlyb1V0aWxpdGllcy5jcHAKaW5kZXggMDg1YzcwZGZmZDQ5NzgwOWM3NTQwM2I1ZWI0ODk3
MmQ2ODc0ZTA4Ny4uNzQ0ZGZlMWJjZjEzMTIwYzMwZGYzZWE0ZDcwMmVkYzljNzIxMThjNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9VdGls
aXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Nh
aXJvVXRpbGl0aWVzLmNwcApAQCAtNDMsMTMgKzQzLDYgQEAKICNpbmNsdWRlIDx3dGYvVW5pcXVl
QXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKLSNpZiBFTkFCTEUoQUNDRUxFUkFU
RURfMkRfQ0FOVkFTKQotI2lmIFVTRShFR0wpICYmIFVTRShMSUJFUE9YWSkKLSNpbmNsdWRlICJF
cG94eUVHTC5oIgotI2VuZGlmCi0jaW5jbHVkZSA8Y2Fpcm8tZ2wuaD4KLSNlbmRpZgotCiAjaWYg
T1MoV0lORE9XUykKICNpbmNsdWRlIDxjYWlyby13aW4zMi5oPgogI2VuZGlmCkBAIC0zMjEsMTAg
KzMxNCw2IEBAIEludFNpemUgY2Fpcm9TdXJmYWNlU2l6ZShjYWlyb19zdXJmYWNlX3QqIHN1cmZh
Y2UpCiAgICAgc3dpdGNoIChjYWlyb19zdXJmYWNlX2dldF90eXBlKHN1cmZhY2UpKSB7CiAgICAg
Y2FzZSBDQUlST19TVVJGQUNFX1RZUEVfSU1BR0U6CiAgICAgICAgIHJldHVybiBJbnRTaXplKGNh
aXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKHN1cmZhY2UpLCBjYWlyb19pbWFnZV9zdXJmYWNl
X2dldF9oZWlnaHQoc3VyZmFjZSkpOwotI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMp
Ci0gICAgY2FzZSBDQUlST19TVVJGQUNFX1RZUEVfR0w6Ci0gICAgICAgIHJldHVybiBJbnRTaXpl
KGNhaXJvX2dsX3N1cmZhY2VfZ2V0X3dpZHRoKHN1cmZhY2UpLCBjYWlyb19nbF9zdXJmYWNlX2dl
dF9oZWlnaHQoc3VyZmFjZSkpOwotI2VuZGlmCiAjaWYgT1MoV0lORE9XUykKICAgICBjYXNlIENB
SVJPX1NVUkZBQ0VfVFlQRV9XSU4zMjoKICAgICAgICAgc3VyZmFjZSA9IGNhaXJvX3dpbjMyX3N1
cmZhY2VfZ2V0X2ltYWdlKHN1cmZhY2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0dMU3VyZmFjZUJhY2tlbmQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWly
b0dMU3VyZmFjZUJhY2tlbmQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZWQw
YjA2Zjk5MDQ4Nzg1Nzg1NWNjZWYzMzVhMTFiOTk0YzZiYmJkLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9HTFN1cmZhY2VCYWNrZW5kLmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDI2OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA2IE5pa29sYXMg
WmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDA3IEhv
bGdlciBIYW5zIFBldGVyIEZyZXl0aGVyIDx6ZWNrZUBzZWxmaXNoLm9yZz4KLSAqIENvcHlyaWdo
dCAoQykgMjAwOCwgMjAwOSBEaXJrIFNjaHVsemUgPGtyaXRAd2Via2l0Lm9yZz4KLSAqIENvcHly
aWdodCAoQykgMjAxMCBUb3JjaCBNb2JpbGUgKEJlaWppbmcpIENvLiBMdGQuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkltYWdlQnVmZmVyQ2Fpcm9HTFN1cmZhY2VCYWNr
ZW5kLmgiCi0KLSNpZiBVU0UoQ0FJUk8pICYmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMp
Ci0KLSNpbmNsdWRlICJHTENvbnRleHQuaCIKLSNpbmNsdWRlICJUZXh0dXJlTWFwcGVyR0wuaCIK
LSNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgotCi0jaWYgVVNFKEVHTCkKLSNpZiBV
U0UoTElCRVBPWFkpCi0jaW5jbHVkZSAiRXBveHlFR0wuaCIKLSNlbHNlCi0jaW5jbHVkZSA8RUdM
L2VnbC5oPgotI2VuZGlmCi0jZW5kaWYKLSNpbmNsdWRlIDxjYWlyby1nbC5oPgotCi0jaWYgVVNF
KExJQkVQT1hZKQotI2luY2x1ZGUgPGVwb3h5L2dsLmg+Ci0jZWxpZiBVU0UoT1BFTkdMX0VTKQot
I2luY2x1ZGUgPEdMRVMyL2dsMi5oPgotI2Vsc2UKLSNpbmNsdWRlICJPcGVuR0xTaGltcy5oIgot
I2VuZGlmCi0KLSNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCi0jaW5jbHVkZSAiVGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuaCIKLSNpbmNsdWRlICJUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllclByb3h5LmgiCi0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1XVEZf
TUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoSW1hZ2VCdWZmZXJDYWlyb0dMU3VyZmFjZUJhY2tlbmQp
OwotCi1zdGF0aWMgaW5saW5lIHZvaWQgY2xlYXJTdXJmYWNlKGNhaXJvX3N1cmZhY2VfdCogc3Vy
ZmFjZSkKLXsKLSAgICBSZWZQdHI8Y2Fpcm9fdD4gY3IgPSBhZG9wdFJlZihjYWlyb19jcmVhdGUo
c3VyZmFjZSkpOwotICAgIGNhaXJvX3NldF9vcGVyYXRvcihjci5nZXQoKSwgQ0FJUk9fT1BFUkFU
T1JfQ0xFQVIpOwotICAgIGNhaXJvX3BhaW50KGNyLmdldCgpKTsKLX0KLQotc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVyQ2Fpcm9HTFN1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlckNhaXJvR0xT
dXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1
dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEhvc3RXaW5kb3cqKQotewot
ICAgIEludFNpemUgYmFja2VuZFNpemUgPSBjYWxjdWxhdGVCYWNrZW5kU2l6ZShzaXplLCByZXNv
bHV0aW9uU2NhbGUpOwotICAgIGlmIChiYWNrZW5kU2l6ZS5pc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybiBudWxscHRyOwotCi0gICAgYXV0byogY29udGV4dCA9IFBsYXRmb3JtRGlzcGxheTo6c2hh
cmVkRGlzcGxheUZvckNvbXBvc2l0aW5nKCkuc2hhcmluZ0dMQ29udGV4dCgpOwotICAgIGNvbnRl
eHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOwotCi0gICAgLy8gV2UgbXVzdCBnZW5lcmF0ZSB0aGUg
dGV4dHVyZSBvdXJzZWx2ZXMsIGJlY2F1c2UgdGhlcmUgaXMgbm8gQ2Fpcm8gQVBJIGZvciBleHRy
YWN0aW5nIGl0Ci0gICAgLy8gZnJvbSBhIHByZS1leGlzdGluZyBzdXJmYWNlLgotICAgIHVpbnQz
Ml90IHRleHR1cmU7Ci0gICAgZ2xHZW5UZXh0dXJlcygxLCAmdGV4dHVyZSk7Ci0gICAgZ2xCaW5k
VGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXh0dXJlKTsKLSAgICBnbFRleFBhcmFtZXRlcmYoR0xf
VEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOwotICAgIGds
VGV4UGFyYW1ldGVyZihHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBf
VE9fRURHRSk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVf
TUlOX0ZJTFRFUiwgR0xfTElORUFSKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8y
RCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9MSU5FQVIpOwotCi0gICAgZ2xQaXhlbFN0b3Jl
aShHTF9VTlBBQ0tfQUxJR05NRU5ULCAxKTsKLQotICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJF
XzJELCAwIC8qIGxldmVsICovLCBHTF9SR0JBLCBiYWNrZW5kU2l6ZS53aWR0aCgpLCBiYWNrZW5k
U2l6ZS5oZWlnaHQoKSwgMCAvKiBib3JkZXIgKi8sIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUs
IDApOwotCi0gICAgY2Fpcm9fZGV2aWNlX3QqIGRldmljZSA9IGNvbnRleHQtPmNhaXJvRGV2aWNl
KCk7Ci0KLSAgICAvLyBUaHJlYWQtYXdhcmVuZXNzIGlzIGEgaHVnZSBwZXJmb3JtYW5jZSBoaXQg
b24gbm9uLUludGVsIGRyaXZlcnMuCi0gICAgY2Fpcm9fZ2xfZGV2aWNlX3NldF90aHJlYWRfYXdh
cmUoZGV2aWNlLCBGQUxTRSk7Ci0KLSAgICBhdXRvIHN1cmZhY2UgPSBhZG9wdFJlZihjYWlyb19n
bF9zdXJmYWNlX2NyZWF0ZV9mb3JfdGV4dHVyZShkZXZpY2UsIENBSVJPX0NPTlRFTlRfQ09MT1Jf
QUxQSEEsIHRleHR1cmUsIGJhY2tlbmRTaXplLndpZHRoKCksIGJhY2tlbmRTaXplLmhlaWdodCgp
KSk7Ci0gICAgaWYgKGNhaXJvX3N1cmZhY2Vfc3RhdHVzKHN1cmZhY2UuZ2V0KCkpICE9IENBSVJP
X1NUQVRVU19TVUNDRVNTKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGNsZWFyU3Vy
ZmFjZShzdXJmYWNlLmdldCgpKTsKLQotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VC
dWZmZXJDYWlyb0dMU3VyZmFjZUJhY2tlbmQ+KG5ldyBJbWFnZUJ1ZmZlckNhaXJvR0xTdXJmYWNl
QmFja2VuZChzaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBX
VEZNb3ZlKHN1cmZhY2UpLCB0ZXh0dXJlKSk7Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlckNhaXJvR0xTdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJDYWlyb0dMU3VyZmFjZUJhY2tl
bmQ6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYp
Ci17Ci0gICAgcmV0dXJuIEltYWdlQnVmZmVyQ2Fpcm9HTFN1cmZhY2VCYWNrZW5kOjpjcmVhdGUo
c2l6ZSwgMSwgQ29sb3JTcGFjZTo6U1JHQiwgbnVsbHB0cik7Ci19Ci0KLUltYWdlQnVmZmVyQ2Fp
cm9HTFN1cmZhY2VCYWNrZW5kOjpJbWFnZUJ1ZmZlckNhaXJvR0xTdXJmYWNlQmFja2VuZChjb25z
dCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxv
YXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFJlZlB0cjxjYWlyb19z
dXJmYWNlX3Q+JiYgc3VyZmFjZSwgdWludDMyX3QgdGV4dHVyZSkKLSAgICA6IEltYWdlQnVmZmVy
Q2Fpcm9TdXJmYWNlQmFja2VuZChsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25T
Y2FsZSwgY29sb3JTcGFjZSwgV1RGTW92ZShzdXJmYWNlKSkKLSAgICAsIG1fdGV4dHVyZSh0ZXh0
dXJlKQotewotI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKLSNpZiBVU0UoTklDT1NJQSkK
LSAgICBtX25pY29zaWFMYXllciA9IE5pY29zaWE6OkNvbnRlbnRMYXllcjo6Y3JlYXRlKE5pY29z
aWE6OkNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsOjpjcmVhdGVGYWN0b3J5KCp0aGlzKSk7
Ci0jZWxzZQotICAgIG1fcGxhdGZvcm1MYXllclByb3h5ID0gYWRvcHRSZWYobmV3IFRleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyUHJveHkpOwotI2VuZGlmCi0jZW5kaWYKLX0KLQotSW1hZ2VCdWZm
ZXJDYWlyb0dMU3VyZmFjZUJhY2tlbmQ6On5JbWFnZUJ1ZmZlckNhaXJvR0xTdXJmYWNlQmFja2Vu
ZCgpCi17Ci0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKSAmJiBVU0UoTklDT1NJQSkKLSAg
ICBkb3duY2FzdDxOaWNvc2lhOjpDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbD4obV9uaWNv
c2lhTGF5ZXItPmltcGwoKSkuaW52YWxpZGF0ZUNsaWVudCgpOwotI2VuZGlmCi0KLSAgICBHTENv
bnRleHQqIHByZXZpb3VzQWN0aXZlQ29udGV4dCA9IEdMQ29udGV4dDo6Y3VycmVudCgpOwotICAg
IFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheUZvckNvbXBvc2l0aW5nKCkuc2hhcmluZ0dM
Q29udGV4dCgpLT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKLQotICAgIGlmIChtX3RleHR1cmUpCi0g
ICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJm1fdGV4dHVyZSk7Ci0KLSNpZiBVU0UoQ09PUkRJ
TkFURURfR1JBUEhJQ1MpCi0gICAgaWYgKG1fY29tcG9zaXRvclRleHR1cmUpCi0gICAgICAgIGds
RGVsZXRlVGV4dHVyZXMoMSwgJm1fY29tcG9zaXRvclRleHR1cmUpOwotI2VuZGlmCi0KLSAgICBp
ZiAocHJldmlvdXNBY3RpdmVDb250ZXh0KQotICAgICAgICBwcmV2aW91c0FjdGl2ZUNvbnRleHQt
Pm1ha2VDb250ZXh0Q3VycmVudCgpOwotfQotCi1QbGF0Zm9ybUxheWVyKiBJbWFnZUJ1ZmZlckNh
aXJvR0xTdXJmYWNlQmFja2VuZDo6cGxhdGZvcm1MYXllcigpIGNvbnN0Ci17Ci0jaWYgVVNFKE5J
Q09TSUEpCi0gICAgcmV0dXJuIG1fbmljb3NpYUxheWVyLmdldCgpOwotI2Vsc2UKLSAgICBpZiAo
bV90ZXh0dXJlKQotICAgICAgICByZXR1cm4gdGhpczsKLSNlbmRpZgotICAgIHJldHVybiBudWxs
cHRyOwotfQotCi1ib29sIEltYWdlQnVmZmVyQ2Fpcm9HTFN1cmZhY2VCYWNrZW5kOjpjb3B5VG9Q
bGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wmLCBHQ0dMZW51bSB0YXJnZXQs
IFBsYXRmb3JtR0xPYmplY3QgZGVzdGluYXRpb25UZXh0dXJlLCBHQ0dMZW51bSBpbnRlcm5hbGZv
cm1hdCwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKSBjb25zdAotewotICAgIEFT
U0VSVF9XSVRIX01FU1NBR0UobV9yZXNvbHV0aW9uU2NhbGUgPT0gMS4wLCAiU2luY2UgdGhlIEhp
RFBJIENhbnZhcyBmZWF0dXJlIGlzIHJlbW92ZWQsIHRoZSByZXNvbHV0aW9uIGZhY3RvciBoZXJl
IGlzIGFsd2F5cyAxLiIpOwotICAgIGlmIChwcmVtdWx0aXBseUFscGhhIHx8IGZsaXBZKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIW1fdGV4dHVyZSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgR0NHTGVudW0gYmluZFRleHR1cmVUYXJnZXQ7Ci0gICAgc3dpdGNoICh0
YXJnZXQpIHsKLSAgICBjYXNlIEdMX1RFWFRVUkVfMkQ6Ci0gICAgICAgIGJpbmRUZXh0dXJlVGFy
Z2V0ID0gR0xfVEVYVFVSRV8yRDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHTF9URVhUVVJF
X0NVQkVfTUFQX1BPU0lUSVZFX1g6Ci0gICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FU
SVZFX1g6Ci0gICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1k6Ci0gICAgY2Fz
ZSBHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1k6Ci0gICAgY2FzZSBHTF9URVhUVVJFX0NV
QkVfTUFQX1BPU0lUSVZFX1o6Ci0gICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZF
X1o6Ci0gICAgICAgIGJpbmRUZXh0dXJlVGFyZ2V0ID0gR0xfVEVYVFVSRV9DVUJFX01BUDsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LQotICAgIGNhaXJvX3N1cmZhY2VfZmx1c2gobV9zdXJmYWNlLmdldCgpKTsKLQotICAgIHN0ZDo6
dW5pcXVlX3B0cjxHTENvbnRleHQ+IGNvbnRleHQgPSBHTENvbnRleHQ6OmNyZWF0ZU9mZnNjcmVl
bkNvbnRleHQoJlBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheUZvckNvbXBvc2l0aW5nKCkp
OwotICAgIGNvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIHVpbnQzMl90IGZibzsK
LSAgICBnbEdlbkZyYW1lYnVmZmVycygxLCAmZmJvKTsKLSAgICBnbEJpbmRGcmFtZWJ1ZmZlcihH
TF9GUkFNRUJVRkZFUiwgZmJvKTsKLSAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1F
QlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgbV90ZXh0dXJlLCAw
KTsKLSAgICBnbEJpbmRUZXh0dXJlKGJpbmRUZXh0dXJlVGFyZ2V0LCBkZXN0aW5hdGlvblRleHR1
cmUpOwotICAgIGdsQ29weVRleEltYWdlMkQodGFyZ2V0LCAwLCBpbnRlcm5hbGZvcm1hdCwgMCwg
MCwgbV9iYWNrZW5kU2l6ZS53aWR0aCgpLCBtX2JhY2tlbmRTaXplLmhlaWdodCgpLCAwKTsKLSAg
ICBnbEJpbmRUZXh0dXJlKGJpbmRUZXh0dXJlVGFyZ2V0LCAwKTsKLSAgICBnbEJpbmRGcmFtZWJ1
ZmZlcihHTF9GUkFNRUJVRkZFUiwgMCk7Ci0gICAgZ2xGbHVzaCgpOwotICAgIGdsRGVsZXRlRnJh
bWVidWZmZXJzKDEsICZmYm8pOwotICAgIHJldHVybiB0cnVlOwotfQotCi0jaWYgVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTKQotdm9pZCBJbWFnZUJ1ZmZlckNhaXJvR0xTdXJmYWNlQmFja2VuZDo6
Y3JlYXRlQ29tcG9zaXRvckJ1ZmZlcigpCi17Ci0gICAgYXV0byogY29udGV4dCA9IFBsYXRmb3Jt
RGlzcGxheTo6c2hhcmVkRGlzcGxheUZvckNvbXBvc2l0aW5nKCkuc2hhcmluZ0dMQ29udGV4dCgp
OwotICAgIGNvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOwotCi0gICAgZ2xHZW5UZXh0dXJl
cygxLCAmbV9jb21wb3NpdG9yVGV4dHVyZSk7Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJF
XzJELCBtX2NvbXBvc2l0b3JUZXh0dXJlKTsKLSAgICBnbFRleFBhcmFtZXRlcmYoR0xfVEVYVFVS
RV8yRCwgR0xfVEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOwotICAgIGdsVGV4UGFy
YW1ldGVyZihHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURH
RSk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJ
TFRFUiwgR0xfTElORUFSKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xf
VEVYVFVSRV9NQUdfRklMVEVSLCBHTF9MSU5FQVIpOwotICAgIGdsUGl4ZWxTdG9yZWkoR0xfVU5Q
QUNLX0FMSUdOTUVOVCwgMSk7Ci0gICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAgLCBH
TF9SR0JBLCBtX2JhY2tlbmRTaXplLndpZHRoKCksIG1fYmFja2VuZFNpemUuaGVpZ2h0KCksIDAs
IEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIDApOwotCi0gICAgbV9jb21wb3NpdG9yU3VyZmFj
ZSA9IGFkb3B0UmVmKGNhaXJvX2dsX3N1cmZhY2VfY3JlYXRlX2Zvcl90ZXh0dXJlKGNvbnRleHQt
PmNhaXJvRGV2aWNlKCksIENBSVJPX0NPTlRFTlRfQ09MT1JfQUxQSEEsIG1fY29tcG9zaXRvclRl
eHR1cmUsIG1fYmFja2VuZFNpemUud2lkdGgoKSwgbV9iYWNrZW5kU2l6ZS5oZWlnaHQoKSkpOwot
ICAgIG1fY29tcG9zaXRvckNyID0gYWRvcHRSZWYoY2Fpcm9fY3JlYXRlKG1fY29tcG9zaXRvclN1
cmZhY2UuZ2V0KCkpKTsKLSAgICBjYWlyb19zZXRfYW50aWFsaWFzKG1fY29tcG9zaXRvckNyLmdl
dCgpLCBDQUlST19BTlRJQUxJQVNfTk9ORSk7Ci19Ci0KLXZvaWQgSW1hZ2VCdWZmZXJDYWlyb0dM
U3VyZmFjZUJhY2tlbmQ6OnN3YXBCdWZmZXJzSWZOZWVkZWQoKQotewotICAgIEdMQ29udGV4dCog
cHJldmlvdXNBY3RpdmVDb250ZXh0ID0gR0xDb250ZXh0OjpjdXJyZW50KCk7Ci0KLSAgICBpZiAo
IW1fY29tcG9zaXRvclRleHR1cmUpIHsKLSAgICAgICAgY3JlYXRlQ29tcG9zaXRvckJ1ZmZlcigp
OwotCi0gICAgICAgIGF1dG8gcHJveHlPcGVyYXRpb24gPQotICAgICAgICAgICAgW3RoaXNdKFRl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkmIHByb3h5KQotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIExvY2tIb2xkZXIgaG9sZGVyKHByb3h5LmxvY2soKSk7Ci0gICAgICAgICAg
ICAgICAgcHJveHkucHVzaE5leHRCdWZmZXIobWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllckJ1ZmZlcj4obV9jb21wb3NpdG9yVGV4dHVyZSwgbV9iYWNrZW5kU2l6ZSwgVGV4dHVy
ZU1hcHBlckdMOjpTaG91bGRCbGVuZCwgR0xfUkdCQSkpOwotICAgICAgICAgICAgfTsKLSNpZiBV
U0UoTklDT1NJQSkKLSAgICAgICAgcHJveHlPcGVyYXRpb24oZG93bmNhc3Q8Tmljb3NpYTo6Q29u
dGVudExheWVyVGV4dHVyZU1hcHBlckltcGw+KG1fbmljb3NpYUxheWVyLT5pbXBsKCkpLnByb3h5
KCkpOwotI2Vsc2UKLSAgICAgICAgcHJveHlPcGVyYXRpb24oKm1fcGxhdGZvcm1MYXllclByb3h5
KTsKLSNlbmRpZgotICAgIH0KLQotICAgIC8vIEl0IHdvdWxkIGJlIGdyZWF0IGlmIHdlIGNvdWxk
IGp1c3Qgc3dhcCB0aGUgYnVmZmVycyBoZXJlIGFzIHdlIGRvIHdpdGggd2ViZ2wsIGJ1dCB0aGF0
IGJyZWFrcyB0aGUgY2FzZXMKLSAgICAvLyB3aGVyZSBvbmUgZnJhbWUgdXNlcyB0aGUgY29udGVu
dCBhbHJlYWR5IHJlbmRlcmVkIGluIHRoZSBwcmV2aW91cyBmcmFtZS4gU28gd2UganVzdCBjb3B5
IHRoZSBjb250ZW50Ci0gICAgLy8gaW50byB0aGUgY29tcG9zaXRvciBidWZmZXIuCi0gICAgY2Fp
cm9fc2V0X3NvdXJjZV9zdXJmYWNlKG1fY29tcG9zaXRvckNyLmdldCgpLCBtX3N1cmZhY2UuZ2V0
KCksIDAsIDApOwotICAgIGNhaXJvX3NldF9vcGVyYXRvcihtX2NvbXBvc2l0b3JDci5nZXQoKSwg
Q0FJUk9fT1BFUkFUT1JfU09VUkNFKTsKLSAgICBjYWlyb19wYWludChtX2NvbXBvc2l0b3JDci5n
ZXQoKSk7Ci0KLSAgICBpZiAocHJldmlvdXNBY3RpdmVDb250ZXh0KQotICAgICAgICBwcmV2aW91
c0FjdGl2ZUNvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOwotfQotI2Vsc2UKLXZvaWQgSW1h
Z2VCdWZmZXJDYWlyb0dMU3VyZmFjZUJhY2tlbmQ6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1
cmVNYXBwZXImIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgZmxvYXQgb3BhY2l0eSkKLXsKLSAgICBB
U1NFUlQobV90ZXh0dXJlKTsKLQotICAgIC8vIENhaXJvIG1heSBjaGFuZ2UgdGhlIGFjdGl2ZSBj
b250ZXh0LCBzbyB3ZSBtYWtlIHN1cmUgdG8gY2hhbmdlIGl0IGJhY2sgYWZ0ZXIgZmx1c2hpbmcu
Ci0gICAgR0xDb250ZXh0KiBwcmV2aW91c0FjdGl2ZUNvbnRleHQgPSBHTENvbnRleHQ6OmN1cnJl
bnQoKTsKLSAgICBjYWlyb19zdXJmYWNlX2ZsdXNoKG1fc3VyZmFjZS5nZXQoKSk7Ci0gICAgcHJl
dmlvdXNBY3RpdmVDb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKLQotICAgIHN0YXRpY19j
YXN0PFRleHR1cmVNYXBwZXJHTCY+KHRleHR1cmVNYXBwZXIpLmRyYXdUZXh0dXJlKG1fdGV4dHVy
ZSwgVGV4dHVyZU1hcHBlckdMOjpTaG91bGRCbGVuZCwgbV9iYWNrZW5kU2l6ZSwgdGFyZ2V0UmVj
dCwgbWF0cml4LCBvcGFjaXR5KTsKLX0KLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZiAvLyBVU0UoQ0FJUk8pICYmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFn
ZUJ1ZmZlckNhaXJvR0xTdXJmYWNlQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0dMU3VyZmFjZUJhY2tlbmQuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGZjYjZjYjM3NjM0NTIwMGU5OWE3NGZmMGY1YzYyMTMx
NGM3ZmZkZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvR0xT
dXJmYWNlQmFja2VuZC5oCisrKyAvZGV2L251bGwKQEAgLTEsOTEgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4K
LSAqIENvcHlyaWdodCAoQykgMjAwNyBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlciA8emVja2VA
c2VsZmlzaC5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgRGlyayBTY2h1bHplIDxr
cml0QHdlYmtpdC5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgVG9yY2ggTW9iaWxlIChCZWlq
aW5nKSBDby4gTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgVVNFKENBSVJPKSAmJiBF
TkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQotCi0jaW5jbHVkZSAiSW1hZ2VCdWZmZXJDYWly
b1N1cmZhY2VCYWNrZW5kLmgiCi0jaW5jbHVkZSA8d3RmL0lzb01hbGxvYy5oPgotCi0jaWYgVVNF
KE5JQ09TSUEpCi0jaW5jbHVkZSAiTmljb3NpYUNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBs
LmgiCi0jZWxzZQotI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKLSNlbmRpZgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEltYWdlQnVmZmVyQ2Fpcm9HTFN1cmZhY2VCYWNrZW5kCi0j
aWYgVVNFKE5JQ09TSUEpCi0gICAgOiBwdWJsaWMgTmljb3NpYTo6Q29udGVudExheWVyVGV4dHVy
ZU1hcHBlckltcGw6OkNsaWVudAotI2Vsc2UKLSAgICA6IHB1YmxpYyBQbGF0Zm9ybUxheWVyCi0j
ZW5kaWYKLSAgICAsIHB1YmxpYyBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQgewotICAg
IFdURl9NQUtFX0lTT19BTExPQ0FURUQoSW1hZ2VCdWZmZXJDYWlyb0dMU3VyZmFjZUJhY2tlbmQp
OwotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEltYWdlQnVmZmVyQ2Fpcm9HTFN1cmZhY2VCYWNr
ZW5kKTsKLXB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ2Fp
cm9HTFN1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiwgZmxvYXQgcmVzb2x1
dGlvblNjYWxlLCBDb2xvclNwYWNlLCBjb25zdCBIb3N0V2luZG93Kik7Ci0gICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNhaXJvR0xTdXJmYWNlQmFja2VuZD4gY3JlYXRlKGNv
bnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwotCi0gICAgfkltYWdlQnVm
ZmVyQ2Fpcm9HTFN1cmZhY2VCYWNrZW5kKCk7Ci0KLSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9y
bUxheWVyKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBjb3B5VG9QbGF0Zm9ybVRleHR1cmUo
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wmLCBHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmpl
Y3QgZGVzdGluYXRpb25UZXh0dXJlLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgYm9vbCBwcmVt
dWx0aXBseUFscGhhLCBib29sIGZsaXBZKSBjb25zdCBvdmVycmlkZTsKLQotcHJpdmF0ZToKLSAg
ICBJbWFnZUJ1ZmZlckNhaXJvR0xTdXJmYWNlQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2lj
YWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxl
LCBDb2xvclNwYWNlLCBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiYmLCB1aW50MzJfdCB0ZXh0dXJl
KTsKLQotI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKLSAgICB2b2lkIGNyZWF0ZUNvbXBv
c2l0b3JCdWZmZXIoKTsKLSAgICB2b2lkIHN3YXBCdWZmZXJzSWZOZWVkZWQoKSBvdmVycmlkZTsK
LSNpZiAhVVNFKE5JQ09TSUEpCi0gICAgUmVmUHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
UHJveHk+IHByb3h5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9wbGF0Zm9ybUxheWVyUHJv
eHkuY29weVJlZigpOyB9Ci0jZW5kaWYKLSNlbHNlCi0gICAgdm9pZCBwYWludFRvVGV4dHVyZU1h
cHBlcihUZXh0dXJlTWFwcGVyJiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXQsIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiwgZmxvYXQgb3BhY2l0eSk7Ci0jZW5kaWYKLQotI2lmIFVTRShDT09S
RElOQVRFRF9HUkFQSElDUykKLSNpZiBVU0UoTklDT1NJQSkKLSAgICBSZWZQdHI8Tmljb3NpYTo6
Q29udGVudExheWVyPiBtX25pY29zaWFMYXllcjsKLSNlbHNlCi0gICAgUmVmUHRyPFRleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyUHJveHk+IG1fcGxhdGZvcm1MYXllclByb3h5OwotI2VuZGlmCi0g
ICAgdWludDMyX3QgbV90ZXh0dXJlIHsgMCB9OwotICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+
IG1fY29tcG9zaXRvclN1cmZhY2U7Ci0gICAgUmVmUHRyPGNhaXJvX3Q+IG1fY29tcG9zaXRvckNy
OwotICAgIHVpbnQzMl90IG1fY29tcG9zaXRvclRleHR1cmUgeyAwIH07Ci0jZW5kaWYKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFVTRShDQUlSTykgJiYgRU5BQkxF
KEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHAKaW5kZXggNmY0MGUzYTRkMDUzNGRmYzJk
MTUwNDUwMmNiNWY4MzZjNWM0YjAyOS4uM2E3YTA3MjYwN2JhYjVmNjA5ODcyNzFhYThlNjNhNmJl
ZTE0Y2QzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWds
L0dMQ29udGV4dEVHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZWdsL0dMQ29udGV4dEVHTC5jcHAKQEAgLTQ1LDE0ICs0NSw2IEBACiAjaW5jbHVkZSAiT3BlbkdM
U2hpbXMuaCIKICNlbmRpZgogCi0jaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKLS8v
IGNhaXJvLWdsLmggaW5jbHVkZXMgc29tZSBkZWZpbml0aW9ucyBmcm9tIEdMWCB0aGF0IGNvbmZs
aWN0IHdpdGgKLS8vIHRoZSBvbmVzIHByb3ZpZGVkIGJ5IHVzLiBTaW5jZSBHTENvbnRleHRFR0wg
ZG9lc24ndCB1c2UgYW55IEdMWAotLy8gZnVuY3Rpb25zIHdlIGNhbiBzYWZlbHkgZGlzYWJsZSB0
aGVtLgotI3VuZGVmIENBSVJPX0hBU19HTFhfRlVOQ1RJT05TCi0jaW5jbHVkZSA8Y2Fpcm8tZ2wu
aD4KLSNlbmRpZgotCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC0zNzUsMTEgKzM2Nyw2IEBAIEdMQ29udGV4dEVHTDo6R0xDb250ZXh0RUdMKFBsYXRm
b3JtRGlzcGxheSYgZGlzcGxheSwgRUdMQ29udGV4dCBjb250ZXh0LCBFR0xTdXJmCiAKIEdMQ29u
dGV4dEVHTDo6fkdMQ29udGV4dEVHTCgpCiB7Ci0jaWYgVVNFKENBSVJPKQotICAgIGlmIChtX2Nh
aXJvRGV2aWNlKQotICAgICAgICBjYWlyb19kZXZpY2VfZGVzdHJveShtX2NhaXJvRGV2aWNlKTsK
LSNlbmRpZgotCiAgICAgRUdMRGlzcGxheSBkaXNwbGF5ID0gbV9kaXNwbGF5LmVnbERpc3BsYXko
KTsKICAgICBpZiAobV9jb250ZXh0KSB7CiAgICAgICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZS
QU1FQlVGRkVSLCAwKTsKQEAgLTUwNCwyMCArNDkxLDYgQEAgdm9pZCBHTENvbnRleHRFR0w6OnN3
YXBJbnRlcnZhbChpbnQgaW50ZXJ2YWwpCiAgICAgZWdsU3dhcEludGVydmFsKG1fZGlzcGxheS5l
Z2xEaXNwbGF5KCksIGludGVydmFsKTsKIH0KIAotI2lmIFVTRShDQUlSTykKLWNhaXJvX2Rldmlj
ZV90KiBHTENvbnRleHRFR0w6OmNhaXJvRGV2aWNlKCkKLXsKLSAgICBpZiAobV9jYWlyb0Rldmlj
ZSkKLSAgICAgICAgcmV0dXJuIG1fY2Fpcm9EZXZpY2U7Ci0KLSNpZiBFTkFCTEUoQUNDRUxFUkFU
RURfMkRfQ0FOVkFTKQotICAgIG1fY2Fpcm9EZXZpY2UgPSBjYWlyb19lZ2xfZGV2aWNlX2NyZWF0
ZShtX2Rpc3BsYXkuZWdsRGlzcGxheSgpLCBtX2NvbnRleHQpOwotI2VuZGlmCi0KLSAgICByZXR1
cm4gbV9jYWlyb0RldmljZTsKLX0KLSNlbmRpZgotCiAjaWYgRU5BQkxFKEdSQVBISUNTX0NPTlRF
WFRfR0wpCiBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMIEdMQ29udGV4dEVHTDo6cGxhdGZvcm1D
b250ZXh0KCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2VnbC9HTENvbnRleHRFR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Vn
bC9HTENvbnRleHRFR0wuaAppbmRleCA5ZGE2MzIyMDg2MWIzNjMzNjcwOWYyMWU5NWM0MTc1NmI4
ODE3YzJjLi4xYjU0YmI5NWI0ZWNlMzI0N2NmZDZlNDgyZGI3OWI3NjIwZDNkYjMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5o
CkBAIC02Myw5ICs2Myw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBjYW5SZW5kZXJUb0RlZmF1bHRG
cmFtZWJ1ZmZlcigpIG92ZXJyaWRlOwogICAgIEludFNpemUgZGVmYXVsdEZyYW1lQnVmZmVyU2l6
ZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgc3dhcEludGVydmFsKGludCkgb3ZlcnJpZGU7Ci0jaWYg
VVNFKENBSVJPKQotICAgIGNhaXJvX2RldmljZV90KiBjYWlyb0RldmljZSgpIG92ZXJyaWRlOwot
I2VuZGlmCiAgICAgYm9vbCBpc0VHTENvbnRleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CiAKICNpZiBFTkFCTEUoR1JBUEhJQ1NfQ09OVEVYVF9HTCkKQEAgLTExOCw5ICsxMTUs
NiBAQCBwcml2YXRlOgogI2lmIFVTRShXUEVfUkVOREVSRVIpCiAgICAgc3RydWN0IHdwZV9yZW5k
ZXJlcl9iYWNrZW5kX2VnbF9vZmZzY3JlZW5fdGFyZ2V0KiBtX3dwZVRhcmdldCB7IG51bGxwdHIg
fTsKICNlbmRpZgotI2lmIFVTRShDQUlSTykKLSAgICBjYWlyb19kZXZpY2VfdCogbV9jYWlyb0Rl
dmljZSB7IG51bGxwdHIgfTsKLSNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4
dEdMWC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0
R0xYLmNwcAppbmRleCBhMDZmZjllYjkzYzM4ODRhYjYwNmZmZjljNmE4M2FiOTNkODhjN2U3Li5j
MmNhNGUwYzlmMDYzODQ0YzIzN2IzMjlhNTliYzNmNDZkYmQ4NGQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmNwcApAQCAt
MjYsMTAgKzI2LDYgQEAKICNpbmNsdWRlIDxHTC9nbHguaD4KICNpbmNsdWRlIDxjYWlyby5oPgog
Ci0jaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKLSNpbmNsdWRlIDxjYWlyby1nbC5o
PgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmICFkZWZpbmVkKFBGTkdMWFNX
QVBJTlRFUlZBTFNHSVBST0MpCkBAIC0zMjUsOSArMzIxLDYgQEAgR0xDb250ZXh0R0xYOjpHTENv
bnRleHRHTFgoUGxhdGZvcm1EaXNwbGF5JiBkaXNwbGF5LCBYVW5pcXVlR0xYQ29udGV4dCYmIGNv
bnRleHQKIAogR0xDb250ZXh0R0xYOjp+R0xDb250ZXh0R0xYKCkKIHsKLSAgICBpZiAobV9jYWly
b0RldmljZSkKLSAgICAgICAgY2Fpcm9fZGV2aWNlX2Rlc3Ryb3kobV9jYWlyb0RldmljZSk7Ci0K
ICAgICBpZiAobV9jb250ZXh0KSB7CiAgICAgICAgIC8vIER1ZSB0byBhIGJ1ZyBpbiBzb21lIG52
aWRpYSBkcml2ZXJzLCB3ZSBuZWVkIGJpbmQgdGhlIGRlZmF1bHQgZnJhbWVidWZmZXIgaW4gYSBj
b250ZXh0IGJlZm9yZQogICAgICAgICAvLyBkZXN0cm95aW5nIGl0IHRvIGF2b2lkIGEgY3Jhc2gu
IEluIG9yZGVyIHRvIGRvIHRoYXQsIHdlIG5lZWQgdG8gbWFrZSB0aGUgY29udGV4dCBjdXJyZW50
IGFuZCwKQEAgLTQwMSwxOCArMzk0LDYgQEAgdm9pZCBHTENvbnRleHRHTFg6OnN3YXBJbnRlcnZh
bChpbnQgaW50ZXJ2YWwpCiAgICAgZ2xYU3dhcEludGVydmFsU0dJKGludGVydmFsKTsKIH0KIAot
Y2Fpcm9fZGV2aWNlX3QqIEdMQ29udGV4dEdMWDo6Y2Fpcm9EZXZpY2UoKQotewotICAgIGlmICht
X2NhaXJvRGV2aWNlKQotICAgICAgICByZXR1cm4gbV9jYWlyb0RldmljZTsKLQotI2lmIEVOQUJM
RShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICYmIENBSVJPX0hBU19HTFhfRlVOQ1RJT05TCi0gICAg
bV9jYWlyb0RldmljZSA9IGNhaXJvX2dseF9kZXZpY2VfY3JlYXRlKG1feDExRGlzcGxheSwgbV9j
b250ZXh0LmdldCgpKTsKLSNlbmRpZgotCi0gICAgcmV0dXJuIG1fY2Fpcm9EZXZpY2U7Ci19Ci0K
ICNpZiBFTkFCTEUoR1JBUEhJQ1NfQ09OVEVYVF9HTCkKIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0
R0wgR0xDb250ZXh0R0xYOjpwbGF0Zm9ybUNvbnRleHQoKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5oCmluZGV4IDRjNzJhODM4
YTczZWU0MDc3YzIzMGMyZjY5NzcyOTc5Njk2ODM4YzcuLjFiNWQzNWY2NmZjZDY4YWMyOWU4ZTkw
M2NiZWI0YzU2YzQ4MjA5MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dseC9HTENvbnRleHRHTFguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmgKQEAgLTQ3LDcgKzQ3LDYgQEAgcHJpdmF0ZToKICAg
ICBib29sIGNhblJlbmRlclRvRGVmYXVsdEZyYW1lYnVmZmVyKCkgb3ZlcnJpZGU7CiAgICAgSW50
U2l6ZSBkZWZhdWx0RnJhbWVCdWZmZXJTaXplKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzd2FwSW50
ZXJ2YWwoaW50KSBvdmVycmlkZTsKLSAgICBjYWlyb19kZXZpY2VfdCogY2Fpcm9EZXZpY2UoKSBv
dmVycmlkZTsKICAgICBib29sIGlzRUdMQ29udGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9CiAKICNpZiBFTkFCTEUoR1JBUEhJQ1NfQ09OVEVYVF9HTCkKQEAgLTY4LDcgKzY3
LDYgQEAgcHJpdmF0ZToKICAgICBYVW5pcXVlR0xYUGJ1ZmZlciBtX3BidWZmZXI7CiAgICAgWFVu
aXF1ZVBpeG1hcCBtX3BpeG1hcDsKICAgICBYVW5pcXVlR0xYUGl4bWFwIG1fZ2x4UGl4bWFwOwot
ICAgIGNhaXJvX2RldmljZV90KiBtX2NhaXJvRGV2aWNlIHsgbnVsbHB0ciB9OwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L1RleHR1cmUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNTRkZjI0
ZDJiZjJhZWNmOWE5YjBiMzhkN2QxOGVjYzRhZjVkMDljLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9UZXh0dXJlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIyNCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChjKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0
cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0g
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCi0KLSNpbmNs
dWRlICJUZXh0dXJlLmgiCi0KLSNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKLSNpbmNsdWRlICJG
bG9hdFJlY3QuaCIKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIgotI2luY2x1
ZGUgIkludFJlY3QuaCIKLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLVRleHR1cmU6OlRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRl
eHQsIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8dW5zaWduZWQ+PiB0aWxlVGV4dHVyZUlkcywgRm9y
bWF0IGZvcm1hdCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgbWF4VGV4dHVyZVNpemUpCi0g
ICAgOiBtX2NvbnRleHQoY29udGV4dCkKLSAgICAsIG1fZm9ybWF0KGZvcm1hdCkKLSAgICAsIG1f
dGlsZXMoSW50U2l6ZShtYXhUZXh0dXJlU2l6ZSwgbWF4VGV4dHVyZVNpemUpLCBJbnRTaXplKHdp
ZHRoLCBoZWlnaHQpLCB0cnVlKQotICAgICwgbV90aWxlVGV4dHVyZUlkcyhXVEZNb3ZlKHRpbGVU
ZXh0dXJlSWRzKSkKLXsKLX0KLQotVGV4dHVyZTo6flRleHR1cmUoKQotewotICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBtX3RpbGVUZXh0dXJlSWRzLT5zaXplKCk7IGkrKykKLSAgICAgICAg
bV9jb250ZXh0LT5kZWxldGVUZXh0dXJlKG1fdGlsZVRleHR1cmVJZHMtPmF0KGkpKTsKLX0KLQot
c3RhdGljIHZvaWQgY29udmVydEZvcm1hdChHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4
dCwgVGV4dHVyZTo6Rm9ybWF0IGZvcm1hdCwgdW5zaWduZWQqIGdsRm9ybWF0LCB1bnNpZ25lZCog
Z2xUeXBlLCBib29sKiBzd2l6emxlKQotewotICAgICpzd2l6emxlID0gZmFsc2U7Ci0gICAgc3dp
dGNoIChmb3JtYXQpIHsKLSAgICBjYXNlIFRleHR1cmU6OlJHQkE4OgotICAgICAgICAqZ2xGb3Jt
YXQgPSBHcmFwaGljc0NvbnRleHRHTDo6UkdCQTsKLSAgICAgICAgKmdsVHlwZSA9IEdyYXBoaWNz
Q29udGV4dEdMOjpVTlNJR05FRF9CWVRFOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFRleHR1
cmU6OkJHUkE4OgotICAgICAgICBpZiAoY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRz
KCJHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgiKSkgewotICAgICAgICAgICAgKmdsRm9y
bWF0ID0gRXh0ZW5zaW9uc0dMOjpCR1JBX0VYVDsKLSAgICAgICAgICAgICpnbFR5cGUgPSBHcmFw
aGljc0NvbnRleHRHTDo6VU5TSUdORURfQllURTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICpnbEZvcm1hdCA9IEdyYXBoaWNzQ29udGV4dEdMOjpSR0JBOwotICAgICAgICAgICAgKmds
VHlwZSA9IEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJR05FRF9CWVRFOwotICAgICAgICAgICAgKnN3
aXp6bGUgPSB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0g
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBicmVhazsKLSAgICB9Ci19Ci0K
LVJlZlB0cjxUZXh0dXJlPiBUZXh0dXJlOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wq
IGNvbnRleHQsIEZvcm1hdCBmb3JtYXQsIGludCB3aWR0aCwgaW50IGhlaWdodCkKLXsKLSAgICBp
bnQgbWF4VGV4dHVyZVNpemUgPSAwOwotICAgIGNvbnRleHQtPmdldEludGVnZXJ2KEdyYXBoaWNz
Q29udGV4dEdMOjpNQVhfVEVYVFVSRV9TSVpFLCAmbWF4VGV4dHVyZVNpemUpOwotICAgIFRpbGlu
Z0RhdGEgdGlsaW5nKEludFNpemUobWF4VGV4dHVyZVNpemUsIG1heFRleHR1cmVTaXplKSwgSW50
U2l6ZSh3aWR0aCwgaGVpZ2h0KSwgdHJ1ZSk7Ci0KLSAgICAvLyBDaGVjayBmb3Igb3ZlcmZsb3cu
Ci0gICAgaW50IG51bVRpbGVzID0gdGlsaW5nLm51bVRpbGVzWCgpICogdGlsaW5nLm51bVRpbGVz
WSgpOwotICAgIGlmIChudW1UaWxlcyAvIHRpbGluZy5udW1UaWxlc1goKSAhPSB0aWxpbmcubnVt
VGlsZXNZKCkpIHsKLSAgICAgICAgdGlsaW5nLnNldFRvdGFsU2l6ZShJbnRTaXplKCkpOwotICAg
ICAgICBudW1UaWxlcyA9IDA7Ci0gICAgfQotCi0gICAgYXV0byB0ZXh0dXJlSWRzID0gbWFrZVVu
aXF1ZTxWZWN0b3I8dW5zaWduZWQ+PihudW1UaWxlcyk7Ci0gICAgdGV4dHVyZUlkcy0+ZmlsbCgw
LCBudW1UaWxlcyk7Ci0KLSAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bVRpbGVzOyBpKyspIHsK
LSAgICAgICAgaW50IHRleHR1cmVJZCA9IGNvbnRleHQtPmNyZWF0ZVRleHR1cmUoKTsKLSAgICAg
ICAgaWYgKCF0ZXh0dXJlSWQpIHsKLSAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVt
VGlsZXM7IGkrKykKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5kZWxldGVUZXh0dXJlKHRleHR1
cmVJZHMtPmF0KGkpKTsKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICB9Ci0g
ICAgICAgIHRleHR1cmVJZHMtPmF0KGkpID0gdGV4dHVyZUlkOwotCi0gICAgICAgIGludCB4SW5k
ZXggPSBpICUgdGlsaW5nLm51bVRpbGVzWCgpOwotICAgICAgICBpbnQgeUluZGV4ID0gaSAvIHRp
bGluZy5udW1UaWxlc1goKTsKLSAgICAgICAgSW50UmVjdCB0aWxlQm91bmRzV2l0aEJvcmRlciA9
IHRpbGluZy50aWxlQm91bmRzV2l0aEJvcmRlcih4SW5kZXgsIHlJbmRleCk7Ci0KLSAgICAgICAg
dW5zaWduZWQgaW50IGdsRm9ybWF0ID0gMDsKLSAgICAgICAgdW5zaWduZWQgaW50IGdsVHlwZSA9
IDA7Ci0gICAgICAgIGJvb2wgc3dpenpsZTsKLSAgICAgICAgY29udmVydEZvcm1hdChjb250ZXh0
LCBmb3JtYXQsICZnbEZvcm1hdCwgJmdsVHlwZSwgJnN3aXp6bGUpOwotICAgICAgICBjb250ZXh0
LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV8yRCwgdGV4dHVyZUlkKTsK
LSAgICAgICAgY29udGV4dC0+dGV4SW1hZ2UyRFJlc291cmNlU2FmZShHcmFwaGljc0NvbnRleHRH
TDo6VEVYVFVSRV8yRCwgMCwgZ2xGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGlsZUJvdW5kc1dpdGhCb3JkZXIud2lkdGgoKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0aWxlQm91bmRzV2l0aEJvcmRlci5oZWlnaHQoKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBnbEZvcm1hdCwgZ2xU
eXBlKTsKLSAgICB9Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUZXh0dXJlKGNvbnRleHQsIFdU
Rk1vdmUodGV4dHVyZUlkcyksIGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgbWF4VGV4dHVyZVNpemUp
KTsKLX0KLQotdGVtcGxhdGUgPGJvb2wgc3dpenpsZT4KLXN0YXRpYyB1aW50MzJfdCogY29weVN1
YlJlY3QodWludDMyX3QqIHNyYywgaW50IHNyY1gsIGludCBzcmNZLCB1aW50MzJfdCogZHN0LCBp
bnQgd2lkdGgsIGludCBoZWlnaHQsIGludCBzcmNTdHJpZGUpCi17Ci0gICAgdWludDMyX3QqIHNy
Y09mZnNldCA9IHNyYyArIHNyY1ggKyBzcmNZICogc3JjU3RyaWRlOwotCi0gICAgaWYgKCFzd2l6
emxlICYmIHdpZHRoID09IHNyY1N0cmlkZSkKLSAgICAgICAgcmV0dXJuIHNyY09mZnNldDsKLQot
ICAgIGlmIChzd2l6emxlKSB7Ci0gICAgICAgIHVpbnQzMl90KiBkc3RQaXhlbCA9IGRzdDsKLSAg
ICAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7ICsreSkgewotICAgICAgICAgICAgZm9y
IChpbnQgeCA9IDA7IHggPCB3aWR0aCA7ICsreCkgewotICAgICAgICAgICAgICAgIHVpbnQzMl90
IHBpeGVsID0gc3JjT2Zmc2V0W3ggKyB5ICogc3JjU3RyaWRlXTsKLSAgICAgICAgICAgICAgICAq
ZHN0UGl4ZWwgPSAocGl4ZWwgJiAweEZGMDBGRjAwKSB8ICgocGl4ZWwgJiAweDAwRkYwMDAwKSA+
PiAxNikgfCAoKHBpeGVsICYgMHgwMDAwMDBGRikgPDwgMTYpOwotICAgICAgICAgICAgICAgIGRz
dFBpeGVsKys7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAg
ICBmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsgKyt5KSB7Ci0gICAgICAgICAgICBtZW1jcHko
ZHN0ICsgeSAqIHdpZHRoLCBzcmNPZmZzZXQgKyB5ICogc3JjU3RyaWRlLCA0ICogd2lkdGgpOwot
ICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBkc3Q7Ci19Ci0KLXZvaWQgVGV4dHVyZTo6bG9h
ZCh2b2lkKiBwaXhlbHMpCi17Ci0gICAgdXBkYXRlU3ViUmVjdChwaXhlbHMsIEludFJlY3QoMCwg
MCwgbV90aWxlcy50b3RhbFNpemUoKS53aWR0aCgpLCBtX3RpbGVzLnRvdGFsU2l6ZSgpLmhlaWdo
dCgpKSk7Ci19Ci0KLXZvaWQgVGV4dHVyZTo6dXBkYXRlU3ViUmVjdCh2b2lkKiBwaXhlbHMsIGNv
bnN0IEludFJlY3QmIHVwZGF0ZVJlY3QpCi17Ci0gICAgSW50UmVjdCB1cGRhdGVSZWN0U2FuaXRp
emVkKHVwZGF0ZVJlY3QpOwotICAgIHVwZGF0ZVJlY3RTYW5pdGl6ZWQuaW50ZXJzZWN0KEludFJl
Y3QoMCwgMCwgbV90aWxlcy50b3RhbFNpemUoKS53aWR0aCgpLCBtX3RpbGVzLnRvdGFsU2l6ZSgp
LmhlaWdodCgpKSk7Ci0KLSAgICB1aW50MzJfdCogcGl4ZWxzMzIgPSBzdGF0aWNfY2FzdDx1aW50
MzJfdCo+KHBpeGVscyk7Ci0gICAgdW5zaWduZWQgaW50IGdsRm9ybWF0ID0gMDsKLSAgICB1bnNp
Z25lZCBpbnQgZ2xUeXBlID0gMDsKLSAgICBib29sIHN3aXp6bGU7Ci0gICAgY29udmVydEZvcm1h
dChtX2NvbnRleHQsIG1fZm9ybWF0LCAmZ2xGb3JtYXQsICZnbFR5cGUsICZzd2l6emxlKTsKLSAg
ICBpZiAoc3dpenpsZSkgewotICAgICAgICBBU1NFUlQoZ2xGb3JtYXQgPT0gR3JhcGhpY3NDb250
ZXh0R0w6OlJHQkEgJiYgZ2xUeXBlID09IEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJR05FRF9CWVRF
KTsKLSAgICAgICAgLy8gRklYTUU6ICBUaGlzIGNvdWxkIHVzZSBQQk8ncyB0byBzYXZlIGRvaW5n
IGFuIGV4dHJhIGNvcHkgaGVyZS4KLSAgICB9Ci0gICAgaW50IHRlbXBCdWZmU2l6ZSA9IC8vIFRl
bXBvcmFyeSBidWZmZXIgc2l6ZSBpcyB0aGUgc21hbGxlciBvZiB0aGUgbWF4IHRleHR1cmUgc2l6
ZSBvciB0aGUgdXBkYXRlUmVjdFNhbml0aXplZAotICAgICAgICBzdGQ6Om1pbihtX3RpbGVzLm1h
eFRleHR1cmVTaXplKCkud2lkdGgoKSwgbV90aWxlcy5ib3JkZXJUZXhlbHMoKSArIHVwZGF0ZVJl
Y3RTYW5pdGl6ZWQud2lkdGgoKSkgKgotICAgICAgICBzdGQ6Om1pbihtX3RpbGVzLm1heFRleHR1
cmVTaXplKCkuaGVpZ2h0KCksIG1fdGlsZXMuYm9yZGVyVGV4ZWxzKCkgKyB1cGRhdGVSZWN0U2Fu
aXRpemVkLmhlaWdodCgpKTsKLSAgICBhdXRvIHRlbXBCdWZmID0gbWFrZVVuaXF1ZUFycmF5PHVp
bnQzMl90Pih0ZW1wQnVmZlNpemUpOwotCi0gICAgZm9yIChpbnQgdGlsZSA9IDA7IHRpbGUgPCBt
X3RpbGVzLm51bVRpbGVzWCgpICogbV90aWxlcy5udW1UaWxlc1koKTsgdGlsZSsrKSB7Ci0gICAg
ICAgIGludCB4SW5kZXggPSB0aWxlICUgbV90aWxlcy5udW1UaWxlc1goKTsKLSAgICAgICAgaW50
IHlJbmRleCA9IHRpbGUgLyBtX3RpbGVzLm51bVRpbGVzWCgpOwotCi0gICAgICAgIC8vIEludGVy
c2VjdCB3aXRoIHRpbGUKLSAgICAgICAgSW50UmVjdCB0aWxlQm91bmRzV2l0aEJvcmRlciA9IG1f
dGlsZXMudGlsZUJvdW5kc1dpdGhCb3JkZXIoeEluZGV4LCB5SW5kZXgpOwotCi0gICAgICAgIElu
dFJlY3QgdXBkYXRlUmVjdEludGVyc2VjdGVkID0gdXBkYXRlUmVjdFNhbml0aXplZDsKLSAgICAg
ICAgdXBkYXRlUmVjdEludGVyc2VjdGVkLmludGVyc2VjdCh0aWxlQm91bmRzV2l0aEJvcmRlcik7
Ci0KLSAgICAgICAgSW50UmVjdCBkc3RSZWN0ID0gdXBkYXRlUmVjdEludGVyc2VjdGVkOwotICAg
ICAgICBkc3RSZWN0Lm1vdmVCeSgtdGlsZUJvdW5kc1dpdGhCb3JkZXIubG9jYXRpb24oKSk7Ci0K
LSAgICAgICAgaWYgKHVwZGF0ZVJlY3RJbnRlcnNlY3RlZC5pc0VtcHR5KCkpCi0gICAgICAgICAg
ICBjb250aW51ZTsKLQotICAgICAgICAvLyBDb3B5IHN1YiByZWN0YW5nbGUgb3V0IG9mIGxhcmdl
ciBwaXhlbCBkYXRhCi0gICAgICAgIHVpbnQzMl90KiB1cGxvYWRCdWZmID0gMDsKLSAgICAgICAg
aWYgKHN3aXp6bGUpIHsKLSAgICAgICAgICAgIHVwbG9hZEJ1ZmYgPSBjb3B5U3ViUmVjdDx0cnVl
PigKLSAgICAgICAgICAgIHBpeGVsczMyLCB1cGRhdGVSZWN0SW50ZXJzZWN0ZWQueCgpLCB1cGRh
dGVSZWN0SW50ZXJzZWN0ZWQueSgpLAotICAgICAgICAgICAgdGVtcEJ1ZmYuZ2V0KCksIHVwZGF0
ZVJlY3RJbnRlcnNlY3RlZC53aWR0aCgpLCB1cGRhdGVSZWN0SW50ZXJzZWN0ZWQuaGVpZ2h0KCks
IG1fdGlsZXMudG90YWxTaXplKCkud2lkdGgoKSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICB1cGxvYWRCdWZmID0gY29weVN1YlJlY3Q8ZmFsc2U+KAotICAgICAgICAgICAgcGl4ZWxz
MzIsIHVwZGF0ZVJlY3RJbnRlcnNlY3RlZC54KCksIHVwZGF0ZVJlY3RJbnRlcnNlY3RlZC55KCks
Ci0gICAgICAgICAgICB0ZW1wQnVmZi5nZXQoKSwgdXBkYXRlUmVjdEludGVyc2VjdGVkLndpZHRo
KCksIHVwZGF0ZVJlY3RJbnRlcnNlY3RlZC5oZWlnaHQoKSwgbV90aWxlcy50b3RhbFNpemUoKS53
aWR0aCgpKTsKLSAgICAgICAgfQotCi0gICAgICAgIG1fY29udGV4dC0+YmluZFRleHR1cmUoR3Jh
cGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfMkQsIG1fdGlsZVRleHR1cmVJZHMtPmF0KHRpbGUpKTsK
LSAgICAgICAgbV9jb250ZXh0LT50ZXhTdWJJbWFnZTJEKEdyYXBoaWNzQ29udGV4dEdMOjpURVhU
VVJFXzJELCAwIC8qIGxldmVsICovLAotICAgICAgICAgICAgZHN0UmVjdC54KCksCi0gICAgICAg
ICAgICBkc3RSZWN0LnkoKSwKLSAgICAgICAgICAgIHVwZGF0ZVJlY3RJbnRlcnNlY3RlZC53aWR0
aCgpLAotICAgICAgICAgICAgdXBkYXRlUmVjdEludGVyc2VjdGVkLmhlaWdodCgpLCBnbEZvcm1h
dCwgZ2xUeXBlLCB1cGxvYWRCdWZmKTsKLSAgICB9Ci19Ci0KLXZvaWQgVGV4dHVyZTo6YmluZFRp
bGUoaW50IHRpbGUpCi17Ci0gICAgbV9jb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRl
eHRHTDo6VEVYVFVSRV8yRCwgbV90aWxlVGV4dHVyZUlkcy0+YXQodGlsZSkpOwotICAgIG1fY29u
dGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV8yRCwgR3JhcGhp
Y3NDb250ZXh0R0w6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0R0w6OkxJTkVB
Uik7Ci0gICAgbV9jb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dEdMOjpURVhU
VVJFXzJELCBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9NQUdfRklMVEVSLCBHcmFwaGljc0Nv
bnRleHRHTDo6TElORUFSKTsKLSAgICBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3ND
b250ZXh0R0w6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX1dSQVBfUywg
R3JhcGhpY3NDb250ZXh0R0w6OkNMQU1QX1RPX0VER0UpOwotICAgIG1fY29udGV4dC0+dGV4UGFy
YW1ldGVyaShHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0R0w6
OlRFWFRVUkVfV1JBUF9ULCBHcmFwaGljc0NvbnRleHRHTDo6Q0xBTVBfVE9fRURHRSk7Ci19Ci0K
LX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvVGV4dHVyZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1Rl
eHR1cmUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDJjMDJjMzg4OTk2MDMyMGM4
MWNiODg5OTA4ZWM1M2JhOWNkZjM1Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVy
ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoYykg
MjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFRleHR1cmVfaAotI2Rl
ZmluZSBUZXh0dXJlX2gKLQotI2luY2x1ZGUgIlRpbGluZ0RhdGEuaCIKLSNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOwotCi1jbGFzcyBJbnRSZWN0OwotCi1jbGFzcyBUZXh0dXJlIDogcHVibGljIFJlZkNvdW50
ZWQ8VGV4dHVyZT4gewotcHVibGljOgotICAgIH5UZXh0dXJlKCk7Ci0gICAgZW51bSBGb3JtYXQg
eyBSR0JBOCwgQkdSQTggfTsKLSAgICBzdGF0aWMgUmVmUHRyPFRleHR1cmU+IGNyZWF0ZShHcmFw
aGljc0NvbnRleHRHTE9wZW5HTCosIEZvcm1hdCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKLSAg
ICB2b2lkIGJpbmRUaWxlKGludCB0aWxlKTsKLSAgICB2b2lkIGxvYWQodm9pZCogcGl4ZWxzKTsK
LSAgICB2b2lkIHVwZGF0ZVN1YlJlY3Qodm9pZCogcGl4ZWxzLCBjb25zdCBJbnRSZWN0Jik7Ci0g
ICAgRm9ybWF0IGZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9ybWF0OyB9Ci0gICAgY29uc3Qg
VGlsaW5nRGF0YSYgdGlsZXMoKSBjb25zdCB7IHJldHVybiBtX3RpbGVzOyB9Ci1wcml2YXRlOgot
ICAgIFRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBzdGQ6OnVuaXF1ZV9wdHI8VmVj
dG9yPHVuc2lnbmVkPj4gdGlsZVRleHR1cmVJZHMsIEZvcm1hdCwgaW50IHdpZHRoLCBpbnQgaGVp
Z2h0LCBpbnQgbWF4VGV4dHVyZVNpemUpOwotICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBt
X2NvbnRleHQ7Ci0gICAgRm9ybWF0IG1fZm9ybWF0OwotICAgIFRpbGluZ0RhdGEgbV90aWxlczsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPHVuc2lnbmVkPj4gbV90aWxlVGV4dHVyZUlkczsK
LX07Ci0KLX0KLQotI2VuZGlmIC8vIFRleHR1cmVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCAzYmYyZTEzZGY5MmFmN2U0YjdjNzczMzA0
YjJjMWQwODZhMWZiODhmLi5hMzBjNjI2NzUxYzVmOTRmZjA1N2ZlNDczNDQwMWFhZjFmMDBmMmZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApA
QCAtMTI5LDEzICsxMjksNiBAQAogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJDb250ZXh0QXR0cmli
dXRlcy5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmgiCiAj
aW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5oIgotI2lmIFVTRShDQUlS
TykgJiYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKLSNpbmNsdWRlIDxjYWlyby1nbC5o
PgotI2luY2x1ZGUgIkdMQ29udGV4dC5oIgotI2luY2x1ZGUgIlBsYXRmb3JtRGlzcGxheS5oIgot
Ly8gY2Fpcm8tZ2wuaCBlbmRzIHVwIGluY2x1ZGluZyBYLmgsIHdoaWNoIGRlZmluZXMgTm9uZSwg
YnJlYWtpbmcgTWVkaWFQbGF5ZXI6OiBlbnVtcy4KLSN1bmRlZiBOb25lCi0jZW5kaWYKICNlbmRp
ZiAvLyBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCiAKICNpZiBVU0UoV1BFX1ZJREVPX1BMQU5FX0RJ
U1BMQVlfRE1BQlVGKQpAQCAtMzIxOCw0MCArMzIxMSw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3ND
b250CiAKIE5hdGl2ZUltYWdlUHRyIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bmF0aXZl
SW1hZ2VGb3JDdXJyZW50VGltZSgpCiB7Ci0jaWYgVVNFKENBSVJPKSAmJiBFTkFCTEUoQUNDRUxF
UkFURURfMkRfQ0FOVkFTKQotICAgIGlmIChtX2lzVXNpbmdGYWxsYmFja1ZpZGVvU2luaykKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBhdXRvIHNhbXBsZUxvY2tlciA9IGhvbGRMb2Nr
KG1fc2FtcGxlTXV0ZXgpOwotCi0gICAgaWYgKCFHU1RfSVNfU0FNUExFKG1fc2FtcGxlLmdldCgp
KSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8R3N0Vmlk
ZW9GcmFtZUhvbGRlcj4gZnJhbWVIb2xkZXIgPSBtYWtlVW5pcXVlPEdzdFZpZGVvRnJhbWVIb2xk
ZXI+KG1fc2FtcGxlLmdldCgpLCBtX3ZpZGVvRGVjb2RlclBsYXRmb3JtLCBtX3RleHR1cmVNYXBw
ZXJGbGFncywgdHJ1ZSk7Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJCdWZmZXI+IGxheWVyQnVmZmVyID0gZnJhbWVIb2xkZXItPnBsYXRmb3JtTGF5ZXJC
dWZmZXIoKTsKLSAgICBpZiAoIWxheWVyQnVmZmVyKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LQotICAgIGF1dG8gc2l6ZSA9IGZyYW1lSG9sZGVyLT5zaXplKCk7Ci0gICAgaWYgKG1fdmlkZW9T
b3VyY2VPcmllbnRhdGlvbi51c2VzV2lkdGhBc0hlaWdodCgpKQotICAgICAgICBzaXplID0gc2l6
ZS50cmFuc3Bvc2VkU2l6ZSgpOwotCi0gICAgR0xDb250ZXh0KiBjb250ZXh0ID0gUGxhdGZvcm1E
aXNwbGF5OjpzaGFyZWREaXNwbGF5Rm9yQ29tcG9zaXRpbmcoKS5zaGFyaW5nR0xDb250ZXh0KCk7
Ci0gICAgY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7Ci0KLSAgICBpZiAoIW1fdmlkZW9U
ZXh0dXJlQ29waWVyKQotICAgICAgICBtX3ZpZGVvVGV4dHVyZUNvcGllciA9IG1ha2VVbmlxdWU8
VmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyPihURVhUVVJFX0NPUElFUl9DT0xPUl9DT05WRVJU
X0ZMQUcpOwotCi0gICAgZnJhbWVIb2xkZXItPndhaXRGb3JDUFVTeW5jKCk7Ci0KLSAgICBpZiAo
IW1fdmlkZW9UZXh0dXJlQ29waWVyLT5jb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUo
KmxheWVyQnVmZmVyLmdldCgpLCBzaXplLCAwLCBHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCBH
TF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBmYWxzZSwgbV92aWRlb1NvdXJjZU9yaWVudGF0aW9u
KSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gYWRvcHRSZWYoY2Fpcm9f
Z2xfc3VyZmFjZV9jcmVhdGVfZm9yX3RleHR1cmUoY29udGV4dC0+Y2Fpcm9EZXZpY2UoKSwgQ0FJ
Uk9fQ09OVEVOVF9DT0xPUl9BTFBIQSwgbV92aWRlb1RleHR1cmVDb3BpZXItPnJlc3VsdFRleHR1
cmUoKSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKSk7Ci0jZWxzZQogICAgIHJldHVybiBu
dWxscHRyOwotI2VuZGlmCiB9CiAjZW5kaWYgLy8gVVNFKEdTVFJFQU1FUl9HTCkKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCBkMDRi
ZTg0NjlkM2IzZWVlZTRmMDY1OTgzZDVmMzA2MmY3OGEwYWE1Li44ZTgwNjY5OGEzNTBjZTIwNmI0
NzY0ODc3NWRlNTdhMTZiZGVmMmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtOTQsMTEgKzk0LDcgQEAgQ2FudmFzQ29tcG9zaXRp
bmdTdHJhdGVneSBjYW52YXNDb21wb3NpdGluZ1N0cmF0ZWd5KGNvbnN0IFJlbmRlck9iamVjdCYg
cmVuZGVyZXIKICAgICBpZiAoY29udGV4dC0+aXNHUFVCYXNlZCgpKQogICAgICAgICByZXR1cm4g
Q2FudmFzQXNMYXllckNvbnRlbnRzOwogCi0jaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZB
UykKLSAgICByZXR1cm4gQ2FudmFzQXNMYXllckNvbnRlbnRzOwotI2Vsc2UKICAgICByZXR1cm4g
Q2FudmFzUGFpbnRlZFRvTGF5ZXI7IC8vIE9uIE1hYyBhbmQgaU9TIHdlIHBhaW50IGFjY2VsZXJh
dGVkIGNhbnZhc2VzIGludG8gdGhlaXIgbGF5ZXJzLgotI2VuZGlmCiB9CiAKIC8vIFRoaXMgYWN0
cyBhcyBhIGNhY2hlIG9mIHdoYXQgd2Uga25vdyBhYm91dCB3aGF0IGlzIHBhaW50aW5nIGludG8g
dGhpcyBSZW5kZXJMYXllckJhY2tpbmcuCkBAIC0xMDU4LDcgKzEwNTQsNyBAQCBib29sIFJlbmRl
ckxheWVyQmFja2luZzo6dXBkYXRlQ29uZmlndXJhdGlvbihjb25zdCBSZW5kZXJMYXllciogY29t
cG9zaXRpbmdBbmNlcwogICAgICAgICB1cGRhdGVDb250ZW50c1JlY3RzKCk7CiAgICAgfQogI2Vu
ZGlmCi0jaWYgRU5BQkxFKFdFQkdMKSB8fCBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKSB8
fCBFTkFCTEUoV0VCR1BVKSB8fCBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKKyNpZiBFTkFCTEUo
V0VCR0wpIHx8IEVOQUJMRShXRUJHUFUpIHx8IEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQogICAg
IGVsc2UgaWYgKHJlbmRlcmVyKCkuaXNDYW52YXMoKSAmJiBjYW52YXNDb21wb3NpdGluZ1N0cmF0
ZWd5KHJlbmRlcmVyKCkpID09IENhbnZhc0FzTGF5ZXJDb250ZW50cykgewogICAgICAgICBjb25z
dCBIVE1MQ2FudmFzRWxlbWVudCogY2FudmFzID0gZG93bmNhc3Q8SFRNTENhbnZhc0VsZW1lbnQ+
KHJlbmRlcmVyKCkuZWxlbWVudCgpKTsKICAgICAgICAgaWYgKGF1dG8qIGNvbnRleHQgPSBjYW52
YXMtPnJlbmRlcmluZ0NvbnRleHQoKSkKQEAgLTI3NzMsNyArMjc2OSw3IEBAIGJvb2wgUmVuZGVy
TGF5ZXJCYWNraW5nOjpjb250YWluc1BhaW50ZWRDb250ZW50KFBhaW50ZWRDb250ZW50c0luZm8m
IGNvbnRlbnRzSW5mCiAgICAgICAgIHJldHVybiBtX293bmluZ0xheWVyLmhhc1Zpc2libGVCb3hE
ZWNvcmF0aW9uc09yQmFja2dyb3VuZCgpIHx8ICghKGRvd25jYXN0PFJlbmRlclZpZGVvPihyZW5k
ZXJlcigpKS5zdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkpICYmIG1fcmVxdWlyZXNPd25C
YWNraW5nU3RvcmUpOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0VCR0wpIHx8IEVOQUJMRShBQ0NF
TEVSQVRFRF8yRF9DQU5WQVMpIHx8IEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQorI2lmIEVOQUJM
RShXRUJHTCkgfHwgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMpCiAgICAgaWYgKGlzPFJlbmRlckhU
TUxDYW52YXM+KHJlbmRlcmVyKCkpICYmIGNhbnZhc0NvbXBvc2l0aW5nU3RyYXRlZ3kocmVuZGVy
ZXIoKSkgPT0gQ2FudmFzQXNMYXllckNvbnRlbnRzKQogICAgICAgICByZXR1cm4gbV9vd25pbmdM
YXllci5oYXNWaXNpYmxlQm94RGVjb3JhdGlvbnNPckJhY2tncm91bmQoKTsKICNlbmRpZgpAQCAt
MjgzOCw3ICsyODM0LDcgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OmNvbnRlbnRDaGFuZ2Vk
KENvbnRlbnRDaGFuZ2VUeXBlIGNoYW5nZVR5cGUpCiAgICAgaWYgKChjaGFuZ2VUeXBlID09IE1h
c2tJbWFnZUNoYW5nZWQpICYmIG1fbWFza0xheWVyKQogICAgICAgICBtX293bmluZ0xheWVyLnNl
dE5lZWRzQ29tcG9zaXRpbmdDb25maWd1cmF0aW9uVXBkYXRlKCk7CiAKLSNpZiBFTkFCTEUoV0VC
R0wpIHx8IEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpIHx8IEVOQUJMRShXRUJHUFUpIHx8
IEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQorI2lmIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKFdF
QkdQVSkgfHwgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMpCiAgICAgaWYgKChjaGFuZ2VUeXBlID09
IENhbnZhc0NoYW5nZWQgfHwgY2hhbmdlVHlwZSA9PSBDYW52YXNQaXhlbHNDaGFuZ2VkKSAmJiBy
ZW5kZXJlcigpLmlzQ2FudmFzKCkgJiYgY2FudmFzQ29tcG9zaXRpbmdTdHJhdGVneShyZW5kZXJl
cigpKSA9PSBDYW52YXNBc0xheWVyQ29udGVudHMpIHsKICAgICAgICAgaWYgKGNoYW5nZVR5cGUg
PT0gQ2FudmFzQ2hhbmdlZCkKICAgICAgICAgICAgIGNvbXBvc2l0b3IoKS5zY2hlZHVsZUNvbXBv
c2l0aW5nTGF5ZXJVcGRhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9GaW5kQ2Fpcm9H
TC5jbWFrZSBiL1NvdXJjZS9jbWFrZS9GaW5kQ2Fpcm9HTC5jbWFrZQpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggODQ4NjYwN2UzZDQ2MzZmZmE3YjA2ODczNTE5Mjk3NjQ4ZmIyZTRhZi4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvY21h
a2UvRmluZENhaXJvR0wuY21ha2UKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi0jIC0g
VHJ5IHRvIGZpbmQgQ2Fpcm9HTAotIyBPbmNlIGRvbmUsIHRoaXMgd2lsbCBkZWZpbmUKLSMKLSMg
IENBSVJPR0xfRk9VTkQgLSBzeXN0ZW0gaGFzIENhaXJvR0wKLSMgIENBSVJPR0xfSU5DTFVERV9E
SVJTIC0gdGhlIENhaXJvR0wgaW5jbHVkZSBkaXJlY3RvcmllcwotIyAgQ0FJUk9HTF9MSUJSQVJJ
RVMgLSBsaW5rIHRoZXNlIHRvIHVzZSBDYWlyb0dMCi0jCi0jIENvcHlyaWdodCAoQykgMjAxNCBJ
Z2FsaWEgUy5MLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMg
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVIgQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUwotIyBJUycnIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0jIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIElUUwotIyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSMg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotIyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsKLSMgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksCi0jIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SCi0jIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYKLSMgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0KLWZpbmRfcGFja2FnZShQa2dDb25maWcgUVVJRVQpCi1wa2df
Y2hlY2tfbW9kdWxlcyhDQUlST0dMIGNhaXJvLWdsKQotCi1pZiAoQ0FJUk9HTF9GT1VORCkKLSMg
QXQgdGhlIG1vbWVudCBDYWlyb0dMIGRvZXMgbm90IGFkZCBhbnkgZXh0cmEgY2ZsYWdzIGFuZCBs
aWJyYXJpZXMsIHNvIHdlIGNhbgotIyBzYWZlbHkgaWdub3JlIENBSVJPR0xfTElCUkFSSUVTIGFu
ZCBDQUlST0dMX0lOQ0xVREVfRElSUyBmb3IgdGhlIG1vbWVudC4KLWZvcmVhY2ggKF9jb21wb25l
bnQgJHtDYWlyb0dMX0ZJTkRfQ09NUE9ORU5UU30pCi0gICAgc3RyaW5nKFRPVVBQRVIgJHtfY29t
cG9uZW50fSBfVVBQRVJfTkFNRSkKLSAgICBzdHJpbmcoUkVHRVggUkVQTEFDRSAiLSIgIl8iIF9V
UFBFUl9OQU1FICR7X1VQUEVSX05BTUV9KQotICAgIHBrZ19jaGVja19tb2R1bGVzKCR7X1VQUEVS
X05BTUV9ICR7X2NvbXBvbmVudH0pCi0gICAgaWYgKCR7X1VQUEVSX05BTUV9X0lOQ0xVREVfRElS
UykKLSAgICAgIHNldChDQUlST0dMX0lOQ0xVREVfRElSUyAke0NBSVJPR0xfSU5DTFVERV9ESVJT
fSAke19VUFBFUl9OQU1FfV9JTkNMVURFX0RJUlMpCi0gICAgZW5kaWYgKCkKLSAgICBpZiAoJHtf
VVBQRVJfTkFNRX1fTElCUkFSSUVTKQotICAgICAgc2V0KENBSVJPR0xfTElCUkFSSUVTICR7Q0FJ
Uk9HTF9MSUJSQVJJRVN9ICR7X1VQUEVSX05BTUV9X0xJQlJBUklFUykKLSAgICBlbmRpZiAoKQot
ZW5kZm9yZWFjaCAoKQotCi1pbmNsdWRlKEZpbmRQYWNrYWdlSGFuZGxlU3RhbmRhcmRBcmdzKQot
ZmluZF9wYWNrYWdlX2hhbmRsZV9zdGFuZGFyZF9hcmdzKENhaXJvR0wgREVGQVVMVF9NU0cgQ0FJ
Uk9HTF9JTkNMVURFX0RJUlMgQ0FJUk9HTF9MSUJSQVJJRVMpCi1lbmRpZiAoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL2NtYWtlL09wdGlvbnNGVFcuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0ZU
Vy5jbWFrZQppbmRleCBmZTM5NTMxNmFkOWM3MjFiNzY2N2I1NmVjYzE0NWFkZTZiMDk4NDYyLi4z
MzI2NjU5MTU0NTU5YTllMzY2OTMwZmMwYzMxNTRmOWU3NjBjY2Q4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvY21ha2UvT3B0aW9uc0ZUVy5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0ZUVy5j
bWFrZQpAQCAtMTMwLDcgKzEzMCw2IEBAIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVF
KEVOQUJMRV9XRUJHTDIgUFJJVkFURSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9W
QUxVRShFTkFCTEVfV0VCR1BVIFBSSVZBVEUgT0ZGKQogCiAjIE9mZiBmb3Igbm93LCBidXQgc2hv
dWxkIGJlIG9uCi1XRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfQUNDRUxF
UkFURURfMkRfQ0FOVkFTIFBSSVZBVEUgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRf
VkFMVUUoRU5BQkxFX0FQSV9URVNUUyBQUklWQVRFIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVM
VF9QT1JUX1ZBTFVFKEVOQUJMRV9BUFBMSUNBVElPTl9NQU5JRkVTVCBQUklWQVRFIE9GRikKIFdF
QktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9BU1lOQ19TQ1JPTExJTkcgUFJJ
VkFURSBPRkYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZSBiL1Nv
dXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCmluZGV4IGRhOGU2ZGJkYjg2YmU3MTZkYTk0NDE4
M2Y0NTIxYzI3NTAwMzdlMzIuLmZjZTQ5MDM0OWUzODBlMjE4Y2ZlYTMzOTdiN2FlYTAwODEwZDU0
YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCisrKyBiL1NvdXJj
ZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCkBAIC0xMDUsMTEgKzEwNSw3IEBAIFdFQktJVF9PUFRJ
T05fREVGSU5FKFVTRV9TWVNURU1EICJXaGV0aGVyIHRvIGVuYWJsZSBqb3VybmFsZCBsb2dnaW5n
IiBQVUJMSUMgT04pCiAjIGNvbXBsZXRlbHkgdW5zdXBwb3J0ZWQuIFRoZXkgYXJlIGludGVuZGVk
IGZvciB1c2Ugb25seSBieSBXZWJLaXQgZGV2ZWxvcGVycy4KIFdFQktJVF9PUFRJT05fREVGSU5F
KFVTRV9BTkdMRV9XRUJHTCAiV2hldGhlciB0byB1c2UgQU5HTEUgYXMgV2ViR0wgYmFja2VuZC4i
IFBSSVZBVEUgT0ZGKQogCi0jIEZJWE1FOiBDYW4gd2UgdXNlIGNhaXJvLWdsZXN2MiB0byBhdm9p
ZCB0aGlzIGNvbmZsaWN0PwotV0VCS0lUX09QVElPTl9DT05GTElDVChFTkFCTEVfQUNDRUxFUkFU
RURfMkRfQ0FOVkFTIEVOQUJMRV9HTEVTMikKLQogV0VCS0lUX09QVElPTl9ERVBFTkQoRU5BQkxF
XzNEX1RSQU5TRk9STVMgRU5BQkxFX0dSQVBISUNTX0NPTlRFWFRfR0wpCi1XRUJLSVRfT1BUSU9O
X0RFUEVORChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTIEVOQUJMRV9HUkFQSElDU19DT05U
RVhUX0dMKQogV0VCS0lUX09QVElPTl9ERVBFTkQoRU5BQkxFX0FTWU5DX1NDUk9MTElORyBFTkFC
TEVfR1JBUEhJQ1NfQ09OVEVYVF9HTCkKIFdFQktJVF9PUFRJT05fREVQRU5EKEVOQUJMRV9HTEVT
MiBFTkFCTEVfR1JBUEhJQ1NfQ09OVEVYVF9HTCkKIFdFQktJVF9PUFRJT05fREVQRU5EKEVOQUJM
RV9XRUJHTCBFTkFCTEVfR1JBUEhJQ1NfQ09OVEVYVF9HTCkKQEAgLTE1MSw3ICsxNDcsNiBAQCBl
bmRpZiAoKQogIyBQdWJsaWMgb3B0aW9ucyBzaGFyZWQgd2l0aCBvdGhlciBXZWJLaXQgcG9ydHMu
IERvIG5vdCBhZGQgYW55IG9wdGlvbnMgaGVyZQogIyB3aXRob3V0IGFwcHJvdmFsIGZyb20gYSBH
VEsgcmV2aWV3ZXIuIFRoZXJlIG11c3QgYmUgc3Ryb25nIHJlYXNvbiB0byBzdXBwb3J0CiAjIGNo
YW5naW5nIHRoZSB2YWx1ZSBvZiB0aGUgb3B0aW9uLgotV0VCS0lUX09QVElPTl9ERUZBVUxUX1BP
UlRfVkFMVUUoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUyBQVUJMSUMgT0ZGKQogV0VCS0lU
X09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0FTWU5DX1NDUk9MTElORyBQUklWQVRF
IE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0RSQUdfU1VQUE9S
VCBQVUJMSUMgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfU1BF
TExDSEVDSyBQVUJMSUMgT04pCkBAIC0yNDQsMjAgKzIzOSw2IEBAIGlmIChFTkFCTEVfWFNMVCkK
ICAgICBmaW5kX3BhY2thZ2UoTGliWHNsdCAxLjEuNyBSRVFVSVJFRCkKIGVuZGlmICgpCiAKLWlm
IChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKQotICAgIGlmIChHTFhfRk9VTkQpCi0gICAg
ICAgIGxpc3QoQVBQRU5EIENBSVJPR0xfQ09NUE9ORU5UUyBjYWlyby1nbHgpCi0gICAgZW5kaWYg
KCkKLSAgICBpZiAoRUdMX0ZPVU5EKQotICAgICAgICBsaXN0KEFQUEVORCBDQUlST0dMX0NPTVBP
TkVOVFMgY2Fpcm8tZWdsKQotICAgIGVuZGlmICgpCi0KLSAgICBmaW5kX3BhY2thZ2UoQ2Fpcm9H
TCAxLjEwLjIgQ09NUE9ORU5UUyAke0NBSVJPR0xfQ09NUE9ORU5UU30pCi0gICAgaWYgKE5PVCBD
QUlST0dMX0ZPVU5EKQotICAgICAgICBtZXNzYWdlKEZBVEFMX0VSUk9SICJDYWlyb0dMIGlzIG5l
ZWRlZCBmb3IgRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUyIpCi0gICAgZW5kaWYgKCkKLWVu
ZGlmICgpCi0KIGlmIChVU0VfTElCU0VDUkVUKQogICAgIGZpbmRfcGFja2FnZShMaWJzZWNyZXQp
CiAgICAgaWYgKE5PVCBMSUJTRUNSRVRfRk9VTkQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2Uv
T3B0aW9uc1dQRS5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zV1BFLmNtYWtlCmluZGV4IDhm
NDQzYjNmOWZhOTY0MjRkZmVmOGViNzlkYjRlYzkxN2Q3NTlmODQuLjFlZDEzN2M0OTIzNjBkNWQ3
YzJlNGMyNDU2Y2U2NTljZDJhMmI3NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25z
V1BFLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zV1BFLmNtYWtlCkBAIC00NCw3ICs0
NCw2IEBAIGluY2x1ZGUoR1N0cmVhbWVyRGVmaW5pdGlvbnMpCiAjIFB1YmxpYyBvcHRpb25zIHNo
YXJlZCB3aXRoIG90aGVyIFdlYktpdCBwb3J0cy4gRG8gbm90IGFkZCBhbnkgb3B0aW9ucyBoZXJl
CiAjIHdpdGhvdXQgYXBwcm92YWwgZnJvbSBhIFdQRSByZXZpZXdlci4gVGhlcmUgbXVzdCBiZSBz
dHJvbmcgcmVhc29uIHRvIHN1cHBvcnQKICMgY2hhbmdpbmcgdGhlIHZhbHVlIG9mIHRoZSBvcHRp
b24uCi1XRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfQUNDRUxFUkFURURf
MkRfQ0FOVkFTIFBVQkxJQyBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShF
TkFCTEVfQUNDRVNTSUJJTElUWSBQVUJMSUMgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9S
VF9WQUxVRShFTkFCTEVfRU5DUllQVEVEX01FRElBIFBVQkxJQyAke0VOQUJMRV9FWFBFUklNRU5U
QUxfRkVBVFVSRVN9KQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1RI
VU5ERVIgUFJJVkFURSBPRkYpCkBAIC0xNTIsMTAgKzE1MSw2IEBAIGlmIChVU0VfV09GRjIpCiAg
ICAgZW5kaWYgKCkKIGVuZGlmICgpCiAKLWlmIChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFT
KQotICAgIGZpbmRfcGFja2FnZShDYWlyb0dMIDEuMTAuMiBSRVFVSVJFRCBDT01QT05FTlRTIGNh
aXJvLWVnbCkKLWVuZGlmICgpCi0KIGlmIChFTkFCTEVfV0VCX0NSWVBUTykKICAgICBmaW5kX3Bh
Y2thZ2UoTGlidGFzbjEgUkVRVUlSRUQpCiAgICAgaWYgKE5PVCBMSUJUQVNOMV9GT1VORCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luLmNtYWtlIGIvU291cmNlL2NtYWtlL09w
dGlvbnNXaW4uY21ha2UKaW5kZXggZTU1MzEyY2RlZDkyYzkyYzk1YzJhZmJhYjEyMWFjYjI1NWU0
ZGU4YS4uYWQ3NTg1MTEwNDg2ZjczOTNlZmNhNzQxM2I2OGI4NzE4ZmUwMjEzNyAxMDA2NDQKLS0t
IGEvU291cmNlL2NtYWtlL09wdGlvbnNXaW4uY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlv
bnNXaW4uY21ha2UKQEAgLTE4LDcgKzE4LDYgQEAgV0VCS0lUX09QVElPTl9ERUZJTkUoVVNFX1ZF
UlNJT05fU1RBTVBFUiAiVG9nZ2xlIHN0YW1waW5nIHZlcnNpb24gaW5mb3JtYXRpb24gZHUKIAog
IyBGSVhNRTogTW9zdCBvZiB0aGVzZSBvcHRpb25zIHNob3VsZCBub3QgYmUgcHVibGljLgogV0VC
S0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFXzNEX1RSQU5TRk9STVMgUFVCTElD
IE9OKQotV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0FDQ0VMRVJBVEVE
XzJEX0NBTlZBUyBQVUJMSUMgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUo
RU5BQkxFX09WRVJGTE9XX1NDUk9MTElOR19UT1VDSCBQVUJMSUMgT0ZGKQogV0VCS0lUX09QVElP
Tl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0FQSV9URVNUUyBQVUJMSUMgT04pCiBXRUJLSVRf
T1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfQVRUQUNITUVOVF9FTEVNRU5UIFBVQkxJ
QyBPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZSBiL1Nv
dXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQppbmRleCBjYmFkYWNkMTA3MGJlZjQ2NzUz
NTRiOGM2ZTY3ODE4NmI5M2RjMWVhLi5hMmZmNTNkZDYyMWM1ZmM0NzcwYWMyZDc4MzE2ZWI1ZThj
OWIwMzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UKKysr
IGIvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlCkBAIC05Niw3ICs5Niw2IEBAIG1h
Y3JvKFdFQktJVF9PUFRJT05fQkVHSU4pCiAgICAgZW5kaWYgKCkKIAogICAgIFdFQktJVF9PUFRJ
T05fREVGSU5FKEVOQUJMRV8zRF9UUkFOU0ZPUk1TICJUb2dnbGUgM0QgdHJhbnNmb3JtcyBzdXBw
b3J0IiBQUklWQVRFIE9OKQotICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9BQ0NFTEVS
QVRFRF8yRF9DQU5WQVMgIlRvZ2dsZSBBY2NlbGVyYXRlZCAyRCBDYW52YXMgc3VwcG9ydCIgUFJJ
VkFURSBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0NPUkVfSU1BR0VfQUND
RUxFUkFURURfRklMVEVSX1JFTkRFUiAiVG9nZ2xlIEFjY2VsZXJhdGVkIENTUy9TVkcgRmlsdGVy
IFJlbmRlcmluZyB1c2luZyBDb3JlSW1hZ2UiIFBSSVZBVEUgT0ZGKQogICAgIFdFQktJVF9PUFRJ
T05fREVGSU5FKEVOQUJMRV9BQ0NFU1NJQklMSVRZICJXaGV0aGVyIHRvIGVuYWJsZSBzdXBwb3J0
IGZvciBhY2Nlc3NpYmlsaXR5IiBQUklWQVRFIE9OKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5F
KEVOQUJMRV9BQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUgIlRvZ2dsZSBhY2Nlc3NpYmlsaXR5
IGlzb2xhdGVkIHRyZWUgc3VwcG9ydCIgUFJJVkFURSBPRkYpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
Y21ha2UvdG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lcy5wcm9wcyBiL1NvdXJjZS9jbWFrZS90
b29scy92c3Byb3BzL0ZlYXR1cmVEZWZpbmVzLnByb3BzCmluZGV4IDFlMjNkMzRhODUzNmJkMzdm
YjY5MjBlZTI1OWQzNmYxMDE4M2Q3MzcuLmJjYTAxODBkOGI3N2FhMmRhZTQ2MmJmODI4NjA1OGIx
ZWFmYWU2NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS90b29scy92c3Byb3BzL0ZlYXR1cmVE
ZWZpbmVzLnByb3BzCisrKyBiL1NvdXJjZS9jbWFrZS90b29scy92c3Byb3BzL0ZlYXR1cmVEZWZp
bmVzLnByb3BzCkBAIC0yLDcgKzIsNiBAQAogPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxk
IiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20v
ZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CiAgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFj
cm9zIj4KICAgICA8RU5BQkxFXzNEX1RSQU5TRk9STVM+RU5BQkxFXzNEX1RSQU5TRk9STVM8L0VO
QUJMRV8zRF9UUkFOU0ZPUk1TPgotICAgIDxFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTIC8+
CiAgICAgPEVOQUJMRV9PVkVSRkxPV19TQ1JPTExJTkdfVE9VQ0ggLz4KICAgICA8RU5BQkxFX0FU
VEFDSE1FTlRfRUxFTUVOVD5FTkFCTEVfQVRUQUNITUVOVF9FTEVNRU5UPC9FTkFCTEVfQVRUQUNI
TUVOVF9FTEVNRU5UPgogICAgIDxFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkc+RU5BQkxFX0NIQU5O
RUxfTUVTU0FHSU5HPC9FTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkc+CkBAIC02OSw3ICs2OCw3IEBA
CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CiAgICAgPENsQ29t
cGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4kKEVOQUJMRV8zRF9UUkFOU0ZP
Uk1TKTskKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpOyQoRU5BQkxFX09WRVJGTE9XX1ND
Uk9MTElOR19UT1VDSCk7JChFTkFCTEVfQVRUQUNITUVOVF9FTEVNRU5UKTskKEVOQUJMRV9DSEFO
TkVMX01FU1NBR0lORyk7JChFTkFCTEVfQ1NTM19DT05ESVRJT05BTF9SVUxFUyk7JChFTkFCTEVf
Q1NTX0lNQUdFX1NFVCk7JChFTkFCTEVfQ1NTM19URVhUKTskKEVOQUJMRV9DU1NfQk9YX0RFQ09S
QVRJT05fQlJFQUspOyQoRU5BQkxFX0NTU19TSEFERVJTKTskKEVOQUJMRV9DU1NfQ09NUE9TSVRJ
TkcpOyQoRU5BQkxFX0NTU19TRUxFQ1RPUlNfTEVWRUw0KTskKEVOQUJMRV9DU1NfU0hBUEVfSU5T
SURFKTskKEVOQUJMRV9DU1NfVFJBTlNGT1JNU19BTklNQVRJT05TX1RSQU5TSVRJT05TX1VOUFJF
RklYRUQpOyQoRU5BQkxFX0NVUlNPUl9WSVNJQklMSVRZKTskKEVOQUJMRV9DVVNUT01fU0NIRU1F
X0hBTkRMRVIpOyQoRU5BQkxFX0RBUktfTU9ERV9DU1MpOyQoRU5BQkxFX0RBVEFHUklEKTskKEVO
QUJMRV9EQVRBTElTVF9FTEVNRU5UKTskKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pOyQoRU5B
QkxFX0RJUkVDVE9SWV9VUExPQUQpOyQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSk7JChFTkFCTEVf
RkVUQ0hfQVBJKTskKEVOQUJMRV9GSUxFX1NZU1RFTSk7JChFTkFCTEVfRlVMTFNDUkVFTl9BUEkp
OyQoRU5BQkxFX0dBTUVQQUQpOyQoRU5BQkxFX0dFT0xPQ0FUSU9OKTskKEVOQUJMRV9ISUdIX0RQ
SV9DQU5WQVMpOyQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpOyQoRU5BQkxFX0lOUFVUX1RZUEVf
Q09MT1IpOyQoRU5BQkxFX0lOUFVUX1NQRUVDSCk7JChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKTsk
KEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwpOyQoRU5BQkxFX0lOUFVUX1RZUEVfTU9O
VEgpOyQoRU5BQkxFX0lOUFVUX1RZUEVfVElNRSk7JChFTkFCTEVfSU5QVVRfVFlQRV9XRUVLKTsk
KEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUyk7JChFTkFCTEVfTEVHQUNZX0VOQ1JZ
UFRFRF9NRURJQSk7JChFTkFCTEVfTElOS19QUkVSRU5ERVIpOyQoRU5BQkxFX01BVEhNTCk7JChF
TkFCTEVfTUlDUk9EQVRBKTskKEVOQUJMRV9NT1VTRV9DVVJTT1JfU0NBTEUpOyQoRU5BQkxFX05P
VElGSUNBVElPTlMpOyQoRU5BQkxFX1FVT1RBKTskKEVOQUJMRV9TQ1JJUFRFRF9TUEVFQ0gpOyQo
RU5BQkxFX1NIQVJFRF9XT1JLRVJTKTskKEVOQUJMRV9NRURJQV9DT05UUk9MU19TQ1JJUFQpOyQo
RU5BQkxFX01FRElBX1NPVVJDRSk7JChFTkFCTEVfTUVESUFfU1RBVElTVElDUyk7JChFTkFCTEVf
U1FMX0RBVEFCQVNFKTskKEVOQUJMRV9TVFlMRV9TQ09QRUQpOyQoRU5BQkxFX1NVQlBJWEVMX0xB
WU9VVCk7JChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKTskKEVOQUJMRV9WSURFTyk7JChF
TkFCTEVfV0VCX0FVRElPKTskKEVOQUJMRV9XRUJHTCk7JChFTkFCTEVfV0VCR1BVKTskKEVOQUJM
RV9XRUJYUik7JChFTkFCTEVfWEhSX1RJTUVPVVQpOyQoRU5BQkxFX1hTTFQpOyUoUHJlcHJvY2Vz
c29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxQcmVwcm9j
ZXNzb3JEZWZpbml0aW9ucz4kKEVOQUJMRV8zRF9UUkFOU0ZPUk1TKTskKEVOQUJMRV9PVkVSRkxP
V19TQ1JPTExJTkdfVE9VQ0gpOyQoRU5BQkxFX0FUVEFDSE1FTlRfRUxFTUVOVCk7JChFTkFCTEVf
Q0hBTk5FTF9NRVNTQUdJTkcpOyQoRU5BQkxFX0NTUzNfQ09ORElUSU9OQUxfUlVMRVMpOyQoRU5B
QkxFX0NTU19JTUFHRV9TRVQpOyQoRU5BQkxFX0NTUzNfVEVYVCk7JChFTkFCTEVfQ1NTX0JPWF9E
RUNPUkFUSU9OX0JSRUFLKTskKEVOQUJMRV9DU1NfU0hBREVSUyk7JChFTkFCTEVfQ1NTX0NPTVBP
U0lUSU5HKTskKEVOQUJMRV9DU1NfU0VMRUNUT1JTX0xFVkVMNCk7JChFTkFCTEVfQ1NTX1NIQVBF
X0lOU0lERSk7JChFTkFCTEVfQ1NTX1RSQU5TRk9STVNfQU5JTUFUSU9OU19UUkFOU0lUSU9OU19V
TlBSRUZJWEVEKTskKEVOQUJMRV9DVVJTT1JfVklTSUJJTElUWSk7JChFTkFCTEVfQ1VTVE9NX1ND
SEVNRV9IQU5ETEVSKTskKEVOQUJMRV9EQVJLX01PREVfQ1NTKTskKEVOQUJMRV9EQVRBR1JJRCk7
JChFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCk7JChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKTsk
KEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEKTskKEVOQUJMRV9FTkNSWVBURURfTUVESUEpOyQoRU5B
QkxFX0ZFVENIX0FQSSk7JChFTkFCTEVfRklMRV9TWVNURU0pOyQoRU5BQkxFX0ZVTExTQ1JFRU5f
QVBJKTskKEVOQUJMRV9HQU1FUEFEKTskKEVOQUJMRV9HRU9MT0NBVElPTik7JChFTkFCTEVfSElH
SF9EUElfQ0FOVkFTKTskKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKTskKEVOQUJMRV9JTlBVVF9U
WVBFX0NPTE9SKTskKEVOQUJMRV9JTlBVVF9TUEVFQ0gpOyQoRU5BQkxFX0lOUFVUX1RZUEVfREFU
RSk7JChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMKTskKEVOQUJMRV9JTlBVVF9UWVBF
X01PTlRIKTskKEVOQUJMRV9JTlBVVF9UWVBFX1RJTUUpOyQoRU5BQkxFX0lOUFVUX1RZUEVfV0VF
Syk7JChFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMpOyQoRU5BQkxFX0xFR0FDWV9F
TkNSWVBURURfTUVESUEpOyQoRU5BQkxFX0xJTktfUFJFUkVOREVSKTskKEVOQUJMRV9NQVRITUwp
OyQoRU5BQkxFX01JQ1JPREFUQSk7JChFTkFCTEVfTU9VU0VfQ1VSU09SX1NDQUxFKTskKEVOQUJM
RV9OT1RJRklDQVRJT05TKTskKEVOQUJMRV9RVU9UQSk7JChFTkFCTEVfU0NSSVBURURfU1BFRUNI
KTskKEVOQUJMRV9TSEFSRURfV09SS0VSUyk7JChFTkFCTEVfTUVESUFfQ09OVFJPTFNfU0NSSVBU
KTskKEVOQUJMRV9NRURJQV9TT1VSQ0UpOyQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MpOyQoRU5B
QkxFX1NRTF9EQVRBQkFTRSk7JChFTkFCTEVfU1RZTEVfU0NPUEVEKTskKEVOQUJMRV9TVUJQSVhF
TF9MQVlPVVQpOyQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUyk7JChFTkFCTEVfVklERU8p
OyQoRU5BQkxFX1dFQl9BVURJTyk7JChFTkFCTEVfV0VCR0wpOyQoRU5BQkxFX1dFQkdQVSk7JChF
TkFCTEVfV0VCWFIpOyQoRU5BQkxFX1hIUl9USU1FT1VUKTskKEVOQUJMRV9YU0xUKTslKFByZXBy
b2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CiAgICAgPC9DbENv
bXBpbGU+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1Hcm91cD4KQEAgLTc3LDEw
ICs3Niw2IEBACiAgICAgICA8VmFsdWU+JChFTkFCTEVfM0RfVFJBTlNGT1JNUyk8L1ZhbHVlPgog
ICAgICAgPEVudmlyb25tZW50VmFyaWFibGU+dHJ1ZTwvRW52aXJvbm1lbnRWYXJpYWJsZT4KICAg
ICA8L0J1aWxkTWFjcm8+Ci0gICAgPEJ1aWxkTWFjcm8gSW5jbHVkZT0iRU5BQkxFX0FDQ0VMRVJB
VEVEXzJEX0NBTlZBUyI+Ci0gICAgICA8VmFsdWU+JChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FO
VkFTKTwvVmFsdWU+Ci0gICAgICA8RW52aXJvbm1lbnRWYXJpYWJsZT50cnVlPC9FbnZpcm9ubWVu
dFZhcmlhYmxlPgotICAgIDwvQnVpbGRNYWNybz4KICAgICA8QnVpbGRNYWNybyBJbmNsdWRlPSJF
TkFCTEVfT1ZFUkZMT1dfU0NST0xMSU5HX1RPVUNIIj4KICAgICAgIDxWYWx1ZT4kKEVOQUJMRV9P
VkVSRkxPV19TQ1JPTExJTkdfVE9VQ0gpPC9WYWx1ZT4KICAgICAgIDxFbnZpcm9ubWVudFZhcmlh
YmxlPnRydWU8L0Vudmlyb25tZW50VmFyaWFibGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2Uv
dG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lc0NhaXJvLnByb3BzIGIvU291cmNlL2NtYWtlL3Rv
b2xzL3ZzcHJvcHMvRmVhdHVyZURlZmluZXNDYWlyby5wcm9wcwppbmRleCBkYjg4MjUwMDdkMGVj
MjdjOTNhOTcxZGZiYmQyMjI4NmYxNDE5ODk2Li40NWYzOGZmMjczODE5NjNlZGNkMmI2MjcwNmUz
YmJmNzM4Nzc5MjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvdG9vbHMvdnNwcm9wcy9GZWF0
dXJlRGVmaW5lc0NhaXJvLnByb3BzCisrKyBiL1NvdXJjZS9jbWFrZS90b29scy92c3Byb3BzL0Zl
YXR1cmVEZWZpbmVzQ2Fpcm8ucHJvcHMKQEAgLTIsNyArMiw2IEBACiA8UHJvamVjdCBEZWZhdWx0
VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMu
bWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KICAgPFByb3BlcnR5R3JvdXAg
TGFiZWw9IlVzZXJNYWNyb3MiPgogICAgIDxFTkFCTEVfM0RfVFJBTlNGT1JNUz5FTkFCTEVfM0Rf
VFJBTlNGT1JNUzwvRU5BQkxFXzNEX1RSQU5TRk9STVM+Ci0gICAgPEVOQUJMRV9BQ0NFTEVSQVRF
RF8yRF9DQU5WQVMgLz4KICAgICA8RU5BQkxFX09WRVJGTE9XX1NDUk9MTElOR19UT1VDSCAvPgog
ICAgIDxFTkFCTEVfQVRUQUNITUVOVF9FTEVNRU5UPkVOQUJMRV9BVFRBQ0hNRU5UX0VMRU1FTlQ8
L0VOQUJMRV9BVFRBQ0hNRU5UX0VMRU1FTlQ+CiAgICAgPEVOQUJMRV9DSEFOTkVMX01FU1NBR0lO
Rz5FTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkc8L0VOQUJMRV9DSEFOTkVMX01FU1NBR0lORz4KQEAg
LTY5LDcgKzY4LDcgQEAKICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SXRlbURlZmluaXRpb25Hcm91
cD4KICAgICA8Q2xDb21waWxlPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPiQoRU5B
QkxFXzNEX1RSQU5TRk9STVMpOyQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUyk7JChFTkFC
TEVfT1ZFUkZMT1dfU0NST0xMSU5HX1RPVUNIKTskKEVOQUJMRV9BVFRBQ0hNRU5UX0VMRU1FTlQp
OyQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKTskKEVOQUJMRV9DU1MzX0NPTkRJVElPTkFMX1JV
TEVTKTskKEVOQUJMRV9DU1NfSU1BR0VfU0VUKTskKEVOQUJMRV9DU1MzX1RFWFQpOyQoRU5BQkxF
X0NTU19CT1hfREVDT1JBVElPTl9CUkVBSyk7JChFTkFCTEVfQ1NTX1NIQURFUlMpOyQoRU5BQkxF
X0NTU19DT01QT1NJVElORyk7JChFTkFCTEVfQ1NTX1NFTEVDVE9SU19MRVZFTDQpOyQoRU5BQkxF
X0NTU19TSEFQRV9JTlNJREUpOyQoRU5BQkxFX0NTU19UUkFOU0ZPUk1TX0FOSU1BVElPTlNfVFJB
TlNJVElPTlNfVU5QUkVGSVhFRCk7JChFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJVFkpOyQoRU5BQkxF
X0NVU1RPTV9TQ0hFTUVfSEFORExFUik7JChFTkFCTEVfREFSS19NT0RFX0NTUyk7JChFTkFCTEVf
REFUQUdSSUQpOyQoRU5BQkxFX0RBVEFMSVNUX0VMRU1FTlQpOyQoRU5BQkxFX0RFVklDRV9PUklF
TlRBVElPTik7JChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCk7JChFTkFCTEVfRU5DUllQVEVEX01F
RElBKTskKEVOQUJMRV9GRVRDSF9BUEkpOyQoRU5BQkxFX0ZJTEVfU1lTVEVNKTskKEVOQUJMRV9G
VUxMU0NSRUVOX0FQSSk7JChFTkFCTEVfR0FNRVBBRCk7JChFTkFCTEVfR0VPTE9DQVRJT04pOyQo
RU5BQkxFX0hJR0hfRFBJX0NBTlZBUyk7JChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSk7JChFTkFC
TEVfSU5QVVRfVFlQRV9DT0xPUik7JChFTkFCTEVfSU5QVVRfU1BFRUNIKTskKEVOQUJMRV9JTlBV
VF9UWVBFX0RBVEUpOyQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVMT0NBTCk7JChFTkFCTEVf
SU5QVVRfVFlQRV9NT05USCk7JChFTkFCTEVfSU5QVVRfVFlQRV9USU1FKTskKEVOQUJMRV9JTlBV
VF9UWVBFX1dFRUspOyQoRU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKTskKEVOQUJM
RV9MRUdBQ1lfRU5DUllQVEVEX01FRElBKTskKEVOQUJMRV9MSU5LX1BSRVJFTkRFUik7JChFTkFC
TEVfTUFUSE1MKTskKEVOQUJMRV9NSUNST0RBVEEpOyQoRU5BQkxFX01PVVNFX0NVUlNPUl9TQ0FM
RSk7JChFTkFCTEVfTk9USUZJQ0FUSU9OUyk7JChFTkFCTEVfUVVPVEEpOyQoRU5BQkxFX1NDUklQ
VEVEX1NQRUVDSCk7JChFTkFCTEVfU0hBUkVEX1dPUktFUlMpOyQoRU5BQkxFX01FRElBX0NPTlRS
T0xTX1NDUklQVCk7JChFTkFCTEVfTUVESUFfU09VUkNFKTskKEVOQUJMRV9NRURJQV9TVEFUSVNU
SUNTKTskKEVOQUJMRV9TUUxfREFUQUJBU0UpOyQoRU5BQkxFX1NUWUxFX1NDT1BFRCk7JChFTkFC
TEVfU1VCUElYRUxfTEFZT1VUKTskKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpOyQoRU5B
QkxFX1ZJREVPKTskKEVOQUJMRV9XRUJfQVVESU8pOyQoRU5BQkxFX1dFQkdMKTskKEVOQUJMRV9X
RUJYUik7JChFTkFCTEVfWEhSX1RJTUVPVVQpOyQoRU5BQkxFX1hTTFQpOyUoUHJlcHJvY2Vzc29y
RGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxQcmVwcm9jZXNz
b3JEZWZpbml0aW9ucz4kKEVOQUJMRV8zRF9UUkFOU0ZPUk1TKTskKEVOQUJMRV9PVkVSRkxPV19T
Q1JPTExJTkdfVE9VQ0gpOyQoRU5BQkxFX0FUVEFDSE1FTlRfRUxFTUVOVCk7JChFTkFCTEVfQ0hB
Tk5FTF9NRVNTQUdJTkcpOyQoRU5BQkxFX0NTUzNfQ09ORElUSU9OQUxfUlVMRVMpOyQoRU5BQkxF
X0NTU19JTUFHRV9TRVQpOyQoRU5BQkxFX0NTUzNfVEVYVCk7JChFTkFCTEVfQ1NTX0JPWF9ERUNP
UkFUSU9OX0JSRUFLKTskKEVOQUJMRV9DU1NfU0hBREVSUyk7JChFTkFCTEVfQ1NTX0NPTVBPU0lU
SU5HKTskKEVOQUJMRV9DU1NfU0VMRUNUT1JTX0xFVkVMNCk7JChFTkFCTEVfQ1NTX1NIQVBFX0lO
U0lERSk7JChFTkFCTEVfQ1NTX1RSQU5TRk9STVNfQU5JTUFUSU9OU19UUkFOU0lUSU9OU19VTlBS
RUZJWEVEKTskKEVOQUJMRV9DVVJTT1JfVklTSUJJTElUWSk7JChFTkFCTEVfQ1VTVE9NX1NDSEVN
RV9IQU5ETEVSKTskKEVOQUJMRV9EQVJLX01PREVfQ1NTKTskKEVOQUJMRV9EQVRBR1JJRCk7JChF
TkFCTEVfREFUQUxJU1RfRUxFTUVOVCk7JChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKTskKEVO
QUJMRV9ESVJFQ1RPUllfVVBMT0FEKTskKEVOQUJMRV9FTkNSWVBURURfTUVESUEpOyQoRU5BQkxF
X0ZFVENIX0FQSSk7JChFTkFCTEVfRklMRV9TWVNURU0pOyQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJ
KTskKEVOQUJMRV9HQU1FUEFEKTskKEVOQUJMRV9HRU9MT0NBVElPTik7JChFTkFCTEVfSElHSF9E
UElfQ0FOVkFTKTskKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKTskKEVOQUJMRV9JTlBVVF9UWVBF
X0NPTE9SKTskKEVOQUJMRV9JTlBVVF9TUEVFQ0gpOyQoRU5BQkxFX0lOUFVUX1RZUEVfREFURSk7
JChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMKTskKEVOQUJMRV9JTlBVVF9UWVBFX01P
TlRIKTskKEVOQUJMRV9JTlBVVF9UWVBFX1RJTUUpOyQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSyk7
JChFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMpOyQoRU5BQkxFX0xFR0FDWV9FTkNS
WVBURURfTUVESUEpOyQoRU5BQkxFX0xJTktfUFJFUkVOREVSKTskKEVOQUJMRV9NQVRITUwpOyQo
RU5BQkxFX01JQ1JPREFUQSk7JChFTkFCTEVfTU9VU0VfQ1VSU09SX1NDQUxFKTskKEVOQUJMRV9O
T1RJRklDQVRJT05TKTskKEVOQUJMRV9RVU9UQSk7JChFTkFCTEVfU0NSSVBURURfU1BFRUNIKTsk
KEVOQUJMRV9TSEFSRURfV09SS0VSUyk7JChFTkFCTEVfTUVESUFfQ09OVFJPTFNfU0NSSVBUKTsk
KEVOQUJMRV9NRURJQV9TT1VSQ0UpOyQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MpOyQoRU5BQkxF
X1NRTF9EQVRBQkFTRSk7JChFTkFCTEVfU1RZTEVfU0NPUEVEKTskKEVOQUJMRV9TVUJQSVhFTF9M
QVlPVVQpOyQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUyk7JChFTkFCTEVfVklERU8pOyQo
RU5BQkxFX1dFQl9BVURJTyk7JChFTkFCTEVfV0VCR0wpOyQoRU5BQkxFX1dFQlhSKTskKEVOQUJM
RV9YSFJfVElNRU9VVCk7JChFTkFCTEVfWFNMVCk7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8
L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgogICAgIDwvQ2xDb21waWxlPgogICA8L0l0ZW1EZWZp
bml0aW9uR3JvdXA+CiAgIDxJdGVtR3JvdXA+CkBAIC03NywxMCArNzYsNiBAQAogICAgICAgPFZh
bHVlPiQoRU5BQkxFXzNEX1RSQU5TRk9STVMpPC9WYWx1ZT4KICAgICAgIDxFbnZpcm9ubWVudFZh
cmlhYmxlPnRydWU8L0Vudmlyb25tZW50VmFyaWFibGU+CiAgICAgPC9CdWlsZE1hY3JvPgotICAg
IDxCdWlsZE1hY3JvIEluY2x1ZGU9IkVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMiPgotICAg
ICAgPFZhbHVlPiQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUyk8L1ZhbHVlPgotICAgICAg
PEVudmlyb25tZW50VmFyaWFibGU+dHJ1ZTwvRW52aXJvbm1lbnRWYXJpYWJsZT4KLSAgICA8L0J1
aWxkTWFjcm8+CiAgICAgPEJ1aWxkTWFjcm8gSW5jbHVkZT0iRU5BQkxFX09WRVJGTE9XX1NDUk9M
TElOR19UT1VDSCI+CiAgICAgICA8VmFsdWU+JChFTkFCTEVfT1ZFUkZMT1dfU0NST0xMSU5HX1RP
VUNIKTwvVmFsdWU+CiAgICAgICA8RW52aXJvbm1lbnRWYXJpYWJsZT50cnVlPC9FbnZpcm9ubWVu
dFZhcmlhYmxlPgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDkwNTFlNGQzYzhiNmNkYTIzYmIyZWJjN2Y4MzA3ZDEwZjRiYmJhYmUuLmY2ZDc5YWFm
NTc4MTdkNGYwOTFkNWVmMzdjY2ZiZmQ1NjQyNmE3M2EgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMC0xMC0xMyAg
WmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CisKKyAgICAgICAgUmVtb3ZlIEFD
Q0VMRVJBVEVEXzJEX0NBTlZBUyBidWlsZCBmbGFncyBhbmQgZ3VhcmRlZCBjb2RlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc2MDMKKworICAgICAg
ICBSZXZpZXdlZCBieSBDYXJsb3MgR2FyY2lhIENhbXBvcy4KKworICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbToKKyAgICAgICAgUmVtb3ZlIHRoZSBBQ0NFTEVSQVRF
RF8yRF9DQU5WQVMgZmVhdHVyZSBmbGFnLgorCiAyMDIwLTEwLTEzICBBZHJpYW4gUGVyZXogZGUg
Q2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gQWRkIHN1cHBvcnQg
Zm9yIGdhbWVwYWQgdGVzdHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9G
ZWF0dXJlTGlzdC5wbSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQpp
bmRleCA0MjQ5OGM5ODc1NjdkN2VmZjA3YWRkZDU1ZTEyMWFkM2IxYjQ3NTgzLi5lMWI1Y2RmNWMy
ZGE4NWZjYzAyNTYxNGY3ZGFiZTYwODJkNjFkOTg2IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJs
L0ZlYXR1cmVMaXN0LnBtCkBAIC00OSw3ICs0OSw2IEBAIEJFR0lOIHsKIH0KIAogbXkgKAotICAg
ICRhY2NlbGVyYXRlZDJEQ2FudmFzU3VwcG9ydCwKICAgICAkYWNjZXNzaWJpbGl0eUlzb2xhdGVk
VHJlZVN1cHBvcnQsCiAgICAgJGFwcGxlUGF5U2Vzc2lvblYzU3VwcG9ydCwKICAgICAkYXBwbGVQ
YXlTZXNzaW9uVjRTdXBwb3J0LApAQCAtMTk3LDkgKzE5Niw2IEBAIG15IEBmZWF0dXJlcyA9ICgK
ICAgICB7IG9wdGlvbiA9PiAiM2QtcmVuZGVyaW5nIiwgZGVzYyA9PiAiVG9nZ2xlIDNEIHJlbmRl
cmluZyBzdXBwb3J0IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFXzNEX1RSQU5TRk9STVMiLCB2
YWx1ZSA9PiBcJHRocmVlRFRyYW5zZm9ybXNTdXBwb3J0IH0sCiAKLSAgICB7IG9wdGlvbiA9PiAi
YWNjZWxlcmF0ZWQtMmQtY2FudmFzIiwgZGVzYyA9PiAiVG9nZ2xlIEFjY2VsZXJhdGVkIDJEIENh
bnZhcyBzdXBwb3J0IiwKLSAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NB
TlZBUyIsIHZhbHVlID0+IFwkYWNjZWxlcmF0ZWQyRENhbnZhc1N1cHBvcnQgfSwKLQogICAgIHsg
b3B0aW9uID0+ICJhY2Nlc3NpYmlsaXR5LWlzb2xhdGVkLXRyZWUiLCBkZXNjID0+ICJUb2dnbGUg
YWNjZXNzaWJpbGl0eSBpc29sYXRlZCB0cmVlIHN1cHBvcnQiLAogICAgICAgZGVmaW5lID0+ICJF
TkFCTEVfQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFIiwgdmFsdWUgPT4gXCRhY2Nlc3NpYmls
aXR5SXNvbGF0ZWRUcmVlU3VwcG9ydCB9LAogCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFu
Z2VMb2cKaW5kZXggMTVlNTNlYTE1NWYyOTkxZTQ4MWUwZDc5MWZhMmU2ZmIwY2U4MTBlMy4uNzRm
Mjg5MmZiNDQ1ZTlhM2QzODI3OTA1NjZhM2U5ZTVjMjU2ODhjMCAxMDA2NDQKLS0tIGEvQ2hhbmdl
TG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIwLTEwLTEzICBaYW4gRG9i
ZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBSZW1vdmUgQUNDRUxFUkFU
RURfMkRfQ0FOVkFTIGJ1aWxkIGZsYWdzIGFuZCBndWFyZGVkIGNvZGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzYwMworCisgICAgICAgIFJldmll
d2VkIGJ5IENhcmxvcyBHYXJjaWEgQ2FtcG9zLgorCisgICAgICAgIFlhbmsgdGhlIENNYWtlIEVO
QUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMgb3B0aW9uIG5vdyB0aGF0IGl0IHdvbid0CisgICAg
ICAgIGhhdmUgYW55IGVmZmVjdC4gRmluZENhaXJvR0wuY21ha2UgY2FuIGFsc28gYmUgcmVtb3Zl
ZC4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9GaW5kQ2Fpcm9HTC5jbWFrZTogUmVtb3ZlZC4K
KyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc0ZUVy5jbWFrZToKKyAgICAgICAgKiBTb3Vy
Y2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9u
c1dQRS5jbWFrZToKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc1dpbi5jbWFrZToKKyAg
ICAgICAgKiBTb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2U6CisgICAgICAgICogU291
cmNlL2NtYWtlL3Rvb2xzL3ZzcHJvcHMvRmVhdHVyZURlZmluZXMucHJvcHM6CisgICAgICAgICog
U291cmNlL2NtYWtlL3Rvb2xzL3ZzcHJvcHMvRmVhdHVyZURlZmluZXNDYWlyby5wcm9wczoKKwog
MjAyMC0xMC0xMyAgQWRyaWFuIFBlcmV6IGRlIENhc3RybyAgPGFwZXJlekBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFtHVEtdIFNldCBFTkFCTEVfR0FNRVBBRD1PTiBmb3IgZGV2ZWxvcGVyIGJ1aWxk
cwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>