<?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>116619</bug_id>
          
          <creation_ts>2013-05-22 09:26:17 -0700</creation_ts>
          <short_desc>[Qt][Mac] Remove Carbon and QuickDraw support for plugins.</short_desc>
          <delta_ts>2013-06-03 06:51:57 -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>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>116620</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jocelyn Turcotte">jturcotte</reporter>
          <assigned_to name="Jocelyn Turcotte">jturcotte</assigned_to>
          <cc>eflews.bot</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jturcotte</cc>
    
    <cc>rego+ews</cc>
    
    <cc>vestbo</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>892362</commentid>
    <comment_count>0</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2013-05-22 09:26:17 -0700</bug_when>
    <thetext>[Qt][Mac] Remove Carbon and QuickDraw support for plugins.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>892364</commentid>
    <comment_count>1</comment_count>
      <attachid>202569</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2013-05-22 09:33:08 -0700</bug_when>
    <thetext>Created attachment 202569
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>892365</commentid>
    <comment_count>2</comment_count>
      <attachid>202569</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-05-22 09:36:47 -0700</bug_when>
    <thetext>Comment on attachment 202569
Patch

Attachment 202569 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/557189</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>892366</commentid>
    <comment_count>3</comment_count>
      <attachid>202569</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-05-22 09:39:01 -0700</bug_when>
    <thetext>Comment on attachment 202569
Patch

Attachment 202569 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/551208</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>892368</commentid>
    <comment_count>4</comment_count>
      <attachid>202569</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-05-22 09:39:55 -0700</bug_when>
    <thetext>Comment on attachment 202569
Patch

Attachment 202569 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/544200</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>892369</commentid>
    <comment_count>5</comment_count>
      <attachid>202569</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-05-22 09:41:02 -0700</bug_when>
    <thetext>Comment on attachment 202569
Patch

Attachment 202569 did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/551210</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>892377</commentid>
    <comment_count>6</comment_count>
      <attachid>202569</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-05-22 09:58:49 -0700</bug_when>
    <thetext>Comment on attachment 202569
Patch

Attachment 202569 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/556185</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>892383</commentid>
    <comment_count>7</comment_count>
      <attachid>202571</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2013-05-22 10:25:04 -0700</bug_when>
    <thetext>Created attachment 202571
Patch

Just remove the NP_NO_CARBON guard around dispatchNPEvent, not the declaration itself (I don&apos;t think it&apos;s worth putting it into ! defined(XP_MACOSX)).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>896422</commentid>
    <comment_count>8</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2013-06-03 06:51:57 -0700</bug_when>
    <thetext>Committed r151106: &lt;http://trac.webkit.org/changeset/151106&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>202569</attachid>
            <date>2013-05-22 09:33:08 -0700</date>
            <delta_ts>2013-05-22 10:24:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-116619-20130522183153.patch</filename>
            <type>text/plain</type>
            <size>35712</size>
            <attacher name="Jocelyn Turcotte">jturcotte</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUwMTgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjg2MTAzYTFhMDMwMjhi
NTc5YTg1NmQxMzg4MDRhN2I3NTMyY2Y5Yi4uMWVjNjYwNzhmZGRlNTNjMDRmNDQ4ZmVmZmViZGVh
MTcxMmM1NTBlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEzLTA1LTIyICBKb2Nl
bHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBkaWdpYS5jb20+CisKKyAgICAgICAgW1F0
XVtNYWNdIFJlbW92ZSBDYXJib24gYW5kIFF1aWNrRHJhdyBzdXBwb3J0IGZvciBwbHVnaW5zLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE2NjE5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhleSBhcmUg
b25seSBlbmFibGVkIGZvciAzMmJpdCBidWlsZHMgb2YgUXRXZWJLaXQgYW5kIGFyZSByYXJlbHkg
dGVzdGVkLgorICAgICAgICBPdGhlciBicm93c2VycyBzdXBwb3J0IHRoZW0gdGhyb3VnaCBhIDMy
Yml0IGhvc3QgcHJvY2Vzcy4KKyAgICAgICAgUGx1Z2luVmlld01hYy5tbSBpcyBvbmx5IHVzZWQg
YnkgUXQgc2luY2UgdGhlIFd4IHBvcnQgd2FzIHJlbW92ZWQuCisKKyAgICAgICAgLSBPbmx5IHN1
cHBvcnQgdGhlIENvY29hIGV2ZW50IG1vZGVsCisgICAgICAgIC0gT25seSBzdXBwb3J0IHRoZSBD
b3JlR3JhcGhpY3MgZHJhd2luZyBtb2RlbAorICAgICAgICAtIFJlbW92ZSBhbGwgTlBfTk9fQ0FS
Qk9OIGFuZCBOUF9OT19RVUlDS0RSQVcgYmxvY2tzIGluIFBsdWdpblZpZXdNYWMubW0KKworICAg
ICAgICAqIHBsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5W
aWV3OjpzZXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpQbHVnaW5WaWV3
KToKKyAgICAgICAgKiBwbHVnaW5zL1BsdWdpblZpZXcuaDoKKyAgICAgICAgKiBwbHVnaW5zL21h
Yy9QbHVnaW5WaWV3TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6cGxhdGZv
cm1TdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpwbGF0Zm9ybURlc3Ryb3kp
OgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6cGxhdGZvcm1HZXRWYWx1ZVN0YXRpYyk6
CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpzZXRGb2N1cyk6CisgICAgICAgIChXZWJD
b3JlOjpQbHVnaW5WaWV3OjpzZXROUFdpbmRvd0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OlBsdWdpblZpZXc6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OmhhbmRs
ZVdoZWVsRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6aGFuZGxlTW91c2VF
dmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpoYW5kbGVLZXlib2FyZEV2ZW50
KToKKwogMjAxMy0wNS0xNSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgog
CiAgICAgICAgIEZpeCBhIHRoaW5rby4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdp
bnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuY3Bw
CmluZGV4IDkyYTgzOTA0NDM1NWQ3M2I4OWM4MmNkY2NmMWU2NzJmZTAxN2MwNGYuLjNlNWUzMWZk
ODA4NGMxM2QzMDNkZDg1ZTAwYzk1ZTdmNGU0YTU5MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9Q
bHVnaW5WaWV3LmNwcApAQCAtNjM0LDExICs2MzQsNyBAQCBOUEVycm9yIFBsdWdpblZpZXc6OnNl
dFZhbHVlKE5QUFZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkKiB2YWx1ZSkKICAgICAgICAgTlBEcmF3
aW5nTW9kZWwgbmV3RHJhd2luZ01vZGVsID0gTlBEcmF3aW5nTW9kZWwodWludHB0cl90KHZhbHVl
KSk7CiAgICAgICAgIHN3aXRjaCAobmV3RHJhd2luZ01vZGVsKSB7CiAgICAgICAgIGNhc2UgTlBE
cmF3aW5nTW9kZWxDb3JlR3JhcGhpY3M6Ci0gICAgICAgICAgICBtX2RyYXdpbmdNb2RlbCA9IG5l
d0RyYXdpbmdNb2RlbDsKICAgICAgICAgICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKLSNpZm5k
ZWYgTlBfTk9fUVVJQ0tEUkFXCi0gICAgICAgIGNhc2UgTlBEcmF3aW5nTW9kZWxRdWlja0RyYXc6
Ci0jZW5kaWYKICAgICAgICAgY2FzZSBOUERyYXdpbmdNb2RlbENvcmVBbmltYXRpb246CiAgICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBMT0coUGx1Z2lucywgIlBsdWdpbiBhc2tlZCBmb3Ig
dW5zdXBwb3J0ZWQgZHJhd2luZyBtb2RlbDogJXMiLApAQCAtNjU0LDEzICs2NTAsOCBAQCBOUEVy
cm9yIFBsdWdpblZpZXc6OnNldFZhbHVlKE5QUFZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkKiB2YWx1
ZSkKIAogICAgICAgICBOUEV2ZW50TW9kZWwgbmV3RXZlbnRNb2RlbCA9IE5QRXZlbnRNb2RlbCh1
aW50cHRyX3QodmFsdWUpKTsKICAgICAgICAgc3dpdGNoIChuZXdFdmVudE1vZGVsKSB7Ci0jaWZu
ZGVmIE5QX05PX0NBUkJPTgotICAgICAgICBjYXNlIE5QRXZlbnRNb2RlbENhcmJvbjoKLSNlbmRp
ZgogICAgICAgICBjYXNlIE5QRXZlbnRNb2RlbENvY29hOgotICAgICAgICAgICAgbV9ldmVudE1v
ZGVsID0gbmV3RXZlbnRNb2RlbDsKICAgICAgICAgICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsK
LQogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgTE9HKFBsdWdpbnMsICJQbHVnaW4gYXNr
ZWQgZm9yIHVuc3VwcG9ydGVkIGV2ZW50IG1vZGVsOiAlcyIsCiAgICAgICAgICAgICAgICAgICAg
IHByZXR0eU5hbWVGb3JFdmVudE1vZGVsKG5ld0V2ZW50TW9kZWwpKTsKQEAgLTg0NCwxMCArODM1
LDcgQEAgUGx1Z2luVmlldzo6UGx1Z2luVmlldyhGcmFtZSogcGFyZW50RnJhbWUsIGNvbnN0IElu
dFNpemUmIHNpemUsIFBsdWdpblBhY2thZ2UqIHAKICAgICAsIG1fd2luZG93KDApCiAjZW5kaWYK
ICNpZiBkZWZpbmVkKFhQX01BQ09TWCkKLSAgICAsIG1fZHJhd2luZ01vZGVsKE5QRHJhd2luZ01v
ZGVsKC0xKSkKLSAgICAsIG1fZXZlbnRNb2RlbChOUEV2ZW50TW9kZWwoLTEpKQogICAgICwgbV9j
b250ZXh0UmVmKDApCi0gICAgLCBtX2Zha2VXaW5kb3coMCkKICNlbmRpZgogI2lmIGRlZmluZWQo
WFBfVU5JWCkgJiYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgLCBtX2hhc1BlbmRp
bmdHZW9tZXRyeUNoYW5nZSh0cnVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lu
cy9QbHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuaAppbmRl
eCBiYTNjYzcxYjZjNGUwMzI2Y2I1Y2Y3YmUzZmI3NTg2N2IzNGIzYzY3Li44NTc0MGE0YzFiMTZj
ZWQ4MmYzMjFmOWRjOGNmZDUzZWZhOGZkYTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bHVnaW5zL1BsdWdpblZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZp
ZXcuaApAQCAtMzIwLDExICszMjAsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZv
aWQgbGlmZVN1cHBvcnRUaW1lckZpcmVkKFRpbWVyPFBsdWdpblZpZXc+Kik7CiAgICAgICAgIFRp
bWVyPFBsdWdpblZpZXc+IG1fbGlmZVN1cHBvcnRUaW1lcjsKIAotI2lmbmRlZiBOUF9OT19DQVJC
T04KLSNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLSAgICAgICAgYm9vbCBkaXNwYXRj
aE5QRXZlbnQoTlBFdmVudCYpOwotI2VuZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJ
KQotI2VuZGlmCiAjaWYgZGVmaW5lZChYUF9NQUNPU1gpICYmIEVOQUJMRShORVRTQ0FQRV9QTFVH
SU5fQVBJKQogICAgICAgICBpbnQxNl90IGRpc3BhdGNoTlBDb2NvYUV2ZW50KE5QQ29jb2FFdmVu
dCYpOwogICAgICAgICBib29sIG1fdXBkYXRlZENvY29hVGV4dElucHV0UmVxdWVzdGVkOwpAQCAt
NDA4LDIwICs0MDMsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBzZXROUFdpbmRvd0lmTmVl
ZGVkKCk7CiAjZWxpZiBkZWZpbmVkKFhQX01BQ09TWCkKICAgICAgICAgTlBfQ0dDb250ZXh0IG1f
bnBDZ0NvbnRleHQ7Ci0gICAgICAgIE93blB0cjxUaW1lcjxQbHVnaW5WaWV3PiA+IG1fbnVsbEV2
ZW50VGltZXI7Ci0gICAgICAgIE5QRHJhd2luZ01vZGVsIG1fZHJhd2luZ01vZGVsOwotICAgICAg
ICBOUEV2ZW50TW9kZWwgbV9ldmVudE1vZGVsOwogICAgICAgICBDR0NvbnRleHRSZWYgbV9jb250
ZXh0UmVmOwotICAgICAgICBXaW5kb3dSZWYgbV9mYWtlV2luZG93OwogI2lmIFBMQVRGT1JNKFFU
KQogICAgICAgICBRUGl4bWFwIG1fcGl4bWFwOwogI2VuZGlmCiAKLSAgICAgICAgUG9pbnQgbV9s
YXN0TW91c2VQb3M7CiAgICAgICAgIHZvaWQgc2V0TlBXaW5kb3dJZk5lZWRlZCgpOwotICAgICAg
ICB2b2lkIG51bGxFdmVudFRpbWVyRmlyZWQoVGltZXI8UGx1Z2luVmlldz4qKTsKLSAgICAgICAg
UG9pbnQgZ2xvYmFsTW91c2VQb3NGb3JQbHVnaW4oKSBjb25zdDsKLSAgICAgICAgUG9pbnQgbW91
c2VQb3NGb3JQbHVnaW4oTW91c2VFdmVudCogZXZlbnQgPSAwKSBjb25zdDsKICNlbmRpZgogCiAj
aWYgZGVmaW5lZChYUF9VTklYKSAmJiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvbWFjL1BsdWdpblZpZXdNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbHVnaW5zL21hYy9QbHVnaW5WaWV3TWFjLm1tCmluZGV4IDQyZmE1NzljYmNk
ODczNzNhZjFkYTViOTA2YzQ3NzUxYjM5MGI2MDcuLmY3NjE2ZmYzY2UxNDIwNjJjYzlhMDIwNTQw
OTcyODRmYTViODEyYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvbWFjL1Bs
dWdpblZpZXdNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9tYWMvUGx1Z2luVmll
d01hYy5tbQpAQCAtODUsMTggKzg1LDEyIEBAIGV4dGVybiBRX0dVSV9FWFBPUlQgQ0dDb250ZXh0
UmVmIHF0X21hY19jZ19jb250ZXh0KGNvbnN0IFFQYWludERldmljZSAqcGRldik7IC8vCiBRVF9F
TkRfTkFNRVNQQUNFCiAjZW5kaWYKIAotdXNpbmcgc3RkOjptaW47Ci0KIHVzaW5nIG5hbWVzcGFj
ZSBXVEY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1l
czsKIAotI2lmbmRlZiBOUF9OT19DQVJCT04KLXN0YXRpYyBpbnQgbW9kaWZpZXJzRm9yRXZlbnQo
VUlFdmVudFdpdGhLZXlTdGF0ZSAqZXZlbnQpOwotI2VuZGlmCi0KIHN0YXRpYyBpbmxpbmUgV2lu
ZG93UmVmIG5hdGl2ZVdpbmRvd0ZvcihQbGF0Zm9ybVdpZGdldCB3aWRnZXQpCiB7CiAjaWYgUExB
VEZPUk0oUVQpCkBAIC0xNTYsNjYgKzE1MCwxNiBAQCBib29sIFBsdWdpblZpZXc6OnBsYXRmb3Jt
U3RhcnQoKQogICAgIEFTU0VSVChtX2lzU3RhcnRlZCk7CiAgICAgQVNTRVJUKG1fc3RhdHVzID09
IFBsdWdpblN0YXR1c0xvYWRlZFN1Y2Nlc3NmdWxseSk7CiAKLSAgICBpZiAobV9kcmF3aW5nTW9k
ZWwgPT0gTlBEcmF3aW5nTW9kZWwoLTEpKSB7Ci0gICAgICAgIC8vIFdlIGRlZmF1bHQgdG8gUXVp
Y2tEcmF3LCBldmVuIHRob3VnaCB3ZSBkb24ndCBzdXBwb3J0IGl0LAotICAgICAgICAvLyBzaW5j
ZSB0aGF0J3Mgd2hhdCBTYWZhcmkgZG9lcywgYW5kIHNvbWUgcGx1Z2lucyBleHBlY3QgdGhpcwot
ICAgICAgICAvLyBiZWhhdmlvciBhbmQgbmV2ZXIgc2V0IHRoZSBkcmF3aW5nIG1vZGVsIGV4cGxp
Y2l0bHkuCi0jaWZuZGVmIE5QX05PX1FVSUNLRFJBVwotICAgICAgICBtX2RyYXdpbmdNb2RlbCA9
IE5QRHJhd2luZ01vZGVsUXVpY2tEcmF3OwotI2Vsc2UKLSAgICAgICAgLy8gUXVpY2tEcmF3IG5v
dCBhdmFpbGFibGUsIHNvIHdlIGhhdmUgdG8gZGVmYXVsdCB0byBDb3JlR3JhcGhpY3MKLSAgICAg
ICAgbV9kcmF3aW5nTW9kZWwgPSBOUERyYXdpbmdNb2RlbENvcmVHcmFwaGljczsKLSNlbmRpZgot
ICAgIH0KLQotICAgIGlmIChtX2V2ZW50TW9kZWwgPT0gTlBFdmVudE1vZGVsKC0xKSkgewotICAg
ICAgICAvLyBJZiB0aGUgcGx1Zy1pbiBkaWQgbm90IHNwZWNpZnkgYW4gZXZlbnQgbW9kZWwKLSAg
ICAgICAgLy8gd2UgZGVmYXVsdCB0byBDYXJib24sIHdoZW4gaXQgaXMgYXZhaWxhYmxlLgotI2lm
bmRlZiBOUF9OT19DQVJCT04KLSAgICAgICAgbV9ldmVudE1vZGVsID0gTlBFdmVudE1vZGVsQ2Fy
Ym9uOwotI2Vsc2UKLSAgICAgICAgbV9ldmVudE1vZGVsID0gTlBFdmVudE1vZGVsQ29jb2E7Ci0j
ZW5kaWYKLSAgICB9Ci0KICAgICAvLyBHcmFjZWZ1bGx5IGhhbmRsZSB1bnN1cHBvcnRlZCBkcmF3
aW5nIG9yIGV2ZW50IG1vZGVscy4gV2UgY2FuIGRvIHRoaXMKICAgICAvLyBub3cgc2luY2UgdGhl
IGRyYXdpbmcgYW5kIGV2ZW50IG1vZGVsIGNhbiBvbmx5IGJlIHNldCBkdXJpbmcgTlBQX05ldy4K
LSNpZm5kZWYgTlBfTk9fQ0FSQk9OCiAgICAgTlBCb29sIGV2ZW50TW9kZWxTdXBwb3J0ZWQ7Ci0g
ICAgaWYgKGdldFZhbHVlU3RhdGljKE5QTlZhcmlhYmxlKE5QTlZzdXBwb3J0c0NhcmJvbkJvb2wg
KyBtX2V2ZW50TW9kZWwpLCAmZXZlbnRNb2RlbFN1cHBvcnRlZCkgIT0gTlBFUlJfTk9fRVJST1IK
KyAgICBpZiAoZ2V0VmFsdWVTdGF0aWMoTlBOVmFyaWFibGUoTlBOVnN1cHBvcnRzQ29jb2FCb29s
KSwgJmV2ZW50TW9kZWxTdXBwb3J0ZWQpICE9IE5QRVJSX05PX0VSUk9SCiAgICAgICAgICAgICB8
fCAhZXZlbnRNb2RlbFN1cHBvcnRlZCkgewotI2Vsc2UKLSAgICBOUEJvb2wgZXZlbnRNb2RlbFN1
cHBvcnRlZDsKLSAgICBpZiAoZ2V0VmFsdWVTdGF0aWMoTlBOVmFyaWFibGUoTlBOVnN1cHBvcnRz
Q29jb2FCb29sLyogKyBtX2V2ZW50TW9kZWwqLyksICZldmVudE1vZGVsU3VwcG9ydGVkKSAhPSBO
UEVSUl9OT19FUlJPUgotICAgICAgICAgICAgfHwgIWV2ZW50TW9kZWxTdXBwb3J0ZWQpIHsKLSNl
bmRpZgogICAgICAgICBtX3N0YXR1cyA9IFBsdWdpblN0YXR1c0Nhbk5vdExvYWRQbHVnaW47CiAg
ICAgICAgIExPRyhQbHVnaW5zLCAiUGx1Zy1pbiAnJXMnIHVzZXMgdW5zdXBwb3J0ZWQgZXZlbnQg
bW9kZWwgJXMiLAotICAgICAgICAgICAgICAgIG1fcGx1Z2luLT5uYW1lKCkudXRmOCgpLmRhdGEo
KSwgcHJldHR5TmFtZUZvckV2ZW50TW9kZWwobV9ldmVudE1vZGVsKSk7Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9Ci0KLSNpZm5kZWYgTlBfTk9fUVVJQ0tEUkFXCi0gICAgTlBCb29sIGRy
YXdpbmdNb2RlbFN1cHBvcnRlZDsKLSAgICBpZiAoZ2V0VmFsdWVTdGF0aWMoTlBOVmFyaWFibGUo
TlBOVnN1cHBvcnRzUXVpY2tEcmF3Qm9vbCArIG1fZHJhd2luZ01vZGVsKSwgJmRyYXdpbmdNb2Rl
bFN1cHBvcnRlZCkgIT0gTlBFUlJfTk9fRVJST1IKLSAgICAgICAgICAgIHx8ICFkcmF3aW5nTW9k
ZWxTdXBwb3J0ZWQpIHsKLSAgICAgICAgbV9zdGF0dXMgPSBQbHVnaW5TdGF0dXNDYW5Ob3RMb2Fk
UGx1Z2luOwotICAgICAgICBMT0coUGx1Z2lucywgIlBsdWctaW4gJyVzJyB1c2VzIHVuc3VwcG9y
dGVkIGRyYXdpbmcgbW9kZWwgJXMiLAotICAgICAgICAgICAgICAgIG1fcGx1Z2luLT5uYW1lKCku
dXRmOCgpLmRhdGEoKSwgcHJldHR5TmFtZUZvckRyYXdpbmdNb2RlbChtX2RyYXdpbmdNb2RlbCkp
OworICAgICAgICAgICAgICAgIG1fcGx1Z2luLT5uYW1lKCkudXRmOCgpLmRhdGEoKSwgcHJldHR5
TmFtZUZvckV2ZW50TW9kZWwoTlBFdmVudE1vZGVsQ29jb2EpKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KLSNlbmRpZgotCi0jaWZkZWYgTlBfTk9fUVVJQ0tEUkFXCi0gICAgTlBCb29s
IGRyYXdpbmdNb2RlbFN1cHBvcnRlZDsKLSAgICBpZiAoZ2V0VmFsdWVTdGF0aWMoTlBOVmFyaWFi
bGUoTlBOVnN1cHBvcnRzQ29yZUdyYXBoaWNzQm9vbC8qICsgbV9kcmF3aW5nTW9kZWwqLyksICZk
cmF3aW5nTW9kZWxTdXBwb3J0ZWQpICE9IE5QRVJSX05PX0VSUk9SCi0gICAgICAgICAgICB8fCAh
ZHJhd2luZ01vZGVsU3VwcG9ydGVkKSB7Ci0gICAgICAgIG1fc3RhdHVzID0gUGx1Z2luU3RhdHVz
Q2FuTm90TG9hZFBsdWdpbjsKLSAgICAgICAgTE9HKFBsdWdpbnMsICJQbHVnLWluICclcycgdXNl
cyB1bnN1cHBvcnRlZCBkcmF3aW5nIG1vZGVsICVzIiwKLSAgICAgICAgICAgICAgICBtX3BsdWdp
bi0+bmFtZSgpLnV0ZjgoKS5kYXRhKCksIHByZXR0eU5hbWVGb3JEcmF3aW5nTW9kZWwobV9kcmF3
aW5nTW9kZWwpKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSNlbmRpZgogCiAKICNp
ZiBQTEFURk9STShRVCkKQEAgLTIyNywzMSArMTcxLDExIEBAIGJvb2wgUGx1Z2luVmlldzo6cGxh
dGZvcm1TdGFydCgpCiAgICAgfQogI2VuZGlmCiAKLSAgICAvLyBDcmVhdGUgYSBmYWtlIHdpbmRv
dyByZWxhdGl2ZSB0byB3aGljaCBhbGwgZXZlbnRzIHdpbGwgYmUgc2VudCB3aGVuIHVzaW5nIG9m
ZnNjcmVlbiByZW5kZXJpbmcKLSNpZm5kZWYgTlBfTk9fQ0FSQk9OCi0gICAgaWYgKCFwbGF0Zm9y
bVBsdWdpbldpZGdldCgpKSB7Ci0gICAgICAgIC8vIE1ha2UgdGhlIGRlZmF1bHQgc2l6ZSByZWFs
bHkgYmlnLiBJdCBpcyB1bmNsZWFyIHdoeSB0aGlzIGlzIHJlcXVpcmVkIGJ1dCB3aXRoIGEgc21h
bGxlciBzaXplLCBtb3VzZSBtb3ZlCi0gICAgICAgIC8vIGV2ZW50cyBkb24ndCBnZXQgcHJvY2Vz
c2VkLiBSZXNpemluZyB0aGUgZmFrZSB3aW5kb3cgdG8gZmxhc2gncyBzaXplIGRvZXNuJ3QgaGVs
cC4KLSAgICAgICAgOjpSZWN0IHdpbmRvd0JvdW5kcyA9IHsgMCwgMCwgMTAwMCwgMTAwMCB9Owot
ICAgICAgICBDcmVhdGVOZXdXaW5kb3coa0RvY3VtZW50V2luZG93Q2xhc3MsIGtXaW5kb3dTdGFu
ZGFyZERvY3VtZW50QXR0cmlidXRlcywgJndpbmRvd0JvdW5kcywgJm1fZmFrZVdpbmRvdyk7Ci0g
ICAgICAgIC8vIEZsYXNoIHJlcXVpcmVzIHRoZSB3aW5kb3cgdG8gYmUgaGlsaXRlZCB0byBwcm9j
ZXNzIG1vdXNlIG1vdmUgZXZlbnRzLgotICAgICAgICBIaWxpdGVXaW5kb3cobV9mYWtlV2luZG93
LCB0cnVlKTsKLSAgICB9Ci0jZW5kaWYKLQogICAgIHVwZGF0ZVBsdWdpbldpZGdldCgpOwogCiAg
ICAgaWYgKCFtX3BsdWdpbi0+cXVpcmtzKCkuY29udGFpbnMoUGx1Z2luUXVpcmtEZWZlckZpcnN0
U2V0V2luZG93Q2FsbCkpCiAgICAgICAgIHNldE5QV2luZG93SWZOZWVkZWQoKTsKIAotI2lmbmRl
ZiBOUF9OT19DQVJCT04KLSAgICAvLyBUT0RPOiBJbXBsZW1lbnQgbnVsbCB0aW1lciB0aHJvdHRs
aW5nIGRlcGVuZGluZyBvbiBwbHVnaW4gYWN0aXZhdGlvbgotICAgIG1fbnVsbEV2ZW50VGltZXIg
PSBhZG9wdFB0cihuZXcgVGltZXI8UGx1Z2luVmlldz4odGhpcywgJlBsdWdpblZpZXc6Om51bGxF
dmVudFRpbWVyRmlyZWQpKTsKLSAgICBtX251bGxFdmVudFRpbWVyLT5zdGFydFJlcGVhdGluZygw
LjAyKTsKLQotICAgIG1fbGFzdE1vdXNlUG9zLmggPSBtX2xhc3RNb3VzZVBvcy52ID0gMDsKLSNl
bmRpZiAvLyBOUF9OT19DQVJCT04KLQogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yNjEsMTAg
KzE4NSw2IEBAIHZvaWQgUGx1Z2luVmlldzo6cGxhdGZvcm1EZXN0cm95KCkKICAgICAgICAgc2V0
UGxhdGZvcm1QbHVnaW5XaWRnZXQoMCk7CiAgICAgZWxzZSB7CiAgICAgICAgIENHQ29udGV4dFJl
bGVhc2UobV9jb250ZXh0UmVmKTsKLSNpZm5kZWYgTlBfTk9fQ0FSQk9OCi0gICAgICAgIGlmICht
X2Zha2VXaW5kb3cpCi0gICAgICAgICAgICBEaXNwb3NlV2luZG93KG1fZmFrZVdpbmRvdyk7Ci0j
ZW5kaWYKICAgICB9CiB9CiAKQEAgLTI4MywxMyArMjAzLDYgQEAgYm9vbCBQbHVnaW5WaWV3Ojpw
bGF0Zm9ybUdldFZhbHVlU3RhdGljKE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkKiB2YWx1ZSwg
TlBFcnIKICAgICAgICAgKnJlc3VsdCA9IE5QRVJSX05PX0VSUk9SOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKIAotI2lmbmRlZiBOUF9OT19DQVJCT04KLSAgICBjYXNlIE5QTlZzdXBwb3J0c0NhcmJv
bkJvb2w6Ci0gICAgICAgICpzdGF0aWNfY2FzdDxOUEJvb2wqPih2YWx1ZSkgPSB0cnVlOwotICAg
ICAgICAqcmVzdWx0ID0gTlBFUlJfTk9fRVJST1I7Ci0gICAgICAgIHJldHVybiB0cnVlOwotCi0j
ZW5kaWYKICAgICBjYXNlIE5QTlZzdXBwb3J0c0NvY29hQm9vbDoKICAgICAgICAgKnN0YXRpY19j
YXN0PE5QQm9vbCo+KHZhbHVlKSA9IHRydWU7CiAgICAgICAgICpyZXN1bHQgPSBOUEVSUl9OT19F
UlJPUjsKQEAgLTMwNiwxMCArMjE5LDYgQEAgYm9vbCBQbHVnaW5WaWV3OjpwbGF0Zm9ybUdldFZh
bHVlU3RhdGljKE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkKiB2YWx1ZSwgTlBFcnIKICAgICAg
ICAgKnJlc3VsdCA9IE5QRVJSX05PX0VSUk9SOwogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotI2lm
bmRlZiBOUF9OT19RVUlDS0RSQVcKLSAgICAvLyBRdWlja0RyYXcgaXMgZGVwcmVjYXRlZCBpbiAx
MC41IGFuZCBub3Qgc3VwcG9ydGVkIG9uIDY0LWJpdAotICAgIGNhc2UgTlBOVnN1cHBvcnRzUXVp
Y2tEcmF3Qm9vbDoKLSNlbmRpZgogICAgIGNhc2UgTlBOVnN1cHBvcnRzT3BlbkdMQm9vbDoKICAg
ICBjYXNlIE5QTlZzdXBwb3J0c0NvcmVBbmltYXRpb25Cb29sOgogICAgICAgICAqc3RhdGljX2Nh
c3Q8TlBCb29sKj4odmFsdWUpID0gZmFsc2U7CkBAIC0zNzQsMTEgKzI4Myw4IEBAIHZvaWQgUGx1
Z2luVmlldzo6aGlkZSgpCiB2b2lkIFBsdWdpblZpZXc6OnNldEZvY3VzKGJvb2wgZm9jdXNlZCkK
IHsKICAgICBMT0coUGx1Z2lucywgIlBsdWdpblZpZXc6OnNldEZvY3VzKCVkKSIsIGZvY3VzZWQp
OwotICAgIGlmICghZm9jdXNlZCkgeworICAgIGlmICghZm9jdXNlZCkKICAgICAgICAgV2lkZ2V0
OjpzZXRGb2N1cyhmb2N1c2VkKTsKLSAgICAgICAgaWYgKG1fZXZlbnRNb2RlbCAhPSBOUEV2ZW50
TW9kZWxDb2NvYSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICBpZiAocGxhdGZv
cm1QbHVnaW5XaWRnZXQoKSkKICNpZiBQTEFURk9STShRVCkKQEAgLTM5MCwyOCArMjk2LDE0IEBA
IHZvaWQgUGx1Z2luVmlldzo6c2V0Rm9jdXMoYm9vbCBmb2N1c2VkKQogICAgICAgICBXaWRnZXQ6
OnNldEZvY3VzKGZvY3VzZWQpOwogCiAKLSNpZm5kZWYgTlBfTk9fQ0FSQk9OCi0gICAgLy8gVE9E
TzogQWxzbyBoYW5kbGUgYW5kIHBhc3Mgb24gYmx1ciBldmVudHMgKGZvY3VzIGxvc3QpCi0gICAg
RXZlbnRSZWNvcmQgcmVjb3JkOwotICAgIHJlY29yZC53aGF0ID0gTlBFdmVudFR5cGVfR2V0Rm9j
dXNFdmVudDsKLSAgICByZWNvcmQubWVzc2FnZSA9IDA7Ci0gICAgcmVjb3JkLndoZW4gPSBUaWNr
Q291bnQoKTsKLSAgICByZWNvcmQud2hlcmUgPSBnbG9iYWxNb3VzZVBvc0ZvclBsdWdpbigpOwot
ICAgIHJlY29yZC5tb2RpZmllcnMgPSBHZXRDdXJyZW50S2V5TW9kaWZpZXJzKCk7CisgICAgTlBD
b2NvYUV2ZW50IGNvY29hRXZlbnQ7CisgICAgaW5pdGlhbGl6ZU5QQ29jb2FFdmVudCgmY29jb2FF
dmVudCk7CisgICAgY29jb2FFdmVudC50eXBlID0gTlBDb2NvYUV2ZW50Rm9jdXNDaGFuZ2VkOwor
ICAgIE5QQm9vbCBmb2N1cyA9IGZvY3VzZWQ7CisgICAgY29jb2FFdmVudC5kYXRhLmZvY3VzLmhh
c0ZvY3VzID0gZm9jdXM7CiAKLSAgICBpZiAoIWRpc3BhdGNoTlBFdmVudChyZWNvcmQpKQotICAg
ICAgICBMT0coRXZlbnRzLCAiUGx1Z2luVmlldzo6c2V0Rm9jdXMoJWQpOiBGb2N1cyBldmVudCBu
b3QgYWNjZXB0ZWQiLCBmb2N1c2VkKTsKLSNlbmRpZgotICAgIHsKLSAgICAgICAgTlBDb2NvYUV2
ZW50IGNvY29hRXZlbnQ7Ci0gICAgICAgIGluaXRpYWxpemVOUENvY29hRXZlbnQoJmNvY29hRXZl
bnQpOwotICAgICAgICBjb2NvYUV2ZW50LnR5cGUgPSBOUENvY29hRXZlbnRGb2N1c0NoYW5nZWQ7
Ci0gICAgICAgIE5QQm9vbCBmb2N1cyA9IGZvY3VzZWQ7Ci0gICAgICAgIGNvY29hRXZlbnQuZGF0
YS5mb2N1cy5oYXNGb2N1cyA9IGZvY3VzOwotCi0gICAgICAgIGlmKCFkaXNwYXRjaE5QQ29jb2FF
dmVudChjb2NvYUV2ZW50KSkgewotICAgICAgICAgICAgTE9HKEV2ZW50cywgIlBsdWdpblZpZXc6
OnNldEZvY3VzKCk6IEZvY3VzIGV2ZW50ICVkIG5vdCBhY2NlcHRlZCIsIGNvY29hRXZlbnQudHlw
ZSk7Ci0gICAgICAgIH0KKyAgICBpZighZGlzcGF0Y2hOUENvY29hRXZlbnQoY29jb2FFdmVudCkp
IHsKKyAgICAgICAgTE9HKEV2ZW50cywgIlBsdWdpblZpZXc6OnNldEZvY3VzKCk6IEZvY3VzIGV2
ZW50ICVkIG5vdCBhY2NlcHRlZCIsIGNvY29hRXZlbnQudHlwZSk7CiAgICAgfQogfQogCkBAIC00
MzQsMjYgKzMyNiwyMCBAQCB2b2lkIFBsdWdpblZpZXc6OnNldE5QV2luZG93SWZOZWVkZWQoKQog
ICAgICAgICByZXR1cm47CiAKICAgICBDR0NvbnRleHRSZWYgbmV3Q29udGV4dFJlZiA9IDA7Ci0g
ICAgV2luZG93UmVmIG5ld1dpbmRvd1JlZiA9IDA7CiAgICAgaWYgKHBsYXRmb3JtUGx1Z2luV2lk
Z2V0KCkpIHsKICAgICAgICAgbmV3Q29udGV4dFJlZiA9IGNnSGFuZGxlRm9yKHBsYXRmb3JtUGx1
Z2luV2lkZ2V0KCkpOwotICAgICAgICBuZXdXaW5kb3dSZWYgPSBuYXRpdmVXaW5kb3dGb3IocGxh
dGZvcm1QbHVnaW5XaWRnZXQoKSk7CiAgICAgICAgIG1fbnBXaW5kb3cudHlwZSA9IE5QV2luZG93
VHlwZVdpbmRvdzsKICAgICB9IGVsc2UgewogICAgICAgICBuZXdDb250ZXh0UmVmID0gbV9jb250
ZXh0UmVmOwotICAgICAgICBuZXdXaW5kb3dSZWYgPSBtX2Zha2VXaW5kb3c7CiAgICAgICAgIG1f
bnBXaW5kb3cudHlwZSA9IE5QV2luZG93VHlwZURyYXdhYmxlOwogICAgIH0KIAotICAgIGlmICgh
bmV3Q29udGV4dFJlZiB8fCAhbmV3V2luZG93UmVmKSB7CisgICAgaWYgKCFuZXdDb250ZXh0UmVm
KSB7CiAgICAgICAgIGlmICghbV91c2VQaXhtYXApCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgbV9ucFdpbmRvdy53aW5kb3cgPSAodm9pZCopJm1fbnBDZ0NvbnRleHQ7Ci0jaWZu
ZGVmIE5QX05PX0NBUkJPTgotICAgIG1fbnBDZ0NvbnRleHQud2luZG93ID0gbmV3V2luZG93UmVm
OwotI2VuZGlmCiAgICAgbV9ucENnQ29udGV4dC5jb250ZXh0ID0gbmV3Q29udGV4dFJlZjsKIAog
ICAgIG1fbnBXaW5kb3cueCA9IG1fd2luZG93UmVjdC54KCk7CkBAIC00NjcsOSArMzUzLDkgQEAg
dm9pZCBQbHVnaW5WaWV3OjpzZXROUFdpbmRvd0lmTmVlZGVkKCkKICAgICBtX25wV2luZG93LmNs
aXBSZWN0LnJpZ2h0ID0gbV93aW5kb3dSZWN0LngoKSArIG1fd2luZG93UmVjdC53aWR0aCgpOwog
ICAgIG1fbnBXaW5kb3cuY2xpcFJlY3QuYm90dG9tID0gbV93aW5kb3dSZWN0LnkoKSArIG1fd2lu
ZG93UmVjdC5oZWlnaHQoKTsKIAotICAgIExPRyhQbHVnaW5zLCAiUGx1Z2luVmlldzo6c2V0TlBX
aW5kb3dJZk5lZWRlZCgpOiB3aW5kb3c9JXAsIGNvbnRleHQ9JXAsIgorICAgIExPRyhQbHVnaW5z
LCAiUGx1Z2luVmlldzo6c2V0TlBXaW5kb3dJZk5lZWRlZCgpOiBjb250ZXh0PSVwLCIKICAgICAg
ICAgICAgICIgd2luZG93Lng6JWQgd2luZG93Lnk6JWQgd2luZG93LndpZHRoOiVkIHdpbmRvdy5o
ZWlnaHQ6JWQgd2luZG93LmNsaXBSZWN0IHNpemU6JWR4JWQiLAotICAgICAgICAgICAgbmV3V2lu
ZG93UmVmLCBuZXdDb250ZXh0UmVmLCBtX25wV2luZG93LngsIG1fbnBXaW5kb3cueSwgbV9ucFdp
bmRvdy53aWR0aCwgbV9ucFdpbmRvdy5oZWlnaHQsCisgICAgICAgICAgICBuZXdDb250ZXh0UmVm
LCBtX25wV2luZG93LngsIG1fbnBXaW5kb3cueSwgbV9ucFdpbmRvdy53aWR0aCwgbV9ucFdpbmRv
dy5oZWlnaHQsCiAgICAgICAgICAgICBtX25wV2luZG93LmNsaXBSZWN0LnJpZ2h0IC0gbV9ucFdp
bmRvdy5jbGlwUmVjdC5sZWZ0LCBtX25wV2luZG93LmNsaXBSZWN0LmJvdHRvbSAtIG1fbnBXaW5k
b3cuY2xpcFJlY3QudG9wKTsKIAogICAgIFBsdWdpblZpZXc6OnNldEN1cnJlbnRQbHVnaW5WaWV3
KHRoaXMpOwpAQCAtNTc0LDMzICs0NjAsMTcgQEAgdm9pZCBQbHVnaW5WaWV3OjpwYWludChHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QpCiAjZW5kaWYKICAgICB9
CiAKLSNpZm5kZWYgTlBfTk9fQ0FSQk9OCi0gICAgaWYgKG1fZXZlbnRNb2RlbCAhPSBOUEV2ZW50
TW9kZWxDb2NvYSkgewotICAgICAgICBFdmVudFJlY29yZCBldmVudDsKLSAgICAgICAgZXZlbnQu
d2hhdCA9IHVwZGF0ZUV2dDsKLSAgICAgICAgZXZlbnQubWVzc2FnZSA9IChsb25nIHVuc2lnbmVk
IGludCltX25wQ2dDb250ZXh0LndpbmRvdzsKLSAgICAgICAgZXZlbnQud2hlbiA9IFRpY2tDb3Vu
dCgpOwotICAgICAgICBldmVudC53aGVyZS5oID0gMDsKLSAgICAgICAgZXZlbnQud2hlcmUudiA9
IDA7Ci0gICAgICAgIGV2ZW50Lm1vZGlmaWVycyA9IEdldEN1cnJlbnRLZXlNb2RpZmllcnMoKTsK
LQotICAgICAgICBpZiAoIWRpc3BhdGNoTlBFdmVudChldmVudCkpCi0gICAgICAgICAgICBMT0co
RXZlbnRzLCAiUGx1Z2luVmlldzo6cGFpbnQoKTogUGFpbnQgZXZlbnQgbm90IGFjY2VwdGVkIik7
Ci0gICAgfSBlbHNlCi0jZW5kaWYKLSAgICB7Ci0gICAgICAgIE5QQ29jb2FFdmVudCBjb2NvYUV2
ZW50OwotICAgICAgICBpbml0aWFsaXplTlBDb2NvYUV2ZW50KCZjb2NvYUV2ZW50KTsKLSAgICAg
ICAgY29jb2FFdmVudC50eXBlID0gTlBDb2NvYUV2ZW50RHJhd1JlY3Q7Ci0gICAgICAgIGNvY29h
RXZlbnQuZGF0YS5kcmF3LnggPSBtX3VzZVBpeG1hcCA/IDAgOiByLm9yaWdpbi54OwotICAgICAg
ICBjb2NvYUV2ZW50LmRhdGEuZHJhdy55ID0gbV91c2VQaXhtYXAgPyAwIDogci5vcmlnaW4ueTsK
LSAgICAgICAgY29jb2FFdmVudC5kYXRhLmRyYXcud2lkdGggPSBtX3VzZVBpeG1hcCA/IG1fcGl4
bWFwLndpZHRoKCkgOiByLnNpemUud2lkdGg7Ci0gICAgICAgIGNvY29hRXZlbnQuZGF0YS5kcmF3
LmhlaWdodCA9IG1fdXNlUGl4bWFwID8gbV9waXhtYXAuaGVpZ2h0KCkgOiByLnNpemUuaGVpZ2h0
OwotICAgICAgICBjb2NvYUV2ZW50LmRhdGEuZHJhdy5jb250ZXh0ID0gY2dDb250ZXh0OwotICAg
ICAgICAKLSAgICAgICAgaWYoIWRpc3BhdGNoTlBDb2NvYUV2ZW50KGNvY29hRXZlbnQpKQotICAg
ICAgICAgICAgTE9HKEV2ZW50cywgIlBsdWdpblZpZXc6OnBhaW50KCk6IFBhaW50IGV2ZW50IHR5
cGUgJWQgbm90IGFjY2VwdGVkIiwgY29jb2FFdmVudC50eXBlKTsKLSAgICB9CisgICAgTlBDb2Nv
YUV2ZW50IGNvY29hRXZlbnQ7CisgICAgaW5pdGlhbGl6ZU5QQ29jb2FFdmVudCgmY29jb2FFdmVu
dCk7CisgICAgY29jb2FFdmVudC50eXBlID0gTlBDb2NvYUV2ZW50RHJhd1JlY3Q7CisgICAgY29j
b2FFdmVudC5kYXRhLmRyYXcueCA9IG1fdXNlUGl4bWFwID8gMCA6IHIub3JpZ2luLng7CisgICAg
Y29jb2FFdmVudC5kYXRhLmRyYXcueSA9IG1fdXNlUGl4bWFwID8gMCA6IHIub3JpZ2luLnk7Cisg
ICAgY29jb2FFdmVudC5kYXRhLmRyYXcud2lkdGggPSBtX3VzZVBpeG1hcCA/IG1fcGl4bWFwLndp
ZHRoKCkgOiByLnNpemUud2lkdGg7CisgICAgY29jb2FFdmVudC5kYXRhLmRyYXcuaGVpZ2h0ID0g
bV91c2VQaXhtYXAgPyBtX3BpeG1hcC5oZWlnaHQoKSA6IHIuc2l6ZS5oZWlnaHQ7CisgICAgY29j
b2FFdmVudC5kYXRhLmRyYXcuY29udGV4dCA9IGNnQ29udGV4dDsKKworICAgIGlmKCFkaXNwYXRj
aE5QQ29jb2FFdmVudChjb2NvYUV2ZW50KSkKKyAgICAgICAgTE9HKEV2ZW50cywgIlBsdWdpblZp
ZXc6OnBhaW50KCk6IFBhaW50IGV2ZW50IHR5cGUgJWQgbm90IGFjY2VwdGVkIiwgY29jb2FFdmVu
dC50eXBlKTsKICAgICAKICAgICBpZiAoIXBsYXRmb3JtUGx1Z2luV2lkZ2V0KCkgfHwgbV9pc1Ry
YW5zcGFyZW50KSB7CiAjaWYgUExBVEZPUk0oUVQpCkBAIC02NjIsNyArNTMyLDcgQEAgdm9pZCBQ
bHVnaW5WaWV3Ojpmb3JjZVJlZHJhdygpCiAvLyAtLS0tLS0tLS0tLS0tLS0tLSBFdmVudCBoYW5k
bGluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLQogdm9pZCBQbHVnaW5WaWV3OjpoYW5kbGVXaGVlbEV2
ZW50KFdoZWVsRXZlbnQgKmV2ZW50KQogewotICAgIGlmICghbV9pc1N0YXJ0ZWQgfHwgbV9ldmVu
dE1vZGVsICE9IE5QRXZlbnRNb2RlbENvY29hKQorICAgIGlmICghbV9pc1N0YXJ0ZWQpCiAgICAg
ICAgIHJldHVybjsKICAgICAKICAgICBOUENvY29hRXZlbnQgY29jb2FFdmVudDsKQEAgLTY4MCw4
ICs1NTAsOCBAQCB2b2lkIFBsdWdpblZpZXc6OmhhbmRsZVdoZWVsRXZlbnQoV2hlZWxFdmVudCAq
ZXZlbnQpCiAgICAgY29jb2FFdmVudC5kYXRhLm1vdXNlLm1vZGlmaWVyRmxhZ3MgPSBnZXRNb2Rp
ZmllcnMoZXZlbnQpOwogICAgIAogICAgIGlmKCFkaXNwYXRjaE5QQ29jb2FFdmVudChjb2NvYUV2
ZW50KSkgewotICAgICAgICBMT0coRXZlbnRzLCAiUGx1Z2luVmlldzo6aGFuZGxlTW91c2VFdmVu
dCgpOiBXaGVlbCBldmVudCB0eXBlICVkIGF0ICVkLCVkIG5vdCBhY2NlcHRlZCIsIGNvY29hRXZl
bnQudHlwZQotICAgICAgICAgICAgY29jb2FFdmVudC5kYXRhLm1vdXNlLngsIGNvY29hRXZlbnQu
ZGF0YS5tb3VzZS55KTsKKyAgICAgICAgTE9HKEV2ZW50cywgIlBsdWdpblZpZXc6OmhhbmRsZU1v
dXNlRXZlbnQoKTogV2hlZWwgZXZlbnQgdHlwZSAlZCBhdCAlZCwlZCBub3QgYWNjZXB0ZWQiLCBj
b2NvYUV2ZW50LnR5cGUsCisgICAgICAgICAgICBjb2NvYUV2ZW50LmRhdGEubW91c2UucGx1Z2lu
WCwgY29jb2FFdmVudC5kYXRhLm1vdXNlLnBsdWdpblkpOwogICAgIH0KICAgICBldmVudC0+c2V0
RGVmYXVsdEhhbmRsZWQoKTsKIH0KQEAgLTY5MSwxMjUgKzU2MSw4MCBAQCB2b2lkIFBsdWdpblZp
ZXc6OmhhbmRsZU1vdXNlRXZlbnQoTW91c2VFdmVudCogZXZlbnQpCiAgICAgaWYgKCFtX2lzU3Rh
cnRlZCkKICAgICAgICAgcmV0dXJuOwogICAgIAotI2lmbmRlZiBOUF9OT19DQVJCT04KLSAgICBp
ZiAobV9ldmVudE1vZGVsICE9IE5QRXZlbnRNb2RlbENvY29hKSB7Ci0gICAgICAgIEV2ZW50UmVj
b3JkIHJlY29yZDsKLSAgICAgICAgCi0gICAgICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50
TmFtZXMoKS5tb3VzZW1vdmVFdmVudCkgewotICAgICAgICAgICAgLy8gTW91c2UgbW92ZW1lbnQg
aXMgaGFuZGxlZCBieSBudWxsIHRpbWVyIGV2ZW50cwotICAgICAgICAgICAgbV9sYXN0TW91c2VQ
b3MgPSBtb3VzZVBvc0ZvclBsdWdpbihldmVudCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0gZWxzZSBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2VvdmVyRXZl
bnQpIHsKLSAgICAgICAgICAgIHJlY29yZC53aGF0ID0gTlBFdmVudFR5cGVfQWRqdXN0Q3Vyc29y
RXZlbnQ7Ci0gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCku
bW91c2VvdXRFdmVudCkgewotICAgICAgICAgICAgcmVjb3JkLndoYXQgPSBOUEV2ZW50VHlwZV9B
ZGp1c3RDdXJzb3JFdmVudDsKLSAgICAgICAgfSBlbHNlIGlmIChldmVudC0+dHlwZSgpID09IGV2
ZW50TmFtZXMoKS5tb3VzZWRvd25FdmVudCkgewotICAgICAgICAgICAgcmVjb3JkLndoYXQgPSBt
b3VzZURvd247CisgICAgTlBDb2NvYUV2ZW50VHlwZSBldmVudFR5cGU7CisgICAgaW50MzJfdCBi
dXR0b25OdW1iZXIgPSAwOworICAgIGludDMyX3QgY2xpY2tDb3VudCA9IDA7CisgICAgTlNFdmVu
dCAqY3VycmVudEV2ZW50ID0gW05TQXBwIGN1cnJlbnRFdmVudF07CisKKyAgICBOU0V2ZW50VHlw
ZSB0eXBlID0gW2N1cnJlbnRFdmVudCB0eXBlXTsKKworICAgIHN3aXRjaCAodHlwZSkgeworICAg
ICAgICBjYXNlIE5TTGVmdE1vdXNlRG93bjoKKyAgICAgICAgY2FzZSBOU1JpZ2h0TW91c2VEb3du
OgorICAgICAgICBjYXNlIE5TT3RoZXJNb3VzZURvd246CisgICAgICAgICAgICBidXR0b25OdW1i
ZXIgPSBbY3VycmVudEV2ZW50IGJ1dHRvbk51bWJlcl07CisgICAgICAgICAgICBjbGlja0NvdW50
ID0gW2N1cnJlbnRFdmVudCBjbGlja0NvdW50XTsKKyAgICAgICAgICAgIGV2ZW50VHlwZSA9IE5Q
Q29jb2FFdmVudE1vdXNlRG93bjsKICAgICAgICAgICAgIC8vIFRoZSBwbHVnaW4gbmVlZHMgZm9j
dXMgdG8gcmVjZWl2ZSBrZXlib2FyZCBldmVudHMKICAgICAgICAgICAgIGlmIChQYWdlKiBwYWdl
ID0gbV9wYXJlbnRGcmFtZS0+cGFnZSgpKQogICAgICAgICAgICAgICAgIHBhZ2UtPmZvY3VzQ29u
dHJvbGxlcigpLT5zZXRGb2N1c2VkRnJhbWUobV9wYXJlbnRGcmFtZSk7CiAgICAgICAgICAgICBt
X3BhcmVudEZyYW1lLT5kb2N1bWVudCgpLT5zZXRGb2N1c2VkTm9kZShtX2VsZW1lbnQpOwotICAg
ICAgICB9IGVsc2UgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNldXBFdmVu
dCkgewotICAgICAgICAgICAgcmVjb3JkLndoYXQgPSBtb3VzZVVwOwotICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBOU0xlZnRNb3VzZVVwOgorICAg
ICAgICBjYXNlIE5TUmlnaHRNb3VzZVVwOgorICAgICAgICBjYXNlIE5TT3RoZXJNb3VzZVVwOgor
ICAgICAgICAgICAgYnV0dG9uTnVtYmVyID0gW2N1cnJlbnRFdmVudCBidXR0b25OdW1iZXJdOwor
ICAgICAgICAgICAgY2xpY2tDb3VudCA9IFtjdXJyZW50RXZlbnQgY2xpY2tDb3VudF07CisgICAg
ICAgICAgICBldmVudFR5cGUgPSBOUENvY29hRXZlbnRNb3VzZVVwOworICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgY2FzZSBOU01vdXNlTW92ZWQ6CisgICAgICAgICAgICBldmVudFR5cGUg
PSBOUENvY29hRXZlbnRNb3VzZU1vdmVkOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
Y2FzZSBOU0xlZnRNb3VzZURyYWdnZWQ6CisgICAgICAgIGNhc2UgTlNSaWdodE1vdXNlRHJhZ2dl
ZDoKKyAgICAgICAgY2FzZSBOU090aGVyTW91c2VEcmFnZ2VkOgorICAgICAgICAgICAgYnV0dG9u
TnVtYmVyID0gW2N1cnJlbnRFdmVudCBidXR0b25OdW1iZXJdOworICAgICAgICAgICAgZXZlbnRU
eXBlID0gTlBDb2NvYUV2ZW50TW91c2VEcmFnZ2VkOworICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgY2FzZSBOU01vdXNlRW50ZXJlZDoKKyAgICAgICAgICAgIGV2ZW50VHlwZSA9IE5QQ29j
b2FFdmVudE1vdXNlRW50ZXJlZDsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2Ug
TlNNb3VzZUV4aXRlZDoKKyAgICAgICAgICAgIGV2ZW50VHlwZSA9IE5QQ29jb2FFdmVudE1vdXNl
RXhpdGVkOworICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9
Ci0gICAgICAgIHJlY29yZC53aGVyZSA9IG1vdXNlUG9zRm9yUGx1Z2luKGV2ZW50KTsKLSAgICAg
ICAgcmVjb3JkLm1vZGlmaWVycyA9IG1vZGlmaWVyc0ZvckV2ZW50KGV2ZW50KTsKLSAgICAgICAg
Ci0gICAgICAgIGlmICghZXZlbnQtPmJ1dHRvbkRvd24oKSkKLSAgICAgICAgICAgIHJlY29yZC5t
b2RpZmllcnMgfD0gYnRuU3RhdGU7Ci0gICAgICAgIAotICAgICAgICBpZiAoZXZlbnQtPmJ1dHRv
bigpID09IDIpCi0gICAgICAgICAgICByZWNvcmQubW9kaWZpZXJzIHw9IGNvbnRyb2xLZXk7Ci0g
ICAgICAgIAotICAgICAgICBpZiAoIWRpc3BhdGNoTlBFdmVudChyZWNvcmQpKSB7Ci0gICAgICAg
ICAgICBpZiAocmVjb3JkLndoYXQgPT0gTlBFdmVudFR5cGVfQWRqdXN0Q3Vyc29yRXZlbnQpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuOyAvLyBTaWduYWxzIHRoYXQgdGhlIHBsdWdpbiB3YW50cyBh
IG5vcm1hbCBjdXJzb3IKLSAgICAgICAgICAgIAotICAgICAgICAgICAgTE9HKEV2ZW50cywgIlBs
dWdpblZpZXc6OmhhbmRsZU1vdXNlRXZlbnQoKTogTW91c2UgZXZlbnQgdHlwZSAlZCBhdCAlZCwl
ZCBub3QgYWNjZXB0ZWQiLAotICAgICAgICAgICAgICAgIHJlY29yZC53aGF0LCByZWNvcmQud2hl
cmUuaCwgcmVjb3JkLndoZXJlLnYpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgZXZl
bnQtPnNldERlZmF1bHRIYW5kbGVkKCk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UKLSNlbmRpZgot
ICAgIHsKLSAgICAgICAgTlBDb2NvYUV2ZW50VHlwZSBldmVudFR5cGU7Ci0gICAgICAgIGludDMy
X3QgYnV0dG9uTnVtYmVyID0gMDsKLSAgICAgICAgaW50MzJfdCBjbGlja0NvdW50ID0gMDsKLSAg
ICAgICAgTlNFdmVudCAqY3VycmVudEV2ZW50ID0gW05TQXBwIGN1cnJlbnRFdmVudF07Ci0gICAg
ICAgIAotICAgICAgICBOU0V2ZW50VHlwZSB0eXBlID0gW2N1cnJlbnRFdmVudCB0eXBlXTsKLSAg
ICAgICAgCi0gICAgICAgIHN3aXRjaCAodHlwZSkgewotICAgICAgICAgICAgY2FzZSBOU0xlZnRN
b3VzZURvd246Ci0gICAgICAgICAgICBjYXNlIE5TUmlnaHRNb3VzZURvd246Ci0gICAgICAgICAg
ICBjYXNlIE5TT3RoZXJNb3VzZURvd246Ci0gICAgICAgICAgICAgICAgYnV0dG9uTnVtYmVyID0g
W2N1cnJlbnRFdmVudCBidXR0b25OdW1iZXJdOwotICAgICAgICAgICAgICAgIGNsaWNrQ291bnQg
PSBbY3VycmVudEV2ZW50IGNsaWNrQ291bnRdOwotICAgICAgICAgICAgICAgIGV2ZW50VHlwZSA9
IE5QQ29jb2FFdmVudE1vdXNlRG93bjsKLSAgICAgICAgICAgICAgICAvLyBUaGUgcGx1Z2luIG5l
ZWRzIGZvY3VzIHRvIHJlY2VpdmUga2V5Ym9hcmQgZXZlbnRzCi0gICAgICAgICAgICAgICAgaWYg
KFBhZ2UqIHBhZ2UgPSBtX3BhcmVudEZyYW1lLT5wYWdlKCkpCi0gICAgICAgICAgICAgICAgICAg
IHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5zZXRGb2N1c2VkRnJhbWUobV9wYXJlbnRGcmFtZSk7
Ci0gICAgICAgICAgICAgICAgbV9wYXJlbnRGcmFtZS0+ZG9jdW1lbnQoKS0+c2V0Rm9jdXNlZE5v
ZGUobV9lbGVtZW50KTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAK
LSAgICAgICAgICAgIGNhc2UgTlNMZWZ0TW91c2VVcDoKLSAgICAgICAgICAgIGNhc2UgTlNSaWdo
dE1vdXNlVXA6Ci0gICAgICAgICAgICBjYXNlIE5TT3RoZXJNb3VzZVVwOgotICAgICAgICAgICAg
ICAgIGJ1dHRvbk51bWJlciA9IFtjdXJyZW50RXZlbnQgYnV0dG9uTnVtYmVyXTsKLSAgICAgICAg
ICAgICAgICBjbGlja0NvdW50ID0gW2N1cnJlbnRFdmVudCBjbGlja0NvdW50XTsKLSAgICAgICAg
ICAgICAgICBldmVudFR5cGUgPSBOUENvY29hRXZlbnRNb3VzZVVwOwotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgY2FzZSBOU01vdXNlTW92ZWQ6
Ci0gICAgICAgICAgICAgICAgZXZlbnRUeXBlID0gTlBDb2NvYUV2ZW50TW91c2VNb3ZlZDsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNhc2Ug
TlNMZWZ0TW91c2VEcmFnZ2VkOgotICAgICAgICAgICAgY2FzZSBOU1JpZ2h0TW91c2VEcmFnZ2Vk
OgotICAgICAgICAgICAgY2FzZSBOU090aGVyTW91c2VEcmFnZ2VkOgotICAgICAgICAgICAgICAg
IGJ1dHRvbk51bWJlciA9IFtjdXJyZW50RXZlbnQgYnV0dG9uTnVtYmVyXTsKLSAgICAgICAgICAg
ICAgICBldmVudFR5cGUgPSBOUENvY29hRXZlbnRNb3VzZURyYWdnZWQ7Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBjYXNlIE5TTW91c2VFbnRl
cmVkOgotICAgICAgICAgICAgICAgIGV2ZW50VHlwZSA9IE5QQ29jb2FFdmVudE1vdXNlRW50ZXJl
ZDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
IGNhc2UgTlNNb3VzZUV4aXRlZDoKLSAgICAgICAgICAgICAgICBldmVudFR5cGUgPSBOUENvY29h
RXZlbnRNb3VzZUV4aXRlZDsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBOUENvY29hRXZlbnQgY29jb2FF
dmVudDsKLSAgICAgICAgaW5pdGlhbGl6ZU5QQ29jb2FFdmVudCgmY29jb2FFdmVudCk7Ci0gICAg
ICAgIAotICAgICAgICBjb2NvYUV2ZW50LnR5cGUgPSBldmVudFR5cGU7Ci0gICAgICAgIGlmICgh
KE5QQ29jb2FFdmVudE1vdXNlRW50ZXJlZCA9PSBldmVudFR5cGUgfHwgTlBDb2NvYUV2ZW50TW91
c2VFeGl0ZWQgPT0gZXZlbnRUeXBlKSkgewotICAgICAgICAgICAgY29jb2FFdmVudC5kYXRhLm1v
dXNlLmJ1dHRvbk51bWJlciA9IGJ1dHRvbk51bWJlcjsKLSAgICAgICAgICAgIGNvY29hRXZlbnQu
ZGF0YS5tb3VzZS5jbGlja0NvdW50ID0gY2xpY2tDb3VudDsKLSAgICAgICAgfQotICAgICAgICAK
LSAgICAgICAgY29jb2FFdmVudC5kYXRhLm1vdXNlLnBsdWdpblggPSBldmVudC0+bGF5ZXJYKCkg
LSBtX25wV2luZG93LnggKyBtX3dpbmRvd1JlY3QueCgpIC0gbV9lbGVtZW50LT5vZmZzZXRMZWZ0
KCk7Ci0gICAgICAgIGNvY29hRXZlbnQuZGF0YS5tb3VzZS5wbHVnaW5ZID0gZXZlbnQtPmxheWVy
WSgpIC0gbV9ucFdpbmRvdy55ICsgbV93aW5kb3dSZWN0LnkoKSAtIG1fZWxlbWVudC0+b2Zmc2V0
VG9wKCk7Ci0gICAgICAgIGNvY29hRXZlbnQuZGF0YS5tb3VzZS5kZWx0YVggPSBbY3VycmVudEV2
ZW50IGRlbHRhWF07Ci0gICAgICAgIGNvY29hRXZlbnQuZGF0YS5tb3VzZS5kZWx0YVkgPSBbY3Vy
cmVudEV2ZW50IGRlbHRhWV07Ci0gICAgICAgIGNvY29hRXZlbnQuZGF0YS5tb3VzZS5kZWx0YVog
PSBbY3VycmVudEV2ZW50IGRlbHRhWl07Ci0gICAgICAgIGNvY29hRXZlbnQuZGF0YS5tb3VzZS5t
b2RpZmllckZsYWdzID0gZ2V0TW9kaWZpZXJzKGV2ZW50KTsKLSAgICAgICAgCi0gICAgICAgIGlu
dDE2X3QgcmVzcG9uc2UgPSBkaXNwYXRjaE5QQ29jb2FFdmVudChjb2NvYUV2ZW50KTsKLSAgICAg
ICAgaWYocmVzcG9uc2UgPSBrTlBFdmVudE5vdEhhbmRsZWQpIHsKLSAgICAgICAgICAgIExPRyhF
dmVudHMsICJQbHVnaW5WaWV3OjpoYW5kbGVNb3VzZUV2ZW50KCk6IE1vdXNlIGV2ZW50IHR5cGUg
JWQgYXQgJWQsJWQgbm90IGFjY2VwdGVkIiwgY29jb2FFdmVudC50eXBlCi0gICAgICAgICAgICAg
ICAgY29jb2FFdmVudC5kYXRhLm1vdXNlLngsIGNvY29hRXZlbnQuZGF0YS5tb3VzZS55KTsKLSAg
ICAgICAgfQotICAgICAgICAKLSAgICAgICAgLy8gU2FmYXJpIHBvbGljeSBpcyB0byByZXR1cm4g
dHJ1ZSBmb3IgYWxsIG1vdXNlIGV2ZW50cywgYmVjYXVzZSBzb21lIHBsdWdpbnMKLSAgICAgICAg
Ly8gcmV0dXJuIGZhbHNlIGV2ZW4gaWYgdGhleSBoYXZlIGhhbmRsZWQgdGhlIGV2ZW50LgotICAg
ICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICB9CisKKyAgICBOUENvY29hRXZl
bnQgY29jb2FFdmVudDsKKyAgICBpbml0aWFsaXplTlBDb2NvYUV2ZW50KCZjb2NvYUV2ZW50KTsK
KworICAgIGNvY29hRXZlbnQudHlwZSA9IGV2ZW50VHlwZTsKKyAgICBpZiAoIShOUENvY29hRXZl
bnRNb3VzZUVudGVyZWQgPT0gZXZlbnRUeXBlIHx8IE5QQ29jb2FFdmVudE1vdXNlRXhpdGVkID09
IGV2ZW50VHlwZSkpIHsKKyAgICAgICAgY29jb2FFdmVudC5kYXRhLm1vdXNlLmJ1dHRvbk51bWJl
ciA9IGJ1dHRvbk51bWJlcjsKKyAgICAgICAgY29jb2FFdmVudC5kYXRhLm1vdXNlLmNsaWNrQ291
bnQgPSBjbGlja0NvdW50OworICAgIH0KKworICAgIGNvY29hRXZlbnQuZGF0YS5tb3VzZS5wbHVn
aW5YID0gZXZlbnQtPmxheWVyWCgpIC0gbV9ucFdpbmRvdy54ICsgbV93aW5kb3dSZWN0LngoKSAt
IG1fZWxlbWVudC0+b2Zmc2V0TGVmdCgpOworICAgIGNvY29hRXZlbnQuZGF0YS5tb3VzZS5wbHVn
aW5ZID0gZXZlbnQtPmxheWVyWSgpIC0gbV9ucFdpbmRvdy55ICsgbV93aW5kb3dSZWN0LnkoKSAt
IG1fZWxlbWVudC0+b2Zmc2V0VG9wKCk7CisgICAgY29jb2FFdmVudC5kYXRhLm1vdXNlLmRlbHRh
WCA9IFtjdXJyZW50RXZlbnQgZGVsdGFYXTsKKyAgICBjb2NvYUV2ZW50LmRhdGEubW91c2UuZGVs
dGFZID0gW2N1cnJlbnRFdmVudCBkZWx0YVldOworICAgIGNvY29hRXZlbnQuZGF0YS5tb3VzZS5k
ZWx0YVogPSBbY3VycmVudEV2ZW50IGRlbHRhWl07CisgICAgY29jb2FFdmVudC5kYXRhLm1vdXNl
Lm1vZGlmaWVyRmxhZ3MgPSBnZXRNb2RpZmllcnMoZXZlbnQpOworCisgICAgaW50MTZfdCByZXNw
b25zZSA9IGRpc3BhdGNoTlBDb2NvYUV2ZW50KGNvY29hRXZlbnQpOworICAgIGlmKHJlc3BvbnNl
ID09IGtOUEV2ZW50Tm90SGFuZGxlZCkgeworICAgICAgICBMT0coRXZlbnRzLCAiUGx1Z2luVmll
dzo6aGFuZGxlTW91c2VFdmVudCgpOiBNb3VzZSBldmVudCB0eXBlICVkIGF0ICVkLCVkIG5vdCBh
Y2NlcHRlZCIsIGNvY29hRXZlbnQudHlwZSwKKyAgICAgICAgICAgIGNvY29hRXZlbnQuZGF0YS5t
b3VzZS5wbHVnaW5YLCBjb2NvYUV2ZW50LmRhdGEubW91c2UucGx1Z2luWSk7CisgICAgfQorCisg
ICAgLy8gU2FmYXJpIHBvbGljeSBpcyB0byByZXR1cm4gdHJ1ZSBmb3IgYWxsIG1vdXNlIGV2ZW50
cywgYmVjYXVzZSBzb21lIHBsdWdpbnMKKyAgICAvLyByZXR1cm4gZmFsc2UgZXZlbiBpZiB0aGV5
IGhhdmUgaGFuZGxlZCB0aGUgZXZlbnQuCisgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7
CiB9CiAgICAgCiB2b2lkIFBsdWdpblZpZXc6OmhhbmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9hcmRF
dmVudCogZXZlbnQpCkBAIC04MTcsMjI2ICs2NDIsNzQgQEAgdm9pZCBQbHVnaW5WaWV3OjpoYW5k
bGVLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogICAgIGlmICghbV9pc1N0YXJ0
ZWQpCiAgICAgICAgIHJldHVybjsKICAgICBMT0coUGx1Z2lucywgIlBsdWdpblZpZXc6OmhhbmRs
ZUtleWJvYXJkRXZlbnQoKSAtLS0tLS0tLS0tLS0tLS0tLSAiKTsKLSAgICAKKwogICAgIExPRyhQ
bHVnaW5zLCAiUFY6OmhLRSgpOiBLRS5rZXlDb2RlOiAweCUwMlgsIEtFLmNoYXJDb2RlOiAlZCIs
CiAgICAgICAgIGV2ZW50LT5rZXlDb2RlKCksIGV2ZW50LT5jaGFyQ29kZSgpKTsKLSAgICAKLSNp
Zm5kZWYgTlBfTk9fQ0FSQk9OCi0gICAgaWYgKG1fZXZlbnRNb2RlbCAhPSBOUEV2ZW50TW9kZWxD
b2NvYSkgewotICAgICAgICBFdmVudFJlY29yZCByZWNvcmQ7Ci0gICAgICAgIGlmIChldmVudC0+
dHlwZSgpID09IGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQpIHsKLSAgICAgICAgICAgIC8vIFRo
aXMgZXZlbnQgaXMgdGhlIHJlc3VsdCBvZiBhIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6S2V5RG93
biB3aGljaAotICAgICAgICAgICAgLy8gd2FzIGRpc2FtYmlndWF0ZWQgaW50byBhIFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudDo6UmF3S2V5RG93bi4gU2luY2UKLSAgICAgICAgICAgIC8vIHdlIGRvbid0
IGhhdmUgYWNjZXNzIHRvIHRoZSB0ZXh0IGhlcmUsIHdlIHJldHVybiwgYW5kIHdhaXQgZm9yIHRo
ZQotICAgICAgICAgICAgLy8gY29ycmVzcG9uZGluZyBldmVudCBiYXNlZCBvbiBQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQ6OkNoYXIuCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0gZWxzZSBp
ZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkua2V5cHJlc3NFdmVudCkgewotICAgICAg
ICAgICAgLy8gV2hpY2ggd291bGQgYmUgdGhpcyBvbmUuIFRoaXMgZXZlbnQgd2FzIGRpc2FtYmln
dWF0ZWQgZnJvbSB0aGUgc2FtZQotICAgICAgICAgICAgLy8gUGxhdGZvcm1LZXlib2FyZEV2ZW50
OjpLZXlEb3duLCBidXQgdG8gYSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkNoYXIsCi0gICAgICAg
ICAgICAvLyB3aGljaCByZXRhaW5zIHRoZSB0ZXh0IGZyb20gdGhlIG9yaWdpbmFsIGV2ZW50LiBT
bywgd2UgY2FuIHNhZmVseSBwYXNzCi0gICAgICAgICAgICAvLyBvbiB0aGUgZXZlbnQgYXMgYSBr
ZXktZG93biBldmVudCB0byB0aGUgcGx1Z2luLgotICAgICAgICAgICAgcmVjb3JkLndoYXQgPSBr
ZXlEb3duOwotICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygp
LmtleXVwRXZlbnQpIHsKLSAgICAgICAgICAgIC8vIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6S2V5
VXAgZXZlbnRzIGFsd2F5cyBoYXZlIHRoZSB0ZXh0LCBzbyBub3RoaW5nCi0gICAgICAgICAgICAv
LyBmYW5jeSBoZXJlLgotICAgICAgICAgICAgcmVjb3JkLndoYXQgPSBrZXlVcDsKLSAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAg
ICAgY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50KiBwbGF0Zm9ybUV2ZW50ID0gZXZlbnQtPmtl
eUV2ZW50KCk7Ci0gICAgICAgIGludCBrZXlDb2RlID0gcGxhdGZvcm1FdmVudC0+bmF0aXZlVmly
dHVhbEtleUNvZGUoKTsKLSAgICAgICAgCi0gICAgICAgIGNvbnN0IFN0cmluZyB0ZXh0ID0gcGxh
dGZvcm1FdmVudC0+dGV4dCgpOwotICAgICAgICBpZiAodGV4dC5sZW5ndGgoKSA8IDEpIHsKLSAg
ICAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBXVEY6OlJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gY2ZUZXh0ID0gYWRvcHRDRih0ZXh0LmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICAKLSAg
ICAgICAgTE9HKFBsdWdpbnMsICJQVjo6aEtFKCk6IFBLRS50ZXh0OiAlcywgUEtFLnVubW9kaWZp
ZWRUZXh0OiAlcywgUEtFLmtleUlkZW50aWZpZXI6ICVzIiwKLSAgICAgICAgICAgIHRleHQuYXNj
aWkoKS5kYXRhKCksIHBsYXRmb3JtRXZlbnQtPnVubW9kaWZpZWRUZXh0KCkuYXNjaWkoKS5kYXRh
KCksCi0gICAgICAgICAgICBwbGF0Zm9ybUV2ZW50LT5rZXlJZGVudGlmaWVyKCkuYXNjaWkoKS5k
YXRhKCkpOwotICAgICAgICAKLSAgICAgICAgY2hhciBjaGFyQ29kZXNbMl0gPSB7IDAsIDAgfTsK
LSAgICAgICAgaWYgKCFDRlN0cmluZ0dldENTdHJpbmcoY2ZUZXh0LmdldCgpLCBjaGFyQ29kZXMs
IDIsIENGU3RyaW5nR2V0U3lzdGVtRW5jb2RpbmcoKSkpIHsKLSAgICAgICAgICAgIExPR19FUlJP
UigiQ291bGQgbm90IHJlc29sdmUgY2hhcmFjdGVyIGNvZGUgdXNpbmcgc3lzdGVtIGVuY29kaW5n
LiIpOwotICAgICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHJlY29yZC53aGVyZSA9IGds
b2JhbE1vdXNlUG9zRm9yUGx1Z2luKCk7Ci0gICAgICAgIHJlY29yZC5tb2RpZmllcnMgPSBtb2Rp
ZmllcnNGb3JFdmVudChldmVudCk7Ci0gICAgICAgIHJlY29yZC5tZXNzYWdlID0gKChrZXlDb2Rl
ICYgMHhGRikgPDwgOCkgfCAoY2hhckNvZGVzWzBdICYgMHhGRik7Ci0gICAgICAgIHJlY29yZC53
aGVuID0gVGlja0NvdW50KCk7Ci0gICAgICAgIAotICAgICAgICBMT0coUGx1Z2lucywgIlBWOjpo
S0UoKTogcmVjb3JkLm1vZGlmaWVyczogJWQiLCByZWNvcmQubW9kaWZpZXJzKTsKLSAgICAgICAg
Ci0jaWYgUExBVEZPUk0oUVQpCi0gICAgICAgIExPRyhQbHVnaW5zLCAiUFY6OmhLRSgpOiBQS0Uu
cXRFdmVudCgpLT5uYXRpdmVWaXJ0dWFsS2V5OiAweCUwMlgsIGNoYXJDb2RlOiAlZCIsCi0gICAg
ICAgICAgICBrZXlDb2RlLCBpbnQodWNoYXIoY2hhckNvZGVzWzBdKSkpOwotI2VuZGlmCi0gICAg
ICAgIAotICAgICAgICBpZiAoIWRpc3BhdGNoTlBFdmVudChyZWNvcmQpKQotICAgICAgICAgICAg
TE9HKEV2ZW50cywgIlBsdWdpblZpZXc6OmhhbmRsZUtleWJvYXJkRXZlbnQoKTogS2V5Ym9hcmQg
ZXZlbnQgdHlwZSAlZCBub3QgYWNjZXB0ZWQiLCByZWNvcmQud2hhdCk7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwotICAgIH0gZWxzZQotI2Vu
ZGlmCi0gICAgewotICAgICAgICBOU0V2ZW50ICpjdXJyZW50RXZlbnQgPSBbTlNBcHAgY3VycmVu
dEV2ZW50XTsKLSAgICAgICAgTlBDb2NvYUV2ZW50VHlwZSBldmVudFR5cGU7Ci0gICAgICAgIE5T
RXZlbnRUeXBlIHR5cGUgPSBbY3VycmVudEV2ZW50IHR5cGVdOwotICAgICAgICAKLSAgICAgICAg
c3dpdGNoICh0eXBlKSB7Ci0gICAgICAgICAgICBjYXNlIE5TS2V5RG93bjoKLSAgICAgICAgICAg
ICAgICBldmVudFR5cGUgPSBOUENvY29hRXZlbnRLZXlEb3duOwotICAgICAgICAgICAgICAgIG1f
a2V5RG93blNlbnQgPSB0cnVlOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
Y2FzZSBOU0tleVVwOgotICAgICAgICAgICAgICAgIGlmIChtX2Rpc3JlZ2FyZEtleVVwQ291bnRl
ciA+IDApIHsKLSAgICAgICAgICAgICAgICAgICAgbV9kaXNyZWdhcmRLZXlVcENvdW50ZXItLTsK
LSAgICAgICAgICAgICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7Ci0gICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ZXZlbnRUeXBlID0gTlBDb2NvYUV2ZW50S2V5VXA7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICBjYXNlIE5TRmxhZ3NDaGFuZ2VkOgotICAgICAgICAgICAgICAgIGV2ZW50VHlw
ZSA9IE5QQ29jb2FFdmVudEZsYWdzQ2hhbmdlZDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0g
ICAgICAgIAotICAgICAgICBOUENvY29hRXZlbnQgY29jb2FFdmVudDsKLSAgICAgICAgaW5pdGlh
bGl6ZU5QQ29jb2FFdmVudCgmY29jb2FFdmVudCk7Ci0gICAgICAgIGNvY29hRXZlbnQudHlwZSA9
IGV2ZW50VHlwZTsKLSAgICAgICAgaWYgKGV2ZW50VHlwZSAhPSBOUENvY29hRXZlbnRGbGFnc0No
YW5nZWQpIHsKLSAgICAgICAgICAgIE5TU3RyaW5nICpjaGFyYWN0ZXJzID0gW2N1cnJlbnRFdmVu
dCBjaGFyYWN0ZXJzXTsKLSAgICAgICAgICAgIE5TU3RyaW5nICpjaGFyYWN0ZXJzSWdub3JpbmdN
b2RpZmllcnMgPSBbY3VycmVudEV2ZW50IGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyc107Ci0g
ICAgICAgICAgICBjb2NvYUV2ZW50LmRhdGEua2V5LmNoYXJhY3RlcnMgPSByZWludGVycHJldF9j
YXN0PE5QTlNTdHJpbmcqPihjaGFyYWN0ZXJzKTsKLSAgICAgICAgICAgIGNvY29hRXZlbnQuZGF0
YS5rZXkuY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzID0gcmVpbnRlcnByZXRfY2FzdDxOUE5T
U3RyaW5nKj4oY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzKTsKLSAgICAgICAgICAgIGNvY29h
RXZlbnQuZGF0YS5rZXkuaXNBUmVwZWF0ID0gW2N1cnJlbnRFdmVudCBpc0FSZXBlYXRdOwotICAg
ICAgICAgICAgY29jb2FFdmVudC5kYXRhLmtleS5rZXlDb2RlID0gW2N1cnJlbnRFdmVudCBrZXlD
b2RlXTsKLSAgICAgICAgICAgIGNvY29hRXZlbnQuZGF0YS5rZXkubW9kaWZpZXJGbGFncyA9IGdl
dE1vZGlmaWVycyhldmVudCk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGludDE2X3Qg
cmVzcG9uc2UgPSBkaXNwYXRjaE5QQ29jb2FFdmVudChjb2NvYUV2ZW50KTsKLSAgICAgICAgaWYo
cmVzcG9uc2UgPT0ga05QRXZlbnROb3RIYW5kbGVkKSB7Ci0gICAgICAgICAgICBMT0coRXZlbnRz
LCAiUGx1Z2luVmlldzo6aGFuZGxlS2V5Ym9hcmRFdmVudCgpOiBLZXlib2FyZCBldmVudCB0eXBl
ICVkIG5vdCBhY2NlcHRlZCIsIGNvY29hRXZlbnQudHlwZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAo
cmVzcG9uc2UgPT0ga05QRXZlbnRTdGFydElNRSkgewotICAgICAgICAgICAgLy8gaW5jcmVtZW50
IGNvdW50ZXIgYW5kIHJlc2VuZCBhcyBhIHRleHQgaW5wdXQKLSAgICAgICAgICAgIG1fZGlzcmVn
YXJkS2V5VXBDb3VudGVyKys7Ci0gICAgICAgICAgICBOUENvY29hRXZlbnQgdGV4dEV2ZW50Owot
ICAgICAgICAgICAgaW5pdGlhbGl6ZU5QQ29jb2FFdmVudCgmdGV4dEV2ZW50KTsKLSAgICAgICAg
ICAgIHRleHRFdmVudC50eXBlID0gTlBDb2NvYUV2ZW50VGV4dElucHV0OwotICAgICAgICAgICAg
dGV4dEV2ZW50LmRhdGEudGV4dC50ZXh0ID0gcmVpbnRlcnByZXRfY2FzdDxOUE5TU3RyaW5nKj4o
W2N1cnJlbnRFdmVudCBjaGFyYWN0ZXJzXSk7Ci0gICAgICAgICAgICByZXNwb25zZSA9IGRpc3Bh
dGNoTlBDb2NvYUV2ZW50KHRleHRFdmVudCk7Ci0gICAgICAgICAgICBpZihyZXNwb25zZSA9PSBr
TlBFdmVudE5vdEhhbmRsZWQpCi0gICAgICAgICAgICAgICAgTE9HKEV2ZW50cywgIlBsdWdpblZp
ZXc6OmhhbmRsZUtleWJvYXJkRXZlbnQoKTogS2V5Ym9hcmQgZXZlbnQgdHlwZSAlZCBub3QgYWNj
ZXB0ZWQiLCBjb2NvYUV2ZW50LnR5cGUpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICAv
LyBBbGwga2V5Ym9hcmQgZXZlbnRzIG5lZWQgdG8gYmUgaGFuZGxlZCB0byBwcmV2ZW50IHRoZW0g
ZmFsbGluZwotICAgICAgICAvLyB0aHJvdWdoIHRvIHRoZSBwYWdlLCB1bmxlc3MgdGhleSBhcmUg
TWV0YSBrZXkgZXZlbnRzLCBpbiB3aGljaAotICAgICAgICAvLyBjYXNlIHRoZXkgYXJlLCB1bmxl
c3MgdGhleSBhcmUgQ21kK2EuIEZyb20gV2ViS2l0MiwgcG9zc2libHkKLSAgICAgICAgLy8gbm90
IHRoZSBtb3N0IGVsZWdhbnQgcGllY2Ugb2Yga2V5IGhhbmRsaW5nIGNvZGUuLi4uLgotICAgICAg
ICBpZiAoZXZlbnQtPm1ldGFLZXkoKSkgewotICAgICAgICAgICAgaWYgKGNvY29hRXZlbnQuZGF0
YS5rZXkua2V5Q29kZSA9PSAwKQorCisgICAgTlNFdmVudCAqY3VycmVudEV2ZW50ID0gW05TQXBw
IGN1cnJlbnRFdmVudF07CisgICAgTlBDb2NvYUV2ZW50VHlwZSBldmVudFR5cGU7CisgICAgTlNF
dmVudFR5cGUgdHlwZSA9IFtjdXJyZW50RXZlbnQgdHlwZV07CisKKyAgICBzd2l0Y2ggKHR5cGUp
IHsKKyAgICAgICAgY2FzZSBOU0tleURvd246CisgICAgICAgICAgICBldmVudFR5cGUgPSBOUENv
Y29hRXZlbnRLZXlEb3duOworICAgICAgICAgICAgbV9rZXlEb3duU2VudCA9IHRydWU7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBOU0tleVVwOgorICAgICAgICAgICAgaWYgKG1f
ZGlzcmVnYXJkS2V5VXBDb3VudGVyID4gMCkgeworICAgICAgICAgICAgICAgIG1fZGlzcmVnYXJk
S2V5VXBDb3VudGVyLS07CiAgICAgICAgICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVk
KCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBlbHNlIGlnbm9yZSwgaXQncyBh
IE1ldGEgS2V5IGV2ZW50IGZvciB0aGUgYnJvd3Nlci4KLSAgICAgICAgICAgIGV2ZW50LT5zZXRE
ZWZhdWx0SGFuZGxlZCgpOwotICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgZXZlbnRUeXBlID0gTlBDb2NvYUV2ZW50S2V5VXA7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBOU0ZsYWdzQ2hhbmdlZDoKKyAgICAgICAg
ICAgIGV2ZW50VHlwZSA9IE5QQ29jb2FFdmVudEZsYWdzQ2hhbmdlZDsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KLX0KLSAg
ICAKLSNpZm5kZWYgTlBfTk9fQ0FSQk9OCi12b2lkIFBsdWdpblZpZXc6Om51bGxFdmVudFRpbWVy
RmlyZWQoVGltZXI8UGx1Z2luVmlldz4qKQotewotICAgIEV2ZW50UmVjb3JkIHJlY29yZDsKLQot
ICAgIHJlY29yZC53aGF0ID0gbnVsbEV2ZW50OwotICAgIHJlY29yZC5tZXNzYWdlID0gMDsKLSAg
ICByZWNvcmQud2hlbiA9IFRpY2tDb3VudCgpOwotICAgIHJlY29yZC53aGVyZSA9IG1fbGFzdE1v
dXNlUG9zOwotICAgIHJlY29yZC5tb2RpZmllcnMgPSBHZXRDdXJyZW50S2V5TW9kaWZpZXJzKCk7
Ci0gICAgaWYgKCFCdXR0b24oKSkKLSAgICAgICAgcmVjb3JkLm1vZGlmaWVycyB8PSBidG5TdGF0
ZTsKLQotICAgIGlmICghZGlzcGF0Y2hOUEV2ZW50KHJlY29yZCkpCi0gICAgICAgIExPRyhFdmVu
dHMsICJQbHVnaW5WaWV3OjpudWxsRXZlbnRUaW1lckZpcmVkKCk6IE51bGwgZXZlbnQgbm90IGFj
Y2VwdGVkIik7Ci19Ci0jZW5kaWYKLQotI2lmbmRlZiBOUF9OT19DQVJCT04KLXN0YXRpYyBpbnQg
bW9kaWZpZXJzRm9yRXZlbnQoVUlFdmVudFdpdGhLZXlTdGF0ZSogZXZlbnQpCi17Ci0gICAgaW50
IG1vZGlmaWVycyA9IDA7Ci0KLSAgICBpZiAoZXZlbnQtPmN0cmxLZXkoKSkKLSAgICAgICAgbW9k
aWZpZXJzIHw9IGNvbnRyb2xLZXk7Ci0KLSAgICBpZiAoZXZlbnQtPmFsdEtleSgpKQotICAgICAg
ICBtb2RpZmllcnMgfD0gb3B0aW9uS2V5OwotCi0gICAgaWYgKGV2ZW50LT5tZXRhS2V5KCkpCi0g
ICAgICAgIG1vZGlmaWVycyB8PSBjbWRLZXk7Ci0KLSAgICBpZiAoZXZlbnQtPnNoaWZ0S2V5KCkp
Ci0gICAgICAgIG1vZGlmaWVycyB8PSBzaGlmdEtleTsKLQotICAgICByZXR1cm4gbW9kaWZpZXJz
OwotfQotI2VuZGlmCiAKLSNpZm5kZWYgTlBfTk9fQ0FSQk9OCi1Qb2ludCBQbHVnaW5WaWV3Ojpn
bG9iYWxNb3VzZVBvc0ZvclBsdWdpbigpIGNvbnN0Ci17Ci0gICAgUG9pbnQgcG9zOwotICAgIEdl
dEdsb2JhbE1vdXNlKCZwb3MpOwotCi0gICAgcmV0dXJuIHBvczsKLX0KLSNlbmRpZgotCi0jaWZu
ZGVmIE5QX05PX0NBUkJPTgotUG9pbnQgUGx1Z2luVmlldzo6bW91c2VQb3NGb3JQbHVnaW4oTW91
c2VFdmVudCogZXZlbnQpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKGV2ZW50KTsKLSAgICBpZiAocGxh
dGZvcm1QbHVnaW5XaWRnZXQoKSkKLSAgICAgICAgcmV0dXJuIGdsb2JhbE1vdXNlUG9zRm9yUGx1
Z2luKCk7Ci0KLSAgICBpZiAoZXZlbnQtPmJ1dHRvbigpID09IDIpIHsKLSAgICAgICAgLy8gYWx3
YXlzIHBhc3MgdGhlIGdsb2JhbCBwb3NpdGlvbiBmb3IgcmlnaHQtY2xpY2sgc2luY2UgRmxhc2gg
dXNlcyBpdCB0byBwb3NpdGlvbiB0aGUgY29udGV4dCBtZW51Ci0gICAgICAgIHJldHVybiBnbG9i
YWxNb3VzZVBvc0ZvclBsdWdpbigpOworICAgIE5QQ29jb2FFdmVudCBjb2NvYUV2ZW50OworICAg
IGluaXRpYWxpemVOUENvY29hRXZlbnQoJmNvY29hRXZlbnQpOworICAgIGNvY29hRXZlbnQudHlw
ZSA9IGV2ZW50VHlwZTsKKyAgICBpZiAoZXZlbnRUeXBlICE9IE5QQ29jb2FFdmVudEZsYWdzQ2hh
bmdlZCkgeworICAgICAgICBOU1N0cmluZyAqY2hhcmFjdGVycyA9IFtjdXJyZW50RXZlbnQgY2hh
cmFjdGVyc107CisgICAgICAgIE5TU3RyaW5nICpjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMg
PSBbY3VycmVudEV2ZW50IGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyc107CisgICAgICAgIGNv
Y29hRXZlbnQuZGF0YS5rZXkuY2hhcmFjdGVycyA9IHJlaW50ZXJwcmV0X2Nhc3Q8TlBOU1N0cmlu
Zyo+KGNoYXJhY3RlcnMpOworICAgICAgICBjb2NvYUV2ZW50LmRhdGEua2V5LmNoYXJhY3RlcnNJ
Z25vcmluZ01vZGlmaWVycyA9IHJlaW50ZXJwcmV0X2Nhc3Q8TlBOU1N0cmluZyo+KGNoYXJhY3Rl
cnNJZ25vcmluZ01vZGlmaWVycyk7CisgICAgICAgIGNvY29hRXZlbnQuZGF0YS5rZXkuaXNBUmVw
ZWF0ID0gW2N1cnJlbnRFdmVudCBpc0FSZXBlYXRdOworICAgICAgICBjb2NvYUV2ZW50LmRhdGEu
a2V5LmtleUNvZGUgPSBbY3VycmVudEV2ZW50IGtleUNvZGVdOworICAgICAgICBjb2NvYUV2ZW50
LmRhdGEua2V5Lm1vZGlmaWVyRmxhZ3MgPSBnZXRNb2RpZmllcnMoZXZlbnQpOwogICAgIH0KIAot
ICAgIFBvaW50IHBvczsKLSAgICBJbnRQb2ludCBwb3N0Wm9vbVBvcyA9IHJvdW5kZWRJbnRQb2lu
dChtX2VsZW1lbnQtPnJlbmRlcmVyKCktPmFic29sdXRlVG9Mb2NhbChldmVudC0+YWJzb2x1dGVM
b2NhdGlvbigpKSk7Ci0gICAgcG9zLmggPSBwb3N0Wm9vbVBvcy54KCkgKyBtX3dpbmRvd1JlY3Qu
eCgpOwotICAgIC8vIFRoZSBudW1iZXIgMjIgaXMgdGhlIGhlaWdodCBvZiB0aGUgdGl0bGUgYmFy
LiBBcyB0byB3aHkgaXQgZmlndXJlcyBpbiB0aGUgY2FsY3VsYXRpb24gYmVsb3cKLSAgICAvLyBp
cyBsZWZ0IGFzIGFuIGV4ZXJjaXNlIHRvIHRoZSByZWFkZXIgOi0pCi0gICAgcG9zLnYgPSBwb3N0
Wm9vbVBvcy55KCkgKyBtX3dpbmRvd1JlY3QueSgpIC0gMjI7Ci0gICAgcmV0dXJuIHBvczsKLX0K
LSNlbmRpZgotCi0jaWZuZGVmIE5QX05PX0NBUkJPTgotYm9vbCBQbHVnaW5WaWV3OjpkaXNwYXRj
aE5QRXZlbnQoTlBFdmVudCYgZXZlbnQpCi17Ci0gICAgUGx1Z2luVmlldzo6c2V0Q3VycmVudFBs
dWdpblZpZXcodGhpcyk7Ci0gICAgSlNDOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9j
a3MoSlNET01XaW5kb3dCYXNlOjpjb21tb25WTSgpKTsKLSAgICBzZXRDYWxsaW5nUGx1Z2luKHRy
dWUpOwotCi0gICAgYm9vbCBhY2NlcHRlZCA9IG1fcGx1Z2luLT5wbHVnaW5GdW5jcygpLT5ldmVu
dChtX2luc3RhbmNlLCAmZXZlbnQpOworICAgIGludDE2X3QgcmVzcG9uc2UgPSBkaXNwYXRjaE5Q
Q29jb2FFdmVudChjb2NvYUV2ZW50KTsKKyAgICBpZihyZXNwb25zZSA9PSBrTlBFdmVudE5vdEhh
bmRsZWQpIHsKKyAgICAgICAgTE9HKEV2ZW50cywgIlBsdWdpblZpZXc6OmhhbmRsZUtleWJvYXJk
RXZlbnQoKTogS2V5Ym9hcmQgZXZlbnQgdHlwZSAlZCBub3QgYWNjZXB0ZWQiLCBjb2NvYUV2ZW50
LnR5cGUpOworICAgIH0gZWxzZSBpZiAocmVzcG9uc2UgPT0ga05QRXZlbnRTdGFydElNRSkgewor
ICAgICAgICAvLyBpbmNyZW1lbnQgY291bnRlciBhbmQgcmVzZW5kIGFzIGEgdGV4dCBpbnB1dAor
ICAgICAgICBtX2Rpc3JlZ2FyZEtleVVwQ291bnRlcisrOworICAgICAgICBOUENvY29hRXZlbnQg
dGV4dEV2ZW50OworICAgICAgICBpbml0aWFsaXplTlBDb2NvYUV2ZW50KCZ0ZXh0RXZlbnQpOwor
ICAgICAgICB0ZXh0RXZlbnQudHlwZSA9IE5QQ29jb2FFdmVudFRleHRJbnB1dDsKKyAgICAgICAg
dGV4dEV2ZW50LmRhdGEudGV4dC50ZXh0ID0gcmVpbnRlcnByZXRfY2FzdDxOUE5TU3RyaW5nKj4o
W2N1cnJlbnRFdmVudCBjaGFyYWN0ZXJzXSk7CisgICAgICAgIHJlc3BvbnNlID0gZGlzcGF0Y2hO
UENvY29hRXZlbnQodGV4dEV2ZW50KTsKKyAgICAgICAgaWYocmVzcG9uc2UgPT0ga05QRXZlbnRO
b3RIYW5kbGVkKQorICAgICAgICAgICAgTE9HKEV2ZW50cywgIlBsdWdpblZpZXc6OmhhbmRsZUtl
eWJvYXJkRXZlbnQoKTogS2V5Ym9hcmQgZXZlbnQgdHlwZSAlZCBub3QgYWNjZXB0ZWQiLCBjb2Nv
YUV2ZW50LnR5cGUpOworICAgIH0KIAotICAgIHNldENhbGxpbmdQbHVnaW4oZmFsc2UpOwotICAg
IFBsdWdpblZpZXc6OnNldEN1cnJlbnRQbHVnaW5WaWV3KDApOwotICAgIHJldHVybiBhY2NlcHRl
ZDsKKyAgICAvLyBBbGwga2V5Ym9hcmQgZXZlbnRzIG5lZWQgdG8gYmUgaGFuZGxlZCB0byBwcmV2
ZW50IHRoZW0gZmFsbGluZworICAgIC8vIHRocm91Z2ggdG8gdGhlIHBhZ2UsIHVubGVzcyB0aGV5
IGFyZSBNZXRhIGtleSBldmVudHMsIGluIHdoaWNoCisgICAgLy8gY2FzZSB0aGV5IGFyZSwgdW5s
ZXNzIHRoZXkgYXJlIENtZCthLiBGcm9tIFdlYktpdDIsIHBvc3NpYmx5CisgICAgLy8gbm90IHRo
ZSBtb3N0IGVsZWdhbnQgcGllY2Ugb2Yga2V5IGhhbmRsaW5nIGNvZGUuLi4uLgorICAgIGlmIChl
dmVudC0+bWV0YUtleSgpKSB7CisgICAgICAgIGlmIChjb2NvYUV2ZW50LmRhdGEua2V5LmtleUNv
ZGUgPT0gMCkKKyAgICAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOworICAgIH0g
ZWxzZSB7CisgICAgICAgIC8vIGVsc2UgaWdub3JlLCBpdCdzIGEgTWV0YSBLZXkgZXZlbnQgZm9y
IHRoZSBicm93c2VyLgorICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKKyAgICB9
CiB9Ci0jZW5kaWYKLQogCiBpbnQxNl90IFBsdWdpblZpZXc6OmRpc3BhdGNoTlBDb2NvYUV2ZW50
KE5QQ29jb2FFdmVudCYgY29jb2FFdmVudCkKIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>202571</attachid>
            <date>2013-05-22 10:25:04 -0700</date>
            <delta_ts>2013-05-27 05:26:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-116619-20130522192349.patch</filename>
            <type>text/plain</type>
            <size>35664</size>
            <attacher name="Jocelyn Turcotte">jturcotte</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUwMTgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjg2MTAzYTFhMDMwMjhi
NTc5YTg1NmQxMzg4MDRhN2I3NTMyY2Y5Yi4uMWVjNjYwNzhmZGRlNTNjMDRmNDQ4ZmVmZmViZGVh
MTcxMmM1NTBlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEzLTA1LTIyICBKb2Nl
bHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBkaWdpYS5jb20+CisKKyAgICAgICAgW1F0
XVtNYWNdIFJlbW92ZSBDYXJib24gYW5kIFF1aWNrRHJhdyBzdXBwb3J0IGZvciBwbHVnaW5zLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE2NjE5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhleSBhcmUg
b25seSBlbmFibGVkIGZvciAzMmJpdCBidWlsZHMgb2YgUXRXZWJLaXQgYW5kIGFyZSByYXJlbHkg
dGVzdGVkLgorICAgICAgICBPdGhlciBicm93c2VycyBzdXBwb3J0IHRoZW0gdGhyb3VnaCBhIDMy
Yml0IGhvc3QgcHJvY2Vzcy4KKyAgICAgICAgUGx1Z2luVmlld01hYy5tbSBpcyBvbmx5IHVzZWQg
YnkgUXQgc2luY2UgdGhlIFd4IHBvcnQgd2FzIHJlbW92ZWQuCisKKyAgICAgICAgLSBPbmx5IHN1
cHBvcnQgdGhlIENvY29hIGV2ZW50IG1vZGVsCisgICAgICAgIC0gT25seSBzdXBwb3J0IHRoZSBD
b3JlR3JhcGhpY3MgZHJhd2luZyBtb2RlbAorICAgICAgICAtIFJlbW92ZSBhbGwgTlBfTk9fQ0FS
Qk9OIGFuZCBOUF9OT19RVUlDS0RSQVcgYmxvY2tzIGluIFBsdWdpblZpZXdNYWMubW0KKworICAg
ICAgICAqIHBsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5W
aWV3OjpzZXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpQbHVnaW5WaWV3
KToKKyAgICAgICAgKiBwbHVnaW5zL1BsdWdpblZpZXcuaDoKKyAgICAgICAgKiBwbHVnaW5zL21h
Yy9QbHVnaW5WaWV3TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6cGxhdGZv
cm1TdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpwbGF0Zm9ybURlc3Ryb3kp
OgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6cGxhdGZvcm1HZXRWYWx1ZVN0YXRpYyk6
CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpzZXRGb2N1cyk6CisgICAgICAgIChXZWJD
b3JlOjpQbHVnaW5WaWV3OjpzZXROUFdpbmRvd0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OlBsdWdpblZpZXc6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OmhhbmRs
ZVdoZWVsRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6aGFuZGxlTW91c2VF
dmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpoYW5kbGVLZXlib2FyZEV2ZW50
KToKKwogMjAxMy0wNS0xNSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgog
CiAgICAgICAgIEZpeCBhIHRoaW5rby4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdp
bnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuY3Bw
CmluZGV4IDkyYTgzOTA0NDM1NWQ3M2I4OWM4MmNkY2NmMWU2NzJmZTAxN2MwNGYuLjNlNWUzMWZk
ODA4NGMxM2QzMDNkZDg1ZTAwYzk1ZTdmNGU0YTU5MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9Q
bHVnaW5WaWV3LmNwcApAQCAtNjM0LDExICs2MzQsNyBAQCBOUEVycm9yIFBsdWdpblZpZXc6OnNl
dFZhbHVlKE5QUFZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkKiB2YWx1ZSkKICAgICAgICAgTlBEcmF3
aW5nTW9kZWwgbmV3RHJhd2luZ01vZGVsID0gTlBEcmF3aW5nTW9kZWwodWludHB0cl90KHZhbHVl
KSk7CiAgICAgICAgIHN3aXRjaCAobmV3RHJhd2luZ01vZGVsKSB7CiAgICAgICAgIGNhc2UgTlBE
cmF3aW5nTW9kZWxDb3JlR3JhcGhpY3M6Ci0gICAgICAgICAgICBtX2RyYXdpbmdNb2RlbCA9IG5l
d0RyYXdpbmdNb2RlbDsKICAgICAgICAgICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKLSNpZm5k
ZWYgTlBfTk9fUVVJQ0tEUkFXCi0gICAgICAgIGNhc2UgTlBEcmF3aW5nTW9kZWxRdWlja0RyYXc6
Ci0jZW5kaWYKICAgICAgICAgY2FzZSBOUERyYXdpbmdNb2RlbENvcmVBbmltYXRpb246CiAgICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBMT0coUGx1Z2lucywgIlBsdWdpbiBhc2tlZCBmb3Ig
dW5zdXBwb3J0ZWQgZHJhd2luZyBtb2RlbDogJXMiLApAQCAtNjU0LDEzICs2NTAsOCBAQCBOUEVy
cm9yIFBsdWdpblZpZXc6OnNldFZhbHVlKE5QUFZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkKiB2YWx1
ZSkKIAogICAgICAgICBOUEV2ZW50TW9kZWwgbmV3RXZlbnRNb2RlbCA9IE5QRXZlbnRNb2RlbCh1
aW50cHRyX3QodmFsdWUpKTsKICAgICAgICAgc3dpdGNoIChuZXdFdmVudE1vZGVsKSB7Ci0jaWZu
ZGVmIE5QX05PX0NBUkJPTgotICAgICAgICBjYXNlIE5QRXZlbnRNb2RlbENhcmJvbjoKLSNlbmRp
ZgogICAgICAgICBjYXNlIE5QRXZlbnRNb2RlbENvY29hOgotICAgICAgICAgICAgbV9ldmVudE1v
ZGVsID0gbmV3RXZlbnRNb2RlbDsKICAgICAgICAgICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsK
LQogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgTE9HKFBsdWdpbnMsICJQbHVnaW4gYXNr
ZWQgZm9yIHVuc3VwcG9ydGVkIGV2ZW50IG1vZGVsOiAlcyIsCiAgICAgICAgICAgICAgICAgICAg
IHByZXR0eU5hbWVGb3JFdmVudE1vZGVsKG5ld0V2ZW50TW9kZWwpKTsKQEAgLTg0NCwxMCArODM1
LDcgQEAgUGx1Z2luVmlldzo6UGx1Z2luVmlldyhGcmFtZSogcGFyZW50RnJhbWUsIGNvbnN0IElu
dFNpemUmIHNpemUsIFBsdWdpblBhY2thZ2UqIHAKICAgICAsIG1fd2luZG93KDApCiAjZW5kaWYK
ICNpZiBkZWZpbmVkKFhQX01BQ09TWCkKLSAgICAsIG1fZHJhd2luZ01vZGVsKE5QRHJhd2luZ01v
ZGVsKC0xKSkKLSAgICAsIG1fZXZlbnRNb2RlbChOUEV2ZW50TW9kZWwoLTEpKQogICAgICwgbV9j
b250ZXh0UmVmKDApCi0gICAgLCBtX2Zha2VXaW5kb3coMCkKICNlbmRpZgogI2lmIGRlZmluZWQo
WFBfVU5JWCkgJiYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgLCBtX2hhc1BlbmRp
bmdHZW9tZXRyeUNoYW5nZSh0cnVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lu
cy9QbHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuaAppbmRl
eCBiYTNjYzcxYjZjNGUwMzI2Y2I1Y2Y3YmUzZmI3NTg2N2IzNGIzYzY3Li4wMDcyZWYzNTZiMzk5
ZTg2NWQxNjljZTU5OWE2MzVjNDZkNzBmZGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bHVnaW5zL1BsdWdpblZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZp
ZXcuaApAQCAtMzIwLDEwICszMjAsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZv
aWQgbGlmZVN1cHBvcnRUaW1lckZpcmVkKFRpbWVyPFBsdWdpblZpZXc+Kik7CiAgICAgICAgIFRp
bWVyPFBsdWdpblZpZXc+IG1fbGlmZVN1cHBvcnRUaW1lcjsKIAotI2lmbmRlZiBOUF9OT19DQVJC
T04KICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICAgICAgYm9vbCBkaXNwYXRj
aE5QRXZlbnQoTlBFdmVudCYpOwotI2VuZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJ
KQogI2VuZGlmCiAjaWYgZGVmaW5lZChYUF9NQUNPU1gpICYmIEVOQUJMRShORVRTQ0FQRV9QTFVH
SU5fQVBJKQogICAgICAgICBpbnQxNl90IGRpc3BhdGNoTlBDb2NvYUV2ZW50KE5QQ29jb2FFdmVu
dCYpOwpAQCAtNDA4LDIwICs0MDYsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBzZXROUFdp
bmRvd0lmTmVlZGVkKCk7CiAjZWxpZiBkZWZpbmVkKFhQX01BQ09TWCkKICAgICAgICAgTlBfQ0dD
b250ZXh0IG1fbnBDZ0NvbnRleHQ7Ci0gICAgICAgIE93blB0cjxUaW1lcjxQbHVnaW5WaWV3PiA+
IG1fbnVsbEV2ZW50VGltZXI7Ci0gICAgICAgIE5QRHJhd2luZ01vZGVsIG1fZHJhd2luZ01vZGVs
OwotICAgICAgICBOUEV2ZW50TW9kZWwgbV9ldmVudE1vZGVsOwogICAgICAgICBDR0NvbnRleHRS
ZWYgbV9jb250ZXh0UmVmOwotICAgICAgICBXaW5kb3dSZWYgbV9mYWtlV2luZG93OwogI2lmIFBM
QVRGT1JNKFFUKQogICAgICAgICBRUGl4bWFwIG1fcGl4bWFwOwogI2VuZGlmCiAKLSAgICAgICAg
UG9pbnQgbV9sYXN0TW91c2VQb3M7CiAgICAgICAgIHZvaWQgc2V0TlBXaW5kb3dJZk5lZWRlZCgp
OwotICAgICAgICB2b2lkIG51bGxFdmVudFRpbWVyRmlyZWQoVGltZXI8UGx1Z2luVmlldz4qKTsK
LSAgICAgICAgUG9pbnQgZ2xvYmFsTW91c2VQb3NGb3JQbHVnaW4oKSBjb25zdDsKLSAgICAgICAg
UG9pbnQgbW91c2VQb3NGb3JQbHVnaW4oTW91c2VFdmVudCogZXZlbnQgPSAwKSBjb25zdDsKICNl
bmRpZgogCiAjaWYgZGVmaW5lZChYUF9VTklYKSAmJiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQ
SSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvbWFjL1BsdWdpblZpZXdNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL21hYy9QbHVnaW5WaWV3TWFjLm1tCmluZGV4IDQy
ZmE1NzljYmNkODczNzNhZjFkYTViOTA2YzQ3NzUxYjM5MGI2MDcuLmY3NjE2ZmYzY2UxNDIwNjJj
YzlhMDIwNTQwOTcyODRmYTViODEyYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdp
bnMvbWFjL1BsdWdpblZpZXdNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9tYWMv
UGx1Z2luVmlld01hYy5tbQpAQCAtODUsMTggKzg1LDEyIEBAIGV4dGVybiBRX0dVSV9FWFBPUlQg
Q0dDb250ZXh0UmVmIHF0X21hY19jZ19jb250ZXh0KGNvbnN0IFFQYWludERldmljZSAqcGRldik7
IC8vCiBRVF9FTkRfTkFNRVNQQUNFCiAjZW5kaWYKIAotdXNpbmcgc3RkOjptaW47Ci0KIHVzaW5n
IG5hbWVzcGFjZSBXVEY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNl
IEhUTUxOYW1lczsKIAotI2lmbmRlZiBOUF9OT19DQVJCT04KLXN0YXRpYyBpbnQgbW9kaWZpZXJz
Rm9yRXZlbnQoVUlFdmVudFdpdGhLZXlTdGF0ZSAqZXZlbnQpOwotI2VuZGlmCi0KIHN0YXRpYyBp
bmxpbmUgV2luZG93UmVmIG5hdGl2ZVdpbmRvd0ZvcihQbGF0Zm9ybVdpZGdldCB3aWRnZXQpCiB7
CiAjaWYgUExBVEZPUk0oUVQpCkBAIC0xNTYsNjYgKzE1MCwxNiBAQCBib29sIFBsdWdpblZpZXc6
OnBsYXRmb3JtU3RhcnQoKQogICAgIEFTU0VSVChtX2lzU3RhcnRlZCk7CiAgICAgQVNTRVJUKG1f
c3RhdHVzID09IFBsdWdpblN0YXR1c0xvYWRlZFN1Y2Nlc3NmdWxseSk7CiAKLSAgICBpZiAobV9k
cmF3aW5nTW9kZWwgPT0gTlBEcmF3aW5nTW9kZWwoLTEpKSB7Ci0gICAgICAgIC8vIFdlIGRlZmF1
bHQgdG8gUXVpY2tEcmF3LCBldmVuIHRob3VnaCB3ZSBkb24ndCBzdXBwb3J0IGl0LAotICAgICAg
ICAvLyBzaW5jZSB0aGF0J3Mgd2hhdCBTYWZhcmkgZG9lcywgYW5kIHNvbWUgcGx1Z2lucyBleHBl
Y3QgdGhpcwotICAgICAgICAvLyBiZWhhdmlvciBhbmQgbmV2ZXIgc2V0IHRoZSBkcmF3aW5nIG1v
ZGVsIGV4cGxpY2l0bHkuCi0jaWZuZGVmIE5QX05PX1FVSUNLRFJBVwotICAgICAgICBtX2RyYXdp
bmdNb2RlbCA9IE5QRHJhd2luZ01vZGVsUXVpY2tEcmF3OwotI2Vsc2UKLSAgICAgICAgLy8gUXVp
Y2tEcmF3IG5vdCBhdmFpbGFibGUsIHNvIHdlIGhhdmUgdG8gZGVmYXVsdCB0byBDb3JlR3JhcGhp
Y3MKLSAgICAgICAgbV9kcmF3aW5nTW9kZWwgPSBOUERyYXdpbmdNb2RlbENvcmVHcmFwaGljczsK
LSNlbmRpZgotICAgIH0KLQotICAgIGlmIChtX2V2ZW50TW9kZWwgPT0gTlBFdmVudE1vZGVsKC0x
KSkgewotICAgICAgICAvLyBJZiB0aGUgcGx1Zy1pbiBkaWQgbm90IHNwZWNpZnkgYW4gZXZlbnQg
bW9kZWwKLSAgICAgICAgLy8gd2UgZGVmYXVsdCB0byBDYXJib24sIHdoZW4gaXQgaXMgYXZhaWxh
YmxlLgotI2lmbmRlZiBOUF9OT19DQVJCT04KLSAgICAgICAgbV9ldmVudE1vZGVsID0gTlBFdmVu
dE1vZGVsQ2FyYm9uOwotI2Vsc2UKLSAgICAgICAgbV9ldmVudE1vZGVsID0gTlBFdmVudE1vZGVs
Q29jb2E7Ci0jZW5kaWYKLSAgICB9Ci0KICAgICAvLyBHcmFjZWZ1bGx5IGhhbmRsZSB1bnN1cHBv
cnRlZCBkcmF3aW5nIG9yIGV2ZW50IG1vZGVscy4gV2UgY2FuIGRvIHRoaXMKICAgICAvLyBub3cg
c2luY2UgdGhlIGRyYXdpbmcgYW5kIGV2ZW50IG1vZGVsIGNhbiBvbmx5IGJlIHNldCBkdXJpbmcg
TlBQX05ldy4KLSNpZm5kZWYgTlBfTk9fQ0FSQk9OCiAgICAgTlBCb29sIGV2ZW50TW9kZWxTdXBw
b3J0ZWQ7Ci0gICAgaWYgKGdldFZhbHVlU3RhdGljKE5QTlZhcmlhYmxlKE5QTlZzdXBwb3J0c0Nh
cmJvbkJvb2wgKyBtX2V2ZW50TW9kZWwpLCAmZXZlbnRNb2RlbFN1cHBvcnRlZCkgIT0gTlBFUlJf
Tk9fRVJST1IKKyAgICBpZiAoZ2V0VmFsdWVTdGF0aWMoTlBOVmFyaWFibGUoTlBOVnN1cHBvcnRz
Q29jb2FCb29sKSwgJmV2ZW50TW9kZWxTdXBwb3J0ZWQpICE9IE5QRVJSX05PX0VSUk9SCiAgICAg
ICAgICAgICB8fCAhZXZlbnRNb2RlbFN1cHBvcnRlZCkgewotI2Vsc2UKLSAgICBOUEJvb2wgZXZl
bnRNb2RlbFN1cHBvcnRlZDsKLSAgICBpZiAoZ2V0VmFsdWVTdGF0aWMoTlBOVmFyaWFibGUoTlBO
VnN1cHBvcnRzQ29jb2FCb29sLyogKyBtX2V2ZW50TW9kZWwqLyksICZldmVudE1vZGVsU3VwcG9y
dGVkKSAhPSBOUEVSUl9OT19FUlJPUgotICAgICAgICAgICAgfHwgIWV2ZW50TW9kZWxTdXBwb3J0
ZWQpIHsKLSNlbmRpZgogICAgICAgICBtX3N0YXR1cyA9IFBsdWdpblN0YXR1c0Nhbk5vdExvYWRQ
bHVnaW47CiAgICAgICAgIExPRyhQbHVnaW5zLCAiUGx1Zy1pbiAnJXMnIHVzZXMgdW5zdXBwb3J0
ZWQgZXZlbnQgbW9kZWwgJXMiLAotICAgICAgICAgICAgICAgIG1fcGx1Z2luLT5uYW1lKCkudXRm
OCgpLmRhdGEoKSwgcHJldHR5TmFtZUZvckV2ZW50TW9kZWwobV9ldmVudE1vZGVsKSk7Ci0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSNpZm5kZWYgTlBfTk9fUVVJQ0tEUkFXCi0gICAg
TlBCb29sIGRyYXdpbmdNb2RlbFN1cHBvcnRlZDsKLSAgICBpZiAoZ2V0VmFsdWVTdGF0aWMoTlBO
VmFyaWFibGUoTlBOVnN1cHBvcnRzUXVpY2tEcmF3Qm9vbCArIG1fZHJhd2luZ01vZGVsKSwgJmRy
YXdpbmdNb2RlbFN1cHBvcnRlZCkgIT0gTlBFUlJfTk9fRVJST1IKLSAgICAgICAgICAgIHx8ICFk
cmF3aW5nTW9kZWxTdXBwb3J0ZWQpIHsKLSAgICAgICAgbV9zdGF0dXMgPSBQbHVnaW5TdGF0dXND
YW5Ob3RMb2FkUGx1Z2luOwotICAgICAgICBMT0coUGx1Z2lucywgIlBsdWctaW4gJyVzJyB1c2Vz
IHVuc3VwcG9ydGVkIGRyYXdpbmcgbW9kZWwgJXMiLAotICAgICAgICAgICAgICAgIG1fcGx1Z2lu
LT5uYW1lKCkudXRmOCgpLmRhdGEoKSwgcHJldHR5TmFtZUZvckRyYXdpbmdNb2RlbChtX2RyYXdp
bmdNb2RlbCkpOworICAgICAgICAgICAgICAgIG1fcGx1Z2luLT5uYW1lKCkudXRmOCgpLmRhdGEo
KSwgcHJldHR5TmFtZUZvckV2ZW50TW9kZWwoTlBFdmVudE1vZGVsQ29jb2EpKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KLSNlbmRpZgotCi0jaWZkZWYgTlBfTk9fUVVJQ0tEUkFXCi0g
ICAgTlBCb29sIGRyYXdpbmdNb2RlbFN1cHBvcnRlZDsKLSAgICBpZiAoZ2V0VmFsdWVTdGF0aWMo
TlBOVmFyaWFibGUoTlBOVnN1cHBvcnRzQ29yZUdyYXBoaWNzQm9vbC8qICsgbV9kcmF3aW5nTW9k
ZWwqLyksICZkcmF3aW5nTW9kZWxTdXBwb3J0ZWQpICE9IE5QRVJSX05PX0VSUk9SCi0gICAgICAg
ICAgICB8fCAhZHJhd2luZ01vZGVsU3VwcG9ydGVkKSB7Ci0gICAgICAgIG1fc3RhdHVzID0gUGx1
Z2luU3RhdHVzQ2FuTm90TG9hZFBsdWdpbjsKLSAgICAgICAgTE9HKFBsdWdpbnMsICJQbHVnLWlu
ICclcycgdXNlcyB1bnN1cHBvcnRlZCBkcmF3aW5nIG1vZGVsICVzIiwKLSAgICAgICAgICAgICAg
ICBtX3BsdWdpbi0+bmFtZSgpLnV0ZjgoKS5kYXRhKCksIHByZXR0eU5hbWVGb3JEcmF3aW5nTW9k
ZWwobV9kcmF3aW5nTW9kZWwpKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSNlbmRp
ZgogCiAKICNpZiBQTEFURk9STShRVCkKQEAgLTIyNywzMSArMTcxLDExIEBAIGJvb2wgUGx1Z2lu
Vmlldzo6cGxhdGZvcm1TdGFydCgpCiAgICAgfQogI2VuZGlmCiAKLSAgICAvLyBDcmVhdGUgYSBm
YWtlIHdpbmRvdyByZWxhdGl2ZSB0byB3aGljaCBhbGwgZXZlbnRzIHdpbGwgYmUgc2VudCB3aGVu
IHVzaW5nIG9mZnNjcmVlbiByZW5kZXJpbmcKLSNpZm5kZWYgTlBfTk9fQ0FSQk9OCi0gICAgaWYg
KCFwbGF0Zm9ybVBsdWdpbldpZGdldCgpKSB7Ci0gICAgICAgIC8vIE1ha2UgdGhlIGRlZmF1bHQg
c2l6ZSByZWFsbHkgYmlnLiBJdCBpcyB1bmNsZWFyIHdoeSB0aGlzIGlzIHJlcXVpcmVkIGJ1dCB3
aXRoIGEgc21hbGxlciBzaXplLCBtb3VzZSBtb3ZlCi0gICAgICAgIC8vIGV2ZW50cyBkb24ndCBn
ZXQgcHJvY2Vzc2VkLiBSZXNpemluZyB0aGUgZmFrZSB3aW5kb3cgdG8gZmxhc2gncyBzaXplIGRv
ZXNuJ3QgaGVscC4KLSAgICAgICAgOjpSZWN0IHdpbmRvd0JvdW5kcyA9IHsgMCwgMCwgMTAwMCwg
MTAwMCB9OwotICAgICAgICBDcmVhdGVOZXdXaW5kb3coa0RvY3VtZW50V2luZG93Q2xhc3MsIGtX
aW5kb3dTdGFuZGFyZERvY3VtZW50QXR0cmlidXRlcywgJndpbmRvd0JvdW5kcywgJm1fZmFrZVdp
bmRvdyk7Ci0gICAgICAgIC8vIEZsYXNoIHJlcXVpcmVzIHRoZSB3aW5kb3cgdG8gYmUgaGlsaXRl
ZCB0byBwcm9jZXNzIG1vdXNlIG1vdmUgZXZlbnRzLgotICAgICAgICBIaWxpdGVXaW5kb3cobV9m
YWtlV2luZG93LCB0cnVlKTsKLSAgICB9Ci0jZW5kaWYKLQogICAgIHVwZGF0ZVBsdWdpbldpZGdl
dCgpOwogCiAgICAgaWYgKCFtX3BsdWdpbi0+cXVpcmtzKCkuY29udGFpbnMoUGx1Z2luUXVpcmtE
ZWZlckZpcnN0U2V0V2luZG93Q2FsbCkpCiAgICAgICAgIHNldE5QV2luZG93SWZOZWVkZWQoKTsK
IAotI2lmbmRlZiBOUF9OT19DQVJCT04KLSAgICAvLyBUT0RPOiBJbXBsZW1lbnQgbnVsbCB0aW1l
ciB0aHJvdHRsaW5nIGRlcGVuZGluZyBvbiBwbHVnaW4gYWN0aXZhdGlvbgotICAgIG1fbnVsbEV2
ZW50VGltZXIgPSBhZG9wdFB0cihuZXcgVGltZXI8UGx1Z2luVmlldz4odGhpcywgJlBsdWdpblZp
ZXc6Om51bGxFdmVudFRpbWVyRmlyZWQpKTsKLSAgICBtX251bGxFdmVudFRpbWVyLT5zdGFydFJl
cGVhdGluZygwLjAyKTsKLQotICAgIG1fbGFzdE1vdXNlUG9zLmggPSBtX2xhc3RNb3VzZVBvcy52
ID0gMDsKLSNlbmRpZiAvLyBOUF9OT19DQVJCT04KLQogICAgIHJldHVybiB0cnVlOwogfQogCkBA
IC0yNjEsMTAgKzE4NSw2IEBAIHZvaWQgUGx1Z2luVmlldzo6cGxhdGZvcm1EZXN0cm95KCkKICAg
ICAgICAgc2V0UGxhdGZvcm1QbHVnaW5XaWRnZXQoMCk7CiAgICAgZWxzZSB7CiAgICAgICAgIENH
Q29udGV4dFJlbGVhc2UobV9jb250ZXh0UmVmKTsKLSNpZm5kZWYgTlBfTk9fQ0FSQk9OCi0gICAg
ICAgIGlmIChtX2Zha2VXaW5kb3cpCi0gICAgICAgICAgICBEaXNwb3NlV2luZG93KG1fZmFrZVdp
bmRvdyk7Ci0jZW5kaWYKICAgICB9CiB9CiAKQEAgLTI4MywxMyArMjAzLDYgQEAgYm9vbCBQbHVn
aW5WaWV3OjpwbGF0Zm9ybUdldFZhbHVlU3RhdGljKE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lk
KiB2YWx1ZSwgTlBFcnIKICAgICAgICAgKnJlc3VsdCA9IE5QRVJSX05PX0VSUk9SOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAotI2lmbmRlZiBOUF9OT19DQVJCT04KLSAgICBjYXNlIE5QTlZzdXBw
b3J0c0NhcmJvbkJvb2w6Ci0gICAgICAgICpzdGF0aWNfY2FzdDxOUEJvb2wqPih2YWx1ZSkgPSB0
cnVlOwotICAgICAgICAqcmVzdWx0ID0gTlBFUlJfTk9fRVJST1I7Ci0gICAgICAgIHJldHVybiB0
cnVlOwotCi0jZW5kaWYKICAgICBjYXNlIE5QTlZzdXBwb3J0c0NvY29hQm9vbDoKICAgICAgICAg
KnN0YXRpY19jYXN0PE5QQm9vbCo+KHZhbHVlKSA9IHRydWU7CiAgICAgICAgICpyZXN1bHQgPSBO
UEVSUl9OT19FUlJPUjsKQEAgLTMwNiwxMCArMjE5LDYgQEAgYm9vbCBQbHVnaW5WaWV3OjpwbGF0
Zm9ybUdldFZhbHVlU3RhdGljKE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkKiB2YWx1ZSwgTlBF
cnIKICAgICAgICAgKnJlc3VsdCA9IE5QRVJSX05PX0VSUk9SOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAotI2lmbmRlZiBOUF9OT19RVUlDS0RSQVcKLSAgICAvLyBRdWlja0RyYXcgaXMgZGVwcmVj
YXRlZCBpbiAxMC41IGFuZCBub3Qgc3VwcG9ydGVkIG9uIDY0LWJpdAotICAgIGNhc2UgTlBOVnN1
cHBvcnRzUXVpY2tEcmF3Qm9vbDoKLSNlbmRpZgogICAgIGNhc2UgTlBOVnN1cHBvcnRzT3BlbkdM
Qm9vbDoKICAgICBjYXNlIE5QTlZzdXBwb3J0c0NvcmVBbmltYXRpb25Cb29sOgogICAgICAgICAq
c3RhdGljX2Nhc3Q8TlBCb29sKj4odmFsdWUpID0gZmFsc2U7CkBAIC0zNzQsMTEgKzI4Myw4IEBA
IHZvaWQgUGx1Z2luVmlldzo6aGlkZSgpCiB2b2lkIFBsdWdpblZpZXc6OnNldEZvY3VzKGJvb2wg
Zm9jdXNlZCkKIHsKICAgICBMT0coUGx1Z2lucywgIlBsdWdpblZpZXc6OnNldEZvY3VzKCVkKSIs
IGZvY3VzZWQpOwotICAgIGlmICghZm9jdXNlZCkgeworICAgIGlmICghZm9jdXNlZCkKICAgICAg
ICAgV2lkZ2V0OjpzZXRGb2N1cyhmb2N1c2VkKTsKLSAgICAgICAgaWYgKG1fZXZlbnRNb2RlbCAh
PSBOUEV2ZW50TW9kZWxDb2NvYSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICBp
ZiAocGxhdGZvcm1QbHVnaW5XaWRnZXQoKSkKICNpZiBQTEFURk9STShRVCkKQEAgLTM5MCwyOCAr
Mjk2LDE0IEBAIHZvaWQgUGx1Z2luVmlldzo6c2V0Rm9jdXMoYm9vbCBmb2N1c2VkKQogICAgICAg
ICBXaWRnZXQ6OnNldEZvY3VzKGZvY3VzZWQpOwogCiAKLSNpZm5kZWYgTlBfTk9fQ0FSQk9OCi0g
ICAgLy8gVE9ETzogQWxzbyBoYW5kbGUgYW5kIHBhc3Mgb24gYmx1ciBldmVudHMgKGZvY3VzIGxv
c3QpCi0gICAgRXZlbnRSZWNvcmQgcmVjb3JkOwotICAgIHJlY29yZC53aGF0ID0gTlBFdmVudFR5
cGVfR2V0Rm9jdXNFdmVudDsKLSAgICByZWNvcmQubWVzc2FnZSA9IDA7Ci0gICAgcmVjb3JkLndo
ZW4gPSBUaWNrQ291bnQoKTsKLSAgICByZWNvcmQud2hlcmUgPSBnbG9iYWxNb3VzZVBvc0ZvclBs
dWdpbigpOwotICAgIHJlY29yZC5tb2RpZmllcnMgPSBHZXRDdXJyZW50S2V5TW9kaWZpZXJzKCk7
CisgICAgTlBDb2NvYUV2ZW50IGNvY29hRXZlbnQ7CisgICAgaW5pdGlhbGl6ZU5QQ29jb2FFdmVu
dCgmY29jb2FFdmVudCk7CisgICAgY29jb2FFdmVudC50eXBlID0gTlBDb2NvYUV2ZW50Rm9jdXND
aGFuZ2VkOworICAgIE5QQm9vbCBmb2N1cyA9IGZvY3VzZWQ7CisgICAgY29jb2FFdmVudC5kYXRh
LmZvY3VzLmhhc0ZvY3VzID0gZm9jdXM7CiAKLSAgICBpZiAoIWRpc3BhdGNoTlBFdmVudChyZWNv
cmQpKQotICAgICAgICBMT0coRXZlbnRzLCAiUGx1Z2luVmlldzo6c2V0Rm9jdXMoJWQpOiBGb2N1
cyBldmVudCBub3QgYWNjZXB0ZWQiLCBmb2N1c2VkKTsKLSNlbmRpZgotICAgIHsKLSAgICAgICAg
TlBDb2NvYUV2ZW50IGNvY29hRXZlbnQ7Ci0gICAgICAgIGluaXRpYWxpemVOUENvY29hRXZlbnQo
JmNvY29hRXZlbnQpOwotICAgICAgICBjb2NvYUV2ZW50LnR5cGUgPSBOUENvY29hRXZlbnRGb2N1
c0NoYW5nZWQ7Ci0gICAgICAgIE5QQm9vbCBmb2N1cyA9IGZvY3VzZWQ7Ci0gICAgICAgIGNvY29h
RXZlbnQuZGF0YS5mb2N1cy5oYXNGb2N1cyA9IGZvY3VzOwotCi0gICAgICAgIGlmKCFkaXNwYXRj
aE5QQ29jb2FFdmVudChjb2NvYUV2ZW50KSkgewotICAgICAgICAgICAgTE9HKEV2ZW50cywgIlBs
dWdpblZpZXc6OnNldEZvY3VzKCk6IEZvY3VzIGV2ZW50ICVkIG5vdCBhY2NlcHRlZCIsIGNvY29h
RXZlbnQudHlwZSk7Ci0gICAgICAgIH0KKyAgICBpZighZGlzcGF0Y2hOUENvY29hRXZlbnQoY29j
b2FFdmVudCkpIHsKKyAgICAgICAgTE9HKEV2ZW50cywgIlBsdWdpblZpZXc6OnNldEZvY3VzKCk6
IEZvY3VzIGV2ZW50ICVkIG5vdCBhY2NlcHRlZCIsIGNvY29hRXZlbnQudHlwZSk7CiAgICAgfQog
fQogCkBAIC00MzQsMjYgKzMyNiwyMCBAQCB2b2lkIFBsdWdpblZpZXc6OnNldE5QV2luZG93SWZO
ZWVkZWQoKQogICAgICAgICByZXR1cm47CiAKICAgICBDR0NvbnRleHRSZWYgbmV3Q29udGV4dFJl
ZiA9IDA7Ci0gICAgV2luZG93UmVmIG5ld1dpbmRvd1JlZiA9IDA7CiAgICAgaWYgKHBsYXRmb3Jt
UGx1Z2luV2lkZ2V0KCkpIHsKICAgICAgICAgbmV3Q29udGV4dFJlZiA9IGNnSGFuZGxlRm9yKHBs
YXRmb3JtUGx1Z2luV2lkZ2V0KCkpOwotICAgICAgICBuZXdXaW5kb3dSZWYgPSBuYXRpdmVXaW5k
b3dGb3IocGxhdGZvcm1QbHVnaW5XaWRnZXQoKSk7CiAgICAgICAgIG1fbnBXaW5kb3cudHlwZSA9
IE5QV2luZG93VHlwZVdpbmRvdzsKICAgICB9IGVsc2UgewogICAgICAgICBuZXdDb250ZXh0UmVm
ID0gbV9jb250ZXh0UmVmOwotICAgICAgICBuZXdXaW5kb3dSZWYgPSBtX2Zha2VXaW5kb3c7CiAg
ICAgICAgIG1fbnBXaW5kb3cudHlwZSA9IE5QV2luZG93VHlwZURyYXdhYmxlOwogICAgIH0KIAot
ICAgIGlmICghbmV3Q29udGV4dFJlZiB8fCAhbmV3V2luZG93UmVmKSB7CisgICAgaWYgKCFuZXdD
b250ZXh0UmVmKSB7CiAgICAgICAgIGlmICghbV91c2VQaXhtYXApCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgfQogCiAgICAgbV9ucFdpbmRvdy53aW5kb3cgPSAodm9pZCopJm1fbnBDZ0NvbnRl
eHQ7Ci0jaWZuZGVmIE5QX05PX0NBUkJPTgotICAgIG1fbnBDZ0NvbnRleHQud2luZG93ID0gbmV3
V2luZG93UmVmOwotI2VuZGlmCiAgICAgbV9ucENnQ29udGV4dC5jb250ZXh0ID0gbmV3Q29udGV4
dFJlZjsKIAogICAgIG1fbnBXaW5kb3cueCA9IG1fd2luZG93UmVjdC54KCk7CkBAIC00NjcsOSAr
MzUzLDkgQEAgdm9pZCBQbHVnaW5WaWV3OjpzZXROUFdpbmRvd0lmTmVlZGVkKCkKICAgICBtX25w
V2luZG93LmNsaXBSZWN0LnJpZ2h0ID0gbV93aW5kb3dSZWN0LngoKSArIG1fd2luZG93UmVjdC53
aWR0aCgpOwogICAgIG1fbnBXaW5kb3cuY2xpcFJlY3QuYm90dG9tID0gbV93aW5kb3dSZWN0Lnko
KSArIG1fd2luZG93UmVjdC5oZWlnaHQoKTsKIAotICAgIExPRyhQbHVnaW5zLCAiUGx1Z2luVmll
dzo6c2V0TlBXaW5kb3dJZk5lZWRlZCgpOiB3aW5kb3c9JXAsIGNvbnRleHQ9JXAsIgorICAgIExP
RyhQbHVnaW5zLCAiUGx1Z2luVmlldzo6c2V0TlBXaW5kb3dJZk5lZWRlZCgpOiBjb250ZXh0PSVw
LCIKICAgICAgICAgICAgICIgd2luZG93Lng6JWQgd2luZG93Lnk6JWQgd2luZG93LndpZHRoOiVk
IHdpbmRvdy5oZWlnaHQ6JWQgd2luZG93LmNsaXBSZWN0IHNpemU6JWR4JWQiLAotICAgICAgICAg
ICAgbmV3V2luZG93UmVmLCBuZXdDb250ZXh0UmVmLCBtX25wV2luZG93LngsIG1fbnBXaW5kb3cu
eSwgbV9ucFdpbmRvdy53aWR0aCwgbV9ucFdpbmRvdy5oZWlnaHQsCisgICAgICAgICAgICBuZXdD
b250ZXh0UmVmLCBtX25wV2luZG93LngsIG1fbnBXaW5kb3cueSwgbV9ucFdpbmRvdy53aWR0aCwg
bV9ucFdpbmRvdy5oZWlnaHQsCiAgICAgICAgICAgICBtX25wV2luZG93LmNsaXBSZWN0LnJpZ2h0
IC0gbV9ucFdpbmRvdy5jbGlwUmVjdC5sZWZ0LCBtX25wV2luZG93LmNsaXBSZWN0LmJvdHRvbSAt
IG1fbnBXaW5kb3cuY2xpcFJlY3QudG9wKTsKIAogICAgIFBsdWdpblZpZXc6OnNldEN1cnJlbnRQ
bHVnaW5WaWV3KHRoaXMpOwpAQCAtNTc0LDMzICs0NjAsMTcgQEAgdm9pZCBQbHVnaW5WaWV3Ojpw
YWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QpCiAjZW5k
aWYKICAgICB9CiAKLSNpZm5kZWYgTlBfTk9fQ0FSQk9OCi0gICAgaWYgKG1fZXZlbnRNb2RlbCAh
PSBOUEV2ZW50TW9kZWxDb2NvYSkgewotICAgICAgICBFdmVudFJlY29yZCBldmVudDsKLSAgICAg
ICAgZXZlbnQud2hhdCA9IHVwZGF0ZUV2dDsKLSAgICAgICAgZXZlbnQubWVzc2FnZSA9IChsb25n
IHVuc2lnbmVkIGludCltX25wQ2dDb250ZXh0LndpbmRvdzsKLSAgICAgICAgZXZlbnQud2hlbiA9
IFRpY2tDb3VudCgpOwotICAgICAgICBldmVudC53aGVyZS5oID0gMDsKLSAgICAgICAgZXZlbnQu
d2hlcmUudiA9IDA7Ci0gICAgICAgIGV2ZW50Lm1vZGlmaWVycyA9IEdldEN1cnJlbnRLZXlNb2Rp
ZmllcnMoKTsKLQotICAgICAgICBpZiAoIWRpc3BhdGNoTlBFdmVudChldmVudCkpCi0gICAgICAg
ICAgICBMT0coRXZlbnRzLCAiUGx1Z2luVmlldzo6cGFpbnQoKTogUGFpbnQgZXZlbnQgbm90IGFj
Y2VwdGVkIik7Ci0gICAgfSBlbHNlCi0jZW5kaWYKLSAgICB7Ci0gICAgICAgIE5QQ29jb2FFdmVu
dCBjb2NvYUV2ZW50OwotICAgICAgICBpbml0aWFsaXplTlBDb2NvYUV2ZW50KCZjb2NvYUV2ZW50
KTsKLSAgICAgICAgY29jb2FFdmVudC50eXBlID0gTlBDb2NvYUV2ZW50RHJhd1JlY3Q7Ci0gICAg
ICAgIGNvY29hRXZlbnQuZGF0YS5kcmF3LnggPSBtX3VzZVBpeG1hcCA/IDAgOiByLm9yaWdpbi54
OwotICAgICAgICBjb2NvYUV2ZW50LmRhdGEuZHJhdy55ID0gbV91c2VQaXhtYXAgPyAwIDogci5v
cmlnaW4ueTsKLSAgICAgICAgY29jb2FFdmVudC5kYXRhLmRyYXcud2lkdGggPSBtX3VzZVBpeG1h
cCA/IG1fcGl4bWFwLndpZHRoKCkgOiByLnNpemUud2lkdGg7Ci0gICAgICAgIGNvY29hRXZlbnQu
ZGF0YS5kcmF3LmhlaWdodCA9IG1fdXNlUGl4bWFwID8gbV9waXhtYXAuaGVpZ2h0KCkgOiByLnNp
emUuaGVpZ2h0OwotICAgICAgICBjb2NvYUV2ZW50LmRhdGEuZHJhdy5jb250ZXh0ID0gY2dDb250
ZXh0OwotICAgICAgICAKLSAgICAgICAgaWYoIWRpc3BhdGNoTlBDb2NvYUV2ZW50KGNvY29hRXZl
bnQpKQotICAgICAgICAgICAgTE9HKEV2ZW50cywgIlBsdWdpblZpZXc6OnBhaW50KCk6IFBhaW50
IGV2ZW50IHR5cGUgJWQgbm90IGFjY2VwdGVkIiwgY29jb2FFdmVudC50eXBlKTsKLSAgICB9Cisg
ICAgTlBDb2NvYUV2ZW50IGNvY29hRXZlbnQ7CisgICAgaW5pdGlhbGl6ZU5QQ29jb2FFdmVudCgm
Y29jb2FFdmVudCk7CisgICAgY29jb2FFdmVudC50eXBlID0gTlBDb2NvYUV2ZW50RHJhd1JlY3Q7
CisgICAgY29jb2FFdmVudC5kYXRhLmRyYXcueCA9IG1fdXNlUGl4bWFwID8gMCA6IHIub3JpZ2lu
Lng7CisgICAgY29jb2FFdmVudC5kYXRhLmRyYXcueSA9IG1fdXNlUGl4bWFwID8gMCA6IHIub3Jp
Z2luLnk7CisgICAgY29jb2FFdmVudC5kYXRhLmRyYXcud2lkdGggPSBtX3VzZVBpeG1hcCA/IG1f
cGl4bWFwLndpZHRoKCkgOiByLnNpemUud2lkdGg7CisgICAgY29jb2FFdmVudC5kYXRhLmRyYXcu
aGVpZ2h0ID0gbV91c2VQaXhtYXAgPyBtX3BpeG1hcC5oZWlnaHQoKSA6IHIuc2l6ZS5oZWlnaHQ7
CisgICAgY29jb2FFdmVudC5kYXRhLmRyYXcuY29udGV4dCA9IGNnQ29udGV4dDsKKworICAgIGlm
KCFkaXNwYXRjaE5QQ29jb2FFdmVudChjb2NvYUV2ZW50KSkKKyAgICAgICAgTE9HKEV2ZW50cywg
IlBsdWdpblZpZXc6OnBhaW50KCk6IFBhaW50IGV2ZW50IHR5cGUgJWQgbm90IGFjY2VwdGVkIiwg
Y29jb2FFdmVudC50eXBlKTsKICAgICAKICAgICBpZiAoIXBsYXRmb3JtUGx1Z2luV2lkZ2V0KCkg
fHwgbV9pc1RyYW5zcGFyZW50KSB7CiAjaWYgUExBVEZPUk0oUVQpCkBAIC02NjIsNyArNTMyLDcg
QEAgdm9pZCBQbHVnaW5WaWV3Ojpmb3JjZVJlZHJhdygpCiAvLyAtLS0tLS0tLS0tLS0tLS0tLSBF
dmVudCBoYW5kbGluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLQogdm9pZCBQbHVnaW5WaWV3OjpoYW5k
bGVXaGVlbEV2ZW50KFdoZWVsRXZlbnQgKmV2ZW50KQogewotICAgIGlmICghbV9pc1N0YXJ0ZWQg
fHwgbV9ldmVudE1vZGVsICE9IE5QRXZlbnRNb2RlbENvY29hKQorICAgIGlmICghbV9pc1N0YXJ0
ZWQpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBOUENvY29hRXZlbnQgY29jb2FFdmVudDsK
QEAgLTY4MCw4ICs1NTAsOCBAQCB2b2lkIFBsdWdpblZpZXc6OmhhbmRsZVdoZWVsRXZlbnQoV2hl
ZWxFdmVudCAqZXZlbnQpCiAgICAgY29jb2FFdmVudC5kYXRhLm1vdXNlLm1vZGlmaWVyRmxhZ3Mg
PSBnZXRNb2RpZmllcnMoZXZlbnQpOwogICAgIAogICAgIGlmKCFkaXNwYXRjaE5QQ29jb2FFdmVu
dChjb2NvYUV2ZW50KSkgewotICAgICAgICBMT0coRXZlbnRzLCAiUGx1Z2luVmlldzo6aGFuZGxl
TW91c2VFdmVudCgpOiBXaGVlbCBldmVudCB0eXBlICVkIGF0ICVkLCVkIG5vdCBhY2NlcHRlZCIs
IGNvY29hRXZlbnQudHlwZQotICAgICAgICAgICAgY29jb2FFdmVudC5kYXRhLm1vdXNlLngsIGNv
Y29hRXZlbnQuZGF0YS5tb3VzZS55KTsKKyAgICAgICAgTE9HKEV2ZW50cywgIlBsdWdpblZpZXc6
OmhhbmRsZU1vdXNlRXZlbnQoKTogV2hlZWwgZXZlbnQgdHlwZSAlZCBhdCAlZCwlZCBub3QgYWNj
ZXB0ZWQiLCBjb2NvYUV2ZW50LnR5cGUsCisgICAgICAgICAgICBjb2NvYUV2ZW50LmRhdGEubW91
c2UucGx1Z2luWCwgY29jb2FFdmVudC5kYXRhLm1vdXNlLnBsdWdpblkpOwogICAgIH0KICAgICBl
dmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKIH0KQEAgLTY5MSwxMjUgKzU2MSw4MCBAQCB2b2lk
IFBsdWdpblZpZXc6OmhhbmRsZU1vdXNlRXZlbnQoTW91c2VFdmVudCogZXZlbnQpCiAgICAgaWYg
KCFtX2lzU3RhcnRlZCkKICAgICAgICAgcmV0dXJuOwogICAgIAotI2lmbmRlZiBOUF9OT19DQVJC
T04KLSAgICBpZiAobV9ldmVudE1vZGVsICE9IE5QRXZlbnRNb2RlbENvY29hKSB7Ci0gICAgICAg
IEV2ZW50UmVjb3JkIHJlY29yZDsKLSAgICAgICAgCi0gICAgICAgIGlmIChldmVudC0+dHlwZSgp
ID09IGV2ZW50TmFtZXMoKS5tb3VzZW1vdmVFdmVudCkgewotICAgICAgICAgICAgLy8gTW91c2Ug
bW92ZW1lbnQgaXMgaGFuZGxlZCBieSBudWxsIHRpbWVyIGV2ZW50cwotICAgICAgICAgICAgbV9s
YXN0TW91c2VQb3MgPSBtb3VzZVBvc0ZvclBsdWdpbihldmVudCk7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91
c2VvdmVyRXZlbnQpIHsKLSAgICAgICAgICAgIHJlY29yZC53aGF0ID0gTlBFdmVudFR5cGVfQWRq
dXN0Q3Vyc29yRXZlbnQ7Ci0gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVu
dE5hbWVzKCkubW91c2VvdXRFdmVudCkgewotICAgICAgICAgICAgcmVjb3JkLndoYXQgPSBOUEV2
ZW50VHlwZV9BZGp1c3RDdXJzb3JFdmVudDsKLSAgICAgICAgfSBlbHNlIGlmIChldmVudC0+dHlw
ZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZWRvd25FdmVudCkgewotICAgICAgICAgICAgcmVjb3Jk
LndoYXQgPSBtb3VzZURvd247CisgICAgTlBDb2NvYUV2ZW50VHlwZSBldmVudFR5cGU7CisgICAg
aW50MzJfdCBidXR0b25OdW1iZXIgPSAwOworICAgIGludDMyX3QgY2xpY2tDb3VudCA9IDA7Cisg
ICAgTlNFdmVudCAqY3VycmVudEV2ZW50ID0gW05TQXBwIGN1cnJlbnRFdmVudF07CisKKyAgICBO
U0V2ZW50VHlwZSB0eXBlID0gW2N1cnJlbnRFdmVudCB0eXBlXTsKKworICAgIHN3aXRjaCAodHlw
ZSkgeworICAgICAgICBjYXNlIE5TTGVmdE1vdXNlRG93bjoKKyAgICAgICAgY2FzZSBOU1JpZ2h0
TW91c2VEb3duOgorICAgICAgICBjYXNlIE5TT3RoZXJNb3VzZURvd246CisgICAgICAgICAgICBi
dXR0b25OdW1iZXIgPSBbY3VycmVudEV2ZW50IGJ1dHRvbk51bWJlcl07CisgICAgICAgICAgICBj
bGlja0NvdW50ID0gW2N1cnJlbnRFdmVudCBjbGlja0NvdW50XTsKKyAgICAgICAgICAgIGV2ZW50
VHlwZSA9IE5QQ29jb2FFdmVudE1vdXNlRG93bjsKICAgICAgICAgICAgIC8vIFRoZSBwbHVnaW4g
bmVlZHMgZm9jdXMgdG8gcmVjZWl2ZSBrZXlib2FyZCBldmVudHMKICAgICAgICAgICAgIGlmIChQ
YWdlKiBwYWdlID0gbV9wYXJlbnRGcmFtZS0+cGFnZSgpKQogICAgICAgICAgICAgICAgIHBhZ2Ut
PmZvY3VzQ29udHJvbGxlcigpLT5zZXRGb2N1c2VkRnJhbWUobV9wYXJlbnRGcmFtZSk7CiAgICAg
ICAgICAgICBtX3BhcmVudEZyYW1lLT5kb2N1bWVudCgpLT5zZXRGb2N1c2VkTm9kZShtX2VsZW1l
bnQpOwotICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1v
dXNldXBFdmVudCkgewotICAgICAgICAgICAgcmVjb3JkLndoYXQgPSBtb3VzZVVwOwotICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBOU0xlZnRNb3Vz
ZVVwOgorICAgICAgICBjYXNlIE5TUmlnaHRNb3VzZVVwOgorICAgICAgICBjYXNlIE5TT3RoZXJN
b3VzZVVwOgorICAgICAgICAgICAgYnV0dG9uTnVtYmVyID0gW2N1cnJlbnRFdmVudCBidXR0b25O
dW1iZXJdOworICAgICAgICAgICAgY2xpY2tDb3VudCA9IFtjdXJyZW50RXZlbnQgY2xpY2tDb3Vu
dF07CisgICAgICAgICAgICBldmVudFR5cGUgPSBOUENvY29hRXZlbnRNb3VzZVVwOworICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBOU01vdXNlTW92ZWQ6CisgICAgICAgICAgICBl
dmVudFR5cGUgPSBOUENvY29hRXZlbnRNb3VzZU1vdmVkOworICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgY2FzZSBOU0xlZnRNb3VzZURyYWdnZWQ6CisgICAgICAgIGNhc2UgTlNSaWdodE1v
dXNlRHJhZ2dlZDoKKyAgICAgICAgY2FzZSBOU090aGVyTW91c2VEcmFnZ2VkOgorICAgICAgICAg
ICAgYnV0dG9uTnVtYmVyID0gW2N1cnJlbnRFdmVudCBidXR0b25OdW1iZXJdOworICAgICAgICAg
ICAgZXZlbnRUeXBlID0gTlBDb2NvYUV2ZW50TW91c2VEcmFnZ2VkOworICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgY2FzZSBOU01vdXNlRW50ZXJlZDoKKyAgICAgICAgICAgIGV2ZW50VHlw
ZSA9IE5QQ29jb2FFdmVudE1vdXNlRW50ZXJlZDsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgIGNhc2UgTlNNb3VzZUV4aXRlZDoKKyAgICAgICAgICAgIGV2ZW50VHlwZSA9IE5QQ29jb2FF
dmVudE1vdXNlRXhpdGVkOworICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9Ci0gICAgICAgIHJlY29yZC53aGVyZSA9IG1vdXNlUG9zRm9yUGx1Z2luKGV2ZW50
KTsKLSAgICAgICAgcmVjb3JkLm1vZGlmaWVycyA9IG1vZGlmaWVyc0ZvckV2ZW50KGV2ZW50KTsK
LSAgICAgICAgCi0gICAgICAgIGlmICghZXZlbnQtPmJ1dHRvbkRvd24oKSkKLSAgICAgICAgICAg
IHJlY29yZC5tb2RpZmllcnMgfD0gYnRuU3RhdGU7Ci0gICAgICAgIAotICAgICAgICBpZiAoZXZl
bnQtPmJ1dHRvbigpID09IDIpCi0gICAgICAgICAgICByZWNvcmQubW9kaWZpZXJzIHw9IGNvbnRy
b2xLZXk7Ci0gICAgICAgIAotICAgICAgICBpZiAoIWRpc3BhdGNoTlBFdmVudChyZWNvcmQpKSB7
Ci0gICAgICAgICAgICBpZiAocmVjb3JkLndoYXQgPT0gTlBFdmVudFR5cGVfQWRqdXN0Q3Vyc29y
RXZlbnQpCi0gICAgICAgICAgICAgICAgcmV0dXJuOyAvLyBTaWduYWxzIHRoYXQgdGhlIHBsdWdp
biB3YW50cyBhIG5vcm1hbCBjdXJzb3IKLSAgICAgICAgICAgIAotICAgICAgICAgICAgTE9HKEV2
ZW50cywgIlBsdWdpblZpZXc6OmhhbmRsZU1vdXNlRXZlbnQoKTogTW91c2UgZXZlbnQgdHlwZSAl
ZCBhdCAlZCwlZCBub3QgYWNjZXB0ZWQiLAotICAgICAgICAgICAgICAgIHJlY29yZC53aGF0LCBy
ZWNvcmQud2hlcmUuaCwgcmVjb3JkLndoZXJlLnYpOwotICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UK
LSNlbmRpZgotICAgIHsKLSAgICAgICAgTlBDb2NvYUV2ZW50VHlwZSBldmVudFR5cGU7Ci0gICAg
ICAgIGludDMyX3QgYnV0dG9uTnVtYmVyID0gMDsKLSAgICAgICAgaW50MzJfdCBjbGlja0NvdW50
ID0gMDsKLSAgICAgICAgTlNFdmVudCAqY3VycmVudEV2ZW50ID0gW05TQXBwIGN1cnJlbnRFdmVu
dF07Ci0gICAgICAgIAotICAgICAgICBOU0V2ZW50VHlwZSB0eXBlID0gW2N1cnJlbnRFdmVudCB0
eXBlXTsKLSAgICAgICAgCi0gICAgICAgIHN3aXRjaCAodHlwZSkgewotICAgICAgICAgICAgY2Fz
ZSBOU0xlZnRNb3VzZURvd246Ci0gICAgICAgICAgICBjYXNlIE5TUmlnaHRNb3VzZURvd246Ci0g
ICAgICAgICAgICBjYXNlIE5TT3RoZXJNb3VzZURvd246Ci0gICAgICAgICAgICAgICAgYnV0dG9u
TnVtYmVyID0gW2N1cnJlbnRFdmVudCBidXR0b25OdW1iZXJdOwotICAgICAgICAgICAgICAgIGNs
aWNrQ291bnQgPSBbY3VycmVudEV2ZW50IGNsaWNrQ291bnRdOwotICAgICAgICAgICAgICAgIGV2
ZW50VHlwZSA9IE5QQ29jb2FFdmVudE1vdXNlRG93bjsKLSAgICAgICAgICAgICAgICAvLyBUaGUg
cGx1Z2luIG5lZWRzIGZvY3VzIHRvIHJlY2VpdmUga2V5Ym9hcmQgZXZlbnRzCi0gICAgICAgICAg
ICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX3BhcmVudEZyYW1lLT5wYWdlKCkpCi0gICAgICAgICAg
ICAgICAgICAgIHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5zZXRGb2N1c2VkRnJhbWUobV9wYXJl
bnRGcmFtZSk7Ci0gICAgICAgICAgICAgICAgbV9wYXJlbnRGcmFtZS0+ZG9jdW1lbnQoKS0+c2V0
Rm9jdXNlZE5vZGUobV9lbGVtZW50KTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgICAKLSAgICAgICAgICAgIGNhc2UgTlNMZWZ0TW91c2VVcDoKLSAgICAgICAgICAgIGNh
c2UgTlNSaWdodE1vdXNlVXA6Ci0gICAgICAgICAgICBjYXNlIE5TT3RoZXJNb3VzZVVwOgotICAg
ICAgICAgICAgICAgIGJ1dHRvbk51bWJlciA9IFtjdXJyZW50RXZlbnQgYnV0dG9uTnVtYmVyXTsK
LSAgICAgICAgICAgICAgICBjbGlja0NvdW50ID0gW2N1cnJlbnRFdmVudCBjbGlja0NvdW50XTsK
LSAgICAgICAgICAgICAgICBldmVudFR5cGUgPSBOUENvY29hRXZlbnRNb3VzZVVwOwotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgY2FzZSBOU01v
dXNlTW92ZWQ6Ci0gICAgICAgICAgICAgICAgZXZlbnRUeXBlID0gTlBDb2NvYUV2ZW50TW91c2VN
b3ZlZDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAg
ICAgIGNhc2UgTlNMZWZ0TW91c2VEcmFnZ2VkOgotICAgICAgICAgICAgY2FzZSBOU1JpZ2h0TW91
c2VEcmFnZ2VkOgotICAgICAgICAgICAgY2FzZSBOU090aGVyTW91c2VEcmFnZ2VkOgotICAgICAg
ICAgICAgICAgIGJ1dHRvbk51bWJlciA9IFtjdXJyZW50RXZlbnQgYnV0dG9uTnVtYmVyXTsKLSAg
ICAgICAgICAgICAgICBldmVudFR5cGUgPSBOUENvY29hRXZlbnRNb3VzZURyYWdnZWQ7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBjYXNlIE5T
TW91c2VFbnRlcmVkOgotICAgICAgICAgICAgICAgIGV2ZW50VHlwZSA9IE5QQ29jb2FFdmVudE1v
dXNlRW50ZXJlZDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAKLSAg
ICAgICAgICAgIGNhc2UgTlNNb3VzZUV4aXRlZDoKLSAgICAgICAgICAgICAgICBldmVudFR5cGUg
PSBOUENvY29hRXZlbnRNb3VzZUV4aXRlZDsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBOUENvY29hRXZl
bnQgY29jb2FFdmVudDsKLSAgICAgICAgaW5pdGlhbGl6ZU5QQ29jb2FFdmVudCgmY29jb2FFdmVu
dCk7Ci0gICAgICAgIAotICAgICAgICBjb2NvYUV2ZW50LnR5cGUgPSBldmVudFR5cGU7Ci0gICAg
ICAgIGlmICghKE5QQ29jb2FFdmVudE1vdXNlRW50ZXJlZCA9PSBldmVudFR5cGUgfHwgTlBDb2Nv
YUV2ZW50TW91c2VFeGl0ZWQgPT0gZXZlbnRUeXBlKSkgewotICAgICAgICAgICAgY29jb2FFdmVu
dC5kYXRhLm1vdXNlLmJ1dHRvbk51bWJlciA9IGJ1dHRvbk51bWJlcjsKLSAgICAgICAgICAgIGNv
Y29hRXZlbnQuZGF0YS5tb3VzZS5jbGlja0NvdW50ID0gY2xpY2tDb3VudDsKLSAgICAgICAgfQot
ICAgICAgICAKLSAgICAgICAgY29jb2FFdmVudC5kYXRhLm1vdXNlLnBsdWdpblggPSBldmVudC0+
bGF5ZXJYKCkgLSBtX25wV2luZG93LnggKyBtX3dpbmRvd1JlY3QueCgpIC0gbV9lbGVtZW50LT5v
ZmZzZXRMZWZ0KCk7Ci0gICAgICAgIGNvY29hRXZlbnQuZGF0YS5tb3VzZS5wbHVnaW5ZID0gZXZl
bnQtPmxheWVyWSgpIC0gbV9ucFdpbmRvdy55ICsgbV93aW5kb3dSZWN0LnkoKSAtIG1fZWxlbWVu
dC0+b2Zmc2V0VG9wKCk7Ci0gICAgICAgIGNvY29hRXZlbnQuZGF0YS5tb3VzZS5kZWx0YVggPSBb
Y3VycmVudEV2ZW50IGRlbHRhWF07Ci0gICAgICAgIGNvY29hRXZlbnQuZGF0YS5tb3VzZS5kZWx0
YVkgPSBbY3VycmVudEV2ZW50IGRlbHRhWV07Ci0gICAgICAgIGNvY29hRXZlbnQuZGF0YS5tb3Vz
ZS5kZWx0YVogPSBbY3VycmVudEV2ZW50IGRlbHRhWl07Ci0gICAgICAgIGNvY29hRXZlbnQuZGF0
YS5tb3VzZS5tb2RpZmllckZsYWdzID0gZ2V0TW9kaWZpZXJzKGV2ZW50KTsKLSAgICAgICAgCi0g
ICAgICAgIGludDE2X3QgcmVzcG9uc2UgPSBkaXNwYXRjaE5QQ29jb2FFdmVudChjb2NvYUV2ZW50
KTsKLSAgICAgICAgaWYocmVzcG9uc2UgPSBrTlBFdmVudE5vdEhhbmRsZWQpIHsKLSAgICAgICAg
ICAgIExPRyhFdmVudHMsICJQbHVnaW5WaWV3OjpoYW5kbGVNb3VzZUV2ZW50KCk6IE1vdXNlIGV2
ZW50IHR5cGUgJWQgYXQgJWQsJWQgbm90IGFjY2VwdGVkIiwgY29jb2FFdmVudC50eXBlCi0gICAg
ICAgICAgICAgICAgY29jb2FFdmVudC5kYXRhLm1vdXNlLngsIGNvY29hRXZlbnQuZGF0YS5tb3Vz
ZS55KTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgLy8gU2FmYXJpIHBvbGljeSBpcyB0
byByZXR1cm4gdHJ1ZSBmb3IgYWxsIG1vdXNlIGV2ZW50cywgYmVjYXVzZSBzb21lIHBsdWdpbnMK
LSAgICAgICAgLy8gcmV0dXJuIGZhbHNlIGV2ZW4gaWYgdGhleSBoYXZlIGhhbmRsZWQgdGhlIGV2
ZW50LgotICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICB9CisKKyAgICBO
UENvY29hRXZlbnQgY29jb2FFdmVudDsKKyAgICBpbml0aWFsaXplTlBDb2NvYUV2ZW50KCZjb2Nv
YUV2ZW50KTsKKworICAgIGNvY29hRXZlbnQudHlwZSA9IGV2ZW50VHlwZTsKKyAgICBpZiAoIShO
UENvY29hRXZlbnRNb3VzZUVudGVyZWQgPT0gZXZlbnRUeXBlIHx8IE5QQ29jb2FFdmVudE1vdXNl
RXhpdGVkID09IGV2ZW50VHlwZSkpIHsKKyAgICAgICAgY29jb2FFdmVudC5kYXRhLm1vdXNlLmJ1
dHRvbk51bWJlciA9IGJ1dHRvbk51bWJlcjsKKyAgICAgICAgY29jb2FFdmVudC5kYXRhLm1vdXNl
LmNsaWNrQ291bnQgPSBjbGlja0NvdW50OworICAgIH0KKworICAgIGNvY29hRXZlbnQuZGF0YS5t
b3VzZS5wbHVnaW5YID0gZXZlbnQtPmxheWVyWCgpIC0gbV9ucFdpbmRvdy54ICsgbV93aW5kb3dS
ZWN0LngoKSAtIG1fZWxlbWVudC0+b2Zmc2V0TGVmdCgpOworICAgIGNvY29hRXZlbnQuZGF0YS5t
b3VzZS5wbHVnaW5ZID0gZXZlbnQtPmxheWVyWSgpIC0gbV9ucFdpbmRvdy55ICsgbV93aW5kb3dS
ZWN0LnkoKSAtIG1fZWxlbWVudC0+b2Zmc2V0VG9wKCk7CisgICAgY29jb2FFdmVudC5kYXRhLm1v
dXNlLmRlbHRhWCA9IFtjdXJyZW50RXZlbnQgZGVsdGFYXTsKKyAgICBjb2NvYUV2ZW50LmRhdGEu
bW91c2UuZGVsdGFZID0gW2N1cnJlbnRFdmVudCBkZWx0YVldOworICAgIGNvY29hRXZlbnQuZGF0
YS5tb3VzZS5kZWx0YVogPSBbY3VycmVudEV2ZW50IGRlbHRhWl07CisgICAgY29jb2FFdmVudC5k
YXRhLm1vdXNlLm1vZGlmaWVyRmxhZ3MgPSBnZXRNb2RpZmllcnMoZXZlbnQpOworCisgICAgaW50
MTZfdCByZXNwb25zZSA9IGRpc3BhdGNoTlBDb2NvYUV2ZW50KGNvY29hRXZlbnQpOworICAgIGlm
KHJlc3BvbnNlID09IGtOUEV2ZW50Tm90SGFuZGxlZCkgeworICAgICAgICBMT0coRXZlbnRzLCAi
UGx1Z2luVmlldzo6aGFuZGxlTW91c2VFdmVudCgpOiBNb3VzZSBldmVudCB0eXBlICVkIGF0ICVk
LCVkIG5vdCBhY2NlcHRlZCIsIGNvY29hRXZlbnQudHlwZSwKKyAgICAgICAgICAgIGNvY29hRXZl
bnQuZGF0YS5tb3VzZS5wbHVnaW5YLCBjb2NvYUV2ZW50LmRhdGEubW91c2UucGx1Z2luWSk7Cisg
ICAgfQorCisgICAgLy8gU2FmYXJpIHBvbGljeSBpcyB0byByZXR1cm4gdHJ1ZSBmb3IgYWxsIG1v
dXNlIGV2ZW50cywgYmVjYXVzZSBzb21lIHBsdWdpbnMKKyAgICAvLyByZXR1cm4gZmFsc2UgZXZl
biBpZiB0aGV5IGhhdmUgaGFuZGxlZCB0aGUgZXZlbnQuCisgICAgZXZlbnQtPnNldERlZmF1bHRI
YW5kbGVkKCk7CiB9CiAgICAgCiB2b2lkIFBsdWdpblZpZXc6OmhhbmRsZUtleWJvYXJkRXZlbnQo
S2V5Ym9hcmRFdmVudCogZXZlbnQpCkBAIC04MTcsMjI2ICs2NDIsNzQgQEAgdm9pZCBQbHVnaW5W
aWV3OjpoYW5kbGVLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogICAgIGlmICgh
bV9pc1N0YXJ0ZWQpCiAgICAgICAgIHJldHVybjsKICAgICBMT0coUGx1Z2lucywgIlBsdWdpblZp
ZXc6OmhhbmRsZUtleWJvYXJkRXZlbnQoKSAtLS0tLS0tLS0tLS0tLS0tLSAiKTsKLSAgICAKKwog
ICAgIExPRyhQbHVnaW5zLCAiUFY6OmhLRSgpOiBLRS5rZXlDb2RlOiAweCUwMlgsIEtFLmNoYXJD
b2RlOiAlZCIsCiAgICAgICAgIGV2ZW50LT5rZXlDb2RlKCksIGV2ZW50LT5jaGFyQ29kZSgpKTsK
LSAgICAKLSNpZm5kZWYgTlBfTk9fQ0FSQk9OCi0gICAgaWYgKG1fZXZlbnRNb2RlbCAhPSBOUEV2
ZW50TW9kZWxDb2NvYSkgewotICAgICAgICBFdmVudFJlY29yZCByZWNvcmQ7Ci0gICAgICAgIGlm
IChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQpIHsKLSAgICAgICAg
ICAgIC8vIFRoaXMgZXZlbnQgaXMgdGhlIHJlc3VsdCBvZiBhIFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dDo6S2V5RG93biB3aGljaAotICAgICAgICAgICAgLy8gd2FzIGRpc2FtYmlndWF0ZWQgaW50byBh
IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UmF3S2V5RG93bi4gU2luY2UKLSAgICAgICAgICAgIC8v
IHdlIGRvbid0IGhhdmUgYWNjZXNzIHRvIHRoZSB0ZXh0IGhlcmUsIHdlIHJldHVybiwgYW5kIHdh
aXQgZm9yIHRoZQotICAgICAgICAgICAgLy8gY29ycmVzcG9uZGluZyBldmVudCBiYXNlZCBvbiBQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkNoYXIuCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0gZWxzZSBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkua2V5cHJlc3NFdmVudCkg
ewotICAgICAgICAgICAgLy8gV2hpY2ggd291bGQgYmUgdGhpcyBvbmUuIFRoaXMgZXZlbnQgd2Fz
IGRpc2FtYmlndWF0ZWQgZnJvbSB0aGUgc2FtZQotICAgICAgICAgICAgLy8gUGxhdGZvcm1LZXli
b2FyZEV2ZW50OjpLZXlEb3duLCBidXQgdG8gYSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkNoYXIs
Ci0gICAgICAgICAgICAvLyB3aGljaCByZXRhaW5zIHRoZSB0ZXh0IGZyb20gdGhlIG9yaWdpbmFs
IGV2ZW50LiBTbywgd2UgY2FuIHNhZmVseSBwYXNzCi0gICAgICAgICAgICAvLyBvbiB0aGUgZXZl
bnQgYXMgYSBrZXktZG93biBldmVudCB0byB0aGUgcGx1Z2luLgotICAgICAgICAgICAgcmVjb3Jk
LndoYXQgPSBrZXlEb3duOwotICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZl
bnROYW1lcygpLmtleXVwRXZlbnQpIHsKLSAgICAgICAgICAgIC8vIFBsYXRmb3JtS2V5Ym9hcmRF
dmVudDo6S2V5VXAgZXZlbnRzIGFsd2F5cyBoYXZlIHRoZSB0ZXh0LCBzbyBub3RoaW5nCi0gICAg
ICAgICAgICAvLyBmYW5jeSBoZXJlLgotICAgICAgICAgICAgcmVjb3JkLndoYXQgPSBrZXlVcDsK
LSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAg
ICAKLSAgICAgICAgY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50KiBwbGF0Zm9ybUV2ZW50ID0g
ZXZlbnQtPmtleUV2ZW50KCk7Ci0gICAgICAgIGludCBrZXlDb2RlID0gcGxhdGZvcm1FdmVudC0+
bmF0aXZlVmlydHVhbEtleUNvZGUoKTsKLSAgICAgICAgCi0gICAgICAgIGNvbnN0IFN0cmluZyB0
ZXh0ID0gcGxhdGZvcm1FdmVudC0+dGV4dCgpOwotICAgICAgICBpZiAodGV4dC5sZW5ndGgoKSA8
IDEpIHsKLSAgICAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBXVEY6OlJldGFpblB0cjxD
RlN0cmluZ1JlZj4gY2ZUZXh0ID0gYWRvcHRDRih0ZXh0LmNyZWF0ZUNGU3RyaW5nKCkpOwotICAg
ICAgICAKLSAgICAgICAgTE9HKFBsdWdpbnMsICJQVjo6aEtFKCk6IFBLRS50ZXh0OiAlcywgUEtF
LnVubW9kaWZpZWRUZXh0OiAlcywgUEtFLmtleUlkZW50aWZpZXI6ICVzIiwKLSAgICAgICAgICAg
IHRleHQuYXNjaWkoKS5kYXRhKCksIHBsYXRmb3JtRXZlbnQtPnVubW9kaWZpZWRUZXh0KCkuYXNj
aWkoKS5kYXRhKCksCi0gICAgICAgICAgICBwbGF0Zm9ybUV2ZW50LT5rZXlJZGVudGlmaWVyKCku
YXNjaWkoKS5kYXRhKCkpOwotICAgICAgICAKLSAgICAgICAgY2hhciBjaGFyQ29kZXNbMl0gPSB7
IDAsIDAgfTsKLSAgICAgICAgaWYgKCFDRlN0cmluZ0dldENTdHJpbmcoY2ZUZXh0LmdldCgpLCBj
aGFyQ29kZXMsIDIsIENGU3RyaW5nR2V0U3lzdGVtRW5jb2RpbmcoKSkpIHsKLSAgICAgICAgICAg
IExPR19FUlJPUigiQ291bGQgbm90IHJlc29sdmUgY2hhcmFjdGVyIGNvZGUgdXNpbmcgc3lzdGVt
IGVuY29kaW5nLiIpOwotICAgICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7Ci0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHJlY29yZC53
aGVyZSA9IGdsb2JhbE1vdXNlUG9zRm9yUGx1Z2luKCk7Ci0gICAgICAgIHJlY29yZC5tb2RpZmll
cnMgPSBtb2RpZmllcnNGb3JFdmVudChldmVudCk7Ci0gICAgICAgIHJlY29yZC5tZXNzYWdlID0g
KChrZXlDb2RlICYgMHhGRikgPDwgOCkgfCAoY2hhckNvZGVzWzBdICYgMHhGRik7Ci0gICAgICAg
IHJlY29yZC53aGVuID0gVGlja0NvdW50KCk7Ci0gICAgICAgIAotICAgICAgICBMT0coUGx1Z2lu
cywgIlBWOjpoS0UoKTogcmVjb3JkLm1vZGlmaWVyczogJWQiLCByZWNvcmQubW9kaWZpZXJzKTsK
LSAgICAgICAgCi0jaWYgUExBVEZPUk0oUVQpCi0gICAgICAgIExPRyhQbHVnaW5zLCAiUFY6OmhL
RSgpOiBQS0UucXRFdmVudCgpLT5uYXRpdmVWaXJ0dWFsS2V5OiAweCUwMlgsIGNoYXJDb2RlOiAl
ZCIsCi0gICAgICAgICAgICBrZXlDb2RlLCBpbnQodWNoYXIoY2hhckNvZGVzWzBdKSkpOwotI2Vu
ZGlmCi0gICAgICAgIAotICAgICAgICBpZiAoIWRpc3BhdGNoTlBFdmVudChyZWNvcmQpKQotICAg
ICAgICAgICAgTE9HKEV2ZW50cywgIlBsdWdpblZpZXc6OmhhbmRsZUtleWJvYXJkRXZlbnQoKTog
S2V5Ym9hcmQgZXZlbnQgdHlwZSAlZCBub3QgYWNjZXB0ZWQiLCByZWNvcmQud2hhdCk7Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwotICAgIH0g
ZWxzZQotI2VuZGlmCi0gICAgewotICAgICAgICBOU0V2ZW50ICpjdXJyZW50RXZlbnQgPSBbTlNB
cHAgY3VycmVudEV2ZW50XTsKLSAgICAgICAgTlBDb2NvYUV2ZW50VHlwZSBldmVudFR5cGU7Ci0g
ICAgICAgIE5TRXZlbnRUeXBlIHR5cGUgPSBbY3VycmVudEV2ZW50IHR5cGVdOwotICAgICAgICAK
LSAgICAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgICAgICAgICBjYXNlIE5TS2V5RG93bjoKLSAg
ICAgICAgICAgICAgICBldmVudFR5cGUgPSBOUENvY29hRXZlbnRLZXlEb3duOwotICAgICAgICAg
ICAgICAgIG1fa2V5RG93blNlbnQgPSB0cnVlOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgY2FzZSBOU0tleVVwOgotICAgICAgICAgICAgICAgIGlmIChtX2Rpc3JlZ2FyZEtl
eVVwQ291bnRlciA+IDApIHsKLSAgICAgICAgICAgICAgICAgICAgbV9kaXNyZWdhcmRLZXlVcENv
dW50ZXItLTsKLSAgICAgICAgICAgICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgZXZlbnRUeXBlID0gTlBDb2NvYUV2ZW50S2V5VXA7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICBjYXNlIE5TRmxhZ3NDaGFuZ2VkOgotICAgICAgICAgICAgICAg
IGV2ZW50VHlwZSA9IE5QQ29jb2FFdmVudEZsYWdzQ2hhbmdlZDsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0gICAgICAgIAotICAgICAgICBOUENvY29hRXZlbnQgY29jb2FFdmVudDsKLSAgICAg
ICAgaW5pdGlhbGl6ZU5QQ29jb2FFdmVudCgmY29jb2FFdmVudCk7Ci0gICAgICAgIGNvY29hRXZl
bnQudHlwZSA9IGV2ZW50VHlwZTsKLSAgICAgICAgaWYgKGV2ZW50VHlwZSAhPSBOUENvY29hRXZl
bnRGbGFnc0NoYW5nZWQpIHsKLSAgICAgICAgICAgIE5TU3RyaW5nICpjaGFyYWN0ZXJzID0gW2N1
cnJlbnRFdmVudCBjaGFyYWN0ZXJzXTsKLSAgICAgICAgICAgIE5TU3RyaW5nICpjaGFyYWN0ZXJz
SWdub3JpbmdNb2RpZmllcnMgPSBbY3VycmVudEV2ZW50IGNoYXJhY3RlcnNJZ25vcmluZ01vZGlm
aWVyc107Ci0gICAgICAgICAgICBjb2NvYUV2ZW50LmRhdGEua2V5LmNoYXJhY3RlcnMgPSByZWlu
dGVycHJldF9jYXN0PE5QTlNTdHJpbmcqPihjaGFyYWN0ZXJzKTsKLSAgICAgICAgICAgIGNvY29h
RXZlbnQuZGF0YS5rZXkuY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzID0gcmVpbnRlcnByZXRf
Y2FzdDxOUE5TU3RyaW5nKj4oY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzKTsKLSAgICAgICAg
ICAgIGNvY29hRXZlbnQuZGF0YS5rZXkuaXNBUmVwZWF0ID0gW2N1cnJlbnRFdmVudCBpc0FSZXBl
YXRdOwotICAgICAgICAgICAgY29jb2FFdmVudC5kYXRhLmtleS5rZXlDb2RlID0gW2N1cnJlbnRF
dmVudCBrZXlDb2RlXTsKLSAgICAgICAgICAgIGNvY29hRXZlbnQuZGF0YS5rZXkubW9kaWZpZXJG
bGFncyA9IGdldE1vZGlmaWVycyhldmVudCk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAg
IGludDE2X3QgcmVzcG9uc2UgPSBkaXNwYXRjaE5QQ29jb2FFdmVudChjb2NvYUV2ZW50KTsKLSAg
ICAgICAgaWYocmVzcG9uc2UgPT0ga05QRXZlbnROb3RIYW5kbGVkKSB7Ci0gICAgICAgICAgICBM
T0coRXZlbnRzLCAiUGx1Z2luVmlldzo6aGFuZGxlS2V5Ym9hcmRFdmVudCgpOiBLZXlib2FyZCBl
dmVudCB0eXBlICVkIG5vdCBhY2NlcHRlZCIsIGNvY29hRXZlbnQudHlwZSk7Ci0gICAgICAgIH0g
ZWxzZSBpZiAocmVzcG9uc2UgPT0ga05QRXZlbnRTdGFydElNRSkgewotICAgICAgICAgICAgLy8g
aW5jcmVtZW50IGNvdW50ZXIgYW5kIHJlc2VuZCBhcyBhIHRleHQgaW5wdXQKLSAgICAgICAgICAg
IG1fZGlzcmVnYXJkS2V5VXBDb3VudGVyKys7Ci0gICAgICAgICAgICBOUENvY29hRXZlbnQgdGV4
dEV2ZW50OwotICAgICAgICAgICAgaW5pdGlhbGl6ZU5QQ29jb2FFdmVudCgmdGV4dEV2ZW50KTsK
LSAgICAgICAgICAgIHRleHRFdmVudC50eXBlID0gTlBDb2NvYUV2ZW50VGV4dElucHV0OwotICAg
ICAgICAgICAgdGV4dEV2ZW50LmRhdGEudGV4dC50ZXh0ID0gcmVpbnRlcnByZXRfY2FzdDxOUE5T
U3RyaW5nKj4oW2N1cnJlbnRFdmVudCBjaGFyYWN0ZXJzXSk7Ci0gICAgICAgICAgICByZXNwb25z
ZSA9IGRpc3BhdGNoTlBDb2NvYUV2ZW50KHRleHRFdmVudCk7Ci0gICAgICAgICAgICBpZihyZXNw
b25zZSA9PSBrTlBFdmVudE5vdEhhbmRsZWQpCi0gICAgICAgICAgICAgICAgTE9HKEV2ZW50cywg
IlBsdWdpblZpZXc6OmhhbmRsZUtleWJvYXJkRXZlbnQoKTogS2V5Ym9hcmQgZXZlbnQgdHlwZSAl
ZCBub3QgYWNjZXB0ZWQiLCBjb2NvYUV2ZW50LnR5cGUpOwotICAgICAgICB9Ci0gICAgICAgIAot
ICAgICAgICAvLyBBbGwga2V5Ym9hcmQgZXZlbnRzIG5lZWQgdG8gYmUgaGFuZGxlZCB0byBwcmV2
ZW50IHRoZW0gZmFsbGluZwotICAgICAgICAvLyB0aHJvdWdoIHRvIHRoZSBwYWdlLCB1bmxlc3Mg
dGhleSBhcmUgTWV0YSBrZXkgZXZlbnRzLCBpbiB3aGljaAotICAgICAgICAvLyBjYXNlIHRoZXkg
YXJlLCB1bmxlc3MgdGhleSBhcmUgQ21kK2EuIEZyb20gV2ViS2l0MiwgcG9zc2libHkKLSAgICAg
ICAgLy8gbm90IHRoZSBtb3N0IGVsZWdhbnQgcGllY2Ugb2Yga2V5IGhhbmRsaW5nIGNvZGUuLi4u
LgotICAgICAgICBpZiAoZXZlbnQtPm1ldGFLZXkoKSkgewotICAgICAgICAgICAgaWYgKGNvY29h
RXZlbnQuZGF0YS5rZXkua2V5Q29kZSA9PSAwKQorCisgICAgTlNFdmVudCAqY3VycmVudEV2ZW50
ID0gW05TQXBwIGN1cnJlbnRFdmVudF07CisgICAgTlBDb2NvYUV2ZW50VHlwZSBldmVudFR5cGU7
CisgICAgTlNFdmVudFR5cGUgdHlwZSA9IFtjdXJyZW50RXZlbnQgdHlwZV07CisKKyAgICBzd2l0
Y2ggKHR5cGUpIHsKKyAgICAgICAgY2FzZSBOU0tleURvd246CisgICAgICAgICAgICBldmVudFR5
cGUgPSBOUENvY29hRXZlbnRLZXlEb3duOworICAgICAgICAgICAgbV9rZXlEb3duU2VudCA9IHRy
dWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBOU0tleVVwOgorICAgICAgICAg
ICAgaWYgKG1fZGlzcmVnYXJkS2V5VXBDb3VudGVyID4gMCkgeworICAgICAgICAgICAgICAgIG1f
ZGlzcmVnYXJkS2V5VXBDb3VudGVyLS07CiAgICAgICAgICAgICAgICAgZXZlbnQtPnNldERlZmF1
bHRIYW5kbGVkKCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBlbHNlIGlnbm9y
ZSwgaXQncyBhIE1ldGEgS2V5IGV2ZW50IGZvciB0aGUgYnJvd3Nlci4KLSAgICAgICAgICAgIGV2
ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwotICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZXZlbnRUeXBlID0gTlBDb2NvYUV2ZW50
S2V5VXA7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBOU0ZsYWdzQ2hhbmdlZDoK
KyAgICAgICAgICAgIGV2ZW50VHlwZSA9IE5QQ29jb2FFdmVudEZsYWdzQ2hhbmdlZDsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuOwogICAg
IH0KLX0KLSAgICAKLSNpZm5kZWYgTlBfTk9fQ0FSQk9OCi12b2lkIFBsdWdpblZpZXc6Om51bGxF
dmVudFRpbWVyRmlyZWQoVGltZXI8UGx1Z2luVmlldz4qKQotewotICAgIEV2ZW50UmVjb3JkIHJl
Y29yZDsKLQotICAgIHJlY29yZC53aGF0ID0gbnVsbEV2ZW50OwotICAgIHJlY29yZC5tZXNzYWdl
ID0gMDsKLSAgICByZWNvcmQud2hlbiA9IFRpY2tDb3VudCgpOwotICAgIHJlY29yZC53aGVyZSA9
IG1fbGFzdE1vdXNlUG9zOwotICAgIHJlY29yZC5tb2RpZmllcnMgPSBHZXRDdXJyZW50S2V5TW9k
aWZpZXJzKCk7Ci0gICAgaWYgKCFCdXR0b24oKSkKLSAgICAgICAgcmVjb3JkLm1vZGlmaWVycyB8
PSBidG5TdGF0ZTsKLQotICAgIGlmICghZGlzcGF0Y2hOUEV2ZW50KHJlY29yZCkpCi0gICAgICAg
IExPRyhFdmVudHMsICJQbHVnaW5WaWV3OjpudWxsRXZlbnRUaW1lckZpcmVkKCk6IE51bGwgZXZl
bnQgbm90IGFjY2VwdGVkIik7Ci19Ci0jZW5kaWYKLQotI2lmbmRlZiBOUF9OT19DQVJCT04KLXN0
YXRpYyBpbnQgbW9kaWZpZXJzRm9yRXZlbnQoVUlFdmVudFdpdGhLZXlTdGF0ZSogZXZlbnQpCi17
Ci0gICAgaW50IG1vZGlmaWVycyA9IDA7Ci0KLSAgICBpZiAoZXZlbnQtPmN0cmxLZXkoKSkKLSAg
ICAgICAgbW9kaWZpZXJzIHw9IGNvbnRyb2xLZXk7Ci0KLSAgICBpZiAoZXZlbnQtPmFsdEtleSgp
KQotICAgICAgICBtb2RpZmllcnMgfD0gb3B0aW9uS2V5OwotCi0gICAgaWYgKGV2ZW50LT5tZXRh
S2V5KCkpCi0gICAgICAgIG1vZGlmaWVycyB8PSBjbWRLZXk7Ci0KLSAgICBpZiAoZXZlbnQtPnNo
aWZ0S2V5KCkpCi0gICAgICAgIG1vZGlmaWVycyB8PSBzaGlmdEtleTsKLQotICAgICByZXR1cm4g
bW9kaWZpZXJzOwotfQotI2VuZGlmCiAKLSNpZm5kZWYgTlBfTk9fQ0FSQk9OCi1Qb2ludCBQbHVn
aW5WaWV3OjpnbG9iYWxNb3VzZVBvc0ZvclBsdWdpbigpIGNvbnN0Ci17Ci0gICAgUG9pbnQgcG9z
OwotICAgIEdldEdsb2JhbE1vdXNlKCZwb3MpOwotCi0gICAgcmV0dXJuIHBvczsKLX0KLSNlbmRp
ZgotCi0jaWZuZGVmIE5QX05PX0NBUkJPTgotUG9pbnQgUGx1Z2luVmlldzo6bW91c2VQb3NGb3JQ
bHVnaW4oTW91c2VFdmVudCogZXZlbnQpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKGV2ZW50KTsKLSAg
ICBpZiAocGxhdGZvcm1QbHVnaW5XaWRnZXQoKSkKLSAgICAgICAgcmV0dXJuIGdsb2JhbE1vdXNl
UG9zRm9yUGx1Z2luKCk7Ci0KLSAgICBpZiAoZXZlbnQtPmJ1dHRvbigpID09IDIpIHsKLSAgICAg
ICAgLy8gYWx3YXlzIHBhc3MgdGhlIGdsb2JhbCBwb3NpdGlvbiBmb3IgcmlnaHQtY2xpY2sgc2lu
Y2UgRmxhc2ggdXNlcyBpdCB0byBwb3NpdGlvbiB0aGUgY29udGV4dCBtZW51Ci0gICAgICAgIHJl
dHVybiBnbG9iYWxNb3VzZVBvc0ZvclBsdWdpbigpOworICAgIE5QQ29jb2FFdmVudCBjb2NvYUV2
ZW50OworICAgIGluaXRpYWxpemVOUENvY29hRXZlbnQoJmNvY29hRXZlbnQpOworICAgIGNvY29h
RXZlbnQudHlwZSA9IGV2ZW50VHlwZTsKKyAgICBpZiAoZXZlbnRUeXBlICE9IE5QQ29jb2FFdmVu
dEZsYWdzQ2hhbmdlZCkgeworICAgICAgICBOU1N0cmluZyAqY2hhcmFjdGVycyA9IFtjdXJyZW50
RXZlbnQgY2hhcmFjdGVyc107CisgICAgICAgIE5TU3RyaW5nICpjaGFyYWN0ZXJzSWdub3JpbmdN
b2RpZmllcnMgPSBbY3VycmVudEV2ZW50IGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyc107Cisg
ICAgICAgIGNvY29hRXZlbnQuZGF0YS5rZXkuY2hhcmFjdGVycyA9IHJlaW50ZXJwcmV0X2Nhc3Q8
TlBOU1N0cmluZyo+KGNoYXJhY3RlcnMpOworICAgICAgICBjb2NvYUV2ZW50LmRhdGEua2V5LmNo
YXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyA9IHJlaW50ZXJwcmV0X2Nhc3Q8TlBOU1N0cmluZyo+
KGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyk7CisgICAgICAgIGNvY29hRXZlbnQuZGF0YS5r
ZXkuaXNBUmVwZWF0ID0gW2N1cnJlbnRFdmVudCBpc0FSZXBlYXRdOworICAgICAgICBjb2NvYUV2
ZW50LmRhdGEua2V5LmtleUNvZGUgPSBbY3VycmVudEV2ZW50IGtleUNvZGVdOworICAgICAgICBj
b2NvYUV2ZW50LmRhdGEua2V5Lm1vZGlmaWVyRmxhZ3MgPSBnZXRNb2RpZmllcnMoZXZlbnQpOwog
ICAgIH0KIAotICAgIFBvaW50IHBvczsKLSAgICBJbnRQb2ludCBwb3N0Wm9vbVBvcyA9IHJvdW5k
ZWRJbnRQb2ludChtX2VsZW1lbnQtPnJlbmRlcmVyKCktPmFic29sdXRlVG9Mb2NhbChldmVudC0+
YWJzb2x1dGVMb2NhdGlvbigpKSk7Ci0gICAgcG9zLmggPSBwb3N0Wm9vbVBvcy54KCkgKyBtX3dp
bmRvd1JlY3QueCgpOwotICAgIC8vIFRoZSBudW1iZXIgMjIgaXMgdGhlIGhlaWdodCBvZiB0aGUg
dGl0bGUgYmFyLiBBcyB0byB3aHkgaXQgZmlndXJlcyBpbiB0aGUgY2FsY3VsYXRpb24gYmVsb3cK
LSAgICAvLyBpcyBsZWZ0IGFzIGFuIGV4ZXJjaXNlIHRvIHRoZSByZWFkZXIgOi0pCi0gICAgcG9z
LnYgPSBwb3N0Wm9vbVBvcy55KCkgKyBtX3dpbmRvd1JlY3QueSgpIC0gMjI7Ci0gICAgcmV0dXJu
IHBvczsKLX0KLSNlbmRpZgotCi0jaWZuZGVmIE5QX05PX0NBUkJPTgotYm9vbCBQbHVnaW5WaWV3
OjpkaXNwYXRjaE5QRXZlbnQoTlBFdmVudCYgZXZlbnQpCi17Ci0gICAgUGx1Z2luVmlldzo6c2V0
Q3VycmVudFBsdWdpblZpZXcodGhpcyk7Ci0gICAgSlNDOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBk
cm9wQWxsTG9ja3MoSlNET01XaW5kb3dCYXNlOjpjb21tb25WTSgpKTsKLSAgICBzZXRDYWxsaW5n
UGx1Z2luKHRydWUpOwotCi0gICAgYm9vbCBhY2NlcHRlZCA9IG1fcGx1Z2luLT5wbHVnaW5GdW5j
cygpLT5ldmVudChtX2luc3RhbmNlLCAmZXZlbnQpOworICAgIGludDE2X3QgcmVzcG9uc2UgPSBk
aXNwYXRjaE5QQ29jb2FFdmVudChjb2NvYUV2ZW50KTsKKyAgICBpZihyZXNwb25zZSA9PSBrTlBF
dmVudE5vdEhhbmRsZWQpIHsKKyAgICAgICAgTE9HKEV2ZW50cywgIlBsdWdpblZpZXc6OmhhbmRs
ZUtleWJvYXJkRXZlbnQoKTogS2V5Ym9hcmQgZXZlbnQgdHlwZSAlZCBub3QgYWNjZXB0ZWQiLCBj
b2NvYUV2ZW50LnR5cGUpOworICAgIH0gZWxzZSBpZiAocmVzcG9uc2UgPT0ga05QRXZlbnRTdGFy
dElNRSkgeworICAgICAgICAvLyBpbmNyZW1lbnQgY291bnRlciBhbmQgcmVzZW5kIGFzIGEgdGV4
dCBpbnB1dAorICAgICAgICBtX2Rpc3JlZ2FyZEtleVVwQ291bnRlcisrOworICAgICAgICBOUENv
Y29hRXZlbnQgdGV4dEV2ZW50OworICAgICAgICBpbml0aWFsaXplTlBDb2NvYUV2ZW50KCZ0ZXh0
RXZlbnQpOworICAgICAgICB0ZXh0RXZlbnQudHlwZSA9IE5QQ29jb2FFdmVudFRleHRJbnB1dDsK
KyAgICAgICAgdGV4dEV2ZW50LmRhdGEudGV4dC50ZXh0ID0gcmVpbnRlcnByZXRfY2FzdDxOUE5T
U3RyaW5nKj4oW2N1cnJlbnRFdmVudCBjaGFyYWN0ZXJzXSk7CisgICAgICAgIHJlc3BvbnNlID0g
ZGlzcGF0Y2hOUENvY29hRXZlbnQodGV4dEV2ZW50KTsKKyAgICAgICAgaWYocmVzcG9uc2UgPT0g
a05QRXZlbnROb3RIYW5kbGVkKQorICAgICAgICAgICAgTE9HKEV2ZW50cywgIlBsdWdpblZpZXc6
OmhhbmRsZUtleWJvYXJkRXZlbnQoKTogS2V5Ym9hcmQgZXZlbnQgdHlwZSAlZCBub3QgYWNjZXB0
ZWQiLCBjb2NvYUV2ZW50LnR5cGUpOworICAgIH0KIAotICAgIHNldENhbGxpbmdQbHVnaW4oZmFs
c2UpOwotICAgIFBsdWdpblZpZXc6OnNldEN1cnJlbnRQbHVnaW5WaWV3KDApOwotICAgIHJldHVy
biBhY2NlcHRlZDsKKyAgICAvLyBBbGwga2V5Ym9hcmQgZXZlbnRzIG5lZWQgdG8gYmUgaGFuZGxl
ZCB0byBwcmV2ZW50IHRoZW0gZmFsbGluZworICAgIC8vIHRocm91Z2ggdG8gdGhlIHBhZ2UsIHVu
bGVzcyB0aGV5IGFyZSBNZXRhIGtleSBldmVudHMsIGluIHdoaWNoCisgICAgLy8gY2FzZSB0aGV5
IGFyZSwgdW5sZXNzIHRoZXkgYXJlIENtZCthLiBGcm9tIFdlYktpdDIsIHBvc3NpYmx5CisgICAg
Ly8gbm90IHRoZSBtb3N0IGVsZWdhbnQgcGllY2Ugb2Yga2V5IGhhbmRsaW5nIGNvZGUuLi4uLgor
ICAgIGlmIChldmVudC0+bWV0YUtleSgpKSB7CisgICAgICAgIGlmIChjb2NvYUV2ZW50LmRhdGEu
a2V5LmtleUNvZGUgPT0gMCkKKyAgICAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgp
OworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIGVsc2UgaWdub3JlLCBpdCdzIGEgTWV0YSBLZXkg
ZXZlbnQgZm9yIHRoZSBicm93c2VyLgorICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQo
KTsKKyAgICB9CiB9Ci0jZW5kaWYKLQogCiBpbnQxNl90IFBsdWdpblZpZXc6OmRpc3BhdGNoTlBD
b2NvYUV2ZW50KE5QQ29jb2FFdmVudCYgY29jb2FFdmVudCkKIHsK
</data>
<flag name="review"
          id="223984"
          type_id="1"
          status="+"
          setter="vestbo"
    />
          </attachment>
      

    </bug>

</bugzilla>