<?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>230239</bug_id>
          
          <creation_ts>2021-09-13 16:59:37 -0700</creation_ts>
          <short_desc>Add SPI for Safari to stop using WebKitLegacy</short_desc>
          <delta_ts>2021-09-20 17:00:20 -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>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1793157</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-09-13 16:59:37 -0700</bug_when>
    <thetext>Add SPI for Safari to stop using WebKitLegacy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1793159</commentid>
    <comment_count>1</comment_count>
      <attachid>438091</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-09-13 17:01:02 -0700</bug_when>
    <thetext>Created attachment 438091
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795359</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-20 17:00:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/83331229&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438091</attachid>
            <date>2021-09-13 17:01:02 -0700</date>
            <delta_ts>2021-09-13 17:01:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230239-20210913170101.patch</filename>
            <type>text/plain</type>
            <size>97347</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyMzcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDlhYWVlZjUwNDRhNDVmNDBk
YzdmMjcyODAxMGE0YmIxZjNmOTFlNjQuLjdhZTA3ODU4MjkzMjljMTkxNWI1ZTE0MjkyZGVjYWVl
NGM3YjcxNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTcgQEAKKzIwMjEtMDktMTMgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgU1BJIGZv
ciBTYWZhcmkgdG8gc3RvcCB1c2luZyBXZWJLaXRMZWdhY3kKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDIzOQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAg
ICAgICogQ29uZmlndXJhdGlvbnMvV2ViS2l0LnhjY29uZmlnOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50RGFlbW9uQ29ubmVjdGlvbkNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpQQ006OkNvbm5l
Y3Rpb246OmluaXRpYWxpemVDb25uZWN0aW9uSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAqIFJl
c291cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9zL2NvbS5hcHBsZS5XZWJLaXQuTmV0d29ya2luZy5z
YjoKKyAgICAgICAgKiBTaGFyZWQvQVBJL0NvY29hL1dlYktpdC5oOgorICAgICAgICAqIFNvdXJj
ZXNDb2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9MZWdhY3lCdW5kbGVG
b3JDbGFzcy5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0xvY2FsaXphYmxl
U3RyaW5ncy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkxvY2FsaXplZFN0cmluZ1dpdGhWYWx1ZSk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tMb2NhbGl6YWJsZVN0cmluZ3MubW06
IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLTlNEYXRhRXh0cmFzLmg6
IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLTlNEYXRhRXh0cmFzLm1t
OiBBZGRlZC4KKyAgICAgICAgKC1bTlNTdHJpbmcgX3dlYl9jYXBpdGFsaXplUkZDODIySGVhZGVy
RmllbGROYW1lXSk6CisgICAgICAgICgtW05TRGF0YSBfd2Via2l0X2d1ZXNzZWRNSU1FVHlwZUZv
clhNTF0pOgorICAgICAgICAoLVtOU0RhdGEgX3dlYmtpdF9ndWVzc2VkTUlNRVR5cGVdKToKKyAg
ICAgICAgKC1bTlNEYXRhIF93ZWJfaXNDYXNlSW5zZW5zaXRpdmVFcXVhbFRvQ1N0cmluZzpdKToK
KyAgICAgICAgKF9maW5kRU9MKToKKyAgICAgICAgKC1bTlNEYXRhIF93ZWJraXRfcGFyc2VSRkM4
MjJIZWFkZXJGaWVsZHNdKToKKyAgICAgICAgKC1bTlNEYXRhIF93ZWJfc3RhcnRzV2l0aEJsYW5r
TGluZV0pOgorICAgICAgICAoLVtOU0RhdGEgX3dlYl9sb2NhdGlvbkFmdGVyRmlyc3RCbGFua0xp
bmVdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS05TRmlsZU1hbmFnZXJFeHRy
YXMuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tOU0ZpbGVNYW5h
Z2VyRXh0cmFzLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bTlNGaWxlTWFuYWdlciBfd2Via2l0X3Nl
dE1ldGFkYXRhVVJMOnJlZmVycmVyOmF0UGF0aDpdKToKKyAgICAgICAgKGZpbGVFeGlzdHMpOgor
ICAgICAgICAoLVtOU0ZpbGVNYW5hZ2VyIF93ZWJraXRfcGF0aFdpdGhVbmlxdWVGaWxlbmFtZUZv
clBhdGg6XSk6CisgICAgICAgICgtW05TRmlsZU1hbmFnZXIgX3dlYmtpdF9jcmVhdGVUZW1wb3Jh
cnlEaXJlY3RvcnlXaXRoVGVtcGxhdGVQcmVmaXg6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tOU1N0cmluZ0V4dHJhcy5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL19XS05TU3RyaW5nRXh0cmFzLm1tOiBBZGRlZC4KKyAgICAgICAgKGNhblVzZUZh
c3RSZW5kZXJlcik6CisgICAgICAgICgtW05TU3RyaW5nIF93ZWJfZHJhd0F0UG9pbnQ6Zm9udDp0
ZXh0Q29sb3I6XSk6CisgICAgICAgICgtW05TU3RyaW5nIF93ZWJfd2lkdGhXaXRoRm9udDpdKToK
KyAgICAgICAgKC1bTlNTdHJpbmcgX3dlYl9zdHJpbmdCeUFiYnJldmlhdGluZ1dpdGhUaWxkZUlu
UGF0aF0pOgorICAgICAgICAoLVtOU1N0cmluZyBfd2Via2l0X2lzQ2FzZUluc2Vuc2l0aXZlRXF1
YWxUb1N0cmluZzpdKToKKyAgICAgICAgKC1bTlNTdHJpbmcgX3dlYmtpdF9oYXNDYXNlSW5zZW5z
aXRpdmVQcmVmaXg6XSk6CisgICAgICAgICgtW05TU3RyaW5nIF93ZWJraXRfaGFzQ2FzZUluc2Vu
c2l0aXZlU3VmZml4Ol0pOgorICAgICAgICAoLVtOU1N0cmluZyBfd2Via2l0X2ZpbGVuYW1lQnlG
aXhpbmdJbGxlZ2FsQ2hhcmFjdGVyc10pOgorICAgICAgICAoLVtOU1N0cmluZyBfd2Via2l0X3N0
cmluZ0J5VHJpbW1pbmdXaGl0ZXNwYWNlXSk6CisgICAgICAgICgtW05TU3RyaW5nIF93ZWJraXRf
Zml4ZWRDYXJib25QT1NJWFBhdGhdKToKKyAgICAgICAgKCtbTlNTdHJpbmcgX3dlYmtpdF9sb2Nh
bENhY2hlRGlyZWN0b3J5V2l0aEJ1bmRsZUlkZW50aWZpZXI6XSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tOU1VSTEV4dHJhcy5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL19XS05TVVJMRXh0cmFzLm1tOiBBZGRlZC4KKyAgICAgICAgKCtbTlNVUkwg
X3dlYl9VUkxXaXRoVXNlclR5cGVkU3RyaW5nOl0pOgorICAgICAgICAoK1tOU1VSTCBfd2Via2l0
X1VSTFdpdGhVc2VyVHlwZWRTdHJpbmc6cmVsYXRpdmVUb1VSTDpdKToKKyAgICAgICAgKCtbTlNV
UkwgX3dlYmtpdF9VUkxXaXRoVXNlclR5cGVkU3RyaW5nOl0pOgorICAgICAgICAoK1tOU1VSTCBf
d2ViX1VSTFdpdGhEYXRhQXNTdHJpbmc6XSk6CisgICAgICAgICgrW05TVVJMIF93ZWJfVVJMV2l0
aERhdGFBc1N0cmluZzpyZWxhdGl2ZVRvVVJMOl0pOgorICAgICAgICAoK1tOU1VSTCBfd2ViX1VS
TFdpdGhEYXRhOl0pOgorICAgICAgICAoK1tOU1VSTCBfd2ViX1VSTFdpdGhEYXRhOnJlbGF0aXZl
VG9VUkw6XSk6CisgICAgICAgICgtW05TVVJMIF93ZWJfb3JpZ2luYWxEYXRhXSk6CisgICAgICAg
ICgtW05TVVJMIF93ZWJfb3JpZ2luYWxEYXRhQXNTdHJpbmddKToKKyAgICAgICAgKC1bTlNVUkwg
X3dlYl91c2VyVmlzaWJsZVN0cmluZ10pOgorICAgICAgICAoLVtOU1VSTCBfd2ViX2lzRW1wdHld
KToKKyAgICAgICAgKC1bTlNVUkwgX3dlYl9VUkxDU3RyaW5nXSk6CisgICAgICAgICgtW05TVVJM
IF93ZWJraXRfY2Fub25pY2FsaXplXSk6CisgICAgICAgICgtW05TVVJMIF93ZWJraXRfY2Fub25p
Y2FsaXplX3dpdGhfd3RmXSk6CisgICAgICAgICgtW05TVVJMIF93ZWJraXRfVVJMQnlSZW1vdmlu
Z0ZyYWdtZW50XSk6CisgICAgICAgICgtW05TVVJMIF93ZWJfVVJMQnlSZW1vdmluZ1VzZXJJbmZv
XSk6CisgICAgICAgICgtW05TVVJMIF93ZWJraXRfaXNKYXZhU2NyaXB0VVJMXSk6CisgICAgICAg
ICgtW05TVVJMIF93ZWJraXRfc2NyaXB0SWZKYXZhU2NyaXB0VVJMXSk6CisgICAgICAgICgtW05T
VVJMIF93ZWJraXRfaXNGaWxlVVJMXSk6CisgICAgICAgICgtW05TVVJMIF93ZWJfc2NoZW1lU2Vw
YXJhdG9yV2l0aG91dENvbG9uXSk6CisgICAgICAgICgtW05TVVJMIF93ZWJfZGF0YUZvclVSTENv
bXBvbmVudFR5cGU6XSk6CisgICAgICAgICgtW05TVVJMIF93ZWJfc2NoZW1lRGF0YV0pOgorICAg
ICAgICAoLVtOU1VSTCBfd2ViX2hvc3REYXRhXSk6CisgICAgICAgICgtW05TVVJMIF93ZWJfaG9z
dFN0cmluZ10pOgorICAgICAgICAoLVtOU1VSTCBfd2Via2l0X3N1Z2dlc3RlZEZpbGVuYW1lV2l0
aE1JTUVUeXBlOl0pOgorICAgICAgICAoLVtOU1VSTCBfd2Via2l0X1VSTEZyb21VUkxPclNjaGVt
ZWxlc3NGaWxlVVJMXSk6CisgICAgICAgICgtW05TU3RyaW5nIF93ZWJfaXNVc2VyVmlzaWJsZVVS
TF0pOgorICAgICAgICAoLVtOU1N0cmluZyBfd2Via2l0X2lzSmF2YVNjcmlwdFVSTF0pOgorICAg
ICAgICAoLVtOU1N0cmluZyBfd2Via2l0X2lzRmlsZVVSTF0pOgorICAgICAgICAoLVtOU1N0cmlu
ZyBfd2Via2l0X3N0cmluZ0J5UmVwbGFjaW5nVmFsaWRQZXJjZW50RXNjYXBlc10pOgorICAgICAg
ICAoLVtOU1N0cmluZyBfd2Via2l0X3NjcmlwdElmSmF2YVNjcmlwdFVSTF0pOgorICAgICAgICAo
LVtOU1N0cmluZyBfd2ViX2RlY29kZUhvc3ROYW1lXSk6CisgICAgICAgICgtW05TU3RyaW5nIF93
ZWJfZW5jb2RlSG9zdE5hbWVdKToKKyAgICAgICAgKC1bTlNTdHJpbmcgX3dlYmtpdF9kZWNvZGVI
b3N0TmFtZV0pOgorICAgICAgICAoLVtOU1N0cmluZyBfd2Via2l0X2VuY29kZUhvc3ROYW1lXSk6
CisgICAgICAgICgtW05TU3RyaW5nIF93ZWJraXRfcmFuZ2VPZlVSTFNjaGVtZV0pOgorICAgICAg
ICAoLVtOU1N0cmluZyBfd2Via2l0X2xvb2tzTGlrZUFic29sdXRlVVJMXSk6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL0dyb3VwQWN0aXZpdGllcy9Hcm91cEFjdGl2aXRpZXNTZXNzaW9uTm90
aWZpZXIubW06CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL01vZGVsRWxlbWVudENvbnRyb2xs
ZXJDb2NvYS5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvU3lzdGVtUHJldmlld0NvbnRy
b2xsZXJDb2NvYS5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVVJMU2NoZW1lSGFu
ZGxlckNvY29hLm1tOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIG1hYy9NaWdyYXRlSGVhZGVyc0Zyb21XZWJLaXRMZWdhY3kubWFrZToKKwog
MjAyMS0wOS0xMyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbbWFjT1NdIC10b2dnbGVBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb246IG1lbnUgaXRl
bSB2YWxpZGF0aW9uIHNob3VsZG4ndCByZXF1aXJlIHBvc3QtbGF5b3V0IGVkaXRvciBzdGF0ZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L0NoYW5nZUxvZwppbmRleCAzM2YxMDljZjMwMDdmNDBmNjNlNWYzNTY2MThjNmUxZTNi
OWI4ZDEzLi4wOTIzYzBjYzJmYjk5OWQwMjE2ZjVhOWM5ZWVmZDQ3NzdmYWVjYWRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIxLTA5LTEzICBBbGV4IENocmlzdGVu
c2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSBmb3IgU2Fm
YXJpIHRvIHN0b3AgdXNpbmcgV2ViS2l0TGVnYWN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzAyMzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdExlZ2FjeS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorCiAyMDIxLTA5LTA3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAK
ICAgICAgICAgSW1wbGVtZW50IG9yaWdpbiBwYXJ0aXRpb25pbmcgKHRvcC1vcmlnaW4vZnJhbWUt
b3JpZ2luKSBmb3IgQnJvYWRjYXN0Q2hhbm5lbApkaWZmIC0tZ2l0IGEvU291cmNlL01ha2VmaWxl
IGIvU291cmNlL01ha2VmaWxlCmluZGV4IDEzOWRkY2IwMWZiNjA2ZDQ3N2U1ZDkzYjgwYmE0NDkw
OGQ4ZDdjODYuLjVjYmNiYTZjYjVhM2Q1YzQ4MWViZjFlMjA3OTU5M2IwZGY4OGM0N2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9NYWtlZmlsZQorKysgYi9Tb3VyY2UvTWFrZWZpbGUKQEAgLTE3LDcgKzE3
LDcgQEAgaWZlcSAoaW9zbWFjLCQoU0RLX1ZBUklBTlQpKQogCVdFQklOU1BFQ1RPUlVJX01PRFVM
RSA9CiBlbmRpZgogCi1NT0RVTEVTID0gYm1hbGxvYyBXVEYgSmF2YVNjcmlwdENvcmUgVGhpcmRQ
YXJ0eSBXZWJDb3JlICQoV0VCSU5TUEVDVE9SVUlfTU9EVUxFKSBXZWJLaXRMZWdhY3kgV2ViS2l0
CitNT0RVTEVTID0gYm1hbGxvYyBXVEYgSmF2YVNjcmlwdENvcmUgVGhpcmRQYXJ0eSBXZWJDb3Jl
ICQoV0VCSU5TUEVDVE9SVUlfTU9EVUxFKSBXZWJLaXQKIAogZGVmaW5lIGJ1aWxkX3RhcmdldF9m
b3JfZWFjaF9tb2R1bGUKIAlmb3IgZGlyIGluICQoTU9EVUxFUyk7IGRvIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ29uZmlndXJhdGlvbnMvV2ViS2l0LnhjY29uZmlnIGIvU291cmNlL1dl
YktpdC9Db25maWd1cmF0aW9ucy9XZWJLaXQueGNjb25maWcKaW5kZXggZjM1NjMzYzdhNGRhZjg3
NzY1YTkzOWFiMWYxNGZmNTM2ZTc0YzE5Yy4uNGNmZjBjMTZkZTI4OGQ0MWNjNzU2Zjg2ZThkNDdh
ZDdlODZkYzU3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Db25maWd1cmF0aW9ucy9XZWJL
aXQueGNjb25maWcKKysrIGIvU291cmNlL1dlYktpdC9Db25maWd1cmF0aW9ucy9XZWJLaXQueGNj
b25maWcKQEAgLTE0Niw3ICsxNDYsNyBAQCBXS19MSUJORVRXT1JLRVhURU5TSU9OX0xERkxBR1Nf
bWFjY2F0YWx5c3QgPSAtbG5ldHdvcmtleHRlbnNpb247CiBXS19MSUJORVRXT1JLRVhURU5TSU9O
X0xERkxBR1NfbWFjb3N4ID0gLXdlYWtfbGlicmFyeSAvdXNyL2xpYi9saWJuZXR3b3JrZXh0ZW5z
aW9uLmR5bGliOwogV0tfTElCTkVUV09SS0VYVEVOU0lPTl9MREZMQUdTX3R2b3MgPSA7CiAKLUZS
QU1FV09SS19BTkRfTElCUkFSWV9MREZMQUdTID0gLWxvYmpjIC1mcmFtZXdvcmsgQ0ZOZXR3b3Jr
IC1mcmFtZXdvcmsgQ29yZUF1ZGlvIC1mcmFtZXdvcmsgQ29yZUZvdW5kYXRpb24gLWZyYW1ld29y
ayBDb3JlR3JhcGhpY3MgLWZyYW1ld29yayBDb3JlVGV4dCAtZnJhbWV3b3JrIEZvdW5kYXRpb24g
LWZyYW1ld29yayBJbWFnZUlPIC1mcmFtZXdvcmsgSU9LaXQgLWZyYW1ld29yayBJT1N1cmZhY2Ug
LWZyYW1ld29yayBXZWJLaXRMZWdhY3kgLWxuZXR3b3JrIC1mcmFtZXdvcmsgTWV0YWwgJChXS19B
Q0NFU1NJQklMSVRZX0xERkxBR1MpICQoV0tfQVBQS0lUX0xERkxBR1MpICQoV0tfQkFDS0JPQVJE
X1NFUlZJQ0VTX0xERkxBR1MpICQoV0tfUlVOTklOR0JPQVJEX1NFUlZJQ0VTX0xERkxBR1MpICQo
V0tfQVVUSEtJVF9MREZMQUdTKSAkKFdLX0NBUkJPTl9MREZMQUdTKSAkKFdLX0NPTlRBQ1RTX0xE
RkxBR1MpICQoV0tfQ09SRV9QUkVESUNUSU9OX0xERkxBR1MpICQoV0tfQ09SRV9TRVJWSUNFU19M
REZMQUdTKSAkKFdLX0dSQVBISUNTX1NFUlZJQ0VTX0xERkxBR1MpICQoV0tfTElCTkVUV09SS0VY
VEVOU0lPTl9MREZMQUdTKSAkKFdLX0xJQlNBTkRCT1hfTERGTEFHUykgJChXS19MSUJXRUJSVENf
TERGTEFHUykgJChXS19NT0JJTEVfQ09SRV9TRVJWSUNFU19MREZMQUdTKSAkKFdLX01PQklMRV9H
RVNUQUxUX0xERkxBR1MpICQoV0tfUERGS0lUX0xERkxBR1MpICQoV0tfUFJPVE9UWVBFX1RPT0xT
X0xERkxBR1MpICQoV0tfU0FGRV9CUk9XU0lOR19MREZMQUdTKSAkKFdLX1NFQ1VSSVRZX0lOVEVS
RkFDRV9MREZMQUdTKSAkKFdLX1VJS0lUX0xERkxBR1MpICQoV0tfVU5JRk9STV9UWVBFX0lERU5U
SUZJRVJTX0xERkxBR1MpICQoV0tfVVJMX0ZPUk1BVFRJTkdfTERGTEFHUykgJChXS19XRUJJTlNQ
RUNUT1JVSV9MREZMQUdTKSAkKFdLX0NPT1JESU5BVE9SX0xERkxBR1MpOworRlJBTUVXT1JLX0FO
RF9MSUJSQVJZX0xERkxBR1MgPSAtbG9iamMgLWZyYW1ld29yayBDRk5ldHdvcmsgLWZyYW1ld29y
ayBDb3JlQXVkaW8gLWZyYW1ld29yayBDb3JlRm91bmRhdGlvbiAtZnJhbWV3b3JrIENvcmVHcmFw
aGljcyAtZnJhbWV3b3JrIENvcmVUZXh0IC1mcmFtZXdvcmsgRm91bmRhdGlvbiAtZnJhbWV3b3Jr
IEltYWdlSU8gLWZyYW1ld29yayBJT0tpdCAtZnJhbWV3b3JrIElPU3VyZmFjZSAtbG5ldHdvcmsg
LWZyYW1ld29yayBNZXRhbCAkKFdLX0FDQ0VTU0lCSUxJVFlfTERGTEFHUykgJChXS19BUFBLSVRf
TERGTEFHUykgJChXS19CQUNLQk9BUkRfU0VSVklDRVNfTERGTEFHUykgJChXS19SVU5OSU5HQk9B
UkRfU0VSVklDRVNfTERGTEFHUykgJChXS19BVVRIS0lUX0xERkxBR1MpICQoV0tfQ0FSQk9OX0xE
RkxBR1MpICQoV0tfQ09OVEFDVFNfTERGTEFHUykgJChXS19DT1JFX1BSRURJQ1RJT05fTERGTEFH
UykgJChXS19DT1JFX1NFUlZJQ0VTX0xERkxBR1MpICQoV0tfR1JBUEhJQ1NfU0VSVklDRVNfTERG
TEFHUykgJChXS19MSUJORVRXT1JLRVhURU5TSU9OX0xERkxBR1MpICQoV0tfTElCU0FOREJPWF9M
REZMQUdTKSAkKFdLX0xJQldFQlJUQ19MREZMQUdTKSAkKFdLX01PQklMRV9DT1JFX1NFUlZJQ0VT
X0xERkxBR1MpICQoV0tfTU9CSUxFX0dFU1RBTFRfTERGTEFHUykgJChXS19QREZLSVRfTERGTEFH
UykgJChXS19QUk9UT1RZUEVfVE9PTFNfTERGTEFHUykgJChXS19TQUZFX0JST1dTSU5HX0xERkxB
R1MpICQoV0tfU0VDVVJJVFlfSU5URVJGQUNFX0xERkxBR1MpICQoV0tfVUlLSVRfTERGTEFHUykg
JChXS19VTklGT1JNX1RZUEVfSURFTlRJRklFUlNfTERGTEFHUykgJChXS19VUkxfRk9STUFUVElO
R19MREZMQUdTKSAkKFdLX1dFQklOU1BFQ1RPUlVJX0xERkxBR1MpICQoV0tfQ09PUkRJTkFUT1Jf
TERGTEFHUyk7CiAKIC8vIFByZXZlbnQgQysrIHN0YW5kYXJkIGxpYnJhcnkgYmFzaWNfc3RyaW5n
c3RyZWFtLCBvcGVyYXRvciBuZXcsIGRlbGV0ZSBhbmQgdGhlaXIgcmVsYXRlZCBleGNlcHRpb24g
dHlwZXMgZnJvbSBiZWluZyBleHBvcnRlZCBhcyB3ZWFrIHN5bWJvbHMuCiBVTkVYUE9SVEVEX1NZ
TUJPTF9MREZMQUdTID0gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aVElTdDliYWRfYWxs
b2MgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aVElTdDlleGNlcHRpb24gLVdsLC11bmV4
cG9ydGVkX3N5bWJvbCAtV2wsX19aVFNTdDliYWRfYWxsb2MgLVdsLC11bmV4cG9ydGVkX3N5bWJv
bCAtV2wsX19aVFNTdDlleGNlcHRpb24gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aZGxQ
dlNfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWm53bVB2IC1XbCwtdW5leHBvcnRlZF9z
eW1ib2wgLVdsLF9fWm53bSAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pUVk5TdDNfXzEx
N2JhZF9mdW5jdGlvbl9jYWxsRSAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pUQ05TdDNf
XzExOGJhc2ljX3N0cmluZ3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9y
SWNFRUVFMF9OU18xM2Jhc2ljX2lzdHJlYW1JY1MyX0VFIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wg
LVdsLF9fWlRDTlN0M19fMTE4YmFzaWNfc3RyaW5nc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNF
RU5TXzlhbGxvY2F0b3JJY0VFRUUwX05TXzE0YmFzaWNfaW9zdHJlYW1JY1MyX0VFIC1XbCwtdW5l
eHBvcnRlZF9zeW1ib2wgLVdsLF9fWlRDTlN0M19fMTE4YmFzaWNfc3RyaW5nc3RyZWFtSWNOU18x
MWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUUxNl9OU18xM2Jhc2ljX29zdHJlYW1J
Y1MyX0VFIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWlRUTlN0M19fMTE4YmFzaWNfc3Ry
aW5nc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUUgLVdsLC11
bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aVFZOU3QzX18xMTViYXNpY19zdHJpbmdidWZJY05TXzEx
Y2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRSAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9s
IC1XbCxfX1pUVk5TdDNfXzExOGJhc2ljX3N0cmluZ3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0lj
RUVOU185YWxsb2NhdG9ySWNFRUVFIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWlRDTlN0
M19fMTE4YmFzaWNfc3RyaW5nc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0
b3JJY0VFRUU4X05TXzEzYmFzaWNfb3N0cmVhbUljUzJfRUU7CkBAIC0xNTksNyArMTU5LDYgQEAg
TElCV0VCUlRDX0xJQlJBUllfRElSX1VTRV9PVkVSUklERV9GUkFNRVdPUktTX0RJUl9ZRVMgPSAk
KFdLX09WRVJSSURFX0ZSQU1FV09SS1MKIAogT1RIRVJfTERGTEFHUyA9ICQoaW5oZXJpdGVkKSAt
aWZyYW1ld29yayIkKFNES19ESVIpJChTWVNURU1fTElCUkFSWV9ESVIpL1ByaXZhdGVGcmFtZXdv
cmtzIiAkKFVORVhQT1JURURfU1lNQk9MX0xERkxBR1MpICQoQVNBTl9PVEhFUl9MREZMQUdTKSAk
KEZSQU1FV09SS19BTkRfTElCUkFSWV9MREZMQUdTKSAkKFdLX1JFTE9DQVRBQkxFX0ZSQU1FV09S
S19MREZMQUdTKTsKIAotUkVFWFBPUlRFRF9GUkFNRVdPUktfTkFNRVMgPSBXZWJLaXRMZWdhY3k7
CiBSRUVYUE9SVEVEX0ZSQU1FV09SS19OQU1FU1tzZGs9bWFjb3N4Kl0gPSAkKGluaGVyaXRlZCkg
V2ViQ29yZTsKIAogLy8gRklYTUU6IFJlbW92ZSAtcmVleHBvcnRfaW5zdGFsbF9uYW1lIG9uY2Ug
cmRhcjovL3Byb2JsZW0vMzA4MjAyMzMgaXMgZml4ZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L2NvY29hL1ByaXZhdGVD
bGlja01lYXN1cmVtZW50RGFlbW9uQ29ubmVjdGlvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9jb2NvYS9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudERhZW1vbkNvbm5lY3Rpb25Db2NvYS5tbQppbmRleCAxYzZlNmJmZTczMTUzOWVh
MTE4NDM3M2E4Y2U2YmE1NWUyYTljOWI5Li5lNzUzOTNiMzI3ZmY1ZmI1ODkyNzA0NWFhY2FjZjIy
OWUyZTg2YTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZh
dGVDbGlja01lYXN1cmVtZW50L2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ29u
bmVjdGlvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25Db25u
ZWN0aW9uQ29jb2EubW0KQEAgLTQwLDEzICs0MCwxOCBAQCB2b2lkIENvbm5lY3Rpb246OmluaXRp
YWxpemVDb25uZWN0aW9uSWZOZWVkZWQoKSBjb25zdAogewogICAgIGlmIChtX2Nvbm5lY3Rpb24p
CiAgICAgICAgIHJldHVybjsKKyAgICBXVEZMb2dBbHdheXMoIk1BQ0ggU0VSVklDRSAlcyIsIG1f
bWFjaFNlcnZpY2VOYW1lLmRhdGEoKSk7CiAgICAgbV9jb25uZWN0aW9uID0gYWRvcHRPU09iamVj
dCh4cGNfY29ubmVjdGlvbl9jcmVhdGVfbWFjaF9zZXJ2aWNlKG1fbWFjaFNlcnZpY2VOYW1lLmRh
dGEoKSwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgMCkpOwogICAgIHhwY19jb25uZWN0aW9u
X3NldF9ldmVudF9oYW5kbGVyKG1fY29ubmVjdGlvbi5nZXQoKSwgW3dlYWtUaGlzID0gbWFrZVdl
YWtQdHIoKnRoaXMpXSh4cGNfb2JqZWN0X3QgZXZlbnQpIHsKICAgICAgICAgaWYgKCF3ZWFrVGhp
cykKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYgKGV2ZW50ID09IFhQQ19FUlJPUl9D
T05ORUNUSU9OX0lOVkFMSUQpCi0gICAgICAgICAgICBXVEZMb2dBbHdheXMoIkZhaWxlZCB0byBj
b25uZWN0IHRvIG1hY2ggc2VydmljZSAlcywgbGlrZWx5IGJlY2F1c2UgaXQgaXMgbm90IHJlZ2lz
dGVyZWQgd2l0aCBsYXVuY2hkIiwgd2Vha1RoaXMtPm1fbWFjaFNlcnZpY2VOYW1lLmRhdGEoKSk7
Ci0gICAgICAgIGlmIChldmVudCA9PSBYUENfRVJST1JfQ09OTkVDVElPTl9JTlRFUlJVUFRFRCkg
eworICAgICAgICBpZiAoZXZlbnQgPT0gWFBDX0VSUk9SX0NPTk5FQ1RJT05fSU5WQUxJRCkgewor
I2lmIDEKKyAgICAgICAgICAgIGF1dG8gcmVhc29uID0geHBjX2Nvbm5lY3Rpb25fY29weV9pbnZh
bGlkYXRpb25fcmVhc29uKGV2ZW50KTsKKyAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiRmFpbGVk
IHRvIGNvbm5lY3QgdG8gbWFjaCBzZXJ2aWNlICVzLCByZWFzb246ICVzIiwgd2Vha1RoaXMtPm1f
bWFjaFNlcnZpY2VOYW1lLmRhdGEoKSwgcmVhc29uKTsKKyAgICAgICAgICAgIGZyZWUocmVhc29u
KTsKKyNlbmRpZgorICAgICAgICB9IGVsc2UgaWYgKGV2ZW50ID09IFhQQ19FUlJPUl9DT05ORUNU
SU9OX0lOVEVSUlVQVEVEKSB7CiAgICAgICAgICAgICAvLyBEYWVtb24gY3Jhc2hlZCwgd2Ugd2ls
bCBuZWVkIHRvIG1ha2UgYSBuZXcgY29ubmVjdGlvbiB0byBhIG5ldyBpbnN0YW5jZSBvZiB0aGUg
ZGFlbW9uLgogICAgICAgICAgICAgd2Vha1RoaXMtPm1fY29ubmVjdGlvbiA9IG51bGxwdHI7CiAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUmVzb3VyY2VzL1NhbmRib3hQcm9m
aWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5OZXR3b3JraW5nLnNiIGIvU291cmNlL1dlYktpdC9S
ZXNvdXJjZXMvU2FuZGJveFByb2ZpbGVzL2lvcy9jb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtpbmcu
c2IKaW5kZXggYTM3NjcwMmE1ZDI2ZDM1NzcwMGY3YzViOWFiN2YwYjBiZWRkYTZjZi4uODY3NjI3
NjNjZjFlOGQyNTMzYTNmMTUyNzM1ZjQxMjgzY2ZiZTM1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9SZXNvdXJjZXMvU2FuZGJveFByb2ZpbGVzL2lvcy9jb20uYXBwbGUuV2ViS2l0Lk5ldHdv
cmtpbmcuc2IKKysrIGIvU291cmNlL1dlYktpdC9SZXNvdXJjZXMvU2FuZGJveFByb2ZpbGVzL2lv
cy9jb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtpbmcuc2IKQEAgLTMwNCw2ICszMDQsOSBAQAogKGFs
bG93IHN5c2N0bC1yZWFkCiAgICAoc3lzY3RsLW5hbWUgImtlcm4uYm9vdHNlc3Npb251dWlkIikp
CiAKKyhhbGxvdyBtYWNoLWxvb2t1cCAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS53ZWJraXQuYWRh
dHRyaWJ1dGlvbmQuc2VydmljZSIpKQorKGFsbG93IG1hY2gtbG9va3VwIChnbG9iYWwtbmFtZSAi
b3JnLndlYmtpdC5wY210ZXN0ZGFlbW9uLnNlcnZpY2UiKSkKKwogKGRlbnkgZmlsZS1tYXAtZXhl
Y3V0YWJsZSkKIChkZW55IGZpbGUtd3JpdGUtbW91bnQgZmlsZS13cml0ZS11bm1vdW50KQogKGFs
bG93IGZpbGUtcmVhZC1tZXRhZGF0YQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL0NvY29hL1dlYktpdC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dlYktp
dC5oCmluZGV4IGYwNDU5OTU4ZTEzZjFhZTJlY2M4ZmM4NjkyMWMxMGRjN2QyMmI4MWEuLjJhM2Jm
YWFlNmQ3MzNlNjdmZWFlNmEyMzRlYTQxNDkzNTNmZWM3NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XZWJLaXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvQ29jb2EvV2ViS2l0LmgKQEAgLTY3LDUgKzY3LDYgQEAKICNpbXBvcnQgPFdlYktpdC9X
S1dpbmRvd0ZlYXR1cmVzLmg+CiAKICNpZiAhZGVmaW5lZChUQVJHRVRfT1NfTUFDQ0FUQUxZU1Qp
IHx8ICFUQVJHRVRfT1NfTUFDQ0FUQUxZU1QKLSNpbXBvcnQgPFdlYktpdC9XZWJLaXRMZWdhY3ku
aD4KK0BjbGFzcyBXZWJWaWV3OworQGNsYXNzIERPTVJhbmdlOwogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXND
b2NvYS50eHQKaW5kZXggMTFlNzI5Njg0ZTRhMmFkZjBiNWNiODkzYWQ2NzkxZDkwMDU4MjYwNS4u
NDdiZGZlMGZkMzZlYzI3NWY3YjBmNTA5MDZlNGM0ODBmZjJiZGU1YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0Nv
Y29hLnR4dApAQCAtMjg4LDkgKzI4OCwxNCBAQCBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3Bl
Y3RvckNvbmZpZ3VyYXRpb24ubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yVGVz
dGluZy5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5mby5t
bQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24ubW0KK1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLTlNTdHJpbmdFeHRyYXMubW0KK1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
TlNGaWxlTWFuYWdlckV4dHJhcy5tbQorVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tOU0RhdGFFeHRy
YXMubW0KK1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLTlNVUkxFeHRyYXMubW0KIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLSW5zcGVjdG9yV2luZG93Lm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0lu
dGVybmFsRGVidWdGZWF0dXJlLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0xpbmtJY29uUGFy
YW1ldGVycy5tbQorVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tMb2NhbGl6YWJsZVN0cmluZ3MubW0K
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1tCiBVSVBy
b2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLm1tCiBV
SVByb2Nlc3MvQVBJL0NvY29hL19XS1Jlc291cmNlTG9hZEluZm8ubW0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9MZWdhY3lCdW5kbGVGb3JDbGFzcy5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9MZWdhY3lCdW5kbGVGb3JDbGFzcy5t
bQppbmRleCA3NDE2ZjIzNTIyNzQ2MWE4YTIzYmE4ZTYyNjJmNmE0YjEyOGMwNGY4Li5kMTYyYjUy
YWE3ZTRhN2ZmOWQ5ZmIwYWNmNDI5YWE0ZTY4M2RkYWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvTGVnYWN5QnVuZGxlRm9yQ2xhc3MubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0xlZ2FjeUJ1bmRsZUZvckNsYXNzLm1tCkBA
IC0yMiw3ICsyMiw3IEBACiAgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCiAgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KLQorLyoKICNpbXBvcnQgPFdlYktpdExlZ2FjeS9XZWJBcmNoaXZl
Lmg+CiAjaW1wb3J0IDxXZWJLaXRMZWdhY3kvV2ViUmVzb3VyY2UuaD4KIApAQCAtNDIsMyArNDIs
NCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19CRUdJTgogREVGSU5FX0JVTkRM
RV9GT1JfQ0xBU1MoV2ViQXJjaGl2ZSkKIERFRklORV9CVU5ETEVfRk9SX0NMQVNTKFdlYlJlc291
cmNlKQogQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECisqLwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0xvY2FsaXphYmxlU3RyaW5n
cy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0xvY2FsaXphYmxlU3Ry
aW5ncy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjk1ZTAxOTg5YTZmNTE4ZThkMjQxZjMxOGM2MGFmMGQzNjhiZGU0
NGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLTG9jYWxpemFibGVTdHJpbmdzLmgKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwNS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIp
IG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSA8V2ViS2l0L1dLRGVjbGFyYXRpb25TcGVjaWZpZXJzLmg+CisKKyNpZmRlZiBfX09CSkNf
XworQGNsYXNzIE5TQnVuZGxlOwordHlwZWRlZiBOU1N0cmluZyAqV2ViTG9jYWxpemVkU3RyaW5n
VHlwZTsKKyNlbHNlCisjaWZkZWYgX19jcGx1c3BsdXMKK2NsYXNzIE5TQnVuZGxlOworI2Vsc2UK
K3R5cGVkZWYgc3RydWN0IE5TQnVuZGxlIE5TQnVuZGxlOworI2VuZGlmCit0eXBlZGVmIENGU3Ry
aW5nUmVmIFdlYkxvY2FsaXplZFN0cmluZ1R5cGU7CisjZW5kaWYKKwordHlwZWRlZiBzdHJ1Y3Qg
eworICAgIGNvbnN0IGNoYXIgKmlkZW50aWZpZXI7CisgICAgX191bnNhZmVfdW5yZXRhaW5lZCBO
U0J1bmRsZSAqYnVuZGxlOworfSBXZWJMb2NhbGl6YWJsZVN0cmluZ3NCdW5kbGU7CisKKyNpZmRl
ZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworV0tfRVhQT1JUIFdlYkxvY2Fs
aXplZFN0cmluZ1R5cGUgV2ViTG9jYWxpemVkU3RyaW5nKFdlYkxvY2FsaXphYmxlU3RyaW5nc0J1
bmRsZSogYnVuZGxlLCBjb25zdCBjaGFyKiBrZXkpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30K
KyNlbmRpZgorCitzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKGZvcm1hdF9hcmcoMykpKSBX
ZWJMb2NhbGl6ZWRTdHJpbmdUeXBlIFdlYkxvY2FsaXplZFN0cmluZ1dpdGhWYWx1ZShXZWJMb2Nh
bGl6YWJsZVN0cmluZ3NCdW5kbGUqIGJ1bmRsZSwgY29uc3QgY2hhcioga2V5LCBjb25zdCBjaGFy
KiB2YWx1ZSkKK3sKKyAgICByZXR1cm4gV2ViTG9jYWxpemVkU3RyaW5nKGJ1bmRsZSwga2V5KTsK
K30KKworI2lmZGVmIEZSQU1FV09SS19OQU1FCisKKyNkZWZpbmUgTE9DQUxJWkFCTEVfU1RSSU5H
U19CVU5ETEUoRikgTE9DQUxJWkFCTEVfU1RSSU5HU19CVU5ETEVfSEVMUEVSKEYpCisjZGVmaW5l
IExPQ0FMSVpBQkxFX1NUUklOR1NfQlVORExFX0hFTFBFUihGKSBGICMjIExvY2FsaXphYmxlU3Ry
aW5nc0J1bmRsZQorCitfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJoaWRkZW4iKSkpCitleHRl
cm4gV2ViTG9jYWxpemFibGVTdHJpbmdzQnVuZGxlIExPQ0FMSVpBQkxFX1NUUklOR1NfQlVORExF
KEZSQU1FV09SS19OQU1FKTsKKworI2RlZmluZSBVSV9TVFJJTkcoc3RyaW5nLCBjb21tZW50KSBX
ZWJMb2NhbGl6ZWRTdHJpbmdXaXRoVmFsdWUoJkxPQ0FMSVpBQkxFX1NUUklOR1NfQlVORExFKEZS
QU1FV09SS19OQU1FKSwgc3RyaW5nLCBzdHJpbmcpCisjZGVmaW5lIFVJX1NUUklOR19LRVkoc3Ry
aW5nLCBrZXksIGNvbW1lbnQpIFdlYkxvY2FsaXplZFN0cmluZ1dpdGhWYWx1ZSgmTE9DQUxJWkFC
TEVfU1RSSU5HU19CVU5ETEUoRlJBTUVXT1JLX05BTUUpLCBrZXksIHN0cmluZykKKworI2Vsc2UK
KworI2RlZmluZSBVSV9TVFJJTkcoc3RyaW5nLCBjb21tZW50KSBXZWJMb2NhbGl6ZWRTdHJpbmdX
aXRoVmFsdWUoMCwgc3RyaW5nLCBzdHJpbmcpCisjZGVmaW5lIFVJX1NUUklOR19LRVkoc3RyaW5n
LCBrZXksIGNvbW1lbnQpIFdlYkxvY2FsaXplZFN0cmluZ1dpdGhWYWx1ZSgwLCBrZXksIHN0cmlu
ZykKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLTG9jYWxpemFibGVTdHJpbmdzLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0xvY2FsaXphYmxlU3RyaW5ncy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNDljYWU2MDczNDc0
MTJkNmI3MWU5ZTI5NGIxZWZiNGFkMjRkOGY1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0xvY2FsaXphYmxlU3RyaW5ncy5tbQpAQCAtMCww
ICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA1IEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBv
ZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICog
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIl9XS0xvY2FsaXphYmxlU3RyaW5ncy5oIgor
CisjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgorI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4K
KyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5o
PgorCitXZWJMb2NhbGl6YWJsZVN0cmluZ3NCdW5kbGUgV2ViS2l0TG9jYWxpemFibGVTdHJpbmdz
QnVuZGxlID0geyAiY29tLmFwcGxlLldlYktpdCIsIDAgfTsKKworTlNTdHJpbmcgKldlYkxvY2Fs
aXplZFN0cmluZyhXZWJMb2NhbGl6YWJsZVN0cmluZ3NCdW5kbGUgKnN0cmluZ3NCdW5kbGUsIGNv
bnN0IGNoYXIgKmtleSkKK3sKKyAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIG5vdCB0aHJlYWQtc2Fm
ZSBkdWUgYXQgbGVhc3QgdG8gaXRzIHVuZ3VhcmRlZCB1c2Ugb2YgdGhlIG1haW5CdW5kbGUgc3Rh
dGljIHZhcmlhYmxlCisgICAgLy8gYW5kIGl0cyB1c2Ugb2YgW05TQnVuZGxlIGxvY2FsaXplZFN0
cmluZ0ZvcktleTo6Ol0sIHdoaWNoIGlzIG5vdCBndWFyYW50ZWVkIHRvIGJlIHRocmVhZC1zYWZl
LiBJZgorICAgIC8vIHdlIGRlY2lkZSB3ZSBuZWVkIHRvIHVzZSB0aGlzIG9uIGJhY2tncm91bmQg
dGhyZWFkcywgd2UnbGwgbmVlZCB0byBhZGQgbG9ja2luZyBoZXJlIGFuZCBtYWtlIHN1cmUKKyAg
ICAvLyBpdCBkb2Vzbid0IGFmZmVjdCBwZXJmb3JtYW5jZS4KKyNpZiAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworI2VuZGlmCisKKyAgICBOU0J1bmRs
ZSAqYnVuZGxlOworICAgIGlmIChzdHJpbmdzQnVuZGxlID09IE5VTEwpIHsKKyAgICAgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0J1bmRsZT4+IG1haW5CdW5kbGUgPSBbTlNC
dW5kbGUgbWFpbkJ1bmRsZV07CisgICAgICAgIEFTU0VSVChtYWluQnVuZGxlLmdldCgpKTsKKyAg
ICAgICAgYnVuZGxlID0gbWFpbkJ1bmRsZS5nZXQoKS5nZXQoKTsKKyAgICB9IGVsc2UgeworICAg
ICAgICBidW5kbGUgPSBzdHJpbmdzQnVuZGxlLT5idW5kbGU7CisgICAgICAgIGlmIChidW5kbGUg
PT0gbmlsKSB7CisgICAgICAgICAgICBidW5kbGUgPSBbTlNCdW5kbGUgYnVuZGxlV2l0aElkZW50
aWZpZXI6W05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4U3RyaW5nOnN0cmluZ3NCdW5kbGUtPmlkZW50
aWZpZXJdXTsKKyAgICAgICAgICAgIEFTU0VSVChidW5kbGUpOworICAgICAgICAgICAgc3RyaW5n
c0J1bmRsZS0+YnVuZGxlID0gYnVuZGxlOworICAgICAgICB9CisgICAgfQorICAgIE5TU3RyaW5n
ICpub3RGb3VuZCA9IEAibG9jYWxpemVkIHN0cmluZyBub3QgZm91bmQiOworICAgIGF1dG8ga2V5
U3RyaW5nID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhDU3RyaW5nTm9Db3B5KE5VTEwsIGtl
eSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBrQ0ZBbGxvY2F0b3JOdWxsKSk7CisgICAgTlNTdHJp
bmcgKnJlc3VsdCA9IFtidW5kbGUgbG9jYWxpemVkU3RyaW5nRm9yS2V5OihfX2JyaWRnZSBOU1N0
cmluZyAqKWtleVN0cmluZy5nZXQoKSB2YWx1ZTpub3RGb3VuZCB0YWJsZTpuaWxdOworICAgIEFT
U0VSVF9XSVRIX01FU1NBR0UocmVzdWx0ICE9IG5vdEZvdW5kLCAiY291bGQgbm90IGZpbmQgbG9j
YWxpemFibGUgc3RyaW5nICVzIGluIGJ1bmRsZSIsIGtleSk7CisgICAgcmV0dXJuIHJlc3VsdDsK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tOU0Rh
dGFFeHRyYXMuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tOU0RhdGFF
eHRyYXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lNGY1YzE4NTU0NzYzNWI5MjM4YzM1MTU4NGIyYzBiNjUyMGRi
Y2E2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS05TRGF0YUV4dHJhcy5oCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDUgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUg
bmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlv
bi5oPgorCisjZGVmaW5lIFdFQl9HVUVTU19NSU1FX1RZUEVfUEVFS19MRU5HVEggMTAyNFUKKwor
QGludGVyZmFjZSBOU0RhdGEgKFdlYk5TRGF0YUV4dHJhcykKKworLShCT09MKV93ZWJfaXNDYXNl
SW5zZW5zaXRpdmVFcXVhbFRvQ1N0cmluZzooY29uc3QgY2hhciAqKXN0cmluZzsKKy0oTlNNdXRh
YmxlRGljdGlvbmFyeSAqKV93ZWJraXRfcGFyc2VSRkM4MjJIZWFkZXJGaWVsZHM7CistIChCT09M
KV93ZWJfc3RhcnRzV2l0aEJsYW5rTGluZTsKKy0gKE5TSW50ZWdlcilfd2ViX2xvY2F0aW9uQWZ0
ZXJGaXJzdEJsYW5rTGluZTsKKworQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS05TRGF0YUV4dHJhcy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tOU0RhdGFFeHRyYXMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODIxODkxOGIwZGIy
MmJjMjk2NTVkNDlmYWViOGFkNjI5ZGJkY2JmZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tOU0RhdGFFeHRyYXMubW0KQEAgLTAsMCArMSwz
NzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAxOCBBcHBsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIl9X
S05TRGF0YUV4dHJhcy5oIgorCisjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgorI2ltcG9ydCA8
d3RmL1JldGFpblB0ci5oPgorCitAaW50ZXJmYWNlIE5TU3RyaW5nIChXZWJOU0RhdGFFeHRyYXNJ
bnRlcm5hbCkKKy0gKE5TU3RyaW5nICopX3dlYl9jYXBpdGFsaXplUkZDODIySGVhZGVyRmllbGRO
YW1lOworQGVuZAorCitAaW1wbGVtZW50YXRpb24gTlNTdHJpbmcgKFdlYk5TRGF0YUV4dHJhc0lu
dGVybmFsKQorCistIChOU1N0cmluZyAqKV93ZWJfY2FwaXRhbGl6ZVJGQzgyMkhlYWRlckZpZWxk
TmFtZQoreworICAgIENGU3RyaW5nUmVmIG5hbWUgPSAoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpc2Vs
ZjsKKyAgICBOU1N0cmluZyAqcmVzdWx0ID0gbmlsOworCisgICAgQ0ZJbmRleCBsZW4gPSBDRlN0
cmluZ0dldExlbmd0aChuYW1lKTsKKyAgICBjaGFyKiBjaGFyUHRyID0gbnVsbHB0cjsKKyAgICBV
bmlDaGFyKiB1bmlDaGFyUHRyID0gbnVsbHB0cjsKKyAgICBCb29sZWFuIHVzZVVuaUNoYXJQdHIg
PSBGQUxTRTsKKyAgICBCb29sZWFuIHNob3VsZENhcGl0YWxpemUgPSBUUlVFOworICAgIEJvb2xl
YW4gc29tZXRoaW5nQ2hhbmdlZCA9IEZBTFNFOworCisgICAgZm9yIChDRkluZGV4IGkgPSAwOyBp
IDwgbGVuOyBpICsrKSB7CisgICAgICAgIFVuaUNoYXIgY2ggPSBDRlN0cmluZ0dldENoYXJhY3Rl
ckF0SW5kZXgobmFtZSwgaSk7CisgICAgICAgIEJvb2xlYW4gcmVwbGFjZSA9IEZBTFNFOworICAg
ICAgICBpZiAoc2hvdWxkQ2FwaXRhbGl6ZSAmJiBjaCA+PSAnYScgJiYgY2ggPD0gJ3onKSB7Cisg
ICAgICAgICAgICBjaCA9IGNoICsgJ0EnIC0gJ2EnOworICAgICAgICAgICAgcmVwbGFjZSA9IFRS
VUU7CisgICAgICAgIH0gZWxzZSBpZiAoIXNob3VsZENhcGl0YWxpemUgJiYgY2ggPj0gJ0EnICYm
IGNoIDw9ICdaJykgeworICAgICAgICAgICAgY2ggPSBjaCArICdhJyAtICdBJzsKKyAgICAgICAg
ICAgIHJlcGxhY2UgPSBUUlVFOworICAgICAgICB9CisgICAgICAgIGlmIChyZXBsYWNlKSB7Cisg
ICAgICAgICAgICBpZiAoIXNvbWV0aGluZ0NoYW5nZWQpIHsKKyAgICAgICAgICAgICAgICBzb21l
dGhpbmdDaGFuZ2VkID0gVFJVRTsKKyAgICAgICAgICAgICAgICBpZiAoQ0ZTdHJpbmdHZXRCeXRl
cyhuYW1lLCBDRlJhbmdlTWFrZSgwLCBsZW4pLCBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwg
MCwgRkFMU0UsIE5VTEwsIDAsIE5VTEwpID09IGxlbikgeworICAgICAgICAgICAgICAgICAgICAv
LyBDYW4gYmUgZW5jb2RlZCBpbiBJU09MYXRpbjEKKyAgICAgICAgICAgICAgICAgICAgdXNlVW5p
Q2hhclB0ciA9IEZBTFNFOworICAgICAgICAgICAgICAgICAgICBjaGFyUHRyID0gc3RhdGljX2Nh
c3Q8Y2hhcio+KENGQWxsb2NhdG9yQWxsb2NhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbGVuICsg
MSwgMCkpOworICAgICAgICAgICAgICAgICAgICBDRlN0cmluZ0dldENTdHJpbmcobmFtZSwgY2hh
clB0ciwgbGVuKzEsIGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xKTsKKyAgICAgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICB1c2VVbmlDaGFyUHRyID0gVFJVRTsKKyAg
ICAgICAgICAgICAgICAgICAgdW5pQ2hhclB0ciA9IHN0YXRpY19jYXN0PFVuaUNoYXIqPihDRkFs
bG9jYXRvckFsbG9jYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGxlbiAqIHNpemVvZihVbmlDaGFy
KSwgMCkpOworICAgICAgICAgICAgICAgICAgICBDRlN0cmluZ0dldENoYXJhY3RlcnMobmFtZSwg
Q0ZSYW5nZU1ha2UoMCwgbGVuKSwgdW5pQ2hhclB0cik7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHVzZVVuaUNoYXJQdHIpCisgICAgICAgICAgICAg
ICAgdW5pQ2hhclB0cltpXSA9IGNoOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IGNoYXJQdHJbaV0gPSBjaDsKKyAgICAgICAgfQorICAgICAgICBpZiAoY2ggPT0gJy0nKQorICAg
ICAgICAgICAgc2hvdWxkQ2FwaXRhbGl6ZSA9IFRSVUU7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIHNob3VsZENhcGl0YWxpemUgPSBGQUxTRTsKKyAgICB9CisgICAgaWYgKHNvbWV0aGluZ0No
YW5nZWQpIHsKKyAgICAgICAgaWYgKHVzZVVuaUNoYXJQdHIpCisgICAgICAgICAgICByZXN1bHQg
PSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnNOb0NvcHkoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgdW5pQ2hhclB0ciwgbGVuLCBudWxscHRyKSkuYnJpZGdpbmdBdXRvcmVsZWFzZSgp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXN1bHQgPSBhZG9wdENGKENGU3RyaW5nQ3Jl
YXRlV2l0aENTdHJpbmdOb0NvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgY2hhclB0ciwga0NGU3Ry
aW5nRW5jb2RpbmdJU09MYXRpbjEsIG51bGxwdHIpKS5icmlkZ2luZ0F1dG9yZWxlYXNlKCk7Cisg
ICAgfSBlbHNlCisgICAgICAgIHJlc3VsdCA9IHNlbGY7CisKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBOU0RhdGEgKFdlYktpdEV4dHJhcykKKworLSAo
TlNTdHJpbmcgKilfd2Via2l0X2d1ZXNzZWRNSU1FVHlwZUZvclhNTAoreworICAgIE5TVUludGVn
ZXIgbGVuZ3RoID0gW3NlbGYgbGVuZ3RoXTsKKyAgICBjb25zdCBVSW50OCogYnl0ZXMgPSBzdGF0
aWNfY2FzdDxjb25zdCBVSW50OCo+KFtzZWxmIGJ5dGVzXSk7CisKKyNkZWZpbmUgQ0hBTk5FTF9U
QUdfTEVOR1RIIDcKKworICAgIGNvbnN0IGNoYXIqIHAgPSByZWludGVycHJldF9jYXN0PGNvbnN0
IGNoYXIqPihieXRlcyk7CisgICAgaW50IHJlbWFpbmluZyA9IHN0ZDo6bWluPE5TVUludGVnZXI+
KGxlbmd0aCwgV0VCX0dVRVNTX01JTUVfVFlQRV9QRUVLX0xFTkdUSCkgLSAoQ0hBTk5FTF9UQUdf
TEVOR1RIIC0gMSk7CisKKyAgICBCT09MIGZvdW5kUkRGID0gZmFsc2U7CisKKyAgICB3aGlsZSAo
cmVtYWluaW5nID4gMCkgeworICAgICAgICAvLyBMb29rIGZvciBhICI8Ii4KKyAgICAgICAgY29u
c3QgY2hhciogaGl0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1lbWNocihwLCAnPCcsIHJl
bWFpbmluZykpOworICAgICAgICBpZiAoIWhpdCkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgIC8vIFdlIGFyZSB0cnlpbmcgdG8gaWRlbnRpZnkgUlNTIG9yIEF0b20uIFJTUyBoYXMgYSB0
b3AtbGV2ZWwKKyAgICAgICAgLy8gZWxlbWVudCBvZiBlaXRoZXIgPHJzcz4gb3IgPHJkZj4uIEhv
d2V2ZXIsIHRoZXJlIGFyZQorICAgICAgICAvLyBub24tUlNTIFJERiBmaWxlcywgc28gaW4gdGhl
IGNhc2Ugb2YgPHJkZj4gd2UgZnVydGhlciBsb29rCisgICAgICAgIC8vIGZvciBhIDxjaGFubmVs
PiBlbGVtZW50LiBJbiB0aGUgY2FzZSBvZiBhbiBBdG9tIGZpbGUsIGEKKyAgICAgICAgLy8gdG9w
LWxldmVsIDxmZWVkPiBlbGVtZW50IGlzIGFsbCB3ZSBuZWVkIHRvIHNlZS4gT25seSB0YWdzCisg
ICAgICAgIC8vIHN0YXJ0aW5nIHdpdGggPD8gb3IgPCEgY2FuIHByZWNlZGUgdGhlIHJvb3QgZWxl
bWVudC4gV2UKKyAgICAgICAgLy8gYmFpbCBpZiB3ZSBkb24ndCBmaW5kIGFuIDxyc3M+LCA8ZmVl
ZD4gb3IgPHJkZj4gZWxlbWVudAorICAgICAgICAvLyByaWdodCBhZnRlciB0aG9zZS4KKworICAg
ICAgICBpZiAoZm91bmRSREYpIHsKKyAgICAgICAgICAgIGlmICghc3RybmNhc2VjbXAoaGl0LCAi
PGNoYW5uZWwiLCBzdHJsZW4oIjxjaGFubmVsIikpKQorICAgICAgICAgICAgICAgIHJldHVybiBA
ImFwcGxpY2F0aW9uL3Jzcyt4bWwiOworICAgICAgICB9IGVsc2UgaWYgKCFzdHJuY2FzZWNtcCho
aXQsICI8cmRmIiwgc3RybGVuKCI8cmRmIikpKQorICAgICAgICAgICAgZm91bmRSREYgPSBUUlVF
OworICAgICAgICBlbHNlIGlmICghc3RybmNhc2VjbXAoaGl0LCAiPHJzcyIsIHN0cmxlbigiPHJz
cyIpKSkKKyAgICAgICAgICAgIHJldHVybiBAImFwcGxpY2F0aW9uL3Jzcyt4bWwiOworICAgICAg
ICBlbHNlIGlmICghc3RybmNhc2VjbXAoaGl0LCAiPGZlZWQiLCBzdHJsZW4oIjxmZWVkIikpKQor
ICAgICAgICAgICAgcmV0dXJuIEAiYXBwbGljYXRpb24vYXRvbSt4bWwiOworICAgICAgICBlbHNl
IGlmIChzdHJuY2FzZWNtcChoaXQsICI8PyIsIHN0cmxlbigiPD8iKSkgJiYgc3RybmNhc2VjbXAo
aGl0LCAiPCEiLCBzdHJsZW4oIjwhIikpKQorICAgICAgICAgICAgcmV0dXJuIG5pbDsKKworICAg
ICAgICAvLyBTa2lwIHRoZSAiPCIgYW5kIGNvbnRpbnVlLgorICAgICAgICByZW1haW5pbmcgLT0g
KGhpdCArIDEpIC0gcDsKKyAgICAgICAgcCA9IGhpdCArIDE7CisgICAgfQorCisgICAgcmV0dXJu
IG5pbDsKK30KKworLSAoTlNTdHJpbmcgKilfd2Via2l0X2d1ZXNzZWRNSU1FVHlwZQoreworI2Rl
ZmluZSBKUEVHX01BR0lDX05VTUJFUl9MRU5HVEggNAorI2RlZmluZSBTQ1JJUFRfVEFHX0xFTkdU
SCA3CisjZGVmaW5lIFRFWFRfSFRNTF9MRU5HVEggOQorI2RlZmluZSBWQ0FSRF9IRUFERVJfTEVO
R1RIIDExCisjZGVmaW5lIFZDQUxfSEVBREVSX0xFTkdUSCAxNQorCisgICAgTlNTdHJpbmcgKk1J
TUVUeXBlID0gW3NlbGYgX3dlYmtpdF9ndWVzc2VkTUlNRVR5cGVGb3JYTUxdOworICAgIGlmIChb
TUlNRVR5cGUgbGVuZ3RoXSkKKyAgICAgICAgcmV0dXJuIE1JTUVUeXBlOworCisgICAgTlNVSW50
ZWdlciBsZW5ndGggPSBbc2VsZiBsZW5ndGhdOworICAgIGNvbnN0IGNoYXIqIGJ5dGVzID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgY2hhcio+KFtzZWxmIGJ5dGVzXSk7CisKKyAgICBjb25zdCBjaGFyKiBw
ID0gYnl0ZXM7CisgICAgaW50IHJlbWFpbmluZyA9IHN0ZDo6bWluPE5TVUludGVnZXI+KGxlbmd0
aCwgV0VCX0dVRVNTX01JTUVfVFlQRV9QRUVLX0xFTkdUSCkgLSAoU0NSSVBUX1RBR19MRU5HVEgg
LSAxKTsKKyAgICB3aGlsZSAocmVtYWluaW5nID4gMCkgeworICAgICAgICAvLyBMb29rIGZvciBh
ICI8Ii4KKyAgICAgICAgY29uc3QgY2hhciogaGl0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+
KG1lbWNocihwLCAnPCcsIHJlbWFpbmluZykpOworICAgICAgICBpZiAoIWhpdCkKKyAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgIC8vIElmIHdlIGZvdW5kIGEgIjwiLCBsb29rIGZvciAiPGh0
bWw+IiBvciAiPGEgIiBvciAiPHNjcmlwdCIuCisgICAgICAgIGlmICghc3RybmNhc2VjbXAoaGl0
LCAiPGh0bWw+Iiwgc3RybGVuKCI8aHRtbD4iKSkKKyAgICAgICAgICAgIHx8ICFzdHJuY2FzZWNt
cChoaXQsICI8YSAiLCBzdHJsZW4oIjxhICIpKQorICAgICAgICAgICAgfHwgIXN0cm5jYXNlY21w
KGhpdCwgIjxzY3JpcHQiLCBzdHJsZW4oIjxzY3JpcHQiKSkKKyAgICAgICAgICAgIHx8ICFzdHJu
Y2FzZWNtcChoaXQsICI8dGl0bGU+Iiwgc3RybGVuKCI8dGl0bGU+IikpKSB7CisgICAgICAgICAg
ICByZXR1cm4gQCJ0ZXh0L2h0bWwiOworICAgICAgICB9CisKKyAgICAgICAgLy8gU2tpcCB0aGUg
IjwiIGFuZCBjb250aW51ZS4KKyAgICAgICAgcmVtYWluaW5nIC09IChoaXQgKyAxKSAtIHA7Cisg
ICAgICAgIHAgPSBoaXQgKyAxOworICAgIH0KKworICAgIC8vIFRlc3QgZm9yIGEgYnJva2VuIHNl
cnZlciB3aGljaCBoYXMgc2VudCB0aGUgY29udGVudCB0eXBlIGFzIHBhcnQgb2YgdGhlIGNvbnRl
bnQuCisgICAgLy8gVGhpcyBjb2RlIGNvdWxkIGJlIGltcHJvdmVkIHRvIGxvb2sgZm9yIG90aGVy
IG1pbWUgdHlwZXMuCisgICAgcCA9IGJ5dGVzOworICAgIHJlbWFpbmluZyA9IHN0ZDo6bWluPE5T
VUludGVnZXI+KGxlbmd0aCwgV0VCX0dVRVNTX01JTUVfVFlQRV9QRUVLX0xFTkdUSCkgLSAoVEVY
VF9IVE1MX0xFTkdUSCAtIDEpOworICAgIHdoaWxlIChyZW1haW5pbmcgPiAwKSB7CisgICAgICAg
IC8vIExvb2sgZm9yIGEgInQiIG9yICJUIi4KKyAgICAgICAgY29uc3QgY2hhciogaGl0ID0gbnVs
bHB0cjsKKyAgICAgICAgY29uc3QgY2hhciogbG93ZXJoaXQgPSBzdGF0aWNfY2FzdDxjb25zdCBj
aGFyKj4obWVtY2hyKHAsICd0JywgcmVtYWluaW5nKSk7CisgICAgICAgIGNvbnN0IGNoYXIqIHVw
cGVyaGl0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1lbWNocihwLCAnVCcsIHJlbWFpbmlu
ZykpOworICAgICAgICBpZiAoIWxvd2VyaGl0ICYmICF1cHBlcmhpdCkKKyAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgIGlmICghbG93ZXJoaXQpCisgICAgICAgICAgICBoaXQgPSB1cHBlcmhp
dDsKKyAgICAgICAgZWxzZSBpZiAoIXVwcGVyaGl0KQorICAgICAgICAgICAgaGl0ID0gbG93ZXJo
aXQ7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGhpdCA9IHN0ZDo6bWluPGNvbnN0IGNoYXIq
Pihsb3dlcmhpdCwgdXBwZXJoaXQpOworCisgICAgICAgIC8vIElmIHdlIGZvdW5kIGEgInQvVCIs
IGxvb2sgZm9yICJ0ZXh0L2h0bWwiLgorICAgICAgICBpZiAoIXN0cm5jYXNlY21wKGhpdCwgInRl
eHQvaHRtbCIsIFRFWFRfSFRNTF9MRU5HVEgpKQorICAgICAgICAgICAgcmV0dXJuIEAidGV4dC9o
dG1sIjsKKworICAgICAgICAvLyBTa2lwIHRoZSAidC9UIiBhbmQgY29udGludWUuCisgICAgICAg
IHJlbWFpbmluZyAtPSAoaGl0ICsgMSkgLSBwOworICAgICAgICBwID0gaGl0ICsgMTsKKyAgICB9
CisKKyAgICBpZiAoKGxlbmd0aCA+PSBWQ0FSRF9IRUFERVJfTEVOR1RIKSAmJiAhc3RybmNtcChi
eXRlcywgIkJFR0lOOlZDQVJEIiwgVkNBUkRfSEVBREVSX0xFTkdUSCkpCisgICAgICAgIHJldHVy
biBAInRleHQvdmNhcmQiOworICAgIGlmICgobGVuZ3RoID49IFZDQUxfSEVBREVSX0xFTkdUSCkg
JiYgIXN0cm5jbXAoYnl0ZXMsICJCRUdJTjpWQ0FMRU5EQVIiLCBWQ0FMX0hFQURFUl9MRU5HVEgp
KQorICAgICAgICByZXR1cm4gQCJ0ZXh0L2NhbGVuZGFyIjsKKworICAgIC8vIFRlc3QgZm9yIHBs
YWluIHRleHQuCisgICAgTlNVSW50ZWdlciBpOworICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7
ICsraSkgeworICAgICAgICBjaGFyIGMgPSBieXRlc1tpXTsKKyAgICAgICAgaWYgKChjIDwgMHgy
MCB8fCBjID4gMHg3RSkgJiYgKGMgIT0gJ1x0JyAmJiBjICE9ICdccicgJiYgYyAhPSAnXG4nKSkK
KyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBpZiAoaSA9PSBsZW5ndGgpIHsKKyAgICAg
ICAgLy8gRGlkbid0IGVuY291bnRlciBhbnkgYmFkIGNoYXJhY3RlcnMsIGxvb2tzIGxpa2UgcGxh
aW4gdGV4dC4KKyAgICAgICAgcmV0dXJuIEAidGV4dC9wbGFpbiI7CisgICAgfQorCisgICAgLy8g
TG9va3MgbGlrZSB0aGlzIGlzIGEgYmluYXJ5IGZpbGUuCisKKyAgICAvLyBTbmlmZiBmb3IgdGhl
IEpQRUcgbWFnaWMgbnVtYmVyLgorICAgIGlmICgobGVuZ3RoID49IEpQRUdfTUFHSUNfTlVNQkVS
X0xFTkdUSCkgJiYgIXN0cm5jbXAoYnl0ZXMsICJceEZGXHhEOFx4RkZceEUwIiwgSlBFR19NQUdJ
Q19OVU1CRVJfTEVOR1RIKSkKKyAgICAgICAgcmV0dXJuIEAiaW1hZ2UvanBlZyI7CisKKyN1bmRl
ZiBKUEVHX01BR0lDX05VTUJFUl9MRU5HVEgKKyN1bmRlZiBTQ1JJUFRfVEFHX0xFTkdUSAorI3Vu
ZGVmIFRFWFRfSFRNTF9MRU5HVEgKKyN1bmRlZiBWQ0FSRF9IRUFERVJfTEVOR1RICisjdW5kZWYg
VkNBTF9IRUFERVJfTEVOR1RICisKKyAgICByZXR1cm4gbmlsOworfQorCitAZW5kCisKK0BpbXBs
ZW1lbnRhdGlvbiBOU0RhdGEgKFdlYk5TRGF0YUV4dHJhcykKKworLSAoQk9PTClfd2ViX2lzQ2Fz
ZUluc2Vuc2l0aXZlRXF1YWxUb0NTdHJpbmc6KGNvbnN0IGNoYXIgKilzdHJpbmcKK3sKKyAgICBB
U1NFUlQoc3RyaW5nKTsKKworICAgIGNvbnN0IGNoYXIqIGJ5dGVzID0gc3RhdGljX2Nhc3Q8Y29u
c3QgY2hhcio+KFtzZWxmIGJ5dGVzXSk7CisgICAgcmV0dXJuICFzdHJuY2FzZWNtcChieXRlcywg
c3RyaW5nLCBbc2VsZiBsZW5ndGhdKTsKK30KKworc3RhdGljIGNvbnN0IFVJbnQ4ICpfZmluZEVP
TChjb25zdCBVSW50OCAqYnl0ZXMsIENGSW5kZXggbGVuKQoreworICAgIC8vIEFjY29yZGluZyB0
byB0aGUgSFRUUCBzcGVjaWZpY2F0aW9uIEVPTCBpcyBkZWZpbmVkIGFzCisgICAgLy8gYSBDUkxG
IHBhaXIuIFVuZm9ydHVuYXRlbHksIHNvbWUgc2VydmVycyB3aWxsIHVzZSBMRgorICAgIC8vIGlu
c3RlYWQuIFdvcnNlIHlldCwgc29tZSBzZXJ2ZXJzIHdpbGwgdXNlIGEgY29tYmluYXRpb24KKyAg
ICAvLyBvZiBib3RoIChlLmcuIDxoZWFkZXI+Q1JMRkxGPGJvZHk+KSwgc28gZmluZEVPTCBuZWVk
cworICAgIC8vIHRvIGJlIG1vcmUgZm9yZ2l2aW5nLiBJdCB3aWxsIG5vdyBhY2NlcHQgQ1JMRiwg
TEYsIG9yCisgICAgLy8gQ1IuCisgICAgLy8KKyAgICAvLyBJdCByZXR1cm5zIE5VTEwgaWYgRU9M
IGlzIG5vdCBmb3VuZCBvciBpdCB3aWxsIHJldHVybgorICAgIC8vIGEgcG9pbnRlciB0byB0aGUg
Zmlyc3QgdGVybWluYXRpbmcgY2hhcmFjdGVyLgorICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgIGkg
PCBsZW47IGkrKykgeworICAgICAgICBVSW50OCBjID0gYnl0ZXNbaV07CisgICAgICAgIGlmICgn
XG4nID09IGMpCisgICAgICAgICAgICByZXR1cm4gYnl0ZXMgKyBpOworICAgICAgICBpZiAoJ1xy
JyA9PSBjKSB7CisgICAgICAgICAgICAvLyBDaGVjayB0byBzZWUgaWYgc3Bhbm5pbmcgYnVmZmVy
IGJvdW5kcworICAgICAgICAgICAgLy8gKENSTEYgaXMgYWNyb3NzIHJlYWRzKS4gSWYgc28sIHdh
aXQgZm9yCisgICAgICAgICAgICAvLyBuZXh0IHJlYWQuCisgICAgICAgICAgICBpZiAoaSArIDEg
PT0gbGVuKQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICByZXR1cm4gYnl0
ZXMgKyBpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKKy0g
KE5TTXV0YWJsZURpY3Rpb25hcnkgKilfd2Via2l0X3BhcnNlUkZDODIySGVhZGVyRmllbGRzCit7
CisgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqaGVhZGVyRmllbGRzID0gW05TTXV0YWJsZURpY3Rp
b25hcnkgZGljdGlvbmFyeV07CisKKyAgICBjb25zdCBVSW50OCogYnl0ZXMgPSBzdGF0aWNfY2Fz
dDxjb25zdCBVSW50OCo+KFtzZWxmIGJ5dGVzXSk7CisgICAgTlNVSW50ZWdlciBsZW5ndGggPSBb
c2VsZiBsZW5ndGhdOworICAgIFJldGFpblB0cjxOU1N0cmluZz4gbGFzdEtleTsKKyAgICBjb25z
dCBVSW50OCAqZW9sOworCisgICAgLy8gTG9vcCBvdmVyIGxpbmVzIHVudGlsIHdlJ3JlIHBhc3Qg
dGhlIGhlYWRlciwgb3Igd2UgY2FuJ3QgZmluZCBhbnkgbW9yZSBlbmQtb2YtbGluZXMKKyAgICB3
aGlsZSAoKGVvbCA9IF9maW5kRU9MKGJ5dGVzLCBsZW5ndGgpKSkgeworICAgICAgICBjb25zdCBV
SW50OCAqbGluZSA9IGJ5dGVzOworICAgICAgICBTSW50MzIgbGluZUxlbmd0aCA9IGVvbCAtIGJ5
dGVzOworCisgICAgICAgIC8vIE1vdmUgYnl0ZXMgdG8gdGhlIGNoYXJhY3RlciBhZnRlciB0aGUg
dGVybWluYXRvciBhcyByZXR1cm5lZCBieSBfZmluZEVPTC4KKyAgICAgICAgYnl0ZXMgPSBlb2wg
KyAxOworICAgICAgICBpZiAoKCdccicgPT0gKmVvbCkgJiYgKCdcbicgPT0gKmJ5dGVzKSkKKyAg
ICAgICAgICAgIGJ5dGVzKys7IC8vIFNhZmUgc2luY2UgX2ZpbmRFT0wgd29uJ3QgcmV0dXJuIGEg
c3Bhbm5pbmcgQ1JMRi4KKworICAgICAgICBsZW5ndGggLT0gKGJ5dGVzIC0gbGluZSk7CisgICAg
ICAgIGlmICghbGluZUxlbmd0aCkgeworICAgICAgICAgICAgLy8gQmxhbmsgbGluZTsgd2UncmUg
YXQgdGhlIGVuZCBvZiB0aGUgaGVhZGVyCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgICAgICBpZiAoKmxpbmUgPT0gJyAnIHx8ICpsaW5lID09ICdcdCcpIHsKKyAgICAgICAgICAg
IC8vIENvbnRpbnVhdGlvbiBvZiB0aGUgcHJldmlvdXMgaGVhZGVyCisgICAgICAgICAgICBpZiAo
IWxhc3RLZXkpIHsKKyAgICAgICAgICAgICAgICAvLyBtYWxmb3JtZWQgaGVhZGVyOyBpZ25vcmUg
aXQgYW5kIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICAvLyBNZXJnZSB0aGUgY29udGludWF0aW9uIG9mIHRoZSBwcmV2aW91cyBo
ZWFkZXIKKyAgICAgICAgICAgIE5TU3RyaW5nICpjdXJyZW50VmFsdWUgPSBbaGVhZGVyRmllbGRz
IG9iamVjdEZvcktleTpsYXN0S2V5LmdldCgpXTsKKyAgICAgICAgICAgIGF1dG8gbmV3VmFsdWUg
PSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoQnl0ZXM6bGluZSBsZW5ndGg6bGlu
ZUxlbmd0aCBlbmNvZGluZzpOU0lTT0xhdGluMVN0cmluZ0VuY29kaW5nXSk7CisgICAgICAgICAg
ICBBU1NFUlQoY3VycmVudFZhbHVlKTsKKyAgICAgICAgICAgIEFTU0VSVChuZXdWYWx1ZSk7Cisg
ICAgICAgICAgICBbaGVhZGVyRmllbGRzIHNldE9iamVjdDpbY3VycmVudFZhbHVlIHN0cmluZ0J5
QXBwZW5kaW5nU3RyaW5nOm5ld1ZhbHVlLmdldCgpXSBmb3JLZXk6bGFzdEtleS5nZXQoKV07Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBCcmFuZCBuZXcgaGVhZGVyCisgICAgICAg
ICAgICBjb25zdCBVSW50OCogY29sb247CisgICAgICAgICAgICBmb3IgKGNvbG9uID0gbGluZTsg
KmNvbG9uICE9ICc6JyAmJiBjb2xvbiAhPSBlb2w7IGNvbG9uKyspIHsgfQorICAgICAgICAgICAg
aWYgKGNvbG9uID09IGVvbCkgeworICAgICAgICAgICAgICAgIC8vIG1hbGZvcm1lZCBoZWFkZXI7
IGlnbm9yZSBpdCBhbmQgY29udGludWUKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGxhc3RLZXkgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2Nd
IGluaXRXaXRoQnl0ZXM6bGluZSBsZW5ndGg6Y29sb24gLSBsaW5lIGVuY29kaW5nOk5TSVNPTGF0
aW4xU3RyaW5nRW5jb2RpbmddKTsKKyAgICAgICAgICAgIGxhc3RLZXkgPSBbbGFzdEtleSBfd2Vi
X2NhcGl0YWxpemVSRkM4MjJIZWFkZXJGaWVsZE5hbWVdOworICAgICAgICAgICAgZm9yIChjb2xv
bisrOyBjb2xvbiAhPSBlb2w7IGNvbG9uKyspIHsKKyAgICAgICAgICAgICAgICBpZiAoKmNvbG9u
ICE9ICcgJyAmJiAqY29sb24gIT0gJ1x0JykKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBhdXRvIHZhbHVlID0gYWRvcHROUyhbW05TU3RyaW5n
IGFsbG9jXSBpbml0V2l0aEJ5dGVzOmNvbG9uIGxlbmd0aDplb2wgLSBjb2xvbiBlbmNvZGluZzpO
U0lTT0xhdGluMVN0cmluZ0VuY29kaW5nXSk7CisgICAgICAgICAgICBpZiAoTlNTdHJpbmcgKm9s
ZFZhbHVlID0gW2hlYWRlckZpZWxkcyBvYmplY3RGb3JLZXk6bGFzdEtleS5nZXQoKV0pCisgICAg
ICAgICAgICAgICAgdmFsdWUgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRm9y
bWF0OkAiJUAsICVAIiwgb2xkVmFsdWUsIHZhbHVlLmdldCgpXSk7CisgICAgICAgICAgICBbaGVh
ZGVyRmllbGRzIHNldE9iamVjdDp2YWx1ZS5nZXQoKSBmb3JLZXk6bGFzdEtleS5nZXQoKV07Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gaGVhZGVyRmllbGRzOworfQorCistIChCT09M
KV93ZWJfc3RhcnRzV2l0aEJsYW5rTGluZQoreworICAgIHJldHVybiBbc2VsZiBsZW5ndGhdID4g
MCAmJiAoKGNvbnN0IGNoYXIgKilbc2VsZiBieXRlc10pWzBdID09ICdcbic7Cit9CisKKy0gKE5T
SW50ZWdlcilfd2ViX2xvY2F0aW9uQWZ0ZXJGaXJzdEJsYW5rTGluZQoreworICAgIGNvbnN0IGNo
YXIgKmJ5dGVzID0gKGNvbnN0IGNoYXIgKilbc2VsZiBieXRlc107CisgICAgTlNVSW50ZWdlciBs
ZW5ndGggPSBbc2VsZiBsZW5ndGhdOworCisgICAgdW5zaWduZWQgaTsKKyAgICBmb3IgKGkgPSAw
OyBpIDwgbGVuZ3RoIC0gNDsgaSsrKSB7CisKKyAgICAgICAgLy8gIFN1cHBvcnQgZm9yIEFjcm9i
YXQuIEl0IHNlbmRzICJcblxuIi4KKyAgICAgICAgaWYgKGJ5dGVzW2ldID09ICdcbicgJiYgYnl0
ZXNbaSsxXSA9PSAnXG4nKQorICAgICAgICAgICAgcmV0dXJuIGkrMjsKKworICAgICAgICAvLyBS
ZXR1cm5zIHRoZSBwb3NpdGlvbiBhZnRlciAyIENSTEYncyBvciAxIENSTEYgaWYgaXQgaXMgdGhl
IGZpcnN0IGxpbmUuCisgICAgICAgIGlmIChieXRlc1tpXSA9PSAnXHInICYmIGJ5dGVzW2krMV0g
PT0gJ1xuJykgeworICAgICAgICAgICAgaSArPSAyOworICAgICAgICAgICAgaWYgKGkgPT0gMikK
KyAgICAgICAgICAgICAgICByZXR1cm4gaTsKKyAgICAgICAgICAgIGlmIChieXRlc1tpXSA9PSAn
XG4nKSB7CisgICAgICAgICAgICAgICAgLy8gU3VwcG9ydCBmb3IgRGlyZWN0b3IuIEl0IHNlbmRz
ICJcclxuXG4iICgzODgwMzg3KS4KKyAgICAgICAgICAgICAgICByZXR1cm4gaSsxOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgaWYgKGJ5dGVzW2ldID09ICdccicgJiYgYnl0ZXNbaSsxXSA9
PSAnXG4nKSB7CisgICAgICAgICAgICAgICAgLy8gU3VwcG9ydCBmb3IgRmxhc2guIEl0IHNlbmRz
ICJcclxuXHJcbiIgKDM3NTgxMTMpLgorICAgICAgICAgICAgICAgIHJldHVybiBpKzI7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIE5TTm90Rm91bmQ7Cit9CisK
K0BlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tO
U0ZpbGVNYW5hZ2VyRXh0cmFzLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLTlNGaWxlTWFuYWdlckV4dHJhcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhkZGM0NGU2ZGY3ZDMwNTY2OWJl
NzUyNDljZDc1NmQwNmU4NTVkODYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLTlNGaWxlTWFuYWdlckV4dHJhcy5oCkBAIC0wLDAgKzEsNDAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2Yg
QXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQK
KyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisKK0BpbnRlcmZhY2UgTlNGaWxlTWFu
YWdlciAoV2ViTlNGaWxlTWFuYWdlckV4dHJhcykKKyNpZiAhVEFSR0VUX09TX0lQSE9ORQorLSAo
dm9pZClfd2Via2l0X3NldE1ldGFkYXRhVVJMOihOU1N0cmluZyAqKVVSTFN0cmluZyByZWZlcnJl
cjooTlNTdHJpbmcgKilyZWZlcnJlciBhdFBhdGg6KE5TU3RyaW5nICopcGF0aDsKKyNlbmRpZgor
LSAoTlNTdHJpbmcgKilfd2Via2l0X3BhdGhXaXRoVW5pcXVlRmlsZW5hbWVGb3JQYXRoOihOU1N0
cmluZyAqKXBhdGg7CisKKyNpZiBUQVJHRVRfT1NfSVBIT05FCistIChOU1N0cmluZyAqKV93ZWJr
aXRfY3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5V2l0aFRlbXBsYXRlUHJlZml4OihOU1N0cmluZyAq
KXByZWZpeDsKKyNlbmRpZgorQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS05TRmlsZU1hbmFnZXJFeHRyYXMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLTlNGaWxlTWFuYWdlckV4dHJhcy5tbQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
NmE4OWQyMDIwNjJlY2VhNmViMWQ1NDRkMDEyMTFmOTNkZjE4YmRiCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS05TRmlsZU1hbmFnZXJFeHRy
YXMubW0KQEAgLTAsMCArMSwxMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAg
TmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9m
CisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgor
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIl9XS05TRmls
ZU1hbmFnZXJFeHRyYXMuaCIKKworI2ltcG9ydCAiX1dLTlNTdHJpbmdFeHRyYXMuaCIKKyNpbXBv
cnQgIl9XS05TVVJMRXh0cmFzLmgiCisjaW1wb3J0IDxXZWJDb3JlL0xvYWRlck5TVVJMRXh0cmFz
Lmg+CisjaW1wb3J0IDxzeXMvc3RhdC5oPgorI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KKyNp
bXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CisKK0BpbXBsZW1lbnRhdGlvbiBOU0ZpbGVNYW5hZ2Vy
IChXZWJOU0ZpbGVNYW5hZ2VyRXh0cmFzKQorCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisK
Ky0gKHZvaWQpX3dlYmtpdF9zZXRNZXRhZGF0YVVSTDooTlNTdHJpbmcgKilVUkxTdHJpbmcgcmVm
ZXJyZXI6KE5TU3RyaW5nICopcmVmZXJyZXIgYXRQYXRoOihOU1N0cmluZyAqKXBhdGgKK3sKKyAg
ICBBU1NFUlQoVVJMU3RyaW5nKTsKKyAgICBBU1NFUlQocGF0aCk7CisgICAgRmlsZVN5c3RlbTo6
c2V0TWV0YWRhdGFVUkwocGF0aCwgVVJMU3RyaW5nLCByZWZlcnJlcik7Cit9CisKKyNlbmRpZiAv
LyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKKworLy8gLVtOU0ZpbGVNYW5hZ2VyIGZpbGVFeGlzdHNB
dFBhdGg6XSByZXR1cm5zIE5PIGlmIHRoZXJlIGlzIGEgYnJva2VuIHN5bWxpbmsgYXQgdGhlIHBh
dGguCisvLyBTbyB3ZSB1c2UgdGhpcyBmdW5jdGlvbiBpbnN0ZWFkLCB3aGljaCByZXR1cm5zIFlF
UyBpZiB0aGVyZSBpcyBhbnl0aGluZyB0aGVyZSwgaW5jbHVkaW5nCisvLyBhIGJyb2tlbiBzeW1s
aW5rLgorc3RhdGljIEJPT0wgZmlsZUV4aXN0cyhOU1N0cmluZyAqcGF0aCkKK3sKKyAgICBzdHJ1
Y3Qgc3RhdCBzdGF0QnVmZmVyOworICAgIHJldHVybiAhbHN0YXQoW3BhdGggZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uXSwgJnN0YXRCdWZmZXIpOworfQorCistIChOU1N0cmluZyAqKV93ZWJraXRf
cGF0aFdpdGhVbmlxdWVGaWxlbmFtZUZvclBhdGg6KE5TU3RyaW5nICopcGF0aAoreworICAgIC8v
ICJGaXgiIHRoZSBmaWxlbmFtZSBvZiB0aGUgcGF0aC4KKyAgICBOU1N0cmluZyAqZmlsZW5hbWUg
PSBmaWxlbmFtZUJ5Rml4aW5nSWxsZWdhbENoYXJhY3RlcnMoW3BhdGggbGFzdFBhdGhDb21wb25l
bnRdKTsKKyAgICBwYXRoID0gW1twYXRoIHN0cmluZ0J5RGVsZXRpbmdMYXN0UGF0aENvbXBvbmVu
dF0gc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmZpbGVuYW1lXTsKKworICAgIGlmIChm
aWxlRXhpc3RzKHBhdGgpKSB7CisgICAgICAgIC8vIERvbid0IG92ZXJ3cml0ZSBleGlzdGluZyBm
aWxlIGJ5IGFwcGVuZGluZyAiLW4iLCAiLW4uZXh0IiBvciAiLW4uZXh0LmV4dCIgdG8gdGhlIGZp
bGVuYW1lLgorICAgICAgICBOU1N0cmluZyAqZXh0ZW5zaW9ucyA9IG5pbDsKKyAgICAgICAgTlNT
dHJpbmcgKnBhdGhXaXRob3V0RXh0ZW5zaW9uczsKKyAgICAgICAgTlNTdHJpbmcgKmxhc3RQYXRo
Q29tcG9uZW50ID0gW3BhdGggbGFzdFBhdGhDb21wb25lbnRdOworICAgICAgICBOU1JhbmdlIHBl
cmlvZFJhbmdlID0gW2xhc3RQYXRoQ29tcG9uZW50IHJhbmdlT2ZTdHJpbmc6QCIuIl07CisgICAg
ICAgIAorICAgICAgICBpZiAocGVyaW9kUmFuZ2UubG9jYXRpb24gPT0gTlNOb3RGb3VuZCkgewor
ICAgICAgICAgICAgcGF0aFdpdGhvdXRFeHRlbnNpb25zID0gcGF0aDsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIGV4dGVuc2lvbnMgPSBbbGFzdFBhdGhDb21wb25lbnQgc3Vic3RyaW5n
RnJvbUluZGV4OnBlcmlvZFJhbmdlLmxvY2F0aW9uICsgMV07CisgICAgICAgICAgICBsYXN0UGF0
aENvbXBvbmVudCA9IFtsYXN0UGF0aENvbXBvbmVudCBzdWJzdHJpbmdUb0luZGV4OnBlcmlvZFJh
bmdlLmxvY2F0aW9uXTsKKyAgICAgICAgICAgIHBhdGhXaXRob3V0RXh0ZW5zaW9ucyA9IFtbcGF0
aCBzdHJpbmdCeURlbGV0aW5nTGFzdFBhdGhDb21wb25lbnRdIHN0cmluZ0J5QXBwZW5kaW5nUGF0
aENvbXBvbmVudDpsYXN0UGF0aENvbXBvbmVudF07CisgICAgICAgIH0KKworICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAxOyA7IGkrKykgeworICAgICAgICAgICAgTlNTdHJpbmcgKnBhdGhXaXRo
QXBwZW5kZWROdW1iZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVALSVkIiwgcGF0
aFdpdGhvdXRFeHRlbnNpb25zLCBpXTsKKyAgICAgICAgICAgIHBhdGggPSBbZXh0ZW5zaW9ucyBs
ZW5ndGhdID8gW3BhdGhXaXRoQXBwZW5kZWROdW1iZXIgc3RyaW5nQnlBcHBlbmRpbmdQYXRoRXh0
ZW5zaW9uOmV4dGVuc2lvbnNdIDogcGF0aFdpdGhBcHBlbmRlZE51bWJlcjsKKyAgICAgICAgICAg
IGlmICghZmlsZUV4aXN0cyhwYXRoKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgIH0KKworICAgIHJldHVybiBwYXRoOworfQorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKKy0gKE5TU3RyaW5nICopX3dlYmtpdF9jcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnlXaXRoVGVt
cGxhdGVQcmVmaXg6KE5TU3RyaW5nICopcHJlZml4Cit7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06
OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShwcmVmaXgpOworfQorI2VuZGlmCisKK0BlbmQKKwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS05TU3RyaW5n
RXh0cmFzLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLTlNTdHJpbmdF
eHRyYXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yZmVlZmRlNmE1NWQ3YWRhZTI1NDA5ZDRjZjQ3MmUyMGQxMTMy
Y2FjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS05TU3RyaW5nRXh0cmFzLmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5v
ciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91
bmRhdGlvbi5oPgorCisjaWYgIVRBUkdFVF9PU19JUEhPTkUKKyNpbXBvcnQgPEFwcEtpdC9BcHBL
aXQuaD4KKyNlbmRpZgorCitleHRlcm4gTlNTdHJpbmcgKldlYktpdExvY2FsQ2FjaGVEZWZhdWx0
c0tleTsKK2V4dGVybiBOU1N0cmluZyAqV2ViS2l0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVj
dG9yeURlZmF1bHRzS2V5OworCitAaW50ZXJmYWNlIE5TU3RyaW5nIChXZWJLaXRFeHRyYXMpCisK
KyNpZiAhVEFSR0VUX09TX0lQSE9ORQorLSAodm9pZClfd2ViX2RyYXdBdFBvaW50OihOU1BvaW50
KXBvaW50IGZvbnQ6KE5TRm9udCAqKWZvbnQgdGV4dENvbG9yOihOU0NvbG9yICopdGV4dENvbG9y
OworLSAoZmxvYXQpX3dlYl93aWR0aFdpdGhGb250OihOU0ZvbnQgKilmb250OworI2VuZGlmCisK
Ky0gKE5TU3RyaW5nICopX3dlYl9zdHJpbmdCeUFiYnJldmlhdGluZ1dpdGhUaWxkZUluUGF0aDsK
KworLSAoQk9PTClfd2Via2l0X2lzQ2FzZUluc2Vuc2l0aXZlRXF1YWxUb1N0cmluZzooTlNTdHJp
bmcgKilzdHJpbmc7CistIChCT09MKV93ZWJraXRfaGFzQ2FzZUluc2Vuc2l0aXZlUHJlZml4OihO
U1N0cmluZyAqKXN1ZmZpeDsKKy0gKEJPT0wpX3dlYmtpdF9oYXNDYXNlSW5zZW5zaXRpdmVTdWZm
aXg6KE5TU3RyaW5nICopc3VmZml4OworLSAoTlNTdHJpbmcgKilfd2Via2l0X2ZpbGVuYW1lQnlG
aXhpbmdJbGxlZ2FsQ2hhcmFjdGVyczsKKworLSAoTlNTdHJpbmcgKilfd2Via2l0X3N0cmluZ0J5
VHJpbW1pbmdXaGl0ZXNwYWNlOworCisrIChOU1N0cmluZyAqKV93ZWJraXRfbG9jYWxDYWNoZURp
cmVjdG9yeVdpdGhCdW5kbGVJZGVudGlmaWVyOihOU1N0cmluZyopYnVuZGxlSWRlbnRpZmllcjsK
KworQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S05TU3RyaW5nRXh0cmFzLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S05TU3RyaW5nRXh0cmFzLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIwMTgxYTNlMzQ1NTEzMWRhMGRkMDI3NWU2
NDgxMWU3NjE2NzcyZTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLTlNTdHJpbmdFeHRyYXMubW0KQEAgLTAsMCArMSwxOTUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMu
ICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZy
b20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJj
b25maWcuaCIKKyNpbXBvcnQgIl9XS05TU3RyaW5nRXh0cmFzLmgiCisKKyNpbXBvcnQgPFdlYkNv
cmUvQ29sb3JNYWMuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRm9udENhc2NhZGUuaD4KKyNpbXBvcnQg
PFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Q0cuaD4KKyNpbXBvcnQgPFdlYkNvcmUvTG9hZGVyTlNV
UkxFeHRyYXMuaD4KKyNpbXBvcnQgPFdlYkNvcmUvVGV4dFJ1bi5oPgorI2ltcG9ydCA8cGFsL3Nw
aS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KKyNpbXBvcnQgPHN5cy9wYXJhbS5oPgorI2ltcG9ydCA8
dW5pY29kZS91Y2hhci5oPgorCitOU1N0cmluZyAqV2ViS2l0UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RpcmVjdG9yeURlZmF1bHRzS2V5ID0gQCJXZWJLaXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGly
ZWN0b3J5IjsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK0BpbXBsZW1lbnRhdGlvbiBO
U1N0cmluZyAoV2ViS2l0RXh0cmFzKQorCisjaWYgUExBVEZPUk0oTUFDKQorCitzdGF0aWMgYm9v
bCBjYW5Vc2VGYXN0UmVuZGVyZXIoY29uc3QgVW5pQ2hhciogYnVmZmVyLCB1bnNpZ25lZCBsZW5n
dGgpCit7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAg
ICAgIGlmICghaXNMYXRpbjEoYnVmZmVyW2ldKSkgeworICAgICAgICAgICAgYXV0byBkaXJlY3Rp
b24gPSB1X2NoYXJEaXJlY3Rpb24oYnVmZmVyW2ldKTsKKyAgICAgICAgICAgIGlmIChkaXJlY3Rp
b24gPT0gVV9SSUdIVF9UT19MRUZUIHx8IChkaXJlY3Rpb24gPiBVX09USEVSX05FVVRSQUwgJiYg
ZGlyZWN0aW9uICE9IFVfRElSX05PTl9TUEFDSU5HX01BUksgJiYgZGlyZWN0aW9uICE9IFVfQk9V
TkRBUllfTkVVVFJBTCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCistICh2b2lkKV93ZWJfZHJhd0F0UG9pbnQ6
KE5TUG9pbnQpcG9pbnQgZm9udDooTlNGb250ICopZm9udCB0ZXh0Q29sb3I6KE5TQ29sb3IgKil0
ZXh0Q29sb3IKK3sKKyAgICBpZiAoIWZvbnQpCisgICAgICAgIHJldHVybjsKKworICAgIHVuc2ln
bmVkIGxlbmd0aCA9IFtzZWxmIGxlbmd0aF07CisgICAgVmVjdG9yPFVuaUNoYXIsIDIwNDg+IGJ1
ZmZlcihsZW5ndGgpOworICAgIFtzZWxmIGdldENoYXJhY3RlcnM6YnVmZmVyLmRhdGEoKV07CisK
KyAgICBpZiAoY2FuVXNlRmFzdFJlbmRlcmVyKGJ1ZmZlci5kYXRhKCksIGxlbmd0aCkpIHsKKyAg
ICAgICAgRm9udENhc2NhZGUgd2ViQ29yZUZvbnQoRm9udFBsYXRmb3JtRGF0YSgoX19icmlkZ2Ug
Q1RGb250UmVmKWZvbnQsIFtmb250IHBvaW50U2l6ZV0pKTsKKyAgICAgICAgVGV4dFJ1biBydW4o
U3RyaW5nVmlldyhyZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4oYnVmZmVyLmRhdGEoKSks
IGxlbmd0aCkpOworCisgICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgaXMgYSBoYWxmLWFzc2VkIGF0
dGVtcHQgdG8gbWF0Y2ggQXBwS2l0J3Mgcm91bmRpbmcgcnVsZXMgZm9yIGRyYXdBdFBvaW50Lgor
ICAgICAgICAvLyBJZiB5b3UgY2hhbmdlIGl0LCBiZSBzdXJlIHRvIHRlc3QgYWxsIHRoZSB0ZXh0
IGRyYXduIHRoaXMgd2F5IGluIFNhZmFyaSwgaW5jbHVkaW5nCisgICAgICAgIC8vIHRoZSBzdGF0
dXMgYmFyLCBib29rbWFya3MgYmFyLCB0YWIgYmFyLCBhbmQgYWN0aXZpdHkgd2luZG93LgorICAg
ICAgICBwb2ludC55ID0gQ0dDZWlsaW5nKHBvaW50LnkpOworCisgICAgICAgIE5TR3JhcGhpY3ND
b250ZXh0ICpuc0NvbnRleHQgPSBbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdOwor
ICAgICAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gW25zQ29udGV4dCBDR0NvbnRleHRdOwor
ICAgICAgICBHcmFwaGljc0NvbnRleHRDRyBncmFwaGljc0NvbnRleHQgeyBjZ0NvbnRleHQgfTsK
KworICAgICAgICAvLyBXZWJDb3JlIHJlcXVpcmVzIGEgZmxpcHBlZCBncmFwaGljcyBjb250ZXh0
LgorICAgICAgICBib29sIGZsaXBwZWQgPSBbbnNDb250ZXh0IGlzRmxpcHBlZF07CisgICAgICAg
IGlmICghZmxpcHBlZCkKKyAgICAgICAgICAgIENHQ29udGV4dFNjYWxlQ1RNKGNnQ29udGV4dCwg
MSwgLTEpOworCisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IoY29sb3JGcm9t
TlNDb2xvcih0ZXh0Q29sb3IpKTsKKyAgICAgICAgd2ViQ29yZUZvbnQuZHJhd1RleHQoZ3JhcGhp
Y3NDb250ZXh0LCBydW4sIEZsb2F0UG9pbnQocG9pbnQueCwgZmxpcHBlZCA/IHBvaW50LnkgOiAt
cG9pbnQueSkpOworCisgICAgICAgIGlmICghZmxpcHBlZCkKKyAgICAgICAgICAgIENHQ29udGV4
dFNjYWxlQ1RNKGNnQ29udGV4dCwgMSwgLTEpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIFRo
ZSBnaXZlbiBwb2ludCBpcyBvbiB0aGUgYmFzZWxpbmUuCisgICAgICAgIGlmIChbW05TVmlldyBm
b2N1c1ZpZXddIGlzRmxpcHBlZF0pCisgICAgICAgICAgICBwb2ludC55IC09IFtmb250IGFzY2Vu
ZGVyXTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcG9pbnQueSArPSBbZm9udCBkZXNjZW5k
ZXJdOworCisgICAgICAgIFtzZWxmIGRyYXdBdFBvaW50OnBvaW50IHdpdGhBdHRyaWJ1dGVzOkB7
IE5TRm9udEF0dHJpYnV0ZU5hbWU6IGZvbnQsIE5TRm9yZWdyb3VuZENvbG9yQXR0cmlidXRlTmFt
ZTogdGV4dENvbG9yIH1dOworICAgIH0KK30KKworLSAoZmxvYXQpX3dlYl93aWR0aFdpdGhGb250
OihOU0ZvbnQgKilmb250Cit7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gW3NlbGYgbGVuZ3RoXTsK
KyAgICBWZWN0b3I8VW5pQ2hhciwgMjA0OD4gYnVmZmVyKGxlbmd0aCk7CisgICAgW3NlbGYgZ2V0
Q2hhcmFjdGVyczpidWZmZXIuZGF0YSgpXTsKKworICAgIGlmIChjYW5Vc2VGYXN0UmVuZGVyZXIo
YnVmZmVyLmRhdGEoKSwgbGVuZ3RoKSkgeworICAgICAgICBGb250Q2FzY2FkZSB3ZWJDb3JlRm9u
dChGb250UGxhdGZvcm1EYXRhKChfX2JyaWRnZSBDVEZvbnRSZWYpZm9udCwgW2ZvbnQgcG9pbnRT
aXplXSkpOworICAgICAgICBUZXh0UnVuIHJ1bihTdHJpbmdWaWV3KHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgVUNoYXIqPihidWZmZXIuZGF0YSgpKSwgbGVuZ3RoKSk7CisgICAgICAgIHJldHVybiB3
ZWJDb3JlRm9udC53aWR0aChydW4pOworICAgIH0KKworICAgIHJldHVybiBbc2VsZiBzaXplV2l0
aEF0dHJpYnV0ZXM6QHsgTlNGb250QXR0cmlidXRlTmFtZTogZm9udCB9XS53aWR0aDsKK30KKwor
I2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKKworLSAoTlNTdHJpbmcgKilfd2ViX3N0cmluZ0J5QWJi
cmV2aWF0aW5nV2l0aFRpbGRlSW5QYXRoCit7CisgICAgLy8gSGFuZGxlcyBob21lIGRpcmVjdG9y
aWVzIHRoYXQgaGF2ZSBzeW1saW5rcyBpbiB0aGVpciBwYXRocyBhcyB3ZWxsIGFzIHdoYXQgc3Ry
aW5nQnlBYmJyZXZpYXRpbmdXaXRoVGlsZGVJblBhdGggaGFuZGxlcy4KKyAgICAvLyBUaGlzIHdv
cmtzIGFyb3VuZCBSYWRhciBidWcgMjc3NDI1MC4KKworICAgIE5TU3RyaW5nICpyZXNvbHZlZEhv
bWVEaXJlY3RvcnkgPSBbTlNIb21lRGlyZWN0b3J5KCkgc3RyaW5nQnlSZXNvbHZpbmdTeW1saW5r
c0luUGF0aF07CisgICAgTlNTdHJpbmcgKnBhdGg7CisKKyAgICBpZiAoW3NlbGYgaGFzUHJlZml4
OnJlc29sdmVkSG9tZURpcmVjdG9yeV0pIHsKKyAgICAgICAgTlNTdHJpbmcgKnJlbGF0aXZlUGF0
aCA9IFtzZWxmIHN1YnN0cmluZ0Zyb21JbmRleDpbcmVzb2x2ZWRIb21lRGlyZWN0b3J5IGxlbmd0
aF1dOworICAgICAgICBwYXRoID0gW05TSG9tZURpcmVjdG9yeSgpIHN0cmluZ0J5QXBwZW5kaW5n
UGF0aENvbXBvbmVudDpyZWxhdGl2ZVBhdGhdOworICAgIH0gZWxzZSB7CisgICAgICAgIHBhdGgg
PSBzZWxmOworICAgIH0KKworICAgIHJldHVybiBbcGF0aCBzdHJpbmdCeUFiYnJldmlhdGluZ1dp
dGhUaWxkZUluUGF0aF07Cit9CisKKy0gKEJPT0wpX3dlYmtpdF9pc0Nhc2VJbnNlbnNpdGl2ZUVx
dWFsVG9TdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nCit7CisgICAgcmV0dXJuIFtzZWxmIGNvbXBh
cmU6c3RyaW5nIG9wdGlvbnM6KE5TQ2FzZUluc2Vuc2l0aXZlU2VhcmNoIHwgTlNMaXRlcmFsU2Vh
cmNoKV0gPT0gTlNPcmRlcmVkU2FtZTsKK30KKworLShCT09MKV93ZWJraXRfaGFzQ2FzZUluc2Vu
c2l0aXZlUHJlZml4OihOU1N0cmluZyAqKXByZWZpeAoreworICAgIHJldHVybiBbc2VsZiByYW5n
ZU9mU3RyaW5nOnByZWZpeCBvcHRpb25zOihOU0Nhc2VJbnNlbnNpdGl2ZVNlYXJjaCB8IE5TQW5j
aG9yZWRTZWFyY2gpXS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kOworfQorCistKEJPT0wpX3dlYmtp
dF9oYXNDYXNlSW5zZW5zaXRpdmVTdWZmaXg6KE5TU3RyaW5nICopc3VmZml4Cit7CisgICAgcmV0
dXJuIFtzZWxmIHJhbmdlT2ZTdHJpbmc6c3VmZml4IG9wdGlvbnM6KE5TQ2FzZUluc2Vuc2l0aXZl
U2VhcmNoIHwgTlNCYWNrd2FyZHNTZWFyY2ggfCBOU0FuY2hvcmVkU2VhcmNoKV0ubG9jYXRpb24g
IT0gTlNOb3RGb3VuZDsKK30KKworLShOU1N0cmluZyAqKV93ZWJraXRfZmlsZW5hbWVCeUZpeGlu
Z0lsbGVnYWxDaGFyYWN0ZXJzCit7CisgICAgcmV0dXJuIGZpbGVuYW1lQnlGaXhpbmdJbGxlZ2Fs
Q2hhcmFjdGVycyhzZWxmKTsKK30KKworLShOU1N0cmluZyAqKV93ZWJraXRfc3RyaW5nQnlUcmlt
bWluZ1doaXRlc3BhY2UKK3sKKyAgICBhdXRvIHRyaW1tZWQgPSBhZG9wdE5TKFtzZWxmIG11dGFi
bGVDb3B5XSk7CisgICAgQ0ZTdHJpbmdUcmltV2hpdGVzcGFjZSgoX19icmlkZ2UgQ0ZNdXRhYmxl
U3RyaW5nUmVmKXRyaW1tZWQuZ2V0KCkpOworICAgIHJldHVybiB0cmltbWVkLmF1dG9yZWxlYXNl
KCk7Cit9CisKKyNpZiBQTEFURk9STShNQUMpCisKKy8vIEZJWE1FOiBUaGlzIGlzIGhlcmUgb25s
eSBmb3IgYmluYXJ5IGNvbXBhdGliaWxpdHkgd2l0aCBTYWZhcmkgOCBhbmQgZWFybGllci4KKy8v
IFJlbW92ZSBpdCBvbmNlIHdlIGRvbid0IGhhdmUgdG8gc3VwcG9ydCB0aGF0IGFueSBtb3JlLgor
LShOU1N0cmluZyAqKV93ZWJraXRfZml4ZWRDYXJib25QT1NJWFBhdGgKK3sKKyAgICByZXR1cm4g
c2VsZjsKK30KKworI2VuZGlmCisKKysgKE5TU3RyaW5nICopX3dlYmtpdF9sb2NhbENhY2hlRGly
ZWN0b3J5V2l0aEJ1bmRsZUlkZW50aWZpZXI6KE5TU3RyaW5nKilidW5kbGVJZGVudGlmaWVyCit7
CisgICAgTlNTdHJpbmcgKmNhY2hlRGlyZWN0b3J5ID0gW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFy
ZFVzZXJEZWZhdWx0c10gb2JqZWN0Rm9yS2V5OldlYktpdExvY2FsQ2FjaGVEZWZhdWx0c0tleV07
CisKKyAgICBpZiAoIWNhY2hlRGlyZWN0b3J5IHx8ICFbY2FjaGVEaXJlY3RvcnkgaXNLaW5kT2ZD
bGFzczpbTlNTdHJpbmcgY2xhc3NdXSkgeworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAg
ICAgIGNhY2hlRGlyZWN0b3J5ID0gW05TSG9tZURpcmVjdG9yeSgpIHN0cmluZ0J5QXBwZW5kaW5n
UGF0aENvbXBvbmVudDpAIkxpYnJhcnkvQ2FjaGVzIl07CisjZW5kaWYKKyNpZiBQTEFURk9STShN
QUMpCisgICAgICAgIGNoYXIgYnVmZmVyW01BWFBBVEhMRU5dOworICAgICAgICBpZiAoc2l6ZV90
IGxlbmd0aCA9IGNvbmZzdHIoX0NTX0RBUldJTl9VU0VSX0NBQ0hFX0RJUiwgYnVmZmVyLCBNQVhQ
QVRITEVOKSkKKyAgICAgICAgICAgIGNhY2hlRGlyZWN0b3J5ID0gW1tOU0ZpbGVNYW5hZ2VyIGRl
ZmF1bHRNYW5hZ2VyXSBzdHJpbmdXaXRoRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uOmJ1ZmZlciBs
ZW5ndGg6bGVuZ3RoIC0gMV07CisjZW5kaWYKKyAgICB9CisKKyAgICByZXR1cm4gW2NhY2hlRGly
ZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpidW5kbGVJZGVudGlmaWVyXTsK
K30KKworQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS05TVVJMRXh0cmFzLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
TlNVUkxFeHRyYXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZmU4NDgxN2UzZGQ0NzNmZGEyY2Y3MDE4Mzk3M2Nl
MzE5ZjIzMmYzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS05TVVJMRXh0cmFzLmgKQEAgLTAsMCArMSw5OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwNS0yMDA5LCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJB
cHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPEZvdW5k
YXRpb24vRm91bmRhdGlvbi5oPgorCisvLyBGSVhNRTogQ2hhbmdlIG1ldGhvZCBuYW1lcyBiYWNr
IHRvIF93ZWJfIGZyb20gX3dlYmtpdF8gd2hlbiBpZGVudGljYWxseS1uYW1lZAorLy8gbWV0aG9k
cyBhcmUgbm8gbG9uZ2VyIHByZXNlbnQgaW4gRm91bmRhdGlvbi4KKworQGludGVyZmFjZSBOU1VS
TCAoV2ViTlNVUkxFeHRyYXMpCisKKy8vIERlcHJlY2F0ZWQgYXMgaXQgaWdub3JlcyBVUkwgcGFy
c2luZyBlcnJvci4KKy8vIFBsZWFzZSB1c2UgdGhlIF93ZWJraXRfIGNvdW50ZXJwYXJ0cy4KKysg
KE5TVVJMICopX3dlYl9VUkxXaXRoVXNlclR5cGVkU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZzsK
KysgKE5TVVJMICopX3dlYl9VUkxXaXRoVXNlclR5cGVkU3RyaW5nOihOU1N0cmluZyAqKXN0cmlu
ZyByZWxhdGl2ZVRvVVJMOihOU1VSTCAqKVVSTDsKKworLy8gTmV3IFNQSS4KKy8vIFJldHVybiB2
YWx1ZSBvZiBuaWwgbWVhbnMgZXJyb3IgaW4gVVJMIHBhcnNpbmcuCisrIChOU1VSTCAqKV93ZWJr
aXRfVVJMV2l0aFVzZXJUeXBlZFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmc7CisrIChOU1VSTCAq
KV93ZWJraXRfVVJMV2l0aFVzZXJUeXBlZFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgcmVsYXRp
dmVUb1VSTDooTlNVUkwgKilVUkw7CisKKysgKE5TVVJMICopX3dlYl9VUkxXaXRoRGF0YUFzU3Ry
aW5nOihOU1N0cmluZyAqKXN0cmluZzsKKysgKE5TVVJMICopX3dlYl9VUkxXaXRoRGF0YUFzU3Ry
aW5nOihOU1N0cmluZyAqKXN0cmluZyByZWxhdGl2ZVRvVVJMOihOU1VSTCAqKWJhc2VVUkw7CisK
KysgKE5TVVJMICopX3dlYl9VUkxXaXRoRGF0YTooTlNEYXRhICopZGF0YTsKKysgKE5TVVJMICop
X3dlYl9VUkxXaXRoRGF0YTooTlNEYXRhICopZGF0YSByZWxhdGl2ZVRvVVJMOihOU1VSTCAqKWJh
c2VVUkw7CisKKy0gKE5TRGF0YSAqKV93ZWJfb3JpZ2luYWxEYXRhOworLSAoTlNTdHJpbmcgKilf
d2ViX29yaWdpbmFsRGF0YUFzU3RyaW5nOworLSAoY29uc3QgY2hhciAqKV93ZWJfVVJMQ1N0cmlu
ZzsKKworLSAoTlNTdHJpbmcgKilfd2ViX2hvc3RTdHJpbmc7CisKKy0gKE5TU3RyaW5nICopX3dl
Yl91c2VyVmlzaWJsZVN0cmluZzsKKworLSAoQk9PTClfd2ViX2lzRW1wdHk7CisKKy0gKE5TVVJM
ICopX3dlYmtpdF9jYW5vbmljYWxpemU7CistIChOU1VSTCAqKV93ZWJraXRfY2Fub25pY2FsaXpl
X3dpdGhfd3RmOworLSAoTlNVUkwgKilfd2Via2l0X1VSTEJ5UmVtb3ZpbmdGcmFnbWVudDsKKy0g
KE5TVVJMICopX3dlYl9VUkxCeVJlbW92aW5nVXNlckluZm87CisKKy0gKEJPT0wpX3dlYmtpdF9p
c0phdmFTY3JpcHRVUkw7CistIChCT09MKV93ZWJraXRfaXNGaWxlVVJMOworLSAoTlNTdHJpbmcg
Kilfd2Via2l0X3NjcmlwdElmSmF2YVNjcmlwdFVSTDsKKworLSAoTlNTdHJpbmcgKilfd2Via2l0
X3N1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlOihOU1N0cmluZyAqKU1JTUVUeXBlOworCist
IChOU1VSTCAqKV93ZWJraXRfVVJMRnJvbVVSTE9yU2NoZW1lbGVzc0ZpbGVVUkw7CisKK0BlbmQK
KworQGludGVyZmFjZSBOU1N0cmluZyAoV2ViTlNVUkxFeHRyYXMpCisKKy0gKEJPT0wpX3dlYl9p
c1VzZXJWaXNpYmxlVVJMOworCisvLyBEZXByZWNhdGVkIGFzIGl0IGlnbm9yZXMgVVJMIHBhcnNp
bmcgZXJyb3IuCisvLyBQbGVhc2UgdXNlIHRoZSBfd2Via2l0XyBjb3VudGVycGFydHMuCisvLyB0
dXJucyBmdW5ueS1sb29raW5nIEFTQ0lJIGZvcm0gaW50byBVbmljb2RlLCByZXR1cm5zIHNlbGYg
aWYgbm8gZGVjb2RpbmcgbmVlZGVkLCBjb252ZW5pZW50IGNvdmVyCistIChOU1N0cmluZyAqKV93
ZWJfZGVjb2RlSG9zdE5hbWU7CisvLyB0dXJucyBVbmljb2RlIGludG8gZnVubnktbG9va2luZyBB
U0NJSSBmb3JtLCByZXR1cm5zIHNlbGYgaWYgbm8gZGVjb2RpbmcgbmVlZGVkLCBjb252ZW5pZW50
IGNvdmVyCistIChOU1N0cmluZyAqKV93ZWJfZW5jb2RlSG9zdE5hbWU7CisKKy8vIE5ldyBTUEku
CisvLyBSZXR1cm4gdmFsdWUgb2YgbmlsIG1lYW5zIGVycm9yIGluIFVSTCBwYXJzaW5nLgorLSAo
TlNTdHJpbmcgKilfd2Via2l0X2RlY29kZUhvc3ROYW1lOworLSAoTlNTdHJpbmcgKilfd2Via2l0
X2VuY29kZUhvc3ROYW1lOworCistIChCT09MKV93ZWJraXRfaXNKYXZhU2NyaXB0VVJMOworLSAo
Qk9PTClfd2Via2l0X2lzRmlsZVVSTDsKKy0gKEJPT0wpX3dlYmtpdF9sb29rc0xpa2VBYnNvbHV0
ZVVSTDsKKy0gKE5TUmFuZ2UpX3dlYmtpdF9yYW5nZU9mVVJMU2NoZW1lOworLSAoTlNTdHJpbmcg
Kilfd2Via2l0X3NjcmlwdElmSmF2YVNjcmlwdFVSTDsKKworQGVuZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS05TVVJMRXh0cmFzLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS05TVVJMRXh0cmFzLm1tCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmRhOTZmMjczYTliNWIwY2QzMTcxOGFkZjcwMmViMjVhNDcyN2IxMTEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLTlNVUkxFeHRyYXMubW0K
QEAgLTAsMCArMSwzMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDcsIDIwMDgs
IDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUg
bmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAi
X1dLTlNVUkxFeHRyYXMuaCIKKworI2ltcG9ydCAiX1dLTlNTdHJpbmdFeHRyYXMuaCIKKyNpbXBv
cnQgIl9XS0xvY2FsaXphYmxlU3RyaW5ncy5oIgorI2ltcG9ydCAiX1dLTlNEYXRhRXh0cmFzLmgi
CisjaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMUmVxdWVzdC5oPgorI2ltcG9ydCA8V2ViQ29yZS9M
b2FkZXJOU1VSTEV4dHJhcy5oPgorI2ltcG9ydCA8V2ViQ29yZS9UZXh0RW5jb2RpbmcuaD4KKyNp
bXBvcnQgPFdlYkNvcmUvV2ViQ29yZU5TVVJMRXh0cmFzLmg+CisjaW1wb3J0IDx1bmljb2RlL3Vj
aGFyLmg+CisjaW1wb3J0IDx1bmljb2RlL3VzY3JpcHQuaD4KKyNpbXBvcnQgPHd0Zi9Bc3NlcnRp
b25zLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvTlNVUkxFeHRy
YXMuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2UgV1RGOwor
CisjZGVmaW5lIFVSTF9CWVRFU19CVUZGRVJfTEVOR1RIIDIwNDgKKworQGltcGxlbWVudGF0aW9u
IE5TVVJMIChXZWJOU1VSTEV4dHJhcykKKworKyAoTlNVUkwgKilfd2ViX1VSTFdpdGhVc2VyVHlw
ZWRTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIHJlbGF0aXZlVG9VUkw6KE5TVVJMICopVVJMCit7
CisgICAgcmV0dXJuIFVSTFdpdGhVc2VyVHlwZWRTdHJpbmdEZXByZWNhdGVkKHN0cmluZywgVVJM
KTsKK30KKworKyAoTlNVUkwgKilfd2ViX1VSTFdpdGhVc2VyVHlwZWRTdHJpbmc6KE5TU3RyaW5n
ICopc3RyaW5nCit7CisgICAgcmV0dXJuIFVSTFdpdGhVc2VyVHlwZWRTdHJpbmdEZXByZWNhdGVk
KHN0cmluZywgbmlsKTsKK30KKworKyAoTlNVUkwgKilfd2Via2l0X1VSTFdpdGhVc2VyVHlwZWRT
dHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIHJlbGF0aXZlVG9VUkw6KE5TVVJMICopVVJMCit7Cisg
ICAgcmV0dXJuIFVSTFdpdGhVc2VyVHlwZWRTdHJpbmcoc3RyaW5nLCBVUkwpOworfQorCisrIChO
U1VSTCAqKV93ZWJraXRfVVJMV2l0aFVzZXJUeXBlZFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcK
K3sKKyAgICByZXR1cm4gVVJMV2l0aFVzZXJUeXBlZFN0cmluZyhzdHJpbmcsIG5pbCk7Cit9CisK
KysgKE5TVVJMICopX3dlYl9VUkxXaXRoRGF0YUFzU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZwor
eworICAgIGlmIChzdHJpbmcgPT0gbmlsKSB7CisgICAgICAgIHJldHVybiBuaWw7CisgICAgfQor
ICAgIHJldHVybiBbc2VsZiBfd2ViX1VSTFdpdGhEYXRhQXNTdHJpbmc6c3RyaW5nIHJlbGF0aXZl
VG9VUkw6bmlsXTsKK30KKworKyAoTlNVUkwgKilfd2ViX1VSTFdpdGhEYXRhQXNTdHJpbmc6KE5T
U3RyaW5nICopc3RyaW5nIHJlbGF0aXZlVG9VUkw6KE5TVVJMICopYmFzZVVSTAoreworICAgIGlm
IChzdHJpbmcgPT0gbmlsKSB7CisgICAgICAgIHJldHVybiBuaWw7CisgICAgfQorICAgIHN0cmlu
ZyA9IFtzdHJpbmcgX3dlYmtpdF9zdHJpbmdCeVRyaW1taW5nV2hpdGVzcGFjZV07CisgICAgTlNE
YXRhICpkYXRhID0gW3N0cmluZyBkYXRhVXNpbmdFbmNvZGluZzpOU0lTT0xhdGluMVN0cmluZ0Vu
Y29kaW5nXTsKKyAgICByZXR1cm4gVVJMV2l0aERhdGEoZGF0YSwgYmFzZVVSTCk7Cit9CisKKysg
KE5TVVJMICopX3dlYl9VUkxXaXRoRGF0YTooTlNEYXRhICopZGF0YQoreworICAgIHJldHVybiBV
UkxXaXRoRGF0YShkYXRhLCBuaWwpOworfQorCisrIChOU1VSTCAqKV93ZWJfVVJMV2l0aERhdGE6
KE5TRGF0YSAqKWRhdGEgcmVsYXRpdmVUb1VSTDooTlNVUkwgKiliYXNlVVJMCit7CisgICAgcmV0
dXJuIFVSTFdpdGhEYXRhKGRhdGEsIGJhc2VVUkwpOworfQorCistIChOU0RhdGEgKilfd2ViX29y
aWdpbmFsRGF0YQoreworICAgIHJldHVybiBvcmlnaW5hbFVSTERhdGEoc2VsZik7Cit9CisKKy0g
KE5TU3RyaW5nICopX3dlYl9vcmlnaW5hbERhdGFBc1N0cmluZworeworICAgIHJldHVybiBhZG9w
dE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpvcmlnaW5hbFVSTERhdGEoc2VsZikg
ZW5jb2Rpbmc6TlNJU09MYXRpbjFTdHJpbmdFbmNvZGluZ10pLmF1dG9yZWxlYXNlKCk7Cit9CisK
Ky0gKE5TU3RyaW5nICopX3dlYl91c2VyVmlzaWJsZVN0cmluZworeworICAgIHJldHVybiBXVEY6
OnVzZXJWaXNpYmxlU3RyaW5nKHNlbGYpOworfQorCistIChCT09MKV93ZWJfaXNFbXB0eQorewor
ICAgIGlmICghQ0ZVUkxHZXRCYXNlVVJMKChDRlVSTFJlZilzZWxmKSkKKyAgICAgICAgcmV0dXJu
IENGVVJMR2V0Qnl0ZXMoKENGVVJMUmVmKXNlbGYsIE5VTEwsIDApID09IDA7CisgICAgcmV0dXJu
IFtvcmlnaW5hbFVSTERhdGEoc2VsZikgbGVuZ3RoXSA9PSAwOworfQorCistIChjb25zdCBjaGFy
ICopX3dlYl9VUkxDU3RyaW5nCit7CisgICAgTlNNdXRhYmxlRGF0YSAqZGF0YSA9IFtOU011dGFi
bGVEYXRhIGRhdGFdOworICAgIFtkYXRhIGFwcGVuZERhdGE6b3JpZ2luYWxVUkxEYXRhKHNlbGYp
XTsKKyAgICBbZGF0YSBhcHBlbmRCeXRlczoiXDAiIGxlbmd0aDoxXTsKKyAgICByZXR1cm4gKGNv
bnN0IGNoYXIgKilbZGF0YSBieXRlc107CisgfQorCistIChOU1VSTCAqKV93ZWJraXRfY2Fub25p
Y2FsaXplCit7CisgICAgcmV0dXJuIFVSTEJ5Q2Fub25pY2FsaXppbmdVUkwoc2VsZik7Cit9CisK
Ky0gKE5TVVJMICopX3dlYmtpdF9jYW5vbmljYWxpemVfd2l0aF93dGYKK3sKKyAgICBhdXRvIHVy
bCA9IFdURjo6VVJMKHNlbGYpOworICAgIHJldHVybiB1cmwuaXNWYWxpZCgpID8gKE5TVVJMICop
dXJsIDogbmlsOworfQorCistIChOU1VSTCAqKV93ZWJraXRfVVJMQnlSZW1vdmluZ0ZyYWdtZW50
Cit7CisgICAgcmV0dXJuIFVSTEJ5VHJ1bmNhdGluZ09uZUNoYXJhY3RlckJlZm9yZUNvbXBvbmVu
dChzZWxmLCBrQ0ZVUkxDb21wb25lbnRGcmFnbWVudCk7Cit9CisKKy0gKE5TVVJMICopX3dlYl9V
UkxCeVJlbW92aW5nVXNlckluZm8KK3sKKyAgICByZXR1cm4gV1RGOjpVUkxCeVJlbW92aW5nVXNl
ckluZm8oc2VsZik7Cit9CisKKy0gKEJPT0wpX3dlYmtpdF9pc0phdmFTY3JpcHRVUkwKK3sKKyAg
ICByZXR1cm4gW1tzZWxmIF93ZWJfb3JpZ2luYWxEYXRhQXNTdHJpbmddIF93ZWJraXRfaXNKYXZh
U2NyaXB0VVJMXTsKK30KKworLSAoTlNTdHJpbmcgKilfd2Via2l0X3NjcmlwdElmSmF2YVNjcmlw
dFVSTAoreworICAgIHJldHVybiBbW3NlbGYgYWJzb2x1dGVTdHJpbmddIF93ZWJraXRfc2NyaXB0
SWZKYXZhU2NyaXB0VVJMXTsKK30KKworLSAoQk9PTClfd2Via2l0X2lzRmlsZVVSTAoreworICAg
IHJldHVybiBbW3NlbGYgX3dlYl9vcmlnaW5hbERhdGFBc1N0cmluZ10gX3dlYmtpdF9pc0ZpbGVV
UkxdOworfQorCistKE5TRGF0YSAqKV93ZWJfc2NoZW1lU2VwYXJhdG9yV2l0aG91dENvbG9uCit7
CisgICAgTlNEYXRhICpyZXN1bHQgPSBuaWw7CisgICAgQ0ZSYW5nZSByYW5nZVdpdGhTZXBhcmF0
b3JzOworICAgIENGUmFuZ2UgcmFuZ2UgPSBDRlVSTEdldEJ5dGVSYW5nZUZvckNvbXBvbmVudCgo
Q0ZVUkxSZWYpc2VsZiwga0NGVVJMQ29tcG9uZW50U2NoZW1lLCAmcmFuZ2VXaXRoU2VwYXJhdG9y
cyk7CisgICAgaWYgKHJhbmdlV2l0aFNlcGFyYXRvcnMubG9jYXRpb24gIT0ga0NGTm90Rm91bmQp
IHsKKyAgICAgICAgTlNTdHJpbmcgKmFic29sdXRlU3RyaW5nID0gW3NlbGYgYWJzb2x1dGVTdHJp
bmddOworICAgICAgICBOU1JhbmdlIHNlcGFyYXRvcnNSYW5nZSA9IE5TTWFrZVJhbmdlKHJhbmdl
LmxvY2F0aW9uICsgcmFuZ2UubGVuZ3RoICsgMSwgcmFuZ2VXaXRoU2VwYXJhdG9ycy5sZW5ndGgg
LSByYW5nZS5sZW5ndGggLSAxKTsKKyAgICAgICAgaWYgKHNlcGFyYXRvcnNSYW5nZS5sb2NhdGlv
biArIHNlcGFyYXRvcnNSYW5nZS5sZW5ndGggPD0gW2Fic29sdXRlU3RyaW5nIGxlbmd0aF0pIHsK
KyAgICAgICAgICAgIE5TU3RyaW5nICpzbGFzaGVzID0gW2Fic29sdXRlU3RyaW5nIHN1YnN0cmlu
Z1dpdGhSYW5nZTpzZXBhcmF0b3JzUmFuZ2VdOworICAgICAgICAgICAgcmVzdWx0ID0gW3NsYXNo
ZXMgZGF0YVVzaW5nRW5jb2Rpbmc6TlNJU09MYXRpbjFTdHJpbmdFbmNvZGluZ107CisgICAgICAg
IH0KKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLShOU0RhdGEgKilfd2ViX2RhdGFG
b3JVUkxDb21wb25lbnRUeXBlOihDRlVSTENvbXBvbmVudFR5cGUpY29tcG9uZW50VHlwZQorewor
ICAgIHJldHVybiBXVEY6OmRhdGFGb3JVUkxDb21wb25lbnRUeXBlKHNlbGYsIGNvbXBvbmVudFR5
cGUpOworfQorCistKE5TRGF0YSAqKV93ZWJfc2NoZW1lRGF0YQoreworICAgIHJldHVybiBXVEY6
OmRhdGFGb3JVUkxDb21wb25lbnRUeXBlKHNlbGYsIGtDRlVSTENvbXBvbmVudFNjaGVtZSk7Cit9
CisKKy0oTlNEYXRhICopX3dlYl9ob3N0RGF0YQoreworICAgIE5TRGF0YSAqcmVzdWx0ID0gV1RG
OjpkYXRhRm9yVVJMQ29tcG9uZW50VHlwZShzZWxmLCBrQ0ZVUkxDb21wb25lbnRIb3N0KTsKKyAg
ICBOU0RhdGEgKnNjaGVtZSA9IFtzZWxmIF93ZWJfc2NoZW1lRGF0YV07CisgICAgLy8gVGFrZSBv
ZmYgbG9jYWxob3N0IGZvciBmaWxlCisgICAgaWYgKFtzY2hlbWUgX3dlYl9pc0Nhc2VJbnNlbnNp
dGl2ZUVxdWFsVG9DU3RyaW5nOiJmaWxlIl0pIHsKKyAgICAgICAgcmV0dXJuIChbcmVzdWx0IF93
ZWJfaXNDYXNlSW5zZW5zaXRpdmVFcXVhbFRvQ1N0cmluZzoibG9jYWxob3N0Il0pID8gbmlsIDog
cmVzdWx0OworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCistIChOU1N0cmluZyAqKV93
ZWJfaG9zdFN0cmluZworeworICAgIHJldHVybiBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGlu
aXRXaXRoRGF0YTpbc2VsZiBfd2ViX2hvc3REYXRhXSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNv
ZGluZ10pLmF1dG9yZWxlYXNlKCk7Cit9CisKKy0gKE5TU3RyaW5nICopX3dlYmtpdF9zdWdnZXN0
ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZTooTlNTdHJpbmcgKilNSU1FVHlwZQoreworICAgIHJldHVy
biBzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZShzZWxmLCBNSU1FVHlwZSk7Cit9CisKKy0g
KE5TVVJMICopX3dlYmtpdF9VUkxGcm9tVVJMT3JTY2hlbWVsZXNzRmlsZVVSTAoreworICAgIGlm
IChbc2VsZiBzY2hlbWVdKQorICAgICAgICByZXR1cm4gc2VsZjsKKworICAgIHJldHVybiBbTlNV
UkwgVVJMV2l0aFN0cmluZzpbQCJmaWxlOiIgc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6W3NlbGYg
YWJzb2x1dGVTdHJpbmddXV07Cit9CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBOU1N0cmluZyAo
V2ViTlNVUkxFeHRyYXMpCisKKy0gKEJPT0wpX3dlYl9pc1VzZXJWaXNpYmxlVVJMCit7CisgICAg
cmV0dXJuIGlzVXNlclZpc2libGVVUkwoc2VsZik7Cit9CisKKy0gKEJPT0wpX3dlYmtpdF9pc0ph
dmFTY3JpcHRVUkwKK3sKKyAgICByZXR1cm4gW3NlbGYgX3dlYmtpdF9oYXNDYXNlSW5zZW5zaXRp
dmVQcmVmaXg6QCJqYXZhc2NyaXB0OiJdOworfQorCistIChCT09MKV93ZWJraXRfaXNGaWxlVVJM
Cit7CisgICAgcmV0dXJuIFtzZWxmIHJhbmdlT2ZTdHJpbmc6QCJmaWxlOiIgb3B0aW9uczooTlND
YXNlSW5zZW5zaXRpdmVTZWFyY2ggfCBOU0FuY2hvcmVkU2VhcmNoKV0ubG9jYXRpb24gIT0gTlNO
b3RGb3VuZDsKK30KKworLSAoTlNTdHJpbmcgKilfd2Via2l0X3N0cmluZ0J5UmVwbGFjaW5nVmFs
aWRQZXJjZW50RXNjYXBlcworeworICAgIHJldHVybiBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMo
U3RyaW5nKHNlbGYpKTsKK30KKworLSAoTlNTdHJpbmcgKilfd2Via2l0X3NjcmlwdElmSmF2YVNj
cmlwdFVSTAoreworICAgIGlmICghW3NlbGYgX3dlYmtpdF9pc0phdmFTY3JpcHRVUkxdKSB7Cisg
ICAgICAgIHJldHVybiBuaWw7CisgICAgfQorICAgIHJldHVybiBbW3NlbGYgc3Vic3RyaW5nRnJv
bUluZGV4OjExXSBfd2Via2l0X3N0cmluZ0J5UmVwbGFjaW5nVmFsaWRQZXJjZW50RXNjYXBlc107
Cit9CisKKy0gKE5TU3RyaW5nICopX3dlYl9kZWNvZGVIb3N0TmFtZQoreworICAgIE5TU3RyaW5n
ICpuYW1lID0gZGVjb2RlSG9zdE5hbWUoc2VsZik7CisgICAgcmV0dXJuICFuYW1lID8gc2VsZiA6
IG5hbWU7Cit9CisKKy0gKE5TU3RyaW5nICopX3dlYl9lbmNvZGVIb3N0TmFtZQoreworICAgIE5T
U3RyaW5nICpuYW1lID0gZW5jb2RlSG9zdE5hbWUoc2VsZik7CisgICAgcmV0dXJuICFuYW1lID8g
c2VsZiA6IG5hbWU7Cit9CisKKy0gKE5TU3RyaW5nICopX3dlYmtpdF9kZWNvZGVIb3N0TmFtZQor
eworICAgIHJldHVybiBkZWNvZGVIb3N0TmFtZShzZWxmKTsKK30KKworLSAoTlNTdHJpbmcgKilf
d2Via2l0X2VuY29kZUhvc3ROYW1lCit7CisgICAgcmV0dXJuIGVuY29kZUhvc3ROYW1lKHNlbGYp
OworfQorCistKE5TUmFuZ2UpX3dlYmtpdF9yYW5nZU9mVVJMU2NoZW1lCit7CisgICAgTlNSYW5n
ZSBjb2xvbiA9IFtzZWxmIHJhbmdlT2ZTdHJpbmc6QCI6Il07CisgICAgaWYgKGNvbG9uLmxvY2F0
aW9uICE9IE5TTm90Rm91bmQgJiYgY29sb24ubG9jYXRpb24gPiAwKSB7CisgICAgICAgIE5TUmFu
Z2Ugc2NoZW1lID0gezAsIGNvbG9uLmxvY2F0aW9ufTsKKyAgICAgICAgc3RhdGljIGF1dG8gaW52
ZXJzZVNjaGVtZUNoYXJhY3RlclNldCA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgICAg
ICAgICAvKgorICAgICAgICAgICAgIFRoaXMgc3R1ZmYgaXMgdmVyeSBleHBlbnNpdmUuICAxMC0x
NSBtc2VjIG9uIGEgMngxLjJHSHouICBJZiBub3QgY2FjaGVkIGl0IHN3YW1wcworICAgICAgICAg
ICAgIGV2ZXJ5dGhpbmcgZWxzZSB3aGVuIGFkZGluZyBpdGVtcyB0byB0aGUgYXV0b2NvbXBsZXRl
IERCLiAgTWFrZXMgbWUgd29uZGVyIGlmIHdlCisgICAgICAgICAgICAgZXZlbiBuZWVkIHRvIGVu
Zm9yY2UgdGhlIGNoYXJhY3RlciBzZXQgaGVyZS4KKyAgICAgICAgICAgICovCisgICAgICAgICAg
ICBOU1N0cmluZyAqYWNjZXB0YWJsZUNoYXJhY3RlcnMgPSBAIkFCQ0RFRkdISUpLTE1OT1BRUlNU
VVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky4tIjsKKyAgICAgICAg
ICAgIHJldHVybiByZXRhaW5QdHIoW1tOU0NoYXJhY3RlclNldCBjaGFyYWN0ZXJTZXRXaXRoQ2hh
cmFjdGVyc0luU3RyaW5nOmFjY2VwdGFibGVDaGFyYWN0ZXJzXSBpbnZlcnRlZFNldF0pOworICAg
ICAgICB9KCkpOworICAgICAgICBOU1JhbmdlIGlsbGVnYWxzID0gW3NlbGYgcmFuZ2VPZkNoYXJh
Y3RlckZyb21TZXQ6aW52ZXJzZVNjaGVtZUNoYXJhY3RlclNldC5nZXQoKS5nZXQoKSBvcHRpb25z
OjAgcmFuZ2U6c2NoZW1lXTsKKyAgICAgICAgaWYgKGlsbGVnYWxzLmxvY2F0aW9uID09IE5TTm90
Rm91bmQpCisgICAgICAgICAgICByZXR1cm4gc2NoZW1lOworICAgIH0KKyAgICByZXR1cm4gTlNN
YWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCk7Cit9CisKKy0oQk9PTClfd2Via2l0X2xvb2tzTGlrZUFi
c29sdXRlVVJMCit7CisgICAgLy8gVHJpbSB3aGl0ZXNwYWNlIGJlY2F1c2UgX3dlYl9VUkxXaXRo
U3RyaW5nIGFsbG93cyB3aGl0ZXNwYWNlLgorICAgIHJldHVybiBbW3NlbGYgX3dlYmtpdF9zdHJp
bmdCeVRyaW1taW5nV2hpdGVzcGFjZV0gX3dlYmtpdF9yYW5nZU9mVVJMU2NoZW1lXS5sb2NhdGlv
biAhPSBOU05vdEZvdW5kOworfQorCitAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9Hcm91cEFjdGl2aXRpZXMvR3JvdXBBY3Rpdml0aWVzU2Vzc2lvbk5vdGlm
aWVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvR3JvdXBBY3Rpdml0aWVzL0dy
b3VwQWN0aXZpdGllc1Nlc3Npb25Ob3RpZmllci5tbQppbmRleCA1NTI3ZWI4NTU4N2ZmYjQxOWQ1
MmY2M2Y1ODAxNGMwMjY0Yzc0NmMzLi42OTc2YmJiNDY4MjhhM2NjOTJhMTU1ZTViOWNkZDljNjMw
MjEyOTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Hcm91cEFj
dGl2aXRpZXMvR3JvdXBBY3Rpdml0aWVzU2Vzc2lvbk5vdGlmaWVyLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL0dyb3VwQWN0aXZpdGllcy9Hcm91cEFjdGl2aXRpZXNTZXNz
aW9uTm90aWZpZXIubW0KQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TRVNT
SU9OX0NPT1JESU5BVE9SKSAmJiBIQVZFKEdST1VQX0FDVElWSVRJRVMpCiAKKyNpbXBvcnQgIkdy
b3VwQWN0aXZpdGllc0Nvb3JkaW5hdG9yLmgiCiAjaW1wb3J0ICJXS0dyb3VwU2Vzc2lvbi5oIgog
I2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL01vZGVsRWxlbWVudENvbnRyb2xsZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL01vZGVsRWxlbWVudENvbnRyb2xsZXJDb2NvYS5tbQppbmRleCA5
Nzg0NDRjN2RmM2UzZTMwOWVjNzA2MTZiNDU1YjIzNjE1ODQyMTc3Li5iOWI2ZDIwMzg0YTE3NGU3
MzQ1YzU0YmRkMDdjNWY5ZDVkYTZhMzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9Nb2RlbEVsZW1lbnRDb250cm9sbGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvTW9kZWxFbGVtZW50Q29udHJvbGxlckNvY29hLm1tCkBAIC0z
MCw2ICszMCw3IEBACiAKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIldlYlBhZ2VQcm94
eS5oIgorI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CiAKICNpZiBIQVZFKEFSS0lUX0lOTElO
RV9QUkVWSUVXX0lPUykKICNpbXBvcnQgIkFQSVVJQ2xpZW50LmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU3lzdGVtUHJldmlld0NvbnRyb2xsZXJD
b2NvYS5tbQppbmRleCBiZDRlNmJmYjczMTg1MDc1OTVhYzRmODEwNWYwM2U3NTliNmQxZGE3Li5l
MzI4YzVlOThkYjFiMTY2YjgxODdjNGIzMGU3MTRiM2ZhYjgzNWNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9s
bGVyQ29jb2EubW0KQEAgLTM3LDYgKzM3LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvVVRJVXRpbGl0
aWVzLmg+CiAjaW1wb3J0IDxwYWwvaW9zL1F1aWNrTG9va1NvZnRMaW5rLmg+CiAjaW1wb3J0IDxw
YWwvc3BpL2lvcy9RdWlja0xvb2tTUEkuaD4KKyNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgog
I2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CiAKICNpZiBIQVZFKEFSS0lUX1FVSUNLX0xPT0tf
UFJFVklFV19JVEVNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViVVJMU2NoZW1lSGFuZGxlckNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViVVJMU2NoZW1lSGFuZGxlckNvY29hLm1tCmluZGV4IGUzOTc5ZTkwMWI0ZjhkNmEyOWYx
MDU2YmY4MjI4NmRlMjViYjdiNTAuLjI4NDcyNGVjNGM0MDMxMjgxYzNmODNhYjkwYTYyZDZmMWU4
NDljZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlVSTFNj
aGVtZUhhbmRsZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJVUkxTY2hlbWVIYW5kbGVyQ29jb2EubW0KQEAgLTMwLDYgKzMwLDcgQEAKICNpbXBvcnQgIldL
VVJMU2NoZW1lSGFuZGxlci5oIgogI2ltcG9ydCAiV0tVUkxTY2hlbWVUYXNrSW50ZXJuYWwuaCIK
ICNpbXBvcnQgIldLV2ViVmlld0ludGVybmFsLmgiCisjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIK
ICNpbXBvcnQgIldlYlVSTFNjaGVtZVRhc2suaCIKICNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDQ1ZDg4MzBiMmNiOTRiYTlkZGRlMTllNzIwNTdkNGNiMzAzZmM1OTcuLmY0MDdjZTY4YmRjZWU3
ZjA0MzA5YzUzZDQ0ZmIwNTRlYWRlNGU3NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMyw3ICszLDcgQEAKIAlhcmNoaXZlVmVyc2lv
biA9IDE7CiAJY2xhc3NlcyA9IHsKIAl9OwotCW9iamVjdFZlcnNpb24gPSA1MjsKKwlvYmplY3RW
ZXJzaW9uID0gNTQ7CiAJb2JqZWN0cyA9IHsKIAogLyogQmVnaW4gUEJYQWdncmVnYXRlVGFyZ2V0
IHNlY3Rpb24gKi8KQEAgLTE5NzAsNiArMTk3MCwxMSBAQAogCQlERjBDNUYyQjI1MkVENDQwMDBE
OTIxREIgLyogV0tEb3dubG9hZEludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBERjBDNUYyNTI1MkVDQjhFMDBEOTIxREIgLyogV0tEb3dubG9h
ZEludGVybmFsLmggKi87IH07CiAJCURGNDYyRTBGMjNGMjJGNTUwMEVGRjM1RiAvKiBXS0hUVFBD
b29raWVTdG9yZVByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IERGNDYyRTBFMjNGMjJGNTMwMEVGRjM1RiAvKiBXS0hUVFBDb29raWVTdG9yZVBy
aXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlERjQ2MkUxMjIzRjMzOEJFMDBFRkYzNUYgLyogV0tDb250ZW50V29ybGRQcml2YXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERjQ2MkUxMTIzRjMz
OEFEMDBFRkYzNUYgLyogV0tDb250ZW50V29ybGRQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJREY2MkRBRDAyNkVGRTIzMzAwMEZGQTJB
IC8qIF9XS0xvY2FsaXphYmxlU3RyaW5ncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gREY2MkRBQ0UyNkVGRTIzMjAwMEZGQTJBIC8qIF9XS0xvY2FsaXph
YmxlU3RyaW5ncy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCURGNjJEQUQ0MjZFRkVENDIwMDBGRkEyQSAvKiBfV0tOU1VSTEV4dHJhcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREY2MkRBRDIyNkVGRUQ0
MjAwMEZGQTJBIC8qIF9XS05TVVJMRXh0cmFzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJREY2MkRBRDkyNkVGRUUyODAwMEZGQTJBIC8qIF9XS05T
U3RyaW5nRXh0cmFzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBERjYyREFENzI2RUZFRTI4MDAwRkZBMkEgLyogX1dLTlNTdHJpbmdFeHRyYXMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlERjYyREFEQzI2
RUZFRTkxMDAwRkZBMkEgLyogX1dLTlNEYXRhRXh0cmFzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERjYyREFEQTI2RUZFRTkxMDAwRkZBMkEgLyogX1dL
TlNEYXRhRXh0cmFzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJREY2MkRBRTEyNkVGRjE2RTAwMEZGQTJBIC8qIF9XS05TRmlsZU1hbmFnZXJFeHRy
YXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERGNjJE
QURGMjZFRkYxNkUwMDBGRkEyQSAvKiBfV0tOU0ZpbGVNYW5hZ2VyRXh0cmFzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJREY4NENFRTQyNDlBQTI0
RDAwOTA5NkY2IC8qIFdLUERGSFVEVmlldy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IERGODRDRUUyMjQ5QUEyMUYwMDkwOTZGNiAvKiBXS1BERkhVRFZp
ZXcubW0gKi87IH07CiAJCUUxMDVGRTU0MThEN0I5REUwMDhGNTdBOCAvKiBFZGl0aW5nUmFuZ2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMDVGRTUz
MThEN0I5REUwMDhGNTdBOCAvKiBFZGl0aW5nUmFuZ2UuaCAqLzsgfTsKIAkJRTExRDM1QUUxNkI2
M0QxQjAwNkQyM0Q3IC8qIGNvbS5hcHBsZS5XZWJQcm9jZXNzLnNiIGluIFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTk2N0UzNzE1MEFCNUUyMDBDNzMxNjkg
LyogY29tLmFwcGxlLldlYlByb2Nlc3Muc2IgKi87IH07CkBAIC01OTMyLDYgKzU5MzcsMTYgQEAK
IAkJREY0NjJFMTEyM0YzMzhBRDAwRUZGMzVGIC8qIFdLQ29udGVudFdvcmxkUHJpdmF0ZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0NvbnRlbnRXb3JsZFByaXZhdGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREY1OEM2MzExMzcxQUM1ODAwRjlBMzdDIC8q
IE5hdGl2ZVdlYldoZWVsRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TmF0aXZlV2ViV2hlZWxFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlERjU4
QzYzNTEzNzFBQ0EwMDBGOUEzN0MgLyogTmF0aXZlV2ViV2hlZWxFdmVudE1hYy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5hdGl2ZVdlYldoZWVsRXZlbnRNYWMu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURGNjJEQUNFMjZFRkUyMzIwMDBGRkEy
QSAvKiBfV0tMb2NhbGl6YWJsZVN0cmluZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gX1dLTG9jYWxpemFibGVTdHJpbmdzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCURGNjJEQUNGMjZFRkUyMzMwMDBGRkEyQSAvKiBfV0tMb2NhbGl6YWJsZVN0cmluZ3MubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tMb2NhbGl6YWJsZVN0
cmluZ3MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURGNjJEQUQyMjZFRkVENDIw
MDBGRkEyQSAvKiBfV0tOU1VSTEV4dHJhcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBfV0tOU1VSTEV4dHJhcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlERjYy
REFEMzI2RUZFRDQyMDAwRkZBMkEgLyogX1dLTlNVUkxFeHRyYXMubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tOU1VSTEV4dHJhcy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJREY2MkRBRDYyNkVGRUUyNzAwMEZGQTJBIC8qIF9XS05TU3RyaW5n
RXh0cmFzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dLTlNT
dHJpbmdFeHRyYXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURGNjJEQUQ3MjZF
RkVFMjgwMDBGRkEyQSAvKiBfV0tOU1N0cmluZ0V4dHJhcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBfV0tOU1N0cmluZ0V4dHJhcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlERjYyREFEQTI2RUZFRTkxMDAwRkZBMkEgLyogX1dLTlNEYXRhRXh0cmFzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS05TRGF0YUV4dHJhcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlERjYyREFEQjI2RUZFRTkxMDAwRkZBMkEgLyogX1dLTlNE
YXRhRXh0cmFzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dL
TlNEYXRhRXh0cmFzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlERjYyREFERjI2
RUZGMTZFMDAwRkZBMkEgLyogX1dLTlNGaWxlTWFuYWdlckV4dHJhcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBfV0tOU0ZpbGVNYW5hZ2VyRXh0cmFzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCURGNjJEQUUwMjZFRkYxNkUwMDBGRkEyQSAvKiBfV0tOU0ZpbGVN
YW5hZ2VyRXh0cmFzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
X1dLTlNGaWxlTWFuYWdlckV4dHJhcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
REY3NDI3NUMyNEY0OTU1MDAwRjhBQkU5IC8qIFBERlBsdWdpbklkZW50aWZpZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUERGUGx1Z2luSWRlbnRpZmllci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlERjg0Q0VFMjI0OUFBMjFGMDA5MDk2RjYgLyogV0tQREZI
VURWaWV3Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tQREZI
VURWaWV3Lm1tOyBwYXRoID0gUERGL1dLUERGSFVEVmlldy5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJREY4NENFRTMyNDlBQTIxRjAwOTA5NkY2IC8qIFdLUERGSFVEVmlldy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS1BERkhVRFZpZXcuaDsgcGF0aCA9IFBE
Ri9XS1BERkhVRFZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgxNzIsNiAr
ODE4NywxNiBAQAogCQkJCTUxQzBDOTc5MURERDc4NTQwMDMyQ0FEMyAvKiBfV0tMaW5rSWNvblBh
cmFtZXRlcnMuaCAqLywKIAkJCQk1MUMwQzk3QTFEREQ3ODU0MDAzMkNBRDMgLyogX1dLTGlua0lj
b25QYXJhbWV0ZXJzLm1tICovLAogCQkJCTUxQzBDOTdCMURERDc4NTQwMDMyQ0FEMyAvKiBfV0tM
aW5rSWNvblBhcmFtZXRlcnNJbnRlcm5hbC5oICovLAorCQkJCURGNjJEQUNFMjZFRkUyMzIwMDBG
RkEyQSAvKiBfV0tMb2NhbGl6YWJsZVN0cmluZ3MuaCAqLywKKwkJCQlERjYyREFDRjI2RUZFMjMz
MDAwRkZBMkEgLyogX1dLTG9jYWxpemFibGVTdHJpbmdzLm1tICovLAorCQkJCURGNjJEQURBMjZF
RkVFOTEwMDBGRkEyQSAvKiBfV0tOU0RhdGFFeHRyYXMuaCAqLywKKwkJCQlERjYyREFEQjI2RUZF
RTkxMDAwRkZBMkEgLyogX1dLTlNEYXRhRXh0cmFzLm1tICovLAorCQkJCURGNjJEQURGMjZFRkYx
NkUwMDBGRkEyQSAvKiBfV0tOU0ZpbGVNYW5hZ2VyRXh0cmFzLmggKi8sCisJCQkJREY2MkRBRTAy
NkVGRjE2RTAwMEZGQTJBIC8qIF9XS05TRmlsZU1hbmFnZXJFeHRyYXMubW0gKi8sCisJCQkJREY2
MkRBRDcyNkVGRUUyODAwMEZGQTJBIC8qIF9XS05TU3RyaW5nRXh0cmFzLmggKi8sCisJCQkJREY2
MkRBRDYyNkVGRUUyNzAwMEZGQTJBIC8qIF9XS05TU3RyaW5nRXh0cmFzLm1tICovLAorCQkJCURG
NjJEQUQyMjZFRkVENDIwMDBGRkEyQSAvKiBfV0tOU1VSTEV4dHJhcy5oICovLAorCQkJCURGNjJE
QUQzMjZFRkVENDIwMDBGRkEyQSAvKiBfV0tOU1VSTEV4dHJhcy5tbSAqLywKIAkJCQk5MzIzNjEx
RDFCMDE1REE4MDBGQTkyMzIgLyogX1dLT3ZlcmxheVNjcm9sbGJhclN0eWxlLmggKi8sCiAJCQkJ
MUE0M0U4MjgxODhGM0NEQzAwOUU0RDMwIC8qIF9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5o
ICovLAogCQkJCTFBNDNFODI3MTg4RjNDREMwMDlFNEQzMCAvKiBfV0tQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24ubW0gKi8sCkBAIC0xMTk0MCw3ICsxMTk2NSwxMiBAQAogCQkJCTMxQjM2Mjk3MjE0
MUVCRDkwMDdCRkE1MyAvKiBfV0tJbnRlcm5hbERlYnVnRmVhdHVyZUludGVybmFsLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkyRDc5MEE5RDFBRDcwNTBEMDBBQjkwQjMgLyogX1dLTGF5b3V0TW9kZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTEwRjU5MTExRERFMjk3MDAwNDEyRkY1IC8qIF9XS0xpbmtJ
Y29uUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCisJCQkJREY2MkRBRDAyNkVGRTIzMzAwMEZG
QTJBIC8qIF9XS0xvY2FsaXphYmxlU3RyaW5ncy5oIGluIEhlYWRlcnMgKi8sCisJCQkJREY2MkRB
REMyNkVGRUU5MTAwMEZGQTJBIC8qIF9XS05TRGF0YUV4dHJhcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTExOEE5RjMxOTA4QjhFQTAwRjdDOTJCIC8qIF9XS05TRmlsZU1hbmFnZXJFeHRyYXMuaCBp
biBIZWFkZXJzICovLAorCQkJCURGNjJEQUUxMjZFRkYxNkUwMDBGRkEyQSAvKiBfV0tOU0ZpbGVN
YW5hZ2VyRXh0cmFzLmggaW4gSGVhZGVycyAqLywKKwkJCQlERjYyREFEOTI2RUZFRTI4MDAwRkZB
MkEgLyogX1dLTlNTdHJpbmdFeHRyYXMuaCBpbiBIZWFkZXJzICovLAorCQkJCURGNjJEQUQ0MjZF
RkVENDIwMDBGRkEyQSAvKiBfV0tOU1VSTEV4dHJhcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVD
MEYwQTcyMDAwNjU0RDAwNTM2NTM2IC8qIF9XS05TV2luZG93RXh0cmFzLmggaW4gSGVhZGVycyAq
LywKIAkJCQk5MzIzNjExRTFCMDE1REE4MDBGQTkyMzIgLyogX1dLT3ZlcmxheVNjcm9sbGJhclN0
eWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTQzRTgyQTE4OEYzQ0RDMDA5RTREMzAgLyogX1dL
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvbWFjL01pZ3JhdGVIZWFkZXJzRnJvbVdlYktpdExlZ2FjeS5tYWtlIGIvU291
cmNlL1dlYktpdC9tYWMvTWlncmF0ZUhlYWRlcnNGcm9tV2ViS2l0TGVnYWN5Lm1ha2UKaW5kZXgg
ZGYxNDg4NjMyYTg5MDY0YTdmYWU3NTE4ZmY0MTI2NWJjMzk4NDA1OC4uNzIzNTU2ZmM3MGQzNDQ4
NzhkMWViNGU3NDUyNDU5YjUwYmExYzE3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
TWlncmF0ZUhlYWRlcnNGcm9tV2ViS2l0TGVnYWN5Lm1ha2UKKysrIGIvU291cmNlL1dlYktpdC9t
YWMvTWlncmF0ZUhlYWRlcnNGcm9tV2ViS2l0TGVnYWN5Lm1ha2UKQEAgLTIxNyw3ICsyMTcsNyBA
QCAkKFBVQkxJQ19IRUFERVJTX0RJUikvJSA6ICQoV0VCS0lUX0xFR0FDWV9QUklWQVRFX0hFQURF
UlNfRElSKS8lIE1pZ3JhdGVIZWFkZXJzRgogJChQUklWQVRFX0hFQURFUlNfRElSKS8lIDogJChX
RUJLSVRfTEVHQUNZX1BSSVZBVEVfSEVBREVSU19ESVIpLyUgTWlncmF0ZUhlYWRlcnNGcm9tV2Vi
S2l0TGVnYWN5Lm1ha2UKIAkkKFdFQktJVF9MRUdBQ1lfSEVBREVSX01JR1JBVEVfQ01EKQogCi1h
bGwgOiAkKFdFQktJVF9MRUdBQ1lfUFVCTElDX0hFQURFUlMpICQoV0VCS0lUX0xFR0FDWV9QUklW
QVRFX0hFQURFUlMpCithbGwgOgogCiAkKFBVQkxJQ19IRUFERVJTX0RJUikvV2ViS2l0TGVnYWN5
LmggOiAkKFdFQktJVF9MRUdBQ1lfUFJJVkFURV9IRUFERVJTX0RJUikvV2ViS2l0LmggTWlncmF0
ZUhlYWRlcnNGcm9tV2ViS2l0TGVnYWN5Lm1ha2UKIAkkKFBVQkxJQ19IRUFERVJfQ0hFQ0tfQ01E
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJLaXRMZWdhY3kueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViS2l0TGVnYWN5Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTc4YTVjYzZmNzI2NGMxYTA0YjQ3YTBjNTE2N2Rj
ZjAyOWQ2MDlkYy4uZmRhMzY5OTk3NjU0NGIyMWFiYTI5ODY0NTllMDM2MTA2ZDFhMTNjMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJLaXRMZWdhY3kueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYktpdExlZ2FjeS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zNDEsNyArMzQxLDYgQEAKIAkJOTM5ODEwQkYwODI0QkYw
MTAwOERGMDM4IC8qIFdlYkNvcmVTdGF0aXN0aWNzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjU5RUFFNDEwMjUzQzhERTAxODYzNUNBIC8qIFdlYkNv
cmVTdGF0aXN0aWNzLm1tICovOyB9OwogCQk5Mzk4MTBDMTA4MjRCRjAxMDA4REYwMzggLyogV2Vi
SWNvbkRhdGFiYXNlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjUyOEUzRUEwMzFFOTFBRDAxQ0EyQUNBIC8qIFdlYkljb25EYXRhYmFzZS5tbSAqLzsg
fTsKIAkJOTM5ODEwQzMwODI0QkYwMTAwOERGMDM4IC8qIFdlYktpdExvZ2dpbmcubSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQUVCMTdFMDMyQzE3MzUw
MDg2MzVDRSAvKiBXZWJLaXRMb2dnaW5nLm0gKi87IH07Ci0JCTkzOTgxMEM0MDgyNEJGMDEwMDhE
RjAzOCAvKiBXZWJLaXROU1N0cmluZ0V4dHJhcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwODJGNTcwMDM4RUFEQUEwMEE4MDE4MCAvKiBXZWJLaXRO
U1N0cmluZ0V4dHJhcy5tbSAqLzsgfTsKIAkJOTM5ODEwQzUwODI0QkYwMTAwOERGMDM4IC8qIFdl
YktpdFN0YXRpc3RpY3MubSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEY1MzQ0NENGMDJFODdDQkEwMTg2MzVDQSAvKiBXZWJLaXRTdGF0aXN0aWNzLm0gKi87
IH07CiAJCTkzOTgxMEM2MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJOU0NvbnRyb2xFeHRyYXMubSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNDVEREIzMDM2
NUZGRDAwMDg2MzVDRSAvKiBXZWJOU0NvbnRyb2xFeHRyYXMubSAqLzsgfTsKIAkJOTM5ODEwQzcw
ODI0QkYwMTAwOERGMDM4IC8qIFdlYk5TSW1hZ2VFeHRyYXMubSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzOTg4NDdCMDM0MjZGQjAwMEJDNUY1RSAvKiBX
ZWJOU0ltYWdlRXh0cmFzLm0gKi87IH07CkBAIC02ODcsNiArNjg2LDcgQEAKIAkJQ0VEQTEyREMx
NTJDQkU2ODAwRDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VEQTEyREExNTJDQkU2ODAwRDlF
MDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oICovOyB9OwogCQlERDg5NjgyMDA5QUE4
NzI0MDA5N0U3RjAgLyogV2ViRWxlbWVudERpY3Rpb25hcnkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEREODk2ODFFMDlBQTg3MjQwMDk3RTdGMCAvKiBX
ZWJFbGVtZW50RGljdGlvbmFyeS5oICovOyB9OwogCQlERDg5NjgyMTA5QUE4NzI0MDA5N0U3RjAg
LyogV2ViRWxlbWVudERpY3Rpb25hcnkubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBERDg5NjgxRjA5QUE4NzI0MDA5N0U3RjAgLyogV2ViRWxlbWVudERp
Y3Rpb25hcnkubW0gKi87IH07CisJCURGNjJEQURFMjZFRkVGM0MwMDBGRkEyQSAvKiBXZWJLaXRO
U1N0cmluZ0V4dHJhcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDcwODJGNTcwMDM4RUFEQUEwMEE4MDE4MCAvKiBXZWJLaXROU1N0cmluZ0V4dHJhcy5t
bSAqLzsgfTsKIAkJRTEzRTc4MkMxRTVBNzM2NTAwMTg0OUQxIC8qIFdlYkNyZWF0ZUZyYWdtZW50
SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUxM0U3ODJCMUU1QTczNjUwMDE4NDlEMSAvKiBXZWJDcmVhdGVGcmFnbWVudEludGVybmFsLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTE1MzFC
RDgyMTg3Qjk1NDAwMkUzRjgxIC8qIE5TVVJMRG93bmxvYWRTUEkuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNTMxQkQ3MjE4N0I4RjIwMDJFM0Y4MSAv
KiBOU1VSTERvd25sb2FkU1BJLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJRTE1NjYzMTkwRkI2MUMxRjAwQzE5OUNBIC8qIFdlYkRvd25sb2FkLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE1NjYzMTgw
RkI2MUMxRjAwQzE5OUNBIC8qIFdlYkRvd25sb2FkLm1tICovOyB9OwpAQCAtMzY1Nyw3ICszNjU3
LDcgQEAKIAkJCQlDRDhCRkNFNzE1NTMxMjI0MDA1QUZCMjUgLyogV2ViS2l0RnVsbFNjcmVlbkxp
c3RlbmVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM5ODEwQzMwODI0QkYwMTAwOERGMDM4IC8q
IFdlYktpdExvZ2dpbmcubSBpbiBTb3VyY2VzICovLAogCQkJCTFDRjE4RjQxMjZCQjcxQjcwMDRC
MTcyMiAvKiBXZWJLaXRMb2dJbml0aWFsaXphdGlvbi5tbSBpbiBTb3VyY2VzICovLAotCQkJCTkz
OTgxMEM0MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJLaXROU1N0cmluZ0V4dHJhcy5tbSBpbiBTb3Vy
Y2VzICovLAorCQkJCURGNjJEQURFMjZFRkVGM0MwMDBGRkEyQSAvKiBXZWJLaXROU1N0cmluZ0V4
dHJhcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBQUY1RDBGMEVEREU3QTcwMDhEODgzRCAvKiBX
ZWJLaXRQbHVnaW5BZ2VudC5kZWZzIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFBRjVEMDAwRURERTYw
NDAwOEQ4ODNEIC8qIFdlYktpdFBsdWdpbkNsaWVudC5kZWZzIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MUFBRjVDRjEwRURERTU4NjAwOEQ4ODNEIC8qIFdlYktpdFBsdWdpbkhvc3QuZGVmcyBpbiBTb3Vy
Y2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDQzYjI1MzJhMWI2OGM0MTRiMzc2MzYzNWI5NDg3ODRkNGZhNTc1NWEuLjFjMGRlM2JlNTc1
NDQxZGI5OGVhYjBiZjRlYTk3MDY4MzRmYjQ4NGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MSBAQAorMjAyMS0wOS0xMyAgQWxl
eCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBT
UEkgZm9yIFNhZmFyaSB0byBzdG9wIHVzaW5nIFdlYktpdExlZ2FjeQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwMjM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNYWtlZmlsZToKKyAgICAgICAgKiBN
aW5pQnJvd3Nlci9tYWMvQXBwRGVsZWdhdGUubToKKyAgICAgICAgKC1bQnJvd3NlckFwcERlbGVn
YXRlIGFwcGxpY2F0aW9uRGlkRmluaXNoTGF1bmNoaW5nOl0pOgorICAgICAgICAqIE1pbmlCcm93
c2VyL21hYy9XSzFCcm93c2VyV2luZG93Q29udHJvbGxlci5tOgorICAgICAgICAoLVtXSzFCcm93
c2VyV2luZG93Q29udHJvbGxlciBhd2FrZUZyb21OaWJdKTogRGVsZXRlZC4KKyAgICAgICAgKC1b
V0sxQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgZGVhbGxvY10pOiBEZWxldGVkLgorICAgICAgICAo
LVtXSzFCcm93c2VyV2luZG93Q29udHJvbGxlciB1c2VyQWdlbnREaWRDaGFuZ2U6XSk6IERlbGV0
ZWQuCisgICAgICAgICgtW1dLMUJyb3dzZXJXaW5kb3dDb250cm9sbGVyIGxvYWRVUkxTdHJpbmc6
XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLMUJyb3dzZXJXaW5kb3dDb250cm9sbGVyIGxvYWRI
VE1MU3RyaW5nOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXSzFCcm93c2VyV2luZG93Q29udHJv
bGxlciBmZXRjaDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0sxQnJvd3NlcldpbmRvd0NvbnRy
b2xsZXIgc2V0UGFnZVNjYWxlOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXSzFCcm93c2VyV2lu
ZG93Q29udHJvbGxlciBzZXRWaWV3U2NhbGU6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLMUJy
b3dzZXJXaW5kb3dDb250cm9sbGVyIHJlbG9hZDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0sx
QnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgZm9yY2VSZXBhaW50Ol0pOiBEZWxldGVkLgorICAgICAg
ICAoLVtXSzFCcm93c2VyV2luZG93Q29udHJvbGxlciBnb0JhY2s6XSk6IERlbGV0ZWQuCisgICAg
ICAgICgtW1dLMUJyb3dzZXJXaW5kb3dDb250cm9sbGVyIGdvRm9yd2FyZDpdKTogRGVsZXRlZC4K
KyAgICAgICAgKGFyZUVzc2VudGlhbGx5RXF1YWwpOiBEZWxldGVkLgorICAgICAgICAoLVtXSzFC
cm93c2VyV2luZG93Q29udHJvbGxlciB2YWxpZGF0ZU1lbnVJdGVtOl0pOiBEZWxldGVkLgorICAg
ICAgICAoLVtXSzFCcm93c2VyV2luZG93Q29udHJvbGxlciB2YWxpZGF0ZVVzZXJJbnRlcmZhY2VJ
dGVtOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXSzFCcm93c2VyV2luZG93Q29udHJvbGxlciB2
YWxpZGF0ZVRvb2xiYXJdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0sxQnJvd3NlcldpbmRvd0Nv
bnRyb2xsZXIgd2luZG93U2hvdWxkQ2xvc2U6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLMUJy
b3dzZXJXaW5kb3dDb250cm9sbGVyIHdpbmRvd1dpbGxDbG9zZTpdKTogRGVsZXRlZC4KKyAgICAg
ICAgKC1bV0sxQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgY3VycmVudFpvb21GYWN0b3JdKTogRGVs
ZXRlZC4KKyAgICAgICAgKC1bV0sxQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgY2FuWm9vbUluXSk6
IERlbGV0ZWQuCisgICAgICAgICgtW1dLMUJyb3dzZXJXaW5kb3dDb250cm9sbGVyIHpvb21Jbjpd
KTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0sxQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgY2FuWm9v
bU91dF0pOiBEZWxldGVkLgorICAgICAgICAoLVtXSzFCcm93c2VyV2luZG93Q29udHJvbGxlciB6
b29tT3V0Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtXSzFCcm93c2VyV2luZG93Q29udHJvbGxl
ciBjYW5SZXNldFpvb21dKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0sxQnJvd3NlcldpbmRvd0Nv
bnRyb2xsZXIgcmVzZXRab29tOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXSzFCcm93c2VyV2lu
ZG93Q29udHJvbGxlciB0b2dnbGVab29tTW9kZTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0sx
QnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgdG9nZ2xlU2hyaW5rVG9GaXQ6XSk6IERlbGV0ZWQuCisg
ICAgICAgICgtW1dLMUJyb3dzZXJXaW5kb3dDb250cm9sbGVyIGR1bXBTb3VyY2VUb0NvbnNvbGU6
XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLMUJyb3dzZXJXaW5kb3dDb250cm9sbGVyIHNob3dI
aWRlV2ViSW5zcGVjdG9yOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXSzFCcm93c2VyV2luZG93
Q29udHJvbGxlciB0b2dnbGVBbHdheXNTaG93c0hvcml6b250YWxTY3JvbGxlcjpdKTogRGVsZXRl
ZC4KKyAgICAgICAgKC1bV0sxQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgdG9nZ2xlQWx3YXlzU2hv
d3NWZXJ0aWNhbFNjcm9sbGVyOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXSzFCcm93c2VyV2lu
ZG93Q29udHJvbGxlciBjdXJyZW50VVJMXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLMUJyb3dz
ZXJXaW5kb3dDb250cm9sbGVyIG1haW5Db250ZW50Vmlld10pOiBEZWxldGVkLgorICAgICAgICAo
LVtXSzFCcm93c2VyV2luZG93Q29udHJvbGxlciBzZXRFZGl0YWJsZTpdKTogRGVsZXRlZC4KKyAg
ICAgICAgKC1bV0sxQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgZGlkQ2hhbmdlU2V0dGluZ3NdKTog
RGVsZXRlZC4KKyAgICAgICAgKC1bV0sxQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgcHJpbnRXZWJW
aWV3Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtXSzFCcm93c2VyV2luZG93Q29udHJvbGxlciB3
ZWJWaWV3OmRpZExheW91dDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0sxQnJvd3NlcldpbmRv
d0NvbnRyb2xsZXIgd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOnJlcXVl
c3Q6ZnJhbWU6ZGVjaXNpb25MaXN0ZW5lcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0sxQnJv
d3NlcldpbmRvd0NvbnRyb2xsZXIgd2ViVmlldzpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXSzFCcm93c2VyV2luZG93Q29udHJvbGxlciB1
cGRhdGVUaXRsZTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0sxQnJvd3NlcldpbmRvd0NvbnRy
b2xsZXIgd2ViVmlldzpjcmVhdGVXZWJWaWV3V2l0aFJlcXVlc3Q6XSk6IERlbGV0ZWQuCisgICAg
ICAgICgtW1dLMUJyb3dzZXJXaW5kb3dDb250cm9sbGVyIHdlYlZpZXc6ZGlkQ29tbWl0TG9hZEZv
ckZyYW1lOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXSzFCcm93c2VyV2luZG93Q29udHJvbGxl
ciB3ZWJWaWV3OmRpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZUZvckZyYW1lOl0pOiBEZWxldGVk
LgorICAgICAgICAoLVtXSzFCcm93c2VyV2luZG93Q29udHJvbGxlciB3ZWJWaWV3OmRpZFJlY2Vp
dmVUaXRsZTpmb3JGcmFtZTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0sxQnJvd3NlcldpbmRv
d0NvbnRyb2xsZXIgd2ViVmlldzpjb250ZXh0TWVudUl0ZW1zRm9yRWxlbWVudDpkZWZhdWx0TWVu
dUl0ZW1zOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXSzFCcm93c2VyV2luZG93Q29udHJvbGxl
ciB3ZWJWaWV3OnJ1bkphdmFTY3JpcHRBbGVydFBhbmVsV2l0aE1lc3NhZ2U6aW5pdGlhdGVkQnlG
cmFtZTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0sxQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIg
d2ViVmlldzpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxXaXRoTWVzc2FnZTppbml0aWF0ZWRC
eUZyYW1lOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXSzFCcm93c2VyV2luZG93Q29udHJvbGxl
ciB3ZWJWaWV3OmRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2tGb3JEcmFnZ2luZ0luZm86XSk6IERl
bGV0ZWQuCisgICAgICAgICogTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9s
bGVyLm06CisgICAgICAgICgtW1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyIGZldGNoOl0pOgor
ICAgICAgICAoLVtXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciB1cGRhdGVUaXRsZTpdKToKKyAg
ICAgICAgKC1bV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgdXBkYXRlVGV4dEZpZWxkRnJvbVVS
TDpdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRB
UEktaU9TLmVudGl0bGVtZW50czoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRp
b25zL1Rlc3RXZWJLaXRBUEkueGNjb25maWc6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9FdmVudEF0dHJpYnV0aW9uLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VEVTVCk6CisKIDIwMjEtMDktMTMgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBs
ZS5jb20+CiAKICAgICAgICAgW21hY09TXSAtdG9nZ2xlQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0
aW9uOiBtZW51IGl0ZW0gdmFsaWRhdGlvbiBzaG91bGRuJ3QgcmVxdWlyZSBwb3N0LWxheW91dCBl
ZGl0b3Igc3RhdGUKZGlmZiAtLWdpdCBhL1Rvb2xzL01ha2VmaWxlIGIvVG9vbHMvTWFrZWZpbGUK
aW5kZXggMmFhNjEyOTY4NGMyNzc2OTA2YjY0YjA5ZWUwNjFjMTAwMmUwOGIwYS4uNzM0ODhhODk5
NDY3NjEyNGI4ZDY4MGE5ZWQ0ZDI0MTA3OGY5Y2FjOSAxMDA2NDQKLS0tIGEvVG9vbHMvTWFrZWZp
bGUKKysrIGIvVG9vbHMvTWFrZWZpbGUKQEAgLTEsMTEgKzEsMTEgQEAKLU1PRFVMRVMgPSBEdW1w
UmVuZGVyVHJlZSBXZWJLaXRUZXN0UnVubmVyIE1pbmlCcm93c2VyIC4uL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3hjb2RlIFRlc3RXZWJLaXRBUEkKK01PRFVMRVMgPSBXZWJLaXRUZXN0UnVubmVy
IE1pbmlCcm93c2VyCiAKIFRPX0xPV0VSID0gJChzaGVsbCBlY2hvICQoMSkgfCB0ciBbOnVwcGVy
Ol0gWzpsb3dlcjpdKQogCiBpZm5lcSAoLCQoU0RLUk9PVCkpCiAJaWZlcSAoLCQoZmluZHN0cmlu
ZyBtYWNvc3gsJChjYWxsIFRPX0xPV0VSLCQobm90ZGlyICQoU0RLUk9PVCkpKSkpCiAJCSMgRW1i
ZWRkZWQgT1MKLQkJTU9EVUxFUyA9IER1bXBSZW5kZXJUcmVlIFdlYktpdFRlc3RSdW5uZXIgLi4v
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUgVGVzdFdlYktpdEFQSQorCQlNT0RVTEVTID0g
V2ViS2l0VGVzdFJ1bm5lcgogCWVuZGlmCiAJaWZuZXEgKCwkKGZpbmRzdHJpbmcgbWFjb3N4LCQo
Y2FsbCBUT19MT1dFUiwkKG5vdGRpciAkKFNES1JPT1QpKSkpKQogCQlNT0RVTEVTICs9IGxsZGIv
bGxkYldlYktpdFRlc3RlcgpAQCAtMTksNyArMTksNyBAQCBpZmVxICgsJChET19OT1RfQlVJTERf
SU1BR0VfRElGRikpCiBlbmRpZgogCiBpZmVxIChpb3NtYWMsJChTREtfVkFSSUFOVCkpCi0JTU9E
VUxFUyA9IER1bXBSZW5kZXJUcmVlIFdlYktpdFRlc3RSdW5uZXIgLi4vU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QveGNvZGUgVGVzdFdlYktpdEFQSQorCU1PRFVMRVMgPSBXZWJLaXRUZXN0UnVubmVy
CiBlbmRpZgogCiBkZWZpbmUgYnVpbGRfdGFyZ2V0X2Zvcl9lYWNoX21vZHVsZQpkaWZmIC0tZ2l0
IGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL0FwcERlbGVnYXRlLm0gYi9Ub29scy9NaW5pQnJvd3Nl
ci9tYWMvQXBwRGVsZWdhdGUubQppbmRleCA3NWQ2OTFkZTI2YmZhOWYzZWRjMjBjNTMzMDBiN2Ez
MTQ5YjczOWRhLi40YzQ2MjBjN2FjYzIwNDZjMmI4MDliNGZjZDhmM2M3MzdiOTdmMWVjIDEwMDY0
NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvQXBwRGVsZWdhdGUubQorKysgYi9Ub29scy9N
aW5pQnJvd3Nlci9tYWMvQXBwRGVsZWdhdGUubQpAQCAtMjI5LDkgKzIyOSwxMSBAQCAtICh2b2lk
KWJyb3dzZXJXaW5kb3dXaWxsQ2xvc2U6KE5TV2luZG93ICopd2luZG93CiAKIC0gKHZvaWQpYXBw
bGljYXRpb25EaWRGaW5pc2hMYXVuY2hpbmc6KE5TTm90aWZpY2F0aW9uICopYU5vdGlmaWNhdGlv
bgogeworICAgIC8qCiAgICAgV2ViSGlzdG9yeSAqd2ViSGlzdG9yeSA9IFtbV2ViSGlzdG9yeSBh
bGxvY10gaW5pdF07CiAgICAgW1dlYkhpc3Rvcnkgc2V0T3B0aW9uYWxTaGFyZWRIaXN0b3J5Ondl
Ykhpc3RvcnldOwogICAgIFt3ZWJIaXN0b3J5IHJlbGVhc2VdOworICAgICAqLwogCiAgICAgW3Nl
bGYgX3VwZGF0ZU5ld1dpbmRvd0tleUVxdWl2YWxlbnRzXTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMv
TWluaUJyb3dzZXIvbWFjL1dLMUJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0gYi9Ub29scy9NaW5p
QnJvd3Nlci9tYWMvV0sxQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQppbmRleCAzYmVlY2Q5Mjk2
NTM3M2M1NTcwZWQxMjFmMjMxMWQxODIxMmQ0NzhmLi43OGJhODBjODgwYzU2MTY2NmUwYWIzYmQz
YjhhMzFkODQ2MTVhYjQ5IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0sxQnJv
d3NlcldpbmRvd0NvbnRyb2xsZXIubQorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0sxQnJv
d3NlcldpbmRvd0NvbnRyb2xsZXIubQpAQCAtMjUsNiArMjUsMTMgQEAKIAogI2ltcG9ydCAiV0sx
QnJvd3NlcldpbmRvd0NvbnRyb2xsZXIuaCIKIAorQGludGVyZmFjZSBXSzFCcm93c2VyV2luZG93
Q29udHJvbGxlciAoKQorQGVuZAorCitAaW1wbGVtZW50YXRpb24gV0sxQnJvd3NlcldpbmRvd0Nv
bnRyb2xsZXIKK0BlbmQKKworLyoKICNpbXBvcnQgIkFwcERlbGVnYXRlLmgiCiAjaW1wb3J0ICJT
ZXR0aW5nc0NvbnRyb2xsZXIuaCIKICNpbXBvcnQgPFdlYktpdC9XZWJJbnNwZWN0b3IuaD4KQEAg
LTQ3NSwzICs0ODIsNCBAQCAtIChOU1VJbnRlZ2VyKXdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3
IGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2tGb3JEcmFnZ2luZ0luZgogfQogCiBAZW5kCisqLwpk
aWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9s
bGVyLm0gYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIu
bQppbmRleCAzYzQzNTYwOGE0N2IxOTZiMzVlZDU1ZWY2MjhkYWFiZmE3MTEzYzYxLi5mODRkMjRk
Yjg0N2JlODU2ZDEzMjFlMzRkMjEwODM5MTYxMjMyYmJiIDEwMDY0NAotLS0gYS9Ub29scy9NaW5p
QnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQorKysgYi9Ub29scy9NaW5p
QnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQpAQCAtMzksNyArMzksNyBA
QAogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9X
S1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURh
dGFTdG9yZVByaXZhdGUuaD4KLSNpbXBvcnQgPFdlYktpdC9XZWJOU1VSTEV4dHJhcy5oPgorLy8j
aW1wb3J0IDxXZWJLaXQvV2ViTlNVUkxFeHRyYXMuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tJY29u
TG9hZGluZ0RlbGVnYXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLSW5zcGVjdG9yLmg+CiAjaW1w
b3J0IDxXZWJLaXQvX1dLTGlua0ljb25QYXJhbWV0ZXJzLmg+CkBAIC0xODgsOCArMTg4LDggQEAg
LSAodm9pZCl1c2VyQWdlbnREaWRDaGFuZ2U6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9u
CiAtIChJQkFjdGlvbilmZXRjaDooaWQpc2VuZGVyCiB7CiAgICAgW3VybFRleHQgc2V0U3RyaW5n
VmFsdWU6W3NlbGYgYWRkUHJvdG9jb2xJZk5lY2Vzc2FyeTp1cmxUZXh0LnN0cmluZ1ZhbHVlXV07
Ci0gICAgTlNVUkwgKnVybCA9IFtOU1VSTCBfd2Via2l0X1VSTFdpdGhVc2VyVHlwZWRTdHJpbmc6
dXJsVGV4dC5zdHJpbmdWYWx1ZV07Ci0gICAgW193ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJl
cXVlc3QgcmVxdWVzdFdpdGhVUkw6dXJsXV07CisgICAgLy9OU1VSTCAqdXJsID0gW05TVVJMIF93
ZWJraXRfVVJMV2l0aFVzZXJUeXBlZFN0cmluZzp1cmxUZXh0LnN0cmluZ1ZhbHVlXTsKKyAgICAv
L1tfd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnVybF1d
OwogfQogCiAtIChJQkFjdGlvbilzZXRQYWdlU2NhbGU6KGlkKXNlbmRlcgpAQCAtNTIxLDggKzUy
MSw4IEBAIC0gKHZvaWQpZGlkQ2hhbmdlU2V0dGluZ3MKIC0gKHZvaWQpdXBkYXRlVGl0bGU6KE5T
U3RyaW5nICopdGl0bGUKIHsKICAgICBpZiAoIXRpdGxlKSB7Ci0gICAgICAgIE5TVVJMICp1cmwg
PSBfd2ViVmlldy5VUkw7Ci0gICAgICAgIHRpdGxlID0gdXJsLmxhc3RQYXRoQ29tcG9uZW50ID86
IHVybC5fd2ViX3VzZXJWaXNpYmxlU3RyaW5nOworICAgICAgICA7Ly9OU1VSTCAqdXJsID0gX3dl
YlZpZXcuVVJMOworICAgICAgICAvL3RpdGxlID0gdXJsLmxhc3RQYXRoQ29tcG9uZW50ID86IHVy
bC5fd2ViX3VzZXJWaXNpYmxlU3RyaW5nOwogICAgIH0KIAogI2lmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCkBAIC02NTcsNyArNjU3LDcgQEAgLSAodm9pZCl1cGRh
dGVUZXh0RmllbGRGcm9tVVJMOihOU1VSTCAqKVVSTAogICAgIGlmICghVVJMLmFic29sdXRlU3Ry
aW5nLmxlbmd0aCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdXJsVGV4dC5zdHJpbmdWYWx1ZSA9
IFtVUkwgX3dlYl91c2VyVmlzaWJsZVN0cmluZ107CisgICAgLy91cmxUZXh0LnN0cmluZ1ZhbHVl
ID0gW1VSTCBfd2ViX3VzZXJWaXNpYmxlU3RyaW5nXTsKIH0KIAogLSAodm9pZCl1cGRhdGVMb2Nr
QnV0dG9uSWNvbjooQk9PTCloYXNPbmx5U2VjdXJlQ29udGVudApkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLWlPUy5lbnRpdGxlbWVu
dHMgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEktaU9T
LmVudGl0bGVtZW50cwppbmRleCA2YWM0NWM2OGQ0MzM0NGJhZmI2OGUzNGYzNDA0MDdhODQwY2Q2
ZjI2Li4wZDAwYjhlN2EzYzlhOGM2YmQzMjQ1NTYyOGRkYTc4MjE4ZmUyY2Y5IDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEktaU9TLmVu
dGl0bGVtZW50cworKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RX
ZWJLaXRBUEktaU9TLmVudGl0bGVtZW50cwpAQCAtMiw2ICsyLDggQEAKIDwhRE9DVFlQRSBwbGlz
dCBQVUJMSUMgIi0vL0FwcGxlLy9EVEQgUExJU1QgMS4wLy9FTiIgImh0dHA6Ly93d3cuYXBwbGUu
Y29tL0RURHMvUHJvcGVydHlMaXN0LTEuMC5kdGQiPgogPHBsaXN0IHZlcnNpb249IjEuMCI+CiA8
ZGljdD4KKwk8a2V5PmNvbS5hcHBsZS5wcml2YXRlLnhwYy5sYXVuY2hkLmpvYi1tYW5hZ2VyPC9r
ZXk+CisJPHN0cmluZz5UZXN0V2ViS2l0QVBJPC9zdHJpbmc+CiAJPGtleT5rZXljaGFpbi1hY2Nl
c3MtZ3JvdXBzPC9rZXk+CiAJPGFycmF5PgogCQk8c3RyaW5nPmNvbS5hcHBsZS5UZXN0V2ViS2l0
QVBJPC9zdHJpbmc+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRp
b25zL1Rlc3RXZWJLaXRBUEkueGNjb25maWcgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3Vy
YXRpb25zL1Rlc3RXZWJLaXRBUEkueGNjb25maWcKaW5kZXggYzA2MmU2MzIxZmMyNTNhNmQ2ZDVl
YjFlOGY5OGM1ZmJhMDJmZGQzNC4uNTk0ZDFmMmM1ODI0YTg1NDk4OTg2Y2IwMzczYjcwYTMxMjNk
OTg4NiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0
V2ViS2l0QVBJLnhjY29uZmlnCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlv
bnMvVGVzdFdlYktpdEFQSS54Y2NvbmZpZwpAQCAtNDYsNiArNDYsNyBAQCBGUkFNRVdPUktfU0VB
UkNIX1BBVEhTX2NvY29hdG91Y2ggPSAkKGluaGVyaXRlZCkgJChXS19QUklWQVRFX0ZSQU1FV09S
S1NfRElSKTsKIFdLX0FQUFNFUlZFUlNVUFBPUlRfTERGTEFHUyA9ICQoV0tfQVBQU0VSVkVSU1VQ
UE9SVF9MREZMQUdTXyQoV0tfUExBVEZPUk1fTkFNRSkpOwogV0tfQVBQU0VSVkVSU1VQUE9SVF9M
REZMQUdTX21hY29zeCA9ICQoV0tfQVBQU0VSVkVSU1VQUE9SVF9MREZMQUdTJChXS19NQUNPU18x
MjAwKSk7CiBXS19BUFBTRVJWRVJTVVBQT1JUX0xERkxBR1NfTUFDT1NfU0lOQ0VfMTIwMCA9IC1m
cmFtZXdvcmsgQXBwU2VydmVyU3VwcG9ydAorV0tfQVBQU0VSVkVSU1VQUE9SVF9MREZMQUdTX2lw
aG9uZXNpbXVsYXRvciA9IC1mcmFtZXdvcmsgQXBwU2VydmVyU3VwcG9ydAogCiBXS19BVVRIS0lU
X0xERkxBR1MgPSAkKFdLX0FVVEhLSVRfTERGTEFHU18kKFdLX1BMQVRGT1JNX05BTUUpKTsKIFdL
X0FVVEhLSVRfTERGTEFHU19pcGhvbmVvcyA9ICQoV0tfQVVUSEtJVF9MREZMQUdTJChXS19JT1Nf
MTMpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
RXZlbnRBdHRyaWJ1dGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvRXZlbnRBdHRyaWJ1dGlvbi5tbQppbmRleCAzYTZhZDliY2FjNjg5MTAyYjVmYjM5YmQ5M2Vm
ZTI3OTFjMjdlMTkxLi4wNGUyNzNmMzMyNTU3OTYxYjc0OTBlNmFiZDg1M2M1ZDBmOWM0MTYyIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0V2ZW50QXR0
cmlidXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9F
dmVudEF0dHJpYnV0aW9uLm1tCkBAIC0zNjUsOSArMzY1LDYgQEAgVEVTVChFdmVudEF0dHJpYnV0
aW9uLCBEYXRhYmFzZUxvY2F0aW9uKQogICAgIEVYUEVDVF9FUSh3ZWJWaWV3VG9LZWVwTmV0d29y
a1Byb2Nlc3NBbGl2ZS5nZXQoKS5jb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUuX25ldHdv
cmtQcm9jZXNzSWRlbnRpZmllciwgb3JpZ2luYWxOZXR3b3JrUHJvY2Vzc1BpZCk7CiB9CiAKLS8v
IEZJWE1FOiBHZXQgdGhpcyB3b3JraW5nIGluIHRoZSBpT1Mgc2ltdWxhdG9yLgotI2lmIFBMQVRG
T1JNKE1BQykKLQogc3RhdGljIFJldGFpblB0cjxOU1VSTD4gY3VycmVudEV4ZWN1dGFibGVMb2Nh
dGlvbigpCiB7CiAgICAgdWludDMyX3Qgc2l6ZSB7IDAgfTsKQEAgLTQyMiw3ICs0MTksNyBAQCBz
dGF0aWMgT1NPYmplY3RQdHI8eHBjX29iamVjdF90PiB0ZXN0RGFlbW9uUExpc3QoTlNVUkwgKnN0
b3JhZ2VMb2NhdGlvbikKICAgICByZXR1cm4gcGxpc3Q7CiB9CiAKLSNlbHNlCisjZWxpZiBQTEFU
Rk9STShNQUMpCiAKIHN0YXRpYyBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiB0ZXN0RGFlbW9uUExp
c3QoTlNVUkwgKnN0b3JhZ2VMb2NhdGlvbikKIHsKQEAgLTQ0Myw2ICs0NDAsOCBAQCBzdGF0aWMg
UmV0YWluUHRyPE5TRGljdGlvbmFyeT4gdGVzdERhZW1vblBMaXN0KE5TVVJMICpzdG9yYWdlTG9j
YXRpb24pCiAKICNlbmRpZgogCisjaWYgSEFWRShPU19MQVVOQ0hEX0pPQikgfHwgUExBVEZPUk0o
TUFDKQorCiBURVNUKEV2ZW50QXR0cmlidXRpb24sIERhZW1vbikKIHsKICAgICBOU0ZpbGVNYW5h
Z2VyICpmaWxlTWFuYWdlciA9IFtOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXTsKQEAgLTQ1
NSw3ICs0NTQsOCBAQCBURVNUKEV2ZW50QXR0cmlidXRpb24sIERhZW1vbikKICAgICBhdXRvIHBs
aXN0ID0gdGVzdERhZW1vblBMaXN0KHRlbXBEaXIpOwogI2lmIEhBVkUoT1NfTEFVTkNIRF9KT0Ip
CiAgICAgYXV0byBsYXVuY2hESm9iID0gYWRvcHROUyhbW09TTGF1bmNoZEpvYiBhbGxvY10gaW5p
dFdpdGhQbGlzdDpwbGlzdC5nZXQoKV0pOwotICAgIFtsYXVuY2hESm9iIHN1Ym1pdDomZXJyb3Jd
OworICAgIGF1dG8gcmVzdWx0ID0gW2xhdW5jaERKb2Igc3VibWl0OiZlcnJvcl07CisgICAgV1RG
TG9nQWx3YXlzKCJSRVNVTFQgJWQgRVJST1IgJUAiLCByZXN1bHQsIGVycm9yKTsKICNlbHNlCiAg
ICAgTlNVUkwgKnBsaXN0TG9jYXRpb24gPSBbdGVtcERpciBVUkxCeUFwcGVuZGluZ1BhdGhDb21w
b25lbnQ6QCJEYWVtb25JbmZvLnBsaXN0Il07CiAgICAgQk9PTCBzdWNjZXNzID0gW2ZpbGVNYW5h
Z2VyIGNyZWF0ZURpcmVjdG9yeUF0VVJMOnRlbXBEaXIgd2l0aEludGVybWVkaWF0ZURpcmVjdG9y
aWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjomZXJyb3JdOwpAQCAtNDg3LDcgKzQ4Nyw3IEBA
IFRFU1QoRXZlbnRBdHRyaWJ1dGlvbiwgRGFlbW9uKQogICAgIEVYUEVDVF9OVUxMKGVycm9yKTsK
IH0KIAotI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKKyNlbmRpZiAvLyBIQVZFKE9TX0xBVU5DSERf
Sk9CKSB8fCBQTEFURk9STShNQUMpCiAKICNpZiBIQVZFKFVJX0VWRU5UX0FUVFJJQlVUSU9OKQog
CmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggOGEwYTZhMDQxMTFmYTM2
NTA5YTcwMTVkNzA2YjU0ZDQyNDcwNTczNC4uZjJlMjk0YzgxYmI2MzQ5ZTZlN2IzYmIzYjdkNWVk
NzEwMTY0ZjI1OCAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEyIEBACisyMDIxLTA5LTEzICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSBmb3IgU2FmYXJpIHRvIHN0b3AgdXNpbmcgV2Vi
S2l0TGVnYWN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzAyMzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFNvdXJjZS9NYWtlZmlsZToKKwogMjAyMS0wOS0xMyAgU2FtIFNuZWRkb24gIDxnc25lZGRl
cnNAYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgRU5BQkxFX1JFU09MVVRJT05fTUVESUFfUVVF
UlkgdG8gYSBydW50aW1lIGZsYWcsIHN0YXJ0IHJ1bm5pbmcgdGVzdHMgYWdhaW4K
</data>
<flag name="review"
          id="461393"
          type_id="1"
          status="-"
          setter="achristensen"
    />
          </attachment>
      

    </bug>

</bugzilla>