<?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>207174</bug_id>
          
          <creation_ts>2020-02-03 18:21:31 -0800</creation_ts>
          <short_desc>Add WebCrypto LayoutTests to check if PKCS#7 padding is correctly implemented in AES-CBC</short_desc>
          <delta_ts>2020-02-11 21:42:16 -0800</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tomoki Imai">tomoki.imai</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fujii</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>tomoki.imai</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>yoshiaki.jitsukawa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1614337</commentid>
    <comment_count>0</comment_count>
    <who name="Tomoki Imai">tomoki.imai</who>
    <bug_when>2020-02-03 18:21:31 -0800</bug_when>
    <thetext>While we&apos;re working on bug 206439, we noticed that layouttests for AES-CBC lacks the testcases for PKCS#7 padding.
It would be nice to have these testcases for new implementers.

- https://www.w3.org/TR/WebCryptoAPI/#aes-cbc-operations
- bug 193153</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1614338</commentid>
    <comment_count>1</comment_count>
      <attachid>389613</attachid>
    <who name="Tomoki Imai">tomoki.imai</who>
    <bug_when>2020-02-03 18:24:07 -0800</bug_when>
    <thetext>Created attachment 389613
patch

Patch to add more testcases to crypto/subtle/aes-cbc-import-key-decrypt.html and crypto/subtle/aes-cbc-import-key-encrypt.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1614654</commentid>
    <comment_count>2</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-02-04 11:30:00 -0800</bug_when>
    <thetext>Not sure why this is needed? You have to implement PKCS#7 yourself?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1614933</commentid>
    <comment_count>3</comment_count>
    <who name="Tomoki Imai">tomoki.imai</who>
    <bug_when>2020-02-04 21:02:00 -0800</bug_when>
    <thetext>(In reply to Jiewen Tan from comment #2)
&gt; Not sure why this is needed? You have to implement PKCS#7 yourself?

I think we need this to validate all the padding is done as expected, and our usage of underlying libraries like CommonCrypt, GCrypt, OpenSSL are correct.

For OpenSSL backend, we don&apos;t have to implement PKCS#7 by ourselves, but we need to setup enough memory for encrypted/decrypted data, which may contains PKCS#7 padding.

Actually we had a bug in calculating the encrypted data length when the length % 8 == 0, and the case was not covered by the current LayoutTest. bug 207176</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1614988</commentid>
    <comment_count>4</comment_count>
    <who name="Tomoki Imai">tomoki.imai</who>
    <bug_when>2020-02-05 02:31:02 -0800</bug_when>
    <thetext>(In reply to Tomoki Imai from comment #3)

&gt; Actually we had a bug in calculating the encrypted data length when the
&gt; length % 8 == 0, and the case was not covered by the current LayoutTest. bug
&gt; 207176

Correction: length % 16 == 0.
When the length % 16 == 0, we need to add 16 bytes for padding, but our first implementation didn&apos;t add any padding, but passed all the LayoutTest.
https://en.wikipedia.org/wiki/Padding_(cryptography)#PKCS%235_and_PKCS%237</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615153</commentid>
    <comment_count>5</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-02-05 11:33:33 -0800</bug_when>
    <thetext>(In reply to Tomoki Imai from comment #3)
&gt; (In reply to Jiewen Tan from comment #2)
&gt; &gt; Not sure why this is needed? You have to implement PKCS#7 yourself?
&gt; 
&gt; I think we need this to validate all the padding is done as expected, and
&gt; our usage of underlying libraries like CommonCrypt, GCrypt, OpenSSL are
&gt; correct.

I don&apos;t buy that. Just like you don&apos;t write tests to validate WTF before you use stuffs from WTF. And I believe if you don&apos;t use PKCS#7, the existing tests won&apos;t pass.

&gt; 
&gt; For OpenSSL backend, we don&apos;t have to implement PKCS#7 by ourselves, but we
&gt; need to setup enough memory for encrypted/decrypted data, which may contains
&gt; PKCS#7 padding.
&gt; 
&gt; Actually we had a bug in calculating the encrypted data length when the
&gt; length % 8 == 0, and the case was not covered by the current LayoutTest. bug
&gt; 207176

Then maybe you should write a test in that patch to help you validate your implementation instead of adding new tests like these here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615154</commentid>
    <comment_count>6</comment_count>
      <attachid>389613</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-02-05 11:33:56 -0800</bug_when>
    <thetext>Comment on attachment 389613
patch

r- for the reasons stated above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615162</commentid>
    <comment_count>7</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-02-05 11:44:53 -0800</bug_when>
    <thetext>(In reply to Tomoki Imai from comment #4)
&gt; (In reply to Tomoki Imai from comment #3)
&gt; 
&gt; &gt; Actually we had a bug in calculating the encrypted data length when the
&gt; &gt; length % 8 == 0, and the case was not covered by the current LayoutTest. bug
&gt; &gt; 207176
&gt; 
&gt; Correction: length % 16 == 0.
&gt; When the length % 16 == 0, we need to add 16 bytes for padding, but our
&gt; first implementation didn&apos;t add any padding, but passed all the LayoutTest.
&gt; https://en.wikipedia.org/wiki/Padding_(cryptography)#PKCS%235_and_PKCS%237

You could modify the existing test to have the plain text that has a length of multiple of 16 in your other patch. Then the original test is then sufficient enough.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1616025</commentid>
    <comment_count>8</comment_count>
    <who name="Tomoki Imai">tomoki.imai</who>
    <bug_when>2020-02-06 19:44:38 -0800</bug_when>
    <thetext>(In reply to Jiewen Tan from comment #5)
&gt; (In reply to Tomoki Imai from comment #3)
&gt; &gt; (In reply to Jiewen Tan from comment #2)
&gt; &gt; &gt; Not sure why this is needed? You have to implement PKCS#7 yourself?
&gt; &gt; 
&gt; &gt; I think we need this to validate all the padding is done as expected, and
&gt; &gt; our usage of underlying libraries like CommonCrypt, GCrypt, OpenSSL are
&gt; &gt; correct.
&gt; 
&gt; I don&apos;t buy that. Just like you don&apos;t write tests to validate WTF before you
&gt; use stuffs from WTF. And I believe if you don&apos;t use PKCS#7, the existing
&gt; tests won&apos;t pass.

Thanks for your reviews!

Right, We don&apos;t need to validate CommonCrypt, GCrypt, and OpenSSL itself.
I think the PKCS#7 test cases to cover boundary values are needed from the viewpoint of JavaScript interface, in the other word, black-box testing.
In my opinion, we should validate all the JavaScript interface, regardless of how they are implemented in platform layer.

&gt; And I believe if you don&apos;t use PKCS#7, the existing tests won&apos;t pass.

Yes, but we didn&apos;t have enough test cases to cover boundary values in PKCS#7 now.

&gt; &gt; 
&gt; &gt; For OpenSSL backend, we don&apos;t have to implement PKCS#7 by ourselves, but we
&gt; &gt; need to setup enough memory for encrypted/decrypted data, which may contains
&gt; &gt; PKCS#7 padding.
&gt; &gt; 
&gt; &gt; Actually we had a bug in calculating the encrypted data length when the
&gt; &gt; length % 8 == 0, and the case was not covered by the current LayoutTest. bug
&gt; &gt; 207176
&gt; 
&gt; Then maybe you should write a test in that patch to help you validate your
&gt; implementation instead of adding new tests like these here.

Sure, another option was adding these test cases in bug 207176.
If it&apos;s better option than making another patch, then I can move the test case to bug 207176.

The reason why I made a separate bug is that attachment 389613 affects the port, but bug 207176 only for OpenSSL backend one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1616300</commentid>
    <comment_count>9</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-02-07 12:39:23 -0800</bug_when>
    <thetext>(In reply to Tomoki Imai from comment #8)
&gt; (In reply to Jiewen Tan from comment #5)
&gt; &gt; (In reply to Tomoki Imai from comment #3)
&gt; &gt; &gt; (In reply to Jiewen Tan from comment #2)
&gt; &gt; &gt; &gt; Not sure why this is needed? You have to implement PKCS#7 yourself?
&gt; &gt; &gt; 
&gt; &gt; &gt; I think we need this to validate all the padding is done as expected, and
&gt; &gt; &gt; our usage of underlying libraries like CommonCrypt, GCrypt, OpenSSL are
&gt; &gt; &gt; correct.
&gt; &gt; 
&gt; &gt; I don&apos;t buy that. Just like you don&apos;t write tests to validate WTF before you
&gt; &gt; use stuffs from WTF. And I believe if you don&apos;t use PKCS#7, the existing
&gt; &gt; tests won&apos;t pass.
&gt; 
&gt; Thanks for your reviews!
&gt; 
&gt; Right, We don&apos;t need to validate CommonCrypt, GCrypt, and OpenSSL itself.
&gt; I think the PKCS#7 test cases to cover boundary values are needed from the
&gt; viewpoint of JavaScript interface, in the other word, black-box testing.
&gt; In my opinion, we should validate all the JavaScript interface, regardless
&gt; of how they are implemented in platform layer.

Alright, I usually focus on minimum coverage and leave the burden of black box to wpt.

&gt; 
&gt; &gt; And I believe if you don&apos;t use PKCS#7, the existing tests won&apos;t pass.
&gt; 
&gt; Yes, but we didn&apos;t have enough test cases to cover boundary values in PKCS#7
&gt; now.
&gt; 
&gt; &gt; &gt; 
&gt; &gt; &gt; For OpenSSL backend, we don&apos;t have to implement PKCS#7 by ourselves, but we
&gt; &gt; &gt; need to setup enough memory for encrypted/decrypted data, which may contains
&gt; &gt; &gt; PKCS#7 padding.
&gt; &gt; &gt; 
&gt; &gt; &gt; Actually we had a bug in calculating the encrypted data length when the
&gt; &gt; &gt; length % 8 == 0, and the case was not covered by the current LayoutTest. bug
&gt; &gt; &gt; 207176
&gt; &gt; 
&gt; &gt; Then maybe you should write a test in that patch to help you validate your
&gt; &gt; implementation instead of adding new tests like these here.
&gt; 
&gt; Sure, another option was adding these test cases in bug 207176.
&gt; If it&apos;s better option than making another patch, then I can move the test
&gt; case to bug 207176.
&gt; 
&gt; The reason why I made a separate bug is that attachment 389613 [details]
&gt; affects the port, but bug 207176 only for OpenSSL backend one.

I think it is better to have tests along with the implementation within the same commit. Then, when you look back the commit, you could reason the decision you made from tests.

Given the other commit is landed, you can continue on this one. You should combine them together next time. Otherwise, it is very hard for reviewers to reason the relations between these two patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1616302</commentid>
    <comment_count>10</comment_count>
      <attachid>389613</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-02-07 12:40:42 -0800</bug_when>
    <thetext>Comment on attachment 389613
patch

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

&gt; LayoutTests/crypto/subtle/aes-cbc-import-key-encrypt.html:185
&gt; +        debug(plainText);

This debug information should be more express like &quot;Plain text: xxxx&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1616303</commentid>
    <comment_count>11</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-02-07 12:41:03 -0800</bug_when>
    <thetext>(In reply to Jiewen Tan from comment #10)
&gt; Comment on attachment 389613 [details]
&gt; patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=389613&amp;action=review
&gt; 
&gt; &gt; LayoutTests/crypto/subtle/aes-cbc-import-key-encrypt.html:185
&gt; &gt; +        debug(plainText);
&gt; 
&gt; This debug information should be more express like &quot;Plain text: xxxx&quot;.

expressive</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1616830</commentid>
    <comment_count>12</comment_count>
    <who name="Tomoki Imai">tomoki.imai</who>
    <bug_when>2020-02-10 03:56:44 -0800</bug_when>
    <thetext>(In reply to Jiewen Tan from comment #9)
&gt; (In reply to Tomoki Imai from comment #8)
&gt; &gt; (In reply to Jiewen Tan from comment #5)
&gt; &gt; &gt; (In reply to Tomoki Imai from comment #3)
&gt; &gt; &gt; &gt; (In reply to Jiewen Tan from comment #2)
&gt; &gt; &gt; &gt; &gt; Not sure why this is needed? You have to implement PKCS#7 yourself?
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; I think we need this to validate all the padding is done as expected, and
&gt; &gt; &gt; &gt; our usage of underlying libraries like CommonCrypt, GCrypt, OpenSSL are
&gt; &gt; &gt; &gt; correct.
&gt; &gt; &gt; 
&gt; &gt; &gt; I don&apos;t buy that. Just like you don&apos;t write tests to validate WTF before you
&gt; &gt; &gt; use stuffs from WTF. And I believe if you don&apos;t use PKCS#7, the existing
&gt; &gt; &gt; tests won&apos;t pass.
&gt; &gt; 
&gt; &gt; Thanks for your reviews!
&gt; &gt; 
&gt; &gt; Right, We don&apos;t need to validate CommonCrypt, GCrypt, and OpenSSL itself.
&gt; &gt; I think the PKCS#7 test cases to cover boundary values are needed from the
&gt; &gt; viewpoint of JavaScript interface, in the other word, black-box testing.
&gt; &gt; In my opinion, we should validate all the JavaScript interface, regardless
&gt; &gt; of how they are implemented in platform layer.
&gt; 
&gt; Alright, I usually focus on minimum coverage and leave the burden of black
&gt; box to wpt.

I&apos;m not sure what &quot;wpt&quot; stands for, but it helps us to understand the current situation.
Is it OK for you to add more LayoutTests to increase the coverage mainly for our OpenSSL implementation?
It should help the other port solid for example bug 207375.

&gt; 
&gt; &gt; 
&gt; &gt; &gt; And I believe if you don&apos;t use PKCS#7, the existing tests won&apos;t pass.
&gt; &gt; 
&gt; &gt; Yes, but we didn&apos;t have enough test cases to cover boundary values in PKCS#7
&gt; &gt; now.
&gt; &gt; 
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; For OpenSSL backend, we don&apos;t have to implement PKCS#7 by ourselves, but we
&gt; &gt; &gt; &gt; need to setup enough memory for encrypted/decrypted data, which may contains
&gt; &gt; &gt; &gt; PKCS#7 padding.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Actually we had a bug in calculating the encrypted data length when the
&gt; &gt; &gt; &gt; length % 8 == 0, and the case was not covered by the current LayoutTest. bug
&gt; &gt; &gt; &gt; 207176
&gt; &gt; &gt; 
&gt; &gt; &gt; Then maybe you should write a test in that patch to help you validate your
&gt; &gt; &gt; implementation instead of adding new tests like these here.
&gt; &gt; 
&gt; &gt; Sure, another option was adding these test cases in bug 207176.
&gt; &gt; If it&apos;s better option than making another patch, then I can move the test
&gt; &gt; case to bug 207176.
&gt; &gt; 
&gt; &gt; The reason why I made a separate bug is that attachment 389613 [details]
&gt; &gt; affects the port, but bug 207176 only for OpenSSL backend one.
&gt; 
&gt; I think it is better to have tests along with the implementation within the
&gt; same commit. Then, when you look back the commit, you could reason the
&gt; decision you made from tests.
&gt; 
&gt; Given the other commit is landed, you can continue on this one. You should
&gt; combine them together next time. Otherwise, it is very hard for reviewers to
&gt; reason the relations between these two patches.

OK, thanks for letting me know about it. I&apos;ll do so from the next time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1616831</commentid>
    <comment_count>13</comment_count>
    <who name="Tomoki Imai">tomoki.imai</who>
    <bug_when>2020-02-10 04:07:44 -0800</bug_when>
    <thetext>Fujii Hironori -san told me that wpt stands for web platform test.

It seems to have only one &quot;plainText&quot;.
https://github.com/web-platform-tests/wpt/blob/master/WebCryptoAPI/encrypt_decrypt/aes_cbc_vectors.js</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1616832</commentid>
    <comment_count>14</comment_count>
      <attachid>390245</attachid>
    <who name="Tomoki Imai">tomoki.imai</who>
    <bug_when>2020-02-10 04:51:21 -0800</bug_when>
    <thetext>Created attachment 390245
patch

Made debug messages more expressive as suggested in comment 10</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1616977</commentid>
    <comment_count>15</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-02-10 11:08:18 -0800</bug_when>
    <thetext>(In reply to Tomoki Imai from comment #13)
&gt; Fujii Hironori -san told me that wpt stands for web platform test.
&gt; 
&gt; It seems to have only one &quot;plainText&quot;.
&gt; https://github.com/web-platform-tests/wpt/blob/master/WebCryptoAPI/
&gt; encrypt_decrypt/aes_cbc_vectors.js

I believe they do have badPadding to test padding stuff, but probably for decryption only.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1616979</commentid>
    <comment_count>16</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-02-10 11:10:12 -0800</bug_when>
    <thetext>(In reply to Tomoki Imai from comment #12)
&gt; (In reply to Jiewen Tan from comment #9)
&gt; &gt; (In reply to Tomoki Imai from comment #8)
&gt; &gt; &gt; (In reply to Jiewen Tan from comment #5)
&gt; &gt; &gt; &gt; (In reply to Tomoki Imai from comment #3)
&gt; &gt; &gt; &gt; &gt; (In reply to Jiewen Tan from comment #2)
&gt; &gt; &gt; &gt; &gt; &gt; Not sure why this is needed? You have to implement PKCS#7 yourself?
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; I think we need this to validate all the padding is done as expected, and
&gt; &gt; &gt; &gt; &gt; our usage of underlying libraries like CommonCrypt, GCrypt, OpenSSL are
&gt; &gt; &gt; &gt; &gt; correct.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; I don&apos;t buy that. Just like you don&apos;t write tests to validate WTF before you
&gt; &gt; &gt; &gt; use stuffs from WTF. And I believe if you don&apos;t use PKCS#7, the existing
&gt; &gt; &gt; &gt; tests won&apos;t pass.
&gt; &gt; &gt; 
&gt; &gt; &gt; Thanks for your reviews!
&gt; &gt; &gt; 
&gt; &gt; &gt; Right, We don&apos;t need to validate CommonCrypt, GCrypt, and OpenSSL itself.
&gt; &gt; &gt; I think the PKCS#7 test cases to cover boundary values are needed from the
&gt; &gt; &gt; viewpoint of JavaScript interface, in the other word, black-box testing.
&gt; &gt; &gt; In my opinion, we should validate all the JavaScript interface, regardless
&gt; &gt; &gt; of how they are implemented in platform layer.
&gt; &gt; 
&gt; &gt; Alright, I usually focus on minimum coverage and leave the burden of black
&gt; &gt; box to wpt.
&gt; 
&gt; I&apos;m not sure what &quot;wpt&quot; stands for, but it helps us to understand the
&gt; current situation.
&gt; Is it OK for you to add more LayoutTests to increase the coverage mainly for
&gt; our OpenSSL implementation?
&gt; It should help the other port solid for example bug 207375.

It&apos;s definitely ok. However, as I explained before, if you have added this test together with the implementation, then I would immediately know this test is to help OpenSSL&apos;s implementation.

&gt; 
&gt; &gt; 
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; And I believe if you don&apos;t use PKCS#7, the existing tests won&apos;t pass.
&gt; &gt; &gt; 
&gt; &gt; &gt; Yes, but we didn&apos;t have enough test cases to cover boundary values in PKCS#7
&gt; &gt; &gt; now.
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; For OpenSSL backend, we don&apos;t have to implement PKCS#7 by ourselves, but we
&gt; &gt; &gt; &gt; &gt; need to setup enough memory for encrypted/decrypted data, which may contains
&gt; &gt; &gt; &gt; &gt; PKCS#7 padding.
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; Actually we had a bug in calculating the encrypted data length when the
&gt; &gt; &gt; &gt; &gt; length % 8 == 0, and the case was not covered by the current LayoutTest. bug
&gt; &gt; &gt; &gt; &gt; 207176
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Then maybe you should write a test in that patch to help you validate your
&gt; &gt; &gt; &gt; implementation instead of adding new tests like these here.
&gt; &gt; &gt; 
&gt; &gt; &gt; Sure, another option was adding these test cases in bug 207176.
&gt; &gt; &gt; If it&apos;s better option than making another patch, then I can move the test
&gt; &gt; &gt; case to bug 207176.
&gt; &gt; &gt; 
&gt; &gt; &gt; The reason why I made a separate bug is that attachment 389613 [details]
&gt; &gt; &gt; affects the port, but bug 207176 only for OpenSSL backend one.
&gt; &gt; 
&gt; &gt; I think it is better to have tests along with the implementation within the
&gt; &gt; same commit. Then, when you look back the commit, you could reason the
&gt; &gt; decision you made from tests.
&gt; &gt; 
&gt; &gt; Given the other commit is landed, you can continue on this one. You should
&gt; &gt; combine them together next time. Otherwise, it is very hard for reviewers to
&gt; &gt; reason the relations between these two patches.
&gt; 
&gt; OK, thanks for letting me know about it. I&apos;ll do so from the next time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1616982</commentid>
    <comment_count>17</comment_count>
      <attachid>390245</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-02-10 11:11:23 -0800</bug_when>
    <thetext>Comment on attachment 390245
patch

LGTM. r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1617856</commentid>
    <comment_count>18</comment_count>
    <who name="Tomoki Imai">tomoki.imai</who>
    <bug_when>2020-02-11 21:03:57 -0800</bug_when>
    <thetext>Jiewen Tan,
Thanks for your review, I&apos;ll make sure that the LayoutTest and the implementation.
We&apos;ll also take a look what we can do for WPT in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1617861</commentid>
    <comment_count>19</comment_count>
    <who name="Tomoki Imai">tomoki.imai</who>
    <bug_when>2020-02-11 21:09:12 -0800</bug_when>
    <thetext>(In reply to Tomoki Imai from comment #18)
&gt; Jiewen Tan,
&gt; Thanks for your review, I&apos;ll make sure that the LayoutTest and the
&gt; implementation.

I&apos;ll make sure that the LayoutTest and the implementation combined to one patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1617864</commentid>
    <comment_count>20</comment_count>
      <attachid>390245</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-11 21:41:26 -0800</bug_when>
    <thetext>Comment on attachment 390245
patch

Clearing flags on attachment: 390245

Committed r256425: &lt;https://trac.webkit.org/changeset/256425&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1617865</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-11 21:41:28 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1617866</commentid>
    <comment_count>22</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-02-11 21:42:16 -0800</bug_when>
    <thetext>&lt;rdar://problem/59376171&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389613</attachid>
            <date>2020-02-03 18:24:07 -0800</date>
            <delta_ts>2020-02-10 04:51:21 -0800</delta_ts>
            <desc>patch</desc>
            <filename>improve-aes-cbc-layouttests-2.patch</filename>
            <type>text/plain</type>
            <size>18060</size>
            <attacher name="Tomoki Imai">tomoki.imai</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmMTI4MzNjODFiMC4uNWE3NGY5Yzk5MzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAor
MjAyMC0wMi0wMyAgVG9tb2tpIEltYWkgIDxUb21va2kuSW1haUBzb255LmNvbT4KKworICAgICAg
ICBBZGQgV2ViQ3J5cHRvIExheW91dFRlc3RzIHRvIGNoZWNrIGlmIFBLQ1MjNyBwYWRkaW5nIGlz
IGNvcnJlY3RseSBpbXBsZW1lbnRlZCBpbiBBRVMtQ0JDCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDcxNzQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJDcnlwdG8gQUVTLUNCQyBzcGVjaWZpY2F0aW9u
IHJlcXVpcmVzIFBLQ1MjNyBwYWRkaW5nLAorCisgICAgICAgIEFkZCBkZWNyeXB0L2VuY3J5cHQg
dGVzdCBjYXNlcyBmb3IgMCB+IDMzIGJ5dGVzIGRhdGEuCisgICAgICAgIEl0IGNvdmVycyB0aGUg
Ym91bmRhcnkgdmFsdWVzIHdoZXJlIHRoZSBwYWRkaW5nIHNpemUgYXJlIGNoYW5nZWQsIG5hbWVs
eSwgMCwgMSwgMTUsIDE2LCAxNywgMzEsIDMyLCBhbmQgMzMuCisKKyAgICAgICAgKiBjcnlwdG8v
c3VidGxlL2Flcy1jYmMtaW1wb3J0LWtleS1kZWNyeXB0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBjcnlwdG8vc3VidGxlL2Flcy1jYmMtaW1wb3J0LWtleS1kZWNyeXB0Lmh0bWw6CisgICAgICAg
ICogY3J5cHRvL3N1YnRsZS9hZXMtY2JjLWltcG9ydC1rZXktZW5jcnlwdC1leHBlY3RlZC50eHQ6
CisgICAgICAgICogY3J5cHRvL3N1YnRsZS9hZXMtY2JjLWltcG9ydC1rZXktZW5jcnlwdC5odG1s
OgorCiAyMDIwLTAxLTMwICBKYWNvYiBVcGhvZmYgIDxqYWNvYl91cGhvZmZAYXBwbGUuY29tPgog
CiAgICAgICAgIFsgbWFjT1Mgd2syIF0gdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LW92ZXJmbG93Lmh0bWwgaXMgZmxha3kgZmFpbGluZwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9hZXMtY2JjLWltcG9ydC1rZXkt
ZGVjcnlwdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL2Flcy1jYmMt
aW1wb3J0LWtleS1kZWNyeXB0LWV4cGVjdGVkLnR4dAppbmRleCAxM2Y0M2NlZGQ4Ny4uMmI1MTJj
MGFjYzUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvYWVzLWNiYy1pbXBv
cnQta2V5LWRlY3J5cHQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2NyeXB0by9zdWJ0
bGUvYWVzLWNiYy1pbXBvcnQta2V5LWRlY3J5cHQtZXhwZWN0ZWQudHh0CkBAIC0zLDYgKzMsNzMg
QEAgVGVzdCBkZWNyeXB0aW5nIHVzaW5nIEFFUy1DQkMgd2l0aCBhbiBpbXBvcnRlZCAxMjhiaXQg
a2V5CiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAorCitQQVNTIGJ5dGVzVG9BU0NJSVN0
cmluZyhwbGFpblRleHQpIGlzIGV4cGVjdGVkUGxhaW5UZXh0CitBCitQQVNTIGJ5dGVzVG9BU0NJ
SVN0cmluZyhwbGFpblRleHQpIGlzIGV4cGVjdGVkUGxhaW5UZXh0CitBQgorUEFTUyBieXRlc1Rv
QVNDSUlTdHJpbmcocGxhaW5UZXh0KSBpcyBleHBlY3RlZFBsYWluVGV4dAorQUJDCitQQVNTIGJ5
dGVzVG9BU0NJSVN0cmluZyhwbGFpblRleHQpIGlzIGV4cGVjdGVkUGxhaW5UZXh0CitBQkNECitQ
QVNTIGJ5dGVzVG9BU0NJSVN0cmluZyhwbGFpblRleHQpIGlzIGV4cGVjdGVkUGxhaW5UZXh0CitB
QkNERQorUEFTUyBieXRlc1RvQVNDSUlTdHJpbmcocGxhaW5UZXh0KSBpcyBleHBlY3RlZFBsYWlu
VGV4dAorQUJDREVGCitQQVNTIGJ5dGVzVG9BU0NJSVN0cmluZyhwbGFpblRleHQpIGlzIGV4cGVj
dGVkUGxhaW5UZXh0CitBQkNERUZHCitQQVNTIGJ5dGVzVG9BU0NJSVN0cmluZyhwbGFpblRleHQp
IGlzIGV4cGVjdGVkUGxhaW5UZXh0CitBQkNERUZHSAorUEFTUyBieXRlc1RvQVNDSUlTdHJpbmco
cGxhaW5UZXh0KSBpcyBleHBlY3RlZFBsYWluVGV4dAorQUJDREVGR0hJCitQQVNTIGJ5dGVzVG9B
U0NJSVN0cmluZyhwbGFpblRleHQpIGlzIGV4cGVjdGVkUGxhaW5UZXh0CitBQkNERUZHSElKCitQ
QVNTIGJ5dGVzVG9BU0NJSVN0cmluZyhwbGFpblRleHQpIGlzIGV4cGVjdGVkUGxhaW5UZXh0CitB
QkNERUZHSElKSworUEFTUyBieXRlc1RvQVNDSUlTdHJpbmcocGxhaW5UZXh0KSBpcyBleHBlY3Rl
ZFBsYWluVGV4dAorQUJDREVGR0hJSktMCitQQVNTIGJ5dGVzVG9BU0NJSVN0cmluZyhwbGFpblRl
eHQpIGlzIGV4cGVjdGVkUGxhaW5UZXh0CitBQkNERUZHSElKS0xNCitQQVNTIGJ5dGVzVG9BU0NJ
SVN0cmluZyhwbGFpblRleHQpIGlzIGV4cGVjdGVkUGxhaW5UZXh0CitBQkNERUZHSElKS0xNTgor
UEFTUyBieXRlc1RvQVNDSUlTdHJpbmcocGxhaW5UZXh0KSBpcyBleHBlY3RlZFBsYWluVGV4dAor
QUJDREVGR0hJSktMTU5PCitQQVNTIGJ5dGVzVG9BU0NJSVN0cmluZyhwbGFpblRleHQpIGlzIGV4
cGVjdGVkUGxhaW5UZXh0CitBQkNERUZHSElKS0xNTk9QCitQQVNTIGJ5dGVzVG9BU0NJSVN0cmlu
ZyhwbGFpblRleHQpIGlzIGV4cGVjdGVkUGxhaW5UZXh0CitBQkNERUZHSElKS0xNTk9QUQorUEFT
UyBieXRlc1RvQVNDSUlTdHJpbmcocGxhaW5UZXh0KSBpcyBleHBlY3RlZFBsYWluVGV4dAorQUJD
REVGR0hJSktMTU5PUFFSCitQQVNTIGJ5dGVzVG9BU0NJSVN0cmluZyhwbGFpblRleHQpIGlzIGV4
cGVjdGVkUGxhaW5UZXh0CitBQkNERUZHSElKS0xNTk9QUVJTCitQQVNTIGJ5dGVzVG9BU0NJSVN0
cmluZyhwbGFpblRleHQpIGlzIGV4cGVjdGVkUGxhaW5UZXh0CitBQkNERUZHSElKS0xNTk9QUVJT
VAorUEFTUyBieXRlc1RvQVNDSUlTdHJpbmcocGxhaW5UZXh0KSBpcyBleHBlY3RlZFBsYWluVGV4
dAorQUJDREVGR0hJSktMTU5PUFFSU1RVCitQQVNTIGJ5dGVzVG9BU0NJSVN0cmluZyhwbGFpblRl
eHQpIGlzIGV4cGVjdGVkUGxhaW5UZXh0CitBQkNERUZHSElKS0xNTk9QUVJTVFVWCitQQVNTIGJ5
dGVzVG9BU0NJSVN0cmluZyhwbGFpblRleHQpIGlzIGV4cGVjdGVkUGxhaW5UZXh0CitBQkNERUZH
SElKS0xNTk9QUVJTVFVWVworUEFTUyBieXRlc1RvQVNDSUlTdHJpbmcocGxhaW5UZXh0KSBpcyBl
eHBlY3RlZFBsYWluVGV4dAorQUJDREVGR0hJSktMTU5PUFFSU1RVVldYCitQQVNTIGJ5dGVzVG9B
U0NJSVN0cmluZyhwbGFpblRleHQpIGlzIGV4cGVjdGVkUGxhaW5UZXh0CitBQkNERUZHSElKS0xN
Tk9QUVJTVFVWV1hZCitQQVNTIGJ5dGVzVG9BU0NJSVN0cmluZyhwbGFpblRleHQpIGlzIGV4cGVj
dGVkUGxhaW5UZXh0CitBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWgorUEFTUyBieXRlc1RvQVND
SUlTdHJpbmcocGxhaW5UZXh0KSBpcyBleHBlY3RlZFBsYWluVGV4dAorQUJDREVGR0hJSktMTU5P
UFFSU1RVVldYWVpBCitQQVNTIGJ5dGVzVG9BU0NJSVN0cmluZyhwbGFpblRleHQpIGlzIGV4cGVj
dGVkUGxhaW5UZXh0CitBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWkFCCitQQVNTIGJ5dGVzVG9B
U0NJSVN0cmluZyhwbGFpblRleHQpIGlzIGV4cGVjdGVkUGxhaW5UZXh0CitBQkNERUZHSElKS0xN
Tk9QUVJTVFVWV1hZWkFCQworUEFTUyBieXRlc1RvQVNDSUlTdHJpbmcocGxhaW5UZXh0KSBpcyBl
eHBlY3RlZFBsYWluVGV4dAorQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpBQkNECitQQVNTIGJ5
dGVzVG9BU0NJSVN0cmluZyhwbGFpblRleHQpIGlzIGV4cGVjdGVkUGxhaW5UZXh0CitBQkNERUZH
SElKS0xNTk9QUVJTVFVWV1hZWkFCQ0RFCitQQVNTIGJ5dGVzVG9BU0NJSVN0cmluZyhwbGFpblRl
eHQpIGlzIGV4cGVjdGVkUGxhaW5UZXh0CitBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWkFCQ0RF
RgorUEFTUyBieXRlc1RvQVNDSUlTdHJpbmcocGxhaW5UZXh0KSBpcyBleHBlY3RlZFBsYWluVGV4
dAorQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpBQkNERUZHCiBQQVNTIGJ5dGVzVG9BU0NJSVN0
cmluZyhwbGFpblRleHQpIGlzIGV4cGVjdGVkUGxhaW5UZXh0CiBQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvYWVz
LWNiYy1pbXBvcnQta2V5LWRlY3J5cHQuaHRtbCBiL0xheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUv
YWVzLWNiYy1pbXBvcnQta2V5LWRlY3J5cHQuaHRtbAppbmRleCA1MTU2NWYxYzM1Zi4uNjI2ODg2
NDU0OTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvYWVzLWNiYy1pbXBv
cnQta2V5LWRlY3J5cHQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL2Flcy1j
YmMtaW1wb3J0LWtleS1kZWNyeXB0Lmh0bWwKQEAgLTE0LDIxICsxNCwxNzcgQEAgZGVzY3JpcHRp
b24oIlRlc3QgZGVjcnlwdGluZyB1c2luZyBBRVMtQ0JDIHdpdGggYW4gaW1wb3J0ZWQgMTI4Yml0
IGtleSIpOwoganNUZXN0SXNBc3luYyA9IHRydWU7CiAKIHZhciBleHRyYWN0YWJsZSA9IGZhbHNl
OwotdmFyIGNpcGhlclRleHQgPSBoZXhTdHJpbmdUb1VpbnQ4QXJyYXkoIjJmZmE0NjE4Nzg0ZGZk
NDE0YjIyYzQwYzYzMzBkMDIyIik7CiB2YXIgYWVzQ2JjUGFyYW1zID0gewogICAgIG5hbWU6ICJh
ZXMtY2JjIiwKICAgICBpdjogYXNjaWlUb1VpbnQ4QXJyYXkoImpuT3c5OW9PWkZMSUVQTXIiKSwK
IH0KIHZhciByYXdLZXkgPSBhc2NpaVRvVWludDhBcnJheSgiam5Pdzk5b09aRkxJRVBNciIpOwot
dmFyIGV4cGVjdGVkUGxhaW5UZXh0ID0gIkhlbGxvLCBXb3JsZCEiOwogCi1jcnlwdG8uc3VidGxl
LmltcG9ydEtleSgicmF3IiwgcmF3S2V5LCAiYWVzLWNiYyIsIGV4dHJhY3RhYmxlLCBbImRlY3J5
cHQiXSkudGhlbihmdW5jdGlvbihrZXkpIHsKLSAgICByZXR1cm4gY3J5cHRvLnN1YnRsZS5kZWNy
eXB0KGFlc0NiY1BhcmFtcywga2V5LCBjaXBoZXJUZXh0KTsKLX0pLnRoZW4oZnVuY3Rpb24ocmVz
dWx0KSB7Ci0gICAgcGxhaW5UZXh0ID0gcmVzdWx0OwogCi0gICAgc2hvdWxkQmUoImJ5dGVzVG9B
U0NJSVN0cmluZyhwbGFpblRleHQpIiwgImV4cGVjdGVkUGxhaW5UZXh0Iik7CisvLyBUZXN0IDAg
fiAzMyBieXRlcyBwbGFpbiB0ZXh0IGRhdGEuCisvLyBJdCBjb3ZlcnMgdGhlIGJvdW5kYXJ5IHZh
bHVlcyB3aGVyZSB0aGUgcGFkZGluZyBzaXplIGFyZSBjaGFuZ2VkLCBuYW1lbHksIDAsIDEsIDE1
LCAxNiwgMTcsIDMxLCAzMiwgYW5kIDMzLgorLy8gMTYgY29tZXMgZnJvbSB0aGUgQUVTLUNCQyBi
bG9jayBzaXplLCB3aGljaCBpcyAxMjhiaXQgPSAxNiBieXRlcy4KIAorLy8gUGFpciBvZiBleHBl
Y3RlZCBwbGFpbiB0ZXh0IGFuZCBjaXBoZXIgdGV4dAordmFyIHRlc3RDYXNlcyA9IFsKKyAgWwor
ICAgICIiLAorICAgICI1NDY5NWYyYjQ5ZDJjMzViNWY0Njc1YzU5NjY5YzdkNSIKKyAgXSwKKyAg
WworICAgICJBIiwKKyAgICAiN2YzMjI0ZGE0YjIwN2JkM2I1NWEzYmE1NWY5NWM4ZGQiCisgIF0s
CisgIFsKKyAgICAiQUIiLAorICAgICIwNWI3YjRjYWEyODg5N2ZmNWZhMGI4Y2FjOTgyMTA3MCIK
KyAgXSwKKyAgWworICAgICJBQkMiLAorICAgICJjNWZjZDgyYzkzY2E3MDYzMGU3Nzg3MTQwOGNi
NjBhNSIKKyAgXSwKKyAgWworICAgICJBQkNEIiwKKyAgICAiOGM2OGIwYmEyOTUyNzYxODc3ZjMw
ZTI2ZWI0M2U5OGIiCisgIF0sCisgIFsKKyAgICAiQUJDREUiLAorICAgICI2ZTU4NDVjZTA4NTgw
MTQ5MmVjZGIzZGE0N2U1NGUwZCIKKyAgXSwKKyAgWworICAgICJBQkNERUYiLAorICAgICJhMmJm
NzAxMWYwNTYwNTA0ZmQyZDNmNmY0ZmE4NTE3OSIKKyAgXSwKKyAgWworICAgICJBQkNERUZHIiwK
KyAgICAiYmZiZTM3MTdkOTdiOGU4ZGJiMzYyYWEzMmE1ZDY3MTUiCisgIF0sCisgIFsKKyAgICAi
QUJDREVGR0giLAorICAgICJhYzU1ZGFkZjZkM2QxYmUxZmVkZTBlMzNlOWRlMDIxYSIKKyAgXSwK
KyAgWworICAgICJBQkNERUZHSEkiLAorICAgICJmNWFkZmQ3MGI2YTkwNzQ0MWFhMWUxYjhkMDMx
MzhiOCIKKyAgXSwKKyAgWworICAgICJBQkNERUZHSElKIiwKKyAgICAiYjRhMmQ2ODhmM2E5YmQz
MDdlZmU2MjY0M2Q4MGVhZDAiCisgIF0sCisgIFsKKyAgICAiQUJDREVGR0hJSksiLAorICAgICJk
NWNjZTc2YTk0MTZiM2MwMGM0ZDJlMGJiMjg3OTEzNCIKKyAgXSwKKyAgWworICAgICJBQkNERUZH
SElKS0wiLAorICAgICI3Yjg3ZjJiNTU0MzNkNTk1ZWQwMmNkMzQxN2M1MTBhNCIKKyAgXSwKKyAg
WworICAgICJBQkNERUZHSElKS0xNIiwKKyAgICAiMjlmNWFmMTU3YmRhNzhmZGRlOTU1MGFhYWRm
YzQ2N2QiCisgIF0sCisgIFsKKyAgICAiQUJDREVGR0hJSktMTU4iLAorICAgICJiZDg2ZmYzYjc4
MGI1NmQ0ZmFmOThiZDdmODE4ZGU1OSIKKyAgXSwKKyAgWworICAgICJBQkNERUZHSElKS0xNTk8i
LAorICAgICI4ZjdkNGZmZDA4MTU1ZTY3YjJmOTM2YWE3ZWVkZDkxOCIKKyAgXSwKKyAgWworICAg
ICJBQkNERUZHSElKS0xNTk9QIiwKKyAgICAiYmI1N2U2YmQwNzg2MzlhMzFlMzc2MjAzNTY1MmRk
YmE4YjY0MTg0MGEwODNlMzMwMjdhMGFlYTMwNWU5NWE2NCIKKyAgXSwKKyAgWworICAgICJBQkNE
RUZHSElKS0xNTk9QUSIsCisgICAgImJiNTdlNmJkMDc4NjM5YTMxZTM3NjIwMzU2NTJkZGJhYWQ3
MDVmN2ZkYTA2MWM0NDg2ZmJjZTJiM2E0NzBiNTkiCisgIF0sCisgIFsKKyAgICAiQUJDREVGR0hJ
SktMTU5PUFFSIiwKKyAgICAiYmI1N2U2YmQwNzg2MzlhMzFlMzc2MjAzNTY1MmRkYmFkNWMxZGU0
MWFhMGE1ZDJmMDNkZDEyOWU0MTliOTliOSIKKyAgXSwKKyAgWworICAgICJBQkNERUZHSElKS0xN
Tk9QUVJTIiwKKyAgICAiYmI1N2U2YmQwNzg2MzlhMzFlMzc2MjAzNTY1MmRkYmE5Y2E3YzY1ZDIx
MzdlMGU0ZTFiNzUyZDdkNWE3NjE5YSIKKyAgXSwKKyAgWworICAgICJBQkNERUZHSElKS0xNTk9Q
UVJTVCIsCisgICAgImJiNTdlNmJkMDc4NjM5YTMxZTM3NjIwMzU2NTJkZGJhOTQ2Y2E1MDYzYWUz
MGI3YjA2OGI3YTBkZGI1NzMxNDMiCisgIF0sCisgIFsKKyAgICAiQUJDREVGR0hJSktMTU5PUFFS
U1RVIiwKKyAgICAiYmI1N2U2YmQwNzg2MzlhMzFlMzc2MjAzNTY1MmRkYmEzZTUzZDZiMjI2MzRi
YTJkMDAzM2FhMWY3NDk4NDAxNyIKKyAgXSwKKyAgWworICAgICJBQkNERUZHSElKS0xNTk9QUVJT
VFVWIiwKKyAgICAiYmI1N2U2YmQwNzg2MzlhMzFlMzc2MjAzNTY1MmRkYmE5YmUxMjFhODVlYzdi
ODdkMTRkMDY5ODIxZjI0MTgxNyIKKyAgXSwKKyAgWworICAgICJBQkNERUZHSElKS0xNTk9QUVJT
VFVWVyIsCisgICAgImJiNTdlNmJkMDc4NjM5YTMxZTM3NjIwMzU2NTJkZGJhZWI5MTEyNmM0NjQ5
ZmJmMjU2ZDI2OThhOGIzY2QxMDgiCisgIF0sCisgIFsKKyAgICAiQUJDREVGR0hJSktMTU5PUFFS
U1RVVldYIiwKKyAgICAiYmI1N2U2YmQwNzg2MzlhMzFlMzc2MjAzNTY1MmRkYmE1ZmRhNzBmMTBk
OWMxOTA2OTFhNThjODAxNDIyNmIwOSIKKyAgXSwKKyAgWworICAgICJBQkNERUZHSElKS0xNTk9Q
UVJTVFVWV1hZIiwKKyAgICAiYmI1N2U2YmQwNzg2MzlhMzFlMzc2MjAzNTY1MmRkYmFjYTIyZWE2
MDZiMzM3ZjBlNTQ5YmQ2YzgxMzQwMjZjMiIKKyAgXSwKKyAgWworICAgICJBQkNERUZHSElKS0xN
Tk9QUVJTVFVWV1hZWiIsCisgICAgImJiNTdlNmJkMDc4NjM5YTMxZTM3NjIwMzU2NTJkZGJhYzU4
ODNhYmQ5ZmY0NzBhZDhkNWFlZmUwNzI2MTMxYjgiCisgIF0sCisgIFsKKyAgICAiQUJDREVGR0hJ
SktMTU5PUFFSU1RVVldYWVpBIiwKKyAgICAiYmI1N2U2YmQwNzg2MzlhMzFlMzc2MjAzNTY1MmRk
YmEwYmExNjgwYjdjYTljYTE4ZjliZGMzMGEyMjEzZTEzOCIKKyAgXSwKKyAgWworICAgICJBQkNE
RUZHSElKS0xNTk9QUVJTVFVWV1hZWkFCIiwKKyAgICAiYmI1N2U2YmQwNzg2MzlhMzFlMzc2MjAz
NTY1MmRkYmEzNDc5NWYwOGI2ODhhZGQyYWMyOGQ1NzljMWU0YTczNSIKKyAgXSwKKyAgWworICAg
ICJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWkFCQyIsCisgICAgImJiNTdlNmJkMDc4NjM5YTMx
ZTM3NjIwMzU2NTJkZGJhNWU2MTc0YmJkN2Q5ODQ4ZTE5ZGFkYzczMTZhNTE5MDUiCisgIF0sCisg
IFsKKyAgICAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpBQkNEIiwKKyAgICAiYmI1N2U2YmQw
Nzg2MzlhMzFlMzc2MjAzNTY1MmRkYmE3NTg4OTdjOWI4NDU4NGVmYWY3YmJhMjdlODBlMjk3MSIK
KyAgXSwKKyAgWworICAgICJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWkFCQ0RFIiwKKyAgICAi
YmI1N2U2YmQwNzg2MzlhMzFlMzc2MjAzNTY1MmRkYmEyM2FlY2Y1YjU5ODFjM2EwYjk5NjdjNmQ1
ZmFmMmY0NCIKKyAgXSwKKyAgWworICAgICJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWkFCQ0RF
RiIsCisgICAgImJiNTdlNmJkMDc4NjM5YTMxZTM3NjIwMzU2NTJkZGJhY2U3YzgzNjRjYzg0YjU3
OWRiYjE2NzY1Y2JhNThkZTY1MTIzNjk0ZGRjOTU4ZTBjOTQzNmY2Njg3MzM4ZmM2ZSIKKyAgXSwK
KyAgWworICAgICJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWkFCQ0RFRkciLAorICAgICJiYjU3
ZTZiZDA3ODYzOWEzMWUzNzYyMDM1NjUyZGRiYWNlN2M4MzY0Y2M4NGI1NzlkYmIxNjc2NWNiYTU4
ZGU2NTk2NTBhMjM3Y2Q5YTI3NjRlOWI5Mjc0OTg0M2ZkMjIiCisgIF0KK107CisKK1Byb21pc2Uu
YWxsKHRlc3RDYXNlcy5tYXAoZnVuY3Rpb24odGVzdENhc2UpeworICAgIHZhciBleHBlY3RlZFBs
YWluVGV4dCA9IHRlc3RDYXNlWzBdOworICAgIHZhciBjaXBoZXJUZXh0ID0gdGVzdENhc2VbMV07
CisgICAgcmV0dXJuIGNyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KCJyYXciLCByYXdLZXksICJhZXMt
Y2JjIiwgZXh0cmFjdGFibGUsIFsiZGVjcnlwdCJdKS50aGVuKGZ1bmN0aW9uKGtleSkgeworICAg
ICAgICByZXR1cm4gY3J5cHRvLnN1YnRsZS5kZWNyeXB0KGFlc0NiY1BhcmFtcywga2V5LCBoZXhT
dHJpbmdUb1VpbnQ4QXJyYXkoY2lwaGVyVGV4dCkpOworICAgIH0pLnRoZW4oZnVuY3Rpb24ocGxh
aW5UZXh0KSB7CisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICBwbGFpblRleHQ6IHBsYWlu
VGV4dCwKKyAgICAgICAgICAgIGNpcGhlclRleHQ6IGNpcGhlclRleHQsCisgICAgICAgICAgICBl
eHBlY3RlZFBsYWluVGV4dDogZXhwZWN0ZWRQbGFpblRleHQKKyAgICAgICAgfTsKKyAgICB9KTsK
K30pKS50aGVuKGZ1bmN0aW9uKHJlc3VsdHMpIHsKKyAgICBmb3IgKHZhciByZXN1bHQgb2YgcmVz
dWx0cykgeworICAgICAgICBwbGFpblRleHQgPSByZXN1bHQucGxhaW5UZXh0OworICAgICAgICBj
aXBoZXJUZXh0ID0gcmVzdWx0LmNpcGhlclRleHQ7CisgICAgICAgIGV4cGVjdGVkUGxhaW5UZXh0
ID0gcmVzdWx0LmV4cGVjdGVkUGxhaW5UZXh0OworICAgICAgICBkZWJ1ZyhleHBlY3RlZFBsYWlu
VGV4dCk7CisgICAgICAgIHNob3VsZEJlKCJieXRlc1RvQVNDSUlTdHJpbmcocGxhaW5UZXh0KSIs
ICJleHBlY3RlZFBsYWluVGV4dCIpOworICAgIH0KICAgICBmaW5pc2hKU1Rlc3QoKTsKIH0pOwog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL2Flcy1jYmMtaW1wb3J0LWtl
eS1lbmNyeXB0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvYWVzLWNi
Yy1pbXBvcnQta2V5LWVuY3J5cHQtZXhwZWN0ZWQudHh0CmluZGV4IDMyMmUxYWE5Yzg1Li45M2Q0
NGM3NzE0NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9hZXMtY2JjLWlt
cG9ydC1rZXktZW5jcnlwdC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvY3J5cHRvL3N1
YnRsZS9hZXMtY2JjLWltcG9ydC1rZXktZW5jcnlwdC1leHBlY3RlZC50eHQKQEAgLTMsNiArMyw3
MyBAQCBUZXN0IGVuY3J5cHRpbmcgdXNpbmcgQUVTLUNCQyB3aXRoIGFuIGltcG9ydGVkIDEyOGJp
dCBrZXkKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCisKK1BBU1MgYnl0ZXNUb0hleFN0
cmluZyhjaXBoZXJUZXh0KSBpcyBleHBlY3RlZENpcGhlclRleHQKK0EKK1BBU1MgYnl0ZXNUb0hl
eFN0cmluZyhjaXBoZXJUZXh0KSBpcyBleHBlY3RlZENpcGhlclRleHQKK0FCCitQQVNTIGJ5dGVz
VG9IZXhTdHJpbmcoY2lwaGVyVGV4dCkgaXMgZXhwZWN0ZWRDaXBoZXJUZXh0CitBQkMKK1BBU1Mg
Ynl0ZXNUb0hleFN0cmluZyhjaXBoZXJUZXh0KSBpcyBleHBlY3RlZENpcGhlclRleHQKK0FCQ0QK
K1BBU1MgYnl0ZXNUb0hleFN0cmluZyhjaXBoZXJUZXh0KSBpcyBleHBlY3RlZENpcGhlclRleHQK
K0FCQ0RFCitQQVNTIGJ5dGVzVG9IZXhTdHJpbmcoY2lwaGVyVGV4dCkgaXMgZXhwZWN0ZWRDaXBo
ZXJUZXh0CitBQkNERUYKK1BBU1MgYnl0ZXNUb0hleFN0cmluZyhjaXBoZXJUZXh0KSBpcyBleHBl
Y3RlZENpcGhlclRleHQKK0FCQ0RFRkcKK1BBU1MgYnl0ZXNUb0hleFN0cmluZyhjaXBoZXJUZXh0
KSBpcyBleHBlY3RlZENpcGhlclRleHQKK0FCQ0RFRkdICitQQVNTIGJ5dGVzVG9IZXhTdHJpbmco
Y2lwaGVyVGV4dCkgaXMgZXhwZWN0ZWRDaXBoZXJUZXh0CitBQkNERUZHSEkKK1BBU1MgYnl0ZXNU
b0hleFN0cmluZyhjaXBoZXJUZXh0KSBpcyBleHBlY3RlZENpcGhlclRleHQKK0FCQ0RFRkdISUoK
K1BBU1MgYnl0ZXNUb0hleFN0cmluZyhjaXBoZXJUZXh0KSBpcyBleHBlY3RlZENpcGhlclRleHQK
K0FCQ0RFRkdISUpLCitQQVNTIGJ5dGVzVG9IZXhTdHJpbmcoY2lwaGVyVGV4dCkgaXMgZXhwZWN0
ZWRDaXBoZXJUZXh0CitBQkNERUZHSElKS0wKK1BBU1MgYnl0ZXNUb0hleFN0cmluZyhjaXBoZXJU
ZXh0KSBpcyBleHBlY3RlZENpcGhlclRleHQKK0FCQ0RFRkdISUpLTE0KK1BBU1MgYnl0ZXNUb0hl
eFN0cmluZyhjaXBoZXJUZXh0KSBpcyBleHBlY3RlZENpcGhlclRleHQKK0FCQ0RFRkdISUpLTE1O
CitQQVNTIGJ5dGVzVG9IZXhTdHJpbmcoY2lwaGVyVGV4dCkgaXMgZXhwZWN0ZWRDaXBoZXJUZXh0
CitBQkNERUZHSElKS0xNTk8KK1BBU1MgYnl0ZXNUb0hleFN0cmluZyhjaXBoZXJUZXh0KSBpcyBl
eHBlY3RlZENpcGhlclRleHQKK0FCQ0RFRkdISUpLTE1OT1AKK1BBU1MgYnl0ZXNUb0hleFN0cmlu
ZyhjaXBoZXJUZXh0KSBpcyBleHBlY3RlZENpcGhlclRleHQKK0FCQ0RFRkdISUpLTE1OT1BRCitQ
QVNTIGJ5dGVzVG9IZXhTdHJpbmcoY2lwaGVyVGV4dCkgaXMgZXhwZWN0ZWRDaXBoZXJUZXh0CitB
QkNERUZHSElKS0xNTk9QUVIKK1BBU1MgYnl0ZXNUb0hleFN0cmluZyhjaXBoZXJUZXh0KSBpcyBl
eHBlY3RlZENpcGhlclRleHQKK0FCQ0RFRkdISUpLTE1OT1BRUlMKK1BBU1MgYnl0ZXNUb0hleFN0
cmluZyhjaXBoZXJUZXh0KSBpcyBleHBlY3RlZENpcGhlclRleHQKK0FCQ0RFRkdISUpLTE1OT1BR
UlNUCitQQVNTIGJ5dGVzVG9IZXhTdHJpbmcoY2lwaGVyVGV4dCkgaXMgZXhwZWN0ZWRDaXBoZXJU
ZXh0CitBQkNERUZHSElKS0xNTk9QUVJTVFUKK1BBU1MgYnl0ZXNUb0hleFN0cmluZyhjaXBoZXJU
ZXh0KSBpcyBleHBlY3RlZENpcGhlclRleHQKK0FCQ0RFRkdISUpLTE1OT1BRUlNUVVYKK1BBU1Mg
Ynl0ZXNUb0hleFN0cmluZyhjaXBoZXJUZXh0KSBpcyBleHBlY3RlZENpcGhlclRleHQKK0FCQ0RF
RkdISUpLTE1OT1BRUlNUVVZXCitQQVNTIGJ5dGVzVG9IZXhTdHJpbmcoY2lwaGVyVGV4dCkgaXMg
ZXhwZWN0ZWRDaXBoZXJUZXh0CitBQkNERUZHSElKS0xNTk9QUVJTVFVWV1gKK1BBU1MgYnl0ZXNU
b0hleFN0cmluZyhjaXBoZXJUZXh0KSBpcyBleHBlY3RlZENpcGhlclRleHQKK0FCQ0RFRkdISUpL
TE1OT1BRUlNUVVZXWFkKK1BBU1MgYnl0ZXNUb0hleFN0cmluZyhjaXBoZXJUZXh0KSBpcyBleHBl
Y3RlZENpcGhlclRleHQKK0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaCitQQVNTIGJ5dGVzVG9I
ZXhTdHJpbmcoY2lwaGVyVGV4dCkgaXMgZXhwZWN0ZWRDaXBoZXJUZXh0CitBQkNERUZHSElKS0xN
Tk9QUVJTVFVWV1hZWkEKK1BBU1MgYnl0ZXNUb0hleFN0cmluZyhjaXBoZXJUZXh0KSBpcyBleHBl
Y3RlZENpcGhlclRleHQKK0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaQUIKK1BBU1MgYnl0ZXNU
b0hleFN0cmluZyhjaXBoZXJUZXh0KSBpcyBleHBlY3RlZENpcGhlclRleHQKK0FCQ0RFRkdISUpL
TE1OT1BRUlNUVVZXWFlaQUJDCitQQVNTIGJ5dGVzVG9IZXhTdHJpbmcoY2lwaGVyVGV4dCkgaXMg
ZXhwZWN0ZWRDaXBoZXJUZXh0CitBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWkFCQ0QKK1BBU1Mg
Ynl0ZXNUb0hleFN0cmluZyhjaXBoZXJUZXh0KSBpcyBleHBlY3RlZENpcGhlclRleHQKK0FCQ0RF
RkdISUpLTE1OT1BRUlNUVVZXWFlaQUJDREUKK1BBU1MgYnl0ZXNUb0hleFN0cmluZyhjaXBoZXJU
ZXh0KSBpcyBleHBlY3RlZENpcGhlclRleHQKK0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaQUJD
REVGCitQQVNTIGJ5dGVzVG9IZXhTdHJpbmcoY2lwaGVyVGV4dCkgaXMgZXhwZWN0ZWRDaXBoZXJU
ZXh0CitBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWkFCQ0RFRkcKIFBBU1MgYnl0ZXNUb0hleFN0
cmluZyhjaXBoZXJUZXh0KSBpcyBleHBlY3RlZENpcGhlclRleHQKIFBBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9h
ZXMtY2JjLWltcG9ydC1rZXktZW5jcnlwdC5odG1sIGIvTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRs
ZS9hZXMtY2JjLWltcG9ydC1rZXktZW5jcnlwdC5odG1sCmluZGV4IGY0YTE0ZTYyYmYxLi4wYjY5
YWI3Nzc0YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9hZXMtY2JjLWlt
cG9ydC1rZXktZW5jcnlwdC5odG1sCisrKyBiL0xheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvYWVz
LWNiYy1pbXBvcnQta2V5LWVuY3J5cHQuaHRtbApAQCAtMTQsMjEgKzE0LDE3NyBAQCBkZXNjcmlw
dGlvbigiVGVzdCBlbmNyeXB0aW5nIHVzaW5nIEFFUy1DQkMgd2l0aCBhbiBpbXBvcnRlZCAxMjhi
aXQga2V5Iik7CiBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKIAogdmFyIGV4dHJhY3RhYmxlID0gZmFs
c2U7Ci12YXIgcGxhaW5UZXh0ID0gYXNjaWlUb1VpbnQ4QXJyYXkoIkhlbGxvLCBXb3JsZCEiKTsK
KwogdmFyIGFlc0NiY1BhcmFtcyA9IHsKICAgICBuYW1lOiAiYWVzLWNiYyIsCiAgICAgaXY6IGFz
Y2lpVG9VaW50OEFycmF5KCJqbk93OTlvT1pGTElFUE1yIiksCiB9CiB2YXIgcmF3S2V5ID0gYXNj
aWlUb1VpbnQ4QXJyYXkoImpuT3c5OW9PWkZMSUVQTXIiKTsKLXZhciBleHBlY3RlZENpcGhlclRl
eHQgPSAiMmZmYTQ2MTg3ODRkZmQ0MTRiMjJjNDBjNjMzMGQwMjIiOwogCi1jcnlwdG8uc3VidGxl
LmltcG9ydEtleSgicmF3IiwgcmF3S2V5LCAiYWVzLWNiYyIsIGV4dHJhY3RhYmxlLCBbImVuY3J5
cHQiXSkudGhlbihmdW5jdGlvbihrZXkpIHsKLSAgICByZXR1cm4gY3J5cHRvLnN1YnRsZS5lbmNy
eXB0KGFlc0NiY1BhcmFtcywga2V5LCBwbGFpblRleHQpOwotfSkudGhlbihmdW5jdGlvbihyZXN1
bHQpIHsKLSAgICBjaXBoZXJUZXh0ID0gcmVzdWx0OworLy8gVGVzdCAwIH4gMzMgYnl0ZXMgcGxh
aW4gdGV4dCBkYXRhLgorLy8gSXQgY292ZXJzIHRoZSBib3VuZGFyeSB2YWx1ZXMgd2hlcmUgdGhl
IHBhZGRpbmcgc2l6ZSBhcmUgY2hhbmdlZCwgbmFtZWx5LCAwLCAxLCAxNSwgMTYsIDE3LCAzMSwg
MzIsIGFuZCAzMy4KKy8vIDE2IGNvbWVzIGZyb20gdGhlIEFFUy1DQkMgYmxvY2sgc2l6ZSwgd2hp
Y2ggaXMgMTI4Yml0ID0gMTYgYnl0ZXMuCiAKLSAgICBzaG91bGRCZSgiYnl0ZXNUb0hleFN0cmlu
ZyhjaXBoZXJUZXh0KSIsICJleHBlY3RlZENpcGhlclRleHQiKTsKKy8vIFBhaXIgb2YgcGxhaW4g
dGV4dCBhbmQgZXhwZWN0ZWQgY2lwaGVyIHRleHQKK3ZhciB0ZXN0Q2FzZXMgPSBbCisgIFsKKyAg
ICAiIiwKKyAgICAiNTQ2OTVmMmI0OWQyYzM1YjVmNDY3NWM1OTY2OWM3ZDUiCisgIF0sCisgIFsK
KyAgICAiQSIsCisgICAgIjdmMzIyNGRhNGIyMDdiZDNiNTVhM2JhNTVmOTVjOGRkIgorICBdLAor
ICBbCisgICAgIkFCIiwKKyAgICAiMDViN2I0Y2FhMjg4OTdmZjVmYTBiOGNhYzk4MjEwNzAiCisg
IF0sCisgIFsKKyAgICAiQUJDIiwKKyAgICAiYzVmY2Q4MmM5M2NhNzA2MzBlNzc4NzE0MDhjYjYw
YTUiCisgIF0sCisgIFsKKyAgICAiQUJDRCIsCisgICAgIjhjNjhiMGJhMjk1Mjc2MTg3N2YzMGUy
NmViNDNlOThiIgorICBdLAorICBbCisgICAgIkFCQ0RFIiwKKyAgICAiNmU1ODQ1Y2UwODU4MDE0
OTJlY2RiM2RhNDdlNTRlMGQiCisgIF0sCisgIFsKKyAgICAiQUJDREVGIiwKKyAgICAiYTJiZjcw
MTFmMDU2MDUwNGZkMmQzZjZmNGZhODUxNzkiCisgIF0sCisgIFsKKyAgICAiQUJDREVGRyIsCisg
ICAgImJmYmUzNzE3ZDk3YjhlOGRiYjM2MmFhMzJhNWQ2NzE1IgorICBdLAorICBbCisgICAgIkFC
Q0RFRkdIIiwKKyAgICAiYWM1NWRhZGY2ZDNkMWJlMWZlZGUwZTMzZTlkZTAyMWEiCisgIF0sCisg
IFsKKyAgICAiQUJDREVGR0hJIiwKKyAgICAiZjVhZGZkNzBiNmE5MDc0NDFhYTFlMWI4ZDAzMTM4
YjgiCisgIF0sCisgIFsKKyAgICAiQUJDREVGR0hJSiIsCisgICAgImI0YTJkNjg4ZjNhOWJkMzA3
ZWZlNjI2NDNkODBlYWQwIgorICBdLAorICBbCisgICAgIkFCQ0RFRkdISUpLIiwKKyAgICAiZDVj
Y2U3NmE5NDE2YjNjMDBjNGQyZTBiYjI4NzkxMzQiCisgIF0sCisgIFsKKyAgICAiQUJDREVGR0hJ
SktMIiwKKyAgICAiN2I4N2YyYjU1NDMzZDU5NWVkMDJjZDM0MTdjNTEwYTQiCisgIF0sCisgIFsK
KyAgICAiQUJDREVGR0hJSktMTSIsCisgICAgIjI5ZjVhZjE1N2JkYTc4ZmRkZTk1NTBhYWFkZmM0
NjdkIgorICBdLAorICBbCisgICAgIkFCQ0RFRkdISUpLTE1OIiwKKyAgICAiYmQ4NmZmM2I3ODBi
NTZkNGZhZjk4YmQ3ZjgxOGRlNTkiCisgIF0sCisgIFsKKyAgICAiQUJDREVGR0hJSktMTU5PIiwK
KyAgICAiOGY3ZDRmZmQwODE1NWU2N2IyZjkzNmFhN2VlZGQ5MTgiCisgIF0sCisgIFsKKyAgICAi
QUJDREVGR0hJSktMTU5PUCIsCisgICAgImJiNTdlNmJkMDc4NjM5YTMxZTM3NjIwMzU2NTJkZGJh
OGI2NDE4NDBhMDgzZTMzMDI3YTBhZWEzMDVlOTVhNjQiCisgIF0sCisgIFsKKyAgICAiQUJDREVG
R0hJSktMTU5PUFEiLAorICAgICJiYjU3ZTZiZDA3ODYzOWEzMWUzNzYyMDM1NjUyZGRiYWFkNzA1
ZjdmZGEwNjFjNDQ4NmZiY2UyYjNhNDcwYjU5IgorICBdLAorICBbCisgICAgIkFCQ0RFRkdISUpL
TE1OT1BRUiIsCisgICAgImJiNTdlNmJkMDc4NjM5YTMxZTM3NjIwMzU2NTJkZGJhZDVjMWRlNDFh
YTBhNWQyZjAzZGQxMjllNDE5Yjk5YjkiCisgIF0sCisgIFsKKyAgICAiQUJDREVGR0hJSktMTU5P
UFFSUyIsCisgICAgImJiNTdlNmJkMDc4NjM5YTMxZTM3NjIwMzU2NTJkZGJhOWNhN2M2NWQyMTM3
ZTBlNGUxYjc1MmQ3ZDVhNzYxOWEiCisgIF0sCisgIFsKKyAgICAiQUJDREVGR0hJSktMTU5PUFFS
U1QiLAorICAgICJiYjU3ZTZiZDA3ODYzOWEzMWUzNzYyMDM1NjUyZGRiYTk0NmNhNTA2M2FlMzBi
N2IwNjhiN2EwZGRiNTczMTQzIgorICBdLAorICBbCisgICAgIkFCQ0RFRkdISUpLTE1OT1BRUlNU
VSIsCisgICAgImJiNTdlNmJkMDc4NjM5YTMxZTM3NjIwMzU2NTJkZGJhM2U1M2Q2YjIyNjM0YmEy
ZDAwMzNhYTFmNzQ5ODQwMTciCisgIF0sCisgIFsKKyAgICAiQUJDREVGR0hJSktMTU5PUFFSU1RV
ViIsCisgICAgImJiNTdlNmJkMDc4NjM5YTMxZTM3NjIwMzU2NTJkZGJhOWJlMTIxYTg1ZWM3Yjg3
ZDE0ZDA2OTgyMWYyNDE4MTciCisgIF0sCisgIFsKKyAgICAiQUJDREVGR0hJSktMTU5PUFFSU1RV
VlciLAorICAgICJiYjU3ZTZiZDA3ODYzOWEzMWUzNzYyMDM1NjUyZGRiYWViOTExMjZjNDY0OWZi
ZjI1NmQyNjk4YThiM2NkMTA4IgorICBdLAorICBbCisgICAgIkFCQ0RFRkdISUpLTE1OT1BRUlNU
VVZXWCIsCisgICAgImJiNTdlNmJkMDc4NjM5YTMxZTM3NjIwMzU2NTJkZGJhNWZkYTcwZjEwZDlj
MTkwNjkxYTU4YzgwMTQyMjZiMDkiCisgIF0sCisgIFsKKyAgICAiQUJDREVGR0hJSktMTU5PUFFS
U1RVVldYWSIsCisgICAgImJiNTdlNmJkMDc4NjM5YTMxZTM3NjIwMzU2NTJkZGJhY2EyMmVhNjA2
YjMzN2YwZTU0OWJkNmM4MTM0MDI2YzIiCisgIF0sCisgIFsKKyAgICAiQUJDREVGR0hJSktMTU5P
UFFSU1RVVldYWVoiLAorICAgICJiYjU3ZTZiZDA3ODYzOWEzMWUzNzYyMDM1NjUyZGRiYWM1ODgz
YWJkOWZmNDcwYWQ4ZDVhZWZlMDcyNjEzMWI4IgorICBdLAorICBbCisgICAgIkFCQ0RFRkdISUpL
TE1OT1BRUlNUVVZXWFlaQSIsCisgICAgImJiNTdlNmJkMDc4NjM5YTMxZTM3NjIwMzU2NTJkZGJh
MGJhMTY4MGI3Y2E5Y2ExOGY5YmRjMzBhMjIxM2UxMzgiCisgIF0sCisgIFsKKyAgICAiQUJDREVG
R0hJSktMTU5PUFFSU1RVVldYWVpBQiIsCisgICAgImJiNTdlNmJkMDc4NjM5YTMxZTM3NjIwMzU2
NTJkZGJhMzQ3OTVmMDhiNjg4YWRkMmFjMjhkNTc5YzFlNGE3MzUiCisgIF0sCisgIFsKKyAgICAi
QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpBQkMiLAorICAgICJiYjU3ZTZiZDA3ODYzOWEzMWUz
NzYyMDM1NjUyZGRiYTVlNjE3NGJiZDdkOTg0OGUxOWRhZGM3MzE2YTUxOTA1IgorICBdLAorICBb
CisgICAgIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaQUJDRCIsCisgICAgImJiNTdlNmJkMDc4
NjM5YTMxZTM3NjIwMzU2NTJkZGJhNzU4ODk3YzliODQ1ODRlZmFmN2JiYTI3ZTgwZTI5NzEiCisg
IF0sCisgIFsKKyAgICAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpBQkNERSIsCisgICAgImJi
NTdlNmJkMDc4NjM5YTMxZTM3NjIwMzU2NTJkZGJhMjNhZWNmNWI1OTgxYzNhMGI5OTY3YzZkNWZh
ZjJmNDQiCisgIF0sCisgIFsKKyAgICAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpBQkNERUYi
LAorICAgICJiYjU3ZTZiZDA3ODYzOWEzMWUzNzYyMDM1NjUyZGRiYWNlN2M4MzY0Y2M4NGI1Nzlk
YmIxNjc2NWNiYTU4ZGU2NTEyMzY5NGRkYzk1OGUwYzk0MzZmNjY4NzMzOGZjNmUiCisgIF0sCisg
IFsKKyAgICAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpBQkNERUZHIiwKKyAgICAiYmI1N2U2
YmQwNzg2MzlhMzFlMzc2MjAzNTY1MmRkYmFjZTdjODM2NGNjODRiNTc5ZGJiMTY3NjVjYmE1OGRl
NjU5NjUwYTIzN2NkOWEyNzY0ZTliOTI3NDk4NDNmZDIyIgorICBdCitdOwogCitQcm9taXNlLmFs
bCh0ZXN0Q2FzZXMubWFwKGZ1bmN0aW9uKHRlc3RDYXNlKXsKKyAgICB2YXIgcGxhaW5UZXh0ID0g
dGVzdENhc2VbMF07CisgICAgdmFyIGV4cGVjdGVkQ2lwaGVyVGV4dCA9IHRlc3RDYXNlWzFdOwor
ICAgIHJldHVybiBjcnlwdG8uc3VidGxlLmltcG9ydEtleSgicmF3IiwgcmF3S2V5LCAiYWVzLWNi
YyIsIGV4dHJhY3RhYmxlLCBbImVuY3J5cHQiXSkudGhlbihmdW5jdGlvbihrZXkpIHsKKyAgICAg
ICAgcmV0dXJuIGNyeXB0by5zdWJ0bGUuZW5jcnlwdChhZXNDYmNQYXJhbXMsIGtleSwgYXNjaWlU
b1VpbnQ4QXJyYXkocGxhaW5UZXh0KSk7CisgICAgfSkudGhlbihmdW5jdGlvbihjaXBoZXJUZXh0
KSB7CisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICBwbGFpblRleHQ6IHBsYWluVGV4dCwK
KyAgICAgICAgICAgIGNpcGhlclRleHQ6IGNpcGhlclRleHQsCisgICAgICAgICAgICBleHBlY3Rl
ZENpcGhlclRleHQ6IGV4cGVjdGVkQ2lwaGVyVGV4dAorICAgICAgICB9OworICAgIH0pOworfSkp
LnRoZW4oZnVuY3Rpb24ocmVzdWx0cykgeworICAgIGZvciAodmFyIHJlc3VsdCBvZiByZXN1bHRz
KSB7CisgICAgICAgIHBsYWluVGV4dCA9IHJlc3VsdC5wbGFpblRleHQ7CisgICAgICAgIGNpcGhl
clRleHQgPSByZXN1bHQuY2lwaGVyVGV4dDsKKyAgICAgICAgZXhwZWN0ZWRDaXBoZXJUZXh0ID0g
cmVzdWx0LmV4cGVjdGVkQ2lwaGVyVGV4dDsKKyAgICAgICAgZGVidWcocGxhaW5UZXh0KTsKKyAg
ICAgICAgc2hvdWxkQmUoImJ5dGVzVG9IZXhTdHJpbmcoY2lwaGVyVGV4dCkiLCAiZXhwZWN0ZWRD
aXBoZXJUZXh0Iik7CisgICAgfQogICAgIGZpbmlzaEpTVGVzdCgpOwogfSk7CiAK
</data>
<flag name="review"
          id="405268"
          type_id="1"
          status="-"
          setter="jiewen_tan"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390245</attachid>
            <date>2020-02-10 04:51:21 -0800</date>
            <delta_ts>2020-02-11 21:41:26 -0800</delta_ts>
            <desc>patch</desc>
            <filename>improve-aes-cbc-layouttests-3.patch</filename>
            <type>text/plain</type>
            <size>19235</size>
            <attacher name="Tomoki Imai">tomoki.imai</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBjNDYwMGM1MTRkNi4uMGIyNTRiZjJmNzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAor
MjAyMC0wMi0wMyAgVG9tb2tpIEltYWkgIDxUb21va2kuSW1haUBzb255LmNvbT4KKworICAgICAg
ICBBZGQgV2ViQ3J5cHRvIExheW91dFRlc3RzIHRvIGNoZWNrIGlmIFBLQ1MjNyBwYWRkaW5nIGlz
IGNvcnJlY3RseSBpbXBsZW1lbnRlZCBpbiBBRVMtQ0JDCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDcxNzQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJDcnlwdG8gQUVTLUNCQyBzcGVjaWZpY2F0aW9u
IHJlcXVpcmVzIFBLQ1MjNyBwYWRkaW5nLAorCisgICAgICAgIEFkZCBkZWNyeXB0L2VuY3J5cHQg
dGVzdCBjYXNlcyBmb3IgMCB+IDMzIGJ5dGVzIGRhdGEuCisgICAgICAgIEl0IGNvdmVycyB0aGUg
Ym91bmRhcnkgdmFsdWVzIHdoZXJlIHRoZSBwYWRkaW5nIHNpemUgYXJlIGNoYW5nZWQsIG5hbWVs
eSwgMCwgMSwgMTUsIDE2LCAxNywgMzEsIDMyLCBhbmQgMzMuCisKKyAgICAgICAgKiBjcnlwdG8v
c3VidGxlL2Flcy1jYmMtaW1wb3J0LWtleS1kZWNyeXB0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBjcnlwdG8vc3VidGxlL2Flcy1jYmMtaW1wb3J0LWtleS1kZWNyeXB0Lmh0bWw6CisgICAgICAg
ICogY3J5cHRvL3N1YnRsZS9hZXMtY2JjLWltcG9ydC1rZXktZW5jcnlwdC1leHBlY3RlZC50eHQ6
CisgICAgICAgICogY3J5cHRvL3N1YnRsZS9hZXMtY2JjLWltcG9ydC1rZXktZW5jcnlwdC5odG1s
OgorCiAyMDIwLTAyLTA3ICBKYXNvbiBMYXdyZW5jZSAgPGxhd3JlbmNlLmpAYXBwbGUuY29tPgog
CiAgICAgICAgIFsgbWFjT1MgXSBMYXlvdXQgVGVzdCBsZWdhY3ktYW5pbWF0aW9uLWVuZ2luZS9h
bmltYXRpb25zL3N1c3BlbmQtcmVzdW1lLWFuaW1hdGlvbi1ldmVudHMuaHRtbCBpcyBhIGZsYWt5
IGZhaWx1cmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvYWVzLWNiYy1p
bXBvcnQta2V5LWRlY3J5cHQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRs
ZS9hZXMtY2JjLWltcG9ydC1rZXktZGVjcnlwdC1leHBlY3RlZC50eHQKaW5kZXggMTNmNDNjZWRk
ODcuLjc4MzdkNjVhNTQxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL2Fl
cy1jYmMtaW1wb3J0LWtleS1kZWNyeXB0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9j
cnlwdG8vc3VidGxlL2Flcy1jYmMtaW1wb3J0LWtleS1kZWNyeXB0LWV4cGVjdGVkLnR4dApAQCAt
Myw2ICszLDczIEBAIFRlc3QgZGVjcnlwdGluZyB1c2luZyBBRVMtQ0JDIHdpdGggYW4gaW1wb3J0
ZWQgMTI4Yml0IGtleQogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKK0V4cGVjdGVkIHBs
YWluIHRleHQ6IAorUEFTUyBieXRlc1RvQVNDSUlTdHJpbmcocGxhaW5UZXh0KSBpcyBleHBlY3Rl
ZFBsYWluVGV4dAorRXhwZWN0ZWQgcGxhaW4gdGV4dDogQQorUEFTUyBieXRlc1RvQVNDSUlTdHJp
bmcocGxhaW5UZXh0KSBpcyBleHBlY3RlZFBsYWluVGV4dAorRXhwZWN0ZWQgcGxhaW4gdGV4dDog
QUIKK1BBU1MgYnl0ZXNUb0FTQ0lJU3RyaW5nKHBsYWluVGV4dCkgaXMgZXhwZWN0ZWRQbGFpblRl
eHQKK0V4cGVjdGVkIHBsYWluIHRleHQ6IEFCQworUEFTUyBieXRlc1RvQVNDSUlTdHJpbmcocGxh
aW5UZXh0KSBpcyBleHBlY3RlZFBsYWluVGV4dAorRXhwZWN0ZWQgcGxhaW4gdGV4dDogQUJDRAor
UEFTUyBieXRlc1RvQVNDSUlTdHJpbmcocGxhaW5UZXh0KSBpcyBleHBlY3RlZFBsYWluVGV4dAor
RXhwZWN0ZWQgcGxhaW4gdGV4dDogQUJDREUKK1BBU1MgYnl0ZXNUb0FTQ0lJU3RyaW5nKHBsYWlu
VGV4dCkgaXMgZXhwZWN0ZWRQbGFpblRleHQKK0V4cGVjdGVkIHBsYWluIHRleHQ6IEFCQ0RFRgor
UEFTUyBieXRlc1RvQVNDSUlTdHJpbmcocGxhaW5UZXh0KSBpcyBleHBlY3RlZFBsYWluVGV4dAor
RXhwZWN0ZWQgcGxhaW4gdGV4dDogQUJDREVGRworUEFTUyBieXRlc1RvQVNDSUlTdHJpbmcocGxh
aW5UZXh0KSBpcyBleHBlY3RlZFBsYWluVGV4dAorRXhwZWN0ZWQgcGxhaW4gdGV4dDogQUJDREVG
R0gKK1BBU1MgYnl0ZXNUb0FTQ0lJU3RyaW5nKHBsYWluVGV4dCkgaXMgZXhwZWN0ZWRQbGFpblRl
eHQKK0V4cGVjdGVkIHBsYWluIHRleHQ6IEFCQ0RFRkdISQorUEFTUyBieXRlc1RvQVNDSUlTdHJp
bmcocGxhaW5UZXh0KSBpcyBleHBlY3RlZFBsYWluVGV4dAorRXhwZWN0ZWQgcGxhaW4gdGV4dDog
QUJDREVGR0hJSgorUEFTUyBieXRlc1RvQVNDSUlTdHJpbmcocGxhaW5UZXh0KSBpcyBleHBlY3Rl
ZFBsYWluVGV4dAorRXhwZWN0ZWQgcGxhaW4gdGV4dDogQUJDREVGR0hJSksKK1BBU1MgYnl0ZXNU
b0FTQ0lJU3RyaW5nKHBsYWluVGV4dCkgaXMgZXhwZWN0ZWRQbGFpblRleHQKK0V4cGVjdGVkIHBs
YWluIHRleHQ6IEFCQ0RFRkdISUpLTAorUEFTUyBieXRlc1RvQVNDSUlTdHJpbmcocGxhaW5UZXh0
KSBpcyBleHBlY3RlZFBsYWluVGV4dAorRXhwZWN0ZWQgcGxhaW4gdGV4dDogQUJDREVGR0hJSktM
TQorUEFTUyBieXRlc1RvQVNDSUlTdHJpbmcocGxhaW5UZXh0KSBpcyBleHBlY3RlZFBsYWluVGV4
dAorRXhwZWN0ZWQgcGxhaW4gdGV4dDogQUJDREVGR0hJSktMTU4KK1BBU1MgYnl0ZXNUb0FTQ0lJ
U3RyaW5nKHBsYWluVGV4dCkgaXMgZXhwZWN0ZWRQbGFpblRleHQKK0V4cGVjdGVkIHBsYWluIHRl
eHQ6IEFCQ0RFRkdISUpLTE1OTworUEFTUyBieXRlc1RvQVNDSUlTdHJpbmcocGxhaW5UZXh0KSBp
cyBleHBlY3RlZFBsYWluVGV4dAorRXhwZWN0ZWQgcGxhaW4gdGV4dDogQUJDREVGR0hJSktMTU5P
UAorUEFTUyBieXRlc1RvQVNDSUlTdHJpbmcocGxhaW5UZXh0KSBpcyBleHBlY3RlZFBsYWluVGV4
dAorRXhwZWN0ZWQgcGxhaW4gdGV4dDogQUJDREVGR0hJSktMTU5PUFEKK1BBU1MgYnl0ZXNUb0FT
Q0lJU3RyaW5nKHBsYWluVGV4dCkgaXMgZXhwZWN0ZWRQbGFpblRleHQKK0V4cGVjdGVkIHBsYWlu
IHRleHQ6IEFCQ0RFRkdISUpLTE1OT1BRUgorUEFTUyBieXRlc1RvQVNDSUlTdHJpbmcocGxhaW5U
ZXh0KSBpcyBleHBlY3RlZFBsYWluVGV4dAorRXhwZWN0ZWQgcGxhaW4gdGV4dDogQUJDREVGR0hJ
SktMTU5PUFFSUworUEFTUyBieXRlc1RvQVNDSUlTdHJpbmcocGxhaW5UZXh0KSBpcyBleHBlY3Rl
ZFBsYWluVGV4dAorRXhwZWN0ZWQgcGxhaW4gdGV4dDogQUJDREVGR0hJSktMTU5PUFFSU1QKK1BB
U1MgYnl0ZXNUb0FTQ0lJU3RyaW5nKHBsYWluVGV4dCkgaXMgZXhwZWN0ZWRQbGFpblRleHQKK0V4
cGVjdGVkIHBsYWluIHRleHQ6IEFCQ0RFRkdISUpLTE1OT1BRUlNUVQorUEFTUyBieXRlc1RvQVND
SUlTdHJpbmcocGxhaW5UZXh0KSBpcyBleHBlY3RlZFBsYWluVGV4dAorRXhwZWN0ZWQgcGxhaW4g
dGV4dDogQUJDREVGR0hJSktMTU5PUFFSU1RVVgorUEFTUyBieXRlc1RvQVNDSUlTdHJpbmcocGxh
aW5UZXh0KSBpcyBleHBlY3RlZFBsYWluVGV4dAorRXhwZWN0ZWQgcGxhaW4gdGV4dDogQUJDREVG
R0hJSktMTU5PUFFSU1RVVlcKK1BBU1MgYnl0ZXNUb0FTQ0lJU3RyaW5nKHBsYWluVGV4dCkgaXMg
ZXhwZWN0ZWRQbGFpblRleHQKK0V4cGVjdGVkIHBsYWluIHRleHQ6IEFCQ0RFRkdISUpLTE1OT1BR
UlNUVVZXWAorUEFTUyBieXRlc1RvQVNDSUlTdHJpbmcocGxhaW5UZXh0KSBpcyBleHBlY3RlZFBs
YWluVGV4dAorRXhwZWN0ZWQgcGxhaW4gdGV4dDogQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWQor
UEFTUyBieXRlc1RvQVNDSUlTdHJpbmcocGxhaW5UZXh0KSBpcyBleHBlY3RlZFBsYWluVGV4dAor
RXhwZWN0ZWQgcGxhaW4gdGV4dDogQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoKK1BBU1MgYnl0
ZXNUb0FTQ0lJU3RyaW5nKHBsYWluVGV4dCkgaXMgZXhwZWN0ZWRQbGFpblRleHQKK0V4cGVjdGVk
IHBsYWluIHRleHQ6IEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaQQorUEFTUyBieXRlc1RvQVND
SUlTdHJpbmcocGxhaW5UZXh0KSBpcyBleHBlY3RlZFBsYWluVGV4dAorRXhwZWN0ZWQgcGxhaW4g
dGV4dDogQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpBQgorUEFTUyBieXRlc1RvQVNDSUlTdHJp
bmcocGxhaW5UZXh0KSBpcyBleHBlY3RlZFBsYWluVGV4dAorRXhwZWN0ZWQgcGxhaW4gdGV4dDog
QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpBQkMKK1BBU1MgYnl0ZXNUb0FTQ0lJU3RyaW5nKHBs
YWluVGV4dCkgaXMgZXhwZWN0ZWRQbGFpblRleHQKK0V4cGVjdGVkIHBsYWluIHRleHQ6IEFCQ0RF
RkdISUpLTE1OT1BRUlNUVVZXWFlaQUJDRAorUEFTUyBieXRlc1RvQVNDSUlTdHJpbmcocGxhaW5U
ZXh0KSBpcyBleHBlY3RlZFBsYWluVGV4dAorRXhwZWN0ZWQgcGxhaW4gdGV4dDogQUJDREVGR0hJ
SktMTU5PUFFSU1RVVldYWVpBQkNERQorUEFTUyBieXRlc1RvQVNDSUlTdHJpbmcocGxhaW5UZXh0
KSBpcyBleHBlY3RlZFBsYWluVGV4dAorRXhwZWN0ZWQgcGxhaW4gdGV4dDogQUJDREVGR0hJSktM
TU5PUFFSU1RVVldYWVpBQkNERUYKK1BBU1MgYnl0ZXNUb0FTQ0lJU3RyaW5nKHBsYWluVGV4dCkg
aXMgZXhwZWN0ZWRQbGFpblRleHQKK0V4cGVjdGVkIHBsYWluIHRleHQ6IEFCQ0RFRkdISUpLTE1O
T1BRUlNUVVZXWFlaQUJDREVGRwogUEFTUyBieXRlc1RvQVNDSUlTdHJpbmcocGxhaW5UZXh0KSBp
cyBleHBlY3RlZFBsYWluVGV4dAogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL2Flcy1jYmMtaW1wb3J0LWtleS1k
ZWNyeXB0Lmh0bWwgYi9MYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL2Flcy1jYmMtaW1wb3J0LWtl
eS1kZWNyeXB0Lmh0bWwKaW5kZXggNTE1NjVmMWMzNWYuLjQ0NGI5YjI2YWZmIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL2Flcy1jYmMtaW1wb3J0LWtleS1kZWNyeXB0Lmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9hZXMtY2JjLWltcG9ydC1rZXktZGVj
cnlwdC5odG1sCkBAIC0xNCwyMSArMTQsMTc3IEBAIGRlc2NyaXB0aW9uKCJUZXN0IGRlY3J5cHRp
bmcgdXNpbmcgQUVTLUNCQyB3aXRoIGFuIGltcG9ydGVkIDEyOGJpdCBrZXkiKTsKIGpzVGVzdElz
QXN5bmMgPSB0cnVlOwogCiB2YXIgZXh0cmFjdGFibGUgPSBmYWxzZTsKLXZhciBjaXBoZXJUZXh0
ID0gaGV4U3RyaW5nVG9VaW50OEFycmF5KCIyZmZhNDYxODc4NGRmZDQxNGIyMmM0MGM2MzMwZDAy
MiIpOwogdmFyIGFlc0NiY1BhcmFtcyA9IHsKICAgICBuYW1lOiAiYWVzLWNiYyIsCiAgICAgaXY6
IGFzY2lpVG9VaW50OEFycmF5KCJqbk93OTlvT1pGTElFUE1yIiksCiB9CiB2YXIgcmF3S2V5ID0g
YXNjaWlUb1VpbnQ4QXJyYXkoImpuT3c5OW9PWkZMSUVQTXIiKTsKLXZhciBleHBlY3RlZFBsYWlu
VGV4dCA9ICJIZWxsbywgV29ybGQhIjsKIAotY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoInJhdyIs
IHJhd0tleSwgImFlcy1jYmMiLCBleHRyYWN0YWJsZSwgWyJkZWNyeXB0Il0pLnRoZW4oZnVuY3Rp
b24oa2V5KSB7Ci0gICAgcmV0dXJuIGNyeXB0by5zdWJ0bGUuZGVjcnlwdChhZXNDYmNQYXJhbXMs
IGtleSwgY2lwaGVyVGV4dCk7Ci19KS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgewotICAgIHBsYWlu
VGV4dCA9IHJlc3VsdDsKIAotICAgIHNob3VsZEJlKCJieXRlc1RvQVNDSUlTdHJpbmcocGxhaW5U
ZXh0KSIsICJleHBlY3RlZFBsYWluVGV4dCIpOworLy8gVGVzdCAwIH4gMzMgYnl0ZXMgcGxhaW4g
dGV4dCBkYXRhLgorLy8gSXQgY292ZXJzIHRoZSBib3VuZGFyeSB2YWx1ZXMgd2hlcmUgdGhlIHBh
ZGRpbmcgc2l6ZSBhcmUgY2hhbmdlZCwgbmFtZWx5LCAwLCAxLCAxNSwgMTYsIDE3LCAzMSwgMzIs
IGFuZCAzMy4KKy8vIDE2IGNvbWVzIGZyb20gdGhlIEFFUy1DQkMgYmxvY2sgc2l6ZSwgd2hpY2gg
aXMgMTI4Yml0ID0gMTYgYnl0ZXMuCiAKKy8vIFBhaXIgb2YgZXhwZWN0ZWQgcGxhaW4gdGV4dCBh
bmQgY2lwaGVyIHRleHQKK3ZhciB0ZXN0Q2FzZXMgPSBbCisgIFsKKyAgICAiIiwKKyAgICAiNTQ2
OTVmMmI0OWQyYzM1YjVmNDY3NWM1OTY2OWM3ZDUiCisgIF0sCisgIFsKKyAgICAiQSIsCisgICAg
IjdmMzIyNGRhNGIyMDdiZDNiNTVhM2JhNTVmOTVjOGRkIgorICBdLAorICBbCisgICAgIkFCIiwK
KyAgICAiMDViN2I0Y2FhMjg4OTdmZjVmYTBiOGNhYzk4MjEwNzAiCisgIF0sCisgIFsKKyAgICAi
QUJDIiwKKyAgICAiYzVmY2Q4MmM5M2NhNzA2MzBlNzc4NzE0MDhjYjYwYTUiCisgIF0sCisgIFsK
KyAgICAiQUJDRCIsCisgICAgIjhjNjhiMGJhMjk1Mjc2MTg3N2YzMGUyNmViNDNlOThiIgorICBd
LAorICBbCisgICAgIkFCQ0RFIiwKKyAgICAiNmU1ODQ1Y2UwODU4MDE0OTJlY2RiM2RhNDdlNTRl
MGQiCisgIF0sCisgIFsKKyAgICAiQUJDREVGIiwKKyAgICAiYTJiZjcwMTFmMDU2MDUwNGZkMmQz
ZjZmNGZhODUxNzkiCisgIF0sCisgIFsKKyAgICAiQUJDREVGRyIsCisgICAgImJmYmUzNzE3ZDk3
YjhlOGRiYjM2MmFhMzJhNWQ2NzE1IgorICBdLAorICBbCisgICAgIkFCQ0RFRkdIIiwKKyAgICAi
YWM1NWRhZGY2ZDNkMWJlMWZlZGUwZTMzZTlkZTAyMWEiCisgIF0sCisgIFsKKyAgICAiQUJDREVG
R0hJIiwKKyAgICAiZjVhZGZkNzBiNmE5MDc0NDFhYTFlMWI4ZDAzMTM4YjgiCisgIF0sCisgIFsK
KyAgICAiQUJDREVGR0hJSiIsCisgICAgImI0YTJkNjg4ZjNhOWJkMzA3ZWZlNjI2NDNkODBlYWQw
IgorICBdLAorICBbCisgICAgIkFCQ0RFRkdISUpLIiwKKyAgICAiZDVjY2U3NmE5NDE2YjNjMDBj
NGQyZTBiYjI4NzkxMzQiCisgIF0sCisgIFsKKyAgICAiQUJDREVGR0hJSktMIiwKKyAgICAiN2I4
N2YyYjU1NDMzZDU5NWVkMDJjZDM0MTdjNTEwYTQiCisgIF0sCisgIFsKKyAgICAiQUJDREVGR0hJ
SktMTSIsCisgICAgIjI5ZjVhZjE1N2JkYTc4ZmRkZTk1NTBhYWFkZmM0NjdkIgorICBdLAorICBb
CisgICAgIkFCQ0RFRkdISUpLTE1OIiwKKyAgICAiYmQ4NmZmM2I3ODBiNTZkNGZhZjk4YmQ3Zjgx
OGRlNTkiCisgIF0sCisgIFsKKyAgICAiQUJDREVGR0hJSktMTU5PIiwKKyAgICAiOGY3ZDRmZmQw
ODE1NWU2N2IyZjkzNmFhN2VlZGQ5MTgiCisgIF0sCisgIFsKKyAgICAiQUJDREVGR0hJSktMTU5P
UCIsCisgICAgImJiNTdlNmJkMDc4NjM5YTMxZTM3NjIwMzU2NTJkZGJhOGI2NDE4NDBhMDgzZTMz
MDI3YTBhZWEzMDVlOTVhNjQiCisgIF0sCisgIFsKKyAgICAiQUJDREVGR0hJSktMTU5PUFEiLAor
ICAgICJiYjU3ZTZiZDA3ODYzOWEzMWUzNzYyMDM1NjUyZGRiYWFkNzA1ZjdmZGEwNjFjNDQ4NmZi
Y2UyYjNhNDcwYjU5IgorICBdLAorICBbCisgICAgIkFCQ0RFRkdISUpLTE1OT1BRUiIsCisgICAg
ImJiNTdlNmJkMDc4NjM5YTMxZTM3NjIwMzU2NTJkZGJhZDVjMWRlNDFhYTBhNWQyZjAzZGQxMjll
NDE5Yjk5YjkiCisgIF0sCisgIFsKKyAgICAiQUJDREVGR0hJSktMTU5PUFFSUyIsCisgICAgImJi
NTdlNmJkMDc4NjM5YTMxZTM3NjIwMzU2NTJkZGJhOWNhN2M2NWQyMTM3ZTBlNGUxYjc1MmQ3ZDVh
NzYxOWEiCisgIF0sCisgIFsKKyAgICAiQUJDREVGR0hJSktMTU5PUFFSU1QiLAorICAgICJiYjU3
ZTZiZDA3ODYzOWEzMWUzNzYyMDM1NjUyZGRiYTk0NmNhNTA2M2FlMzBiN2IwNjhiN2EwZGRiNTcz
MTQzIgorICBdLAorICBbCisgICAgIkFCQ0RFRkdISUpLTE1OT1BRUlNUVSIsCisgICAgImJiNTdl
NmJkMDc4NjM5YTMxZTM3NjIwMzU2NTJkZGJhM2U1M2Q2YjIyNjM0YmEyZDAwMzNhYTFmNzQ5ODQw
MTciCisgIF0sCisgIFsKKyAgICAiQUJDREVGR0hJSktMTU5PUFFSU1RVViIsCisgICAgImJiNTdl
NmJkMDc4NjM5YTMxZTM3NjIwMzU2NTJkZGJhOWJlMTIxYTg1ZWM3Yjg3ZDE0ZDA2OTgyMWYyNDE4
MTciCisgIF0sCisgIFsKKyAgICAiQUJDREVGR0hJSktMTU5PUFFSU1RVVlciLAorICAgICJiYjU3
ZTZiZDA3ODYzOWEzMWUzNzYyMDM1NjUyZGRiYWViOTExMjZjNDY0OWZiZjI1NmQyNjk4YThiM2Nk
MTA4IgorICBdLAorICBbCisgICAgIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWCIsCisgICAgImJi
NTdlNmJkMDc4NjM5YTMxZTM3NjIwMzU2NTJkZGJhNWZkYTcwZjEwZDljMTkwNjkxYTU4YzgwMTQy
MjZiMDkiCisgIF0sCisgIFsKKyAgICAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWSIsCisgICAg
ImJiNTdlNmJkMDc4NjM5YTMxZTM3NjIwMzU2NTJkZGJhY2EyMmVhNjA2YjMzN2YwZTU0OWJkNmM4
MTM0MDI2YzIiCisgIF0sCisgIFsKKyAgICAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoiLAor
ICAgICJiYjU3ZTZiZDA3ODYzOWEzMWUzNzYyMDM1NjUyZGRiYWM1ODgzYWJkOWZmNDcwYWQ4ZDVh
ZWZlMDcyNjEzMWI4IgorICBdLAorICBbCisgICAgIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFla
QSIsCisgICAgImJiNTdlNmJkMDc4NjM5YTMxZTM3NjIwMzU2NTJkZGJhMGJhMTY4MGI3Y2E5Y2Ex
OGY5YmRjMzBhMjIxM2UxMzgiCisgIF0sCisgIFsKKyAgICAiQUJDREVGR0hJSktMTU5PUFFSU1RV
VldYWVpBQiIsCisgICAgImJiNTdlNmJkMDc4NjM5YTMxZTM3NjIwMzU2NTJkZGJhMzQ3OTVmMDhi
Njg4YWRkMmFjMjhkNTc5YzFlNGE3MzUiCisgIF0sCisgIFsKKyAgICAiQUJDREVGR0hJSktMTU5P
UFFSU1RVVldYWVpBQkMiLAorICAgICJiYjU3ZTZiZDA3ODYzOWEzMWUzNzYyMDM1NjUyZGRiYTVl
NjE3NGJiZDdkOTg0OGUxOWRhZGM3MzE2YTUxOTA1IgorICBdLAorICBbCisgICAgIkFCQ0RFRkdI
SUpLTE1OT1BRUlNUVVZXWFlaQUJDRCIsCisgICAgImJiNTdlNmJkMDc4NjM5YTMxZTM3NjIwMzU2
NTJkZGJhNzU4ODk3YzliODQ1ODRlZmFmN2JiYTI3ZTgwZTI5NzEiCisgIF0sCisgIFsKKyAgICAi
QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpBQkNERSIsCisgICAgImJiNTdlNmJkMDc4NjM5YTMx
ZTM3NjIwMzU2NTJkZGJhMjNhZWNmNWI1OTgxYzNhMGI5OTY3YzZkNWZhZjJmNDQiCisgIF0sCisg
IFsKKyAgICAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpBQkNERUYiLAorICAgICJiYjU3ZTZi
ZDA3ODYzOWEzMWUzNzYyMDM1NjUyZGRiYWNlN2M4MzY0Y2M4NGI1NzlkYmIxNjc2NWNiYTU4ZGU2
NTEyMzY5NGRkYzk1OGUwYzk0MzZmNjY4NzMzOGZjNmUiCisgIF0sCisgIFsKKyAgICAiQUJDREVG
R0hJSktMTU5PUFFSU1RVVldYWVpBQkNERUZHIiwKKyAgICAiYmI1N2U2YmQwNzg2MzlhMzFlMzc2
MjAzNTY1MmRkYmFjZTdjODM2NGNjODRiNTc5ZGJiMTY3NjVjYmE1OGRlNjU5NjUwYTIzN2NkOWEy
NzY0ZTliOTI3NDk4NDNmZDIyIgorICBdCitdOworCitQcm9taXNlLmFsbCh0ZXN0Q2FzZXMubWFw
KGZ1bmN0aW9uKHRlc3RDYXNlKXsKKyAgICB2YXIgZXhwZWN0ZWRQbGFpblRleHQgPSB0ZXN0Q2Fz
ZVswXTsKKyAgICB2YXIgY2lwaGVyVGV4dCA9IHRlc3RDYXNlWzFdOworICAgIHJldHVybiBjcnlw
dG8uc3VidGxlLmltcG9ydEtleSgicmF3IiwgcmF3S2V5LCAiYWVzLWNiYyIsIGV4dHJhY3RhYmxl
LCBbImRlY3J5cHQiXSkudGhlbihmdW5jdGlvbihrZXkpIHsKKyAgICAgICAgcmV0dXJuIGNyeXB0
by5zdWJ0bGUuZGVjcnlwdChhZXNDYmNQYXJhbXMsIGtleSwgaGV4U3RyaW5nVG9VaW50OEFycmF5
KGNpcGhlclRleHQpKTsKKyAgICB9KS50aGVuKGZ1bmN0aW9uKHBsYWluVGV4dCkgeworICAgICAg
ICByZXR1cm4geworICAgICAgICAgICAgcGxhaW5UZXh0OiBwbGFpblRleHQsCisgICAgICAgICAg
ICBjaXBoZXJUZXh0OiBjaXBoZXJUZXh0LAorICAgICAgICAgICAgZXhwZWN0ZWRQbGFpblRleHQ6
IGV4cGVjdGVkUGxhaW5UZXh0CisgICAgICAgIH07CisgICAgfSk7Cit9KSkudGhlbihmdW5jdGlv
bihyZXN1bHRzKSB7CisgICAgZm9yICh2YXIgcmVzdWx0IG9mIHJlc3VsdHMpIHsKKyAgICAgICAg
cGxhaW5UZXh0ID0gcmVzdWx0LnBsYWluVGV4dDsKKyAgICAgICAgY2lwaGVyVGV4dCA9IHJlc3Vs
dC5jaXBoZXJUZXh0OworICAgICAgICBleHBlY3RlZFBsYWluVGV4dCA9IHJlc3VsdC5leHBlY3Rl
ZFBsYWluVGV4dDsKKyAgICAgICAgZGVidWcoIkV4cGVjdGVkIHBsYWluIHRleHQ6ICIgKyBleHBl
Y3RlZFBsYWluVGV4dCk7CisgICAgICAgIHNob3VsZEJlKCJieXRlc1RvQVNDSUlTdHJpbmcocGxh
aW5UZXh0KSIsICJleHBlY3RlZFBsYWluVGV4dCIpOworICAgIH0KICAgICBmaW5pc2hKU1Rlc3Qo
KTsKIH0pOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL2Flcy1jYmMt
aW1wb3J0LWtleS1lbmNyeXB0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2NyeXB0by9zdWJ0
bGUvYWVzLWNiYy1pbXBvcnQta2V5LWVuY3J5cHQtZXhwZWN0ZWQudHh0CmluZGV4IDMyMmUxYWE5
Yzg1Li5iYWMzZDJlNGZmYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9h
ZXMtY2JjLWltcG9ydC1rZXktZW5jcnlwdC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
Y3J5cHRvL3N1YnRsZS9hZXMtY2JjLWltcG9ydC1rZXktZW5jcnlwdC1leHBlY3RlZC50eHQKQEAg
LTMsNiArMyw3MyBAQCBUZXN0IGVuY3J5cHRpbmcgdXNpbmcgQUVTLUNCQyB3aXRoIGFuIGltcG9y
dGVkIDEyOGJpdCBrZXkKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCitQbGFpbiB0ZXh0
OiAKK1BBU1MgYnl0ZXNUb0hleFN0cmluZyhjaXBoZXJUZXh0KSBpcyBleHBlY3RlZENpcGhlclRl
eHQKK1BsYWluIHRleHQ6IEEKK1BBU1MgYnl0ZXNUb0hleFN0cmluZyhjaXBoZXJUZXh0KSBpcyBl
eHBlY3RlZENpcGhlclRleHQKK1BsYWluIHRleHQ6IEFCCitQQVNTIGJ5dGVzVG9IZXhTdHJpbmco
Y2lwaGVyVGV4dCkgaXMgZXhwZWN0ZWRDaXBoZXJUZXh0CitQbGFpbiB0ZXh0OiBBQkMKK1BBU1Mg
Ynl0ZXNUb0hleFN0cmluZyhjaXBoZXJUZXh0KSBpcyBleHBlY3RlZENpcGhlclRleHQKK1BsYWlu
IHRleHQ6IEFCQ0QKK1BBU1MgYnl0ZXNUb0hleFN0cmluZyhjaXBoZXJUZXh0KSBpcyBleHBlY3Rl
ZENpcGhlclRleHQKK1BsYWluIHRleHQ6IEFCQ0RFCitQQVNTIGJ5dGVzVG9IZXhTdHJpbmcoY2lw
aGVyVGV4dCkgaXMgZXhwZWN0ZWRDaXBoZXJUZXh0CitQbGFpbiB0ZXh0OiBBQkNERUYKK1BBU1Mg
Ynl0ZXNUb0hleFN0cmluZyhjaXBoZXJUZXh0KSBpcyBleHBlY3RlZENpcGhlclRleHQKK1BsYWlu
IHRleHQ6IEFCQ0RFRkcKK1BBU1MgYnl0ZXNUb0hleFN0cmluZyhjaXBoZXJUZXh0KSBpcyBleHBl
Y3RlZENpcGhlclRleHQKK1BsYWluIHRleHQ6IEFCQ0RFRkdICitQQVNTIGJ5dGVzVG9IZXhTdHJp
bmcoY2lwaGVyVGV4dCkgaXMgZXhwZWN0ZWRDaXBoZXJUZXh0CitQbGFpbiB0ZXh0OiBBQkNERUZH
SEkKK1BBU1MgYnl0ZXNUb0hleFN0cmluZyhjaXBoZXJUZXh0KSBpcyBleHBlY3RlZENpcGhlclRl
eHQKK1BsYWluIHRleHQ6IEFCQ0RFRkdISUoKK1BBU1MgYnl0ZXNUb0hleFN0cmluZyhjaXBoZXJU
ZXh0KSBpcyBleHBlY3RlZENpcGhlclRleHQKK1BsYWluIHRleHQ6IEFCQ0RFRkdISUpLCitQQVNT
IGJ5dGVzVG9IZXhTdHJpbmcoY2lwaGVyVGV4dCkgaXMgZXhwZWN0ZWRDaXBoZXJUZXh0CitQbGFp
biB0ZXh0OiBBQkNERUZHSElKS0wKK1BBU1MgYnl0ZXNUb0hleFN0cmluZyhjaXBoZXJUZXh0KSBp
cyBleHBlY3RlZENpcGhlclRleHQKK1BsYWluIHRleHQ6IEFCQ0RFRkdISUpLTE0KK1BBU1MgYnl0
ZXNUb0hleFN0cmluZyhjaXBoZXJUZXh0KSBpcyBleHBlY3RlZENpcGhlclRleHQKK1BsYWluIHRl
eHQ6IEFCQ0RFRkdISUpLTE1OCitQQVNTIGJ5dGVzVG9IZXhTdHJpbmcoY2lwaGVyVGV4dCkgaXMg
ZXhwZWN0ZWRDaXBoZXJUZXh0CitQbGFpbiB0ZXh0OiBBQkNERUZHSElKS0xNTk8KK1BBU1MgYnl0
ZXNUb0hleFN0cmluZyhjaXBoZXJUZXh0KSBpcyBleHBlY3RlZENpcGhlclRleHQKK1BsYWluIHRl
eHQ6IEFCQ0RFRkdISUpLTE1OT1AKK1BBU1MgYnl0ZXNUb0hleFN0cmluZyhjaXBoZXJUZXh0KSBp
cyBleHBlY3RlZENpcGhlclRleHQKK1BsYWluIHRleHQ6IEFCQ0RFRkdISUpLTE1OT1BRCitQQVNT
IGJ5dGVzVG9IZXhTdHJpbmcoY2lwaGVyVGV4dCkgaXMgZXhwZWN0ZWRDaXBoZXJUZXh0CitQbGFp
biB0ZXh0OiBBQkNERUZHSElKS0xNTk9QUVIKK1BBU1MgYnl0ZXNUb0hleFN0cmluZyhjaXBoZXJU
ZXh0KSBpcyBleHBlY3RlZENpcGhlclRleHQKK1BsYWluIHRleHQ6IEFCQ0RFRkdISUpLTE1OT1BR
UlMKK1BBU1MgYnl0ZXNUb0hleFN0cmluZyhjaXBoZXJUZXh0KSBpcyBleHBlY3RlZENpcGhlclRl
eHQKK1BsYWluIHRleHQ6IEFCQ0RFRkdISUpLTE1OT1BRUlNUCitQQVNTIGJ5dGVzVG9IZXhTdHJp
bmcoY2lwaGVyVGV4dCkgaXMgZXhwZWN0ZWRDaXBoZXJUZXh0CitQbGFpbiB0ZXh0OiBBQkNERUZH
SElKS0xNTk9QUVJTVFUKK1BBU1MgYnl0ZXNUb0hleFN0cmluZyhjaXBoZXJUZXh0KSBpcyBleHBl
Y3RlZENpcGhlclRleHQKK1BsYWluIHRleHQ6IEFCQ0RFRkdISUpLTE1OT1BRUlNUVVYKK1BBU1Mg
Ynl0ZXNUb0hleFN0cmluZyhjaXBoZXJUZXh0KSBpcyBleHBlY3RlZENpcGhlclRleHQKK1BsYWlu
IHRleHQ6IEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXCitQQVNTIGJ5dGVzVG9IZXhTdHJpbmcoY2lw
aGVyVGV4dCkgaXMgZXhwZWN0ZWRDaXBoZXJUZXh0CitQbGFpbiB0ZXh0OiBBQkNERUZHSElKS0xN
Tk9QUVJTVFVWV1gKK1BBU1MgYnl0ZXNUb0hleFN0cmluZyhjaXBoZXJUZXh0KSBpcyBleHBlY3Rl
ZENpcGhlclRleHQKK1BsYWluIHRleHQ6IEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFkKK1BBU1Mg
Ynl0ZXNUb0hleFN0cmluZyhjaXBoZXJUZXh0KSBpcyBleHBlY3RlZENpcGhlclRleHQKK1BsYWlu
IHRleHQ6IEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaCitQQVNTIGJ5dGVzVG9IZXhTdHJpbmco
Y2lwaGVyVGV4dCkgaXMgZXhwZWN0ZWRDaXBoZXJUZXh0CitQbGFpbiB0ZXh0OiBBQkNERUZHSElK
S0xNTk9QUVJTVFVWV1hZWkEKK1BBU1MgYnl0ZXNUb0hleFN0cmluZyhjaXBoZXJUZXh0KSBpcyBl
eHBlY3RlZENpcGhlclRleHQKK1BsYWluIHRleHQ6IEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFla
QUIKK1BBU1MgYnl0ZXNUb0hleFN0cmluZyhjaXBoZXJUZXh0KSBpcyBleHBlY3RlZENpcGhlclRl
eHQKK1BsYWluIHRleHQ6IEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaQUJDCitQQVNTIGJ5dGVz
VG9IZXhTdHJpbmcoY2lwaGVyVGV4dCkgaXMgZXhwZWN0ZWRDaXBoZXJUZXh0CitQbGFpbiB0ZXh0
OiBBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWkFCQ0QKK1BBU1MgYnl0ZXNUb0hleFN0cmluZyhj
aXBoZXJUZXh0KSBpcyBleHBlY3RlZENpcGhlclRleHQKK1BsYWluIHRleHQ6IEFCQ0RFRkdISUpL
TE1OT1BRUlNUVVZXWFlaQUJDREUKK1BBU1MgYnl0ZXNUb0hleFN0cmluZyhjaXBoZXJUZXh0KSBp
cyBleHBlY3RlZENpcGhlclRleHQKK1BsYWluIHRleHQ6IEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZX
WFlaQUJDREVGCitQQVNTIGJ5dGVzVG9IZXhTdHJpbmcoY2lwaGVyVGV4dCkgaXMgZXhwZWN0ZWRD
aXBoZXJUZXh0CitQbGFpbiB0ZXh0OiBBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWkFCQ0RFRkcK
IFBBU1MgYnl0ZXNUb0hleFN0cmluZyhjaXBoZXJUZXh0KSBpcyBleHBlY3RlZENpcGhlclRleHQK
IFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvY3J5cHRvL3N1YnRsZS9hZXMtY2JjLWltcG9ydC1rZXktZW5jcnlwdC5odG1sIGIvTGF5b3V0
VGVzdHMvY3J5cHRvL3N1YnRsZS9hZXMtY2JjLWltcG9ydC1rZXktZW5jcnlwdC5odG1sCmluZGV4
IGY0YTE0ZTYyYmYxLi41OTVjYTNhYWZiYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvY3J5cHRv
L3N1YnRsZS9hZXMtY2JjLWltcG9ydC1rZXktZW5jcnlwdC5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2NyeXB0by9zdWJ0bGUvYWVzLWNiYy1pbXBvcnQta2V5LWVuY3J5cHQuaHRtbApAQCAtMTQsMjEg
KzE0LDE3NyBAQCBkZXNjcmlwdGlvbigiVGVzdCBlbmNyeXB0aW5nIHVzaW5nIEFFUy1DQkMgd2l0
aCBhbiBpbXBvcnRlZCAxMjhiaXQga2V5Iik7CiBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKIAogdmFy
IGV4dHJhY3RhYmxlID0gZmFsc2U7Ci12YXIgcGxhaW5UZXh0ID0gYXNjaWlUb1VpbnQ4QXJyYXko
IkhlbGxvLCBXb3JsZCEiKTsKKwogdmFyIGFlc0NiY1BhcmFtcyA9IHsKICAgICBuYW1lOiAiYWVz
LWNiYyIsCiAgICAgaXY6IGFzY2lpVG9VaW50OEFycmF5KCJqbk93OTlvT1pGTElFUE1yIiksCiB9
CiB2YXIgcmF3S2V5ID0gYXNjaWlUb1VpbnQ4QXJyYXkoImpuT3c5OW9PWkZMSUVQTXIiKTsKLXZh
ciBleHBlY3RlZENpcGhlclRleHQgPSAiMmZmYTQ2MTg3ODRkZmQ0MTRiMjJjNDBjNjMzMGQwMjIi
OwogCi1jcnlwdG8uc3VidGxlLmltcG9ydEtleSgicmF3IiwgcmF3S2V5LCAiYWVzLWNiYyIsIGV4
dHJhY3RhYmxlLCBbImVuY3J5cHQiXSkudGhlbihmdW5jdGlvbihrZXkpIHsKLSAgICByZXR1cm4g
Y3J5cHRvLnN1YnRsZS5lbmNyeXB0KGFlc0NiY1BhcmFtcywga2V5LCBwbGFpblRleHQpOwotfSku
dGhlbihmdW5jdGlvbihyZXN1bHQpIHsKLSAgICBjaXBoZXJUZXh0ID0gcmVzdWx0OworLy8gVGVz
dCAwIH4gMzMgYnl0ZXMgcGxhaW4gdGV4dCBkYXRhLgorLy8gSXQgY292ZXJzIHRoZSBib3VuZGFy
eSB2YWx1ZXMgd2hlcmUgdGhlIHBhZGRpbmcgc2l6ZSBhcmUgY2hhbmdlZCwgbmFtZWx5LCAwLCAx
LCAxNSwgMTYsIDE3LCAzMSwgMzIsIGFuZCAzMy4KKy8vIDE2IGNvbWVzIGZyb20gdGhlIEFFUy1D
QkMgYmxvY2sgc2l6ZSwgd2hpY2ggaXMgMTI4Yml0ID0gMTYgYnl0ZXMuCiAKLSAgICBzaG91bGRC
ZSgiYnl0ZXNUb0hleFN0cmluZyhjaXBoZXJUZXh0KSIsICJleHBlY3RlZENpcGhlclRleHQiKTsK
Ky8vIFBhaXIgb2YgcGxhaW4gdGV4dCBhbmQgZXhwZWN0ZWQgY2lwaGVyIHRleHQKK3ZhciB0ZXN0
Q2FzZXMgPSBbCisgIFsKKyAgICAiIiwKKyAgICAiNTQ2OTVmMmI0OWQyYzM1YjVmNDY3NWM1OTY2
OWM3ZDUiCisgIF0sCisgIFsKKyAgICAiQSIsCisgICAgIjdmMzIyNGRhNGIyMDdiZDNiNTVhM2Jh
NTVmOTVjOGRkIgorICBdLAorICBbCisgICAgIkFCIiwKKyAgICAiMDViN2I0Y2FhMjg4OTdmZjVm
YTBiOGNhYzk4MjEwNzAiCisgIF0sCisgIFsKKyAgICAiQUJDIiwKKyAgICAiYzVmY2Q4MmM5M2Nh
NzA2MzBlNzc4NzE0MDhjYjYwYTUiCisgIF0sCisgIFsKKyAgICAiQUJDRCIsCisgICAgIjhjNjhi
MGJhMjk1Mjc2MTg3N2YzMGUyNmViNDNlOThiIgorICBdLAorICBbCisgICAgIkFCQ0RFIiwKKyAg
ICAiNmU1ODQ1Y2UwODU4MDE0OTJlY2RiM2RhNDdlNTRlMGQiCisgIF0sCisgIFsKKyAgICAiQUJD
REVGIiwKKyAgICAiYTJiZjcwMTFmMDU2MDUwNGZkMmQzZjZmNGZhODUxNzkiCisgIF0sCisgIFsK
KyAgICAiQUJDREVGRyIsCisgICAgImJmYmUzNzE3ZDk3YjhlOGRiYjM2MmFhMzJhNWQ2NzE1Igor
ICBdLAorICBbCisgICAgIkFCQ0RFRkdIIiwKKyAgICAiYWM1NWRhZGY2ZDNkMWJlMWZlZGUwZTMz
ZTlkZTAyMWEiCisgIF0sCisgIFsKKyAgICAiQUJDREVGR0hJIiwKKyAgICAiZjVhZGZkNzBiNmE5
MDc0NDFhYTFlMWI4ZDAzMTM4YjgiCisgIF0sCisgIFsKKyAgICAiQUJDREVGR0hJSiIsCisgICAg
ImI0YTJkNjg4ZjNhOWJkMzA3ZWZlNjI2NDNkODBlYWQwIgorICBdLAorICBbCisgICAgIkFCQ0RF
RkdISUpLIiwKKyAgICAiZDVjY2U3NmE5NDE2YjNjMDBjNGQyZTBiYjI4NzkxMzQiCisgIF0sCisg
IFsKKyAgICAiQUJDREVGR0hJSktMIiwKKyAgICAiN2I4N2YyYjU1NDMzZDU5NWVkMDJjZDM0MTdj
NTEwYTQiCisgIF0sCisgIFsKKyAgICAiQUJDREVGR0hJSktMTSIsCisgICAgIjI5ZjVhZjE1N2Jk
YTc4ZmRkZTk1NTBhYWFkZmM0NjdkIgorICBdLAorICBbCisgICAgIkFCQ0RFRkdISUpLTE1OIiwK
KyAgICAiYmQ4NmZmM2I3ODBiNTZkNGZhZjk4YmQ3ZjgxOGRlNTkiCisgIF0sCisgIFsKKyAgICAi
QUJDREVGR0hJSktMTU5PIiwKKyAgICAiOGY3ZDRmZmQwODE1NWU2N2IyZjkzNmFhN2VlZGQ5MTgi
CisgIF0sCisgIFsKKyAgICAiQUJDREVGR0hJSktMTU5PUCIsCisgICAgImJiNTdlNmJkMDc4NjM5
YTMxZTM3NjIwMzU2NTJkZGJhOGI2NDE4NDBhMDgzZTMzMDI3YTBhZWEzMDVlOTVhNjQiCisgIF0s
CisgIFsKKyAgICAiQUJDREVGR0hJSktMTU5PUFEiLAorICAgICJiYjU3ZTZiZDA3ODYzOWEzMWUz
NzYyMDM1NjUyZGRiYWFkNzA1ZjdmZGEwNjFjNDQ4NmZiY2UyYjNhNDcwYjU5IgorICBdLAorICBb
CisgICAgIkFCQ0RFRkdISUpLTE1OT1BRUiIsCisgICAgImJiNTdlNmJkMDc4NjM5YTMxZTM3NjIw
MzU2NTJkZGJhZDVjMWRlNDFhYTBhNWQyZjAzZGQxMjllNDE5Yjk5YjkiCisgIF0sCisgIFsKKyAg
ICAiQUJDREVGR0hJSktMTU5PUFFSUyIsCisgICAgImJiNTdlNmJkMDc4NjM5YTMxZTM3NjIwMzU2
NTJkZGJhOWNhN2M2NWQyMTM3ZTBlNGUxYjc1MmQ3ZDVhNzYxOWEiCisgIF0sCisgIFsKKyAgICAi
QUJDREVGR0hJSktMTU5PUFFSU1QiLAorICAgICJiYjU3ZTZiZDA3ODYzOWEzMWUzNzYyMDM1NjUy
ZGRiYTk0NmNhNTA2M2FlMzBiN2IwNjhiN2EwZGRiNTczMTQzIgorICBdLAorICBbCisgICAgIkFC
Q0RFRkdISUpLTE1OT1BRUlNUVSIsCisgICAgImJiNTdlNmJkMDc4NjM5YTMxZTM3NjIwMzU2NTJk
ZGJhM2U1M2Q2YjIyNjM0YmEyZDAwMzNhYTFmNzQ5ODQwMTciCisgIF0sCisgIFsKKyAgICAiQUJD
REVGR0hJSktMTU5PUFFSU1RVViIsCisgICAgImJiNTdlNmJkMDc4NjM5YTMxZTM3NjIwMzU2NTJk
ZGJhOWJlMTIxYTg1ZWM3Yjg3ZDE0ZDA2OTgyMWYyNDE4MTciCisgIF0sCisgIFsKKyAgICAiQUJD
REVGR0hJSktMTU5PUFFSU1RVVlciLAorICAgICJiYjU3ZTZiZDA3ODYzOWEzMWUzNzYyMDM1NjUy
ZGRiYWViOTExMjZjNDY0OWZiZjI1NmQyNjk4YThiM2NkMTA4IgorICBdLAorICBbCisgICAgIkFC
Q0RFRkdISUpLTE1OT1BRUlNUVVZXWCIsCisgICAgImJiNTdlNmJkMDc4NjM5YTMxZTM3NjIwMzU2
NTJkZGJhNWZkYTcwZjEwZDljMTkwNjkxYTU4YzgwMTQyMjZiMDkiCisgIF0sCisgIFsKKyAgICAi
QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWSIsCisgICAgImJiNTdlNmJkMDc4NjM5YTMxZTM3NjIw
MzU2NTJkZGJhY2EyMmVhNjA2YjMzN2YwZTU0OWJkNmM4MTM0MDI2YzIiCisgIF0sCisgIFsKKyAg
ICAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoiLAorICAgICJiYjU3ZTZiZDA3ODYzOWEzMWUz
NzYyMDM1NjUyZGRiYWM1ODgzYWJkOWZmNDcwYWQ4ZDVhZWZlMDcyNjEzMWI4IgorICBdLAorICBb
CisgICAgIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaQSIsCisgICAgImJiNTdlNmJkMDc4NjM5
YTMxZTM3NjIwMzU2NTJkZGJhMGJhMTY4MGI3Y2E5Y2ExOGY5YmRjMzBhMjIxM2UxMzgiCisgIF0s
CisgIFsKKyAgICAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpBQiIsCisgICAgImJiNTdlNmJk
MDc4NjM5YTMxZTM3NjIwMzU2NTJkZGJhMzQ3OTVmMDhiNjg4YWRkMmFjMjhkNTc5YzFlNGE3MzUi
CisgIF0sCisgIFsKKyAgICAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpBQkMiLAorICAgICJi
YjU3ZTZiZDA3ODYzOWEzMWUzNzYyMDM1NjUyZGRiYTVlNjE3NGJiZDdkOTg0OGUxOWRhZGM3MzE2
YTUxOTA1IgorICBdLAorICBbCisgICAgIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaQUJDRCIs
CisgICAgImJiNTdlNmJkMDc4NjM5YTMxZTM3NjIwMzU2NTJkZGJhNzU4ODk3YzliODQ1ODRlZmFm
N2JiYTI3ZTgwZTI5NzEiCisgIF0sCisgIFsKKyAgICAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldY
WVpBQkNERSIsCisgICAgImJiNTdlNmJkMDc4NjM5YTMxZTM3NjIwMzU2NTJkZGJhMjNhZWNmNWI1
OTgxYzNhMGI5OTY3YzZkNWZhZjJmNDQiCisgIF0sCisgIFsKKyAgICAiQUJDREVGR0hJSktMTU5P
UFFSU1RVVldYWVpBQkNERUYiLAorICAgICJiYjU3ZTZiZDA3ODYzOWEzMWUzNzYyMDM1NjUyZGRi
YWNlN2M4MzY0Y2M4NGI1NzlkYmIxNjc2NWNiYTU4ZGU2NTEyMzY5NGRkYzk1OGUwYzk0MzZmNjY4
NzMzOGZjNmUiCisgIF0sCisgIFsKKyAgICAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpBQkNE
RUZHIiwKKyAgICAiYmI1N2U2YmQwNzg2MzlhMzFlMzc2MjAzNTY1MmRkYmFjZTdjODM2NGNjODRi
NTc5ZGJiMTY3NjVjYmE1OGRlNjU5NjUwYTIzN2NkOWEyNzY0ZTliOTI3NDk4NDNmZDIyIgorICBd
CitdOwogCitQcm9taXNlLmFsbCh0ZXN0Q2FzZXMubWFwKGZ1bmN0aW9uKHRlc3RDYXNlKXsKKyAg
ICB2YXIgcGxhaW5UZXh0ID0gdGVzdENhc2VbMF07CisgICAgdmFyIGV4cGVjdGVkQ2lwaGVyVGV4
dCA9IHRlc3RDYXNlWzFdOworICAgIHJldHVybiBjcnlwdG8uc3VidGxlLmltcG9ydEtleSgicmF3
IiwgcmF3S2V5LCAiYWVzLWNiYyIsIGV4dHJhY3RhYmxlLCBbImVuY3J5cHQiXSkudGhlbihmdW5j
dGlvbihrZXkpIHsKKyAgICAgICAgcmV0dXJuIGNyeXB0by5zdWJ0bGUuZW5jcnlwdChhZXNDYmNQ
YXJhbXMsIGtleSwgYXNjaWlUb1VpbnQ4QXJyYXkocGxhaW5UZXh0KSk7CisgICAgfSkudGhlbihm
dW5jdGlvbihjaXBoZXJUZXh0KSB7CisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICBwbGFp
blRleHQ6IHBsYWluVGV4dCwKKyAgICAgICAgICAgIGNpcGhlclRleHQ6IGNpcGhlclRleHQsCisg
ICAgICAgICAgICBleHBlY3RlZENpcGhlclRleHQ6IGV4cGVjdGVkQ2lwaGVyVGV4dAorICAgICAg
ICB9OworICAgIH0pOworfSkpLnRoZW4oZnVuY3Rpb24ocmVzdWx0cykgeworICAgIGZvciAodmFy
IHJlc3VsdCBvZiByZXN1bHRzKSB7CisgICAgICAgIHBsYWluVGV4dCA9IHJlc3VsdC5wbGFpblRl
eHQ7CisgICAgICAgIGNpcGhlclRleHQgPSByZXN1bHQuY2lwaGVyVGV4dDsKKyAgICAgICAgZXhw
ZWN0ZWRDaXBoZXJUZXh0ID0gcmVzdWx0LmV4cGVjdGVkQ2lwaGVyVGV4dDsKKyAgICAgICAgZGVi
dWcoIlBsYWluIHRleHQ6ICIgKyBwbGFpblRleHQpOworICAgICAgICBzaG91bGRCZSgiYnl0ZXNU
b0hleFN0cmluZyhjaXBoZXJUZXh0KSIsICJleHBlY3RlZENpcGhlclRleHQiKTsKKyAgICB9CiAg
ICAgZmluaXNoSlNUZXN0KCk7CiB9KTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>