<?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>224639</bug_id>
          
          <creation_ts>2021-04-15 18:54:25 -0700</creation_ts>
          <short_desc>Allow using the platform authenticator on non-Touch ID Macs according to Internal requirements</short_desc>
          <delta_ts>2021-04-16 16:52:39 -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>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jiewen Tan">jiewen_tan</reporter>
          <assigned_to name="Jiewen Tan">jiewen_tan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1750888</commentid>
    <comment_count>0</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2021-04-15 18:54:25 -0700</bug_when>
    <thetext>Allow using the platform authenticator on non-Touch ID Macs according to Internal requirements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750896</commentid>
    <comment_count>1</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2021-04-15 19:09:50 -0700</bug_when>
    <thetext>rdar://74698346</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750904</commentid>
    <comment_count>2</comment_count>
      <attachid>426174</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2021-04-15 19:52:43 -0700</bug_when>
    <thetext>Created attachment 426174
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750948</commentid>
    <comment_count>3</comment_count>
      <attachid>426174</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2021-04-15 23:20:48 -0700</bug_when>
    <thetext>Comment on attachment 426174
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=426174&amp;action=review

Patch looks good.

&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:67
&gt; +const uint8_t otherMakeCredentialFlags = 0b01000001; // UP and AT are set.

Ok as-is. Consider using constexpr as it has guaranteed compile time semantics. Also mostly aesthetics, consider using uniform initializer syntax. Both of these suggestions are optional.

&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:430
&gt; +    auto flags = makeCredentialFlags;

Ok as-is. Consider writing using ternary operator to make this a tiny bit more efficient. This suggestion is optional.

&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/LocalConnection.mm:64
&gt; +void LocalConnection::verifyUser(const String&amp; rpId, ClientDataType type, SecAccessControlRef accessControl, UserVerificationRequirement uv, UserVerificationCallback&amp;&amp; completionHandler)

Ok as is. Consider a more descriptive name than &quot;uv&quot;. This suggestion is optional.

&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/LocalConnection.mm:96
&gt; +        if (information &amp;&amp; information[@&quot;UserPresence&quot;])

Ok as-is. Consider removing first conjunct as it&apos;s ok to send a message to nil.

&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/LocalConnection.mm:109
&gt; +        if (uv == UserVerificationRequirement::Required || [m_context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:nullptr]) {

Ok as is. Consider passing nil instead of nullptr.

&gt; Source/WebKit/UIProcess/WebAuthentication/Mock/MockLocalConnection.mm:66
&gt; +            userVerification = UserVerification::Presence;

Ok as is. Consider adding a break statement.

&gt; Source/WebKit/UIProcess/WebAuthentication/Mock/MockLocalConnection.mm:90
&gt; +            userVerification = UserVerification::Presence;

Ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751287</commentid>
    <comment_count>4</comment_count>
      <attachid>426174</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2021-04-16 15:33:17 -0700</bug_when>
    <thetext>Comment on attachment 426174
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=426174&amp;action=review

Thanks Dan for r+ this patch.

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:430
&gt;&gt; +    auto flags = makeCredentialFlags;
&gt; 
&gt; Ok as-is. Consider writing using ternary operator to make this a tiny bit more efficient. This suggestion is optional.

Fixed.

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/LocalConnection.mm:96
&gt;&gt; +        if (information &amp;&amp; information[@&quot;UserPresence&quot;])
&gt; 
&gt; Ok as-is. Consider removing first conjunct as it&apos;s ok to send a message to nil.

Fixed.

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/LocalConnection.mm:109
&gt;&gt; +        if (uv == UserVerificationRequirement::Required || [m_context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:nullptr]) {
&gt; 
&gt; Ok as is. Consider passing nil instead of nullptr.

Fixed.

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/Mock/MockLocalConnection.mm:66
&gt;&gt; +            userVerification = UserVerification::Presence;
&gt; 
&gt; Ok as is. Consider adding a break statement.

Fixed.

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/Mock/MockLocalConnection.mm:90
&gt;&gt; +            userVerification = UserVerification::Presence;
&gt; 
&gt; Ditto

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751298</commentid>
    <comment_count>5</comment_count>
      <attachid>426286</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2021-04-16 15:52:11 -0700</bug_when>
    <thetext>Created attachment 426286
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751321</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-16 16:52:38 -0700</bug_when>
    <thetext>Committed r276180 (236663@main): &lt;https://commits.webkit.org/236663@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 426286.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426174</attachid>
            <date>2021-04-15 19:52:43 -0700</date>
            <delta_ts>2021-04-15 23:20:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224639-20210415195243.patch</filename>
            <type>text/plain</type>
            <size>29965</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2MDg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTM5ZGJmOTU0MWMxMWZh
NDRiODEwYzI1NDg3MjIyYjk3MWM0NTQ4Mi4uNzkxOTViMDljMDIyYmZlOWNiNmIxMTIyYmY2MmI1
YTUzZjk5ZDliYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIxLTA0LTE1ICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgdXNpbmcgdGhl
IHBsYXRmb3JtIGF1dGhlbnRpY2F0b3Igb24gbm9uLVRvdWNoIElEIE1hY3MgYWNjb3JkaW5nIHRv
IEludGVybmFsIHJlcXVpcmVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI0NjM5CisgICAgICAgIDxyZGFyOi8vNzQ2OTgzNDY+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ292ZXJlZCBieSBuZXcg
dGVzdHMgd2l0aGluIGV4aXN0aW5nIHRlc3QgZmlsZXMuCisKKyAgICAgICAgKiB0ZXN0aW5nL01v
Y2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKiB0ZXN0aW5nL01v
Y2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaWRsOgorICAgICAgICBNb2NrIHRlc3Rp
bmcgc3VwcG9ydC4KKwogMjAyMS0wNC0xNSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFw
cGxlLmNvbT4KIAogICAgICAgICBbbWFjT1NdIFN1cHBvcnQgdGhlIFRyYW5zbGF0ZSBtZW51IGl0
ZW0gaW4gZWRpdGFibGUgc2VsZWN0ZWQgdGV4dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAxNzNjZmIxNWEyYTIzZmZk
MDQ3NGQ4NWViN2U5MWJjNmNiM2YzNGUyLi5hMDkyZGRhYTFkN2ExMGRhNWZiZWQ4NGMyNWMwZWM3
MDIyMjU3MDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDIxLTA0LTE1ICBKaWV3ZW4g
VGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgdXNpbmcgdGhlIHBs
YXRmb3JtIGF1dGhlbnRpY2F0b3Igb24gbm9uLVRvdWNoIElEIE1hY3MgYWNjb3JkaW5nIHRvIElu
dGVybmFsIHJlcXVpcmVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjI0NjM5CisgICAgICAgIDxyZGFyOi8vNzQ2OTgzNDY+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tOgorICAgICAgICAoV2ViS2l0
OjpMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlckRlY2lkZVBv
bGljeSk6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtl
Q3JlZGVudGlhbEFmdGVyVXNlclZlcmlmaWNhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkxvY2Fs
QXV0aGVudGljYXRvcjo6Y29udGludWVHZXRBc3NlcnRpb25BZnRlclJlc3BvbnNlU2VsZWN0ZWQp
OgorICAgICAgICAoV2ViS2l0OjpMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlR2V0QXNzZXJ0
aW9uQWZ0ZXJVc2VyVmVyaWZpY2F0aW9uKToKKyAgICAgICAgRG9uJ3Qgc2V0IHRoZSBVc2VyVmVy
aWZpY2F0aW9uIGJpdCBpZiBVc2VyVmVyaWZpY2F0aW9uIGlzIG5vdCBkb25lLgorCisgICAgICAg
ICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQ29ubmVjdGlvbi5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbENvbm5lY3Rp
b24ubW06CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQ29ubmVjdGlvbjo6dmVyaWZ5VXNlcik6Cisg
ICAgICAgIE9ubHkgY2hlY2sgVXNlclByZXNlbmNlIG9uIG5vbi1Ub3VjaCBJRCBNYWNzLgorCisg
ICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsU2VydmljZS5t
bToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxTZXJ2aWNlOjppc0F2YWlsYWJsZSk6CisgICAgICAg
IE1ha2UgdGhlIHBsYXRmb3JtIGF1dGhlbnRpY2F0b3IgYXZhaWxhYmxlIGFjY29yZGluZyB0byBJ
bnRlcm5hbCByZXF1aXJlbWVudHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5tbToKKyAgICAgICAgKFdl
YktpdDo6TW9ja0xvY2FsQ29ubmVjdGlvbjo6dmVyaWZ5VXNlcik6CisgICAgICAgIE1vY2sgdGVz
dGluZyBzdXBwb3J0LgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dl
YkF1dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpnZXRVc2Vy
VmVyaWZpY2F0aW9uUmVxdWlyZW1lbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9XZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhLmg6CisgICAgICAgIEFkZCBhIGhl
bHBlciBmb3IgZXh0cmFjdGluZyB0aGUgVXNlclZlcmlmaWNhdGlvbiBpbnB1dC4KKwogMjAyMS0w
NC0xNSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBX
S0NvbnRlbnRWaWV3IHNob3VsZCBiZWNvbWUgZm9jdXNlZCB3aXRob3V0IHJlcXVpcmluZyAtW1dL
V2ViVmlldyBjYW5CZWNvbWVGb2N1c2VkXSB0byByZXR1cm4gWUVTCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlv
bi5oCmluZGV4IDVhMzA1ZTg0OGQzZjQwNGFlMzViYjFkYjBlMzkwOWRjYTAxM2NhOTYuLjQwYTQ5
Mzc4Mzc4ZjJjZWUwM2IzMjJjNWI4YzNmYmZiM2M5N2U4ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlv
bi5oCkBAIC02NCw3ICs2NCw4IEBAIHN0cnVjdCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1
cmF0aW9uIHsKICAgICBlbnVtIGNsYXNzIFVzZXJWZXJpZmljYXRpb24gOiB1aW50OF90IHsKICAg
ICAgICAgTm8sCiAgICAgICAgIFllcywKLSAgICAgICAgQ2FuY2VsCisgICAgICAgIENhbmNlbCwK
KyAgICAgICAgUHJlc2VuY2UKICAgICB9OwogCiAgICAgc3RydWN0IExvY2FsQ29uZmlndXJhdGlv
biB7CkBAIC0zMDgsNyArMzA5LDggQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJD
b3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpVc2VyVmUKICAgICAgICAg
V2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6VXNlclZlcmlmaWNh
dGlvbiwKICAgICAgICAgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlv
bjo6VXNlclZlcmlmaWNhdGlvbjo6Tm8sCiAgICAgICAgIFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb246OlVzZXJWZXJpZmljYXRpb246OlllcywKLSAgICAgICAgV2Vi
Q29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6VXNlclZlcmlmaWNhdGlv
bjo6Q2FuY2VsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3Vy
YXRpb246OlVzZXJWZXJpZmljYXRpb246OkNhbmNlbCwKKyAgICAgICAgV2ViQ29yZTo6TW9ja1dl
YkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6VXNlclZlcmlmaWNhdGlvbjo6UHJlc2VuY2UK
ICAgICA+OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5pZGwKaW5kZXggNDQ3M2IxMTNlMjUw
M2UyOTRlNDU3YTAwMjE3YTAyMWEzMmVhZjUwZS4uZDlmMmEwMzg4MWNjMjdhZTU4ZTFiY2IxYjg5
MGNhNDI1ZTBjODc5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaWRsCkBAIC02NCw3ICs2NCw4
IEBACiBdIGVudW0gVXNlclZlcmlmaWNhdGlvbiB7CiAgICAgIm5vIiwKICAgICAieWVzIiwKLSAg
ICAiY2FuY2VsIgorICAgICJjYW5jZWwiLAorICAgICJwcmVzZW5jZSIKIH07CiAKIFsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xv
Y2FsQXV0aGVudGljYXRvci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbQppbmRleCBiMTk1MGFhMzM2YzdiOWIy
ZTJhZjZmMGU2NjE0Yzg3YjI1YTNlNDc1Li5jYzc1MTE5ZDk4ZjNmNWZkZjZiMmVlYWQxZDFlMWUx
MWEzM2MxYzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tCkBA
IC02NCw3ICs2NCw5IEBAIG5hbWVzcGFjZSBMb2NhbEF1dGhlbnRpY2F0b3JJbnRlcm5hbCB7CiAK
IC8vIFNlZSBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4vI2ZsYWdzLgogY29uc3QgdWlu
dDhfdCBtYWtlQ3JlZGVudGlhbEZsYWdzID0gMGIwMTAwMDEwMTsgLy8gVVAsIFVWIGFuZCBBVCBh
cmUgc2V0LgorY29uc3QgdWludDhfdCBvdGhlck1ha2VDcmVkZW50aWFsRmxhZ3MgPSAwYjAxMDAw
MDAxOyAvLyBVUCBhbmQgQVQgYXJlIHNldC4KIGNvbnN0IHVpbnQ4X3QgZ2V0QXNzZXJ0aW9uRmxh
Z3MgPSAwYjAwMDAwMTAxOyAvLyBVUCBhbmQgVVYgYXJlIHNldC4KK2NvbnN0IHVpbnQ4X3Qgb3Ro
ZXJHZXRBc3NlcnRpb25GbGFncyA9IDBiMDAwMDAwMDE7IC8vIFVQIGlzIHNldC4KIC8vIENyZWRl
bnRpYWwgSUQgaXMgY3VycmVudGx5IFNIQS0xIG9mIHRoZSBjb3JyZXNwb25kaW5nIHB1YmxpYyBr
ZXkuCiBjb25zdCB1aW50MTZfdCBjcmVkZW50aWFsSWRMZW5ndGggPSAyMDsKIGNvbnN0IHVpbnQ2
NF90IGNvdW50ZXIgPSAwOwpAQCAtMzA2LDcgKzMwOCw3IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNh
dG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJEZWNpZGVQb2xpY3koTG9jYWxBdXRoZW50
aWNhCiAKICAgICAgICAgd2Vha1RoaXMtPmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlclVzZXJW
ZXJpZmljYXRpb24oYWNjZXNzQ29udHJvbC5nZXQoKSwgdmVyaWZpY2F0aW9uLCBjb250ZXh0KTsK
ICAgICB9OwotICAgIG1fY29ubmVjdGlvbi0+dmVyaWZ5VXNlcihjcmVhdGlvbk9wdGlvbnMucnAu
aWQsIGdldENsaWVudERhdGFUeXBlKHJlcXVlc3REYXRhKCkub3B0aW9ucyksIGFjY2Vzc0NvbnRy
b2xSZWYsIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnZlcmlmeVVzZXIo
Y3JlYXRpb25PcHRpb25zLnJwLmlkLCBnZXRDbGllbnREYXRhVHlwZShyZXF1ZXN0RGF0YSgpLm9w
dGlvbnMpLCBhY2Nlc3NDb250cm9sUmVmLCBnZXRVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZW1lbnQo
cmVxdWVzdERhdGEoKS5vcHRpb25zKSwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCiB2b2lkIExv
Y2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyUmVjZWl2aW5nTEFD
b250ZXh0KExBQ29udGV4dCAqY29udGV4dCkKQEAgLTQyNSwxOSArNDI3LDIzIEBAIHZvaWQgTG9j
YWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJVc2VyVmVyaWZpY2F0
aW9uKFNlY0FjY2Vzc0NvCiAgICAgICAgIGNvc2VQdWJsaWNLZXkgPSBlbmNvZGVFUzI1NlB1Ymxp
Y0tleUFzQ0JPUihXVEZNb3ZlKHgpLCBXVEZNb3ZlKHkpKTsKICAgICB9CiAKKyAgICBhdXRvIGZs
YWdzID0gbWFrZUNyZWRlbnRpYWxGbGFnczsKKyAgICBpZiAodmVyaWZpY2F0aW9uID09IExvY2Fs
Q29ubmVjdGlvbjo6VXNlclZlcmlmaWNhdGlvbjo6UHJlc2VuY2UpCisgICAgICAgIGZsYWdzID0g
b3RoZXJNYWtlQ3JlZGVudGlhbEZsYWdzOworCiAgICAgLy8gU3RlcCAxMi4KICAgICAvLyBTa2lw
IEFwcGxlIEF0dGVzdGF0aW9uIGZvciBub25lIGF0dGVzdGF0aW9uLgogICAgIGlmIChjcmVhdGlv
bk9wdGlvbnMuYXR0ZXN0YXRpb24gPT0gQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZTo6
Tm9uZSkgewogICAgICAgICBkZWxldGVEdXBsaWNhdGVDcmVkZW50aWFsKCk7CiAKLSAgICAgICAg
YXV0byBhdXRoRGF0YSA9IGJ1aWxkQXV0aERhdGEoY3JlYXRpb25PcHRpb25zLnJwLmlkLCBtYWtl
Q3JlZGVudGlhbEZsYWdzLCBjb3VudGVyLCBidWlsZEF0dGVzdGVkQ3JlZGVudGlhbERhdGEoVmVj
dG9yPHVpbnQ4X3Q+KGFhZ3VpZExlbmd0aCwgMCksIGNyZWRlbnRpYWxJZCwgY29zZVB1YmxpY0tl
eSkpOworICAgICAgICBhdXRvIGF1dGhEYXRhID0gYnVpbGRBdXRoRGF0YShjcmVhdGlvbk9wdGlv
bnMucnAuaWQsIGZsYWdzLCBjb3VudGVyLCBidWlsZEF0dGVzdGVkQ3JlZGVudGlhbERhdGEoVmVj
dG9yPHVpbnQ4X3Q+KGFhZ3VpZExlbmd0aCwgMCksIGNyZWRlbnRpYWxJZCwgY29zZVB1YmxpY0tl
eSkpOwogICAgICAgICBhdXRvIGF0dGVzdGF0aW9uT2JqZWN0ID0gYnVpbGRBdHRlc3RhdGlvbk9i
amVjdChXVEZNb3ZlKGF1dGhEYXRhKSwgIiIsIHsgfSwgQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJl
ZmVyZW5jZTo6Tm9uZSk7CiAgICAgICAgIHJlY2VpdmVSZXNwb25kKEF1dGhlbnRpY2F0b3JBdHRl
c3RhdGlvblJlc3BvbnNlOjpjcmVhdGUoY3JlZGVudGlhbElkLCBhdHRlc3RhdGlvbk9iamVjdCkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgLy8gU3RlcCAxMy4gQXBwbGUgQXR0ZXN0
YXRpb24KLSAgICBhdXRvIGF1dGhEYXRhID0gYnVpbGRBdXRoRGF0YShjcmVhdGlvbk9wdGlvbnMu
cnAuaWQsIG1ha2VDcmVkZW50aWFsRmxhZ3MsIGNvdW50ZXIsIGJ1aWxkQXR0ZXN0ZWRDcmVkZW50
aWFsRGF0YShhYWd1aWRWZWN0b3IoKSwgY3JlZGVudGlhbElkLCBjb3NlUHVibGljS2V5KSk7Cisg
ICAgYXV0byBhdXRoRGF0YSA9IGJ1aWxkQXV0aERhdGEoY3JlYXRpb25PcHRpb25zLnJwLmlkLCBm
bGFncywgY291bnRlciwgYnVpbGRBdHRlc3RlZENyZWRlbnRpYWxEYXRhKGFhZ3VpZFZlY3Rvcigp
LCBjcmVkZW50aWFsSWQsIGNvc2VQdWJsaWNLZXkpKTsKICAgICBhdXRvIG5zQXV0aERhdGEgPSB0
b05TRGF0YShhdXRoRGF0YSk7CiAgICAgYXV0byBjYWxsYmFjayA9IFtjcmVkZW50aWFsSWQgPSBX
VEZNb3ZlKGNyZWRlbnRpYWxJZCksIGF1dGhEYXRhID0gV1RGTW92ZShhdXRoRGF0YSksIHdlYWtU
aGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSAoTlNBcnJheSAqIF9OdWxsYWJsZSBjZXJ0aWZpY2F0
ZXMsIE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3IpIG11dGFibGUgewogICAgICAgICBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtNTc5LDcgKzU4NSw3IEBAIHZvaWQgTG9jYWxBdXRoZW50
aWNhdG9yOjpjb250aW51ZUdldEFzc2VydGlvbkFmdGVyUmVzcG9uc2VTZWxlY3RlZChSZWY8V2Vi
Q29yZTo6CiAKICAgICAgICAgd2Vha1RoaXMtPmNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJVc2Vy
VmVyaWZpY2F0aW9uKFdURk1vdmUocmVzcG9uc2UpLCB2ZXJpZmljYXRpb24sIGNvbnRleHQpOwog
ICAgIH07Ci0gICAgbV9jb25uZWN0aW9uLT52ZXJpZnlVc2VyKHJlcXVlc3RPcHRpb25zLnJwSWQs
IGdldENsaWVudERhdGFUeXBlKHJlcXVlc3REYXRhKCkub3B0aW9ucyksIGFjY2Vzc0NvbnRyb2xS
ZWYsIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnZlcmlmeVVzZXIocmVx
dWVzdE9wdGlvbnMucnBJZCwgZ2V0Q2xpZW50RGF0YVR5cGUocmVxdWVzdERhdGEoKS5vcHRpb25z
KSwgYWNjZXNzQ29udHJvbFJlZiwgZ2V0VXNlclZlcmlmaWNhdGlvblJlcXVpcmVtZW50KHJlcXVl
c3REYXRhKCkub3B0aW9ucyksIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAogdm9pZCBMb2NhbEF1
dGhlbnRpY2F0b3I6OmNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJVc2VyVmVyaWZpY2F0aW9uKFJl
ZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+JiYgcmVzcG9uc2UsIExv
Y2FsQ29ubmVjdGlvbjo6VXNlclZlcmlmaWNhdGlvbiB2ZXJpZmljYXRpb24sIExBQ29udGV4dCAq
Y29udGV4dCkKQEAgLTU5Myw3ICs1OTksNyBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29u
dGludWVHZXRBc3NlcnRpb25BZnRlclVzZXJWZXJpZmljYXRpb24oUmVmPFdlYkNvcmU6OgogCiAg
ICAgLy8gU3RlcCAxMC4KICAgICBhdXRvIHJlcXVlc3RPcHRpb25zID0gV1RGOjpnZXQ8UHVibGlj
S2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zPihyZXF1ZXN0RGF0YSgpLm9wdGlvbnMpOwotICAg
IGF1dG8gYXV0aERhdGEgPSBidWlsZEF1dGhEYXRhKHJlcXVlc3RPcHRpb25zLnJwSWQsIGdldEFz
c2VydGlvbkZsYWdzLCBjb3VudGVyLCB7IH0pOworICAgIGF1dG8gYXV0aERhdGEgPSBidWlsZEF1
dGhEYXRhKHJlcXVlc3RPcHRpb25zLnJwSWQsIHZlcmlmaWNhdGlvbiA9PSBMb2NhbENvbm5lY3Rp
b246OlVzZXJWZXJpZmljYXRpb246OlByZXNlbmNlID8gb3RoZXJHZXRBc3NlcnRpb25GbGFncyA6
IGdldEFzc2VydGlvbkZsYWdzLCBjb3VudGVyLCB7IH0pOwogCiAgICAgLy8gU3RlcCAxMS4KICAg
ICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBzaWduYXR1cmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbENvbm5lY3Rpb24uaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQ29u
bmVjdGlvbi5oCmluZGV4IDg5M2U1MzhiODlkYjk2NmEwZTA1OWI0YWI2NTc0NWU2NTMyZTJkNjYu
LmFmNzZlMWZhYmNiNTVjYmIwZmVmMTczZmU2NzFlYTUyZWI0NDFlNjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQ29ubmVj
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0Nv
Y29hL0xvY2FsQ29ubmVjdGlvbi5oCkBAIC0zOCw2ICszOCw3IEBAIE9CSkNfQ0xBU1MgTEFDb250
ZXh0OwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlOwogZW51bSBjbGFzcyBDbGllbnREYXRhVHlwZSA6IGJvb2w7CitlbnVtIGNsYXNzIFVz
ZXJWZXJpZmljYXRpb25SZXF1aXJlbWVudDsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01
NCw3ICs1NSw4IEBAIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIFVzZXJWZXJpZmljYXRpb24gOiB1
aW50OF90IHsKICAgICAgICAgTm8sCiAgICAgICAgIFllcywKLSAgICAgICAgQ2FuY2VsCisgICAg
ICAgIENhbmNlbCwKKyAgICAgICAgUHJlc2VuY2UKICAgICB9OwogCiAgICAgdXNpbmcgQXR0ZXN0
YXRpb25DYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTlNBcnJheSAqLCBOU0Vycm9y
ICopPjsKQEAgLTY0LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkxvY2FsQ29ubmVj
dGlvbigpOwogCiAgICAgLy8gT3ZlcnJpZGVkIGJ5IE1vY2tMb2NhbENvbm5lY3Rpb24uCi0gICAg
dmlydHVhbCB2b2lkIHZlcmlmeVVzZXIoY29uc3QgU3RyaW5nJiBycElkLCBXZWJDb3JlOjpDbGll
bnREYXRhVHlwZSwgU2VjQWNjZXNzQ29udHJvbFJlZiwgVXNlclZlcmlmaWNhdGlvbkNhbGxiYWNr
JiYpOworICAgIHZpcnR1YWwgdm9pZCB2ZXJpZnlVc2VyKGNvbnN0IFN0cmluZyYgcnBJZCwgV2Vi
Q29yZTo6Q2xpZW50RGF0YVR5cGUsIFNlY0FjY2Vzc0NvbnRyb2xSZWYsIFdlYkNvcmU6OlVzZXJW
ZXJpZmljYXRpb25SZXF1aXJlbWVudCwgVXNlclZlcmlmaWNhdGlvbkNhbGxiYWNrJiYpOwogICAg
IHZpcnR1YWwgdm9pZCB2ZXJpZnlVc2VyKFNlY0FjY2Vzc0NvbnRyb2xSZWYsIExBQ29udGV4dCAq
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFVzZXJWZXJpZmljYXRpb24pPiYmKTsKICAgICB2aXJ0
dWFsIFJldGFpblB0cjxTZWNLZXlSZWY+IGNyZWF0ZUNyZWRlbnRpYWxQcml2YXRlS2V5KExBQ29u
dGV4dCAqLCBTZWNBY2Nlc3NDb250cm9sUmVmLCBjb25zdCBTdHJpbmcmIHNlY0F0dHJMYWJlbCwg
TlNEYXRhICpzZWNBdHRyQXBwbGljYXRpb25UYWcpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBn
ZXRBdHRlc3RhdGlvbihTZWNLZXlSZWYsIE5TRGF0YSAqYXV0aERhdGEsIE5TRGF0YSAqaGFzaCwg
QXR0ZXN0YXRpb25DYWxsYmFjayYmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQ29ubmVjdGlvbi5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQ29ubmVj
dGlvbi5tbQppbmRleCBmZjhjZWVjYzY4NzQ4NDkzZDQxODAyZWI4OGNjOTE2NDk1NDNlNTc0Li5h
NmUwYmU4ZDMxOGFhMmQzNTBmODhjMTI0YmRiODNiOTc3ZDlhNzg4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbENvbm5lY3Rp
b24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29j
b2EvTG9jYWxDb25uZWN0aW9uLm1tCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKFdFQl9B
VVRITikKIAogI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+CisjaW1wb3J0IDxX
ZWJDb3JlL1VzZXJWZXJpZmljYXRpb25SZXF1aXJlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9X
ZWJBdXRoZW50aWNhdGlvbkNvbnN0YW50cy5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAj
aW1wb3J0IDx3dGYvUnVuTG9vcC5oPgpAQCAtNjAsNyArNjEsNyBAQCBMb2NhbENvbm5lY3Rpb246
On5Mb2NhbENvbm5lY3Rpb24oKQogICAgIFttX2NvbnRleHQgaW52YWxpZGF0ZV07CiB9CiAKLXZv
aWQgTG9jYWxDb25uZWN0aW9uOjp2ZXJpZnlVc2VyKGNvbnN0IFN0cmluZyYgcnBJZCwgQ2xpZW50
RGF0YVR5cGUgdHlwZSwgU2VjQWNjZXNzQ29udHJvbFJlZiBhY2Nlc3NDb250cm9sLCBVc2VyVmVy
aWZpY2F0aW9uQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTG9jYWxDb25uZWN0
aW9uOjp2ZXJpZnlVc2VyKGNvbnN0IFN0cmluZyYgcnBJZCwgQ2xpZW50RGF0YVR5cGUgdHlwZSwg
U2VjQWNjZXNzQ29udHJvbFJlZiBhY2Nlc3NDb250cm9sLCBVc2VyVmVyaWZpY2F0aW9uUmVxdWly
ZW1lbnQgdXYsIFVzZXJWZXJpZmljYXRpb25DYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIFN0cmluZyB0aXRsZSA9IGdlbmVyaWNUb3VjaElEUHJvbXB0VGl0bGUoKTsKICNpZiBQ
TEFURk9STShNQUMpCkBAIC04NCw3ICs4NSw3IEBAIHZvaWQgTG9jYWxDb25uZWN0aW9uOjp2ZXJp
ZnlVc2VyKGNvbnN0IFN0cmluZyYgcnBJZCwgQ2xpZW50RGF0YVR5cGUgdHlwZSwgU2VjQWNjCiAg
ICAgICAgIFtvcHRpb25zIHNldE9iamVjdDpATk8gZm9yS2V5OkAoTEFPcHRpb25GYWxsYmFja1Zp
c2libGUpXTsKICAgICB9CiAKLSAgICBhdXRvIHJlcGx5ID0gbWFrZUJsb2NrUHRyKFtjb250ZXh0
ID0gbV9jb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSAoTlNEaWN0aW9uYXJ5ICosIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKKyAgICBhdXRv
IHJlcGx5ID0gbWFrZUJsb2NrUHRyKFtjb250ZXh0ID0gbV9jb250ZXh0LCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoTlNEaWN0aW9uYXJ5ICppbmZvcm1h
dGlvbiwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICBVc2VyVmVyaWZpY2F0aW9u
IHZlcmlmaWNhdGlvbiA9IFVzZXJWZXJpZmljYXRpb246OlllczsKICAgICAgICAgaWYgKGVycm9y
KSB7CiAgICAgICAgICAgICBMT0dfRVJST1IoIkNvdWxkbid0IGF1dGhlbnRpY2F0ZSB3aXRoIGJp
b21ldHJpY3M6ICVAIiwgZXJyb3IpOwpAQCAtOTIsNiArOTMsOCBAQCB2b2lkIExvY2FsQ29ubmVj
dGlvbjo6dmVyaWZ5VXNlcihjb25zdCBTdHJpbmcmIHJwSWQsIENsaWVudERhdGFUeXBlIHR5cGUs
IFNlY0FjYwogICAgICAgICAgICAgaWYgKGVycm9yLmNvZGUgPT0gTEFFcnJvclVzZXJDYW5jZWwp
CiAgICAgICAgICAgICAgICAgdmVyaWZpY2F0aW9uID0gVXNlclZlcmlmaWNhdGlvbjo6Q2FuY2Vs
OwogICAgICAgICB9CisgICAgICAgIGlmIChpbmZvcm1hdGlvbiAmJiBpbmZvcm1hdGlvbltAIlVz
ZXJQcmVzZW5jZSJdKQorICAgICAgICAgICAgdmVyaWZpY2F0aW9uID0gVXNlclZlcmlmaWNhdGlv
bjo6UHJlc2VuY2U7CiAKICAgICAgICAgLy8gVGhpcyBibG9jayBjYW4gYmUgZXhlY3V0ZWQgaW4g
YW5vdGhlciB0aHJlYWQuCiAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgdmVyaWZpY2F0aW9uLCBj
b250ZXh0ID0gV1RGTW92ZShjb250ZXh0KV0gKCkgbXV0YWJsZSB7CkBAIC0xMDEsOSArMTA0LDE0
IEBAIHZvaWQgTG9jYWxDb25uZWN0aW9uOjp2ZXJpZnlVc2VyKGNvbnN0IFN0cmluZyYgcnBJZCwg
Q2xpZW50RGF0YVR5cGUgdHlwZSwgU2VjQWNjCiAKICNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RL
KQogICAgIC8vIERlcGVuZGluZyBvbiBjZXJ0YWluIGludGVybmFsIHJlcXVpcmVtZW50cywgYWNj
ZXNzQ29udHJvbCBtaWdodCBub3QgcmVxdWlyZSB1c2VyIHZlcmlmaWNhdGlvbnMuCi0gICAgLy8g
SGVuY2UsIGhlcmUgaW50cm9kdWNlcyBhIHF1aXJrIHRvIGZvcmNlIHRoZSBjb21wYXRpYmxlIG1v
ZGUgdG8gYWx3YXlzIHJlcXVpcmUgdXNlciB2ZXJpZmljYXRpb25zLgorICAgIC8vIEhlbmNlLCBo
ZXJlIGludHJvZHVjZXMgYSBxdWlyayB0byBmb3JjZSB0aGUgY29tcGF0aWJsZSBtb2RlIHRvIHJl
cXVpcmUgdXNlciB2ZXJpZmljYXRpb25zIGlmIG5lY2Vzc2FyeS4KICAgICBpZiAoc2hvdWxkVXNl
QWx0ZXJuYXRlQXR0cmlidXRlcygpKSB7Ci0gICAgICAgIFttX2NvbnRleHQgZXZhbHVhdGVQb2xp
Y3k6TEFQb2xpY3lEZXZpY2VPd25lckF1dGhlbnRpY2F0aW9uIG9wdGlvbnM6b3B0aW9ucy5nZXQo
KSByZXBseTpyZXBseS5nZXQoKV07CisgICAgICAgIGlmICh1diA9PSBVc2VyVmVyaWZpY2F0aW9u
UmVxdWlyZW1lbnQ6OlJlcXVpcmVkIHx8IFttX2NvbnRleHQgY2FuRXZhbHVhdGVQb2xpY3k6TEFQ
b2xpY3lEZXZpY2VPd25lckF1dGhlbnRpY2F0aW9uV2l0aEJpb21ldHJpY3MgZXJyb3I6bnVsbHB0
cl0pIHsKKyAgICAgICAgICAgIFttX2NvbnRleHQgZXZhbHVhdGVQb2xpY3k6TEFQb2xpY3lEZXZp
Y2VPd25lckF1dGhlbnRpY2F0aW9uIG9wdGlvbnM6b3B0aW9ucy5nZXQoKSByZXBseTpyZXBseS5n
ZXQoKV07CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICByZXBseShA
eyBAIlVzZXJQcmVzZW5jZSI6IEBZRVMgfSwgbnVsbHB0cik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL0NvY29hL0xvY2FsU2VydmljZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsU2VydmljZS5tbQppbmRleCAyNjA3N2Q5NDNm
ZDFjOTExZGEzNjc5MzAzOTQyNjE5Y2MyNTJhZDNiLi5mYWY2MjEzNjRlYzVjZjY4Yzg2Nzk1ZjUx
NjE1NGQ0OTA4NGNmNmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbFNlcnZpY2UubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxTZXJ2aWNlLm1tCkBAIC0zNCw2
ICszNCwxMiBAQAogI2ltcG9ydCAiQXBwQXR0ZXN0SW50ZXJuYWxTb2Z0TGluay5oIgogI2ltcG9y
dCAiTG9jYWxBdXRoZW50aWNhdGlvblNvZnRMaW5rLmgiCiAKKyNpZiBVU0UoQVBQTEVfSU5URVJO
QUxfU0RLKQorI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL0xvY2FsU2VydmljZUFkZGl0aW9ucy5o
PgorI2Vsc2UKKyNkZWZpbmUgTE9DQUxfU0VSVklDRV9BRERJVElPTlMKKyNlbmRpZgorCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogTG9jYWxTZXJ2aWNlOjpMb2NhbFNlcnZpY2UoT2JzZXJ2ZXImIG9i
c2VydmVyKQpAQCAtNDMsNiArNDksOCBAQCBMb2NhbFNlcnZpY2U6OkxvY2FsU2VydmljZShPYnNl
cnZlciYgb2JzZXJ2ZXIpCiAKIGJvb2wgTG9jYWxTZXJ2aWNlOjppc0F2YWlsYWJsZSgpCiB7CitM
T0NBTF9TRVJWSUNFX0FERElUSU9OUworCiAgICAgYXV0byBjb250ZXh0ID0gYWRvcHROUyhbYWxs
b2NMQUNvbnRleHRJbnN0YW5jZSgpIGluaXRdKTsKICAgICBOU0Vycm9yICplcnJvciA9IG5pbDsK
ICAgICBhdXRvIHJlc3VsdCA9IFtjb250ZXh0IGNhbkV2YWx1YXRlUG9saWN5OkxBUG9saWN5RGV2
aWNlT3duZXJBdXRoZW50aWNhdGlvbldpdGhCaW9tZXRyaWNzIGVycm9yOiZlcnJvcl07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01v
Y2tMb2NhbENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5oCmluZGV4IDk0ZTRhNGQ3ZTRmOGUxNmYy
MGVjYjk0YTdlYjA0OGZlNjI5MzU4YmUuLjY4NGI5NjE2NTczNzYxMTIzZmJjYzBkOTRiZTI5ZGU1
MTllY2NlZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5oCkBAIC0z
Nyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBNb2NrTG9jYWxDb25uZWN0aW9uKGNv
bnN0IFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24mKTsKIAogcHJp
dmF0ZToKLSAgICB2b2lkIHZlcmlmeVVzZXIoY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6Q2xpZW50
RGF0YVR5cGUsIFNlY0FjY2Vzc0NvbnRyb2xSZWYsIFVzZXJWZXJpZmljYXRpb25DYWxsYmFjayYm
KSBmaW5hbDsKKyAgICB2b2lkIHZlcmlmeVVzZXIoY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6Q2xp
ZW50RGF0YVR5cGUsIFNlY0FjY2Vzc0NvbnRyb2xSZWYsIFdlYkNvcmU6OlVzZXJWZXJpZmljYXRp
b25SZXF1aXJlbWVudCwgIFVzZXJWZXJpZmljYXRpb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2
b2lkIHZlcmlmeVVzZXIoU2VjQWNjZXNzQ29udHJvbFJlZiwgTEFDb250ZXh0ICosIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoVXNlclZlcmlmaWNhdGlvbik+JiYpIGZpbmFsOwogICAgIFJldGFpblB0
cjxTZWNLZXlSZWY+IGNyZWF0ZUNyZWRlbnRpYWxQcml2YXRlS2V5KExBQ29udGV4dCAqLCBTZWNB
Y2Nlc3NDb250cm9sUmVmLCBjb25zdCBTdHJpbmcmIHNlY0F0dHJMYWJlbCwgTlNEYXRhICpzZWNB
dHRyQXBwbGljYXRpb25UYWcpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgZ2V0QXR0ZXN0YXRpb24o
U2VjS2V5UmVmLCBOU0RhdGEgKmF1dGhEYXRhLCBOU0RhdGEgKmhhc2gsIEF0dGVzdGF0aW9uQ2Fs
bGJhY2smJikgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24ubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rp
b24ubW0KaW5kZXggNjIyZThjYTk1OGM1ZGQ5N2Q1OTE3OWVjNmE4MzE3Yzg0Y2E2NjI0Ni4uMWE2
YmUxNzNkMTE2NTg0NjNiZmM5MGVjYTBmOGVjMDFkMDMyNWI4ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0
aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01v
Y2svTW9ja0xvY2FsQ29ubmVjdGlvbi5tbQpAQCAtNDYsNyArNDYsNyBAQCBNb2NrTG9jYWxDb25u
ZWN0aW9uOjpNb2NrTG9jYWxDb25uZWN0aW9uKGNvbnN0IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNv
bmZpZ3VyYXRpbwogewogfQogCi12b2lkIE1vY2tMb2NhbENvbm5lY3Rpb246OnZlcmlmeVVzZXIo
Y29uc3QgU3RyaW5nJiwgQ2xpZW50RGF0YVR5cGUsIFNlY0FjY2Vzc0NvbnRyb2xSZWYsIFVzZXJW
ZXJpZmljYXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBNb2NrTG9jYWxDb25uZWN0aW9u
Ojp2ZXJpZnlVc2VyKGNvbnN0IFN0cmluZyYsIENsaWVudERhdGFUeXBlLCBTZWNBY2Nlc3NDb250
cm9sUmVmLCBXZWJDb3JlOjpVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZW1lbnQsIFVzZXJWZXJpZmlj
YXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIC8vIE1vY2sgYXN5bmMgb3BlcmF0aW9u
cy4KICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbmZpZ3VyYXRpb24gPSBtX2NvbmZp
Z3VyYXRpb24sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CkBAIC02
MSw2ICs2MSw5IEBAIHZvaWQgTW9ja0xvY2FsQ29ubmVjdGlvbjo6dmVyaWZ5VXNlcihjb25zdCBT
dHJpbmcmLCBDbGllbnREYXRhVHlwZSwgU2VjQWNjZXNzQ29uCiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpVc2VyVmVy
aWZpY2F0aW9uOjpDYW5jZWw6CiAgICAgICAgICAgICB1c2VyVmVyaWZpY2F0aW9uID0gVXNlclZl
cmlmaWNhdGlvbjo6Q2FuY2VsOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6VXNlclZlcmlmaWNhdGlvbjo6UHJlc2Vu
Y2U6CisgICAgICAgICAgICB1c2VyVmVyaWZpY2F0aW9uID0gVXNlclZlcmlmaWNhdGlvbjo6UHJl
c2VuY2U7CiAgICAgICAgIH0KIAogICAgICAgICBjYWxsYmFjayh1c2VyVmVyaWZpY2F0aW9uLCBh
ZG9wdE5TKFthbGxvY0xBQ29udGV4dEluc3RhbmNlKCkgaW5pdF0pLmdldCgpKTsKQEAgLTgyLDYg
Kzg1LDkgQEAgdm9pZCBNb2NrTG9jYWxDb25uZWN0aW9uOjp2ZXJpZnlVc2VyKFNlY0FjY2Vzc0Nv
bnRyb2xSZWYsIExBQ29udGV4dCAqLCBDb21wbGV0aW8KICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OlVzZXJWZXJpZmlj
YXRpb246OkNhbmNlbDoKICAgICAgICAgICAgIHVzZXJWZXJpZmljYXRpb24gPSBVc2VyVmVyaWZp
Y2F0aW9uOjpDYW5jZWw7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpVc2VyVmVyaWZpY2F0aW9uOjpQcmVzZW5jZToK
KyAgICAgICAgICAgIHVzZXJWZXJpZmljYXRpb24gPSBVc2VyVmVyaWZpY2F0aW9uOjpQcmVzZW5j
ZTsKICAgICAgICAgfQogCiAgICAgICAgIGNhbGxiYWNrKHVzZXJWZXJpZmljYXRpb24pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0
aGVudGljYXRpb25SZXF1ZXN0RGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhLmNwcAppbmRleCA3MGU5
MzcxMzRkZDAzMTg4MTM4YmFjOTg2ZWY5MTJmNzc3YTJmY2M5Li41YjBjNmMyZjE3YTBjNjFlNDAy
YzA3MDgzYWU1NTc5MTBiYmY0NGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNh
dGlvblJlcXVlc3REYXRhLmNwcApAQCAtMjgsNiArMjgsOCBAQAogCiAjaWYgRU5BQkxFKFdFQl9B
VVRITikKIAorI2ltcG9ydCA8V2ViQ29yZS9Vc2VyVmVyaWZpY2F0aW9uUmVxdWlyZW1lbnQuaD4K
KwogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtMzgs
NiArNDAsMTcgQEAgQ2xpZW50RGF0YVR5cGUgZ2V0Q2xpZW50RGF0YVR5cGUoY29uc3QgVmFyaWFu
dDxQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb24KICAgICByZXR1cm4gQ2xpZW50RGF0
YVR5cGU6OkdldDsKIH0KIAorVXNlclZlcmlmaWNhdGlvblJlcXVpcmVtZW50IGdldFVzZXJWZXJp
ZmljYXRpb25SZXF1aXJlbWVudChjb25zdCBWYXJpYW50PFB1YmxpY0tleUNyZWRlbnRpYWxDcmVh
dGlvbk9wdGlvbnMsIFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucz4mIG9wdGlvbnMp
Cit7CisgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UHVibGljS2V5Q3JlZGVudGlhbENy
ZWF0aW9uT3B0aW9ucz4ob3B0aW9ucykpIHsKKyAgICAgICAgaWYgKGF1dG8gYXV0aGVudGljYXRv
clNlbGVjdGlvbiA9IFdURjo6Z2V0PFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM+
KG9wdGlvbnMpLmF1dGhlbnRpY2F0b3JTZWxlY3Rpb24pCisgICAgICAgICAgICByZXR1cm4gYXV0
aGVudGljYXRvclNlbGVjdGlvbi0+dXNlclZlcmlmaWNhdGlvbjsKKyAgICAgICAgcmV0dXJuIFVz
ZXJWZXJpZmljYXRpb25SZXF1aXJlbWVudDo6UHJlZmVycmVkOworICAgIH0KKworICAgIHJldHVy
biBXVEY6OmdldDxQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnM+KG9wdGlvbnMpLnVz
ZXJWZXJpZmljYXRpb247Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8g
RU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0aW9uUmVxdWVz
dERhdGEuaAppbmRleCAxNjc1YmYwYmZjYzBjYjYyNjU1NmQ2N2IyMDg2MDhiMTA0ZTVkYmVmLi5j
MjVkOTA1YjVkMDFlODA0M2ZiMmI1YzMxM2VhMDQxYTEwZGE1NzA1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdGlvblJl
cXVlc3REYXRhLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YS5oCkBAIC01OSw2ICs1OSw3IEBAIHN0cnVj
dCBXZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhIHsKIH07CiAKIFdlYkNvcmU6OkNsaWVudERh
dGFUeXBlIGdldENsaWVudERhdGFUeXBlKGNvbnN0IFZhcmlhbnQ8V2ViQ29yZTo6UHVibGljS2V5
Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucywgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbFJl
cXVlc3RPcHRpb25zPiYpOworV2ViQ29yZTo6VXNlclZlcmlmaWNhdGlvblJlcXVpcmVtZW50IGdl
dFVzZXJWZXJpZmljYXRpb25SZXF1aXJlbWVudChjb25zdCBWYXJpYW50PFdlYkNvcmU6OlB1Ymxp
Y0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMsIFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRp
YWxSZXF1ZXN0T3B0aW9ucz4mKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBm
MTE0MjNjNTk2YzZmNjE1NDFlMDFhZjFhMGEzOGZmNTU4M2U1ZmNmLi4zZjkwNzU2NzkyZjA5YmUz
OWU4NWJkMzY1Yzc3YjNkMTQ2ZGYxZGU3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMDQt
MTUgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyB1
c2luZyB0aGUgcGxhdGZvcm0gYXV0aGVudGljYXRvciBvbiBub24tVG91Y2ggSUQgTWFjcyBhY2Nv
cmRpbmcgdG8gSW50ZXJuYWwgcmVxdWlyZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQ2MzkKKyAgICAgICAgPHJkYXI6Ly83NDY5ODM0Nj4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAv
d3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1sb2NhbC5o
dHRwcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtl
eS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWxvY2FsLmh0dHBzLmh0bWw6CisgICAgICAgICog
aHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLWxvY2Fs
Lmh0dHBzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMt
a2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtbG9jYWwuaHR0cHMuaHRtbDoKKwogMjAyMS0wNC0x
NSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFj
T1NdIFN1cHBvcnQgdGhlIFRyYW5zbGF0ZSBtZW51IGl0ZW0gaW4gZWRpdGFibGUgc2VsZWN0ZWQg
dGV4dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtl
eS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWxvY2FsLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUt
c3VjY2Vzcy1sb2NhbC5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggOGQwYjFiZTc0NWNlYmM3MGI4
MzU1NWRiODI0NjAyZDI3NGRlZmNlNS4uZTJkY2EyMjY5ZDRiMjEyYTllOGQyZmFhNjk5YzRlMzkw
ZDIwYTczYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGlj
LWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWxvY2FsLmh0dHBzLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwt
Y3JlYXRlLXN1Y2Nlc3MtbG9jYWwuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC02LDYgKzYsNyBAQCBD
T05TT0xFIE1FU1NBR0U6IFVzZXIgZ2VzdHVyZSBpcyBub3QgZGV0ZWN0ZWQuIFRvIHVzZSB0aGUg
V2ViQXV0aG4gQVBJLCBjYWxsICduYQogQ09OU09MRSBNRVNTQUdFOiBVc2VyIGdlc3R1cmUgaXMg
bm90IGRldGVjdGVkLiBUbyB1c2UgdGhlIFdlYkF1dGhuIEFQSSwgY2FsbCAnbmF2aWdhdG9yLmNy
ZWRlbnRpYWxzLmNyZWF0ZScgd2l0aGluIHVzZXIgYWN0aXZhdGVkIGV2ZW50cy4KIENPTlNPTEUg
TUVTU0FHRTogVXNlciBnZXN0dXJlIGlzIG5vdCBkZXRlY3RlZC4gVG8gdXNlIHRoZSBXZWJBdXRo
biBBUEksIGNhbGwgJ25hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUnIHdpdGhpbiB1c2VyIGFj
dGl2YXRlZCBldmVudHMuCiBDT05TT0xFIE1FU1NBR0U6IFVzZXIgZ2VzdHVyZSBpcyBub3QgZGV0
ZWN0ZWQuIFRvIHVzZSB0aGUgV2ViQXV0aG4gQVBJLCBjYWxsICduYXZpZ2F0b3IuY3JlZGVudGlh
bHMuY3JlYXRlJyB3aXRoaW4gdXNlciBhY3RpdmF0ZWQgZXZlbnRzLgorQ09OU09MRSBNRVNTQUdF
OiBVc2VyIGdlc3R1cmUgaXMgbm90IGRldGVjdGVkLiBUbyB1c2UgdGhlIFdlYkF1dGhuIEFQSSwg
Y2FsbCAnbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZScgd2l0aGluIHVzZXIgYWN0aXZhdGVk
IGV2ZW50cy4KIAogUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG1p
bmltdW0gb3B0aW9ucyBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4KIFBBU1MgUHVibGlj
S2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBhdXRoZW50aWNhdG9yU2VsZWN0aW9uIHsg
J3BsYXRmb3JtJyB9IGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLgpAQCAtMTUsNCArMTYs
NSBAQCBQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggaW5kaXJlY3Qg
YXR0ZXN0YXRpb24gaW4gYSBtb2NrIGxvY2FsCiBQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBb
W2NyZWF0ZV1dIHdpdGggZGlyZWN0IGF0dGVzdGF0aW9uIGluIGEgbW9jayBsb2NhbCBhdXRoZW50
aWNhdG9yLgogUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIGR1cGxp
Y2F0ZSBjcmVkZW50aWFsIGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLgogUEFTUyBQdWJs
aWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIGR1cGxpY2F0ZSBjcmVkZW50aWFsIGlu
IGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiAyCitQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwn
cyBbW2NyZWF0ZV1dIHdpdGggdXNlciBwcmVzZW5jZSBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGlj
YXRvci4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGlj
LWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWxvY2FsLmh0dHBzLmh0bWwgYi9MYXlvdXRU
ZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nl
c3MtbG9jYWwuaHR0cHMuaHRtbAppbmRleCA3YjFiZjI5YzA4ZDNhNmQxZDdjNDRmMGJlZTFiOGVi
YjkwNWY3OTkzLi4wOWE0Mzc1YTU0OTA1NjY3ZjMwYTMzYmNjMDI5MTE2MmIwMTYwYWZhIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRp
YWwtY3JlYXRlLXN1Y2Nlc3MtbG9jYWwuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtbG9jYWwu
aHR0cHMuaHRtbApAQCAtNSw3ICs1LDcgQEAKIDxzY3JpcHQgc3JjPSIuL3Jlc291cmNlcy91dGls
LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuL3Jlc291cmNlcy9jYm9yLmpzIj48L3Njcmlw
dD4KIDxzY3JpcHQ+Ci0gICAgZnVuY3Rpb24gY2hlY2tSZXN1bHQoY3JlZGVudGlhbCwgY3JlZGVu
dGlhbElELCBpc05vbmVBdHRlc3RhdGlvbiA9IHRydWUpCisgICAgZnVuY3Rpb24gY2hlY2tSZXN1
bHQoY3JlZGVudGlhbCwgY3JlZGVudGlhbElELCBpc05vbmVBdHRlc3RhdGlvbiA9IHRydWUsIGlz
VVYgPSB0cnVlKQogICAgIHsKICAgICAgICAgLy8gQ2hlY2sga2V5Y2hhaW4KICAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKSB7CkBAIC0yOSw3ICsyOSwxMCBAQAogICAgICAgICAvLyBDaGVj
ayBhdXRoRGF0YQogICAgICAgICBjb25zdCBhdXRoRGF0YSA9IGRlY29kZUF1dGhEYXRhKGF0dGVz
dGF0aW9uT2JqZWN0LmF1dGhEYXRhKTsKICAgICAgICAgYXNzZXJ0X2VxdWFscyhieXRlc1RvSGV4
U3RyaW5nKGF1dGhEYXRhLnJwSWRIYXNoKSwgIjQ5OTYwZGU1ODgwZThjNjg3NDM0MTcwZjY0NzY2
MDViOGZlNGFlYjlhMjg2MzJjNzk5NWNmM2JhODMxZDk3NjMiKTsKLSAgICAgICAgYXNzZXJ0X2Vx
dWFscyhhdXRoRGF0YS5mbGFncywgNjkpOworICAgICAgICBpZiAoaXNVVikKKyAgICAgICAgICAg
IGFzc2VydF9lcXVhbHMoYXV0aERhdGEuZmxhZ3MsIDY5KTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgYXNzZXJ0X2VxdWFscyhhdXRoRGF0YS5mbGFncywgNjUpOwogICAgICAgICBhc3NlcnRf
ZXF1YWxzKGF1dGhEYXRhLmNvdW50ZXIsIDApOwogICAgICAgICBpZiAoaXNOb25lQXR0ZXN0YXRp
b24pCiAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGJ5dGVzVG9IZXhTdHJpbmcoYXV0aERhdGEu
YWFndWlkKSwgIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIik7CkBAIC0zNDQsNCAr
MzQ3LDM3IEBACiAgICAgICAgICAgICBhc3NlcnRfZmFsc2UodGVzdFJ1bm5lci5rZXlFeGlzdHNJ
bktleWNoYWluKHRlc3RScElkLCBiYXNlNjRlbmNvZGUoYW5vdGhlckNyZWRlbnRpYWxJRCkpKTsK
ICAgICAgICAgfSk7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdp
dGggZHVwbGljYXRlIGNyZWRlbnRpYWwgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIDIi
KTsKKworICAgIHByb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICAgICAgY29uc3QgcHJpdmF0
ZUtleUJhc2U2NCA9IGF3YWl0IGdlbmVyYXRlUHJpdmF0ZUtleUJhc2U2NCgpOworICAgICAgICBj
b25zdCBjcmVkZW50aWFsSUQgPSBhd2FpdCBjYWxjdWxhdGVDcmVkZW50aWFsSUQocHJpdmF0ZUtl
eUJhc2U2NCk7CisgICAgICAgIGNvbnN0IHVzZXJoYW5kbGVCYXNlNjQgPSBnZW5lcmF0ZVVzZXJo
YW5kbGVCYXNlNjQoKTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAg
ICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7CisgICAg
ICAgICAgICAgICAgbG9jYWw6IHsKKyAgICAgICAgICAgICAgICAgICAgdXNlclZlcmlmaWNhdGlv
bjogInByZXNlbmNlIiwKKyAgICAgICAgICAgICAgICAgICAgYWNjZXB0QXR0ZXN0YXRpb246IGZh
bHNlLAorICAgICAgICAgICAgICAgICAgICBwcml2YXRlS2V5QmFzZTY0OiBwcml2YXRlS2V5QmFz
ZTY0LAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0pOworCisgICAgICAgIGNvbnN0
IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgICAgICBy
cDogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAibG9jYWxob3N0IiwKKyAgICAgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgICAgIHVzZXI6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFt
ZTogdXNlcmhhbmRsZUJhc2U2NCwKKyAgICAgICAgICAgICAgICAgICAgaWQ6IEJhc2U2NFVSTC5w
YXJzZSh1c2VyaGFuZGxlQmFzZTY0KSwKKyAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6
ICJBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgY2hhbGxl
bmdlOiBCYXNlNjRVUkwucGFyc2UoIk1USXpORFUyIiksCisgICAgICAgICAgICAgICAgcHViS2V5
Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAorICAgICAgICAg
ICAgfQorICAgICAgICB9OworCisgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMu
Y3JlYXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CisgICAgICAgICAgICBjaGVja1Jl
c3VsdChjcmVkZW50aWFsLCBjcmVkZW50aWFsSUQsIHRydWUsIGZhbHNlKTsKKyAgICAgICAgfSk7
CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggdXNlciBwcmVz
ZW5jZSBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4iKTsKIDwvc2NyaXB0PgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFs
LWdldC1zdWNjZXNzLWxvY2FsLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
d3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1sb2NhbC5odHRw
cy1leHBlY3RlZC50eHQKaW5kZXggZmJhNWJkYTRiZjNiMDEzYzUyZTMzYzVlZjZkZjczMTU3NzJh
ZTg4Ny4uMjc0YTYwZDBhNTIwMjE3ZjQxY2NlMTk3ZTJmOTBhYTQyYWVhMjA4ZSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdl
dC1zdWNjZXNzLWxvY2FsLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtbG9jYWwuaHR0
cHMtZXhwZWN0ZWQudHh0CkBAIC0xLDYgKzEsOCBAQAogQ09OU09MRSBNRVNTQUdFOiBVc2VyIGdl
c3R1cmUgaXMgbm90IGRldGVjdGVkLiBUbyB1c2UgdGhlIFdlYkF1dGhuIEFQSSwgY2FsbCAnbmF2
aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZScgd2l0aGluIHVzZXIgYWN0aXZhdGVkIGV2ZW50cy4K
IENPTlNPTEUgTUVTU0FHRTogVXNlciBnZXN0dXJlIGlzIG5vdCBkZXRlY3RlZC4gVG8gdXNlIHRo
ZSBXZWJBdXRobiBBUEksIGNhbGwgJ25hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUnIHdpdGhp
biB1c2VyIGFjdGl2YXRlZCBldmVudHMuCitDT05TT0xFIE1FU1NBR0U6IFVzZXIgZ2VzdHVyZSBp
cyBub3QgZGV0ZWN0ZWQuIFRvIHVzZSB0aGUgV2ViQXV0aG4gQVBJLCBjYWxsICduYXZpZ2F0b3Iu
Y3JlZGVudGlhbHMuY3JlYXRlJyB3aXRoaW4gdXNlciBhY3RpdmF0ZWQgZXZlbnRzLgogCiBQQVNT
IFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggbWluaW11bSBvcHRpb25zIGluIGEg
bW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLgogUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tn
ZXRdXSB3aXRoIG1hdGNoZWQgYWxsb3cgY3JlZGVudGlhbHMgaW4gYSBtb2NrIGxvY2FsIGF1dGhl
bnRpY2F0b3IuCitQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggdXNlciBw
cmVzZW5jZSBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4KIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNj
ZXNzLWxvY2FsLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJs
aWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtbG9jYWwuaHR0cHMuaHRtbAppbmRleCA4NDRj
MDRhZjMwNjMzNTJmODNhNjhiOGUxODBjYWNkM2VkMDk1YzFhLi5jZmU0MTE1OWQ3MjU0ZDgzNTVl
MDUyNWNmZDgwODBhM2RmMWFhNzRiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93
ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtbG9jYWwuaHR0cHMuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRp
YWwtZ2V0LXN1Y2Nlc3MtbG9jYWwuaHR0cHMuaHRtbApAQCAtNCw3ICs0LDcgQEAKIDxzY3JpcHQg
c3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQg
c3JjPSIuL3Jlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+Ci0gICAgZnVuY3Rp
b24gY2hlY2tSZXN1bHQoY3JlZGVudGlhbCwgY3JlZGVudGlhbElELCBwcml2YXRlS2V5QmFzZTY0
KQorICAgIGZ1bmN0aW9uIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwsIGNyZWRlbnRpYWxJRCwgcHJp
dmF0ZUtleUJhc2U2NCwgaXNVViA9IHRydWUpCiAgICAgewogICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCiAgICAgICAgICAgICB0ZXN0UnVubmVyLmNsZWFuVXBLZXljaGFpbih0ZXN0UnBJ
ZCwgYmFzZTY0ZW5jb2RlKGNyZWRlbnRpYWxJRCkpOwpAQCAtMjAsNyArMjAsMTAgQEAKICAgICAg
ICAgLy8gQ2hlY2sgYXV0aERhdGEKICAgICAgICAgY29uc3QgYXV0aERhdGEgPSBkZWNvZGVBdXRo
RGF0YShuZXcgVWludDhBcnJheShjcmVkZW50aWFsLnJlc3BvbnNlLmF1dGhlbnRpY2F0b3JEYXRh
KSk7CiAgICAgICAgIGFzc2VydF9lcXVhbHMoYnl0ZXNUb0hleFN0cmluZyhhdXRoRGF0YS5ycElk
SGFzaCksICI0OTk2MGRlNTg4MGU4YzY4NzQzNDE3MGY2NDc2NjA1YjhmZTRhZWI5YTI4NjMyYzc5
OTVjZjNiYTgzMWQ5NzYzIik7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoYXV0aERhdGEuZmxhZ3Ms
IDUpOworICAgICAgICBpZiAoaXNVVikKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoYXV0aERh
dGEuZmxhZ3MsIDUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGF1
dGhEYXRhLmZsYWdzLCAxKTsKICAgICAgICAgYXNzZXJ0X2VxdWFscyhhdXRoRGF0YS5jb3VudGVy
LCAwKTsKIAogICAgICAgICAvLyBDaGVjayBzaWduYXR1cmUKQEAgLTgwLDQgKzgzLDI1IEBACiAg
ICAgICAgICAgICByZXR1cm4gY2hlY2tSZXN1bHQoY3JlZGVudGlhbCwgY3JlZGVudGlhbElELCBw
cml2YXRlS2V5QmFzZTY0KTsKICAgICAgICAgfSk7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRp
YWwncyBbW2dldF1dIHdpdGggbWF0Y2hlZCBhbGxvdyBjcmVkZW50aWFscyBpbiBhIG1vY2sgbG9j
YWwgYXV0aGVudGljYXRvci4iKTsKKworICAgIHByb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAg
ICAgICAgY29uc3QgcHJpdmF0ZUtleUJhc2U2NCA9IGF3YWl0IGdlbmVyYXRlUHJpdmF0ZUtleUJh
c2U2NCgpOworICAgICAgICBjb25zdCBjcmVkZW50aWFsSUQgPSBhd2FpdCBjYWxjdWxhdGVDcmVk
ZW50aWFsSUQocHJpdmF0ZUtleUJhc2U2NCk7CisgICAgICAgIGNvbnN0IGNyZWRlbnRpYWxJREJh
c2U2NCA9IGJhc2U2NGVuY29kZShjcmVkZW50aWFsSUQpOworICAgICAgICAvLyBEZWZhdWx0IG1v
Y2sgY29uZmlndXJhdGlvbi4gVGVzdHMgbmVlZCB0byBvdmVycmlkZSBpZiB0aGV5IG5lZWQgZGlm
ZmVyZW50IGNvbmZpZ3VyYXRpb24uCisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAg
ICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24o
eyBsb2NhbDogeyB1c2VyVmVyaWZpY2F0aW9uOiAicHJlc2VuY2UiLCBhY2NlcHRBdHRlc3RhdGlv
bjogZmFsc2UsIHByZWZlcnJlZENyZWRlbnRpYWxJZEJhc2U2NDogY3JlZGVudGlhbElEQmFzZTY0
IH0gfSk7CisKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tl
eTogeworICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogQmFzZTY0VVJMLnBhcnNlKCJNVEl6TkRV
MiIpCisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5hZGRUZXN0S2V5VG9LZXljaGFpbihwcml2
YXRlS2V5QmFzZTY0LCB0ZXN0UnBJZCwgdGVzdFVzZXJFbnRpdHlCdW5kbGVCYXNlNjQpOworICAg
ICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKS50aGVuKGNyZWRl
bnRpYWwgPT4geworICAgICAgICAgICAgcmV0dXJuIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwsIGNy
ZWRlbnRpYWxJRCwgcHJpdmF0ZUtleUJhc2U2NCwgZmFsc2UpOworICAgICAgICB9KTsKKyAgICB9
LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCB1c2VyIHByZXNlbmNlIGluIGEg
bW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiIpOwogPC9zY3JpcHQ+Cg==
</data>
<flag name="review"
          id="446399"
          type_id="1"
          status="+"
          setter="dbates"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426286</attachid>
            <date>2021-04-16 15:52:11 -0700</date>
            <delta_ts>2021-04-16 16:52:38 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-224639-20210416155210.patch</filename>
            <type>text/plain</type>
            <size>29956</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2MDg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTM5ZGJmOTU0MWMxMWZh
NDRiODEwYzI1NDg3MjIyYjk3MWM0NTQ4Mi4uMjkxMDY1M2EzYTUwMDcwZTQxYTUwZmYzYTM2Y2Y5
OTZjNDU5MmRjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIxLTA0LTE1ICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgdXNpbmcgdGhl
IHBsYXRmb3JtIGF1dGhlbnRpY2F0b3Igb24gbm9uLVRvdWNoIElEIE1hY3MgYWNjb3JkaW5nIHRv
IEludGVybmFsIHJlcXVpcmVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI0NjM5CisgICAgICAgIDxyZGFyOi8vNzQ2OTgzNDY+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFuaWVsIEJhdGVzLgorCisgICAgICAgIENvdmVyZWQgYnkgbmV3IHRl
c3RzIHdpdGhpbiBleGlzdGluZyB0ZXN0IGZpbGVzLgorCisgICAgICAgICogdGVzdGluZy9Nb2Nr
V2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmg6CisgICAgICAgICogdGVzdGluZy9Nb2Nr
V2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmlkbDoKKyAgICAgICAgTW9jayB0ZXN0aW5n
IHN1cHBvcnQuCisKIDIwMjEtMDQtMTUgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBs
ZS5jb20+CiAKICAgICAgICAgW21hY09TXSBTdXBwb3J0IHRoZSBUcmFuc2xhdGUgbWVudSBpdGVt
IGluIGVkaXRhYmxlIHNlbGVjdGVkIHRleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMTczY2ZiMTVhMmEyM2ZmZDA0
NzRkODVlYjdlOTFiYzZjYjNmMzRlMi4uNGRlOTg3OTA3Mzc2MmZkZGRkNzU3OTkwYzE2ODAxYjFh
NGNmNDAxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAyMS0wNC0xNSAgSmlld2VuIFRh
biAgPGppZXdlbl90YW5AYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IHVzaW5nIHRoZSBwbGF0
Zm9ybSBhdXRoZW50aWNhdG9yIG9uIG5vbi1Ub3VjaCBJRCBNYWNzIGFjY29yZGluZyB0byBJbnRl
cm5hbCByZXF1aXJlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyNDYzOQorICAgICAgICA8cmRhcjovLzc0Njk4MzQ2PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IERhbmllbCBCYXRlcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW06CisgICAgICAgIChXZWJLaXQ6Okxv
Y2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyRGVjaWRlUG9saWN5
KToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVk
ZW50aWFsQWZ0ZXJVc2VyVmVyaWZpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRo
ZW50aWNhdG9yOjpjb250aW51ZUdldEFzc2VydGlvbkFmdGVyUmVzcG9uc2VTZWxlY3RlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVHZXRBc3NlcnRpb25B
ZnRlclVzZXJWZXJpZmljYXRpb24pOgorICAgICAgICBEb24ndCBzZXQgdGhlIFVzZXJWZXJpZmlj
YXRpb24gYml0IGlmIFVzZXJWZXJpZmljYXRpb24gaXMgbm90IGRvbmUuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxDb25uZWN0aW9uLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQ29ubmVjdGlvbi5t
bToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxDb25uZWN0aW9uOjp2ZXJpZnlVc2VyKToKKyAgICAg
ICAgT25seSBjaGVjayBVc2VyUHJlc2VuY2Ugb24gbm9uLVRvdWNoIElEIE1hY3MuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxTZXJ2aWNlLm1tOgor
ICAgICAgICAoV2ViS2l0OjpMb2NhbFNlcnZpY2U6OmlzQXZhaWxhYmxlKToKKyAgICAgICAgTWFr
ZSB0aGUgcGxhdGZvcm0gYXV0aGVudGljYXRvciBhdmFpbGFibGUgYWNjb3JkaW5nIHRvIEludGVy
bmFsIHJlcXVpcmVtZW50cy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLm1tOgorICAgICAgICAoV2ViS2l0
OjpNb2NrTG9jYWxDb25uZWN0aW9uOjp2ZXJpZnlVc2VyKToKKyAgICAgICAgTW9jayB0ZXN0aW5n
IHN1cHBvcnQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0
aGVudGljYXRpb25SZXF1ZXN0RGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmdldFVzZXJWZXJp
ZmljYXRpb25SZXF1aXJlbWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL1dlYkF1dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEuaDoKKyAgICAgICAgQWRkIGEgaGVscGVy
IGZvciBleHRyYWN0aW5nIHRoZSBVc2VyVmVyaWZpY2F0aW9uIGlucHV0LgorCiAyMDIxLTA0LTE1
ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFdLQ29u
dGVudFZpZXcgc2hvdWxkIGJlY29tZSBmb2N1c2VkIHdpdGhvdXQgcmVxdWlyaW5nIC1bV0tXZWJW
aWV3IGNhbkJlY29tZUZvY3VzZWRdIHRvIHJldHVybiBZRVMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmgK
aW5kZXggNWEzMDVlODQ4ZDNmNDA0YWUzNWJiMWRiMGUzOTA5ZGNhMDEzY2E5Ni4uNDBhNDkzNzgz
NzhmMmNlZTAzYjMyMmM1YjhjM2ZiZmIzYzk3ZThkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmgK
QEAgLTY0LDcgKzY0LDggQEAgc3RydWN0IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b24gewogICAgIGVudW0gY2xhc3MgVXNlclZlcmlmaWNhdGlvbiA6IHVpbnQ4X3QgewogICAgICAg
ICBObywKICAgICAgICAgWWVzLAotICAgICAgICBDYW5jZWwKKyAgICAgICAgQ2FuY2VsLAorICAg
ICAgICBQcmVzZW5jZQogICAgIH07CiAKICAgICBzdHJ1Y3QgTG9jYWxDb25maWd1cmF0aW9uIHsK
QEAgLTMwOCw3ICszMDksOCBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6
Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OlVzZXJWZQogICAgICAgICBXZWJD
b3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpVc2VyVmVyaWZpY2F0aW9u
LAogICAgICAgICBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpV
c2VyVmVyaWZpY2F0aW9uOjpObywKICAgICAgICAgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uZmlndXJhdGlvbjo6VXNlclZlcmlmaWNhdGlvbjo6WWVzLAotICAgICAgICBXZWJDb3Jl
OjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpVc2VyVmVyaWZpY2F0aW9uOjpD
YW5jZWwKKyAgICAgICAgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlv
bjo6VXNlclZlcmlmaWNhdGlvbjo6Q2FuY2VsLAorICAgICAgICBXZWJDb3JlOjpNb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpVc2VyVmVyaWZpY2F0aW9uOjpQcmVzZW5jZQogICAg
ID47CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
V2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmlkbAppbmRleCA0NDczYjExM2UyNTAzZTI5
NGU0NTdhMDAyMTdhMDIxYTMyZWFmNTBlLi5kOWYyYTAzODgxY2MyN2FlNThlMWJjYjFiODkwY2E0
MjVlMGM4NzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5pZGwKQEAgLTY0LDcgKzY0LDggQEAK
IF0gZW51bSBVc2VyVmVyaWZpY2F0aW9uIHsKICAgICAibm8iLAogICAgICJ5ZXMiLAotICAgICJj
YW5jZWwiCisgICAgImNhbmNlbCIsCisgICAgInByZXNlbmNlIgogfTsKIAogWwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxB
dXRoZW50aWNhdG9yLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tCmluZGV4IGIxOTUwYWEzMzZjN2I5YjJlMmFm
NmYwZTY2MTRjODdiMjVhM2U0NzUuLjVlYzVhYzU3OGE3OTE1NjE4MDAzYzAxYWJlYWI1ZjM5OTg4
ZTFhMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0KQEAgLTY0
LDcgKzY0LDkgQEAgbmFtZXNwYWNlIExvY2FsQXV0aGVudGljYXRvckludGVybmFsIHsKIAogLy8g
U2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi8jZmxhZ3MuCiBjb25zdCB1aW50OF90
IG1ha2VDcmVkZW50aWFsRmxhZ3MgPSAwYjAxMDAwMTAxOyAvLyBVUCwgVVYgYW5kIEFUIGFyZSBz
ZXQuCitjb25zdCB1aW50OF90IG90aGVyTWFrZUNyZWRlbnRpYWxGbGFncyA9IDBiMDEwMDAwMDE7
IC8vIFVQIGFuZCBBVCBhcmUgc2V0LgogY29uc3QgdWludDhfdCBnZXRBc3NlcnRpb25GbGFncyA9
IDBiMDAwMDAxMDE7IC8vIFVQIGFuZCBVViBhcmUgc2V0LgorY29uc3QgdWludDhfdCBvdGhlckdl
dEFzc2VydGlvbkZsYWdzID0gMGIwMDAwMDAwMTsgLy8gVVAgaXMgc2V0LgogLy8gQ3JlZGVudGlh
bCBJRCBpcyBjdXJyZW50bHkgU0hBLTEgb2YgdGhlIGNvcnJlc3BvbmRpbmcgcHVibGljIGtleS4K
IGNvbnN0IHVpbnQxNl90IGNyZWRlbnRpYWxJZExlbmd0aCA9IDIwOwogY29uc3QgdWludDY0X3Qg
Y291bnRlciA9IDA7CkBAIC0zMDYsNyArMzA4LDcgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6
OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlckRlY2lkZVBvbGljeShMb2NhbEF1dGhlbnRpY2EK
IAogICAgICAgICB3ZWFrVGhpcy0+Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNlclZlcmlm
aWNhdGlvbihhY2Nlc3NDb250cm9sLmdldCgpLCB2ZXJpZmljYXRpb24sIGNvbnRleHQpOwogICAg
IH07Ci0gICAgbV9jb25uZWN0aW9uLT52ZXJpZnlVc2VyKGNyZWF0aW9uT3B0aW9ucy5ycC5pZCwg
Z2V0Q2xpZW50RGF0YVR5cGUocmVxdWVzdERhdGEoKS5vcHRpb25zKSwgYWNjZXNzQ29udHJvbFJl
ZiwgV1RGTW92ZShjYWxsYmFjaykpOworICAgIG1fY29ubmVjdGlvbi0+dmVyaWZ5VXNlcihjcmVh
dGlvbk9wdGlvbnMucnAuaWQsIGdldENsaWVudERhdGFUeXBlKHJlcXVlc3REYXRhKCkub3B0aW9u
cyksIGFjY2Vzc0NvbnRyb2xSZWYsIGdldFVzZXJWZXJpZmljYXRpb25SZXF1aXJlbWVudChyZXF1
ZXN0RGF0YSgpLm9wdGlvbnMpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKIHZvaWQgTG9jYWxB
dXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJSZWNlaXZpbmdMQUNvbnRl
eHQoTEFDb250ZXh0ICpjb250ZXh0KQpAQCAtNDI1LDE5ICs0MjcsMjAgQEAgdm9pZCBMb2NhbEF1
dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlclVzZXJWZXJpZmljYXRpb24o
U2VjQWNjZXNzQ28KICAgICAgICAgY29zZVB1YmxpY0tleSA9IGVuY29kZUVTMjU2UHVibGljS2V5
QXNDQk9SKFdURk1vdmUoeCksIFdURk1vdmUoeSkpOwogICAgIH0KIAorICAgIGF1dG8gZmxhZ3Mg
PSB2ZXJpZmljYXRpb24gPT0gTG9jYWxDb25uZWN0aW9uOjpVc2VyVmVyaWZpY2F0aW9uOjpQcmVz
ZW5jZSA/IG90aGVyTWFrZUNyZWRlbnRpYWxGbGFncyA6IG1ha2VDcmVkZW50aWFsRmxhZ3M7CiAg
ICAgLy8gU3RlcCAxMi4KICAgICAvLyBTa2lwIEFwcGxlIEF0dGVzdGF0aW9uIGZvciBub25lIGF0
dGVzdGF0aW9uLgogICAgIGlmIChjcmVhdGlvbk9wdGlvbnMuYXR0ZXN0YXRpb24gPT0gQXR0ZXN0
YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZTo6Tm9uZSkgewogICAgICAgICBkZWxldGVEdXBsaWNh
dGVDcmVkZW50aWFsKCk7CiAKLSAgICAgICAgYXV0byBhdXRoRGF0YSA9IGJ1aWxkQXV0aERhdGEo
Y3JlYXRpb25PcHRpb25zLnJwLmlkLCBtYWtlQ3JlZGVudGlhbEZsYWdzLCBjb3VudGVyLCBidWls
ZEF0dGVzdGVkQ3JlZGVudGlhbERhdGEoVmVjdG9yPHVpbnQ4X3Q+KGFhZ3VpZExlbmd0aCwgMCks
IGNyZWRlbnRpYWxJZCwgY29zZVB1YmxpY0tleSkpOworICAgICAgICBhdXRvIGF1dGhEYXRhID0g
YnVpbGRBdXRoRGF0YShjcmVhdGlvbk9wdGlvbnMucnAuaWQsIGZsYWdzLCBjb3VudGVyLCBidWls
ZEF0dGVzdGVkQ3JlZGVudGlhbERhdGEoVmVjdG9yPHVpbnQ4X3Q+KGFhZ3VpZExlbmd0aCwgMCks
IGNyZWRlbnRpYWxJZCwgY29zZVB1YmxpY0tleSkpOwogICAgICAgICBhdXRvIGF0dGVzdGF0aW9u
T2JqZWN0ID0gYnVpbGRBdHRlc3RhdGlvbk9iamVjdChXVEZNb3ZlKGF1dGhEYXRhKSwgIiIsIHsg
fSwgQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZTo6Tm9uZSk7CiAgICAgICAgIHJlY2Vp
dmVSZXNwb25kKEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpjcmVhdGUoY3JlZGVu
dGlhbElkLCBhdHRlc3RhdGlvbk9iamVjdCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAg
ICAgLy8gU3RlcCAxMy4gQXBwbGUgQXR0ZXN0YXRpb24KLSAgICBhdXRvIGF1dGhEYXRhID0gYnVp
bGRBdXRoRGF0YShjcmVhdGlvbk9wdGlvbnMucnAuaWQsIG1ha2VDcmVkZW50aWFsRmxhZ3MsIGNv
dW50ZXIsIGJ1aWxkQXR0ZXN0ZWRDcmVkZW50aWFsRGF0YShhYWd1aWRWZWN0b3IoKSwgY3JlZGVu
dGlhbElkLCBjb3NlUHVibGljS2V5KSk7CisgICAgYXV0byBhdXRoRGF0YSA9IGJ1aWxkQXV0aERh
dGEoY3JlYXRpb25PcHRpb25zLnJwLmlkLCBmbGFncywgY291bnRlciwgYnVpbGRBdHRlc3RlZENy
ZWRlbnRpYWxEYXRhKGFhZ3VpZFZlY3RvcigpLCBjcmVkZW50aWFsSWQsIGNvc2VQdWJsaWNLZXkp
KTsKICAgICBhdXRvIG5zQXV0aERhdGEgPSB0b05TRGF0YShhdXRoRGF0YSk7CiAgICAgYXV0byBj
YWxsYmFjayA9IFtjcmVkZW50aWFsSWQgPSBXVEZNb3ZlKGNyZWRlbnRpYWxJZCksIGF1dGhEYXRh
ID0gV1RGTW92ZShhdXRoRGF0YSksIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSAoTlNB
cnJheSAqIF9OdWxsYWJsZSBjZXJ0aWZpY2F0ZXMsIE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3Ip
IG11dGFibGUgewogICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtNTc5LDcg
KzU4Miw3IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZUdldEFzc2VydGlvbkFm
dGVyUmVzcG9uc2VTZWxlY3RlZChSZWY8V2ViQ29yZTo6CiAKICAgICAgICAgd2Vha1RoaXMtPmNv
bnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJVc2VyVmVyaWZpY2F0aW9uKFdURk1vdmUocmVzcG9uc2Up
LCB2ZXJpZmljYXRpb24sIGNvbnRleHQpOwogICAgIH07Ci0gICAgbV9jb25uZWN0aW9uLT52ZXJp
ZnlVc2VyKHJlcXVlc3RPcHRpb25zLnJwSWQsIGdldENsaWVudERhdGFUeXBlKHJlcXVlc3REYXRh
KCkub3B0aW9ucyksIGFjY2Vzc0NvbnRyb2xSZWYsIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICBt
X2Nvbm5lY3Rpb24tPnZlcmlmeVVzZXIocmVxdWVzdE9wdGlvbnMucnBJZCwgZ2V0Q2xpZW50RGF0
YVR5cGUocmVxdWVzdERhdGEoKS5vcHRpb25zKSwgYWNjZXNzQ29udHJvbFJlZiwgZ2V0VXNlclZl
cmlmaWNhdGlvblJlcXVpcmVtZW50KHJlcXVlc3REYXRhKCkub3B0aW9ucyksIFdURk1vdmUoY2Fs
bGJhY2spKTsKIH0KIAogdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlR2V0QXNzZXJ0
aW9uQWZ0ZXJVc2VyVmVyaWZpY2F0aW9uKFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0
aW9uUmVzcG9uc2U+JiYgcmVzcG9uc2UsIExvY2FsQ29ubmVjdGlvbjo6VXNlclZlcmlmaWNhdGlv
biB2ZXJpZmljYXRpb24sIExBQ29udGV4dCAqY29udGV4dCkKQEAgLTU5Myw3ICs1OTYsNyBAQCB2
b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVHZXRBc3NlcnRpb25BZnRlclVzZXJWZXJp
ZmljYXRpb24oUmVmPFdlYkNvcmU6OgogCiAgICAgLy8gU3RlcCAxMC4KICAgICBhdXRvIHJlcXVl
c3RPcHRpb25zID0gV1RGOjpnZXQ8UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zPihy
ZXF1ZXN0RGF0YSgpLm9wdGlvbnMpOwotICAgIGF1dG8gYXV0aERhdGEgPSBidWlsZEF1dGhEYXRh
KHJlcXVlc3RPcHRpb25zLnJwSWQsIGdldEFzc2VydGlvbkZsYWdzLCBjb3VudGVyLCB7IH0pOwor
ICAgIGF1dG8gYXV0aERhdGEgPSBidWlsZEF1dGhEYXRhKHJlcXVlc3RPcHRpb25zLnJwSWQsIHZl
cmlmaWNhdGlvbiA9PSBMb2NhbENvbm5lY3Rpb246OlVzZXJWZXJpZmljYXRpb246OlByZXNlbmNl
ID8gb3RoZXJHZXRBc3NlcnRpb25GbGFncyA6IGdldEFzc2VydGlvbkZsYWdzLCBjb3VudGVyLCB7
IH0pOwogCiAgICAgLy8gU3RlcCAxMS4KICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBzaWduYXR1
cmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Db2NvYS9Mb2NhbENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQ29ubmVjdGlvbi5oCmluZGV4IDg5M2U1MzhiODlkYjk2
NmEwZTA1OWI0YWI2NTc0NWU2NTMyZTJkNjYuLmFmNzZlMWZhYmNiNTVjYmIwZmVmMTczZmU2NzFl
YTUyZWI0NDFlNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL0NvY29hL0xvY2FsQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQ29ubmVjdGlvbi5oCkBAIC0zOCw2
ICszOCw3IEBAIE9CSkNfQ0xBU1MgTEFDb250ZXh0OwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOwogZW51bSBjbGFzcyBDbGllbnREYXRh
VHlwZSA6IGJvb2w7CitlbnVtIGNsYXNzIFVzZXJWZXJpZmljYXRpb25SZXF1aXJlbWVudDsKIH0K
IAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01NCw3ICs1NSw4IEBAIHB1YmxpYzoKICAgICBlbnVt
IGNsYXNzIFVzZXJWZXJpZmljYXRpb24gOiB1aW50OF90IHsKICAgICAgICAgTm8sCiAgICAgICAg
IFllcywKLSAgICAgICAgQ2FuY2VsCisgICAgICAgIENhbmNlbCwKKyAgICAgICAgUHJlc2VuY2UK
ICAgICB9OwogCiAgICAgdXNpbmcgQXR0ZXN0YXRpb25DYWxsYmFjayA9IENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoTlNBcnJheSAqLCBOU0Vycm9yICopPjsKQEAgLTY0LDcgKzY2LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgfkxvY2FsQ29ubmVjdGlvbigpOwogCiAgICAgLy8gT3ZlcnJpZGVkIGJ5
IE1vY2tMb2NhbENvbm5lY3Rpb24uCi0gICAgdmlydHVhbCB2b2lkIHZlcmlmeVVzZXIoY29uc3Qg
U3RyaW5nJiBycElkLCBXZWJDb3JlOjpDbGllbnREYXRhVHlwZSwgU2VjQWNjZXNzQ29udHJvbFJl
ZiwgVXNlclZlcmlmaWNhdGlvbkNhbGxiYWNrJiYpOworICAgIHZpcnR1YWwgdm9pZCB2ZXJpZnlV
c2VyKGNvbnN0IFN0cmluZyYgcnBJZCwgV2ViQ29yZTo6Q2xpZW50RGF0YVR5cGUsIFNlY0FjY2Vz
c0NvbnRyb2xSZWYsIFdlYkNvcmU6OlVzZXJWZXJpZmljYXRpb25SZXF1aXJlbWVudCwgVXNlclZl
cmlmaWNhdGlvbkNhbGxiYWNrJiYpOwogICAgIHZpcnR1YWwgdm9pZCB2ZXJpZnlVc2VyKFNlY0Fj
Y2Vzc0NvbnRyb2xSZWYsIExBQ29udGV4dCAqLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFVzZXJW
ZXJpZmljYXRpb24pPiYmKTsKICAgICB2aXJ0dWFsIFJldGFpblB0cjxTZWNLZXlSZWY+IGNyZWF0
ZUNyZWRlbnRpYWxQcml2YXRlS2V5KExBQ29udGV4dCAqLCBTZWNBY2Nlc3NDb250cm9sUmVmLCBj
b25zdCBTdHJpbmcmIHNlY0F0dHJMYWJlbCwgTlNEYXRhICpzZWNBdHRyQXBwbGljYXRpb25UYWcp
IGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBnZXRBdHRlc3RhdGlvbihTZWNLZXlSZWYsIE5TRGF0
YSAqYXV0aERhdGEsIE5TRGF0YSAqaGFzaCwgQXR0ZXN0YXRpb25DYWxsYmFjayYmKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0Nv
Y29hL0xvY2FsQ29ubmVjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL0NvY29hL0xvY2FsQ29ubmVjdGlvbi5tbQppbmRleCBmZjhjZWVjYzY4NzQ4NDkz
ZDQxODAyZWI4OGNjOTE2NDk1NDNlNTc0Li40NjM1Y2I3YWU3MDk3MzVhMDU1ODQ2YWJhM2YyNzVi
ZjQwZjI5MWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Db2NvYS9Mb2NhbENvbm5lY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxDb25uZWN0aW9uLm1tCkBAIC0yOSw2
ICsyOSw3IEBACiAjaWYgRU5BQkxFKFdFQl9BVVRITikKIAogI2ltcG9ydCA8V2ViQ29yZS9Mb2Nh
bGl6ZWRTdHJpbmdzLmg+CisjaW1wb3J0IDxXZWJDb3JlL1VzZXJWZXJpZmljYXRpb25SZXF1aXJl
bWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJBdXRoZW50aWNhdGlvbkNvbnN0YW50cy5oPgog
I2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgpAQCAtNjAs
NyArNjEsNyBAQCBMb2NhbENvbm5lY3Rpb246On5Mb2NhbENvbm5lY3Rpb24oKQogICAgIFttX2Nv
bnRleHQgaW52YWxpZGF0ZV07CiB9CiAKLXZvaWQgTG9jYWxDb25uZWN0aW9uOjp2ZXJpZnlVc2Vy
KGNvbnN0IFN0cmluZyYgcnBJZCwgQ2xpZW50RGF0YVR5cGUgdHlwZSwgU2VjQWNjZXNzQ29udHJv
bFJlZiBhY2Nlc3NDb250cm9sLCBVc2VyVmVyaWZpY2F0aW9uQ2FsbGJhY2smJiBjb21wbGV0aW9u
SGFuZGxlcikKK3ZvaWQgTG9jYWxDb25uZWN0aW9uOjp2ZXJpZnlVc2VyKGNvbnN0IFN0cmluZyYg
cnBJZCwgQ2xpZW50RGF0YVR5cGUgdHlwZSwgU2VjQWNjZXNzQ29udHJvbFJlZiBhY2Nlc3NDb250
cm9sLCBVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZW1lbnQgdXYsIFVzZXJWZXJpZmljYXRpb25DYWxs
YmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFN0cmluZyB0aXRsZSA9IGdlbmVyaWNU
b3VjaElEUHJvbXB0VGl0bGUoKTsKICNpZiBQTEFURk9STShNQUMpCkBAIC04NCw3ICs4NSw3IEBA
IHZvaWQgTG9jYWxDb25uZWN0aW9uOjp2ZXJpZnlVc2VyKGNvbnN0IFN0cmluZyYgcnBJZCwgQ2xp
ZW50RGF0YVR5cGUgdHlwZSwgU2VjQWNjCiAgICAgICAgIFtvcHRpb25zIHNldE9iamVjdDpATk8g
Zm9yS2V5OkAoTEFPcHRpb25GYWxsYmFja1Zpc2libGUpXTsKICAgICB9CiAKLSAgICBhdXRvIHJl
cGx5ID0gbWFrZUJsb2NrUHRyKFtjb250ZXh0ID0gbV9jb250ZXh0LCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoTlNEaWN0aW9uYXJ5ICosIE5TRXJyb3Ig
KmVycm9yKSBtdXRhYmxlIHsKKyAgICBhdXRvIHJlcGx5ID0gbWFrZUJsb2NrUHRyKFtjb250ZXh0
ID0gbV9jb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSAoTlNEaWN0aW9uYXJ5ICppbmZvcm1hdGlvbiwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUg
ewogICAgICAgICBVc2VyVmVyaWZpY2F0aW9uIHZlcmlmaWNhdGlvbiA9IFVzZXJWZXJpZmljYXRp
b246OlllczsKICAgICAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgICAgICBMT0dfRVJST1IoIkNv
dWxkbid0IGF1dGhlbnRpY2F0ZSB3aXRoIGJpb21ldHJpY3M6ICVAIiwgZXJyb3IpOwpAQCAtOTIs
NiArOTMsOCBAQCB2b2lkIExvY2FsQ29ubmVjdGlvbjo6dmVyaWZ5VXNlcihjb25zdCBTdHJpbmcm
IHJwSWQsIENsaWVudERhdGFUeXBlIHR5cGUsIFNlY0FjYwogICAgICAgICAgICAgaWYgKGVycm9y
LmNvZGUgPT0gTEFFcnJvclVzZXJDYW5jZWwpCiAgICAgICAgICAgICAgICAgdmVyaWZpY2F0aW9u
ID0gVXNlclZlcmlmaWNhdGlvbjo6Q2FuY2VsOwogICAgICAgICB9CisgICAgICAgIGlmIChpbmZv
cm1hdGlvbltAIlVzZXJQcmVzZW5jZSJdKQorICAgICAgICAgICAgdmVyaWZpY2F0aW9uID0gVXNl
clZlcmlmaWNhdGlvbjo6UHJlc2VuY2U7CiAKICAgICAgICAgLy8gVGhpcyBibG9jayBjYW4gYmUg
ZXhlY3V0ZWQgaW4gYW5vdGhlciB0aHJlYWQuCiAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNw
YXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgdmVy
aWZpY2F0aW9uLCBjb250ZXh0ID0gV1RGTW92ZShjb250ZXh0KV0gKCkgbXV0YWJsZSB7CkBAIC0x
MDEsOSArMTA0LDE0IEBAIHZvaWQgTG9jYWxDb25uZWN0aW9uOjp2ZXJpZnlVc2VyKGNvbnN0IFN0
cmluZyYgcnBJZCwgQ2xpZW50RGF0YVR5cGUgdHlwZSwgU2VjQWNjCiAKICNpZiBVU0UoQVBQTEVf
SU5URVJOQUxfU0RLKQogICAgIC8vIERlcGVuZGluZyBvbiBjZXJ0YWluIGludGVybmFsIHJlcXVp
cmVtZW50cywgYWNjZXNzQ29udHJvbCBtaWdodCBub3QgcmVxdWlyZSB1c2VyIHZlcmlmaWNhdGlv
bnMuCi0gICAgLy8gSGVuY2UsIGhlcmUgaW50cm9kdWNlcyBhIHF1aXJrIHRvIGZvcmNlIHRoZSBj
b21wYXRpYmxlIG1vZGUgdG8gYWx3YXlzIHJlcXVpcmUgdXNlciB2ZXJpZmljYXRpb25zLgorICAg
IC8vIEhlbmNlLCBoZXJlIGludHJvZHVjZXMgYSBxdWlyayB0byBmb3JjZSB0aGUgY29tcGF0aWJs
ZSBtb2RlIHRvIHJlcXVpcmUgdXNlciB2ZXJpZmljYXRpb25zIGlmIG5lY2Vzc2FyeS4KICAgICBp
ZiAoc2hvdWxkVXNlQWx0ZXJuYXRlQXR0cmlidXRlcygpKSB7Ci0gICAgICAgIFttX2NvbnRleHQg
ZXZhbHVhdGVQb2xpY3k6TEFQb2xpY3lEZXZpY2VPd25lckF1dGhlbnRpY2F0aW9uIG9wdGlvbnM6
b3B0aW9ucy5nZXQoKSByZXBseTpyZXBseS5nZXQoKV07CisgICAgICAgIGlmICh1diA9PSBVc2Vy
VmVyaWZpY2F0aW9uUmVxdWlyZW1lbnQ6OlJlcXVpcmVkIHx8IFttX2NvbnRleHQgY2FuRXZhbHVh
dGVQb2xpY3k6TEFQb2xpY3lEZXZpY2VPd25lckF1dGhlbnRpY2F0aW9uV2l0aEJpb21ldHJpY3Mg
ZXJyb3I6bmlsXSkgeworICAgICAgICAgICAgW21fY29udGV4dCBldmFsdWF0ZVBvbGljeTpMQVBv
bGljeURldmljZU93bmVyQXV0aGVudGljYXRpb24gb3B0aW9uczpvcHRpb25zLmdldCgpIHJlcGx5
OnJlcGx5LmdldCgpXTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IHJlcGx5KEB7IEAiVXNlclByZXNlbmNlIjogQFlFUyB9LCBudWxscHRyKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxTZXJ2aWNlLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxTZXJ2aWNlLm1tCmluZGV4IDI2
MDc3ZDk0M2ZkMWM5MTFkYTM2NzkzMDM5NDI2MTljYzI1MmFkM2IuLmZhZjYyMTM2NGVjNWNmNjhj
ODY3OTVmNTE2MTU0ZDQ5MDg0Y2Y2Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsU2VydmljZS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbFNlcnZpY2UubW0K
QEAgLTM0LDYgKzM0LDEyIEBACiAjaW1wb3J0ICJBcHBBdHRlc3RJbnRlcm5hbFNvZnRMaW5rLmgi
CiAjaW1wb3J0ICJMb2NhbEF1dGhlbnRpY2F0aW9uU29mdExpbmsuaCIKIAorI2lmIFVTRShBUFBM
RV9JTlRFUk5BTF9TREspCisjaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvTG9jYWxTZXJ2aWNlQWRk
aXRpb25zLmg+CisjZWxzZQorI2RlZmluZSBMT0NBTF9TRVJWSUNFX0FERElUSU9OUworI2VuZGlm
CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBMb2NhbFNlcnZpY2U6OkxvY2FsU2VydmljZShPYnNl
cnZlciYgb2JzZXJ2ZXIpCkBAIC00Myw2ICs0OSw4IEBAIExvY2FsU2VydmljZTo6TG9jYWxTZXJ2
aWNlKE9ic2VydmVyJiBvYnNlcnZlcikKIAogYm9vbCBMb2NhbFNlcnZpY2U6OmlzQXZhaWxhYmxl
KCkKIHsKK0xPQ0FMX1NFUlZJQ0VfQURESVRJT05TCisKICAgICBhdXRvIGNvbnRleHQgPSBhZG9w
dE5TKFthbGxvY0xBQ29udGV4dEluc3RhbmNlKCkgaW5pdF0pOwogICAgIE5TRXJyb3IgKmVycm9y
ID0gbmlsOwogICAgIGF1dG8gcmVzdWx0ID0gW2NvbnRleHQgY2FuRXZhbHVhdGVQb2xpY3k6TEFQ
b2xpY3lEZXZpY2VPd25lckF1dGhlbnRpY2F0aW9uV2l0aEJpb21ldHJpY3MgZXJyb3I6JmVycm9y
XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLmgKaW5kZXggOTRlNGE0ZDdl
NGY4ZTE2ZjIwZWNiOTRhN2ViMDQ4ZmU2MjkzNThiZS4uNjg0Yjk2MTY1NzM3NjExMjNmYmNjMGQ5
NGJlMjlkZTUxOWVjY2VkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9u
LmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IE1vY2tMb2NhbENvbm5l
Y3Rpb24oY29uc3QgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiYp
OwogCiBwcml2YXRlOgotICAgIHZvaWQgdmVyaWZ5VXNlcihjb25zdCBTdHJpbmcmLCBXZWJDb3Jl
OjpDbGllbnREYXRhVHlwZSwgU2VjQWNjZXNzQ29udHJvbFJlZiwgVXNlclZlcmlmaWNhdGlvbkNh
bGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgdmVyaWZ5VXNlcihjb25zdCBTdHJpbmcmLCBXZWJD
b3JlOjpDbGllbnREYXRhVHlwZSwgU2VjQWNjZXNzQ29udHJvbFJlZiwgV2ViQ29yZTo6VXNlclZl
cmlmaWNhdGlvblJlcXVpcmVtZW50LCAgVXNlclZlcmlmaWNhdGlvbkNhbGxiYWNrJiYpIGZpbmFs
OwogICAgIHZvaWQgdmVyaWZ5VXNlcihTZWNBY2Nlc3NDb250cm9sUmVmLCBMQUNvbnRleHQgKiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChVc2VyVmVyaWZpY2F0aW9uKT4mJikgZmluYWw7CiAgICAg
UmV0YWluUHRyPFNlY0tleVJlZj4gY3JlYXRlQ3JlZGVudGlhbFByaXZhdGVLZXkoTEFDb250ZXh0
ICosIFNlY0FjY2Vzc0NvbnRyb2xSZWYsIGNvbnN0IFN0cmluZyYgc2VjQXR0ckxhYmVsLCBOU0Rh
dGEgKnNlY0F0dHJBcHBsaWNhdGlvblRhZykgY29uc3QgZmluYWw7CiAgICAgdm9pZCBnZXRBdHRl
c3RhdGlvbihTZWNLZXlSZWYsIE5TRGF0YSAqYXV0aERhdGEsIE5TRGF0YSAqaGFzaCwgQXR0ZXN0
YXRpb25DYWxsYmFjayYmKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2Fs
Q29ubmVjdGlvbi5tbQppbmRleCA2MjJlOGNhOTU4YzVkZDk3ZDU5MTc5ZWM2YTgzMTdjODRjYTY2
MjQ2Li5iYjQ3YjM3YjRjYzU2YzA3NDNlYjRkMmZiZDZhNTUzYmNjYjdlZGEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2Nh
bENvbm5lY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLm1tCkBAIC00Niw3ICs0Niw3IEBAIE1vY2tM
b2NhbENvbm5lY3Rpb246Ok1vY2tMb2NhbENvbm5lY3Rpb24oY29uc3QgTW9ja1dlYkF1dGhlbnRp
Y2F0aW9uQ29uZmlndXJhdGlvCiB7CiB9CiAKLXZvaWQgTW9ja0xvY2FsQ29ubmVjdGlvbjo6dmVy
aWZ5VXNlcihjb25zdCBTdHJpbmcmLCBDbGllbnREYXRhVHlwZSwgU2VjQWNjZXNzQ29udHJvbFJl
ZiwgVXNlclZlcmlmaWNhdGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIE1vY2tMb2NhbENv
bm5lY3Rpb246OnZlcmlmeVVzZXIoY29uc3QgU3RyaW5nJiwgQ2xpZW50RGF0YVR5cGUsIFNlY0Fj
Y2Vzc0NvbnRyb2xSZWYsIFdlYkNvcmU6OlVzZXJWZXJpZmljYXRpb25SZXF1aXJlbWVudCwgVXNl
clZlcmlmaWNhdGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgLy8gTW9jayBhc3luYyBv
cGVyYXRpb25zLgogICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29uZmlndXJhdGlvbiA9
IG1fY29uZmlndXJhdGlvbiwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxl
IHsKQEAgLTYxLDYgKzYxLDEwIEBAIHZvaWQgTW9ja0xvY2FsQ29ubmVjdGlvbjo6dmVyaWZ5VXNl
cihjb25zdCBTdHJpbmcmLCBDbGllbnREYXRhVHlwZSwgU2VjQWNjZXNzQ29uCiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
OjpVc2VyVmVyaWZpY2F0aW9uOjpDYW5jZWw6CiAgICAgICAgICAgICB1c2VyVmVyaWZpY2F0aW9u
ID0gVXNlclZlcmlmaWNhdGlvbjo6Q2FuY2VsOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6VXNlclZlcmlmaWNhdGlv
bjo6UHJlc2VuY2U6CisgICAgICAgICAgICB1c2VyVmVyaWZpY2F0aW9uID0gVXNlclZlcmlmaWNh
dGlvbjo6UHJlc2VuY2U7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCiAgICAgICAg
IGNhbGxiYWNrKHVzZXJWZXJpZmljYXRpb24sIGFkb3B0TlMoW2FsbG9jTEFDb250ZXh0SW5zdGFu
Y2UoKSBpbml0XSkuZ2V0KCkpOwpAQCAtODIsNiArODYsMTAgQEAgdm9pZCBNb2NrTG9jYWxDb25u
ZWN0aW9uOjp2ZXJpZnlVc2VyKFNlY0FjY2Vzc0NvbnRyb2xSZWYsIExBQ29udGV4dCAqLCBDb21w
bGV0aW8KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE1vY2tXZWJBdXRoZW50aWNh
dGlvbkNvbmZpZ3VyYXRpb246OlVzZXJWZXJpZmljYXRpb246OkNhbmNlbDoKICAgICAgICAgICAg
IHVzZXJWZXJpZmljYXRpb24gPSBVc2VyVmVyaWZpY2F0aW9uOjpDYW5jZWw7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
OjpVc2VyVmVyaWZpY2F0aW9uOjpQcmVzZW5jZToKKyAgICAgICAgICAgIHVzZXJWZXJpZmljYXRp
b24gPSBVc2VyVmVyaWZpY2F0aW9uOjpQcmVzZW5jZTsKKyAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAKICAgICAgICAgY2FsbGJhY2sodXNlclZlcmlmaWNhdGlvbik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNh
dGlvblJlcXVlc3REYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL1dlYkF1dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEuY3BwCmluZGV4IDcwZTkzNzEzNGRk
MDMxODgxMzhiYWM5ODZlZjkxMmY3NzdhMmZjYzkuLjViMGM2YzJmMTdhMGM2MWU0MDJjMDcwODNh
ZTU1NzkxMGJiZjQ0YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0aW9uUmVx
dWVzdERhdGEuY3BwCkBAIC0yOCw2ICsyOCw4IEBACiAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQog
CisjaW1wb3J0IDxXZWJDb3JlL1VzZXJWZXJpZmljYXRpb25SZXF1aXJlbWVudC5oPgorCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC0zOCw2ICs0MCwx
NyBAQCBDbGllbnREYXRhVHlwZSBnZXRDbGllbnREYXRhVHlwZShjb25zdCBWYXJpYW50PFB1Ymxp
Y0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbgogICAgIHJldHVybiBDbGllbnREYXRhVHlwZTo6
R2V0OwogfQogCitVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZW1lbnQgZ2V0VXNlclZlcmlmaWNhdGlv
blJlcXVpcmVtZW50KGNvbnN0IFZhcmlhbnQ8UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0
aW9ucywgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zPiYgb3B0aW9ucykKK3sKKyAg
ICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25P
cHRpb25zPihvcHRpb25zKSkgeworICAgICAgICBpZiAoYXV0byBhdXRoZW50aWNhdG9yU2VsZWN0
aW9uID0gV1RGOjpnZXQ8UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucz4ob3B0aW9u
cykuYXV0aGVudGljYXRvclNlbGVjdGlvbikKKyAgICAgICAgICAgIHJldHVybiBhdXRoZW50aWNh
dG9yU2VsZWN0aW9uLT51c2VyVmVyaWZpY2F0aW9uOworICAgICAgICByZXR1cm4gVXNlclZlcmlm
aWNhdGlvblJlcXVpcmVtZW50OjpQcmVmZXJyZWQ7CisgICAgfQorCisgICAgcmV0dXJuIFdURjo6
Z2V0PFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucz4ob3B0aW9ucykudXNlclZlcmlm
aWNhdGlvbjsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUo
V0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YS5o
CmluZGV4IDE2NzViZjBiZmNjMGNiNjI2NTU2ZDY3YjIwODYwOGIxMDRlNWRiZWYuLmMyNWQ5MDVi
NWQwMWU4MDQzZmIyYjVjMzEzZWEwNDFhMTBkYTU3MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0aW9uUmVxdWVzdERh
dGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJB
dXRoZW50aWNhdGlvblJlcXVlc3REYXRhLmgKQEAgLTU5LDYgKzU5LDcgQEAgc3RydWN0IFdlYkF1
dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEgewogfTsKIAogV2ViQ29yZTo6Q2xpZW50RGF0YVR5cGUg
Z2V0Q2xpZW50RGF0YVR5cGUoY29uc3QgVmFyaWFudDxXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50
aWFsQ3JlYXRpb25PcHRpb25zLCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9w
dGlvbnM+Jik7CitXZWJDb3JlOjpVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZW1lbnQgZ2V0VXNlclZl
cmlmaWNhdGlvblJlcXVpcmVtZW50KGNvbnN0IFZhcmlhbnQ8V2ViQ29yZTo6UHVibGljS2V5Q3Jl
ZGVudGlhbENyZWF0aW9uT3B0aW9ucywgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbFJlcXVl
c3RPcHRpb25zPiYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGYxMTQyM2M1
OTZjNmY2MTU0MWUwMWFmMWEwYTM4ZmY1NTgzZTVmY2YuLjNiMDcxNDdhNWFiMTc0YzU3MTNlZDli
NGZhNjE1YjEyYTc3MmVhMWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMS0wNC0xNSAgSmll
d2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IHVzaW5nIHRo
ZSBwbGF0Zm9ybSBhdXRoZW50aWNhdG9yIG9uIG5vbi1Ub3VjaCBJRCBNYWNzIGFjY29yZGluZyB0
byBJbnRlcm5hbCByZXF1aXJlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyNDYzOQorICAgICAgICA8cmRhcjovLzc0Njk4MzQ2PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IERhbmllbCBCYXRlcy4KKworICAgICAgICAqIGh0dHAvd3B0L3dlYmF1
dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1sb2NhbC5odHRwcy1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50
aWFsLWNyZWF0ZS1zdWNjZXNzLWxvY2FsLmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0cC93cHQv
d2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLWxvY2FsLmh0dHBzLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRl
bnRpYWwtZ2V0LXN1Y2Nlc3MtbG9jYWwuaHR0cHMuaHRtbDoKKwogMjAyMS0wNC0xNSAgV2Vuc29u
IEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjT1NdIFN1cHBv
cnQgdGhlIFRyYW5zbGF0ZSBtZW51IGl0ZW0gaW4gZWRpdGFibGUgc2VsZWN0ZWQgdGV4dApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50
aWFsLWNyZWF0ZS1zdWNjZXNzLWxvY2FsLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1s
b2NhbC5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggOGQwYjFiZTc0NWNlYmM3MGI4MzU1NWRiODI0
NjAyZDI3NGRlZmNlNS4uZTJkY2EyMjY5ZDRiMjEyYTllOGQyZmFhNjk5YzRlMzkwZDIwYTczYyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVk
ZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWxvY2FsLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1
Y2Nlc3MtbG9jYWwuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC02LDYgKzYsNyBAQCBDT05TT0xFIE1F
U1NBR0U6IFVzZXIgZ2VzdHVyZSBpcyBub3QgZGV0ZWN0ZWQuIFRvIHVzZSB0aGUgV2ViQXV0aG4g
QVBJLCBjYWxsICduYQogQ09OU09MRSBNRVNTQUdFOiBVc2VyIGdlc3R1cmUgaXMgbm90IGRldGVj
dGVkLiBUbyB1c2UgdGhlIFdlYkF1dGhuIEFQSSwgY2FsbCAnbmF2aWdhdG9yLmNyZWRlbnRpYWxz
LmNyZWF0ZScgd2l0aGluIHVzZXIgYWN0aXZhdGVkIGV2ZW50cy4KIENPTlNPTEUgTUVTU0FHRTog
VXNlciBnZXN0dXJlIGlzIG5vdCBkZXRlY3RlZC4gVG8gdXNlIHRoZSBXZWJBdXRobiBBUEksIGNh
bGwgJ25hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUnIHdpdGhpbiB1c2VyIGFjdGl2YXRlZCBl
dmVudHMuCiBDT05TT0xFIE1FU1NBR0U6IFVzZXIgZ2VzdHVyZSBpcyBub3QgZGV0ZWN0ZWQuIFRv
IHVzZSB0aGUgV2ViQXV0aG4gQVBJLCBjYWxsICduYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRl
JyB3aXRoaW4gdXNlciBhY3RpdmF0ZWQgZXZlbnRzLgorQ09OU09MRSBNRVNTQUdFOiBVc2VyIGdl
c3R1cmUgaXMgbm90IGRldGVjdGVkLiBUbyB1c2UgdGhlIFdlYkF1dGhuIEFQSSwgY2FsbCAnbmF2
aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZScgd2l0aGluIHVzZXIgYWN0aXZhdGVkIGV2ZW50cy4K
IAogUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG1pbmltdW0gb3B0
aW9ucyBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4KIFBBU1MgUHVibGljS2V5Q3JlZGVu
dGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBhdXRoZW50aWNhdG9yU2VsZWN0aW9uIHsgJ3BsYXRmb3Jt
JyB9IGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLgpAQCAtMTUsNCArMTYsNSBAQCBQQVNT
IFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggaW5kaXJlY3QgYXR0ZXN0YXRp
b24gaW4gYSBtb2NrIGxvY2FsCiBQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1d
IHdpdGggZGlyZWN0IGF0dGVzdGF0aW9uIGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLgog
UEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIGR1cGxpY2F0ZSBjcmVk
ZW50aWFsIGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLgogUEFTUyBQdWJsaWNLZXlDcmVk
ZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIGR1cGxpY2F0ZSBjcmVkZW50aWFsIGluIGEgbW9jayBs
b2NhbCBhdXRoZW50aWNhdG9yLiAyCitQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0
ZV1dIHdpdGggdXNlciBwcmVzZW5jZSBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4KIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVk
ZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWxvY2FsLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRw
L3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtbG9jYWwu
aHR0cHMuaHRtbAppbmRleCA3YjFiZjI5YzA4ZDNhNmQxZDdjNDRmMGJlZTFiOGViYjkwNWY3OTkz
Li4wOWE0Mzc1YTU0OTA1NjY3ZjMwYTMzYmNjMDI5MTE2MmIwMTYwYWZhIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRl
LXN1Y2Nlc3MtbG9jYWwuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJh
dXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtbG9jYWwuaHR0cHMuaHRt
bApAQCAtNSw3ICs1LDcgQEAKIDxzY3JpcHQgc3JjPSIuL3Jlc291cmNlcy91dGlsLmpzIj48L3Nj
cmlwdD4KIDxzY3JpcHQgc3JjPSIuL3Jlc291cmNlcy9jYm9yLmpzIj48L3NjcmlwdD4KIDxzY3Jp
cHQ+Ci0gICAgZnVuY3Rpb24gY2hlY2tSZXN1bHQoY3JlZGVudGlhbCwgY3JlZGVudGlhbElELCBp
c05vbmVBdHRlc3RhdGlvbiA9IHRydWUpCisgICAgZnVuY3Rpb24gY2hlY2tSZXN1bHQoY3JlZGVu
dGlhbCwgY3JlZGVudGlhbElELCBpc05vbmVBdHRlc3RhdGlvbiA9IHRydWUsIGlzVVYgPSB0cnVl
KQogICAgIHsKICAgICAgICAgLy8gQ2hlY2sga2V5Y2hhaW4KICAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKSB7CkBAIC0yOSw3ICsyOSwxMCBAQAogICAgICAgICAvLyBDaGVjayBhdXRoRGF0
YQogICAgICAgICBjb25zdCBhdXRoRGF0YSA9IGRlY29kZUF1dGhEYXRhKGF0dGVzdGF0aW9uT2Jq
ZWN0LmF1dGhEYXRhKTsKICAgICAgICAgYXNzZXJ0X2VxdWFscyhieXRlc1RvSGV4U3RyaW5nKGF1
dGhEYXRhLnJwSWRIYXNoKSwgIjQ5OTYwZGU1ODgwZThjNjg3NDM0MTcwZjY0NzY2MDViOGZlNGFl
YjlhMjg2MzJjNzk5NWNmM2JhODMxZDk3NjMiKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhhdXRo
RGF0YS5mbGFncywgNjkpOworICAgICAgICBpZiAoaXNVVikKKyAgICAgICAgICAgIGFzc2VydF9l
cXVhbHMoYXV0aERhdGEuZmxhZ3MsIDY5KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYXNz
ZXJ0X2VxdWFscyhhdXRoRGF0YS5mbGFncywgNjUpOwogICAgICAgICBhc3NlcnRfZXF1YWxzKGF1
dGhEYXRhLmNvdW50ZXIsIDApOwogICAgICAgICBpZiAoaXNOb25lQXR0ZXN0YXRpb24pCiAgICAg
ICAgICAgICBhc3NlcnRfZXF1YWxzKGJ5dGVzVG9IZXhTdHJpbmcoYXV0aERhdGEuYWFndWlkKSwg
IjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIik7CkBAIC0zNDQsNCArMzQ3LDM3IEBA
CiAgICAgICAgICAgICBhc3NlcnRfZmFsc2UodGVzdFJ1bm5lci5rZXlFeGlzdHNJbktleWNoYWlu
KHRlc3RScElkLCBiYXNlNjRlbmNvZGUoYW5vdGhlckNyZWRlbnRpYWxJRCkpKTsKICAgICAgICAg
fSk7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggZHVwbGlj
YXRlIGNyZWRlbnRpYWwgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIDIiKTsKKworICAg
IHByb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICAgICAgY29uc3QgcHJpdmF0ZUtleUJhc2U2
NCA9IGF3YWl0IGdlbmVyYXRlUHJpdmF0ZUtleUJhc2U2NCgpOworICAgICAgICBjb25zdCBjcmVk
ZW50aWFsSUQgPSBhd2FpdCBjYWxjdWxhdGVDcmVkZW50aWFsSUQocHJpdmF0ZUtleUJhc2U2NCk7
CisgICAgICAgIGNvbnN0IHVzZXJoYW5kbGVCYXNlNjQgPSBnZW5lcmF0ZVVzZXJoYW5kbGVCYXNl
NjQoKTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5h
bHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7CisgICAgICAgICAgICAg
ICAgbG9jYWw6IHsKKyAgICAgICAgICAgICAgICAgICAgdXNlclZlcmlmaWNhdGlvbjogInByZXNl
bmNlIiwKKyAgICAgICAgICAgICAgICAgICAgYWNjZXB0QXR0ZXN0YXRpb246IGZhbHNlLAorICAg
ICAgICAgICAgICAgICAgICBwcml2YXRlS2V5QmFzZTY0OiBwcml2YXRlS2V5QmFzZTY0LAorICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0pOworCisgICAgICAgIGNvbnN0IG9wdGlvbnMg
PSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgICAgICBycDogeworICAg
ICAgICAgICAgICAgICAgICBuYW1lOiAibG9jYWxob3N0IiwKKyAgICAgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgICAgIHVzZXI6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogdXNlcmhh
bmRsZUJhc2U2NCwKKyAgICAgICAgICAgICAgICAgICAgaWQ6IEJhc2U2NFVSTC5wYXJzZSh1c2Vy
aGFuZGxlQmFzZTY0KSwKKyAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJBcHBsZXNl
ZWQiLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBCYXNl
NjRVUkwucGFyc2UoIk1USXpORFUyIiksCisgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFt
czogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAorICAgICAgICAgICAgfQorICAg
ICAgICB9OworCisgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9w
dGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CisgICAgICAgICAgICBjaGVja1Jlc3VsdChjcmVk
ZW50aWFsLCBjcmVkZW50aWFsSUQsIHRydWUsIGZhbHNlKTsKKyAgICAgICAgfSk7CisgICAgfSwg
IlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggdXNlciBwcmVzZW5jZSBpbiBh
IG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4iKTsKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNj
ZXNzLWxvY2FsLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1
dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1sb2NhbC5odHRwcy1leHBlY3Rl
ZC50eHQKaW5kZXggZmJhNWJkYTRiZjNiMDEzYzUyZTMzYzVlZjZkZjczMTU3NzJhZTg4Ny4uMjc0
YTYwZDBhNTIwMjE3ZjQxY2NlMTk3ZTJmOTBhYTQyYWVhMjA4ZSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNz
LWxvY2FsLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJh
dXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtbG9jYWwuaHR0cHMtZXhwZWN0
ZWQudHh0CkBAIC0xLDYgKzEsOCBAQAogQ09OU09MRSBNRVNTQUdFOiBVc2VyIGdlc3R1cmUgaXMg
bm90IGRldGVjdGVkLiBUbyB1c2UgdGhlIFdlYkF1dGhuIEFQSSwgY2FsbCAnbmF2aWdhdG9yLmNy
ZWRlbnRpYWxzLmNyZWF0ZScgd2l0aGluIHVzZXIgYWN0aXZhdGVkIGV2ZW50cy4KIENPTlNPTEUg
TUVTU0FHRTogVXNlciBnZXN0dXJlIGlzIG5vdCBkZXRlY3RlZC4gVG8gdXNlIHRoZSBXZWJBdXRo
biBBUEksIGNhbGwgJ25hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUnIHdpdGhpbiB1c2VyIGFj
dGl2YXRlZCBldmVudHMuCitDT05TT0xFIE1FU1NBR0U6IFVzZXIgZ2VzdHVyZSBpcyBub3QgZGV0
ZWN0ZWQuIFRvIHVzZSB0aGUgV2ViQXV0aG4gQVBJLCBjYWxsICduYXZpZ2F0b3IuY3JlZGVudGlh
bHMuY3JlYXRlJyB3aXRoaW4gdXNlciBhY3RpdmF0ZWQgZXZlbnRzLgogCiBQQVNTIFB1YmxpY0tl
eUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggbWluaW11bSBvcHRpb25zIGluIGEgbW9jayBsb2Nh
bCBhdXRoZW50aWNhdG9yLgogUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRo
IG1hdGNoZWQgYWxsb3cgY3JlZGVudGlhbHMgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3Iu
CitQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggdXNlciBwcmVzZW5jZSBp
biBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLWxvY2Fs
Lmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNy
ZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtbG9jYWwuaHR0cHMuaHRtbAppbmRleCA4NDRjMDRhZjMwNjMz
NTJmODNhNjhiOGUxODBjYWNkM2VkMDk1YzFhLi5jZmU0MTE1OWQ3MjU0ZDgzNTVlMDUyNWNmZDgw
ODBhM2RmMWFhNzRiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9w
dWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtbG9jYWwuaHR0cHMuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1
Y2Nlc3MtbG9jYWwuaHR0cHMuaHRtbApAQCAtNCw3ICs0LDcgQEAKIDxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuL3Jl
c291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+Ci0gICAgZnVuY3Rpb24gY2hlY2tS
ZXN1bHQoY3JlZGVudGlhbCwgY3JlZGVudGlhbElELCBwcml2YXRlS2V5QmFzZTY0KQorICAgIGZ1
bmN0aW9uIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwsIGNyZWRlbnRpYWxJRCwgcHJpdmF0ZUtleUJh
c2U2NCwgaXNVViA9IHRydWUpCiAgICAgewogICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CiAgICAgICAgICAgICB0ZXN0UnVubmVyLmNsZWFuVXBLZXljaGFpbih0ZXN0UnBJZCwgYmFzZTY0
ZW5jb2RlKGNyZWRlbnRpYWxJRCkpOwpAQCAtMjAsNyArMjAsMTAgQEAKICAgICAgICAgLy8gQ2hl
Y2sgYXV0aERhdGEKICAgICAgICAgY29uc3QgYXV0aERhdGEgPSBkZWNvZGVBdXRoRGF0YShuZXcg
VWludDhBcnJheShjcmVkZW50aWFsLnJlc3BvbnNlLmF1dGhlbnRpY2F0b3JEYXRhKSk7CiAgICAg
ICAgIGFzc2VydF9lcXVhbHMoYnl0ZXNUb0hleFN0cmluZyhhdXRoRGF0YS5ycElkSGFzaCksICI0
OTk2MGRlNTg4MGU4YzY4NzQzNDE3MGY2NDc2NjA1YjhmZTRhZWI5YTI4NjMyYzc5OTVjZjNiYTgz
MWQ5NzYzIik7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoYXV0aERhdGEuZmxhZ3MsIDUpOworICAg
ICAgICBpZiAoaXNVVikKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoYXV0aERhdGEuZmxhZ3Ms
IDUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGF1dGhEYXRhLmZs
YWdzLCAxKTsKICAgICAgICAgYXNzZXJ0X2VxdWFscyhhdXRoRGF0YS5jb3VudGVyLCAwKTsKIAog
ICAgICAgICAvLyBDaGVjayBzaWduYXR1cmUKQEAgLTgwLDQgKzgzLDI1IEBACiAgICAgICAgICAg
ICByZXR1cm4gY2hlY2tSZXN1bHQoY3JlZGVudGlhbCwgY3JlZGVudGlhbElELCBwcml2YXRlS2V5
QmFzZTY0KTsKICAgICAgICAgfSk7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dl
dF1dIHdpdGggbWF0Y2hlZCBhbGxvdyBjcmVkZW50aWFscyBpbiBhIG1vY2sgbG9jYWwgYXV0aGVu
dGljYXRvci4iKTsKKworICAgIHByb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICAgICAgY29u
c3QgcHJpdmF0ZUtleUJhc2U2NCA9IGF3YWl0IGdlbmVyYXRlUHJpdmF0ZUtleUJhc2U2NCgpOwor
ICAgICAgICBjb25zdCBjcmVkZW50aWFsSUQgPSBhd2FpdCBjYWxjdWxhdGVDcmVkZW50aWFsSUQo
cHJpdmF0ZUtleUJhc2U2NCk7CisgICAgICAgIGNvbnN0IGNyZWRlbnRpYWxJREJhc2U2NCA9IGJh
c2U2NGVuY29kZShjcmVkZW50aWFsSUQpOworICAgICAgICAvLyBEZWZhdWx0IG1vY2sgY29uZmln
dXJhdGlvbi4gVGVzdHMgbmVlZCB0byBvdmVycmlkZSBpZiB0aGV5IG5lZWQgZGlmZmVyZW50IGNv
bmZpZ3VyYXRpb24uCisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAg
aW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBsb2NhbDog
eyB1c2VyVmVyaWZpY2F0aW9uOiAicHJlc2VuY2UiLCBhY2NlcHRBdHRlc3RhdGlvbjogZmFsc2Us
IHByZWZlcnJlZENyZWRlbnRpYWxJZEJhc2U2NDogY3JlZGVudGlhbElEQmFzZTY0IH0gfSk7CisK
KyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tleTogeworICAg
ICAgICAgICAgICAgIGNoYWxsZW5nZTogQmFzZTY0VVJMLnBhcnNlKCJNVEl6TkRVMiIpCisgICAg
ICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgICAgICAgICAgdGVzdFJ1bm5lci5hZGRUZXN0S2V5VG9LZXljaGFpbihwcml2YXRlS2V5QmFz
ZTY0LCB0ZXN0UnBJZCwgdGVzdFVzZXJFbnRpdHlCdW5kbGVCYXNlNjQpOworICAgICAgICByZXR1
cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4g
eworICAgICAgICAgICAgcmV0dXJuIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwsIGNyZWRlbnRpYWxJ
RCwgcHJpdmF0ZUtleUJhc2U2NCwgZmFsc2UpOworICAgICAgICB9KTsKKyAgICB9LCAiUHVibGlj
S2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCB1c2VyIHByZXNlbmNlIGluIGEgbW9jayBsb2Nh
bCBhdXRoZW50aWNhdG9yLiIpOwogPC9zY3JpcHQ+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>