<?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>183530</bug_id>
          
          <creation_ts>2018-03-09 15:12:13 -0800</creation_ts>
          <short_desc>[WebAuthn] Roll back newly created credentials if an error occurs</short_desc>
          <delta_ts>2020-05-07 19:33:21 -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>WebCore 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>
          
          <blocked>181943</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jiewen Tan">jiewen_tan</reporter>
          <assigned_to name="Jiewen Tan">jiewen_tan</assigned_to>
          <cc>alex.gaynor</cc>
    
    <cc>bfulgham</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>jonathan</cc>
    
    <cc>jschoi</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1405345</commentid>
    <comment_count>0</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2018-03-09 15:12:13 -0800</bug_when>
    <thetext>Current error handling model for WebAuthN is just returning an exception.

A more graceful model should also cleanup any messed states as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450531</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-08-15 17:07:54 -0700</bug_when>
    <thetext>&lt;rdar://problem/43357305&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1459295</commentid>
    <comment_count>2</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2018-09-13 01:23:24 -0700</bug_when>
    <thetext>Also, we need to carefully pick sentences to describe error such that we can protect user privacy: https://www.w3.org/TR/webauthn/#sctn-privacy-considerations.

For example, we might want to make NotAllowedError indistinguishable between each other.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650008</commentid>
    <comment_count>3</comment_count>
      <attachid>398712</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-05-07 01:35:59 -0700</bug_when>
    <thetext>Created attachment 398712
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650402</commentid>
    <comment_count>4</comment_count>
      <attachid>398712</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-05-07 16:13:03 -0700</bug_when>
    <thetext>Comment on attachment 398712
Patch

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

I think this looks good, but I think you made a typo &quot;NSDate instead of NSData&quot;.

&gt; Source/WebKit/ChangeLog:3
&gt; +        [WebAuthn] Roll back the newly created credential if an error happens afterwards

Maybe &quot;Roll back newly created credentials if an error occurs&quot;?

&gt; Source/WebKit/ChangeLog:9
&gt; +        Otherwise, the newly created credential will be a dangling credential.

Maybe &quot;We should clean up any newly created credentials if an error occurs before the relying party registers the identity. Otherwise we are left with a dangling credential.&quot;

&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.h:78
&gt; +    RetainPtr&lt;NSDate&gt; m_newlyCreatedCredentialId;

This should be an NSData, I think (not an NSDate).

Maybe we should call this &quot;m_provisionalCredentialId&quot;?

Also: Should this be nulled at some point when the credential moves from &apos;provisional&apos; to &apos;committed&apos; (or &apos;complete&apos;) ?

&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:340
&gt; +        m_newlyCreatedCredentialId = toNSData(credentialId);

m_provisionalCredentialId

&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:605
&gt; +            LOG_ERROR(makeString(&quot;Couldn&apos;t delete older credential: &quot;_s, status).utf8().data());

I think this should say something like:

&quot;Couldn&apos;t delete provisional credential while handling error: &quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650436</commentid>
    <comment_count>5</comment_count>
      <attachid>398712</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-05-07 17:51:48 -0700</bug_when>
    <thetext>Comment on attachment 398712
Patch

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

Thanks Brent for reviewing this patch.

&gt;&gt; Source/WebKit/ChangeLog:3
&gt;&gt; +        [WebAuthn] Roll back the newly created credential if an error happens afterwards
&gt; 
&gt; Maybe &quot;Roll back newly created credentials if an error occurs&quot;?

Fixed.

&gt;&gt; Source/WebKit/ChangeLog:9
&gt;&gt; +        Otherwise, the newly created credential will be a dangling credential.
&gt; 
&gt; Maybe &quot;We should clean up any newly created credentials if an error occurs before the relying party registers the identity. Otherwise we are left with a dangling credential.&quot;

Fixed.

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.h:78
&gt;&gt; +    RetainPtr&lt;NSDate&gt; m_newlyCreatedCredentialId;
&gt; 
&gt; This should be an NSData, I think (not an NSDate).
&gt; 
&gt; Maybe we should call this &quot;m_provisionalCredentialId&quot;?
&gt; 
&gt; Also: Should this be nulled at some point when the credential moves from &apos;provisional&apos; to &apos;committed&apos; (or &apos;complete&apos;) ?

Oops, it is indeed a type. But strangely, it compiles and works. There is no needs to commit it. Once the credential is returned to the RP, the LocalAuthenticator object will be cleared.

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:340
&gt;&gt; +        m_newlyCreatedCredentialId = toNSData(credentialId);
&gt; 
&gt; m_provisionalCredentialId

Fixed.

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:605
&gt;&gt; +            LOG_ERROR(makeString(&quot;Couldn&apos;t delete older credential: &quot;_s, status).utf8().data());
&gt; 
&gt; I think this should say something like:
&gt; 
&gt; &quot;Couldn&apos;t delete provisional credential while handling error: &quot;

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650439</commentid>
    <comment_count>6</comment_count>
      <attachid>398821</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-05-07 18:09:26 -0700</bug_when>
    <thetext>Created attachment 398821
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650442</commentid>
    <comment_count>7</comment_count>
      <attachid>398823</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-05-07 18:13:29 -0700</bug_when>
    <thetext>Created attachment 398823
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650463</commentid>
    <comment_count>8</comment_count>
      <attachid>398823</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-05-07 19:04:28 -0700</bug_when>
    <thetext>Comment on attachment 398823
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650470</commentid>
    <comment_count>9</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-05-07 19:28:05 -0700</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #8)
&gt; Comment on attachment 398823 [details]
&gt; Patch
&gt; 
&gt; r=me

Thanks for r+ the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650472</commentid>
    <comment_count>10</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-05-07 19:33:21 -0700</bug_when>
    <thetext>Committed r261366: &lt;https://trac.webkit.org/changeset/261366&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398712</attachid>
            <date>2020-05-07 01:35:59 -0700</date>
            <delta_ts>2020-05-07 18:09:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183530-20200507013558.patch</filename>
            <type>text/plain</type>
            <size>16277</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxMjE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDU5ZTFhZTM1NDAzNDAwZmEy
ZTQ1NTk5ODM1MzllMGE5ZDQzMWRjZWYuLmU1ZmVkNTljZGFlMGZiYzk4MmVjMDAwY2M0MDhjMGU5
MmViYTEzMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjAtMDUtMDcgIEppZXdlbiBU
YW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIFJvbGwgYmFj
ayB0aGUgbmV3bHkgY3JlYXRlZCBjcmVkZW50aWFsIGlmIGFuIGVycm9yIGhhcHBlbnMgYWZ0ZXJ3
YXJkcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgz
NTMwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MzM1NzMwNT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBPdGhlcndpc2UsIHRoZSBuZXdseSBjcmVh
dGVkIGNyZWRlbnRpYWwgd2lsbCBiZSBhIGRhbmdsaW5nIGNyZWRlbnRpYWwuCisKKyAgICAgICAg
Q292ZXJlZCBieSBBUEkgdGVzdHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbToKKyAgICAgICAgKFdl
YktpdDo6TG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJVc2Vy
VmVyaWZpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9yOjpjb250
aW51ZUdldEFzc2VydGlvbkFmdGVyVXNlclZlcmlmaWNhdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OkxvY2FsQXV0aGVudGljYXRvcjo6cmVjZWl2ZUV4Y2VwdGlvbiBjb25zdCk6CisKIDIwMjAtMDUt
MDUgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggZGVw
cmVjYXRlZCBOU0dyYXBoaWNzQ29udGV4dCBtZXRob2RzIHVzaW5nICdncmFwaGljc1BvcnQnCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2Nv
YS9Mb2NhbEF1dGhlbnRpY2F0b3IuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5oCmluZGV4IDJkZDBjYjRlZjBlODY4
NjZmNTEzNDFiNDYwODNjMzRiZjRhODY0MTEuLmEzODg2OWIxZDZiMmM3MWFhODAzMGRhOTg1MTFk
MWQyYzU2Yzc4MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5oCkBA
IC03NSw2ICs3NSw3IEBAIHByaXZhdGU6CiAgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpJbml0
IH07CiAgICAgVW5pcXVlUmVmPExvY2FsQ29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAgIFZl
Y3RvcjxSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPj4gbV9leGlz
dGluZ0NyZWRlbnRpYWxzOworICAgIFJldGFpblB0cjxOU0RhdGU+IG1fbmV3bHlDcmVhdGVkQ3Jl
ZGVudGlhbElkOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRp
Y2F0b3IubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2Nv
YS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0KaW5kZXggN2FiNjVhOGE2YzZlNzRmNDNlNTQ0YWIxYzY5
OGVkMDBlYmIxODYzZi4uNjM4Njk2MjU1MDllYTdmNzM3YWMwZmUzY2Q1YmVmZGU1OWEyYTk3MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29j
b2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbQpAQCAtMzM3LDEzICsz
MzcsMTQgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxB
ZnRlclVzZXJWZXJpZmljYXRpb24oU2VjQWNjZXNzQ28KICAgICAgICAgYXV0byBkaWdlc3QgPSBQ
QUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNI
QV8xKTsKICAgICAgICAgZGlnZXN0LT5hZGRCeXRlcyhuc1B1YmxpY0tleURhdGEuYnl0ZXMsIG5z
UHVibGljS2V5RGF0YS5sZW5ndGgpOwogICAgICAgICBjcmVkZW50aWFsSWQgPSBkaWdlc3QtPmNv
bXB1dGVIYXNoKCk7CisgICAgICAgIG1fbmV3bHlDcmVhdGVkQ3JlZGVudGlhbElkID0gdG9OU0Rh
dGEoY3JlZGVudGlhbElkKTsKIAogI2lmbmRlZiBOREVCVUcKICAgICAgICAgTlNEaWN0aW9uYXJ5
ICpjcmVkZW50aWFsSWRRdWVyeSA9IEB7CiAgICAgICAgICAgICAoaWQpa1NlY0NsYXNzOiAoaWQp
a1NlY0NsYXNzS2V5LAogICAgICAgICAgICAgKGlkKWtTZWNBdHRyS2V5Q2xhc3M6IChpZClrU2Vj
QXR0cktleUNsYXNzUHJpdmF0ZSwKICAgICAgICAgICAgIChpZClrU2VjQXR0ckxhYmVsOiBzZWNB
dHRyTGFiZWwsCi0gICAgICAgICAgICAoaWQpa1NlY0F0dHJBcHBsaWNhdGlvbkxhYmVsOiB0b05T
RGF0YShjcmVkZW50aWFsSWQpLmdldCgpLAorICAgICAgICAgICAgKGlkKWtTZWNBdHRyQXBwbGlj
YXRpb25MYWJlbDogbV9uZXdseUNyZWF0ZWRDcmVkZW50aWFsSWQuZ2V0KCksCiAjaWYgSEFWRShE
QVRBX1BST1RFQ1RJT05fS0VZQ0hBSU4pCiAgICAgICAgICAgICAoaWQpa1NlY1VzZURhdGFQcm90
ZWN0aW9uS2V5Y2hhaW46IEBZRVMKICNlbHNlCkBAIC01NTksMTEgKzU2MCw2IEBAIHZvaWQgTG9j
YWxBdXRoZW50aWNhdG9yOjpjb250aW51ZUdldEFzc2VydGlvbkFmdGVyVXNlclZlcmlmaWNhdGlv
bihSZWY8V2ViQ29yZTo6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICAvLyBTdGVwIDEzLgotICAg
IHJlc3BvbnNlLT5zZXRBdXRoZW50aWNhdG9yRGF0YShXVEZNb3ZlKGF1dGhEYXRhKSk7Ci0gICAg
cmVzcG9uc2UtPnNldFNpZ25hdHVyZSh0b0FycmF5QnVmZmVyKChOU0RhdGEgKilzaWduYXR1cmUu
Z2V0KCkpKTsKLSAgICByZWNlaXZlUmVzcG9uZChXVEZNb3ZlKHJlc3BvbnNlKSk7Ci0KICAgICAv
LyBFeHRyYSBzdGVwOiB1cGRhdGUgdGhlIEtleWNoYWluIGl0ZW0gd2l0aCB0aGUgc2FtZSB2YWx1
ZSB0byB1cGRhdGUgaXRzIG1vZGlmaWNhdGlvbiBkYXRlIHN1Y2ggdGhhdCBMUlUgY2FuIGJlIHVz
ZWQKICAgICAvLyBmb3Igc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2UKICAgICBOU0RpY3Rpb25hcnkg
KnVwZGF0ZVF1ZXJ5ID0gQHsKQEAgLTU4MiwxMyArNTc4LDM2IEBAIHZvaWQgTG9jYWxBdXRoZW50
aWNhdG9yOjpjb250aW51ZUdldEFzc2VydGlvbkFmdGVyVXNlclZlcmlmaWNhdGlvbihSZWY8V2Vi
Q29yZTo6CiAgICAgYXV0byBzdGF0dXMgPSBTZWNJdGVtVXBkYXRlKChfX2JyaWRnZSBDRkRpY3Rp
b25hcnlSZWYpdXBkYXRlUXVlcnksIChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpdXBkYXRlUGFy
YW1zKTsKICAgICBpZiAoc3RhdHVzKQogICAgICAgICBMT0dfRVJST1IoIkNvdWxkbid0IHVwZGF0
ZSB0aGUgS2V5Y2hhaW4gaXRlbTogJWQiLCBzdGF0dXMpOworCisgICAgLy8gU3RlcCAxMy4KKyAg
ICByZXNwb25zZS0+c2V0QXV0aGVudGljYXRvckRhdGEoV1RGTW92ZShhdXRoRGF0YSkpOworICAg
IHJlc3BvbnNlLT5zZXRTaWduYXR1cmUodG9BcnJheUJ1ZmZlcigoTlNEYXRhICopc2lnbmF0dXJl
LmdldCgpKSk7CisgICAgcmVjZWl2ZVJlc3BvbmQoV1RGTW92ZShyZXNwb25zZSkpOwogfQogCiB2
b2lkIExvY2FsQXV0aGVudGljYXRvcjo6cmVjZWl2ZUV4Y2VwdGlvbihFeGNlcHRpb25EYXRhJiYg
ZXhjZXB0aW9uLCBXZWJBdXRoZW50aWNhdGlvblN0YXR1cyBzdGF0dXMpIGNvbnN0CiB7CiAgICAg
TE9HX0VSUk9SKGV4Y2VwdGlvbi5tZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOworCisgICAgLy8gUm9s
bCBiYWNrIHRoZSBqdXN0IGNyZWF0ZWQgY3JlZGVudGlhbC4KKyAgICBpZiAobV9uZXdseUNyZWF0
ZWRDcmVkZW50aWFsSWQpIHsKKyAgICAgICAgTlNEaWN0aW9uYXJ5KiBkZWxldGVRdWVyeSA9IEB7
CisgICAgICAgICAgICAoaWQpa1NlY0NsYXNzOiAoaWQpa1NlY0NsYXNzS2V5LAorICAgICAgICAg
ICAgKGlkKWtTZWNBdHRyQXBwbGljYXRpb25MYWJlbDogbV9uZXdseUNyZWF0ZWRDcmVkZW50aWFs
SWQuZ2V0KCksCisjaWYgSEFWRShEQVRBX1BST1RFQ1RJT05fS0VZQ0hBSU4pCisgICAgICAgICAg
ICAoaWQpa1NlY1VzZURhdGFQcm90ZWN0aW9uS2V5Y2hhaW46IEBZRVMKKyNlbHNlCisgICAgICAg
ICAgICAoaWQpa1NlY0F0dHJOb0xlZ2FjeTogQFlFUworI2VuZGlmCisgICAgICAgIH07CisgICAg
ICAgIE9TU3RhdHVzIHN0YXR1cyA9IFNlY0l0ZW1EZWxldGUoKF9fYnJpZGdlIENGRGljdGlvbmFy
eVJlZilkZWxldGVRdWVyeSk7CisgICAgICAgIGlmIChzdGF0dXMpCisgICAgICAgICAgICBMT0df
RVJST1IobWFrZVN0cmluZygiQ291bGRuJ3QgZGVsZXRlIG9sZGVyIGNyZWRlbnRpYWw6ICJfcywg
c3RhdHVzKS51dGY4KCkuZGF0YSgpKTsKKyAgICB9CisKICAgICBpZiAoYXV0byogb2JzZXJ2ZXIg
PSB0aGlzLT5vYnNlcnZlcigpKQogICAgICAgICBvYnNlcnZlci0+YXV0aGVudGljYXRvclN0YXR1
c1VwZGF0ZWQoc3RhdHVzKTsKKwogICAgIHJlY2VpdmVSZXNwb25kKFdURk1vdmUoZXhjZXB0aW9u
KSk7CiAgICAgcmV0dXJuOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IDg1OTJlZmVkMjM0MTM5ZTRlZGE1OGVhYjljOGFjZGM0NjhmMWZiZjcu
LjA3Nzg5ODQzYTYzOTEzMGFkYWQ0Mjc1ZjJiNTNkYzU4NWExNzYzZDYgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAy
MC0wNS0wNyAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgorCisgICAgICAgIFtX
ZWJBdXRobl0gUm9sbCBiYWNrIHRoZSBuZXdseSBjcmVhdGVkIGNyZWRlbnRpYWwgaWYgYW4gZXJy
b3IgaGFwcGVucyBhZnRlcndhcmRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xODM1MzAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQzMzU3MzA1Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBh
bmVsLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50
aWFsLWxhLW5vLWF0dGVzdGF0aW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1s
YS5odG1sOgorCiAyMDIwLTA1LTA1ICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255
LmNvbT4KIAogICAgICAgICBbRUNNQS00MDJdIEltcGxlbWVudCBJbnRsLkxvY2FsZQpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCBiYzllNTEwMDE5YTg0MzczYmNiZWZkZmZhYjZkNzY1ODlkMDkx
ZjM3Li5jNWY5NTM1MDcwNTI2MzA1YTI2YTlkN2JiNGE1NzBhNmVkMGYyYzFmIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMzM5LDYgKzMzOSw3IEBACiAJCTU1QTgxN0ZGMjE4MTAyMUEwMDA0
QTM5QSAvKiAxMDB4MTAwLXJlZC50Z2EgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTVBODE3RkUyMTgxMDFERjAwMDRBMzlBIC8qIDEwMHgxMDAt
cmVkLnRnYSAqLzsgfTsKIAkJNTVBODE4MDAyMTgxMDIyMTAwMDRBMzlBIC8qIDQwMHg0MDAtZ3Jl
ZW4ucG5nIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDU1QTgxN0ZEMjE4MTAxREYwMDA0QTM5QSAvKiA0MDB4NDAwLWdyZWVuLnBuZyAqLzsgfTsK
IAkJNTVGOUQyRTUyMjA1MDMxODAwQTlBQjM4IC8qIEFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5
cGVzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTVG
OUQyRTQyMjA1MDMxODAwQTlBQjM4IC8qIEFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzLm1t
ICovOyB9OworCQk1NzAzQkI4RDI0NjNGODg3MDA0NzVGQjIgLyogd2ViLWF1dGhlbnRpY2F0aW9u
LW1ha2UtY3JlZGVudGlhbC1sYS1uby1hdHRlc3RhdGlvbi5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MDNCQjhDMjQ2M0Y4NzIwMDQ3
NUZCMiAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLW5vLWF0dGVzdGF0
aW9uLmh0bWwgKi87IH07CiAJCTU3MEQyNkY0MjNDM0NBNkEwMEQ1Q0Y2NyAvKiB3ZWItYXV0aGVu
dGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWhpZC1waW4tZ2V0LWtleS1hZ3JlZW1lbnQtZXJyb3Iu
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1NzBEMjZGMzIzQzNDQTU1MDBENUNGNjcgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3Jl
ZGVudGlhbC1oaWQtcGluLWdldC1rZXktYWdyZWVtZW50LWVycm9yLmh0bWwgKi87IH07CiAJCTU3
MEQyNkY2MjNDM0QzMzAwMEQ1Q0Y2NyAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50
aWFsLWhpZC1waW4uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1NzBEMjZGNTIzQzNEMzI3MDBENUNGNjcgLyogd2ViLWF1dGhlbnRpY2F0
aW9uLW1ha2UtY3JlZGVudGlhbC1oaWQtcGluLmh0bWwgKi87IH07CiAJCTU3MEQyNkZBMjNDM0Yy
NTEwMEQ1Q0Y2NyAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWhpZC1waW4t
Z2V0LXBpbi10b2tlbi1waW4tYmxvY2tlZC1lcnJvci5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MEQyNkY5MjNDM0YyNDUwMEQ1Q0Y2
NyAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWhpZC1waW4tZ2V0LXBpbi10
b2tlbi1waW4tYmxvY2tlZC1lcnJvci5odG1sICovOyB9OwpAQCAtMTU3OCw2ICsxNTc5LDcgQEAK
IAkJCQk1Nzk4MzM3RTIzNjAxOUE0MDA4RTU1NDcgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2Ut
Y3JlZGVudGlhbC1oaWQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1NzQyMTc4QTI0
MDBBRUQ4MDAyQjMwM0QgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS1k
dXBsaWNhdGUtY3JlZGVudGlhbC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTU3NDIx
Nzg4MjQwMEFDMjUwMDJCMzAzRCAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFs
LWxhLWVycm9yLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCisJCQkJNTcwM0JCOEQyNDYzRjg4
NzAwNDc1RkIyIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEtbm8tYXR0
ZXN0YXRpb24uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1N0VERkM1QzI0NUExQTNG
MDA5NTk1MjEgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS1uby1tb2Nr
Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNTc0MjE3OEUyNDAwRDJERjAwMkIzMDNE
IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEuaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLywKIAkJCQkxQzJCODE4NjFDODkyNTlEMDBBNTUyOUYgLyogd2ViZm9udC5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovLApAQCAtMTk5OSw2ICsyMDAxLDcgQEAKIAkJNTVBODE3RkQy
MTgxMDFERjAwMDRBMzlBIC8qIDQwMHg0MDAtZ3JlZW4ucG5nICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucG5nOyBwYXRoID0gIjQwMHg0MDAt
Z3JlZW4ucG5nIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTVBODE3RkUyMTgxMDFE
RjAwMDRBMzlBIC8qIDEwMHgxMDAtcmVkLnRnYSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IGZpbGU7IHBhdGggPSAiMTAweDEwMC1yZWQudGdhIjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTVGOUQyRTQyMjA1MDMxODAwQTlBQjM4IC8qIEFk
ZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBZGRp
dGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNTcwM0JCOEMyNDYzRjg3MjAwNDc1RkIyIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNy
ZWRlbnRpYWwtbGEtbm8tYXR0ZXN0YXRpb24uaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJ3ZWItYXV0aGVudGlj
YXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLW5vLWF0dGVzdGF0aW9uLmh0bWwiOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1NzBEMjZGMzIzQzNDQTU1MDBENUNGNjcgLyogd2ViLWF1dGhl
bnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1oaWQtcGluLWdldC1rZXktYWdyZWVtZW50LWVycm9y
Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0Lmh0bWw7IHBhdGggPSAid2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1oaWQt
cGluLWdldC1rZXktYWdyZWVtZW50LWVycm9yLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1NzBEMjZGNTIzQzNEMzI3MDBENUNGNjcgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1h
a2UtY3JlZGVudGlhbC1oaWQtcGluLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAid2ViLWF1dGhlbnRpY2F0aW9u
LW1ha2UtY3JlZGVudGlhbC1oaWQtcGluLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1NzBEMjZGOTIzQzNGMjQ1MDBENUNGNjcgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2Ut
Y3JlZGVudGlhbC1oaWQtcGluLWdldC1waW4tdG9rZW4tcGluLWJsb2NrZWQtZXJyb3IuaHRtbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRt
bDsgcGF0aCA9ICJ3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWhpZC1waW4tZ2V0
LXBpbi10b2tlbi1waW4tYmxvY2tlZC1lcnJvci5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTM3MDgsNiArMzcxMSw3IEBACiAJCQkJNTc5ODMzN0QyMzYwMTk2RDAwOEU1NTQ3
IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtaGlkLmh0bWwgKi8sCiAJCQkJ
NTc0MjE3ODkyNDAwQUVEMDAwMkIzMDNEIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRl
bnRpYWwtbGEtZHVwbGljYXRlLWNyZWRlbnRpYWwuaHRtbCAqLywKIAkJCQk1NzQyMTc4NzI0MDBB
QkZEMDAyQjMwM0QgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS1lcnJv
ci5odG1sICovLAorCQkJCTU3MDNCQjhDMjQ2M0Y4NzIwMDQ3NUZCMiAvKiB3ZWItYXV0aGVudGlj
YXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLW5vLWF0dGVzdGF0aW9uLmh0bWwgKi8sCiAJCQkJNTdF
REZDNUIyNDVBMThGNTAwOTU5NTIxIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRp
YWwtbGEtbm8tbW9jay5odG1sICovLAogCQkJCTU3NDIxNzhEMjQwMEQyNkMwMDJCMzAzRCAvKiB3
ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLmh0bWwgKi8sCiAJCQkJNTE3MTRF
QjIxQ0Y4Qzc2MTAwNDcyM0M0IC8qIFdlYlByb2Nlc3NLaWxsSURCQ2xlYW51cC0xLmh0bWwgKi8s
CkBAIC00NjU3LDYgKzQ2NjEsNyBAQAogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsK
IAkJCWZpbGVzID0gKAogCQkJCTdDODNERTk5MUQwQTU5MEMwMEZFQkNGMyAvKiBBdG9tU3RyaW5n
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZFMkQ5NDc0MjQ1RUIyRjQwMEU0ODEzNSAvKiBCaXRt
YXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFEQUQxNTAxRDc3QTlGNjAwMjEyNTg2IC8qIEJs
b2NrUHRyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RFOUMxRDBBNTkwQzAwRkVCQ0YzIC8q
IEJsb29tRmlsdGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA0REIyMzk2MjM1RTQzRUMwMDMy
OEYxNyAvKiBCdW1wUG9pbnRlckFsbG9jYXRvci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTQ3MDIs
NyArNDcwNyw2IEBACiAJCQkJRTM4RDY1Q0IyM0E0NUZBQTAwNjNENjlBIC8qIFBhY2tlZFJlZlB0
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREY1OTFEMEE1OTBDMDBGRUJDRjMgLyogUGFy
a2luZ0xvdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1M0VDMjU0MTFFOTZGRDg3MDAwODMxQjkg
LyogUHJpb3JpdHlRdWV1ZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlGRTJEOTQ3NDI0NUVCMkY0
MDBFNDgxMzUgLyogQml0bWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERjEzMUQwQTU5
MEMwMEZFQkNGMyAvKiBSZWRCbGFja1RyZWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RG
MTQxRDBBNTkwQzAwRkVCQ0YzIC8qIFJlZi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREYx
NTFEMEE1OTBDMDBGRUJDRjMgLyogUmVmQ291bnRlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVu
dGljYXRpb25QYW5lbC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQppbmRleCBmNzliZDQ1YmVlZGJjMWU5NTdkYWU5
ZmFjYzlkNDU5NDkzM2Q0YTVlLi4yNTkyODliYjc3ZmI5MWExN2NhYzFhODNiM2UxYzMxMGRiZTQw
NGYyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19X
S1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCkBAIC0xMzMxLDYgKzEz
MzEsMzYgQEAgVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBMQU1ha2VDcmVkZW50aWFsTm9N
b2NrTm9Vc2VyR2VzdHVyZSkKICAgICBjaGVja1BhbmVsKFtkZWxlZ2F0ZSBwYW5lbF0sIEAiIiwg
QFthZG9wdE5TKFtbTlNOdW1iZXIgYWxsb2NdIGluaXRXaXRoSW50Ol9XS1dlYkF1dGhlbnRpY2F0
aW9uVHJhbnNwb3J0VVNCXSkuZ2V0KCldLCBfV0tXZWJBdXRoZW50aWNhdGlvblR5cGVDcmVhdGUp
OwogfQogCitURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIExBTWFrZUNyZWRlbnRpYWxSb2xs
QmFja0NyZWRlbnRpYWwpCit7CisgICAgcmVzZXQoKTsKKyAgICBSZXRhaW5QdHI8TlNVUkw+IHRl
c3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAid2ViLWF1dGhl
bnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS1uby1hdHRlc3RhdGlvbiIgd2l0aEV4dGVuc2lv
bjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisKKyAg
ICBhdXRvICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29u
ZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJ
bnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKKyAgICBbW2NvbmZpZ3VyYXRp
b24gcHJlZmVyZW5jZXNdIF9zZXRFbmFibGVkOllFUyBmb3JFeHBlcmltZW50YWxGZWF0dXJlOndl
YkF1dGhlbnRpY2F0aW9uRXhwZXJpbWVudGFsRmVhdHVyZSgpXTsKKworICAgIGF1dG8gd2ViVmll
dyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1Jl
Y3QgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFk
b3B0TlMoW1tUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbFVJRGVsZWdhdGUgYWxsb2NdIGluaXRd
KTsKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKworICAgIGxv
Y2FsQXV0aGVudGljYXRvclBvbGljeSA9IF9XS0xvY2FsQXV0aGVudGljYXRvclBvbGljeUFsbG93
OworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6
dGVzdFVSTC5nZXQoKV1dOworICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiQ291bGRuJ3Qg
YXR0ZXN0OiBUaGUgb3BlcmF0aW9uIGNvdWxkbid0IGNvbXBsZXRlLiJdOworCisgICAgTlNEaWN0
aW9uYXJ5ICpxdWVyeSA9IEB7CisgICAgICAgIChpZClrU2VjQ2xhc3M6IChpZClrU2VjQ2xhc3NL
ZXksCisgICAgICAgIChpZClrU2VjQXR0cktleUNsYXNzOiAoaWQpa1NlY0F0dHJLZXlDbGFzc1By
aXZhdGUsCisgICAgICAgIChpZClrU2VjQXR0ckxhYmVsOiBAIiIsCisjaWYgSEFWRShEQVRBX1BS
T1RFQ1RJT05fS0VZQ0hBSU4pCisgICAgICAgIChpZClrU2VjVXNlRGF0YVByb3RlY3Rpb25LZXlj
aGFpbjogQFlFUworI2Vsc2UKKyAgICAgICAgKGlkKWtTZWNBdHRyTm9MZWdhY3k6IEBZRVMKKyNl
bmRpZgorICAgIH07CisgICAgT1NTdGF0dXMgc3RhdHVzID0gU2VjSXRlbUNvcHlNYXRjaGluZygo
X19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKXF1ZXJ5LCBudWxscHRyKTsKKyAgICBFWFBFQ1RfRVEo
c3RhdHVzLCBlcnJTZWNJdGVtTm90Rm91bmQpOworfQorCiAvLyBTa2lwIHRoZSB0ZXN0IGJlY2F1
c2Ugb2YgPHJkYXI6Ly9wcm9ibGVtLzU5NjM1NDg2Pi4KICNpZiBQTEFURk9STShNQUMpCiAKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhl
bnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS1uby1hdHRlc3RhdGlvbi5odG1sIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tbWFrZS1j
cmVkZW50aWFsLWxhLW5vLWF0dGVzdGF0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDE3YWE0MTU5OTY4
MzhjYjU4NTNmNDZiMDlkOTVhNzRlYmU1NWQ2NgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3Jl
ZGVudGlhbC1sYS1uby1hdHRlc3RhdGlvbi5odG1sCkBAIC0wLDAgKzEsNDIgQEAKKzxpbnB1dCB0
eXBlPSJ0ZXh0IiBpZD0iaW5wdXQiPgorPHNjcmlwdD4KKyAgICBjb25zdCB0ZXN0RVMyNTZQcml2
YXRlS2V5QmFzZTY0ID0KKyAgICAgICAgIkJEai96eFNrektnYUJ1UzNjZFdERjU1OG9mOEFhSXBn
RnBzakYvUW0xNzQ5VkJKUGdxVUl3ZmhXSEo5MW5iN1UiICsKKyAgICAgICAgIlBINzZjMCtXRk96
WktzbFB5eUZzZTRnb0dJVzJSN2s5VkhMUEVabDVuZm5CZ0VWRmg1emV2Ky94cEhRSXZ1cTYiICsK
KyAgICAgICAgIlJRPT0iOworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgIGlu
dGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsKKyAgICAgICAg
ICAgIGxvY2FsOiB7CisgICAgICAgICAgICAgICAgdXNlclZlcmlmaWNhdGlvbjogInllcyIsCisg
ICAgICAgICAgICAgICAgYWNjZXB0QXR0ZXN0YXRpb246IGZhbHNlLAorICAgICAgICAgICAgICAg
IHByaXZhdGVLZXlCYXNlNjQ6IHRlc3RFUzI1NlByaXZhdGVLZXlCYXNlNjQsCisgICAgICAgICAg
IH0KKyAgICAgICAgfSk7CisgICAgICAgIGludGVybmFscy53aXRoVXNlckdlc3R1cmUoKCkgPT4g
eyBpbnB1dC5mb2N1cygpOyB9KTsKKyAgICB9CisKKyAgICBjb25zdCBvcHRpb25zID0geworICAg
ICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgIHJwOiB7CisgICAgICAgICAgICAgICAgbmFt
ZTogImxvY2FsaG9zdCIsCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgdXNlcjogeworICAg
ICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAgaWQ6
IG5ldyBVaW50OEFycmF5KDE2KSwKKyAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkFwcGxl
c2VlZCIsCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgY2hhbGxlbmdlOiBuZXcgVWludDhB
cnJheSgxNiksCisgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGlj
LWtleSIsIGFsZzogLTcgfV0sCisgICAgICAgICAgICBhdHRlc3RhdGlvbjogImRpcmVjdCIsCisg
ICAgICAgICAgICB0aW1lb3V0OiAxMDAsCisgICAgICAgIH0KKyAgICB9OworCisgICAgbmF2aWdh
dG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4geworICAg
ICAgICAvLyBjb25zb2xlLmxvZygiU3VjY2VlZGVkISIpOworICAgICAgICB3aW5kb3cud2Via2l0
Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgiU3VjY2VlZGVkISIpOwor
ICAgIH0sIGVycm9yID0+IHsKKyAgICAgICAgLy8gY29uc29sZS5sb2coZXJyb3IubWVzc2FnZSk7
CisgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RN
ZXNzYWdlKGVycm9yLm1lc3NhZ2UpOworICAgIH0pOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1t
YWtlLWNyZWRlbnRpYWwtbGEuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS5odG1sCmluZGV4IGVm
YWNjZWQyOGU5NGMxNjQyY2RjNzk3Yzc2NTAzMWEzNDZmZDhjOTcuLmQ3NWQ3Yzg4ZWZkYzQ2Njhi
Y2IwNmIwMGJhZjlmNzcyOGZjMWI4MWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS5o
dG1sCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhl
bnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS5odG1sCkBAIC01Miw2ICs1Miw3IEBACiAgICAg
ICAgICAgICB9LAogICAgICAgICAgICAgY2hhbGxlbmdlOiBuZXcgVWludDhBcnJheSgxNiksCiAg
ICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzog
LTcgfV0sCisgICAgICAgICAgICBhdHRlc3RhdGlvbjogImRpcmVjdCIsCiAgICAgICAgICAgICB0
aW1lb3V0OiAxMDAsCiAgICAgICAgIH0KICAgICB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398821</attachid>
            <date>2020-05-07 18:09:26 -0700</date>
            <delta_ts>2020-05-07 18:13:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183530-20200507180925.patch</filename>
            <type>text/plain</type>
            <size>16375</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxMjE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDU5ZTFhZTM1NDAzNDAwZmEy
ZTQ1NTk5ODM1MzllMGE5ZDQzMWRjZWYuLmUyM2RiMjUzZGRjNWRhZTY5YzU5MjYwY2YyYTEyMjk2
NGI4NDViZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjAtMDUtMDcgIEppZXdlbiBU
YW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIFJvbGwgYmFj
ayBuZXdseSBjcmVhdGVkIGNyZWRlbnRpYWxzIGlmIGFuIGVycm9yIG9jY3VycworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNTMwCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS80MzM1NzMwNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBXZSBzaG91bGQgY2xlYW4gdXAgYW55IG5ld2x5IGNyZWF0ZWQgY3Jl
ZGVudGlhbHMgaWYgYW4gZXJyb3Igb2NjdXJzIGJlZm9yZSB0aGUgcmVseWluZyBwYXJ0eQorICAg
ICAgICByZWdpc3RlcnMgdGhlIGlkZW50aXR5LiBPdGhlcndpc2Ugd2UgYXJlIGxlZnQgd2l0aCBh
IGRhbmdsaW5nIGNyZWRlbnRpYWwuCisKKyAgICAgICAgQ292ZXJlZCBieSBBUEkgdGVzdHMuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50
aWNhdG9yLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xv
Y2FsQXV0aGVudGljYXRvci5tbToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9y
Ojpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJVc2VyVmVyaWZpY2F0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZUdldEFzc2VydGlvbkFmdGVyVXNl
clZlcmlmaWNhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6cmVj
ZWl2ZUV4Y2VwdGlvbiBjb25zdCk6CisKIDIwMjAtMDUtMDUgIERhdmlkIEtpbHplciAgPGRka2ls
emVyQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggZGVwcmVjYXRlZCBOU0dyYXBoaWNzQ29udGV4
dCBtZXRob2RzIHVzaW5nICdncmFwaGljc1BvcnQnCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0
aGVudGljYXRvci5oCmluZGV4IDJkZDBjYjRlZjBlODY4NjZmNTEzNDFiNDYwODNjMzRiZjRhODY0
MTEuLjU4NDc5ZDQ5YzlkZDZjMDQ5ZTY3ZjYyZGMwNzk1NWI3NWNiMzEzOWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0
aGVudGljYXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5oCkBAIC03NSw2ICs3NSw3IEBAIHByaXZhdGU6
CiAgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpJbml0IH07CiAgICAgVW5pcXVlUmVmPExvY2Fs
Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAgIFZlY3RvcjxSZWY8V2ViQ29yZTo6QXV0aGVu
dGljYXRvckFzc2VydGlvblJlc3BvbnNlPj4gbV9leGlzdGluZ0NyZWRlbnRpYWxzOworICAgIFJl
dGFpblB0cjxOU0RhdGE+IG1fcHJvdmlzaW9uYWxDcmVkZW50aWFsSWQ7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbQpp
bmRleCA3YWI2NWE4YTZjNmU3NGY0M2U1NDRhYjFjNjk4ZWQwMGViYjE4NjNmLi5jYzE4Nzg2ZDBi
NDE1MWZmMDRkM2NkY2JiMmZjN2Q4OWNhMWQ0MjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9j
YWxBdXRoZW50aWNhdG9yLm1tCkBAIC0zMzcsMTMgKzMzNywxNCBAQCB2b2lkIExvY2FsQXV0aGVu
dGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNlclZlcmlmaWNhdGlvbihTZWNB
Y2Nlc3NDbwogICAgICAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUo
UEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzEpOwogICAgICAgICBkaWdlc3QtPmFk
ZEJ5dGVzKG5zUHVibGljS2V5RGF0YS5ieXRlcywgbnNQdWJsaWNLZXlEYXRhLmxlbmd0aCk7CiAg
ICAgICAgIGNyZWRlbnRpYWxJZCA9IGRpZ2VzdC0+Y29tcHV0ZUhhc2goKTsKKyAgICAgICAgbV9w
cm92aXNpb25hbENyZWRlbnRpYWxJZCA9IHRvTlNEYXRhKGNyZWRlbnRpYWxJZCk7CiAKICNpZm5k
ZWYgTkRFQlVHCiAgICAgICAgIE5TRGljdGlvbmFyeSAqY3JlZGVudGlhbElkUXVlcnkgPSBAewog
ICAgICAgICAgICAgKGlkKWtTZWNDbGFzczogKGlkKWtTZWNDbGFzc0tleSwKICAgICAgICAgICAg
IChpZClrU2VjQXR0cktleUNsYXNzOiAoaWQpa1NlY0F0dHJLZXlDbGFzc1ByaXZhdGUsCiAgICAg
ICAgICAgICAoaWQpa1NlY0F0dHJMYWJlbDogc2VjQXR0ckxhYmVsLAotICAgICAgICAgICAgKGlk
KWtTZWNBdHRyQXBwbGljYXRpb25MYWJlbDogdG9OU0RhdGEoY3JlZGVudGlhbElkKS5nZXQoKSwK
KyAgICAgICAgICAgIChpZClrU2VjQXR0ckFwcGxpY2F0aW9uTGFiZWw6IG1fcHJvdmlzaW9uYWxD
cmVkZW50aWFsSWQuZ2V0KCksCiAjaWYgSEFWRShEQVRBX1BST1RFQ1RJT05fS0VZQ0hBSU4pCiAg
ICAgICAgICAgICAoaWQpa1NlY1VzZURhdGFQcm90ZWN0aW9uS2V5Y2hhaW46IEBZRVMKICNlbHNl
CkBAIC01NTksMTEgKzU2MCw2IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZUdl
dEFzc2VydGlvbkFmdGVyVXNlclZlcmlmaWNhdGlvbihSZWY8V2ViQ29yZTo6CiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICAvLyBTdGVwIDEzLgotICAgIHJlc3BvbnNlLT5zZXRBdXRoZW50aWNhdG9y
RGF0YShXVEZNb3ZlKGF1dGhEYXRhKSk7Ci0gICAgcmVzcG9uc2UtPnNldFNpZ25hdHVyZSh0b0Fy
cmF5QnVmZmVyKChOU0RhdGEgKilzaWduYXR1cmUuZ2V0KCkpKTsKLSAgICByZWNlaXZlUmVzcG9u
ZChXVEZNb3ZlKHJlc3BvbnNlKSk7Ci0KICAgICAvLyBFeHRyYSBzdGVwOiB1cGRhdGUgdGhlIEtl
eWNoYWluIGl0ZW0gd2l0aCB0aGUgc2FtZSB2YWx1ZSB0byB1cGRhdGUgaXRzIG1vZGlmaWNhdGlv
biBkYXRlIHN1Y2ggdGhhdCBMUlUgY2FuIGJlIHVzZWQKICAgICAvLyBmb3Igc2VsZWN0QXNzZXJ0
aW9uUmVzcG9uc2UKICAgICBOU0RpY3Rpb25hcnkgKnVwZGF0ZVF1ZXJ5ID0gQHsKQEAgLTU4Miwx
MyArNTc4LDM2IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZUdldEFzc2VydGlv
bkFmdGVyVXNlclZlcmlmaWNhdGlvbihSZWY8V2ViQ29yZTo6CiAgICAgYXV0byBzdGF0dXMgPSBT
ZWNJdGVtVXBkYXRlKChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpdXBkYXRlUXVlcnksIChfX2Jy
aWRnZSBDRkRpY3Rpb25hcnlSZWYpdXBkYXRlUGFyYW1zKTsKICAgICBpZiAoc3RhdHVzKQogICAg
ICAgICBMT0dfRVJST1IoIkNvdWxkbid0IHVwZGF0ZSB0aGUgS2V5Y2hhaW4gaXRlbTogJWQiLCBz
dGF0dXMpOworCisgICAgLy8gU3RlcCAxMy4KKyAgICByZXNwb25zZS0+c2V0QXV0aGVudGljYXRv
ckRhdGEoV1RGTW92ZShhdXRoRGF0YSkpOworICAgIHJlc3BvbnNlLT5zZXRTaWduYXR1cmUodG9B
cnJheUJ1ZmZlcigoTlNEYXRhICopc2lnbmF0dXJlLmdldCgpKSk7CisgICAgcmVjZWl2ZVJlc3Bv
bmQoV1RGTW92ZShyZXNwb25zZSkpOwogfQogCiB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6cmVj
ZWl2ZUV4Y2VwdGlvbihFeGNlcHRpb25EYXRhJiYgZXhjZXB0aW9uLCBXZWJBdXRoZW50aWNhdGlv
blN0YXR1cyBzdGF0dXMpIGNvbnN0CiB7CiAgICAgTE9HX0VSUk9SKGV4Y2VwdGlvbi5tZXNzYWdl
LnV0ZjgoKS5kYXRhKCkpOworCisgICAgLy8gUm9sbCBiYWNrIHRoZSBqdXN0IGNyZWF0ZWQgY3Jl
ZGVudGlhbC4KKyAgICBpZiAobV9wcm92aXNpb25hbENyZWRlbnRpYWxJZCkgeworICAgICAgICBO
U0RpY3Rpb25hcnkqIGRlbGV0ZVF1ZXJ5ID0gQHsKKyAgICAgICAgICAgIChpZClrU2VjQ2xhc3M6
IChpZClrU2VjQ2xhc3NLZXksCisgICAgICAgICAgICAoaWQpa1NlY0F0dHJBcHBsaWNhdGlvbkxh
YmVsOiBtX3Byb3Zpc2lvbmFsQ3JlZGVudGlhbElkLmdldCgpLAorI2lmIEhBVkUoREFUQV9QUk9U
RUNUSU9OX0tFWUNIQUlOKQorICAgICAgICAgICAgKGlkKWtTZWNVc2VEYXRhUHJvdGVjdGlvbktl
eWNoYWluOiBAWUVTCisjZWxzZQorICAgICAgICAgICAgKGlkKWtTZWNBdHRyTm9MZWdhY3k6IEBZ
RVNzCisjZW5kaWYKKyAgICAgICAgfTsKKyAgICAgICAgT1NTdGF0dXMgc3RhdHVzID0gU2VjSXRl
bURlbGV0ZSgoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKWRlbGV0ZVF1ZXJ5KTsKKyAgICAgICAg
aWYgKHN0YXR1cykKKyAgICAgICAgICAgIExPR19FUlJPUihtYWtlU3RyaW5nKCJDb3VsZG4ndCBk
ZWxldGUgcHJvdmlzaW9uYWwgY3JlZGVudGlhbCB3aGlsZSBoYW5kbGluZyBlcnJvcjogIl9zLCBz
dGF0dXMpLnV0ZjgoKS5kYXRhKCkpOworICAgIH0KKwogICAgIGlmIChhdXRvKiBvYnNlcnZlciA9
IHRoaXMtPm9ic2VydmVyKCkpCiAgICAgICAgIG9ic2VydmVyLT5hdXRoZW50aWNhdG9yU3RhdHVz
VXBkYXRlZChzdGF0dXMpOworCiAgICAgcmVjZWl2ZVJlc3BvbmQoV1RGTW92ZShleGNlcHRpb24p
KTsKICAgICByZXR1cm47CiB9CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggODU5MmVmZWQyMzQxMzllNGVkYTU4ZWFiOWM4YWNkYzQ2OGYxZmJmNy4u
MzA4MmViNTdjNDg1ZmI5ZGM2NDkzZjA4ODVlZjNmYzQ5NmU4ZGIzMSAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIw
LTA1LTA3ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dl
YkF1dGhuXSBSb2xsIGJhY2sgbmV3bHkgY3JlYXRlZCBjcmVkZW50aWFscyBpZiBhbiBlcnJvciBv
Y2N1cnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
MzUzMAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDMzNTczMDU+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW06CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEtbm8tYXR0ZXN0
YXRpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS93ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLmh0bWw6CisKIDIwMjAt
MDUtMDUgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgogCiAgICAgICAg
IFtFQ01BLTQwMl0gSW1wbGVtZW50IEludGwuTG9jYWxlCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGJjOWU1MTAwMTlhODQzNzNiY2JlZmRmZmFiNmQ3NjU4OWQwOTFmMzcuLmM1Zjk1MzUwNzA1
MjYzMDVhMjZhOWQ3YmI0YTU3MGE2ZWQwZjJjMWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0zMzksNiArMzM5LDcgQEAKIAkJNTVBODE3RkYyMTgxMDIxQTAwMDRBMzlBIC8qIDEwMHgxMDAt
cmVkLnRnYSBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1NUE4MTdGRTIxODEwMURGMDAwNEEzOUEgLyogMTAweDEwMC1yZWQudGdhICovOyB9Owog
CQk1NUE4MTgwMDIxODEwMjIxMDAwNEEzOUEgLyogNDAweDQwMC1ncmVlbi5wbmcgaW4gQ29weSBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTVBODE3RkQyMTgx
MDFERjAwMDRBMzlBIC8qIDQwMHg0MDAtZ3JlZW4ucG5nICovOyB9OwogCQk1NUY5RDJFNTIyMDUw
MzE4MDBBOUFCMzggLyogQWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXMubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NUY5RDJFNDIyMDUwMzE4MDBB
OUFCMzggLyogQWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXMubW0gKi87IH07CisJCTU3MDNC
QjhEMjQ2M0Y4ODcwMDQ3NUZCMiAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFs
LWxhLW5vLWF0dGVzdGF0aW9uLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTcwM0JCOEMyNDYzRjg3MjAwNDc1RkIyIC8qIHdlYi1hdXRo
ZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEtbm8tYXR0ZXN0YXRpb24uaHRtbCAqLzsgfTsK
IAkJNTcwRDI2RjQyM0MzQ0E2QTAwRDVDRjY3IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNy
ZWRlbnRpYWwtaGlkLXBpbi1nZXQta2V5LWFncmVlbWVudC1lcnJvci5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MEQyNkYzMjNDM0NB
NTUwMEQ1Q0Y2NyAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWhpZC1waW4t
Z2V0LWtleS1hZ3JlZW1lbnQtZXJyb3IuaHRtbCAqLzsgfTsKIAkJNTcwRDI2RjYyM0MzRDMzMDAw
RDVDRjY3IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtaGlkLXBpbi5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3
MEQyNkY1MjNDM0QzMjcwMEQ1Q0Y2NyAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50
aWFsLWhpZC1waW4uaHRtbCAqLzsgfTsKIAkJNTcwRDI2RkEyM0MzRjI1MTAwRDVDRjY3IC8qIHdl
Yi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtaGlkLXBpbi1nZXQtcGluLXRva2VuLXBp
bi1ibG9ja2VkLWVycm9yLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTcwRDI2RjkyM0MzRjI0NTAwRDVDRjY3IC8qIHdlYi1hdXRoZW50
aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtaGlkLXBpbi1nZXQtcGluLXRva2VuLXBpbi1ibG9ja2Vk
LWVycm9yLmh0bWwgKi87IH07CkBAIC0xNTc4LDYgKzE1NzksNyBAQAogCQkJCTU3OTgzMzdFMjM2
MDE5QTQwMDhFNTU0NyAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWhpZC5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTU3NDIxNzhBMjQwMEFFRDgwMDJCMzAzRCAv
KiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLWR1cGxpY2F0ZS1jcmVkZW50
aWFsLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNTc0MjE3ODgyNDAwQUMyNTAwMkIz
MDNEIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEtZXJyb3IuaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLywKKwkJCQk1NzAzQkI4RDI0NjNGODg3MDA0NzVGQjIgLyogd2Vi
LWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS1uby1hdHRlc3RhdGlvbi5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovLAogCQkJCTU3RURGQzVDMjQ1QTFBM0YwMDk1OTUyMSAvKiB3ZWIt
YXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLW5vLW1vY2suaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLywKIAkJCQk1NzQyMTc4RTI0MDBEMkRGMDAyQjMwM0QgLyogd2ViLWF1dGhlbnRp
Y2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJ
CTFDMkI4MTg2MUM4OTI1OUQwMEE1NTI5RiAvKiB3ZWJmb250Lmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8sCkBAIC0xOTk5LDYgKzIwMDEsNyBAQAogCQk1NUE4MTdGRDIxODEwMURGMDAwNEEzOUEg
LyogNDAweDQwMC1ncmVlbi5wbmcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBpbWFnZS5wbmc7IHBhdGggPSAiNDAweDQwMC1ncmVlbi5wbmciOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NUE4MTdGRTIxODEwMURGMDAwNEEzOUEgLyogMTAw
eDEwMC1yZWQudGdhICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gZmlsZTsgcGF0aCA9ICIxMDB4MTAwLXJlZC50Z2EiOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1NUY5RDJFNDIyMDUwMzE4MDBBOUFCMzggLyogQWRkaXRpb25hbFN1cHBvcnRl
ZEltYWdlVHlwZXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFkZGl0aW9uYWxTdXBwb3J0ZWRJ
bWFnZVR5cGVzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NzAzQkI4QzI0NjNG
ODcyMDA0NzVGQjIgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS1uby1h
dHRlc3RhdGlvbi5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIndlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRl
bnRpYWwtbGEtbm8tYXR0ZXN0YXRpb24uaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTU3MEQyNkYzMjNDM0NBNTUwMEQ1Q0Y2NyAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1j
cmVkZW50aWFsLWhpZC1waW4tZ2V0LWtleS1hZ3JlZW1lbnQtZXJyb3IuaHRtbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9
ICJ3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWhpZC1waW4tZ2V0LWtleS1hZ3Jl
ZW1lbnQtZXJyb3IuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MEQyNkY1
MjNDM0QzMjcwMEQ1Q0Y2NyAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWhp
ZC1waW4uaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJ3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFs
LWhpZC1waW4uaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MEQyNkY5MjND
M0YyNDUwMEQ1Q0Y2NyAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWhpZC1w
aW4tZ2V0LXBpbi10b2tlbi1waW4tYmxvY2tlZC1lcnJvci5odG1sICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIndlYi1h
dXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtaGlkLXBpbi1nZXQtcGluLXRva2VuLXBpbi1i
bG9ja2VkLWVycm9yLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzcwOCw2
ICszNzExLDcgQEAKIAkJCQk1Nzk4MzM3RDIzNjAxOTZEMDA4RTU1NDcgLyogd2ViLWF1dGhlbnRp
Y2F0aW9uLW1ha2UtY3JlZGVudGlhbC1oaWQuaHRtbCAqLywKIAkJCQk1NzQyMTc4OTI0MDBBRUQw
MDAyQjMwM0QgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS1kdXBsaWNh
dGUtY3JlZGVudGlhbC5odG1sICovLAogCQkJCTU3NDIxNzg3MjQwMEFCRkQwMDJCMzAzRCAvKiB3
ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLWVycm9yLmh0bWwgKi8sCisJCQkJ
NTcwM0JCOEMyNDYzRjg3MjAwNDc1RkIyIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRl
bnRpYWwtbGEtbm8tYXR0ZXN0YXRpb24uaHRtbCAqLywKIAkJCQk1N0VERkM1QjI0NUExOEY1MDA5
NTk1MjEgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS1uby1tb2NrLmh0
bWwgKi8sCiAJCQkJNTc0MjE3OEQyNDAwRDI2QzAwMkIzMDNEIC8qIHdlYi1hdXRoZW50aWNhdGlv
bi1tYWtlLWNyZWRlbnRpYWwtbGEuaHRtbCAqLywKIAkJCQk1MTcxNEVCMjFDRjhDNzYxMDA0NzIz
QzQgLyogV2ViUHJvY2Vzc0tpbGxJREJDbGVhbnVwLTEuaHRtbCAqLywKQEAgLTQ2NTcsNiArNDY2
MSw3IEBACiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCiAJ
CQkJN0M4M0RFOTkxRDBBNTkwQzAwRkVCQ0YzIC8qIEF0b21TdHJpbmcuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJRkUyRDk0NzQyNDVFQjJGNDAwRTQ4MTM1IC8qIEJpdG1hcC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQURBRDE1MDFENzdBOUY2MDAyMTI1ODYgLyogQmxvY2tQdHIubW0gaW4gU291
cmNlcyAqLywKIAkJCQk3QzgzREU5QzFEMEE1OTBDMDBGRUJDRjMgLyogQmxvb21GaWx0ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMDREQjIzOTYyMzVFNDNFQzAwMzI4RjE3IC8qIEJ1bXBQb2lu
dGVyQWxsb2NhdG9yLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNDcwMiw3ICs0NzA3LDYgQEAKIAkJ
CQlFMzhENjVDQjIzQTQ1RkFBMDA2M0Q2OUEgLyogUGFja2VkUmVmUHRyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTdDODNERjU5MUQwQTU5MEMwMEZFQkNGMyAvKiBQYXJraW5nTG90LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTUzRUMyNTQxMUU5NkZEODcwMDA4MzFCOSAvKiBQcmlvcml0eVF1ZXVl
LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUZFMkQ5NDc0MjQ1RUIyRjQwMEU0ODEzNSAvKiBCaXRt
YXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RGMTMxRDBBNTkwQzAwRkVCQ0YzIC8qIFJl
ZEJsYWNrVHJlZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREYxNDFEMEE1OTBDMDBGRUJD
RjMgLyogUmVmLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERjE1MUQwQTU5MEMwMEZFQkNG
MyAvKiBSZWZDb3VudGVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNh
dGlvblBhbmVsLm1tCmluZGV4IGY3OWJkNDViZWVkYmMxZTk1N2RhZTlmYWNjOWQ0NTk0OTMzZDRh
NWUuLjI1OTI4OWJiNzdmYjkxYTE3Y2FjMWE4M2IzZTFjMzEwZGJlNDA0ZjIgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRp
b25QYW5lbC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19X
S1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KQEAgLTEzMzEsNiArMTMzMSwzNiBAQCBURVNUKFdl
YkF1dGhlbnRpY2F0aW9uUGFuZWwsIExBTWFrZUNyZWRlbnRpYWxOb01vY2tOb1VzZXJHZXN0dXJl
KQogICAgIGNoZWNrUGFuZWwoW2RlbGVnYXRlIHBhbmVsXSwgQCIiLCBAW2Fkb3B0TlMoW1tOU051
bWJlciBhbGxvY10gaW5pdFdpdGhJbnQ6X1dLV2ViQXV0aGVudGljYXRpb25UcmFuc3BvcnRVU0Jd
KS5nZXQoKV0sIF9XS1dlYkF1dGhlbnRpY2F0aW9uVHlwZUNyZWF0ZSk7CiB9CiAKK1RFU1QoV2Vi
QXV0aGVudGljYXRpb25QYW5lbCwgTEFNYWtlQ3JlZGVudGlhbFJvbGxCYWNrQ3JlZGVudGlhbCkK
K3sKKyAgICByZXNldCgpOworICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5k
bGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJ3ZWItYXV0aGVudGljYXRpb24tbWFrZS1j
cmVkZW50aWFsLWxhLW5vLWF0dGVzdGF0aW9uIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGly
ZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKKworICAgIGF1dG8gKmNvbmZpZ3Vy
YXRpb24gPSBbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRl
c3RQbHVnSW5DbGFzc05hbWU6QCJXZWJQcm9jZXNzUGx1Z0luV2l0aEludGVybmFscyIgY29uZmln
dXJlSlNDRm9yVGVzdGluZzpZRVNdOworICAgIFtbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10g
X3NldEVuYWJsZWQ6WUVTIGZvckV4cGVyaW1lbnRhbEZlYXR1cmU6d2ViQXV0aGVudGljYXRpb25F
eHBlcmltZW50YWxGZWF0dXJlKCldOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rl
c3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdCBjb25maWd1cmF0aW9u
OmNvbmZpZ3VyYXRpb25dKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3RXZWJB
dXRoZW50aWNhdGlvblBhbmVsVUlEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3
IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworCisgICAgbG9jYWxBdXRoZW50aWNhdG9y
UG9saWN5ID0gX1dLTG9jYWxBdXRoZW50aWNhdG9yUG9saWN5QWxsb3c7CisgICAgW3dlYlZpZXcg
bG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgpXV07
CisgICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJDb3VsZG4ndCBhdHRlc3Q6IFRoZSBvcGVy
YXRpb24gY291bGRuJ3QgY29tcGxldGUuIl07CisKKyAgICBOU0RpY3Rpb25hcnkgKnF1ZXJ5ID0g
QHsKKyAgICAgICAgKGlkKWtTZWNDbGFzczogKGlkKWtTZWNDbGFzc0tleSwKKyAgICAgICAgKGlk
KWtTZWNBdHRyS2V5Q2xhc3M6IChpZClrU2VjQXR0cktleUNsYXNzUHJpdmF0ZSwKKyAgICAgICAg
KGlkKWtTZWNBdHRyTGFiZWw6IEAiIiwKKyNpZiBIQVZFKERBVEFfUFJPVEVDVElPTl9LRVlDSEFJ
TikKKyAgICAgICAgKGlkKWtTZWNVc2VEYXRhUHJvdGVjdGlvbktleWNoYWluOiBAWUVTCisjZWxz
ZQorICAgICAgICAoaWQpa1NlY0F0dHJOb0xlZ2FjeTogQFlFUworI2VuZGlmCisgICAgfTsKKyAg
ICBPU1N0YXR1cyBzdGF0dXMgPSBTZWNJdGVtQ29weU1hdGNoaW5nKChfX2JyaWRnZSBDRkRpY3Rp
b25hcnlSZWYpcXVlcnksIG51bGxwdHIpOworICAgIEVYUEVDVF9FUShzdGF0dXMsIGVyclNlY0l0
ZW1Ob3RGb3VuZCk7Cit9CisKIC8vIFNraXAgdGhlIHRlc3QgYmVjYXVzZSBvZiA8cmRhcjovL3By
b2JsZW0vNTk2MzU0ODY+LgogI2lmIFBMQVRGT1JNKE1BQykKIApkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tbWFrZS1j
cmVkZW50aWFsLWxhLW5vLWF0dGVzdGF0aW9uLmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEtbm8t
YXR0ZXN0YXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMTdhYTQxNTk5NjgzOGNiNTg1M2Y0NmIwOWQ5
NWE3NGViZTU1ZDY2Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLW5vLWF0
dGVzdGF0aW9uLmh0bWwKQEAgLTAsMCArMSw0MiBAQAorPGlucHV0IHR5cGU9InRleHQiIGlkPSJp
bnB1dCI+Cis8c2NyaXB0PgorICAgIGNvbnN0IHRlc3RFUzI1NlByaXZhdGVLZXlCYXNlNjQgPQor
ICAgICAgICAiQkRqL3p4U2t6S2dhQnVTM2NkV0RGNTU4b2Y4QWFJcGdGcHNqRi9RbTE3NDlWQkpQ
Z3FVSXdmaFdISjkxbmI3VSIgKworICAgICAgICAiUEg3NmMwK1dGT3paS3NsUHl5RnNlNGdvR0lX
MlI3azlWSExQRVpsNW5mbkJnRVZGaDV6ZXYrL3hwSFFJdnVxNiIgKworICAgICAgICAiUlE9PSI7
CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tX
ZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeworICAgICAgICAgICAgbG9jYWw6IHsKKyAg
ICAgICAgICAgICAgICB1c2VyVmVyaWZpY2F0aW9uOiAieWVzIiwKKyAgICAgICAgICAgICAgICBh
Y2NlcHRBdHRlc3RhdGlvbjogZmFsc2UsCisgICAgICAgICAgICAgICAgcHJpdmF0ZUtleUJhc2U2
NDogdGVzdEVTMjU2UHJpdmF0ZUtleUJhc2U2NCwKKyAgICAgICAgICAgfQorICAgICAgICB9KTsK
KyAgICAgICAgaW50ZXJuYWxzLndpdGhVc2VyR2VzdHVyZSgoKSA9PiB7IGlucHV0LmZvY3VzKCk7
IH0pOworICAgIH0KKworICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgIHB1YmxpY0tleTog
eworICAgICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICBuYW1lOiAibG9jYWxob3N0IiwK
KyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB1c2VyOiB7CisgICAgICAgICAgICAgICAgbmFt
ZTogIkpvaG4gQXBwbGVzZWVkIiwKKyAgICAgICAgICAgICAgICBpZDogbmV3IFVpbnQ4QXJyYXko
MTYpLAorICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAiQXBwbGVzZWVkIiwKKyAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICBjaGFsbGVuZ2U6IG5ldyBVaW50OEFycmF5KDE2KSwKKyAgICAg
ICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9
XSwKKyAgICAgICAgICAgIGF0dGVzdGF0aW9uOiAiZGlyZWN0IiwKKyAgICAgICAgICAgIHRpbWVv
dXQ6IDEwMCwKKyAgICAgICAgfQorICAgIH07CisKKyAgICBuYXZpZ2F0b3IuY3JlZGVudGlhbHMu
Y3JlYXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CisgICAgICAgIC8vIGNvbnNvbGUu
bG9nKCJTdWNjZWVkZWQhIik7CisgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJz
LnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCJTdWNjZWVkZWQhIik7CisgICAgfSwgZXJyb3IgPT4g
eworICAgICAgICAvLyBjb25zb2xlLmxvZyhlcnJvci5tZXNzYWdlKTsKKyAgICAgICAgd2luZG93
LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoZXJyb3IubWVz
c2FnZSk7CisgICAgfSk7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1s
YS5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVu
dGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLmh0bWwKaW5kZXggZWZhY2NlZDI4ZTk0YzE2NDJj
ZGM3OTdjNzY1MDMxYTM0NmZkOGM5Ny4uZDc1ZDdjODhlZmRjNDY2OGJjYjA2YjAwYmFmOWY3NzI4
ZmMxYjgxYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS93ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLmh0bWwKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tbWFrZS1j
cmVkZW50aWFsLWxhLmh0bWwKQEAgLTUyLDYgKzUyLDcgQEAKICAgICAgICAgICAgIH0sCiAgICAg
ICAgICAgICBjaGFsbGVuZ2U6IG5ldyBVaW50OEFycmF5KDE2KSwKICAgICAgICAgICAgIHB1Yktl
eUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9XSwKKyAgICAgICAg
ICAgIGF0dGVzdGF0aW9uOiAiZGlyZWN0IiwKICAgICAgICAgICAgIHRpbWVvdXQ6IDEwMCwKICAg
ICAgICAgfQogICAgIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398823</attachid>
            <date>2020-05-07 18:13:29 -0700</date>
            <delta_ts>2020-05-07 19:04:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183530-20200507181328.patch</filename>
            <type>text/plain</type>
            <size>16374</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxMjE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDU5ZTFhZTM1NDAzNDAwZmEy
ZTQ1NTk5ODM1MzllMGE5ZDQzMWRjZWYuLmUyM2RiMjUzZGRjNWRhZTY5YzU5MjYwY2YyYTEyMjk2
NGI4NDViZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjAtMDUtMDcgIEppZXdlbiBU
YW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIFJvbGwgYmFj
ayBuZXdseSBjcmVhdGVkIGNyZWRlbnRpYWxzIGlmIGFuIGVycm9yIG9jY3VycworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNTMwCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS80MzM1NzMwNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBXZSBzaG91bGQgY2xlYW4gdXAgYW55IG5ld2x5IGNyZWF0ZWQgY3Jl
ZGVudGlhbHMgaWYgYW4gZXJyb3Igb2NjdXJzIGJlZm9yZSB0aGUgcmVseWluZyBwYXJ0eQorICAg
ICAgICByZWdpc3RlcnMgdGhlIGlkZW50aXR5LiBPdGhlcndpc2Ugd2UgYXJlIGxlZnQgd2l0aCBh
IGRhbmdsaW5nIGNyZWRlbnRpYWwuCisKKyAgICAgICAgQ292ZXJlZCBieSBBUEkgdGVzdHMuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50
aWNhdG9yLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xv
Y2FsQXV0aGVudGljYXRvci5tbToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9y
Ojpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJVc2VyVmVyaWZpY2F0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZUdldEFzc2VydGlvbkFmdGVyVXNl
clZlcmlmaWNhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6cmVj
ZWl2ZUV4Y2VwdGlvbiBjb25zdCk6CisKIDIwMjAtMDUtMDUgIERhdmlkIEtpbHplciAgPGRka2ls
emVyQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggZGVwcmVjYXRlZCBOU0dyYXBoaWNzQ29udGV4
dCBtZXRob2RzIHVzaW5nICdncmFwaGljc1BvcnQnCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0
aGVudGljYXRvci5oCmluZGV4IDJkZDBjYjRlZjBlODY4NjZmNTEzNDFiNDYwODNjMzRiZjRhODY0
MTEuLjU4NDc5ZDQ5YzlkZDZjMDQ5ZTY3ZjYyZGMwNzk1NWI3NWNiMzEzOWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0
aGVudGljYXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5oCkBAIC03NSw2ICs3NSw3IEBAIHByaXZhdGU6
CiAgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpJbml0IH07CiAgICAgVW5pcXVlUmVmPExvY2Fs
Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAgIFZlY3RvcjxSZWY8V2ViQ29yZTo6QXV0aGVu
dGljYXRvckFzc2VydGlvblJlc3BvbnNlPj4gbV9leGlzdGluZ0NyZWRlbnRpYWxzOworICAgIFJl
dGFpblB0cjxOU0RhdGE+IG1fcHJvdmlzaW9uYWxDcmVkZW50aWFsSWQ7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbQpp
bmRleCA3YWI2NWE4YTZjNmU3NGY0M2U1NDRhYjFjNjk4ZWQwMGViYjE4NjNmLi5jZTQxOWU5ODc0
NDhhOTllMjMxY2NmZDQzNTAyMWE0OTFmMGQxYzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9j
YWxBdXRoZW50aWNhdG9yLm1tCkBAIC0zMzcsMTMgKzMzNywxNCBAQCB2b2lkIExvY2FsQXV0aGVu
dGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNlclZlcmlmaWNhdGlvbihTZWNB
Y2Nlc3NDbwogICAgICAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUo
UEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzEpOwogICAgICAgICBkaWdlc3QtPmFk
ZEJ5dGVzKG5zUHVibGljS2V5RGF0YS5ieXRlcywgbnNQdWJsaWNLZXlEYXRhLmxlbmd0aCk7CiAg
ICAgICAgIGNyZWRlbnRpYWxJZCA9IGRpZ2VzdC0+Y29tcHV0ZUhhc2goKTsKKyAgICAgICAgbV9w
cm92aXNpb25hbENyZWRlbnRpYWxJZCA9IHRvTlNEYXRhKGNyZWRlbnRpYWxJZCk7CiAKICNpZm5k
ZWYgTkRFQlVHCiAgICAgICAgIE5TRGljdGlvbmFyeSAqY3JlZGVudGlhbElkUXVlcnkgPSBAewog
ICAgICAgICAgICAgKGlkKWtTZWNDbGFzczogKGlkKWtTZWNDbGFzc0tleSwKICAgICAgICAgICAg
IChpZClrU2VjQXR0cktleUNsYXNzOiAoaWQpa1NlY0F0dHJLZXlDbGFzc1ByaXZhdGUsCiAgICAg
ICAgICAgICAoaWQpa1NlY0F0dHJMYWJlbDogc2VjQXR0ckxhYmVsLAotICAgICAgICAgICAgKGlk
KWtTZWNBdHRyQXBwbGljYXRpb25MYWJlbDogdG9OU0RhdGEoY3JlZGVudGlhbElkKS5nZXQoKSwK
KyAgICAgICAgICAgIChpZClrU2VjQXR0ckFwcGxpY2F0aW9uTGFiZWw6IG1fcHJvdmlzaW9uYWxD
cmVkZW50aWFsSWQuZ2V0KCksCiAjaWYgSEFWRShEQVRBX1BST1RFQ1RJT05fS0VZQ0hBSU4pCiAg
ICAgICAgICAgICAoaWQpa1NlY1VzZURhdGFQcm90ZWN0aW9uS2V5Y2hhaW46IEBZRVMKICNlbHNl
CkBAIC01NTksMTEgKzU2MCw2IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZUdl
dEFzc2VydGlvbkFmdGVyVXNlclZlcmlmaWNhdGlvbihSZWY8V2ViQ29yZTo6CiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICAvLyBTdGVwIDEzLgotICAgIHJlc3BvbnNlLT5zZXRBdXRoZW50aWNhdG9y
RGF0YShXVEZNb3ZlKGF1dGhEYXRhKSk7Ci0gICAgcmVzcG9uc2UtPnNldFNpZ25hdHVyZSh0b0Fy
cmF5QnVmZmVyKChOU0RhdGEgKilzaWduYXR1cmUuZ2V0KCkpKTsKLSAgICByZWNlaXZlUmVzcG9u
ZChXVEZNb3ZlKHJlc3BvbnNlKSk7Ci0KICAgICAvLyBFeHRyYSBzdGVwOiB1cGRhdGUgdGhlIEtl
eWNoYWluIGl0ZW0gd2l0aCB0aGUgc2FtZSB2YWx1ZSB0byB1cGRhdGUgaXRzIG1vZGlmaWNhdGlv
biBkYXRlIHN1Y2ggdGhhdCBMUlUgY2FuIGJlIHVzZWQKICAgICAvLyBmb3Igc2VsZWN0QXNzZXJ0
aW9uUmVzcG9uc2UKICAgICBOU0RpY3Rpb25hcnkgKnVwZGF0ZVF1ZXJ5ID0gQHsKQEAgLTU4Miwx
MyArNTc4LDM2IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZUdldEFzc2VydGlv
bkFmdGVyVXNlclZlcmlmaWNhdGlvbihSZWY8V2ViQ29yZTo6CiAgICAgYXV0byBzdGF0dXMgPSBT
ZWNJdGVtVXBkYXRlKChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpdXBkYXRlUXVlcnksIChfX2Jy
aWRnZSBDRkRpY3Rpb25hcnlSZWYpdXBkYXRlUGFyYW1zKTsKICAgICBpZiAoc3RhdHVzKQogICAg
ICAgICBMT0dfRVJST1IoIkNvdWxkbid0IHVwZGF0ZSB0aGUgS2V5Y2hhaW4gaXRlbTogJWQiLCBz
dGF0dXMpOworCisgICAgLy8gU3RlcCAxMy4KKyAgICByZXNwb25zZS0+c2V0QXV0aGVudGljYXRv
ckRhdGEoV1RGTW92ZShhdXRoRGF0YSkpOworICAgIHJlc3BvbnNlLT5zZXRTaWduYXR1cmUodG9B
cnJheUJ1ZmZlcigoTlNEYXRhICopc2lnbmF0dXJlLmdldCgpKSk7CisgICAgcmVjZWl2ZVJlc3Bv
bmQoV1RGTW92ZShyZXNwb25zZSkpOwogfQogCiB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6cmVj
ZWl2ZUV4Y2VwdGlvbihFeGNlcHRpb25EYXRhJiYgZXhjZXB0aW9uLCBXZWJBdXRoZW50aWNhdGlv
blN0YXR1cyBzdGF0dXMpIGNvbnN0CiB7CiAgICAgTE9HX0VSUk9SKGV4Y2VwdGlvbi5tZXNzYWdl
LnV0ZjgoKS5kYXRhKCkpOworCisgICAgLy8gUm9sbCBiYWNrIHRoZSBqdXN0IGNyZWF0ZWQgY3Jl
ZGVudGlhbC4KKyAgICBpZiAobV9wcm92aXNpb25hbENyZWRlbnRpYWxJZCkgeworICAgICAgICBO
U0RpY3Rpb25hcnkqIGRlbGV0ZVF1ZXJ5ID0gQHsKKyAgICAgICAgICAgIChpZClrU2VjQ2xhc3M6
IChpZClrU2VjQ2xhc3NLZXksCisgICAgICAgICAgICAoaWQpa1NlY0F0dHJBcHBsaWNhdGlvbkxh
YmVsOiBtX3Byb3Zpc2lvbmFsQ3JlZGVudGlhbElkLmdldCgpLAorI2lmIEhBVkUoREFUQV9QUk9U
RUNUSU9OX0tFWUNIQUlOKQorICAgICAgICAgICAgKGlkKWtTZWNVc2VEYXRhUHJvdGVjdGlvbktl
eWNoYWluOiBAWUVTCisjZWxzZQorICAgICAgICAgICAgKGlkKWtTZWNBdHRyTm9MZWdhY3k6IEBZ
RVMKKyNlbmRpZgorICAgICAgICB9OworICAgICAgICBPU1N0YXR1cyBzdGF0dXMgPSBTZWNJdGVt
RGVsZXRlKChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpZGVsZXRlUXVlcnkpOworICAgICAgICBp
ZiAoc3RhdHVzKQorICAgICAgICAgICAgTE9HX0VSUk9SKG1ha2VTdHJpbmcoIkNvdWxkbid0IGRl
bGV0ZSBwcm92aXNpb25hbCBjcmVkZW50aWFsIHdoaWxlIGhhbmRsaW5nIGVycm9yOiAiX3MsIHN0
YXR1cykudXRmOCgpLmRhdGEoKSk7CisgICAgfQorCiAgICAgaWYgKGF1dG8qIG9ic2VydmVyID0g
dGhpcy0+b2JzZXJ2ZXIoKSkKICAgICAgICAgb2JzZXJ2ZXItPmF1dGhlbnRpY2F0b3JTdGF0dXNV
cGRhdGVkKHN0YXR1cyk7CisKICAgICByZWNlaXZlUmVzcG9uZChXVEZNb3ZlKGV4Y2VwdGlvbikp
OwogICAgIHJldHVybjsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0No
YW5nZUxvZwppbmRleCA4NTkyZWZlZDIzNDEzOWU0ZWRhNThlYWI5YzhhY2RjNDY4ZjFmYmY3Li4z
MDgyZWI1N2M0ODVmYjlkYzY0OTNmMDg4NWVmM2ZjNDk2ZThkYjMxIDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjAt
MDUtMDcgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2Vi
QXV0aG5dIFJvbGwgYmFjayBuZXdseSBjcmVhdGVkIGNyZWRlbnRpYWxzIGlmIGFuIGVycm9yIG9j
Y3VycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgz
NTMwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MzM1NzMwNT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS1uby1hdHRlc3Rh
dGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL3dlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEuaHRtbDoKKwogMjAyMC0w
NS0wNSAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAg
W0VDTUEtNDAyXSBJbXBsZW1lbnQgSW50bC5Mb2NhbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggYmM5ZTUxMDAxOWE4NDM3M2JjYmVmZGZmYWI2ZDc2NTg5ZDA5MWYzNy4uYzVmOTUzNTA3MDUy
NjMwNWEyNmE5ZDdiYjRhNTcwYTZlZDBmMmMxZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTMzOSw2ICszMzksNyBAQAogCQk1NUE4MTdGRjIxODEwMjFBMDAwNEEzOUEgLyogMTAweDEwMC1y
ZWQudGdhIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDU1QTgxN0ZFMjE4MTAxREYwMDA0QTM5QSAvKiAxMDB4MTAwLXJlZC50Z2EgKi87IH07CiAJ
CTU1QTgxODAwMjE4MTAyMjEwMDA0QTM5QSAvKiA0MDB4NDAwLWdyZWVuLnBuZyBpbiBDb3B5IFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NUE4MTdGRDIxODEw
MURGMDAwNEEzOUEgLyogNDAweDQwMC1ncmVlbi5wbmcgKi87IH07CiAJCTU1RjlEMkU1MjIwNTAz
MTgwMEE5QUIzOCAvKiBBZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1RjlEMkU0MjIwNTAzMTgwMEE5
QUIzOCAvKiBBZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcy5tbSAqLzsgfTsKKwkJNTcwM0JC
OEQyNDYzRjg4NzAwNDc1RkIyIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwt
bGEtbm8tYXR0ZXN0YXRpb24uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1NzAzQkI4QzI0NjNGODcyMDA0NzVGQjIgLyogd2ViLWF1dGhl
bnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS1uby1hdHRlc3RhdGlvbi5odG1sICovOyB9Owog
CQk1NzBEMjZGNDIzQzNDQTZBMDBENUNGNjcgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3Jl
ZGVudGlhbC1oaWQtcGluLWdldC1rZXktYWdyZWVtZW50LWVycm9yLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcwRDI2RjMyM0MzQ0E1
NTAwRDVDRjY3IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtaGlkLXBpbi1n
ZXQta2V5LWFncmVlbWVudC1lcnJvci5odG1sICovOyB9OwogCQk1NzBEMjZGNjIzQzNEMzMwMDBE
NUNGNjcgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1oaWQtcGluLmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcw
RDI2RjUyM0MzRDMyNzAwRDVDRjY3IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRp
YWwtaGlkLXBpbi5odG1sICovOyB9OwogCQk1NzBEMjZGQTIzQzNGMjUxMDBENUNGNjcgLyogd2Vi
LWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1oaWQtcGluLWdldC1waW4tdG9rZW4tcGlu
LWJsb2NrZWQtZXJyb3IuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1NzBEMjZGOTIzQzNGMjQ1MDBENUNGNjcgLyogd2ViLWF1dGhlbnRp
Y2F0aW9uLW1ha2UtY3JlZGVudGlhbC1oaWQtcGluLWdldC1waW4tdG9rZW4tcGluLWJsb2NrZWQt
ZXJyb3IuaHRtbCAqLzsgfTsKQEAgLTE1NzgsNiArMTU3OSw3IEBACiAJCQkJNTc5ODMzN0UyMzYw
MTlBNDAwOEU1NTQ3IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtaGlkLmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNTc0MjE3OEEyNDAwQUVEODAwMkIzMDNEIC8q
IHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEtZHVwbGljYXRlLWNyZWRlbnRp
YWwuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1NzQyMTc4ODI0MDBBQzI1MDAyQjMw
M0QgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS1lcnJvci5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovLAorCQkJCTU3MDNCQjhEMjQ2M0Y4ODcwMDQ3NUZCMiAvKiB3ZWIt
YXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLW5vLWF0dGVzdGF0aW9uLmh0bWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNTdFREZDNUMyNDVBMUEzRjAwOTU5NTIxIC8qIHdlYi1h
dXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEtbm8tbW9jay5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovLAogCQkJCTU3NDIxNzhFMjQwMEQyREYwMDJCMzAzRCAvKiB3ZWItYXV0aGVudGlj
YXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJ
MUMyQjgxODYxQzg5MjU5RDAwQTU1MjlGIC8qIHdlYmZvbnQuaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLywKQEAgLTE5OTksNiArMjAwMSw3IEBACiAJCTU1QTgxN0ZEMjE4MTAxREYwMDA0QTM5QSAv
KiA0MDB4NDAwLWdyZWVuLnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9ICI0MDB4NDAwLWdyZWVuLnBuZyI7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1QTgxN0ZFMjE4MTAxREYwMDA0QTM5QSAvKiAxMDB4
MTAwLXJlZC50Z2EgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBmaWxlOyBwYXRoID0gIjEwMHgxMDAtcmVkLnRnYSI7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTU1RjlEMkU0MjIwNTAzMTgwMEE5QUIzOCAvKiBBZGRpdGlvbmFsU3VwcG9ydGVk
SW1hZ2VUeXBlcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQWRkaXRpb25hbFN1cHBvcnRlZElt
YWdlVHlwZXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3MDNCQjhDMjQ2M0Y4
NzIwMDQ3NUZCMiAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLW5vLWF0
dGVzdGF0aW9uLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAid2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVu
dGlhbC1sYS1uby1hdHRlc3RhdGlvbi5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTcwRDI2RjMyM0MzQ0E1NTAwRDVDRjY3IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNy
ZWRlbnRpYWwtaGlkLXBpbi1nZXQta2V5LWFncmVlbWVudC1lcnJvci5odG1sICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0g
IndlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtaGlkLXBpbi1nZXQta2V5LWFncmVl
bWVudC1lcnJvci5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTcwRDI2RjUy
M0MzRDMyNzAwRDVDRjY3IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtaGlk
LXBpbi5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC5odG1sOyBwYXRoID0gIndlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwt
aGlkLXBpbi5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTcwRDI2RjkyM0Mz
RjI0NTAwRDVDRjY3IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtaGlkLXBp
bi1nZXQtcGluLXRva2VuLXBpbi1ibG9ja2VkLWVycm9yLmh0bWwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAid2ViLWF1
dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1oaWQtcGluLWdldC1waW4tdG9rZW4tcGluLWJs
b2NrZWQtZXJyb3IuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNzA4LDYg
KzM3MTEsNyBAQAogCQkJCTU3OTgzMzdEMjM2MDE5NkQwMDhFNTU0NyAvKiB3ZWItYXV0aGVudGlj
YXRpb24tbWFrZS1jcmVkZW50aWFsLWhpZC5odG1sICovLAogCQkJCTU3NDIxNzg5MjQwMEFFRDAw
MDJCMzAzRCAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLWR1cGxpY2F0
ZS1jcmVkZW50aWFsLmh0bWwgKi8sCiAJCQkJNTc0MjE3ODcyNDAwQUJGRDAwMkIzMDNEIC8qIHdl
Yi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEtZXJyb3IuaHRtbCAqLywKKwkJCQk1
NzAzQkI4QzI0NjNGODcyMDA0NzVGQjIgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVu
dGlhbC1sYS1uby1hdHRlc3RhdGlvbi5odG1sICovLAogCQkJCTU3RURGQzVCMjQ1QTE4RjUwMDk1
OTUyMSAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLW5vLW1vY2suaHRt
bCAqLywKIAkJCQk1NzQyMTc4RDI0MDBEMjZDMDAyQjMwM0QgLyogd2ViLWF1dGhlbnRpY2F0aW9u
LW1ha2UtY3JlZGVudGlhbC1sYS5odG1sICovLAogCQkJCTUxNzE0RUIyMUNGOEM3NjEwMDQ3MjND
NCAvKiBXZWJQcm9jZXNzS2lsbElEQkNsZWFudXAtMS5odG1sICovLApAQCAtNDY1Nyw2ICs0NjYx
LDcgQEAKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKIAkJ
CQk3QzgzREU5OTFEMEE1OTBDMDBGRUJDRjMgLyogQXRvbVN0cmluZy5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlGRTJEOTQ3NDI0NUVCMkY0MDBFNDgxMzUgLyogQml0bWFwLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBREFEMTUwMUQ3N0E5RjYwMDIxMjU4NiAvKiBCbG9ja1B0ci5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTdDODNERTlDMUQwQTU5MEMwMEZFQkNGMyAvKiBCbG9vbUZpbHRlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwNERCMjM5NjIzNUU0M0VDMDAzMjhGMTcgLyogQnVtcFBvaW50
ZXJBbGxvY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC00NzAyLDcgKzQ3MDcsNiBAQAogCQkJ
CUUzOEQ2NUNCMjNBNDVGQUEwMDYzRDY5QSAvKiBQYWNrZWRSZWZQdHIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJN0M4M0RGNTkxRDBBNTkwQzAwRkVCQ0YzIC8qIFBhcmtpbmdMb3QuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTNFQzI1NDExRTk2RkQ4NzAwMDgzMUI5IC8qIFByaW9yaXR5UXVldWUu
Y3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRkUyRDk0NzQyNDVFQjJGNDAwRTQ4MTM1IC8qIEJpdG1h
cC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREYxMzFEMEE1OTBDMDBGRUJDRjMgLyogUmVk
QmxhY2tUcmVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERjE0MUQwQTU5MEMwMEZFQkNG
MyAvKiBSZWYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RGMTUxRDBBNTkwQzAwRkVCQ0Yz
IC8qIFJlZkNvdW50ZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0g
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0
aW9uUGFuZWwubW0KaW5kZXggZjc5YmQ0NWJlZWRiYzFlOTU3ZGFlOWZhY2M5ZDQ1OTQ5MzNkNGE1
ZS4uMjU5Mjg5YmI3N2ZiOTFhMTdjYWMxYTgzYjNlMWMzMTBkYmU0MDRmMiAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlv
blBhbmVsLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dL
V2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQpAQCAtMTMzMSw2ICsxMzMxLDM2IEBAIFRFU1QoV2Vi
QXV0aGVudGljYXRpb25QYW5lbCwgTEFNYWtlQ3JlZGVudGlhbE5vTW9ja05vVXNlckdlc3R1cmUp
CiAgICAgY2hlY2tQYW5lbChbZGVsZWdhdGUgcGFuZWxdLCBAIiIsIEBbYWRvcHROUyhbW05TTnVt
YmVyIGFsbG9jXSBpbml0V2l0aEludDpfV0tXZWJBdXRoZW50aWNhdGlvblRyYW5zcG9ydFVTQl0p
LmdldCgpXSwgX1dLV2ViQXV0aGVudGljYXRpb25UeXBlQ3JlYXRlKTsKIH0KIAorVEVTVChXZWJB
dXRoZW50aWNhdGlvblBhbmVsLCBMQU1ha2VDcmVkZW50aWFsUm9sbEJhY2tDcmVkZW50aWFsKQor
eworICAgIHJlc2V0KCk7CisgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRs
ZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIndlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNy
ZWRlbnRpYWwtbGEtbm8tYXR0ZXN0YXRpb24iIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJl
Y3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOworCisgICAgYXV0byAqY29uZmlndXJh
dGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVz
dFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1
cmVKU0NGb3JUZXN0aW5nOllFU107CisgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBf
c2V0RW5hYmxlZDpZRVMgZm9yRXhwZXJpbWVudGFsRmVhdHVyZTp3ZWJBdXRoZW50aWNhdGlvbkV4
cGVyaW1lbnRhbEZlYXR1cmUoKV07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVz
dFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0IGNvbmZpZ3VyYXRpb246
Y29uZmlndXJhdGlvbl0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdFdlYkF1
dGhlbnRpY2F0aW9uUGFuZWxVSURlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXcg
c2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBsb2NhbEF1dGhlbnRpY2F0b3JQ
b2xpY3kgPSBfV0tMb2NhbEF1dGhlbnRpY2F0b3JQb2xpY3lBbGxvdzsKKyAgICBbd2ViVmlldyBs
b2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0KCldXTsK
KyAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAIkNvdWxkbid0IGF0dGVzdDogVGhlIG9wZXJh
dGlvbiBjb3VsZG4ndCBjb21wbGV0ZS4iXTsKKworICAgIE5TRGljdGlvbmFyeSAqcXVlcnkgPSBA
eworICAgICAgICAoaWQpa1NlY0NsYXNzOiAoaWQpa1NlY0NsYXNzS2V5LAorICAgICAgICAoaWQp
a1NlY0F0dHJLZXlDbGFzczogKGlkKWtTZWNBdHRyS2V5Q2xhc3NQcml2YXRlLAorICAgICAgICAo
aWQpa1NlY0F0dHJMYWJlbDogQCIiLAorI2lmIEhBVkUoREFUQV9QUk9URUNUSU9OX0tFWUNIQUlO
KQorICAgICAgICAoaWQpa1NlY1VzZURhdGFQcm90ZWN0aW9uS2V5Y2hhaW46IEBZRVMKKyNlbHNl
CisgICAgICAgIChpZClrU2VjQXR0ck5vTGVnYWN5OiBAWUVTCisjZW5kaWYKKyAgICB9OworICAg
IE9TU3RhdHVzIHN0YXR1cyA9IFNlY0l0ZW1Db3B5TWF0Y2hpbmcoKF9fYnJpZGdlIENGRGljdGlv
bmFyeVJlZilxdWVyeSwgbnVsbHB0cik7CisgICAgRVhQRUNUX0VRKHN0YXR1cywgZXJyU2VjSXRl
bU5vdEZvdW5kKTsKK30KKwogLy8gU2tpcCB0aGUgdGVzdCBiZWNhdXNlIG9mIDxyZGFyOi8vcHJv
YmxlbS81OTYzNTQ4Nj4uCiAjaWYgUExBVEZPUk0oTUFDKQogCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNy
ZWRlbnRpYWwtbGEtbm8tYXR0ZXN0YXRpb24uaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS1uby1h
dHRlc3RhdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAxN2FhNDE1OTk2ODM4Y2I1ODUzZjQ2YjA5ZDk1
YTc0ZWJlNTVkNjYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEtbm8tYXR0
ZXN0YXRpb24uaHRtbApAQCAtMCwwICsxLDQyIEBACis8aW5wdXQgdHlwZT0idGV4dCIgaWQ9Imlu
cHV0Ij4KKzxzY3JpcHQ+CisgICAgY29uc3QgdGVzdEVTMjU2UHJpdmF0ZUtleUJhc2U2NCA9Cisg
ICAgICAgICJCRGovenhTa3pLZ2FCdVMzY2RXREY1NThvZjhBYUlwZ0Zwc2pGL1FtMTc0OVZCSlBn
cVVJd2ZoV0hKOTFuYjdVIiArCisgICAgICAgICJQSDc2YzArV0ZPelpLc2xQeXlGc2U0Z29HSVcy
UjdrOVZITFBFWmw1bmZuQmdFVkZoNXpldisveHBIUUl2dXE2IiArCisgICAgICAgICJSUT09IjsK
KyAgICBpZiAod2luZG93LmludGVybmFscykgeworICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dl
YkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7CisgICAgICAgICAgICBsb2NhbDogeworICAg
ICAgICAgICAgICAgIHVzZXJWZXJpZmljYXRpb246ICJ5ZXMiLAorICAgICAgICAgICAgICAgIGFj
Y2VwdEF0dGVzdGF0aW9uOiBmYWxzZSwKKyAgICAgICAgICAgICAgICBwcml2YXRlS2V5QmFzZTY0
OiB0ZXN0RVMyNTZQcml2YXRlS2V5QmFzZTY0LAorICAgICAgICAgICB9CisgICAgICAgIH0pOwor
ICAgICAgICBpbnRlcm5hbHMud2l0aFVzZXJHZXN0dXJlKCgpID0+IHsgaW5wdXQuZm9jdXMoKTsg
fSk7CisgICAgfQorCisgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgcHVibGljS2V5OiB7
CisgICAgICAgICAgICBycDogeworICAgICAgICAgICAgICAgIG5hbWU6ICJsb2NhbGhvc3QiLAor
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHVzZXI6IHsKKyAgICAgICAgICAgICAgICBuYW1l
OiAiSm9obiBBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAgIGlkOiBuZXcgVWludDhBcnJheSgx
NiksCisgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJBcHBsZXNlZWQiLAorICAgICAgICAg
ICAgfSwKKyAgICAgICAgICAgIGNoYWxsZW5nZTogbmV3IFVpbnQ4QXJyYXkoMTYpLAorICAgICAg
ICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1d
LAorICAgICAgICAgICAgYXR0ZXN0YXRpb246ICJkaXJlY3QiLAorICAgICAgICAgICAgdGltZW91
dDogMTAwLAorICAgICAgICB9CisgICAgfTsKKworICAgIG5hdmlnYXRvci5jcmVkZW50aWFscy5j
cmVhdGUob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKKyAgICAgICAgLy8gY29uc29sZS5s
b2coIlN1Y2NlZWRlZCEiKTsKKyAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMu
dGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoIlN1Y2NlZWRlZCEiKTsKKyAgICB9LCBlcnJvciA9PiB7
CisgICAgICAgIC8vIGNvbnNvbGUubG9nKGVycm9yLm1lc3NhZ2UpOworICAgICAgICB3aW5kb3cu
d2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZShlcnJvci5tZXNz
YWdlKTsKKyAgICB9KTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxh
Lmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50
aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEuaHRtbAppbmRleCBlZmFjY2VkMjhlOTRjMTY0MmNk
Yzc5N2M3NjUwMzFhMzQ2ZmQ4Yzk3Li5kNzVkN2M4OGVmZGM0NjY4YmNiMDZiMDBiYWY5Zjc3Mjhm
YzFiODFiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L3dlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEuaHRtbAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNy
ZWRlbnRpYWwtbGEuaHRtbApAQCAtNTIsNiArNTIsNyBAQAogICAgICAgICAgICAgfSwKICAgICAg
ICAgICAgIGNoYWxsZW5nZTogbmV3IFVpbnQ4QXJyYXkoMTYpLAogICAgICAgICAgICAgcHViS2V5
Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAorICAgICAgICAg
ICAgYXR0ZXN0YXRpb246ICJkaXJlY3QiLAogICAgICAgICAgICAgdGltZW91dDogMTAwLAogICAg
ICAgICB9CiAgICAgfTsK
</data>
<flag name="review"
          id="414219"
          type_id="1"
          status="+"
          setter="bfulgham"
    />
          </attachment>
      

    </bug>

</bugzilla>