<?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>226228</bug_id>
          
          <creation_ts>2021-05-25 11:56:18 -0700</creation_ts>
          <short_desc>Introduce a shared IDB serialization thread</short_desc>
          <delta_ts>2021-06-02 21:57:55 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sihui Liu">sihui_liu</reporter>
          <assigned_to name="Sihui Liu">sihui_liu</assigned_to>
          <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>jsbell</cc>
    
    <cc>mark.lam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1763594</commentid>
    <comment_count>0</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-05-25 11:56:18 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763620</commentid>
    <comment_count>1</comment_count>
      <attachid>429677</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-05-25 12:34:25 -0700</bug_when>
    <thetext>Created attachment 429677
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763696</commentid>
    <comment_count>2</comment_count>
      <attachid>429697</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-05-25 15:01:08 -0700</bug_when>
    <thetext>Created attachment 429697
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763712</commentid>
    <comment_count>3</comment_count>
      <attachid>429701</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-05-25 15:37:07 -0700</bug_when>
    <thetext>Created attachment 429701
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763728</commentid>
    <comment_count>4</comment_count>
      <attachid>429705</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-05-25 16:10:02 -0700</bug_when>
    <thetext>Created attachment 429705
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763897</commentid>
    <comment_count>5</comment_count>
      <attachid>429705</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-26 07:52:33 -0700</bug_when>
    <thetext>Comment on attachment 429705
Patch

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

We may want to add threading assertions to the serialization / deserialization functions to make sure they are called on the expected thread?

&gt; Source/WebCore/Modules/indexeddb/server/IDBSerialization.cpp:428
&gt; +    IDBSerializationContext()

Please make constructor private and add a create() factory function, like we do for all RefCounted classes.

Or maybe even better, don&apos;t subclass RefCounted and use a stack object? It is unclear why this is RefCounted based on how it is used currently.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765699</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-01 11:57:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/78725516&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766272</commentid>
    <comment_count>7</comment_count>
      <attachid>430442</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-06-02 20:44:16 -0700</bug_when>
    <thetext>Created attachment 430442
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766279</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-02 21:57:52 -0700</bug_when>
    <thetext>Committed r278393 (238418@main): &lt;https://commits.webkit.org/238418@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 430442.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429677</attachid>
            <date>2021-05-25 12:34:25 -0700</date>
            <delta_ts>2021-05-25 15:01:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226228-20210525123424.patch</filename>
            <type>text/plain</type>
            <size>30640</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3OTUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjk0N2MwMTU3MDdjM2E0
MDIxNzliNGVmYmRkMDE3YjlhYTM0Y2Q0Yy4uOWI5NmFlZjNlMGVmN2UwYTllNjk5MGQwNTk1YmFj
MDE2Y2MyOTYwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIxLTA1LTI1ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjZSBhIHNoYXJl
ZCBJREIgc2VyaWFsaXphdGlvbiB0aHJlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyNjIyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEN1cnJlbnRseSBlYWNoIFdlYklEQlNlcnZlciBoYXMgaXRzIG93
biB0aHJlYWQsIGFuZCBkb2VzIHNlcmlhbGl6YXRpb24vZGVzZXJpYWxpemF0aW9uIG9uIHRoYXQg
dGhyZWFkLiBUbworICAgICAgICBwcmVwYXJlIGZvciBtYWtpbmcgV2ViSURCU2VydmVyIHVzZSBX
b3JrUXVldWUsIGxpa2UgdGhlIG90aGVyIHN0b3JhZ2UgbWFuYWdlciBjbGFzc2VzLCBsZXQncyBj
cmVhdGUgYSBzaGFyZWQKKyAgICAgICAgdGhyZWFkIGZvciBoYW5kbGluZyBhbGwgc2VyaWFsaXph
dGlvbi9kZXNlcmlhbGl6YXRpb24gb3BlcmF0aW9ucywgd2hpY2ggY2Fubm90IGJlIGRvbmUgb24g
V29ya1F1ZXVlIGFzIFZNIG5lZWRzIAorICAgICAgICB0byBhY2Nlc3MgdGhyZWFkLXNwZWNpZmlj
IGRhdGEuIE5vdyBJREIgdGFza3Mgd2lsbCBpbnZva2UgY2FsbE9uSURCU2VyaWFsaXphdGlvblRo
cmVhZEFuZFdhaXQgdG8gcGVyZm9ybSAKKyAgICAgICAgc2VyaWFsaXphdGlvbi9kZXNlcmlhbGl6
YXRpb24gb3BlcmF0aW9ucyBzeW5jaHJvbm91c2x5LgorCisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQkJhY2tpbmdTdG9yZS5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNl
cmlhbGl6YXRpb25Db250ZXh0OjpJREJTZXJpYWxpemF0aW9uQ29udGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJpYWxpemF0aW9uQ29udGV4dDo6fklEQlNlcmlhbGl6YXRpb25Db250ZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcmlhbGl6YXRpb25Db250ZXh0OjpnbG9iYWxPYmpl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VyaWFsaXphdGlvbkNvbnRleHQ6OmluaXRpYWxp
emVWTSk6CisgICAgICAgIChXZWJDb3JlOjpjYWxsT25JREJTZXJpYWxpemF0aW9uVGhyZWFkQW5k
V2FpdCk6IENyZWF0ZSBhIElEQlNlcmlhbGl6YXRpb24gdGhyZWFkIGlmIG5vdCBleGlzdHMgYW5k
IGRpc3BhdGNoIGEgCisgICAgICAgIHN5bmNocm9ub3VzIHRhc2sgdG8gaXQuCisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaDoKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbkNvbnRleHQuY3BwOiBSZW1v
dmVkLiBNb3ZlZCB0byBJREJTZXJpYWxpemF0aW9uLmNwcCBhcyAKKyAgICAgICAgSURCU2VyaWFs
aXphdGlvbkNvbnRleHQgaXMgb25seSB1c2VkIGJ5IElEQlNlcmlhbGl6YXRpb24gdGhyZWFkIG5v
dy4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbkNv
bnRleHQuaDogUmVtb3ZlZC4gRGl0dG8uCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2
ZXI6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6TWVtb3J5SURCQmFja2luZ1N0b3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5SURCQmFja2luZ1N0b3JlOjpzZXJpYWxpemF0
aW9uQ29udGV4dCk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9NZW1vcnlPYmplY3RTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
Ok1lbW9yeU9iamVjdFN0b3JlOjpNZW1vcnlPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6Ok1lbW9yeU9iamVjdFN0b3JlOjphZGRSZWNvcmQpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpNZW1vcnlPYmplY3RTdG9yZTo6cG9wdWxhdGVJbmRleFdpdGhFeGlz
dGluZ1JlY29yZHMpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlP
YmplY3RTdG9yZS5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJ
REJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dXBkYXRlT25lSW5kZXhGb3JBZGRS
ZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3Rv
cmU6OnNlcmlhbGl6YXRpb25Db250ZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmg6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OnB1dE9yQWRkKToKKyAgICAgICAgKiBT
b3VyY2VzLnR4dDoKKwogMjAyMS0wNS0yNCAgVGltIE5ndXllbiAgPG50aW1AYXBwbGUuY29tPgog
CiAgICAgICAgIENsZWFuIHVwIGhhbmRsaW5nIG9mIGAtd2Via2l0LWlubGluZS1mbGV4YC9gLXdl
YmtpdC1mbGV4YCBDU1MgZGlzcGxheSB2YWx1ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJCYWNraW5nU3RvcmUuaAppbmRleCBlNDVk
OGFjZjRjMTU3MjlhMWIzYzE1YzM0NDBhZWRlMzg4ZmMyOTdhLi4wNmM2NDZkMzNmN2ZlZjhkOTEx
NGJiYTY0ZTc3Y2NhMDEzNjY0NTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkJhY2tpbmdTdG9yZS5oCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU1LDggKzU1LDYgQEAg
ZW51bSBjbGFzcyBJbmRleFJlY29yZFR5cGUgOiBib29sOwogCiBuYW1lc3BhY2UgSURCU2VydmVy
IHsKIAotY2xhc3MgSURCU2VyaWFsaXphdGlvbkNvbnRleHQ7Ci0KIGNsYXNzIElEQkJhY2tpbmdT
dG9yZSB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SURCQmFja2luZ1N0b3JlKCkgeyBSRUxFQVNF
X0FTU0VSVCghaXNNYWluVGhyZWFkKCkpOyB9CkBAIC04OCw4ICs4Niw2IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIElEQkVycm9yIG9wZW5DdXJzb3IoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVy
JiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQkN1cnNvckluZm8mLCBJREJHZXRSZXN1
bHQmIG91dFJlc3VsdCkgPSAwOwogICAgIHZpcnR1YWwgSURCRXJyb3IgaXRlcmF0ZUN1cnNvcihj
b25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3Qg
SURCUmVzb3VyY2VJZGVudGlmaWVyJiBjdXJzb3JJZGVudGlmaWVyLCBjb25zdCBJREJJdGVyYXRl
Q3Vyc29yRGF0YSYsIElEQkdldFJlc3VsdCYgb3V0UmVzdWx0KSA9IDA7CiAKLSAgICB2aXJ0dWFs
IElEQlNlcmlhbGl6YXRpb25Db250ZXh0JiBzZXJpYWxpemF0aW9uQ29udGV4dCgpID0gMDsKLQog
ICAgIHZpcnR1YWwgSURCT2JqZWN0U3RvcmVJbmZvKiBpbmZvRm9yT2JqZWN0U3RvcmUodWludDY0
X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUJh
Y2tpbmdTdG9yZSgpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCmluZGV4IDlmMDY0ZDky
ODA3YjJlMDk3M2E4ODgyOWFjYjBhY2ZhMWYzNWU5NGUuLjc1Yzc0YTk3NGEyMzkzMzRhODQ1ZDJj
YjNlNjE0ZjI3NjUzN2ZkYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsNyAr
MjgsMTMgQEAKIAogI2luY2x1ZGUgIklEQktleURhdGEuaCIKICNpbmNsdWRlICJJREJLZXlQYXRo
LmgiCisjaW5jbHVkZSAiSlNJREJTZXJpYWxpemF0aW9uR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiS2V5ZWRDb2RpbmcuaCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCisjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvU3Ryb25nSW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi9BdXRv
ZHJhaW5lZFBvb2wuaD4KKyNpbmNsdWRlIDx3dGYvTWVzc2FnZVF1ZXVlLmg+CisjaW5jbHVkZSA8
d3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+CiAKICNpZiBVU0UoR0xJQikKICNpbmNsdWRl
IDxnbGliLmg+CkBAIC00MTcsNCArNDIzLDc0IEBAIGJvb2wgZGVzZXJpYWxpemVJREJLZXlEYXRh
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplLCBJREJLZXlEYXRhJiByZXN1bHQpCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCitjbGFzcyBJREJTZXJpYWxpemF0aW9uQ29udGV4dCA6IHB1
YmxpYyBSZWZDb3VudGVkPElEQlNlcmlhbGl6YXRpb25Db250ZXh0PiB7CitwdWJsaWM6CisgICAg
SURCU2VyaWFsaXphdGlvbkNvbnRleHQoKQorICAgICAgICA6IG1fdGhyZWFkKFRocmVhZDo6Y3Vy
cmVudCgpKQorICAgIHsKKyAgICB9CisKKyAgICB+SURCU2VyaWFsaXphdGlvbkNvbnRleHQoKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKCZtX3RocmVhZCA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwor
ICAgICAgICBpZiAoIW1fdm0pCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgSlNDOjpK
U0xvY2tIb2xkZXIgbG9jaygqbV92bSk7CisgICAgICAgIG1fZ2xvYmFsT2JqZWN0LmNsZWFyKCk7
CisgICAgICAgIG1fdm0gPSBudWxscHRyOworICAgIH0KKworICAgIEpTQzo6SlNHbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdCgpCisgICAgeworICAgICAgICBBU1NFUlQoJm1fdGhyZWFkID09ICZU
aHJlYWQ6OmN1cnJlbnQoKSk7CisKKyAgICAgICAgaW5pdGlhbGl6ZVZNKCk7CisgICAgICAgIHJl
dHVybiAqbV9nbG9iYWxPYmplY3QuZ2V0KCk7CisgICAgfQorCitwcml2YXRlOgorICAgIHZvaWQg
aW5pdGlhbGl6ZVZNKCkKKyAgICB7CisgICAgICAgIGlmIChtX3ZtKQorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIEFTU0VSVCghbV9nbG9iYWxPYmplY3QpOworICAgICAgICBtX3ZtID0g
SlNDOjpWTTo6Y3JlYXRlKCk7CisgICAgICAgIG1fdm0tPmhlYXAuYWNxdWlyZUFjY2VzcygpOwor
ICAgICAgICBKU1ZNQ2xpZW50RGF0YTo6aW5pdE5vcm1hbFdvcmxkKG1fdm0uZ2V0KCksIFdvcmtl
clRocmVhZFR5cGU6OldvcmtsZXQpOworCisgICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tl
cihtX3ZtLmdldCgpKTsKKyAgICAgICAgbV9nbG9iYWxPYmplY3Quc2V0KCptX3ZtLCBKU0lEQlNl
cmlhbGl6YXRpb25HbG9iYWxPYmplY3Q6OmNyZWF0ZSgqbV92bSwgSlNJREJTZXJpYWxpemF0aW9u
R2xvYmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoKm1fdm0sIEpTQzo6anNOdWxsKCkpLCBub3Jt
YWxXb3JsZCgqbV92bSkpKTsKKyAgICB9CisKKyAgICBSZWZQdHI8SlNDOjpWTT4gbV92bTsKKyAg
ICBKU0M6OlN0cm9uZzxKU0lEQlNlcmlhbGl6YXRpb25HbG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2Jq
ZWN0OworICAgIFRocmVhZCYgbV90aHJlYWQ7Cit9OworCit2b2lkIGNhbGxPbklEQlNlcmlhbGl6
YXRpb25UaHJlYWRBbmRXYWl0KEZ1bmN0aW9uPHZvaWQoSlNDOjpKU0dsb2JhbE9iamVjdCYpPiYm
IGZ1bmN0aW9uKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxNZXNzYWdlUXVldWU8RnVu
Y3Rpb248dm9pZChKU0M6OkpTR2xvYmFsT2JqZWN0Jik+Pj4gcXVldWU7CisgICAgc3RhdGljIHN0
ZDo6b25jZV9mbGFnIGNyZWF0ZVRocmVhZDsKKworICAgIHN0ZDo6Y2FsbF9vbmNlKGNyZWF0ZVRo
cmVhZCwgW10geworICAgICAgICBUaHJlYWQ6OmNyZWF0ZSgiSW5kZXhlZERCIFNlcmlhbGl6YXRp
b24iLCBbXSB7CisgICAgICAgICAgICBhdXRvIHNlcmlhbGl6YXRpb25Db250ZXh0ID0gYWRvcHRS
ZWYoKm5ldyBJREJTZXJpYWxpemF0aW9uQ29udGV4dCgpKTsKKyAgICAgICAgICAgIHdoaWxlIChh
dXRvIGZ1bmN0aW9uID0gcXVldWUtPndhaXRGb3JNZXNzYWdlKCkpIHsKKyAgICAgICAgICAgICAg
ICBBdXRvZHJhaW5lZFBvb2wgcG9vbDsKKyAgICAgICAgICAgICAgICAoKmZ1bmN0aW9uKShzZXJp
YWxpemF0aW9uQ29udGV4dC0+Z2xvYmFsT2JqZWN0KCkpOworICAgICAgICAgICAgfQorICAgICAg
ICB9KTsKKyAgICB9KTsKKworICAgIEJpbmFyeVNlbWFwaG9yZSBzZW1hcGhvcmU7CisgICAgYXV0
byBuZXdGdW50aW9uID0gWyZzZW1hcGhvcmUsIGZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbild
KEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkgeworICAgICAgICBmdW5jdGlvbihn
bG9iYWxPYmplY3QpOworICAgICAgICBzZW1hcGhvcmUuc2lnbmFsKCk7CisgICAgfTsKKyAgICBx
dWV1ZS0+YXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZChKU0M6OkpTR2xvYmFsT2JqZWN0
Jik+PihXVEZNb3ZlKG5ld0Z1bnRpb24pKSk7CisgICAgc2VtYXBob3JlLndhaXQoKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmgKaW5kZXggZjVmNjc0NDJl
MzY3OGEyMGFlYjU4ZmVhYzlhYzM5Zjc4YzVlMWQ3OS4uYTJkM2E5ODdlOTNjNmFhYjQ0ZGE0ZjQ1
Y2VjMDQzNTVkNDFiYzRkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDQgKzM4LDYg
QEAgYm9vbCBkZXNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXpl
X3QgYnVmZmVyU2l6ZSwgT3B0aW9uYWw8SUQKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6
ZUlEQktleURhdGEoY29uc3QgSURCS2V5RGF0YSYpOwogYm9vbCBkZXNlcmlhbGl6ZUlEQktleURh
dGEoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgSURCS2V5RGF0YSYp
OwogCit2b2lkIGNhbGxPbklEQlNlcmlhbGl6YXRpb25UaHJlYWRBbmRXYWl0KEZ1bmN0aW9uPHZv
aWQoSlNDOjpKU0dsb2JhbE9iamVjdCYpPiYmKTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNl
cmlhbGl6YXRpb25Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9JREJTZXJpYWxpemF0aW9uQ29udGV4dC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDUzNzZkZDkwZWY4Y2IyMzY2ZjM1NmEwZDY1ZmU4YTNjZjdjYTc5N2YuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb25Db250ZXh0LmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDEwOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIklEQlNlcmlhbGl6YXRpb25Db250ZXh0LmgiCi0KLSNpbmNsdWRlICJE
T01XcmFwcGVyV29ybGQuaCIKLSNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCi0jaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPYmplY3RJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8d3RmL0No
ZWNrZWRMb2NrLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIElEQlNlcnZl
ciB7Ci0KLXN0YXRpYyBDaGVja2VkTG9jayBzZXJpYWxpemF0aW9uQ29udGV4dE1hcExvY2s7Ci0K
LXN0YXRpYyBIYXNoTWFwPFRocmVhZCosIElEQlNlcmlhbGl6YXRpb25Db250ZXh0Kj4mIHNlcmlh
bGl6YXRpb25Db250ZXh0TWFwKCkgV1RGX1JFUVVJUkVTX0xPQ0soc2VyaWFsaXphdGlvbkNvbnRl
eHRNYXBMb2NrKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFRocmVhZCos
IElEQlNlcmlhbGl6YXRpb25Db250ZXh0Kj4+IG1hcDsKLSAgICByZXR1cm4gbWFwOwotfQotCi1S
ZWY8SURCU2VyaWFsaXphdGlvbkNvbnRleHQ+IElEQlNlcmlhbGl6YXRpb25Db250ZXh0OjpnZXRP
ckNyZWF0ZUZvckN1cnJlbnRUaHJlYWQoKQotewotICAgIGF1dG8mIHRocmVhZCA9IFRocmVhZDo6
Y3VycmVudCgpOwotICAgIExvY2tlciBsb2NrZXIgeyBzZXJpYWxpemF0aW9uQ29udGV4dE1hcExv
Y2sgfTsKLSAgICBhdXRvW2l0ZXIsIGlzTmV3RW50cnldID0gc2VyaWFsaXphdGlvbkNvbnRleHRN
YXAoKS5hZGQoJnRocmVhZCwgbnVsbHB0cik7Ci0gICAgaWYgKGlzTmV3RW50cnkpIHsKLSAgICAg
ICAgUmVmPElEQlNlcmlhbGl6YXRpb25Db250ZXh0PiBwcm90ZWN0ZWRDb250ZXh0ID0gYWRvcHRS
ZWYoKm5ldyBJREJTZXJpYWxpemF0aW9uQ29udGV4dCh0aHJlYWQpKTsKLSAgICAgICAgaXRlci0+
dmFsdWUgPSBwcm90ZWN0ZWRDb250ZXh0LnB0cigpOwotICAgICAgICByZXR1cm4gcHJvdGVjdGVk
Q29udGV4dDsKLSAgICB9Ci0KLSAgICByZXR1cm4gKml0ZXItPnZhbHVlOwotfQotCi1JREJTZXJp
YWxpemF0aW9uQ29udGV4dDo6fklEQlNlcmlhbGl6YXRpb25Db250ZXh0KCkKLXsKLSAgICBMb2Nr
ZXIgbG9ja2VyIHsgc2VyaWFsaXphdGlvbkNvbnRleHRNYXBMb2NrIH07Ci0gICAgQVNTRVJUKHRo
aXMgPT0gc2VyaWFsaXphdGlvbkNvbnRleHRNYXAoKS5nZXQoJm1fdGhyZWFkKSk7Ci0KLSAgICBp
ZiAobV92bSkgewotICAgICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKCptX3ZtKTsKLSAgICAg
ICAgbV9nbG9iYWxPYmplY3QuY2xlYXIoKTsKLSAgICAgICAgbV92bSA9IG51bGxwdHI7Ci0gICAg
fQotICAgIHNlcmlhbGl6YXRpb25Db250ZXh0TWFwKCkucmVtb3ZlKCZtX3RocmVhZCk7Ci19Ci0K
LXZvaWQgSURCU2VyaWFsaXphdGlvbkNvbnRleHQ6OmluaXRpYWxpemVWTSgpCi17Ci0gICAgaWYg
KG1fdm0pCi0gICAgICAgIHJldHVybjsKLQotICAgIEFTU0VSVCghbV9nbG9iYWxPYmplY3QpOwot
ICAgIG1fdm0gPSBKU0M6OlZNOjpjcmVhdGUoKTsKLSAgICBtX3ZtLT5oZWFwLmFjcXVpcmVBY2Nl
c3MoKTsKLSAgICBKU1ZNQ2xpZW50RGF0YTo6aW5pdE5vcm1hbFdvcmxkKG1fdm0uZ2V0KCksIFdv
cmtlclRocmVhZFR5cGU6OldvcmtsZXQpOwotCi0gICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2Vy
KG1fdm0uZ2V0KCkpOwotICAgIG1fZ2xvYmFsT2JqZWN0LnNldCgqbV92bSwgSlNJREJTZXJpYWxp
emF0aW9uR2xvYmFsT2JqZWN0OjpjcmVhdGUoKm1fdm0sIEpTSURCU2VyaWFsaXphdGlvbkdsb2Jh
bE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKCptX3ZtLCBKU0M6OmpzTnVsbCgpKSwgbm9ybWFsV29y
bGQoKm1fdm0pKSk7Ci19Ci0KLUpTQzo6Vk0mIElEQlNlcmlhbGl6YXRpb25Db250ZXh0Ojp2bSgp
Ci17Ci0gICAgQVNTRVJUKCZtX3RocmVhZCA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwotCi0gICAg
aW5pdGlhbGl6ZVZNKCk7Ci0gICAgcmV0dXJuICptX3ZtOwotfQotCi1KU0M6OkpTR2xvYmFsT2Jq
ZWN0JiBJREJTZXJpYWxpemF0aW9uQ29udGV4dDo6Z2xvYmFsT2JqZWN0KCkKLXsKLSAgICBBU1NF
UlQoJm1fdGhyZWFkID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7Ci0KLSAgICBpbml0aWFsaXplVk0o
KTsKLSAgICByZXR1cm4gKm1fZ2xvYmFsT2JqZWN0LmdldCgpOwotfQotCi1JREJTZXJpYWxpemF0
aW9uQ29udGV4dDo6SURCU2VyaWFsaXphdGlvbkNvbnRleHQoVGhyZWFkJiB0aHJlYWQpCi0gICAg
OiBtX3RocmVhZCh0aHJlYWQpCi17Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIElEQlNlcnZlcgotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb25Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbkNvbnRleHQuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWZkZWMwMDcxZTgwODllOTRjNjc1M2I2ZjUwZTdj
MTA5Yzc2ODliMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlv
bkNvbnRleHQuaAorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
cHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkpTSURCU2VyaWFsaXphdGlvbkdsb2JhbE9iamVjdC5o
IgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZ0lubGluZXMuaD4KLSNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9TdHJ1Y3R1cmVJbmxpbmVzLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotY2xh
c3MgQ2FsbEZyYW1lOwotY2xhc3MgVk07Ci19Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFt
ZXNwYWNlIElEQlNlcnZlciB7Ci0KLWNsYXNzIElEQlNlcmlhbGl6YXRpb25Db250ZXh0IDogcHVi
bGljIFJlZkNvdW50ZWQ8SURCU2VyaWFsaXphdGlvbkNvbnRleHQ+IHsKLXB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPElEQlNlcmlhbGl6YXRpb25Db250ZXh0PiBnZXRPckNyZWF0ZUZvckN1cnJlbnRU
aHJlYWQoKTsKLQotICAgIH5JREJTZXJpYWxpemF0aW9uQ29udGV4dCgpOwotCi0gICAgSlNDOjpW
TSYgdm0oKTsKLSAgICBKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QoKTsKLQotcHJp
dmF0ZToKLSAgICBleHBsaWNpdCBJREJTZXJpYWxpemF0aW9uQ29udGV4dChUaHJlYWQmKTsKLSAg
ICB2b2lkIGluaXRpYWxpemVWTSgpOwotCi0gICAgUmVmUHRyPEpTQzo6Vk0+IG1fdm07Ci0gICAg
SlNDOjpTdHJvbmc8SlNJREJTZXJpYWxpemF0aW9uR2xvYmFsT2JqZWN0PiBtX2dsb2JhbE9iamVj
dDsKLSAgICBUaHJlYWQmIG1fdGhyZWFkOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgSURCU2VydmVy
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3Bw
CmluZGV4IDI0ZWIwZTNmYmMyODE1ZWY3NTQ4ZjA3OGFlZDM1YjU0NjBhZmM4YmQuLmI5ODBhMzFj
NWNmNzA3OWEyM2M1YTJjY2JlYjkzMGJlM2ZkZGY4NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNr
aW5nU3RvcmUuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJJREJJbmRleEluZm8uaCIKICNp
bmNsdWRlICJJREJJdGVyYXRlQ3Vyc29yRGF0YS5oIgogI2luY2x1ZGUgIklEQktleVJhbmdlRGF0
YS5oIgotI2luY2x1ZGUgIklEQlNlcmlhbGl6YXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgogI2luY2x1ZGUgIk1lbW9yeUluZGV4Q3Vyc29yLmgiCiAjaW5jbHVkZSAiTWVtb3J5
T2JqZWN0U3RvcmUuaCIKQEAgLTQ4LDcgKzQ3LDYgQEAgY29uc3RleHByIHVpbnQ2NF90IG1heEdl
bmVyYXRlZEtleVZhbHVlID0gMHgyMDAwMDAwMDAwMDAwMDsKIE1lbW9yeUlEQkJhY2tpbmdTdG9y
ZTo6TWVtb3J5SURCQmFja2luZ1N0b3JlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
SURCRGF0YWJhc2VJZGVudGlmaWVyJiBpZGVudGlmaWVyKQogICAgIDogbV9pZGVudGlmaWVyKGlk
ZW50aWZpZXIpCiAgICAgLCBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCi0gICAgLCBtX3NlcmlhbGl6
YXRpb25Db250ZXh0KElEQlNlcmlhbGl6YXRpb25Db250ZXh0OjpnZXRPckNyZWF0ZUZvckN1cnJl
bnRUaHJlYWQoKSkKIHsKIH0KIApAQCAtNjE2LDExICs2MTQsNiBAQCBSZWZQdHI8TWVtb3J5T2Jq
ZWN0U3RvcmU+IE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6dGFrZU9iamVjdFN0b3JlQnlJZGVudGlm
aWVyKHVpbgogICAgIHJldHVybiBvYmplY3RTdG9yZUJ5SWRlbnRpZmllcjsKIH0KIAotSURCU2Vy
aWFsaXphdGlvbkNvbnRleHQmIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6c2VyaWFsaXphdGlvbkNv
bnRleHQoKQotewotICAgIHJldHVybiBtX3NlcmlhbGl6YXRpb25Db250ZXh0LmdldCgpOwotfQot
CiBJREJPYmplY3RTdG9yZUluZm8qIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6aW5mb0Zvck9iamVj
dFN0b3JlKHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQobV9k
YXRhYmFzZUluZm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oCmluZGV4IDFkMzBiY2E2
M2U1ODkwOWY2NmMzMGY2ZjM2OWYxYjAzNWNjOWM4ZGQuLmUzNWYzYTc0NTU2NTc0ZTllYmU2NTVk
OTE0ODBiMTA0ZTNiNjk5NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmgKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsNyAr
MzYsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIElEQlNlcnZlciB7CiAKLWNs
YXNzIElEQlNlcmlhbGl6YXRpb25Db250ZXh0OwogY2xhc3MgTWVtb3J5T2JqZWN0U3RvcmU7CiAK
IGNsYXNzIE1lbW9yeUlEQkJhY2tpbmdTdG9yZSBmaW5hbCA6IHB1YmxpYyBJREJCYWNraW5nU3Rv
cmUgewpAQCAtNTIsOCArNTEsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVPYmplY3RTdG9y
ZUZvclZlcnNpb25DaGFuZ2VBYm9ydChNZW1vcnlPYmplY3RTdG9yZSYpOwogICAgIHZvaWQgcmVz
dG9yZU9iamVjdFN0b3JlRm9yVmVyc2lvbkNoYW5nZUFib3J0KFJlZjxNZW1vcnlPYmplY3RTdG9y
ZT4mJik7CiAKLSAgICBJREJTZXJpYWxpemF0aW9uQ29udGV4dCYgc2VyaWFsaXphdGlvbkNvbnRl
eHQoKSBmaW5hbDsKLQogcHJpdmF0ZToKICAgICBJREJFcnJvciBiZWdpblRyYW5zYWN0aW9uKGNv
bnN0IElEQlRyYW5zYWN0aW9uSW5mbyYpIGZpbmFsOwogICAgIElEQkVycm9yIGFib3J0VHJhbnNh
Y3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIp
IGZpbmFsOwpAQCAtOTUsNyArOTIsNiBAQCBwcml2YXRlOgogCiAgICAgSURCRGF0YWJhc2VJZGVu
dGlmaWVyIG1faWRlbnRpZmllcjsKICAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKLSAg
ICBSZWY8SURCU2VyaWFsaXphdGlvbkNvbnRleHQ+IG1fc2VyaWFsaXphdGlvbkNvbnRleHQ7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPElEQkRhdGFiYXNlSW5mbz4gbV9kYXRhYmFzZUluZm87CiAKICAg
ICBIYXNoTWFwPElEQlJlc291cmNlSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPE1lbW9yeUJh
Y2tpbmdTdG9yZVRyYW5zYWN0aW9uPj4gbV90cmFuc2FjdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0
b3JlLmNwcAppbmRleCAwM2MzMTFkZmY3YjJjMjQzNDlkMjdjYTg2MzQ3ZWM5ZGJmZGU3ZTliLi5k
M2EyZWNhYTMzMmRhY2IxZjllZDU1ZTIwNjNjNzgzNTNlMjllMDg4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmpl
Y3RTdG9yZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIklEQkVycm9yLmgiCiAjaW5jbHVk
ZSAiSURCR2V0QWxsUmVzdWx0LmgiCiAjaW5jbHVkZSAiSURCS2V5UmFuZ2VEYXRhLmgiCi0jaW5j
bHVkZSAiSURCU2VyaWFsaXphdGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJJREJTZXJpYWxpemF0
aW9uLmgiCiAjaW5jbHVkZSAiSURCVmFsdWUuaCIKICNpbmNsdWRlICJJbmRleEtleS5oIgogI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKQEAgLTUyLDcgKzUyLDYgQEAgUmVmPE1lbW9yeU9iamVjdFN0b3Jl
PiBNZW1vcnlPYmplY3RTdG9yZTo6Y3JlYXRlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QKIAogTWVtb3J5T2JqZWN0U3RvcmU6Ok1lbW9yeU9iamVjdFN0b3JlKFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mIGluZm8pCiAgICAgOiBtX2luZm8oaW5mbykKLSAg
ICAsIG1fc2VyaWFsaXphdGlvbkNvbnRleHQoSURCU2VyaWFsaXphdGlvbkNvbnRleHQ6OmdldE9y
Q3JlYXRlRm9yQ3VycmVudFRocmVhZCgpKQogewogfQogCkBAIC0yNTEsNyArMjUwLDEwIEBAIHZv
aWQgTWVtb3J5T2JqZWN0U3RvcmU6OmRlbGV0ZVJhbmdlKGNvbnN0IElEQktleVJhbmdlRGF0YSYg
aW5wdXRSYW5nZSkKIAogSURCRXJyb3IgTWVtb3J5T2JqZWN0U3RvcmU6OmFkZFJlY29yZChNZW1v
cnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIGNvbnN0IElEQktleURhdGEm
IGtleURhdGEsIGNvbnN0IElEQlZhbHVlJiB2YWx1ZSkKIHsKLSAgICBhdXRvIGluZGV4S2V5cyA9
IGdlbmVyYXRlSW5kZXhLZXlNYXBGb3JWYWx1ZShtX3NlcmlhbGl6YXRpb25Db250ZXh0LT5nbG9i
YWxPYmplY3QoKSwgbV9pbmZvLCBrZXlEYXRhLCB2YWx1ZSk7CisgICAgSW5kZXhJRFRvSW5kZXhL
ZXlNYXAgaW5kZXhLZXlzOworICAgIGNhbGxPbklEQlNlcmlhbGl6YXRpb25UaHJlYWRBbmRXYWl0
KFtpbmZvID0gbV9pbmZvLmlzb2xhdGVkQ29weSgpLCBrZXlEYXRhID0ga2V5RGF0YS5pc29sYXRl
ZENvcHkoKSwgdmFsdWUgPSB2YWx1ZS5pc29sYXRlZENvcHkoKSwgJmluZGV4S2V5c10oYXV0byYg
Z2xvYmFsT2JqZWN0KSB7CisgICAgICAgIGluZGV4S2V5cyA9IGdlbmVyYXRlSW5kZXhLZXlNYXBG
b3JWYWx1ZShnbG9iYWxPYmplY3QsIGluZm8sIGtleURhdGEsIHZhbHVlKTsKKyAgICB9KTsKICAg
ICByZXR1cm4gYWRkUmVjb3JkKHRyYW5zYWN0aW9uLCBrZXlEYXRhLCBpbmRleEtleXMsIHZhbHVl
KTsKIH0KIApAQCAtMzM4LDIwICszNDAsMjUgQEAgSURCRXJyb3IgTWVtb3J5T2JqZWN0U3RvcmU6
OnBvcHVsYXRlSW5kZXhXaXRoRXhpc3RpbmdSZWNvcmRzKE1lbW9yeUluZGV4JiBpbmRleCkKICAg
ICBpZiAoIW1fa2V5VmFsdWVTdG9yZSkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgfTsKIAot
ICAgIEpTTG9ja0hvbGRlciBsb2NrZXIobV9zZXJpYWxpemF0aW9uQ29udGV4dC0+dm0oKSk7Ci0K
ICAgICBmb3IgKGNvbnN0IGF1dG8mIGl0ZXJhdG9yIDogKm1fa2V5VmFsdWVTdG9yZSkgewotICAg
ICAgICBhdXRvIGpzVmFsdWUgPSBkZXNlcmlhbGl6ZUlEQlZhbHVlVG9KU1ZhbHVlKG1fc2VyaWFs
aXphdGlvbkNvbnRleHQtPmdsb2JhbE9iamVjdCgpLCBpdGVyYXRvci52YWx1ZSk7Ci0gICAgICAg
IGlmIChqc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCisgICAgICAgIE9wdGlvbmFsPEluZGV4
S2V5PiByZXN1bHRJbmRleEtleTsKKyAgICAgICAgY2FsbE9uSURCU2VyaWFsaXphdGlvblRocmVh
ZEFuZFdhaXQoW2tleSA9IGl0ZXJhdG9yLmtleS5pc29sYXRlZENvcHkoKSwgdmFsdWUgPSBpdGVy
YXRvci52YWx1ZSwgaW5mbyA9IG1faW5mby5pc29sYXRlZENvcHkoKSwgaW5kZXhJbmZvID0gaW5k
ZXguaW5mbygpLmlzb2xhdGVkQ29weSgpLCAmcmVzdWx0SW5kZXhLZXldKGF1dG8mIGdsb2JhbE9i
amVjdCkgeworICAgICAgICAgICAgYXV0byBqc1ZhbHVlID0gZGVzZXJpYWxpemVJREJWYWx1ZVRv
SlNWYWx1ZShnbG9iYWxPYmplY3QsIHZhbHVlKTsKKyAgICAgICAgICAgIGlmIChqc1ZhbHVlLmlz
VW5kZWZpbmVkT3JOdWxsKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAg
ICBJbmRleEtleSBpbmRleEtleTsKKyAgICAgICAgICAgIGdlbmVyYXRlSW5kZXhLZXlGb3JWYWx1
ZShnbG9iYWxPYmplY3QsIGluZGV4SW5mbywganNWYWx1ZSwgaW5kZXhLZXksIGluZm8ua2V5UGF0
aCgpLCBrZXkpOworICAgICAgICAgICAgcmVzdWx0SW5kZXhLZXkgPSBpbmRleEtleS5pc29sYXRl
ZENvcHkoKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaWYgKCFyZXN1bHRJbmRleEtleSkKICAg
ICAgICAgICAgIHJldHVybiBJREJFcnJvciB7IH07CiAKLSAgICAgICAgSW5kZXhLZXkgaW5kZXhL
ZXk7Ci0gICAgICAgIGdlbmVyYXRlSW5kZXhLZXlGb3JWYWx1ZShtX3NlcmlhbGl6YXRpb25Db250
ZXh0LT5nbG9iYWxPYmplY3QoKSwgaW5kZXguaW5mbygpLCBqc1ZhbHVlLCBpbmRleEtleSwgbV9p
bmZvLmtleVBhdGgoKSwgaXRlcmF0b3Iua2V5KTsKLQotICAgICAgICBpZiAoaW5kZXhLZXkuaXNO
dWxsKCkpCisgICAgICAgIGlmIChyZXN1bHRJbmRleEtleS0+aXNOdWxsKCkpCiAgICAgICAgICAg
ICBjb250aW51ZTsKIAotICAgICAgICBJREJFcnJvciBlcnJvciA9IGluZGV4LnB1dEluZGV4S2V5
KGl0ZXJhdG9yLmtleSwgaW5kZXhLZXkpOworICAgICAgICBJREJFcnJvciBlcnJvciA9IGluZGV4
LnB1dEluZGV4S2V5KGl0ZXJhdG9yLmtleSwgKnJlc3VsdEluZGV4S2V5KTsKICAgICAgICAgaWYg
KCFlcnJvci5pc051bGwoKSkKICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2Jq
ZWN0U3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1v
cnlPYmplY3RTdG9yZS5oCmluZGV4IDQzNDk5ZDViY2JlYzYyNmFkMTFjNDU4MmI2YWI2NjRkYTI2
ZGQwMTguLjdmNDFkYjI4OTVkMGE1M2NhNDNkM2RlOWE0YzJjMTBiYTZjNzU2NDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RT
dG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1v
cnlPYmplY3RTdG9yZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTU1LDcgKzU1LDYgQEAgZW51bSBjbGFzcyBJbmRleFJlY29yZFR5cGUg
OiBib29sOwogCiBuYW1lc3BhY2UgSURCU2VydmVyIHsKIAotY2xhc3MgSURCU2VyaWFsaXphdGlv
bkNvbnRleHQ7CiBjbGFzcyBNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbjsKIAogdHlwZWRl
ZiBIYXNoTWFwPElEQktleURhdGEsIFRocmVhZFNhZmVEYXRhQnVmZmVyLCBJREJLZXlEYXRhSGFz
aCwgSURCS2V5RGF0YUhhc2hUcmFpdHM+IEtleVZhbHVlTWFwOwpAQCAtMTMzLDggKzEzMiw2IEBA
IHByaXZhdGU6CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPE1lbW9yeUluZGV4Pj4gbV9p
bmRleGVzQnlJZGVudGlmaWVyOwogICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8TWVtb3J5SW5k
ZXg+PiBtX2luZGV4ZXNCeU5hbWU7CiAgICAgSGFzaE1hcDxJREJSZXNvdXJjZUlkZW50aWZpZXIs
IHN0ZDo6dW5pcXVlX3B0cjxNZW1vcnlPYmplY3RTdG9yZUN1cnNvcj4+IG1fY3Vyc29yczsKLQot
ICAgIFJlZjxJREJTZXJpYWxpemF0aW9uQ29udGV4dD4gbV9zZXJpYWxpemF0aW9uQ29udGV4dDsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIElEQlNlcnZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0
b3JlLmNwcAppbmRleCAzZDJjZDEzNmFkNDM3NDVhYWNjMjI3NDk1ZDA1ZjdkN2EyZTNjOWRkLi5h
MDk3MmU3OTEyM2RiNTIyZGNkOWZmY2M2NDY4ZGRkYWE0NGM4YmQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3Jl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRl
SURCQmFja2luZ1N0b3JlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlICJJREJLZXlE
YXRhLmgiCiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmVJbmZvLmgiCiAjaW5jbHVkZSAiSURCU2Vy
aWFsaXphdGlvbi5oIgotI2luY2x1ZGUgIklEQlNlcmlhbGl6YXRpb25Db250ZXh0LmgiCiAjaW5j
bHVkZSAiSURCVHJhbnNhY3Rpb25JbmZvLmgiCiAjaW5jbHVkZSAiSURCVmFsdWUuaCIKICNpbmNs
dWRlICJJbmRleEtleS5oIgpAQCAtMjQxLDcgKzI0MCw2IEBAIFNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6U1FMaXRlSURCQmFja2luZ1N0b3JlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
SURCCiAgICAgOiBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCiAgICAgLCBtX2lkZW50aWZpZXIoaWRl
bnRpZmllcikKICAgICAsIG1fZGF0YWJhc2VSb290RGlyZWN0b3J5KGRhdGFiYXNlUm9vdERpcmVj
dG9yeSkKLSAgICAsIG1fc2VyaWFsaXphdGlvbkNvbnRleHQoSURCU2VyaWFsaXphdGlvbkNvbnRl
eHQ6OmdldE9yQ3JlYXRlRm9yQ3VycmVudFRocmVhZCgpKQogewogICAgIG1fZGF0YWJhc2VEaXJl
Y3RvcnkgPSBmdWxsRGF0YWJhc2VEaXJlY3RvcnlXaXRoVXBncmFkZSgpOwogfQpAQCAtMjA3OCwx
OSArMjA3NiwyNCBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0ZVJhbmdl
KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhYwogCiBJREJFcnJvciBTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OnVwZGF0ZU9uZUluZGV4Rm9yQWRkUmVjb3JkKElEQk9iamVjdFN0b3Jl
SW5mbyYgb2JqZWN0U3RvcmVJbmZvLCBjb25zdCBJREJJbmRleEluZm8mIGluZm8sIGNvbnN0IElE
QktleURhdGEmIGtleSwgY29uc3QgVGhyZWFkU2FmZURhdGFCdWZmZXImIHZhbHVlLCBpbnQ2NF90
IHJlY29yZElEKQogewotICAgIEpTTG9ja0hvbGRlciBsb2NrZXIobV9zZXJpYWxpemF0aW9uQ29u
dGV4dC0+dm0oKSk7CisgICAgT3B0aW9uYWw8SW5kZXhLZXk+IHJlc3VsdEluZGV4S2V5OworICAg
IGNhbGxPbklEQlNlcmlhbGl6YXRpb25UaHJlYWRBbmRXYWl0KFtvYmplY3RTdG9yZUluZm8gPSBv
YmplY3RTdG9yZUluZm8uaXNvbGF0ZWRDb3B5KCksIGluZm8gPSBpbmZvLmlzb2xhdGVkQ29weSgp
LCBrZXkgPSBrZXkuaXNvbGF0ZWRDb3B5KCksIHZhbHVlLCAmcmVzdWx0SW5kZXhLZXldKGF1dG8m
IGdsb2JhbE9iamVjdCkgeworICAgICAgICBhdXRvIGpzVmFsdWUgPSBkZXNlcmlhbGl6ZUlEQlZh
bHVlVG9KU1ZhbHVlKGdsb2JhbE9iamVjdCwgdmFsdWUpOworICAgICAgICBpZiAoanNWYWx1ZS5p
c1VuZGVmaW5lZE9yTnVsbCgpKQorICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBqc1Zh
bHVlID0gZGVzZXJpYWxpemVJREJWYWx1ZVRvSlNWYWx1ZShtX3NlcmlhbGl6YXRpb25Db250ZXh0
LT5nbG9iYWxPYmplY3QoKSwgdmFsdWUpOwotICAgIGlmIChqc1ZhbHVlLmlzVW5kZWZpbmVkT3JO
dWxsKCkpCi0gICAgICAgIHJldHVybiBJREJFcnJvciB7IH07CisgICAgICAgIEluZGV4S2V5IGlu
ZGV4S2V5OworICAgICAgICBnZW5lcmF0ZUluZGV4S2V5Rm9yVmFsdWUoZ2xvYmFsT2JqZWN0LCBp
bmZvLCBqc1ZhbHVlLCBpbmRleEtleSwgb2JqZWN0U3RvcmVJbmZvLmtleVBhdGgoKSwga2V5KTsK
KyAgICAgICAgcmVzdWx0SW5kZXhLZXkgPSBpbmRleEtleS5pc29sYXRlZENvcHkoKTsKKyAgICB9
KTsKIAotICAgIEluZGV4S2V5IGluZGV4S2V5OwotICAgIGdlbmVyYXRlSW5kZXhLZXlGb3JWYWx1
ZShtX3NlcmlhbGl6YXRpb25Db250ZXh0LT5nbG9iYWxPYmplY3QoKSwgaW5mbywganNWYWx1ZSwg
aW5kZXhLZXksIG9iamVjdFN0b3JlSW5mby5rZXlQYXRoKCksIGtleSk7CisgICAgaWYgKCFyZXN1
bHRJbmRleEtleSkKKyAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgfTsKIAotICAgIGlmIChpbmRl
eEtleS5pc051bGwoKSkKKyAgICBpZiAocmVzdWx0SW5kZXhLZXktPmlzTnVsbCgpKQogICAgICAg
ICByZXR1cm4gSURCRXJyb3IgeyB9OwogCi0gICAgcmV0dXJuIHVuY2hlY2tlZFB1dEluZGV4S2V5
KGluZm8sIGtleSwgaW5kZXhLZXksIHJlY29yZElEKTsKKyAgICByZXR1cm4gdW5jaGVja2VkUHV0
SW5kZXhLZXkoaW5mbywga2V5LCAqcmVzdWx0SW5kZXhLZXksIHJlY29yZElEKTsKIH0KIAogSURC
RXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1cGRhdGVBbGxJbmRleGVzRm9yQWRkUmVjb3Jk
KGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbywgY29uc3QgSURCS2V5RGF0YSYga2V5LCBj
b25zdCBJbmRleElEVG9JbmRleEtleU1hcCYgaW5kZXhLZXlzLCBpbnQ2NF90IHJlY29yZElEKQpA
QCAtMjkzNywxMSArMjk0MCw2IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6aXRl
cmF0ZUN1cnNvcihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zCiAgICAgcmV0dXJu
IElEQkVycm9yIHsgfTsKIH0KIAotSURCU2VyaWFsaXphdGlvbkNvbnRleHQmIFNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6c2VyaWFsaXphdGlvbkNvbnRleHQoKQotewotICAgIHJldHVybiBtX3Nlcmlh
bGl6YXRpb25Db250ZXh0LmdldCgpOwotfQotCiBJREJPYmplY3RTdG9yZUluZm8qIFNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6aW5mb0Zvck9iamVjdFN0b3JlKHVpbnQ2NF90IG9iamVjdFN0b3JlSWRl
bnRpZmllcikKIHsKICAgICBBU1NFUlQobV9kYXRhYmFzZUluZm8pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9y
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJh
Y2tpbmdTdG9yZS5oCmluZGV4IDQxZGNiZjM5NTg1OWJlZjczYWUzM2EzMzNlNDZmYzhhM2NhNDI1
NjUuLjU0YWMyNDkzZTkwZWFhOTI1N2Q2ZGFlMjc5NGY5MTc3MzE0NDUyZjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5n
U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FM
aXRlSURCQmFja2luZ1N0b3JlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNDYsNyArNDYsNiBAQCBuYW1lc3BhY2UgSURCU2VydmVyIHsK
IAogZW51bSBjbGFzcyBJc1NjaGVtYVVwZ3JhZGVkIDogYm9vbCB7IE5vLCBZZXMgfTsKIAotY2xh
c3MgSURCU2VyaWFsaXphdGlvbkNvbnRleHQ7CiBjbGFzcyBTUUxpdGVJREJDdXJzb3I7CiAKIGNs
YXNzIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZSBmaW5hbCA6IHB1YmxpYyBJREJCYWNraW5nU3RvcmUg
ewpAQCAtODIsOCArODEsNiBAQCBwdWJsaWM6CiAgICAgSURCRXJyb3Igb3BlbkN1cnNvcihjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURC
Q3Vyc29ySW5mbyYsIElEQkdldFJlc3VsdCYgb3V0UmVzdWx0KSBmaW5hbDsKICAgICBJREJFcnJv
ciBpdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25J
ZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIGN1cnNvcklkZW50aWZpZXIs
IGNvbnN0IElEQkl0ZXJhdGVDdXJzb3JEYXRhJiwgSURCR2V0UmVzdWx0JiBvdXRSZXN1bHQpIGZp
bmFsOwogCi0gICAgSURCU2VyaWFsaXphdGlvbkNvbnRleHQmIHNlcmlhbGl6YXRpb25Db250ZXh0
KCkgZmluYWw7Ci0KICAgICBJREJPYmplY3RTdG9yZUluZm8qIGluZm9Gb3JPYmplY3RTdG9yZSh1
aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQgZGVsZXRlQmFj
a2luZ1N0b3JlKCkgZmluYWw7CiAKQEAgLTIyMSw4ICsyMTgsNiBAQCBwcml2YXRlOgogCiAgICAg
U3RyaW5nIG1fZGF0YWJhc2VSb290RGlyZWN0b3J5OwogICAgIFN0cmluZyBtX2RhdGFiYXNlRGly
ZWN0b3J5OwotCi0gICAgUmVmPElEQlNlcmlhbGl6YXRpb25Db250ZXh0PiBtX3NlcmlhbGl6YXRp
b25Db250ZXh0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSURCU2VydmVyCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRh
dGFiYXNlLmNwcAppbmRleCA5YzQ1MmYyNDViYjRkMTk3YjlhYzc1YWFlOTVjODgwYzMyMGFjMTli
Li43ZGIxYWIzMDZmZGI0ZjkzMmEyZDE5YjNkOTE1Mjc0ZmMxZDZmNDg2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJ
REJEYXRhYmFzZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1
LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIklEQkl0ZXJhdGVD
dXJzb3JEYXRhLmgiCiAjaW5jbHVkZSAiSURCS2V5UmFuZ2VEYXRhLmgiCiAjaW5jbHVkZSAiSURC
UmVzdWx0RGF0YS5oIgotI2luY2x1ZGUgIklEQlNlcmlhbGl6YXRpb25Db250ZXh0LmgiCisjaW5j
bHVkZSAiSURCU2VyaWFsaXphdGlvbi5oIgogI2luY2x1ZGUgIklEQlNlcnZlci5oIgogI2luY2x1
ZGUgIklEQlRyYW5zYWN0aW9uSW5mby5oIgogI2luY2x1ZGUgIklEQlZhbHVlLmgiCkBAIC03NDIs
NyArNzQyLDEwIEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnB1dE9yQWRkKGNvbnN0IElEQlJl
cXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5CiAgICAgICAgIHVzZWRLZXkgPSBr
ZXlEYXRhOwogCiAgICAgLy8gR2VuZXJhdGUgaW5kZXgga2V5cyB1cCBmcm9udCBmb3IgbW9yZSBh
Y2N1cmF0ZSBxdW90YSBjaGVjay4KLSAgICBhdXRvIGluZGV4S2V5cyA9IGdlbmVyYXRlSW5kZXhL
ZXlNYXBGb3JWYWx1ZShtX2JhY2tpbmdTdG9yZS0+c2VyaWFsaXphdGlvbkNvbnRleHQoKS5nbG9i
YWxPYmplY3QoKSwgKm9iamVjdFN0b3JlSW5mbywgdXNlZEtleSwgdmFsdWUpOworICAgIEluZGV4
SURUb0luZGV4S2V5TWFwIGluZGV4S2V5czsKKyAgICBjYWxsT25JREJTZXJpYWxpemF0aW9uVGhy
ZWFkQW5kV2FpdChbb2JqZWN0U3RvcmVJbmZvID0gb2JqZWN0U3RvcmVJbmZvLT5pc29sYXRlZENv
cHkoKSwga2V5ID0gdXNlZEtleS5pc29sYXRlZENvcHkoKSwgdmFsdWUgPSB2YWx1ZS5pc29sYXRl
ZENvcHkoKSwgJmluZGV4S2V5c10oYXV0byYgZ2xvYmFsT2JqZWN0KSB7CisgICAgICAgIGluZGV4
S2V5cyA9IGdlbmVyYXRlSW5kZXhLZXlNYXBGb3JWYWx1ZShnbG9iYWxPYmplY3QsIG9iamVjdFN0
b3JlSW5mbywga2V5LCB2YWx1ZSk7CisgICAgfSk7CiAKICAgICBpZiAob3ZlcndyaXRlTW9kZSA9
PSBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZTo6Tm9PdmVyd3JpdGUpIHsKICAg
ICAgICAgYm9vbCBrZXlFeGlzdHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDY2OWQ5MzVkODFlNzA0YzE3
M2MxMGY5ZTg1NjM2YzQwZmViN2M4YTkuLjIxOTM0YjQxMDhiMjkyZTQ5ZTY2YTRiNGY5OGFiOGM2
YTU0MzNiMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC05NSw3ICs5NSw2IEBAIE1vZHVsZXMvaW5kZXhl
ZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwCiBNb2R1bGVzL2luZGV4ZWRkYi9j
bGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uY3BwCiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
SURCQ29ubmVjdGlvblRvQ2xpZW50LmNwcAogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNl
cmlhbGl6YXRpb24uY3BwCi1Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlv
bkNvbnRleHQuY3BwCiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcAogTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0luZGV4VmFsdWVFbnRyeS5jcHAKIE1vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JbmRleFZhbHVlU3RvcmUuY3BwCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429697</attachid>
            <date>2021-05-25 15:01:08 -0700</date>
            <delta_ts>2021-05-25 15:37:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226228-20210525150107.patch</filename>
            <type>text/plain</type>
            <size>30594</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MDM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjVmNDJkMWM1OWUwNWM4
MmEzYWIxNGZkZDBlOGQ3M2Y0OWFhMzVkNS4uZjI2MjNhOTUzZjY1OTNlNWQ2ZmNjOGRhNmVjOTFi
OWY5YTk4MzU1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIxLTA1LTI1ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjZSBhIHNoYXJl
ZCBJREIgc2VyaWFsaXphdGlvbiB0aHJlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyNjIyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEN1cnJlbnRseSBlYWNoIFdlYklEQlNlcnZlciBoYXMgaXRzIG93
biB0aHJlYWQsIGFuZCBkb2VzIHNlcmlhbGl6YXRpb24vZGVzZXJpYWxpemF0aW9uIG9uIHRoYXQg
dGhyZWFkLiBUbworICAgICAgICBwcmVwYXJlIGZvciBtYWtpbmcgV2ViSURCU2VydmVyIHVzZSBX
b3JrUXVldWUsIGxpa2UgdGhlIG90aGVyIHN0b3JhZ2UgbWFuYWdlciBjbGFzc2VzLCBsZXQncyBj
cmVhdGUgYSBzaGFyZWQKKyAgICAgICAgdGhyZWFkIGZvciBoYW5kbGluZyBhbGwgc2VyaWFsaXph
dGlvbi9kZXNlcmlhbGl6YXRpb24gb3BlcmF0aW9ucywgd2hpY2ggY2Fubm90IGJlIGRvbmUgb24g
V29ya1F1ZXVlIGFzIFZNIG5lZWRzIAorICAgICAgICB0byBhY2Nlc3MgdGhyZWFkLXNwZWNpZmlj
IGRhdGEuIE5vdyBJREIgdGFza3Mgd2lsbCBpbnZva2UgY2FsbE9uSURCU2VyaWFsaXphdGlvblRo
cmVhZEFuZFdhaXQgdG8gcGVyZm9ybSAKKyAgICAgICAgc2VyaWFsaXphdGlvbi9kZXNlcmlhbGl6
YXRpb24gb3BlcmF0aW9ucyBzeW5jaHJvbm91c2x5LgorCisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQkJhY2tpbmdTdG9yZS5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNl
cmlhbGl6YXRpb25Db250ZXh0OjpJREJTZXJpYWxpemF0aW9uQ29udGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJpYWxpemF0aW9uQ29udGV4dDo6fklEQlNlcmlhbGl6YXRpb25Db250ZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcmlhbGl6YXRpb25Db250ZXh0OjpnbG9iYWxPYmpl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VyaWFsaXphdGlvbkNvbnRleHQ6OmluaXRpYWxp
emVWTSk6CisgICAgICAgIChXZWJDb3JlOjpjYWxsT25JREJTZXJpYWxpemF0aW9uVGhyZWFkQW5k
V2FpdCk6IENyZWF0ZSBhIElEQlNlcmlhbGl6YXRpb24gdGhyZWFkIGlmIG5vdCBleGlzdHMgYW5k
IGRpc3BhdGNoIGEgCisgICAgICAgIHN5bmNocm9ub3VzIHRhc2sgdG8gaXQuCisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaDoKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbkNvbnRleHQuY3BwOiBSZW1v
dmVkLiBNb3ZlZCB0byBJREJTZXJpYWxpemF0aW9uLmNwcCBhcyAKKyAgICAgICAgSURCU2VyaWFs
aXphdGlvbkNvbnRleHQgaXMgb25seSB1c2VkIGJ5IElEQlNlcmlhbGl6YXRpb24gdGhyZWFkIG5v
dy4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbkNv
bnRleHQuaDogUmVtb3ZlZC4gRGl0dG8uCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2
ZXI6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6TWVtb3J5SURCQmFja2luZ1N0b3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5SURCQmFja2luZ1N0b3JlOjpzZXJpYWxpemF0
aW9uQ29udGV4dCk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9NZW1vcnlPYmplY3RTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
Ok1lbW9yeU9iamVjdFN0b3JlOjpNZW1vcnlPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6Ok1lbW9yeU9iamVjdFN0b3JlOjphZGRSZWNvcmQpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpNZW1vcnlPYmplY3RTdG9yZTo6cG9wdWxhdGVJbmRleFdpdGhFeGlz
dGluZ1JlY29yZHMpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlP
YmplY3RTdG9yZS5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJ
REJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dXBkYXRlT25lSW5kZXhGb3JBZGRS
ZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3Rv
cmU6OnNlcmlhbGl6YXRpb25Db250ZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmg6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OnB1dE9yQWRkKToKKyAgICAgICAgKiBT
b3VyY2VzLnR4dDoKKwogMjAyMS0wNS0yNCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+
CiAKICAgICAgICAgU3dpdGNoIGZyb20gV1RGOjpPcHRpb25hbCB0byBzdGQ6Om9wdGlvbmFsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQmFj
a2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURC
QmFja2luZ1N0b3JlLmgKaW5kZXggZTQ1ZDhhY2Y0YzE1NzI5YTFiM2MxNWMzNDQwYWVkZTM4OGZj
Mjk3YS4uMDZjNjQ2ZDMzZjdmZWY4ZDkxMTRiYmE2NGU3N2NjYTAxMzY2NDU0ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkJhY2tpbmdTdG9y
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJCYWNr
aW5nU3RvcmUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC01NSw4ICs1NSw2IEBAIGVudW0gY2xhc3MgSW5kZXhSZWNvcmRUeXBlIDogYm9v
bDsKIAogbmFtZXNwYWNlIElEQlNlcnZlciB7CiAKLWNsYXNzIElEQlNlcmlhbGl6YXRpb25Db250
ZXh0OwotCiBjbGFzcyBJREJCYWNraW5nU3RvcmUgewogcHVibGljOgogICAgIHZpcnR1YWwgfklE
QkJhY2tpbmdTdG9yZSgpIHsgUkVMRUFTRV9BU1NFUlQoIWlzTWFpblRocmVhZCgpKTsgfQpAQCAt
ODgsOCArODYsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBJREJFcnJvciBvcGVuQ3Vyc29yKGNv
bnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJ
REJDdXJzb3JJbmZvJiwgSURCR2V0UmVzdWx0JiBvdXRSZXN1bHQpID0gMDsKICAgICB2aXJ0dWFs
IElEQkVycm9yIGl0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFu
c2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgY3Vyc29ySWRl
bnRpZmllciwgY29uc3QgSURCSXRlcmF0ZUN1cnNvckRhdGEmLCBJREJHZXRSZXN1bHQmIG91dFJl
c3VsdCkgPSAwOwogCi0gICAgdmlydHVhbCBJREJTZXJpYWxpemF0aW9uQ29udGV4dCYgc2VyaWFs
aXphdGlvbkNvbnRleHQoKSA9IDA7Ci0KICAgICB2aXJ0dWFsIElEQk9iamVjdFN0b3JlSW5mbyog
aW5mb0Zvck9iamVjdFN0b3JlKHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBkZWxldGVCYWNraW5nU3RvcmUoKSA9IDA7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxp
emF0aW9uLmNwcAppbmRleCA5ZjA2NGQ5MjgwN2IyZTA5NzNhODg4MjlhY2IwYWNmYTFmMzVlOTRl
Li43NWM3NGE5NzRhMjM5MzM0YTg0NWQyY2IzZTYxNGYyNzY1MzdmZGJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlh
bGl6YXRpb24uY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCwg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTQtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDcgKzI4LDEzIEBACiAKICNpbmNsdWRlICJJREJLZXlEYXRh
LmgiCiAjaW5jbHVkZSAiSURCS2V5UGF0aC5oIgorI2luY2x1ZGUgIkpTSURCU2VyaWFsaXphdGlv
bkdsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIktleWVkQ29kaW5nLmgiCisjaW5jbHVkZSAiV2Vi
Q29yZUpTQ2xpZW50RGF0YS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZ0lubGlu
ZXMuaD4KKyNpbmNsdWRlIDx3dGYvQXV0b2RyYWluZWRQb29sLmg+CisjaW5jbHVkZSA8d3RmL01l
c3NhZ2VRdWV1ZS5oPgorI2luY2x1ZGUgPHd0Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5oPgog
CiAjaWYgVVNFKEdMSUIpCiAjaW5jbHVkZSA8Z2xpYi5oPgpAQCAtNDE3LDQgKzQyMyw3NCBAQCBi
b29sIGRlc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6
ZSwgSURCS2V5RGF0YSYgcmVzdWx0KQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorY2xhc3MgSURC
U2VyaWFsaXphdGlvbkNvbnRleHQgOiBwdWJsaWMgUmVmQ291bnRlZDxJREJTZXJpYWxpemF0aW9u
Q29udGV4dD4geworcHVibGljOgorICAgIElEQlNlcmlhbGl6YXRpb25Db250ZXh0KCkKKyAgICAg
ICAgOiBtX3RocmVhZChUaHJlYWQ6OmN1cnJlbnQoKSkKKyAgICB7CisgICAgfQorCisgICAgfklE
QlNlcmlhbGl6YXRpb25Db250ZXh0KCkKKyAgICB7CisgICAgICAgIEFTU0VSVCgmbV90aHJlYWQg
PT0gJlRocmVhZDo6Y3VycmVudCgpKTsKKyAgICAgICAgaWYgKCFtX3ZtKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soKm1fdm0pOworICAgICAg
ICBtX2dsb2JhbE9iamVjdC5jbGVhcigpOworICAgICAgICBtX3ZtID0gbnVsbHB0cjsKKyAgICB9
CisKKyAgICBKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QoKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKCZtX3RocmVhZCA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOworCisgICAgICAgIGlu
aXRpYWxpemVWTSgpOworICAgICAgICByZXR1cm4gKm1fZ2xvYmFsT2JqZWN0LmdldCgpOworICAg
IH0KKworcHJpdmF0ZToKKyAgICB2b2lkIGluaXRpYWxpemVWTSgpCisgICAgeworICAgICAgICBp
ZiAobV92bSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBBU1NFUlQoIW1fZ2xvYmFs
T2JqZWN0KTsKKyAgICAgICAgbV92bSA9IEpTQzo6Vk06OmNyZWF0ZSgpOworICAgICAgICBtX3Zt
LT5oZWFwLmFjcXVpcmVBY2Nlc3MoKTsKKyAgICAgICAgSlNWTUNsaWVudERhdGE6OmluaXROb3Jt
YWxXb3JsZChtX3ZtLmdldCgpLCBXb3JrZXJUaHJlYWRUeXBlOjpXb3JrbGV0KTsKKworICAgICAg
ICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIobV92bS5nZXQoKSk7CisgICAgICAgIG1fZ2xvYmFs
T2JqZWN0LnNldCgqbV92bSwgSlNJREJTZXJpYWxpemF0aW9uR2xvYmFsT2JqZWN0OjpjcmVhdGUo
Km1fdm0sIEpTSURCU2VyaWFsaXphdGlvbkdsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKCpt
X3ZtLCBKU0M6OmpzTnVsbCgpKSwgbm9ybWFsV29ybGQoKm1fdm0pKSk7CisgICAgfQorCisgICAg
UmVmUHRyPEpTQzo6Vk0+IG1fdm07CisgICAgSlNDOjpTdHJvbmc8SlNJREJTZXJpYWxpemF0aW9u
R2xvYmFsT2JqZWN0PiBtX2dsb2JhbE9iamVjdDsKKyAgICBUaHJlYWQmIG1fdGhyZWFkOworfTsK
Kwordm9pZCBjYWxsT25JREJTZXJpYWxpemF0aW9uVGhyZWFkQW5kV2FpdChGdW5jdGlvbjx2b2lk
KEpTQzo6SlNHbG9iYWxPYmplY3QmKT4mJiBmdW5jdGlvbikKK3sKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8TWVzc2FnZVF1ZXVlPEZ1bmN0aW9uPHZvaWQoSlNDOjpKU0dsb2JhbE9iamVjdCYp
Pj4+IHF1ZXVlOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBjcmVhdGVUaHJlYWQ7CisKKyAg
ICBzdGQ6OmNhbGxfb25jZShjcmVhdGVUaHJlYWQsIFtdIHsKKyAgICAgICAgVGhyZWFkOjpjcmVh
dGUoIkluZGV4ZWREQiBTZXJpYWxpemF0aW9uIiwgW10geworICAgICAgICAgICAgYXV0byBzZXJp
YWxpemF0aW9uQ29udGV4dCA9IGFkb3B0UmVmKCpuZXcgSURCU2VyaWFsaXphdGlvbkNvbnRleHQo
KSk7CisgICAgICAgICAgICB3aGlsZSAoYXV0byBmdW5jdGlvbiA9IHF1ZXVlLT53YWl0Rm9yTWVz
c2FnZSgpKSB7CisgICAgICAgICAgICAgICAgQXV0b2RyYWluZWRQb29sIHBvb2w7CisgICAgICAg
ICAgICAgICAgKCpmdW5jdGlvbikoc2VyaWFsaXphdGlvbkNvbnRleHQtPmdsb2JhbE9iamVjdCgp
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfSk7CisKKyAgICBCaW5hcnlTZW1h
cGhvcmUgc2VtYXBob3JlOworICAgIGF1dG8gbmV3RnVudGlvbiA9IFsmc2VtYXBob3JlLCBmdW5j
dGlvbiA9IFdURk1vdmUoZnVuY3Rpb24pXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmpl
Y3QpIHsKKyAgICAgICAgZnVuY3Rpb24oZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgc2VtYXBob3Jl
LnNpZ25hbCgpOworICAgIH07CisgICAgcXVldWUtPmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9u
PHZvaWQoSlNDOjpKU0dsb2JhbE9iamVjdCYpPj4oV1RGTW92ZShuZXdGdW50aW9uKSkpOworICAg
IHNlbWFwaG9yZS53YWl0KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFs
aXphdGlvbi5oCmluZGV4IGY1ZjY3NDQyZTM2NzhhMjBhZWI1OGZlYWM5YWMzOWY3OGM1ZTFkNzku
LmEyZDNhOTg3ZTkzYzZhYWI0NGRhNGY0NWNlYzA0MzU1ZDQxYmM0ZDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6
YXRpb24uaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0zOCw0ICszOCw2IEBAIGJvb2wgZGVzZXJpYWxpemVJREJLZXlQYXRoKGNv
bnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIE9wdGlvbmFsPElECiBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IElEQktleURhdGEmKTsK
IGJvb2wgZGVzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90
IGJ1ZmZlclNpemUsIElEQktleURhdGEmKTsKIAordm9pZCBjYWxsT25JREJTZXJpYWxpemF0aW9u
VGhyZWFkQW5kV2FpdChGdW5jdGlvbjx2b2lkKEpTQzo6SlNHbG9iYWxPYmplY3QmKT4mJik7CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbkNvbnRleHQu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MTNiMWJjZTYyMDMyNTFmYjdjNTgx
YmEzNDVlNGM2ZjBjMWExNDgzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJp
YWxpemF0aW9uQ29udGV4dC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDkgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJJREJTZXJpYWxpemF0aW9u
Q29udGV4dC5oIgotCi0jaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCi0jaW5jbHVkZSAiV2Vi
Q29yZUpTQ2xpZW50RGF0YS5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0SW5s
aW5lcy5oPgotI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
bmFtZXNwYWNlIElEQlNlcnZlciB7Ci0KLXN0YXRpYyBMb2NrIHNlcmlhbGl6YXRpb25Db250ZXh0
TWFwTG9jazsKLQotc3RhdGljIEhhc2hNYXA8VGhyZWFkKiwgSURCU2VyaWFsaXphdGlvbkNvbnRl
eHQqPiYgc2VyaWFsaXphdGlvbkNvbnRleHRNYXAoKSBXVEZfUkVRVUlSRVNfTE9DSyhzZXJpYWxp
emF0aW9uQ29udGV4dE1hcExvY2spCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hN
YXA8VGhyZWFkKiwgSURCU2VyaWFsaXphdGlvbkNvbnRleHQqPj4gbWFwOwotICAgIHJldHVybiBt
YXA7Ci19Ci0KLVJlZjxJREJTZXJpYWxpemF0aW9uQ29udGV4dD4gSURCU2VyaWFsaXphdGlvbkNv
bnRleHQ6OmdldE9yQ3JlYXRlRm9yQ3VycmVudFRocmVhZCgpCi17Ci0gICAgYXV0byYgdGhyZWFk
ID0gVGhyZWFkOjpjdXJyZW50KCk7Ci0gICAgTG9ja2VyIGxvY2tlciB7IHNlcmlhbGl6YXRpb25D
b250ZXh0TWFwTG9jayB9OwotICAgIGF1dG9baXRlciwgaXNOZXdFbnRyeV0gPSBzZXJpYWxpemF0
aW9uQ29udGV4dE1hcCgpLmFkZCgmdGhyZWFkLCBudWxscHRyKTsKLSAgICBpZiAoaXNOZXdFbnRy
eSkgewotICAgICAgICBSZWY8SURCU2VyaWFsaXphdGlvbkNvbnRleHQ+IHByb3RlY3RlZENvbnRl
eHQgPSBhZG9wdFJlZigqbmV3IElEQlNlcmlhbGl6YXRpb25Db250ZXh0KHRocmVhZCkpOwotICAg
ICAgICBpdGVyLT52YWx1ZSA9IHByb3RlY3RlZENvbnRleHQucHRyKCk7Ci0gICAgICAgIHJldHVy
biBwcm90ZWN0ZWRDb250ZXh0OwotICAgIH0KLQotICAgIHJldHVybiAqaXRlci0+dmFsdWU7Ci19
Ci0KLUlEQlNlcmlhbGl6YXRpb25Db250ZXh0Ojp+SURCU2VyaWFsaXphdGlvbkNvbnRleHQoKQot
ewotICAgIExvY2tlciBsb2NrZXIgeyBzZXJpYWxpemF0aW9uQ29udGV4dE1hcExvY2sgfTsKLSAg
ICBBU1NFUlQodGhpcyA9PSBzZXJpYWxpemF0aW9uQ29udGV4dE1hcCgpLmdldCgmbV90aHJlYWQp
KTsKLQotICAgIGlmIChtX3ZtKSB7Ci0gICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soKm1f
dm0pOwotICAgICAgICBtX2dsb2JhbE9iamVjdC5jbGVhcigpOwotICAgICAgICBtX3ZtID0gbnVs
bHB0cjsKLSAgICB9Ci0gICAgc2VyaWFsaXphdGlvbkNvbnRleHRNYXAoKS5yZW1vdmUoJm1fdGhy
ZWFkKTsKLX0KLQotdm9pZCBJREJTZXJpYWxpemF0aW9uQ29udGV4dDo6aW5pdGlhbGl6ZVZNKCkK
LXsKLSAgICBpZiAobV92bSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQVNTRVJUKCFtX2dsb2Jh
bE9iamVjdCk7Ci0gICAgbV92bSA9IEpTQzo6Vk06OmNyZWF0ZSgpOwotICAgIG1fdm0tPmhlYXAu
YWNxdWlyZUFjY2VzcygpOwotICAgIEpTVk1DbGllbnREYXRhOjppbml0Tm9ybWFsV29ybGQobV92
bS5nZXQoKSwgV29ya2VyVGhyZWFkVHlwZTo6V29ya2xldCk7Ci0KLSAgICBKU0M6OkpTTG9ja0hv
bGRlciBsb2NrZXIobV92bS5nZXQoKSk7Ci0gICAgbV9nbG9iYWxPYmplY3Quc2V0KCptX3ZtLCBK
U0lEQlNlcmlhbGl6YXRpb25HbG9iYWxPYmplY3Q6OmNyZWF0ZSgqbV92bSwgSlNJREJTZXJpYWxp
emF0aW9uR2xvYmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoKm1fdm0sIEpTQzo6anNOdWxsKCkp
LCBub3JtYWxXb3JsZCgqbV92bSkpKTsKLX0KLQotSlNDOjpWTSYgSURCU2VyaWFsaXphdGlvbkNv
bnRleHQ6OnZtKCkKLXsKLSAgICBBU1NFUlQoJm1fdGhyZWFkID09ICZUaHJlYWQ6OmN1cnJlbnQo
KSk7Ci0KLSAgICBpbml0aWFsaXplVk0oKTsKLSAgICByZXR1cm4gKm1fdm07Ci19Ci0KLUpTQzo6
SlNHbG9iYWxPYmplY3QmIElEQlNlcmlhbGl6YXRpb25Db250ZXh0OjpnbG9iYWxPYmplY3QoKQot
ewotICAgIEFTU0VSVCgmbV90aHJlYWQgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKLQotICAgIGlu
aXRpYWxpemVWTSgpOwotICAgIHJldHVybiAqbV9nbG9iYWxPYmplY3QuZ2V0KCk7Ci19Ci0KLUlE
QlNlcmlhbGl6YXRpb25Db250ZXh0OjpJREJTZXJpYWxpemF0aW9uQ29udGV4dChUaHJlYWQmIHRo
cmVhZCkKLSAgICA6IG1fdGhyZWFkKHRocmVhZCkKLXsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSURC
U2VydmVyCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbkNvbnRleHQuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uQ29u
dGV4dC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZmRlYzAwNzFlODA4OWU5NGM2
NzUzYjZmNTBlN2MxMDljNzY4OWIxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJT
ZXJpYWxpemF0aW9uQ29udGV4dC5oCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiSlNJREJTZXJpYWxpemF0aW9uR2xv
YmFsT2JqZWN0LmgiCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Ryb25nSW5saW5lcy5oPgot
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cnVjdHVyZUlubGluZXMuaD4KLQotbmFtZXNwYWNl
IEpTQyB7Ci1jbGFzcyBDYWxsRnJhbWU7Ci1jbGFzcyBWTTsKLX0KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1uYW1lc3BhY2UgSURCU2VydmVyIHsKLQotY2xhc3MgSURCU2VyaWFsaXphdGlvbkNv
bnRleHQgOiBwdWJsaWMgUmVmQ291bnRlZDxJREJTZXJpYWxpemF0aW9uQ29udGV4dD4gewotcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8SURCU2VyaWFsaXphdGlvbkNvbnRleHQ+IGdldE9yQ3JlYXRl
Rm9yQ3VycmVudFRocmVhZCgpOwotCi0gICAgfklEQlNlcmlhbGl6YXRpb25Db250ZXh0KCk7Ci0K
LSAgICBKU0M6OlZNJiB2bSgpOwotICAgIEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCgpOwotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IElEQlNlcmlhbGl6YXRpb25Db250ZXh0KFRo
cmVhZCYpOwotICAgIHZvaWQgaW5pdGlhbGl6ZVZNKCk7Ci0KLSAgICBSZWZQdHI8SlNDOjpWTT4g
bV92bTsKLSAgICBKU0M6OlN0cm9uZzxKU0lEQlNlcmlhbGl6YXRpb25HbG9iYWxPYmplY3Q+IG1f
Z2xvYmFsT2JqZWN0OwotICAgIFRocmVhZCYgbV90aHJlYWQ7Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBJREJTZXJ2ZXIKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tp
bmdTdG9yZS5jcHAKaW5kZXggMjRlYjBlM2ZiYzI4MTVlZjc1NDhmMDc4YWVkMzViNTQ2MGFmYzhi
ZC4uYjk4MGEzMWM1Y2Y3MDc5YTIzYzVhMmNjYmViOTMwYmUzZmRkZjg1NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdT
dG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01l
bW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgIklEQkluZGV4
SW5mby5oIgogI2luY2x1ZGUgIklEQkl0ZXJhdGVDdXJzb3JEYXRhLmgiCiAjaW5jbHVkZSAiSURC
S2V5UmFuZ2VEYXRhLmgiCi0jaW5jbHVkZSAiSURCU2VyaWFsaXphdGlvbkNvbnRleHQuaCIKICNp
bmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVtb3J5SW5kZXhDdXJzb3IuaCIKICNpbmNs
dWRlICJNZW1vcnlPYmplY3RTdG9yZS5oIgpAQCAtNDgsNyArNDcsNiBAQCBjb25zdGV4cHIgdWlu
dDY0X3QgbWF4R2VuZXJhdGVkS2V5VmFsdWUgPSAweDIwMDAwMDAwMDAwMDAwOwogTWVtb3J5SURC
QmFja2luZ1N0b3JlOjpNZW1vcnlJREJCYWNraW5nU3RvcmUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIpCiAgICAgOiBtX2lk
ZW50aWZpZXIoaWRlbnRpZmllcikKICAgICAsIG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKLSAgICAs
IG1fc2VyaWFsaXphdGlvbkNvbnRleHQoSURCU2VyaWFsaXphdGlvbkNvbnRleHQ6OmdldE9yQ3Jl
YXRlRm9yQ3VycmVudFRocmVhZCgpKQogewogfQogCkBAIC02MTYsMTEgKzYxNCw2IEBAIFJlZlB0
cjxNZW1vcnlPYmplY3RTdG9yZT4gTWVtb3J5SURCQmFja2luZ1N0b3JlOjp0YWtlT2JqZWN0U3Rv
cmVCeUlkZW50aWZpZXIodWluCiAgICAgcmV0dXJuIG9iamVjdFN0b3JlQnlJZGVudGlmaWVyOwog
fQogCi1JREJTZXJpYWxpemF0aW9uQ29udGV4dCYgTWVtb3J5SURCQmFja2luZ1N0b3JlOjpzZXJp
YWxpemF0aW9uQ29udGV4dCgpCi17Ci0gICAgcmV0dXJuIG1fc2VyaWFsaXphdGlvbkNvbnRleHQu
Z2V0KCk7Ci19Ci0KIElEQk9iamVjdFN0b3JlSW5mbyogTWVtb3J5SURCQmFja2luZ1N0b3JlOjpp
bmZvRm9yT2JqZWN0U3RvcmUodWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyKQogewogICAg
IEFTU0VSVChtX2RhdGFiYXNlSW5mbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmgKaW5k
ZXggMWQzMGJjYTYzZTU4OTA5ZjY2YzMwZjZmMzY5ZjFiMDM1Y2M5YzhkZC4uZTM1ZjNhNzQ1NTY1
NzRlOWViZTY1NWQ5MTQ4MGIxMDRlM2I2OTk0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3Rv
cmUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0zNiw3ICszNiw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgSURCU2Vy
dmVyIHsKIAotY2xhc3MgSURCU2VyaWFsaXphdGlvbkNvbnRleHQ7CiBjbGFzcyBNZW1vcnlPYmpl
Y3RTdG9yZTsKIAogY2xhc3MgTWVtb3J5SURCQmFja2luZ1N0b3JlIGZpbmFsIDogcHVibGljIElE
QkJhY2tpbmdTdG9yZSB7CkBAIC01Miw4ICs1MSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92
ZU9iamVjdFN0b3JlRm9yVmVyc2lvbkNoYW5nZUFib3J0KE1lbW9yeU9iamVjdFN0b3JlJik7CiAg
ICAgdm9pZCByZXN0b3JlT2JqZWN0U3RvcmVGb3JWZXJzaW9uQ2hhbmdlQWJvcnQoUmVmPE1lbW9y
eU9iamVjdFN0b3JlPiYmKTsKIAotICAgIElEQlNlcmlhbGl6YXRpb25Db250ZXh0JiBzZXJpYWxp
emF0aW9uQ29udGV4dCgpIGZpbmFsOwotCiBwcml2YXRlOgogICAgIElEQkVycm9yIGJlZ2luVHJh
bnNhY3Rpb24oY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJikgZmluYWw7CiAgICAgSURCRXJyb3Ig
YWJvcnRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9u
SWRlbnRpZmllcikgZmluYWw7CkBAIC05NSw3ICs5Miw2IEBAIHByaXZhdGU6CiAKICAgICBJREJE
YXRhYmFzZUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vz
c2lvbklEOwotICAgIFJlZjxJREJTZXJpYWxpemF0aW9uQ29udGV4dD4gbV9zZXJpYWxpemF0aW9u
Q29udGV4dDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCRGF0YWJhc2VJbmZvPiBtX2RhdGFiYXNl
SW5mbzsKIAogICAgIEhhc2hNYXA8SURCUmVzb3VyY2VJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9w
dHI8TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24+PiBtX3RyYW5zYWN0aW9uczsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmpl
Y3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVt
b3J5T2JqZWN0U3RvcmUuY3BwCmluZGV4IDAzYzMxMWRmZjdiMmMyNDM0OWQyN2NhODYzNDdlYzlk
YmZkZTdlOWIuLmQzYTJlY2FhMzMyZGFjYjFmOWVkNTVlMjA2M2M3ODM1M2UyOWUwODggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmpl
Y3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L01lbW9yeU9iamVjdFN0b3JlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE1LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiSURCRXJyb3Iu
aCIKICNpbmNsdWRlICJJREJHZXRBbGxSZXN1bHQuaCIKICNpbmNsdWRlICJJREJLZXlSYW5nZURh
dGEuaCIKLSNpbmNsdWRlICJJREJTZXJpYWxpemF0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIklE
QlNlcmlhbGl6YXRpb24uaCIKICNpbmNsdWRlICJJREJWYWx1ZS5oIgogI2luY2x1ZGUgIkluZGV4
S2V5LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgpAQCAtNTIsNyArNTIsNiBAQCBSZWY8TWVtb3J5
T2JqZWN0U3RvcmU+IE1lbW9yeU9iamVjdFN0b3JlOjpjcmVhdGUoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdAogCiBNZW1vcnlPYmplY3RTdG9yZTo6TWVtb3J5T2JqZWN0U3RvcmUoUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbykKICAgICA6IG1faW5m
byhpbmZvKQotICAgICwgbV9zZXJpYWxpemF0aW9uQ29udGV4dChJREJTZXJpYWxpemF0aW9uQ29u
dGV4dDo6Z2V0T3JDcmVhdGVGb3JDdXJyZW50VGhyZWFkKCkpCiB7CiB9CiAKQEAgLTI1MSw3ICsy
NTAsMTAgQEAgdm9pZCBNZW1vcnlPYmplY3RTdG9yZTo6ZGVsZXRlUmFuZ2UoY29uc3QgSURCS2V5
UmFuZ2VEYXRhJiBpbnB1dFJhbmdlKQogCiBJREJFcnJvciBNZW1vcnlPYmplY3RTdG9yZTo6YWRk
UmVjb3JkKE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgY29uc3Qg
SURCS2V5RGF0YSYga2V5RGF0YSwgY29uc3QgSURCVmFsdWUmIHZhbHVlKQogewotICAgIGF1dG8g
aW5kZXhLZXlzID0gZ2VuZXJhdGVJbmRleEtleU1hcEZvclZhbHVlKG1fc2VyaWFsaXphdGlvbkNv
bnRleHQtPmdsb2JhbE9iamVjdCgpLCBtX2luZm8sIGtleURhdGEsIHZhbHVlKTsKKyAgICBJbmRl
eElEVG9JbmRleEtleU1hcCBpbmRleEtleXM7CisgICAgY2FsbE9uSURCU2VyaWFsaXphdGlvblRo
cmVhZEFuZFdhaXQoW2luZm8gPSBtX2luZm8uaXNvbGF0ZWRDb3B5KCksIGtleURhdGEgPSBrZXlE
YXRhLmlzb2xhdGVkQ29weSgpLCB2YWx1ZSA9IHZhbHVlLmlzb2xhdGVkQ29weSgpLCAmaW5kZXhL
ZXlzXShhdXRvJiBnbG9iYWxPYmplY3QpIHsKKyAgICAgICAgaW5kZXhLZXlzID0gZ2VuZXJhdGVJ
bmRleEtleU1hcEZvclZhbHVlKGdsb2JhbE9iamVjdCwgaW5mbywga2V5RGF0YSwgdmFsdWUpOwor
ICAgIH0pOwogICAgIHJldHVybiBhZGRSZWNvcmQodHJhbnNhY3Rpb24sIGtleURhdGEsIGluZGV4
S2V5cywgdmFsdWUpOwogfQogCkBAIC0zMzgsMjAgKzM0MCwyNSBAQCBJREJFcnJvciBNZW1vcnlP
YmplY3RTdG9yZTo6cG9wdWxhdGVJbmRleFdpdGhFeGlzdGluZ1JlY29yZHMoTWVtb3J5SW5kZXgm
IGluZGV4KQogICAgIGlmICghbV9rZXlWYWx1ZVN0b3JlKQogICAgICAgICByZXR1cm4gSURCRXJy
b3IgeyB9OwogCi0gICAgSlNMb2NrSG9sZGVyIGxvY2tlcihtX3NlcmlhbGl6YXRpb25Db250ZXh0
LT52bSgpKTsKLQogICAgIGZvciAoY29uc3QgYXV0byYgaXRlcmF0b3IgOiAqbV9rZXlWYWx1ZVN0
b3JlKSB7Ci0gICAgICAgIGF1dG8ganNWYWx1ZSA9IGRlc2VyaWFsaXplSURCVmFsdWVUb0pTVmFs
dWUobV9zZXJpYWxpemF0aW9uQ29udGV4dC0+Z2xvYmFsT2JqZWN0KCksIGl0ZXJhdG9yLnZhbHVl
KTsKLSAgICAgICAgaWYgKGpzVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKKyAgICAgICAgT3B0
aW9uYWw8SW5kZXhLZXk+IHJlc3VsdEluZGV4S2V5OworICAgICAgICBjYWxsT25JREJTZXJpYWxp
emF0aW9uVGhyZWFkQW5kV2FpdChba2V5ID0gaXRlcmF0b3Iua2V5Lmlzb2xhdGVkQ29weSgpLCB2
YWx1ZSA9IGl0ZXJhdG9yLnZhbHVlLCBpbmZvID0gbV9pbmZvLmlzb2xhdGVkQ29weSgpLCBpbmRl
eEluZm8gPSBpbmRleC5pbmZvKCkuaXNvbGF0ZWRDb3B5KCksICZyZXN1bHRJbmRleEtleV0oYXV0
byYgZ2xvYmFsT2JqZWN0KSB7CisgICAgICAgICAgICBhdXRvIGpzVmFsdWUgPSBkZXNlcmlhbGl6
ZUlEQlZhbHVlVG9KU1ZhbHVlKGdsb2JhbE9iamVjdCwgdmFsdWUpOworICAgICAgICAgICAgaWYg
KGpzVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgICAgIEluZGV4S2V5IGluZGV4S2V5OworICAgICAgICAgICAgZ2VuZXJhdGVJbmRl
eEtleUZvclZhbHVlKGdsb2JhbE9iamVjdCwgaW5kZXhJbmZvLCBqc1ZhbHVlLCBpbmRleEtleSwg
aW5mby5rZXlQYXRoKCksIGtleSk7CisgICAgICAgICAgICByZXN1bHRJbmRleEtleSA9IGluZGV4
S2V5Lmlzb2xhdGVkQ29weSgpOworICAgICAgICB9KTsKKworICAgICAgICBpZiAoIXJlc3VsdElu
ZGV4S2V5KQogICAgICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgfTsKIAotICAgICAgICBJbmRl
eEtleSBpbmRleEtleTsKLSAgICAgICAgZ2VuZXJhdGVJbmRleEtleUZvclZhbHVlKG1fc2VyaWFs
aXphdGlvbkNvbnRleHQtPmdsb2JhbE9iamVjdCgpLCBpbmRleC5pbmZvKCksIGpzVmFsdWUsIGlu
ZGV4S2V5LCBtX2luZm8ua2V5UGF0aCgpLCBpdGVyYXRvci5rZXkpOwotCi0gICAgICAgIGlmIChp
bmRleEtleS5pc051bGwoKSkKKyAgICAgICAgaWYgKHJlc3VsdEluZGV4S2V5LT5pc051bGwoKSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIElEQkVycm9yIGVycm9yID0gaW5kZXgu
cHV0SW5kZXhLZXkoaXRlcmF0b3Iua2V5LCBpbmRleEtleSk7CisgICAgICAgIElEQkVycm9yIGVy
cm9yID0gaW5kZXgucHV0SW5kZXhLZXkoaXRlcmF0b3Iua2V5LCAqcmVzdWx0SW5kZXhLZXkpOwog
ICAgICAgICBpZiAoIWVycm9yLmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0dXJuIGVycm9yOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9NZW1vcnlPYmplY3RTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmgKaW5kZXggNDM0OTlkNWJjYmVjNjI2YWQxMWM0NTgy
YjZhYjY2NGRhMjZkZDAxOC4uN2Y0MWRiMjg5NWQwYTUzY2E0M2QzZGU5YTRjMmMxMGJhNmM3NTY0
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01l
bW9yeU9iamVjdFN0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTUsNyArNTUsNiBAQCBlbnVtIGNsYXNzIEluZGV4
UmVjb3JkVHlwZSA6IGJvb2w7CiAKIG5hbWVzcGFjZSBJREJTZXJ2ZXIgewogCi1jbGFzcyBJREJT
ZXJpYWxpemF0aW9uQ29udGV4dDsKIGNsYXNzIE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9u
OwogCiB0eXBlZGVmIEhhc2hNYXA8SURCS2V5RGF0YSwgVGhyZWFkU2FmZURhdGFCdWZmZXIsIElE
QktleURhdGFIYXNoLCBJREJLZXlEYXRhSGFzaFRyYWl0cz4gS2V5VmFsdWVNYXA7CkBAIC0xMzMs
OCArMTMyLDYgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8TWVtb3J5
SW5kZXg+PiBtX2luZGV4ZXNCeUlkZW50aWZpZXI7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0
cjxNZW1vcnlJbmRleD4+IG1faW5kZXhlc0J5TmFtZTsKICAgICBIYXNoTWFwPElEQlJlc291cmNl
SWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPE1lbW9yeU9iamVjdFN0b3JlQ3Vyc29yPj4gbV9j
dXJzb3JzOwotCi0gICAgUmVmPElEQlNlcmlhbGl6YXRpb25Db250ZXh0PiBtX3NlcmlhbGl6YXRp
b25Db250ZXh0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSURCU2VydmVyCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0
b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJ
REJCYWNraW5nU3RvcmUuY3BwCmluZGV4IGQ3ZmEzYmMyZWUxYzY4N2NlN2U0YTFiYmQ3YTRiMGFj
NjA2MzQ4MDcuLjZmODEyZDI0ODcwNDZmZjdmYjIxODFiMzgxNmJlMmNmZTM3NGYyZDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJC
YWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsNyArMzYsNiBAQAogI2luY2x1
ZGUgIklEQktleURhdGEuaCIKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZUluZm8uaCIKICNpbmNs
dWRlICJJREJTZXJpYWxpemF0aW9uLmgiCi0jaW5jbHVkZSAiSURCU2VyaWFsaXphdGlvbkNvbnRl
eHQuaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkluZm8uaCIKICNpbmNsdWRlICJJREJWYWx1
ZS5oIgogI2luY2x1ZGUgIkluZGV4S2V5LmgiCkBAIC0yNDEsNyArMjQwLDYgQEAgU1FMaXRlSURC
QmFja2luZ1N0b3JlOjpTUUxpdGVJREJCYWNraW5nU3RvcmUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBjb25zdCBJREIKICAgICA6IG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKICAgICAsIG1faWRl
bnRpZmllcihpZGVudGlmaWVyKQogICAgICwgbV9kYXRhYmFzZVJvb3REaXJlY3RvcnkoZGF0YWJh
c2VSb290RGlyZWN0b3J5KQotICAgICwgbV9zZXJpYWxpemF0aW9uQ29udGV4dChJREJTZXJpYWxp
emF0aW9uQ29udGV4dDo6Z2V0T3JDcmVhdGVGb3JDdXJyZW50VGhyZWFkKCkpCiB7CiAgICAgbV9k
YXRhYmFzZURpcmVjdG9yeSA9IGZ1bGxEYXRhYmFzZURpcmVjdG9yeVdpdGhVcGdyYWRlKCk7CiB9
CkBAIC0yMDc4LDE5ICsyMDc2LDI0IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
ZGVsZXRlUmFuZ2UoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjCiAKIElEQkVy
cm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dXBkYXRlT25lSW5kZXhGb3JBZGRSZWNvcmQoSURC
T2JqZWN0U3RvcmVJbmZvJiBvYmplY3RTdG9yZUluZm8sIGNvbnN0IElEQkluZGV4SW5mbyYgaW5m
bywgY29uc3QgSURCS2V5RGF0YSYga2V5LCBjb25zdCBUaHJlYWRTYWZlRGF0YUJ1ZmZlciYgdmFs
dWUsIGludDY0X3QgcmVjb3JkSUQpCiB7Ci0gICAgSlNMb2NrSG9sZGVyIGxvY2tlcihtX3Nlcmlh
bGl6YXRpb25Db250ZXh0LT52bSgpKTsKKyAgICBPcHRpb25hbDxJbmRleEtleT4gcmVzdWx0SW5k
ZXhLZXk7CisgICAgY2FsbE9uSURCU2VyaWFsaXphdGlvblRocmVhZEFuZFdhaXQoW29iamVjdFN0
b3JlSW5mbyA9IG9iamVjdFN0b3JlSW5mby5pc29sYXRlZENvcHkoKSwgaW5mbyA9IGluZm8uaXNv
bGF0ZWRDb3B5KCksIGtleSA9IGtleS5pc29sYXRlZENvcHkoKSwgdmFsdWUsICZyZXN1bHRJbmRl
eEtleV0oYXV0byYgZ2xvYmFsT2JqZWN0KSB7CisgICAgICAgIGF1dG8ganNWYWx1ZSA9IGRlc2Vy
aWFsaXplSURCVmFsdWVUb0pTVmFsdWUoZ2xvYmFsT2JqZWN0LCB2YWx1ZSk7CisgICAgICAgIGlm
IChqc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCisgICAgICAgICAgICByZXR1cm47CiAKLSAg
ICBhdXRvIGpzVmFsdWUgPSBkZXNlcmlhbGl6ZUlEQlZhbHVlVG9KU1ZhbHVlKG1fc2VyaWFsaXph
dGlvbkNvbnRleHQtPmdsb2JhbE9iamVjdCgpLCB2YWx1ZSk7Ci0gICAgaWYgKGpzVmFsdWUuaXNV
bmRlZmluZWRPck51bGwoKSkKLSAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgfTsKKyAgICAgICAg
SW5kZXhLZXkgaW5kZXhLZXk7CisgICAgICAgIGdlbmVyYXRlSW5kZXhLZXlGb3JWYWx1ZShnbG9i
YWxPYmplY3QsIGluZm8sIGpzVmFsdWUsIGluZGV4S2V5LCBvYmplY3RTdG9yZUluZm8ua2V5UGF0
aCgpLCBrZXkpOworICAgICAgICByZXN1bHRJbmRleEtleSA9IGluZGV4S2V5Lmlzb2xhdGVkQ29w
eSgpOworICAgIH0pOwogCi0gICAgSW5kZXhLZXkgaW5kZXhLZXk7Ci0gICAgZ2VuZXJhdGVJbmRl
eEtleUZvclZhbHVlKG1fc2VyaWFsaXphdGlvbkNvbnRleHQtPmdsb2JhbE9iamVjdCgpLCBpbmZv
LCBqc1ZhbHVlLCBpbmRleEtleSwgb2JqZWN0U3RvcmVJbmZvLmtleVBhdGgoKSwga2V5KTsKKyAg
ICBpZiAoIXJlc3VsdEluZGV4S2V5KQorICAgICAgICByZXR1cm4gSURCRXJyb3IgeyB9OwogCi0g
ICAgaWYgKGluZGV4S2V5LmlzTnVsbCgpKQorICAgIGlmIChyZXN1bHRJbmRleEtleS0+aXNOdWxs
KCkpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IH07CiAKLSAgICByZXR1cm4gdW5jaGVja2Vk
UHV0SW5kZXhLZXkoaW5mbywga2V5LCBpbmRleEtleSwgcmVjb3JkSUQpOworICAgIHJldHVybiB1
bmNoZWNrZWRQdXRJbmRleEtleShpbmZvLCBrZXksICpyZXN1bHRJbmRleEtleSwgcmVjb3JkSUQp
OwogfQogCiBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVwZGF0ZUFsbEluZGV4ZXNG
b3JBZGRSZWNvcmQoY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBpbmZvLCBjb25zdCBJREJLZXlE
YXRhJiBrZXksIGNvbnN0IEluZGV4SURUb0luZGV4S2V5TWFwJiBpbmRleEtleXMsIGludDY0X3Qg
cmVjb3JkSUQpCkBAIC0yOTM3LDExICsyOTQwLDYgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2lu
Z1N0b3JlOjppdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnMK
ICAgICByZXR1cm4gSURCRXJyb3IgeyB9OwogfQogCi1JREJTZXJpYWxpemF0aW9uQ29udGV4dCYg
U1FMaXRlSURCQmFja2luZ1N0b3JlOjpzZXJpYWxpemF0aW9uQ29udGV4dCgpCi17Ci0gICAgcmV0
dXJuIG1fc2VyaWFsaXphdGlvbkNvbnRleHQuZ2V0KCk7Ci19Ci0KIElEQk9iamVjdFN0b3JlSW5m
byogU1FMaXRlSURCQmFja2luZ1N0b3JlOjppbmZvRm9yT2JqZWN0U3RvcmUodWludDY0X3Qgb2Jq
ZWN0U3RvcmVJZGVudGlmaWVyKQogewogICAgIEFTU0VSVChtX2RhdGFiYXNlSW5mbyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURC
QmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
U1FMaXRlSURCQmFja2luZ1N0b3JlLmgKaW5kZXggNDFkY2JmMzk1ODU5YmVmNzNhZTMzYTMzM2U0
NmZjOGEzY2E0MjU2NS4uNTRhYzI0OTNlOTBlYWE5MjU3ZDZkYWUyNzk0ZjkxNzczMTQ0NTJmNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0
ZUlEQkJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Niw3ICs0Niw2IEBAIG5hbWVzcGFjZSBJ
REJTZXJ2ZXIgewogCiBlbnVtIGNsYXNzIElzU2NoZW1hVXBncmFkZWQgOiBib29sIHsgTm8sIFll
cyB9OwogCi1jbGFzcyBJREJTZXJpYWxpemF0aW9uQ29udGV4dDsKIGNsYXNzIFNRTGl0ZUlEQkN1
cnNvcjsKIAogY2xhc3MgU1FMaXRlSURCQmFja2luZ1N0b3JlIGZpbmFsIDogcHVibGljIElEQkJh
Y2tpbmdTdG9yZSB7CkBAIC04Miw4ICs4MSw2IEBAIHB1YmxpYzoKICAgICBJREJFcnJvciBvcGVu
Q3Vyc29yKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVy
LCBjb25zdCBJREJDdXJzb3JJbmZvJiwgSURCR2V0UmVzdWx0JiBvdXRSZXN1bHQpIGZpbmFsOwog
ICAgIElEQkVycm9yIGl0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0
cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgY3Vyc29y
SWRlbnRpZmllciwgY29uc3QgSURCSXRlcmF0ZUN1cnNvckRhdGEmLCBJREJHZXRSZXN1bHQmIG91
dFJlc3VsdCkgZmluYWw7CiAKLSAgICBJREJTZXJpYWxpemF0aW9uQ29udGV4dCYgc2VyaWFsaXph
dGlvbkNvbnRleHQoKSBmaW5hbDsKLQogICAgIElEQk9iamVjdFN0b3JlSW5mbyogaW5mb0Zvck9i
amVjdFN0b3JlKHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9p
ZCBkZWxldGVCYWNraW5nU3RvcmUoKSBmaW5hbDsKIApAQCAtMjIxLDggKzIxOCw2IEBAIHByaXZh
dGU6CiAKICAgICBTdHJpbmcgbV9kYXRhYmFzZVJvb3REaXJlY3Rvcnk7CiAgICAgU3RyaW5nIG1f
ZGF0YWJhc2VEaXJlY3Rvcnk7Ci0KLSAgICBSZWY8SURCU2VyaWFsaXphdGlvbkNvbnRleHQ+IG1f
c2VyaWFsaXphdGlvbkNvbnRleHQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJREJTZXJ2ZXIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJ
REJEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
VW5pcXVlSURCRGF0YWJhc2UuY3BwCmluZGV4IDljNDUyZjI0NWJiNGQxOTdiOWFjNzVhYWU5NWM4
ODBjMzIwYWMxOWIuLjdkYjFhYjMwNmZkYjRmOTMyYTJkMTliM2Q5MTUyNzRmYzFkNmY0ODYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJ
REJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTUsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE1LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAi
SURCSXRlcmF0ZUN1cnNvckRhdGEuaCIKICNpbmNsdWRlICJJREJLZXlSYW5nZURhdGEuaCIKICNp
bmNsdWRlICJJREJSZXN1bHREYXRhLmgiCi0jaW5jbHVkZSAiSURCU2VyaWFsaXphdGlvbkNvbnRl
eHQuaCIKKyNpbmNsdWRlICJJREJTZXJpYWxpemF0aW9uLmgiCiAjaW5jbHVkZSAiSURCU2VydmVy
LmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25JbmZvLmgiCiAjaW5jbHVkZSAiSURCVmFsdWUu
aCIKQEAgLTc0Miw3ICs3NDIsMTAgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cHV0T3JBZGQo
Y29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXkKICAgICAgICAg
dXNlZEtleSA9IGtleURhdGE7CiAKICAgICAvLyBHZW5lcmF0ZSBpbmRleCBrZXlzIHVwIGZyb250
IGZvciBtb3JlIGFjY3VyYXRlIHF1b3RhIGNoZWNrLgotICAgIGF1dG8gaW5kZXhLZXlzID0gZ2Vu
ZXJhdGVJbmRleEtleU1hcEZvclZhbHVlKG1fYmFja2luZ1N0b3JlLT5zZXJpYWxpemF0aW9uQ29u
dGV4dCgpLmdsb2JhbE9iamVjdCgpLCAqb2JqZWN0U3RvcmVJbmZvLCB1c2VkS2V5LCB2YWx1ZSk7
CisgICAgSW5kZXhJRFRvSW5kZXhLZXlNYXAgaW5kZXhLZXlzOworICAgIGNhbGxPbklEQlNlcmlh
bGl6YXRpb25UaHJlYWRBbmRXYWl0KFtvYmplY3RTdG9yZUluZm8gPSBvYmplY3RTdG9yZUluZm8t
Pmlzb2xhdGVkQ29weSgpLCBrZXkgPSB1c2VkS2V5Lmlzb2xhdGVkQ29weSgpLCB2YWx1ZSA9IHZh
bHVlLmlzb2xhdGVkQ29weSgpLCAmaW5kZXhLZXlzXShhdXRvJiBnbG9iYWxPYmplY3QpIHsKKyAg
ICAgICAgaW5kZXhLZXlzID0gZ2VuZXJhdGVJbmRleEtleU1hcEZvclZhbHVlKGdsb2JhbE9iamVj
dCwgb2JqZWN0U3RvcmVJbmZvLCBrZXksIHZhbHVlKTsKKyAgICB9KTsKIAogICAgIGlmIChvdmVy
d3JpdGVNb2RlID09IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlOjpOb092ZXJ3
cml0ZSkgewogICAgICAgICBib29sIGtleUV4aXN0czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggYTVjNzVk
Zjc5MWQ3MWJkNjczNzQ0ZmIzZjA0ODM2Yjc3MmFjOTlkOS4uYzJkZDdmYjcyZDBjNDg0MThiZTZl
MTlkZTNkYzhjMjdlNzNmYTBlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTk1LDcgKzk1LDYgQEAgTW9k
dWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAKIE1vZHVsZXMv
aW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5jcHAKIE1vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnQuY3BwCiBNb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAKLU1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJT
ZXJpYWxpemF0aW9uQ29udGV4dC5jcHAKIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2
ZXIuY3BwCiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSW5kZXhWYWx1ZUVudHJ5LmNwcAogTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0luZGV4VmFsdWVTdG9yZS5jcHAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429701</attachid>
            <date>2021-05-25 15:37:07 -0700</date>
            <delta_ts>2021-05-25 16:10:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226228-20210525153707.patch</filename>
            <type>text/plain</type>
            <size>30776</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MDM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjVmNDJkMWM1OWUwNWM4
MmEzYWIxNGZkZDBlOGQ3M2Y0OWFhMzVkNS4uZjI2MjNhOTUzZjY1OTNlNWQ2ZmNjOGRhNmVjOTFi
OWY5YTk4MzU1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIxLTA1LTI1ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjZSBhIHNoYXJl
ZCBJREIgc2VyaWFsaXphdGlvbiB0aHJlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyNjIyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEN1cnJlbnRseSBlYWNoIFdlYklEQlNlcnZlciBoYXMgaXRzIG93
biB0aHJlYWQsIGFuZCBkb2VzIHNlcmlhbGl6YXRpb24vZGVzZXJpYWxpemF0aW9uIG9uIHRoYXQg
dGhyZWFkLiBUbworICAgICAgICBwcmVwYXJlIGZvciBtYWtpbmcgV2ViSURCU2VydmVyIHVzZSBX
b3JrUXVldWUsIGxpa2UgdGhlIG90aGVyIHN0b3JhZ2UgbWFuYWdlciBjbGFzc2VzLCBsZXQncyBj
cmVhdGUgYSBzaGFyZWQKKyAgICAgICAgdGhyZWFkIGZvciBoYW5kbGluZyBhbGwgc2VyaWFsaXph
dGlvbi9kZXNlcmlhbGl6YXRpb24gb3BlcmF0aW9ucywgd2hpY2ggY2Fubm90IGJlIGRvbmUgb24g
V29ya1F1ZXVlIGFzIFZNIG5lZWRzIAorICAgICAgICB0byBhY2Nlc3MgdGhyZWFkLXNwZWNpZmlj
IGRhdGEuIE5vdyBJREIgdGFza3Mgd2lsbCBpbnZva2UgY2FsbE9uSURCU2VyaWFsaXphdGlvblRo
cmVhZEFuZFdhaXQgdG8gcGVyZm9ybSAKKyAgICAgICAgc2VyaWFsaXphdGlvbi9kZXNlcmlhbGl6
YXRpb24gb3BlcmF0aW9ucyBzeW5jaHJvbm91c2x5LgorCisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQkJhY2tpbmdTdG9yZS5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNl
cmlhbGl6YXRpb25Db250ZXh0OjpJREJTZXJpYWxpemF0aW9uQ29udGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJpYWxpemF0aW9uQ29udGV4dDo6fklEQlNlcmlhbGl6YXRpb25Db250ZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcmlhbGl6YXRpb25Db250ZXh0OjpnbG9iYWxPYmpl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VyaWFsaXphdGlvbkNvbnRleHQ6OmluaXRpYWxp
emVWTSk6CisgICAgICAgIChXZWJDb3JlOjpjYWxsT25JREJTZXJpYWxpemF0aW9uVGhyZWFkQW5k
V2FpdCk6IENyZWF0ZSBhIElEQlNlcmlhbGl6YXRpb24gdGhyZWFkIGlmIG5vdCBleGlzdHMgYW5k
IGRpc3BhdGNoIGEgCisgICAgICAgIHN5bmNocm9ub3VzIHRhc2sgdG8gaXQuCisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaDoKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbkNvbnRleHQuY3BwOiBSZW1v
dmVkLiBNb3ZlZCB0byBJREJTZXJpYWxpemF0aW9uLmNwcCBhcyAKKyAgICAgICAgSURCU2VyaWFs
aXphdGlvbkNvbnRleHQgaXMgb25seSB1c2VkIGJ5IElEQlNlcmlhbGl6YXRpb24gdGhyZWFkIG5v
dy4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbkNv
bnRleHQuaDogUmVtb3ZlZC4gRGl0dG8uCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2
ZXI6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6TWVtb3J5SURCQmFja2luZ1N0b3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5SURCQmFja2luZ1N0b3JlOjpzZXJpYWxpemF0
aW9uQ29udGV4dCk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9NZW1vcnlPYmplY3RTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
Ok1lbW9yeU9iamVjdFN0b3JlOjpNZW1vcnlPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6Ok1lbW9yeU9iamVjdFN0b3JlOjphZGRSZWNvcmQpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpNZW1vcnlPYmplY3RTdG9yZTo6cG9wdWxhdGVJbmRleFdpdGhFeGlz
dGluZ1JlY29yZHMpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlP
YmplY3RTdG9yZS5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJ
REJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dXBkYXRlT25lSW5kZXhGb3JBZGRS
ZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3Rv
cmU6OnNlcmlhbGl6YXRpb25Db250ZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmg6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OnB1dE9yQWRkKToKKyAgICAgICAgKiBT
b3VyY2VzLnR4dDoKKwogMjAyMS0wNS0yNCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+
CiAKICAgICAgICAgU3dpdGNoIGZyb20gV1RGOjpPcHRpb25hbCB0byBzdGQ6Om9wdGlvbmFsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQmFj
a2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURC
QmFja2luZ1N0b3JlLmgKaW5kZXggZTQ1ZDhhY2Y0YzE1NzI5YTFiM2MxNWMzNDQwYWVkZTM4OGZj
Mjk3YS4uMDZjNjQ2ZDMzZjdmZWY4ZDkxMTRiYmE2NGU3N2NjYTAxMzY2NDU0ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkJhY2tpbmdTdG9y
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJCYWNr
aW5nU3RvcmUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC01NSw4ICs1NSw2IEBAIGVudW0gY2xhc3MgSW5kZXhSZWNvcmRUeXBlIDogYm9v
bDsKIAogbmFtZXNwYWNlIElEQlNlcnZlciB7CiAKLWNsYXNzIElEQlNlcmlhbGl6YXRpb25Db250
ZXh0OwotCiBjbGFzcyBJREJCYWNraW5nU3RvcmUgewogcHVibGljOgogICAgIHZpcnR1YWwgfklE
QkJhY2tpbmdTdG9yZSgpIHsgUkVMRUFTRV9BU1NFUlQoIWlzTWFpblRocmVhZCgpKTsgfQpAQCAt
ODgsOCArODYsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBJREJFcnJvciBvcGVuQ3Vyc29yKGNv
bnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJ
REJDdXJzb3JJbmZvJiwgSURCR2V0UmVzdWx0JiBvdXRSZXN1bHQpID0gMDsKICAgICB2aXJ0dWFs
IElEQkVycm9yIGl0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFu
c2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgY3Vyc29ySWRl
bnRpZmllciwgY29uc3QgSURCSXRlcmF0ZUN1cnNvckRhdGEmLCBJREJHZXRSZXN1bHQmIG91dFJl
c3VsdCkgPSAwOwogCi0gICAgdmlydHVhbCBJREJTZXJpYWxpemF0aW9uQ29udGV4dCYgc2VyaWFs
aXphdGlvbkNvbnRleHQoKSA9IDA7Ci0KICAgICB2aXJ0dWFsIElEQk9iamVjdFN0b3JlSW5mbyog
aW5mb0Zvck9iamVjdFN0b3JlKHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBkZWxldGVCYWNraW5nU3RvcmUoKSA9IDA7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxp
emF0aW9uLmNwcAppbmRleCA5ZjA2NGQ5MjgwN2IyZTA5NzNhODg4MjlhY2IwYWNmYTFmMzVlOTRl
Li43NWM3NGE5NzRhMjM5MzM0YTg0NWQyY2IzZTYxNGYyNzY1MzdmZGJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlh
bGl6YXRpb24uY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCwg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTQtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDcgKzI4LDEzIEBACiAKICNpbmNsdWRlICJJREJLZXlEYXRh
LmgiCiAjaW5jbHVkZSAiSURCS2V5UGF0aC5oIgorI2luY2x1ZGUgIkpTSURCU2VyaWFsaXphdGlv
bkdsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIktleWVkQ29kaW5nLmgiCisjaW5jbHVkZSAiV2Vi
Q29yZUpTQ2xpZW50RGF0YS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZ0lubGlu
ZXMuaD4KKyNpbmNsdWRlIDx3dGYvQXV0b2RyYWluZWRQb29sLmg+CisjaW5jbHVkZSA8d3RmL01l
c3NhZ2VRdWV1ZS5oPgorI2luY2x1ZGUgPHd0Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5oPgog
CiAjaWYgVVNFKEdMSUIpCiAjaW5jbHVkZSA8Z2xpYi5oPgpAQCAtNDE3LDQgKzQyMyw3NCBAQCBi
b29sIGRlc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6
ZSwgSURCS2V5RGF0YSYgcmVzdWx0KQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorY2xhc3MgSURC
U2VyaWFsaXphdGlvbkNvbnRleHQgOiBwdWJsaWMgUmVmQ291bnRlZDxJREJTZXJpYWxpemF0aW9u
Q29udGV4dD4geworcHVibGljOgorICAgIElEQlNlcmlhbGl6YXRpb25Db250ZXh0KCkKKyAgICAg
ICAgOiBtX3RocmVhZChUaHJlYWQ6OmN1cnJlbnQoKSkKKyAgICB7CisgICAgfQorCisgICAgfklE
QlNlcmlhbGl6YXRpb25Db250ZXh0KCkKKyAgICB7CisgICAgICAgIEFTU0VSVCgmbV90aHJlYWQg
PT0gJlRocmVhZDo6Y3VycmVudCgpKTsKKyAgICAgICAgaWYgKCFtX3ZtKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soKm1fdm0pOworICAgICAg
ICBtX2dsb2JhbE9iamVjdC5jbGVhcigpOworICAgICAgICBtX3ZtID0gbnVsbHB0cjsKKyAgICB9
CisKKyAgICBKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QoKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKCZtX3RocmVhZCA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOworCisgICAgICAgIGlu
aXRpYWxpemVWTSgpOworICAgICAgICByZXR1cm4gKm1fZ2xvYmFsT2JqZWN0LmdldCgpOworICAg
IH0KKworcHJpdmF0ZToKKyAgICB2b2lkIGluaXRpYWxpemVWTSgpCisgICAgeworICAgICAgICBp
ZiAobV92bSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBBU1NFUlQoIW1fZ2xvYmFs
T2JqZWN0KTsKKyAgICAgICAgbV92bSA9IEpTQzo6Vk06OmNyZWF0ZSgpOworICAgICAgICBtX3Zt
LT5oZWFwLmFjcXVpcmVBY2Nlc3MoKTsKKyAgICAgICAgSlNWTUNsaWVudERhdGE6OmluaXROb3Jt
YWxXb3JsZChtX3ZtLmdldCgpLCBXb3JrZXJUaHJlYWRUeXBlOjpXb3JrbGV0KTsKKworICAgICAg
ICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIobV92bS5nZXQoKSk7CisgICAgICAgIG1fZ2xvYmFs
T2JqZWN0LnNldCgqbV92bSwgSlNJREJTZXJpYWxpemF0aW9uR2xvYmFsT2JqZWN0OjpjcmVhdGUo
Km1fdm0sIEpTSURCU2VyaWFsaXphdGlvbkdsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKCpt
X3ZtLCBKU0M6OmpzTnVsbCgpKSwgbm9ybWFsV29ybGQoKm1fdm0pKSk7CisgICAgfQorCisgICAg
UmVmUHRyPEpTQzo6Vk0+IG1fdm07CisgICAgSlNDOjpTdHJvbmc8SlNJREJTZXJpYWxpemF0aW9u
R2xvYmFsT2JqZWN0PiBtX2dsb2JhbE9iamVjdDsKKyAgICBUaHJlYWQmIG1fdGhyZWFkOworfTsK
Kwordm9pZCBjYWxsT25JREJTZXJpYWxpemF0aW9uVGhyZWFkQW5kV2FpdChGdW5jdGlvbjx2b2lk
KEpTQzo6SlNHbG9iYWxPYmplY3QmKT4mJiBmdW5jdGlvbikKK3sKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8TWVzc2FnZVF1ZXVlPEZ1bmN0aW9uPHZvaWQoSlNDOjpKU0dsb2JhbE9iamVjdCYp
Pj4+IHF1ZXVlOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBjcmVhdGVUaHJlYWQ7CisKKyAg
ICBzdGQ6OmNhbGxfb25jZShjcmVhdGVUaHJlYWQsIFtdIHsKKyAgICAgICAgVGhyZWFkOjpjcmVh
dGUoIkluZGV4ZWREQiBTZXJpYWxpemF0aW9uIiwgW10geworICAgICAgICAgICAgYXV0byBzZXJp
YWxpemF0aW9uQ29udGV4dCA9IGFkb3B0UmVmKCpuZXcgSURCU2VyaWFsaXphdGlvbkNvbnRleHQo
KSk7CisgICAgICAgICAgICB3aGlsZSAoYXV0byBmdW5jdGlvbiA9IHF1ZXVlLT53YWl0Rm9yTWVz
c2FnZSgpKSB7CisgICAgICAgICAgICAgICAgQXV0b2RyYWluZWRQb29sIHBvb2w7CisgICAgICAg
ICAgICAgICAgKCpmdW5jdGlvbikoc2VyaWFsaXphdGlvbkNvbnRleHQtPmdsb2JhbE9iamVjdCgp
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfSk7CisKKyAgICBCaW5hcnlTZW1h
cGhvcmUgc2VtYXBob3JlOworICAgIGF1dG8gbmV3RnVudGlvbiA9IFsmc2VtYXBob3JlLCBmdW5j
dGlvbiA9IFdURk1vdmUoZnVuY3Rpb24pXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmpl
Y3QpIHsKKyAgICAgICAgZnVuY3Rpb24oZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgc2VtYXBob3Jl
LnNpZ25hbCgpOworICAgIH07CisgICAgcXVldWUtPmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9u
PHZvaWQoSlNDOjpKU0dsb2JhbE9iamVjdCYpPj4oV1RGTW92ZShuZXdGdW50aW9uKSkpOworICAg
IHNlbWFwaG9yZS53YWl0KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFs
aXphdGlvbi5oCmluZGV4IGY1ZjY3NDQyZTM2NzhhMjBhZWI1OGZlYWM5YWMzOWY3OGM1ZTFkNzku
LjM0NzlhM2U0ZjA1MTdhMjhhYzBjMTY4NzkyNTgyMWMyM2FmOTVlYjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6
YXRpb24uaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0zMCw2ICszMCwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK25h
bWVzcGFjZSBKU0MgeworY2xhc3MgSlNHbG9iYWxPYmplY3Q7Cit9CisKIGNsYXNzIElEQktleURh
dGE7CiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3QgT3B0
aW9uYWw8SURCS2V5UGF0aD4mKTsKQEAgLTM4LDQgKzQyLDYgQEAgYm9vbCBkZXNlcmlhbGl6ZUlE
QktleVBhdGgoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgT3B0aW9u
YWw8SUQKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleURhdGEoY29uc3QgSURC
S2V5RGF0YSYpOwogYm9vbCBkZXNlcmlhbGl6ZUlEQktleURhdGEoY29uc3QgdWludDhfdCogYnVm
ZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgSURCS2V5RGF0YSYpOwogCit2b2lkIGNhbGxPbklEQlNl
cmlhbGl6YXRpb25UaHJlYWRBbmRXYWl0KEZ1bmN0aW9uPHZvaWQoSlNDOjpKU0dsb2JhbE9iamVj
dCYpPiYmKTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb25Db250ZXh0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0
aW9uQ29udGV4dC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxM2IxYmNlNjIw
MzI1MWZiN2M1ODFiYTM0NWU0YzZmMGMxYTE0ODMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL0lEQlNlcmlhbGl6YXRpb25Db250ZXh0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwOSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIklEQlNl
cmlhbGl6YXRpb25Db250ZXh0LmgiCi0KLSNpbmNsdWRlICJET01XcmFwcGVyV29ybGQuaCIKLSNp
bmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNPYmplY3RJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8d3RmL0xvY2suaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1uYW1lc3BhY2UgSURCU2VydmVyIHsKLQotc3RhdGljIExvY2sgc2VyaWFsaXph
dGlvbkNvbnRleHRNYXBMb2NrOwotCi1zdGF0aWMgSGFzaE1hcDxUaHJlYWQqLCBJREJTZXJpYWxp
emF0aW9uQ29udGV4dCo+JiBzZXJpYWxpemF0aW9uQ29udGV4dE1hcCgpIFdURl9SRVFVSVJFU19M
T0NLKHNlcmlhbGl6YXRpb25Db250ZXh0TWFwTG9jaykKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8SGFzaE1hcDxUaHJlYWQqLCBJREJTZXJpYWxpemF0aW9uQ29udGV4dCo+PiBtYXA7Ci0g
ICAgcmV0dXJuIG1hcDsKLX0KLQotUmVmPElEQlNlcmlhbGl6YXRpb25Db250ZXh0PiBJREJTZXJp
YWxpemF0aW9uQ29udGV4dDo6Z2V0T3JDcmVhdGVGb3JDdXJyZW50VGhyZWFkKCkKLXsKLSAgICBh
dXRvJiB0aHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsKLSAgICBMb2NrZXIgbG9ja2VyIHsgc2Vy
aWFsaXphdGlvbkNvbnRleHRNYXBMb2NrIH07Ci0gICAgYXV0b1tpdGVyLCBpc05ld0VudHJ5XSA9
IHNlcmlhbGl6YXRpb25Db250ZXh0TWFwKCkuYWRkKCZ0aHJlYWQsIG51bGxwdHIpOwotICAgIGlm
IChpc05ld0VudHJ5KSB7Ci0gICAgICAgIFJlZjxJREJTZXJpYWxpemF0aW9uQ29udGV4dD4gcHJv
dGVjdGVkQ29udGV4dCA9IGFkb3B0UmVmKCpuZXcgSURCU2VyaWFsaXphdGlvbkNvbnRleHQodGhy
ZWFkKSk7Ci0gICAgICAgIGl0ZXItPnZhbHVlID0gcHJvdGVjdGVkQ29udGV4dC5wdHIoKTsKLSAg
ICAgICAgcmV0dXJuIHByb3RlY3RlZENvbnRleHQ7Ci0gICAgfQotCi0gICAgcmV0dXJuICppdGVy
LT52YWx1ZTsKLX0KLQotSURCU2VyaWFsaXphdGlvbkNvbnRleHQ6On5JREJTZXJpYWxpemF0aW9u
Q29udGV4dCgpCi17Ci0gICAgTG9ja2VyIGxvY2tlciB7IHNlcmlhbGl6YXRpb25Db250ZXh0TWFw
TG9jayB9OwotICAgIEFTU0VSVCh0aGlzID09IHNlcmlhbGl6YXRpb25Db250ZXh0TWFwKCkuZ2V0
KCZtX3RocmVhZCkpOwotCi0gICAgaWYgKG1fdm0pIHsKLSAgICAgICAgSlNDOjpKU0xvY2tIb2xk
ZXIgbG9jaygqbV92bSk7Ci0gICAgICAgIG1fZ2xvYmFsT2JqZWN0LmNsZWFyKCk7Ci0gICAgICAg
IG1fdm0gPSBudWxscHRyOwotICAgIH0KLSAgICBzZXJpYWxpemF0aW9uQ29udGV4dE1hcCgpLnJl
bW92ZSgmbV90aHJlYWQpOwotfQotCi12b2lkIElEQlNlcmlhbGl6YXRpb25Db250ZXh0Ojppbml0
aWFsaXplVk0oKQotewotICAgIGlmIChtX3ZtKQotICAgICAgICByZXR1cm47Ci0KLSAgICBBU1NF
UlQoIW1fZ2xvYmFsT2JqZWN0KTsKLSAgICBtX3ZtID0gSlNDOjpWTTo6Y3JlYXRlKCk7Ci0gICAg
bV92bS0+aGVhcC5hY3F1aXJlQWNjZXNzKCk7Ci0gICAgSlNWTUNsaWVudERhdGE6OmluaXROb3Jt
YWxXb3JsZChtX3ZtLmdldCgpLCBXb3JrZXJUaHJlYWRUeXBlOjpXb3JrbGV0KTsKLQotICAgIEpT
Qzo6SlNMb2NrSG9sZGVyIGxvY2tlcihtX3ZtLmdldCgpKTsKLSAgICBtX2dsb2JhbE9iamVjdC5z
ZXQoKm1fdm0sIEpTSURCU2VyaWFsaXphdGlvbkdsb2JhbE9iamVjdDo6Y3JlYXRlKCptX3ZtLCBK
U0lEQlNlcmlhbGl6YXRpb25HbG9iYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSgqbV92bSwgSlND
Ojpqc051bGwoKSksIG5vcm1hbFdvcmxkKCptX3ZtKSkpOwotfQotCi1KU0M6OlZNJiBJREJTZXJp
YWxpemF0aW9uQ29udGV4dDo6dm0oKQotewotICAgIEFTU0VSVCgmbV90aHJlYWQgPT0gJlRocmVh
ZDo6Y3VycmVudCgpKTsKLQotICAgIGluaXRpYWxpemVWTSgpOwotICAgIHJldHVybiAqbV92bTsK
LX0KLQotSlNDOjpKU0dsb2JhbE9iamVjdCYgSURCU2VyaWFsaXphdGlvbkNvbnRleHQ6Omdsb2Jh
bE9iamVjdCgpCi17Ci0gICAgQVNTRVJUKCZtX3RocmVhZCA9PSAmVGhyZWFkOjpjdXJyZW50KCkp
OwotCi0gICAgaW5pdGlhbGl6ZVZNKCk7Ci0gICAgcmV0dXJuICptX2dsb2JhbE9iamVjdC5nZXQo
KTsKLX0KLQotSURCU2VyaWFsaXphdGlvbkNvbnRleHQ6OklEQlNlcmlhbGl6YXRpb25Db250ZXh0
KFRocmVhZCYgdGhyZWFkKQotICAgIDogbV90aHJlYWQodGhyZWFkKQotewotfQotCi19IC8vIG5h
bWVzcGFjZSBJREJTZXJ2ZXIKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uQ29u
dGV4dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlh
bGl6YXRpb25Db250ZXh0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFmZGVjMDA3
MWU4MDg5ZTk0YzY3NTNiNmY1MGU3YzEwOWM3Njg5YjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL0lEQlNlcmlhbGl6YXRpb25Db250ZXh0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJKU0lEQlNlcmlh
bGl6YXRpb25HbG9iYWxPYmplY3QuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmdJ
bmxpbmVzLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3RydWN0dXJlSW5saW5lcy5oPgot
Ci1uYW1lc3BhY2UgSlNDIHsKLWNsYXNzIENhbGxGcmFtZTsKLWNsYXNzIFZNOwotfQotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBJREJTZXJ2ZXIgewotCi1jbGFzcyBJREJTZXJp
YWxpemF0aW9uQ29udGV4dCA6IHB1YmxpYyBSZWZDb3VudGVkPElEQlNlcmlhbGl6YXRpb25Db250
ZXh0PiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxJREJTZXJpYWxpemF0aW9uQ29udGV4dD4g
Z2V0T3JDcmVhdGVGb3JDdXJyZW50VGhyZWFkKCk7Ci0KLSAgICB+SURCU2VyaWFsaXphdGlvbkNv
bnRleHQoKTsKLQotICAgIEpTQzo6Vk0mIHZtKCk7Ci0gICAgSlNDOjpKU0dsb2JhbE9iamVjdCYg
Z2xvYmFsT2JqZWN0KCk7Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgSURCU2VyaWFsaXphdGlv
bkNvbnRleHQoVGhyZWFkJik7Ci0gICAgdm9pZCBpbml0aWFsaXplVk0oKTsKLQotICAgIFJlZlB0
cjxKU0M6OlZNPiBtX3ZtOwotICAgIEpTQzo6U3Ryb25nPEpTSURCU2VyaWFsaXphdGlvbkdsb2Jh
bE9iamVjdD4gbV9nbG9iYWxPYmplY3Q7Ci0gICAgVGhyZWFkJiBtX3RocmVhZDsKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIElEQlNlcnZlcgotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tp
bmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVt
b3J5SURCQmFja2luZ1N0b3JlLmNwcAppbmRleCAyNGViMGUzZmJjMjgxNWVmNzU0OGYwNzhhZWQz
NWI1NDYwYWZjOGJkLi5iOTgwYTMxYzVjZjcwNzlhMjNjNWEyY2NiZWI5MzBiZTNmZGRmODU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5
SURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE1LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVk
ZSAiSURCSW5kZXhJbmZvLmgiCiAjaW5jbHVkZSAiSURCSXRlcmF0ZUN1cnNvckRhdGEuaCIKICNp
bmNsdWRlICJJREJLZXlSYW5nZURhdGEuaCIKLSNpbmNsdWRlICJJREJTZXJpYWxpemF0aW9uQ29u
dGV4dC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZW1vcnlJbmRleEN1cnNv
ci5oIgogI2luY2x1ZGUgIk1lbW9yeU9iamVjdFN0b3JlLmgiCkBAIC00OCw3ICs0Nyw2IEBAIGNv
bnN0ZXhwciB1aW50NjRfdCBtYXhHZW5lcmF0ZWRLZXlWYWx1ZSA9IDB4MjAwMDAwMDAwMDAwMDA7
CiBNZW1vcnlJREJCYWNraW5nU3RvcmU6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYgaWRlbnRpZmllcikK
ICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lv
bklEKQotICAgICwgbV9zZXJpYWxpemF0aW9uQ29udGV4dChJREJTZXJpYWxpemF0aW9uQ29udGV4
dDo6Z2V0T3JDcmVhdGVGb3JDdXJyZW50VGhyZWFkKCkpCiB7CiB9CiAKQEAgLTYxNiwxMSArNjE0
LDYgQEAgUmVmUHRyPE1lbW9yeU9iamVjdFN0b3JlPiBNZW1vcnlJREJCYWNraW5nU3RvcmU6OnRh
a2VPYmplY3RTdG9yZUJ5SWRlbnRpZmllcih1aW4KICAgICByZXR1cm4gb2JqZWN0U3RvcmVCeUlk
ZW50aWZpZXI7CiB9CiAKLUlEQlNlcmlhbGl6YXRpb25Db250ZXh0JiBNZW1vcnlJREJCYWNraW5n
U3RvcmU6OnNlcmlhbGl6YXRpb25Db250ZXh0KCkKLXsKLSAgICByZXR1cm4gbV9zZXJpYWxpemF0
aW9uQ29udGV4dC5nZXQoKTsKLX0KLQogSURCT2JqZWN0U3RvcmVJbmZvKiBNZW1vcnlJREJCYWNr
aW5nU3RvcmU6OmluZm9Gb3JPYmplY3RTdG9yZSh1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZp
ZXIpCiB7CiAgICAgQVNTRVJUKG1fZGF0YWJhc2VJbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5n
U3RvcmUuaAppbmRleCAxZDMwYmNhNjNlNTg5MDlmNjZjMzBmNmYzNjlmMWIwMzVjYzljOGRkLi5l
MzVmM2E3NDU1NjU3NGU5ZWJlNjU1ZDkxNDgwYjEwNGUzYjY5OTQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3Jl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlE
QkJhY2tpbmdTdG9yZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTM2LDcgKzM2LDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVz
cGFjZSBJREJTZXJ2ZXIgewogCi1jbGFzcyBJREJTZXJpYWxpemF0aW9uQ29udGV4dDsKIGNsYXNz
IE1lbW9yeU9iamVjdFN0b3JlOwogCiBjbGFzcyBNZW1vcnlJREJCYWNraW5nU3RvcmUgZmluYWwg
OiBwdWJsaWMgSURCQmFja2luZ1N0b3JlIHsKQEAgLTUyLDggKzUxLDYgQEAgcHVibGljOgogICAg
IHZvaWQgcmVtb3ZlT2JqZWN0U3RvcmVGb3JWZXJzaW9uQ2hhbmdlQWJvcnQoTWVtb3J5T2JqZWN0
U3RvcmUmKTsKICAgICB2b2lkIHJlc3RvcmVPYmplY3RTdG9yZUZvclZlcnNpb25DaGFuZ2VBYm9y
dChSZWY8TWVtb3J5T2JqZWN0U3RvcmU+JiYpOwogCi0gICAgSURCU2VyaWFsaXphdGlvbkNvbnRl
eHQmIHNlcmlhbGl6YXRpb25Db250ZXh0KCkgZmluYWw7Ci0KIHByaXZhdGU6CiAgICAgSURCRXJy
b3IgYmVnaW5UcmFuc2FjdGlvbihjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mKSBmaW5hbDsKICAg
ICBJREJFcnJvciBhYm9ydFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYg
dHJhbnNhY3Rpb25JZGVudGlmaWVyKSBmaW5hbDsKQEAgLTk1LDcgKzkyLDYgQEAgcHJpdmF0ZToK
IAogICAgIElEQkRhdGFiYXNlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgUEFMOjpTZXNz
aW9uSUQgbV9zZXNzaW9uSUQ7Ci0gICAgUmVmPElEQlNlcmlhbGl6YXRpb25Db250ZXh0PiBtX3Nl
cmlhbGl6YXRpb25Db250ZXh0OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJEYXRhYmFzZUluZm8+
IG1fZGF0YWJhc2VJbmZvOwogCiAgICAgSGFzaE1hcDxJREJSZXNvdXJjZUlkZW50aWZpZXIsIHN0
ZDo6dW5pcXVlX3B0cjxNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbj4+IG1fdHJhbnNhY3Rp
b25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L01lbW9yeU9iamVjdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5jcHAKaW5kZXggMDNjMzExZGZmN2IyYzI0MzQ5ZDI3
Y2E4NjM0N2VjOWRiZmRlN2U5Yi4uZDNhMmVjYWEzMzJkYWNiMWY5ZWQ1NWUyMDYzYzc4MzUzZTI5
ZTA4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L01lbW9yeU9iamVjdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRl
ICJJREJFcnJvci5oIgogI2luY2x1ZGUgIklEQkdldEFsbFJlc3VsdC5oIgogI2luY2x1ZGUgIklE
QktleVJhbmdlRGF0YS5oIgotI2luY2x1ZGUgIklEQlNlcmlhbGl6YXRpb25Db250ZXh0LmgiCisj
aW5jbHVkZSAiSURCU2VyaWFsaXphdGlvbi5oIgogI2luY2x1ZGUgIklEQlZhbHVlLmgiCiAjaW5j
bHVkZSAiSW5kZXhLZXkuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCkBAIC01Miw3ICs1Miw2IEBA
IFJlZjxNZW1vcnlPYmplY3RTdG9yZT4gTWVtb3J5T2JqZWN0U3RvcmU6OmNyZWF0ZShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0CiAKIE1lbW9yeU9iamVjdFN0b3JlOjpNZW1vcnlPYmpl
Y3RTdG9yZShQQUw6OlNlc3Npb25JRCwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBpbmZvKQog
ICAgIDogbV9pbmZvKGluZm8pCi0gICAgLCBtX3NlcmlhbGl6YXRpb25Db250ZXh0KElEQlNlcmlh
bGl6YXRpb25Db250ZXh0OjpnZXRPckNyZWF0ZUZvckN1cnJlbnRUaHJlYWQoKSkKIHsKIH0KIApA
QCAtMjUxLDcgKzI1MCwxMCBAQCB2b2lkIE1lbW9yeU9iamVjdFN0b3JlOjpkZWxldGVSYW5nZShj
b25zdCBJREJLZXlSYW5nZURhdGEmIGlucHV0UmFuZ2UpCiAKIElEQkVycm9yIE1lbW9yeU9iamVj
dFN0b3JlOjphZGRSZWNvcmQoTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24mIHRyYW5zYWN0
aW9uLCBjb25zdCBJREJLZXlEYXRhJiBrZXlEYXRhLCBjb25zdCBJREJWYWx1ZSYgdmFsdWUpCiB7
Ci0gICAgYXV0byBpbmRleEtleXMgPSBnZW5lcmF0ZUluZGV4S2V5TWFwRm9yVmFsdWUobV9zZXJp
YWxpemF0aW9uQ29udGV4dC0+Z2xvYmFsT2JqZWN0KCksIG1faW5mbywga2V5RGF0YSwgdmFsdWUp
OworICAgIEluZGV4SURUb0luZGV4S2V5TWFwIGluZGV4S2V5czsKKyAgICBjYWxsT25JREJTZXJp
YWxpemF0aW9uVGhyZWFkQW5kV2FpdChbaW5mbyA9IG1faW5mby5pc29sYXRlZENvcHkoKSwga2V5
RGF0YSA9IGtleURhdGEuaXNvbGF0ZWRDb3B5KCksIHZhbHVlID0gdmFsdWUuaXNvbGF0ZWRDb3B5
KCksICZpbmRleEtleXNdKGF1dG8mIGdsb2JhbE9iamVjdCkgeworICAgICAgICBpbmRleEtleXMg
PSBnZW5lcmF0ZUluZGV4S2V5TWFwRm9yVmFsdWUoZ2xvYmFsT2JqZWN0LCBpbmZvLCBrZXlEYXRh
LCB2YWx1ZSk7CisgICAgfSk7CiAgICAgcmV0dXJuIGFkZFJlY29yZCh0cmFuc2FjdGlvbiwga2V5
RGF0YSwgaW5kZXhLZXlzLCB2YWx1ZSk7CiB9CiAKQEAgLTMzOCwyMCArMzQwLDI1IEBAIElEQkVy
cm9yIE1lbW9yeU9iamVjdFN0b3JlOjpwb3B1bGF0ZUluZGV4V2l0aEV4aXN0aW5nUmVjb3JkcyhN
ZW1vcnlJbmRleCYgaW5kZXgpCiAgICAgaWYgKCFtX2tleVZhbHVlU3RvcmUpCiAgICAgICAgIHJl
dHVybiBJREJFcnJvciB7IH07CiAKLSAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKG1fc2VyaWFsaXph
dGlvbkNvbnRleHQtPnZtKCkpOwotCiAgICAgZm9yIChjb25zdCBhdXRvJiBpdGVyYXRvciA6ICpt
X2tleVZhbHVlU3RvcmUpIHsKLSAgICAgICAgYXV0byBqc1ZhbHVlID0gZGVzZXJpYWxpemVJREJW
YWx1ZVRvSlNWYWx1ZShtX3NlcmlhbGl6YXRpb25Db250ZXh0LT5nbG9iYWxPYmplY3QoKSwgaXRl
cmF0b3IudmFsdWUpOwotICAgICAgICBpZiAoanNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQor
ICAgICAgICBPcHRpb25hbDxJbmRleEtleT4gcmVzdWx0SW5kZXhLZXk7CisgICAgICAgIGNhbGxP
bklEQlNlcmlhbGl6YXRpb25UaHJlYWRBbmRXYWl0KFtrZXkgPSBpdGVyYXRvci5rZXkuaXNvbGF0
ZWRDb3B5KCksIHZhbHVlID0gaXRlcmF0b3IudmFsdWUsIGluZm8gPSBtX2luZm8uaXNvbGF0ZWRD
b3B5KCksIGluZGV4SW5mbyA9IGluZGV4LmluZm8oKS5pc29sYXRlZENvcHkoKSwgJnJlc3VsdElu
ZGV4S2V5XShhdXRvJiBnbG9iYWxPYmplY3QpIHsKKyAgICAgICAgICAgIGF1dG8ganNWYWx1ZSA9
IGRlc2VyaWFsaXplSURCVmFsdWVUb0pTVmFsdWUoZ2xvYmFsT2JqZWN0LCB2YWx1ZSk7CisgICAg
ICAgICAgICBpZiAoanNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQorICAgICAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICAgICAgSW5kZXhLZXkgaW5kZXhLZXk7CisgICAgICAgICAgICBn
ZW5lcmF0ZUluZGV4S2V5Rm9yVmFsdWUoZ2xvYmFsT2JqZWN0LCBpbmRleEluZm8sIGpzVmFsdWUs
IGluZGV4S2V5LCBpbmZvLmtleVBhdGgoKSwga2V5KTsKKyAgICAgICAgICAgIHJlc3VsdEluZGV4
S2V5ID0gaW5kZXhLZXkuaXNvbGF0ZWRDb3B5KCk7CisgICAgICAgIH0pOworCisgICAgICAgIGlm
ICghcmVzdWx0SW5kZXhLZXkpCiAgICAgICAgICAgICByZXR1cm4gSURCRXJyb3IgeyB9OwogCi0g
ICAgICAgIEluZGV4S2V5IGluZGV4S2V5OwotICAgICAgICBnZW5lcmF0ZUluZGV4S2V5Rm9yVmFs
dWUobV9zZXJpYWxpemF0aW9uQ29udGV4dC0+Z2xvYmFsT2JqZWN0KCksIGluZGV4LmluZm8oKSwg
anNWYWx1ZSwgaW5kZXhLZXksIG1faW5mby5rZXlQYXRoKCksIGl0ZXJhdG9yLmtleSk7Ci0KLSAg
ICAgICAgaWYgKGluZGV4S2V5LmlzTnVsbCgpKQorICAgICAgICBpZiAocmVzdWx0SW5kZXhLZXkt
PmlzTnVsbCgpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgSURCRXJyb3IgZXJy
b3IgPSBpbmRleC5wdXRJbmRleEtleShpdGVyYXRvci5rZXksIGluZGV4S2V5KTsKKyAgICAgICAg
SURCRXJyb3IgZXJyb3IgPSBpbmRleC5wdXRJbmRleEtleShpdGVyYXRvci5rZXksICpyZXN1bHRJ
bmRleEtleSk7CiAgICAgICAgIGlmICghZXJyb3IuaXNOdWxsKCkpCiAgICAgICAgICAgICByZXR1
cm4gZXJyb3I7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaAppbmRleCA0MzQ5OWQ1YmNiZWM2
MjZhZDExYzQ1ODJiNmFiNjY0ZGEyNmRkMDE4Li43ZjQxZGIyODk1ZDBhNTNjYTQzZDNkZTlhNGMy
YzEwYmE2Yzc1NjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01NSw3ICs1NSw2IEBAIGVudW0g
Y2xhc3MgSW5kZXhSZWNvcmRUeXBlIDogYm9vbDsKIAogbmFtZXNwYWNlIElEQlNlcnZlciB7CiAK
LWNsYXNzIElEQlNlcmlhbGl6YXRpb25Db250ZXh0OwogY2xhc3MgTWVtb3J5QmFja2luZ1N0b3Jl
VHJhbnNhY3Rpb247CiAKIHR5cGVkZWYgSGFzaE1hcDxJREJLZXlEYXRhLCBUaHJlYWRTYWZlRGF0
YUJ1ZmZlciwgSURCS2V5RGF0YUhhc2gsIElEQktleURhdGFIYXNoVHJhaXRzPiBLZXlWYWx1ZU1h
cDsKQEAgLTEzMyw4ICsxMzIsNiBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8dWludDY0X3QsIFJl
ZlB0cjxNZW1vcnlJbmRleD4+IG1faW5kZXhlc0J5SWRlbnRpZmllcjsKICAgICBIYXNoTWFwPFN0
cmluZywgUmVmUHRyPE1lbW9yeUluZGV4Pj4gbV9pbmRleGVzQnlOYW1lOwogICAgIEhhc2hNYXA8
SURCUmVzb3VyY2VJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8TWVtb3J5T2JqZWN0U3RvcmVD
dXJzb3I+PiBtX2N1cnNvcnM7Ci0KLSAgICBSZWY8SURCU2VyaWFsaXphdGlvbkNvbnRleHQ+IG1f
c2VyaWFsaXphdGlvbkNvbnRleHQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJREJTZXJ2ZXIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJ
REJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggZDdmYTNiYzJlZTFjNjg3Y2U3ZTRh
MWJiZDdhNGIwYWM2MDYzNDgwNy4uNmY4MTJkMjQ4NzA0NmZmN2ZiMjE4MWIzODE2YmUyY2ZlMzc0
ZjJkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNiw3ICszNiw2
IEBACiAjaW5jbHVkZSAiSURCS2V5RGF0YS5oIgogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlSW5m
by5oIgogI2luY2x1ZGUgIklEQlNlcmlhbGl6YXRpb24uaCIKLSNpbmNsdWRlICJJREJTZXJpYWxp
emF0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uSW5mby5oIgogI2luY2x1
ZGUgIklEQlZhbHVlLmgiCiAjaW5jbHVkZSAiSW5kZXhLZXkuaCIKQEAgLTI0MSw3ICsyNDAsNiBA
QCBTUUxpdGVJREJCYWNraW5nU3RvcmU6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IElEQgogICAgIDogbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQog
ICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiAgICAgLCBtX2RhdGFiYXNlUm9vdERpcmVj
dG9yeShkYXRhYmFzZVJvb3REaXJlY3RvcnkpCi0gICAgLCBtX3NlcmlhbGl6YXRpb25Db250ZXh0
KElEQlNlcmlhbGl6YXRpb25Db250ZXh0OjpnZXRPckNyZWF0ZUZvckN1cnJlbnRUaHJlYWQoKSkK
IHsKICAgICBtX2RhdGFiYXNlRGlyZWN0b3J5ID0gZnVsbERhdGFiYXNlRGlyZWN0b3J5V2l0aFVw
Z3JhZGUoKTsKIH0KQEAgLTIwNzgsMTkgKzIwNzYsMjQgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFj
a2luZ1N0b3JlOjpkZWxldGVSYW5nZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5z
YWMKIAogSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1cGRhdGVPbmVJbmRleEZvckFk
ZFJlY29yZChJREJPYmplY3RTdG9yZUluZm8mIG9iamVjdFN0b3JlSW5mbywgY29uc3QgSURCSW5k
ZXhJbmZvJiBpbmZvLCBjb25zdCBJREJLZXlEYXRhJiBrZXksIGNvbnN0IFRocmVhZFNhZmVEYXRh
QnVmZmVyJiB2YWx1ZSwgaW50NjRfdCByZWNvcmRJRCkKIHsKLSAgICBKU0xvY2tIb2xkZXIgbG9j
a2VyKG1fc2VyaWFsaXphdGlvbkNvbnRleHQtPnZtKCkpOworICAgIE9wdGlvbmFsPEluZGV4S2V5
PiByZXN1bHRJbmRleEtleTsKKyAgICBjYWxsT25JREJTZXJpYWxpemF0aW9uVGhyZWFkQW5kV2Fp
dChbb2JqZWN0U3RvcmVJbmZvID0gb2JqZWN0U3RvcmVJbmZvLmlzb2xhdGVkQ29weSgpLCBpbmZv
ID0gaW5mby5pc29sYXRlZENvcHkoKSwga2V5ID0ga2V5Lmlzb2xhdGVkQ29weSgpLCB2YWx1ZSwg
JnJlc3VsdEluZGV4S2V5XShhdXRvJiBnbG9iYWxPYmplY3QpIHsKKyAgICAgICAgYXV0byBqc1Zh
bHVlID0gZGVzZXJpYWxpemVJREJWYWx1ZVRvSlNWYWx1ZShnbG9iYWxPYmplY3QsIHZhbHVlKTsK
KyAgICAgICAgaWYgKGpzVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKKyAgICAgICAgICAgIHJl
dHVybjsKIAotICAgIGF1dG8ganNWYWx1ZSA9IGRlc2VyaWFsaXplSURCVmFsdWVUb0pTVmFsdWUo
bV9zZXJpYWxpemF0aW9uQ29udGV4dC0+Z2xvYmFsT2JqZWN0KCksIHZhbHVlKTsKLSAgICBpZiAo
anNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICByZXR1cm4gSURCRXJyb3IgeyB9
OworICAgICAgICBJbmRleEtleSBpbmRleEtleTsKKyAgICAgICAgZ2VuZXJhdGVJbmRleEtleUZv
clZhbHVlKGdsb2JhbE9iamVjdCwgaW5mbywganNWYWx1ZSwgaW5kZXhLZXksIG9iamVjdFN0b3Jl
SW5mby5rZXlQYXRoKCksIGtleSk7CisgICAgICAgIHJlc3VsdEluZGV4S2V5ID0gaW5kZXhLZXku
aXNvbGF0ZWRDb3B5KCk7CisgICAgfSk7CiAKLSAgICBJbmRleEtleSBpbmRleEtleTsKLSAgICBn
ZW5lcmF0ZUluZGV4S2V5Rm9yVmFsdWUobV9zZXJpYWxpemF0aW9uQ29udGV4dC0+Z2xvYmFsT2Jq
ZWN0KCksIGluZm8sIGpzVmFsdWUsIGluZGV4S2V5LCBvYmplY3RTdG9yZUluZm8ua2V5UGF0aCgp
LCBrZXkpOworICAgIGlmICghcmVzdWx0SW5kZXhLZXkpCisgICAgICAgIHJldHVybiBJREJFcnJv
ciB7IH07CiAKLSAgICBpZiAoaW5kZXhLZXkuaXNOdWxsKCkpCisgICAgaWYgKHJlc3VsdEluZGV4
S2V5LT5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgfTsKIAotICAgIHJldHVy
biB1bmNoZWNrZWRQdXRJbmRleEtleShpbmZvLCBrZXksIGluZGV4S2V5LCByZWNvcmRJRCk7Cisg
ICAgcmV0dXJuIHVuY2hlY2tlZFB1dEluZGV4S2V5KGluZm8sIGtleSwgKnJlc3VsdEluZGV4S2V5
LCByZWNvcmRJRCk7CiB9CiAKIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dXBkYXRl
QWxsSW5kZXhlc0ZvckFkZFJlY29yZChjb25zdCBJREJPYmplY3RTdG9yZUluZm8mIGluZm8sIGNv
bnN0IElEQktleURhdGEmIGtleSwgY29uc3QgSW5kZXhJRFRvSW5kZXhLZXlNYXAmIGluZGV4S2V5
cywgaW50NjRfdCByZWNvcmRJRCkKQEAgLTI5MzcsMTEgKzI5NDAsNiBAQCBJREJFcnJvciBTUUxp
dGVJREJCYWNraW5nU3RvcmU6Oml0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVzb3VyY2VJZGVudGlm
aWVyJiB0cmFucwogICAgIHJldHVybiBJREJFcnJvciB7IH07CiB9CiAKLUlEQlNlcmlhbGl6YXRp
b25Db250ZXh0JiBTUUxpdGVJREJCYWNraW5nU3RvcmU6OnNlcmlhbGl6YXRpb25Db250ZXh0KCkK
LXsKLSAgICByZXR1cm4gbV9zZXJpYWxpemF0aW9uQ29udGV4dC5nZXQoKTsKLX0KLQogSURCT2Jq
ZWN0U3RvcmVJbmZvKiBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmluZm9Gb3JPYmplY3RTdG9yZSh1
aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKG1fZGF0YWJhc2VJ
bmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaAppbmRleCA0MWRjYmYzOTU4NTliZWY3
M2FlMzNhMzMzZTQ2ZmM4YTNjYTQyNTY1Li41NGFjMjQ5M2U5MGVhYTkyNTdkNmRhZTI3OTRmOTE3
NzMxNDQ1MmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ2LDcgKzQ2LDYgQEAg
bmFtZXNwYWNlIElEQlNlcnZlciB7CiAKIGVudW0gY2xhc3MgSXNTY2hlbWFVcGdyYWRlZCA6IGJv
b2wgeyBObywgWWVzIH07CiAKLWNsYXNzIElEQlNlcmlhbGl6YXRpb25Db250ZXh0OwogY2xhc3Mg
U1FMaXRlSURCQ3Vyc29yOwogCiBjbGFzcyBTUUxpdGVJREJCYWNraW5nU3RvcmUgZmluYWwgOiBw
dWJsaWMgSURCQmFja2luZ1N0b3JlIHsKQEAgLTgyLDggKzgxLDYgQEAgcHVibGljOgogICAgIElE
QkVycm9yIG9wZW5DdXJzb3IoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlv
bklkZW50aWZpZXIsIGNvbnN0IElEQkN1cnNvckluZm8mLCBJREJHZXRSZXN1bHQmIG91dFJlc3Vs
dCkgZmluYWw7CiAgICAgSURCRXJyb3IgaXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXNvdXJjZUlk
ZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlm
aWVyJiBjdXJzb3JJZGVudGlmaWVyLCBjb25zdCBJREJJdGVyYXRlQ3Vyc29yRGF0YSYsIElEQkdl
dFJlc3VsdCYgb3V0UmVzdWx0KSBmaW5hbDsKIAotICAgIElEQlNlcmlhbGl6YXRpb25Db250ZXh0
JiBzZXJpYWxpemF0aW9uQ29udGV4dCgpIGZpbmFsOwotCiAgICAgSURCT2JqZWN0U3RvcmVJbmZv
KiBpbmZvRm9yT2JqZWN0U3RvcmUodWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyKSBmaW5h
bDsKICAgICB2b2lkIGRlbGV0ZUJhY2tpbmdTdG9yZSgpIGZpbmFsOwogCkBAIC0yMjEsOCArMjE4
LDYgQEAgcHJpdmF0ZToKIAogICAgIFN0cmluZyBtX2RhdGFiYXNlUm9vdERpcmVjdG9yeTsKICAg
ICBTdHJpbmcgbV9kYXRhYmFzZURpcmVjdG9yeTsKLQotICAgIFJlZjxJREJTZXJpYWxpemF0aW9u
Q29udGV4dD4gbV9zZXJpYWxpemF0aW9uQ29udGV4dDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIElE
QlNlcnZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKaW5kZXggOWM0NTJmMjQ1YmI0ZDE5N2I5
YWM3NWFhZTk1Yzg4MGMzMjBhYzE5Yi4uN2RiMWFiMzA2ZmRiNGY5MzJhMmQxOWIzZDkxNTI3NGZj
MWQ2ZjQ4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNSwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM0LDcgKzM0LDcgQEAK
ICNpbmNsdWRlICJJREJJdGVyYXRlQ3Vyc29yRGF0YS5oIgogI2luY2x1ZGUgIklEQktleVJhbmdl
RGF0YS5oIgogI2luY2x1ZGUgIklEQlJlc3VsdERhdGEuaCIKLSNpbmNsdWRlICJJREJTZXJpYWxp
emF0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIklEQlNlcmlhbGl6YXRpb24uaCIKICNpbmNsdWRl
ICJJREJTZXJ2ZXIuaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkluZm8uaCIKICNpbmNsdWRl
ICJJREJWYWx1ZS5oIgpAQCAtNzQyLDcgKzc0MiwxMCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNl
OjpwdXRPckFkZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktl
eQogICAgICAgICB1c2VkS2V5ID0ga2V5RGF0YTsKIAogICAgIC8vIEdlbmVyYXRlIGluZGV4IGtl
eXMgdXAgZnJvbnQgZm9yIG1vcmUgYWNjdXJhdGUgcXVvdGEgY2hlY2suCi0gICAgYXV0byBpbmRl
eEtleXMgPSBnZW5lcmF0ZUluZGV4S2V5TWFwRm9yVmFsdWUobV9iYWNraW5nU3RvcmUtPnNlcmlh
bGl6YXRpb25Db250ZXh0KCkuZ2xvYmFsT2JqZWN0KCksICpvYmplY3RTdG9yZUluZm8sIHVzZWRL
ZXksIHZhbHVlKTsKKyAgICBJbmRleElEVG9JbmRleEtleU1hcCBpbmRleEtleXM7CisgICAgY2Fs
bE9uSURCU2VyaWFsaXphdGlvblRocmVhZEFuZFdhaXQoW29iamVjdFN0b3JlSW5mbyA9IG9iamVj
dFN0b3JlSW5mby0+aXNvbGF0ZWRDb3B5KCksIGtleSA9IHVzZWRLZXkuaXNvbGF0ZWRDb3B5KCks
IHZhbHVlID0gdmFsdWUuaXNvbGF0ZWRDb3B5KCksICZpbmRleEtleXNdKGF1dG8mIGdsb2JhbE9i
amVjdCkgeworICAgICAgICBpbmRleEtleXMgPSBnZW5lcmF0ZUluZGV4S2V5TWFwRm9yVmFsdWUo
Z2xvYmFsT2JqZWN0LCBvYmplY3RTdG9yZUluZm8sIGtleSwgdmFsdWUpOworICAgIH0pOwogCiAg
ICAgaWYgKG92ZXJ3cml0ZU1vZGUgPT0gSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1v
ZGU6Ok5vT3ZlcndyaXRlKSB7CiAgICAgICAgIGJvb2wga2V5RXhpc3RzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApp
bmRleCBhNWM3NWRmNzkxZDcxYmQ2NzM3NDRmYjNmMDQ4MzZiNzcyYWM5OWQ5Li5jMmRkN2ZiNzJk
MGM0ODQxOGJlNmUxOWRlM2RjOGMyN2U3M2ZhMGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtOTUsNyAr
OTUsNiBAQCBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmNw
cAogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmNwcAogTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVudC5jcHAKIE1vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcAotTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL0lEQlNlcmlhbGl6YXRpb25Db250ZXh0LmNwcAogTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL0lEQlNlcnZlci5jcHAKIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JbmRleFZhbHVlRW50
cnkuY3BwCiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSW5kZXhWYWx1ZVN0b3JlLmNwcAo=
</data>
<flag name="commit-queue"
          id="450942"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429705</attachid>
            <date>2021-05-25 16:10:02 -0700</date>
            <delta_ts>2021-06-02 20:44:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226228-20210525161001.patch</filename>
            <type>text/plain</type>
            <size>30754</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MDM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjVmNDJkMWM1OWUwNWM4
MmEzYWIxNGZkZDBlOGQ3M2Y0OWFhMzVkNS4uZjI2MjNhOTUzZjY1OTNlNWQ2ZmNjOGRhNmVjOTFi
OWY5YTk4MzU1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIxLTA1LTI1ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjZSBhIHNoYXJl
ZCBJREIgc2VyaWFsaXphdGlvbiB0aHJlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyNjIyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEN1cnJlbnRseSBlYWNoIFdlYklEQlNlcnZlciBoYXMgaXRzIG93
biB0aHJlYWQsIGFuZCBkb2VzIHNlcmlhbGl6YXRpb24vZGVzZXJpYWxpemF0aW9uIG9uIHRoYXQg
dGhyZWFkLiBUbworICAgICAgICBwcmVwYXJlIGZvciBtYWtpbmcgV2ViSURCU2VydmVyIHVzZSBX
b3JrUXVldWUsIGxpa2UgdGhlIG90aGVyIHN0b3JhZ2UgbWFuYWdlciBjbGFzc2VzLCBsZXQncyBj
cmVhdGUgYSBzaGFyZWQKKyAgICAgICAgdGhyZWFkIGZvciBoYW5kbGluZyBhbGwgc2VyaWFsaXph
dGlvbi9kZXNlcmlhbGl6YXRpb24gb3BlcmF0aW9ucywgd2hpY2ggY2Fubm90IGJlIGRvbmUgb24g
V29ya1F1ZXVlIGFzIFZNIG5lZWRzIAorICAgICAgICB0byBhY2Nlc3MgdGhyZWFkLXNwZWNpZmlj
IGRhdGEuIE5vdyBJREIgdGFza3Mgd2lsbCBpbnZva2UgY2FsbE9uSURCU2VyaWFsaXphdGlvblRo
cmVhZEFuZFdhaXQgdG8gcGVyZm9ybSAKKyAgICAgICAgc2VyaWFsaXphdGlvbi9kZXNlcmlhbGl6
YXRpb24gb3BlcmF0aW9ucyBzeW5jaHJvbm91c2x5LgorCisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQkJhY2tpbmdTdG9yZS5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNl
cmlhbGl6YXRpb25Db250ZXh0OjpJREJTZXJpYWxpemF0aW9uQ29udGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJpYWxpemF0aW9uQ29udGV4dDo6fklEQlNlcmlhbGl6YXRpb25Db250ZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcmlhbGl6YXRpb25Db250ZXh0OjpnbG9iYWxPYmpl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VyaWFsaXphdGlvbkNvbnRleHQ6OmluaXRpYWxp
emVWTSk6CisgICAgICAgIChXZWJDb3JlOjpjYWxsT25JREJTZXJpYWxpemF0aW9uVGhyZWFkQW5k
V2FpdCk6IENyZWF0ZSBhIElEQlNlcmlhbGl6YXRpb24gdGhyZWFkIGlmIG5vdCBleGlzdHMgYW5k
IGRpc3BhdGNoIGEgCisgICAgICAgIHN5bmNocm9ub3VzIHRhc2sgdG8gaXQuCisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaDoKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbkNvbnRleHQuY3BwOiBSZW1v
dmVkLiBNb3ZlZCB0byBJREJTZXJpYWxpemF0aW9uLmNwcCBhcyAKKyAgICAgICAgSURCU2VyaWFs
aXphdGlvbkNvbnRleHQgaXMgb25seSB1c2VkIGJ5IElEQlNlcmlhbGl6YXRpb24gdGhyZWFkIG5v
dy4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbkNv
bnRleHQuaDogUmVtb3ZlZC4gRGl0dG8uCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2
ZXI6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6TWVtb3J5SURCQmFja2luZ1N0b3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5SURCQmFja2luZ1N0b3JlOjpzZXJpYWxpemF0
aW9uQ29udGV4dCk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9NZW1vcnlPYmplY3RTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
Ok1lbW9yeU9iamVjdFN0b3JlOjpNZW1vcnlPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6Ok1lbW9yeU9iamVjdFN0b3JlOjphZGRSZWNvcmQpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpNZW1vcnlPYmplY3RTdG9yZTo6cG9wdWxhdGVJbmRleFdpdGhFeGlz
dGluZ1JlY29yZHMpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlP
YmplY3RTdG9yZS5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJ
REJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dXBkYXRlT25lSW5kZXhGb3JBZGRS
ZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3Rv
cmU6OnNlcmlhbGl6YXRpb25Db250ZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmg6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OnB1dE9yQWRkKToKKyAgICAgICAgKiBT
b3VyY2VzLnR4dDoKKwogMjAyMS0wNS0yNCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+
CiAKICAgICAgICAgU3dpdGNoIGZyb20gV1RGOjpPcHRpb25hbCB0byBzdGQ6Om9wdGlvbmFsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQmFj
a2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURC
QmFja2luZ1N0b3JlLmgKaW5kZXggZTQ1ZDhhY2Y0YzE1NzI5YTFiM2MxNWMzNDQwYWVkZTM4OGZj
Mjk3YS4uMDZjNjQ2ZDMzZjdmZWY4ZDkxMTRiYmE2NGU3N2NjYTAxMzY2NDU0ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkJhY2tpbmdTdG9y
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJCYWNr
aW5nU3RvcmUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC01NSw4ICs1NSw2IEBAIGVudW0gY2xhc3MgSW5kZXhSZWNvcmRUeXBlIDogYm9v
bDsKIAogbmFtZXNwYWNlIElEQlNlcnZlciB7CiAKLWNsYXNzIElEQlNlcmlhbGl6YXRpb25Db250
ZXh0OwotCiBjbGFzcyBJREJCYWNraW5nU3RvcmUgewogcHVibGljOgogICAgIHZpcnR1YWwgfklE
QkJhY2tpbmdTdG9yZSgpIHsgUkVMRUFTRV9BU1NFUlQoIWlzTWFpblRocmVhZCgpKTsgfQpAQCAt
ODgsOCArODYsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBJREJFcnJvciBvcGVuQ3Vyc29yKGNv
bnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJ
REJDdXJzb3JJbmZvJiwgSURCR2V0UmVzdWx0JiBvdXRSZXN1bHQpID0gMDsKICAgICB2aXJ0dWFs
IElEQkVycm9yIGl0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFu
c2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgY3Vyc29ySWRl
bnRpZmllciwgY29uc3QgSURCSXRlcmF0ZUN1cnNvckRhdGEmLCBJREJHZXRSZXN1bHQmIG91dFJl
c3VsdCkgPSAwOwogCi0gICAgdmlydHVhbCBJREJTZXJpYWxpemF0aW9uQ29udGV4dCYgc2VyaWFs
aXphdGlvbkNvbnRleHQoKSA9IDA7Ci0KICAgICB2aXJ0dWFsIElEQk9iamVjdFN0b3JlSW5mbyog
aW5mb0Zvck9iamVjdFN0b3JlKHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBkZWxldGVCYWNraW5nU3RvcmUoKSA9IDA7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxp
emF0aW9uLmNwcAppbmRleCA5ZjA2NGQ5MjgwN2IyZTA5NzNhODg4MjlhY2IwYWNmYTFmMzVlOTRl
Li43NWM3NGE5NzRhMjM5MzM0YTg0NWQyY2IzZTYxNGYyNzY1MzdmZGJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlh
bGl6YXRpb24uY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCwg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTQtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDcgKzI4LDEzIEBACiAKICNpbmNsdWRlICJJREJLZXlEYXRh
LmgiCiAjaW5jbHVkZSAiSURCS2V5UGF0aC5oIgorI2luY2x1ZGUgIkpTSURCU2VyaWFsaXphdGlv
bkdsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIktleWVkQ29kaW5nLmgiCisjaW5jbHVkZSAiV2Vi
Q29yZUpTQ2xpZW50RGF0YS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZ0lubGlu
ZXMuaD4KKyNpbmNsdWRlIDx3dGYvQXV0b2RyYWluZWRQb29sLmg+CisjaW5jbHVkZSA8d3RmL01l
c3NhZ2VRdWV1ZS5oPgorI2luY2x1ZGUgPHd0Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5oPgog
CiAjaWYgVVNFKEdMSUIpCiAjaW5jbHVkZSA8Z2xpYi5oPgpAQCAtNDE3LDQgKzQyMyw3NCBAQCBi
b29sIGRlc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6
ZSwgSURCS2V5RGF0YSYgcmVzdWx0KQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorY2xhc3MgSURC
U2VyaWFsaXphdGlvbkNvbnRleHQgOiBwdWJsaWMgUmVmQ291bnRlZDxJREJTZXJpYWxpemF0aW9u
Q29udGV4dD4geworcHVibGljOgorICAgIElEQlNlcmlhbGl6YXRpb25Db250ZXh0KCkKKyAgICAg
ICAgOiBtX3RocmVhZChUaHJlYWQ6OmN1cnJlbnQoKSkKKyAgICB7CisgICAgfQorCisgICAgfklE
QlNlcmlhbGl6YXRpb25Db250ZXh0KCkKKyAgICB7CisgICAgICAgIEFTU0VSVCgmbV90aHJlYWQg
PT0gJlRocmVhZDo6Y3VycmVudCgpKTsKKyAgICAgICAgaWYgKCFtX3ZtKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soKm1fdm0pOworICAgICAg
ICBtX2dsb2JhbE9iamVjdC5jbGVhcigpOworICAgICAgICBtX3ZtID0gbnVsbHB0cjsKKyAgICB9
CisKKyAgICBKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QoKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKCZtX3RocmVhZCA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOworCisgICAgICAgIGlu
aXRpYWxpemVWTSgpOworICAgICAgICByZXR1cm4gKm1fZ2xvYmFsT2JqZWN0LmdldCgpOworICAg
IH0KKworcHJpdmF0ZToKKyAgICB2b2lkIGluaXRpYWxpemVWTSgpCisgICAgeworICAgICAgICBp
ZiAobV92bSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBBU1NFUlQoIW1fZ2xvYmFs
T2JqZWN0KTsKKyAgICAgICAgbV92bSA9IEpTQzo6Vk06OmNyZWF0ZSgpOworICAgICAgICBtX3Zt
LT5oZWFwLmFjcXVpcmVBY2Nlc3MoKTsKKyAgICAgICAgSlNWTUNsaWVudERhdGE6OmluaXROb3Jt
YWxXb3JsZChtX3ZtLmdldCgpLCBXb3JrZXJUaHJlYWRUeXBlOjpXb3JrbGV0KTsKKworICAgICAg
ICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIobV92bS5nZXQoKSk7CisgICAgICAgIG1fZ2xvYmFs
T2JqZWN0LnNldCgqbV92bSwgSlNJREJTZXJpYWxpemF0aW9uR2xvYmFsT2JqZWN0OjpjcmVhdGUo
Km1fdm0sIEpTSURCU2VyaWFsaXphdGlvbkdsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKCpt
X3ZtLCBKU0M6OmpzTnVsbCgpKSwgbm9ybWFsV29ybGQoKm1fdm0pKSk7CisgICAgfQorCisgICAg
UmVmUHRyPEpTQzo6Vk0+IG1fdm07CisgICAgSlNDOjpTdHJvbmc8SlNJREJTZXJpYWxpemF0aW9u
R2xvYmFsT2JqZWN0PiBtX2dsb2JhbE9iamVjdDsKKyAgICBUaHJlYWQmIG1fdGhyZWFkOworfTsK
Kwordm9pZCBjYWxsT25JREJTZXJpYWxpemF0aW9uVGhyZWFkQW5kV2FpdChGdW5jdGlvbjx2b2lk
KEpTQzo6SlNHbG9iYWxPYmplY3QmKT4mJiBmdW5jdGlvbikKK3sKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8TWVzc2FnZVF1ZXVlPEZ1bmN0aW9uPHZvaWQoSlNDOjpKU0dsb2JhbE9iamVjdCYp
Pj4+IHF1ZXVlOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBjcmVhdGVUaHJlYWQ7CisKKyAg
ICBzdGQ6OmNhbGxfb25jZShjcmVhdGVUaHJlYWQsIFtdIHsKKyAgICAgICAgVGhyZWFkOjpjcmVh
dGUoIkluZGV4ZWREQiBTZXJpYWxpemF0aW9uIiwgW10geworICAgICAgICAgICAgYXV0byBzZXJp
YWxpemF0aW9uQ29udGV4dCA9IGFkb3B0UmVmKCpuZXcgSURCU2VyaWFsaXphdGlvbkNvbnRleHQo
KSk7CisgICAgICAgICAgICB3aGlsZSAoYXV0byBmdW5jdGlvbiA9IHF1ZXVlLT53YWl0Rm9yTWVz
c2FnZSgpKSB7CisgICAgICAgICAgICAgICAgQXV0b2RyYWluZWRQb29sIHBvb2w7CisgICAgICAg
ICAgICAgICAgKCpmdW5jdGlvbikoc2VyaWFsaXphdGlvbkNvbnRleHQtPmdsb2JhbE9iamVjdCgp
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfSk7CisKKyAgICBCaW5hcnlTZW1h
cGhvcmUgc2VtYXBob3JlOworICAgIGF1dG8gbmV3RnVudGlvbiA9IFsmc2VtYXBob3JlLCBmdW5j
dGlvbiA9IFdURk1vdmUoZnVuY3Rpb24pXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmpl
Y3QpIHsKKyAgICAgICAgZnVuY3Rpb24oZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgc2VtYXBob3Jl
LnNpZ25hbCgpOworICAgIH07CisgICAgcXVldWUtPmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9u
PHZvaWQoSlNDOjpKU0dsb2JhbE9iamVjdCYpPj4oV1RGTW92ZShuZXdGdW50aW9uKSkpOworICAg
IHNlbWFwaG9yZS53YWl0KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFs
aXphdGlvbi5oCmluZGV4IGY1ZjY3NDQyZTM2NzhhMjBhZWI1OGZlYWM5YWMzOWY3OGM1ZTFkNzku
LjljZjRlMzNhOTMwNmExNTAwOTZiNDMwODBmZTg4YzcyYmYyMmM0MTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6
YXRpb24uaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yOCw2ICsyOCwxMCBAQAogI2luY2x1ZGUgIklEQktleVBhdGguaCIKICNp
bmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKIAorbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBKU0dsb2Jh
bE9iamVjdDsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJREJLZXlEYXRhOwpA
QCAtMzgsNCArNDIsNiBAQCBib29sIGRlc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCB1aW50OF90
KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCBPcHRpb25hbDxJRAogUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJik7CiBib29sIGRlc2Vy
aWFsaXplSURCS2V5RGF0YShjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXpl
LCBJREJLZXlEYXRhJik7CiAKK3ZvaWQgY2FsbE9uSURCU2VyaWFsaXphdGlvblRocmVhZEFuZFdh
aXQoRnVuY3Rpb248dm9pZChKU0M6OkpTR2xvYmFsT2JqZWN0Jik+JiYpOworCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbkNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb25Db250ZXh0LmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzEzYjFiY2U2MjAzMjUxZmI3YzU4MWJhMzQ1ZTRjNmYw
YzFhMTQ4My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbkNv
bnRleHQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTA5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSURCU2VyaWFsaXphdGlvbkNvbnRleHQuaCIK
LQotI2luY2x1ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgotI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVu
dERhdGEuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdElubGluZXMuaD4KLSNp
bmNsdWRlIDx3dGYvTG9jay5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBJ
REJTZXJ2ZXIgewotCi1zdGF0aWMgTG9jayBzZXJpYWxpemF0aW9uQ29udGV4dE1hcExvY2s7Ci0K
LXN0YXRpYyBIYXNoTWFwPFRocmVhZCosIElEQlNlcmlhbGl6YXRpb25Db250ZXh0Kj4mIHNlcmlh
bGl6YXRpb25Db250ZXh0TWFwKCkgV1RGX1JFUVVJUkVTX0xPQ0soc2VyaWFsaXphdGlvbkNvbnRl
eHRNYXBMb2NrKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFRocmVhZCos
IElEQlNlcmlhbGl6YXRpb25Db250ZXh0Kj4+IG1hcDsKLSAgICByZXR1cm4gbWFwOwotfQotCi1S
ZWY8SURCU2VyaWFsaXphdGlvbkNvbnRleHQ+IElEQlNlcmlhbGl6YXRpb25Db250ZXh0OjpnZXRP
ckNyZWF0ZUZvckN1cnJlbnRUaHJlYWQoKQotewotICAgIGF1dG8mIHRocmVhZCA9IFRocmVhZDo6
Y3VycmVudCgpOwotICAgIExvY2tlciBsb2NrZXIgeyBzZXJpYWxpemF0aW9uQ29udGV4dE1hcExv
Y2sgfTsKLSAgICBhdXRvW2l0ZXIsIGlzTmV3RW50cnldID0gc2VyaWFsaXphdGlvbkNvbnRleHRN
YXAoKS5hZGQoJnRocmVhZCwgbnVsbHB0cik7Ci0gICAgaWYgKGlzTmV3RW50cnkpIHsKLSAgICAg
ICAgUmVmPElEQlNlcmlhbGl6YXRpb25Db250ZXh0PiBwcm90ZWN0ZWRDb250ZXh0ID0gYWRvcHRS
ZWYoKm5ldyBJREJTZXJpYWxpemF0aW9uQ29udGV4dCh0aHJlYWQpKTsKLSAgICAgICAgaXRlci0+
dmFsdWUgPSBwcm90ZWN0ZWRDb250ZXh0LnB0cigpOwotICAgICAgICByZXR1cm4gcHJvdGVjdGVk
Q29udGV4dDsKLSAgICB9Ci0KLSAgICByZXR1cm4gKml0ZXItPnZhbHVlOwotfQotCi1JREJTZXJp
YWxpemF0aW9uQ29udGV4dDo6fklEQlNlcmlhbGl6YXRpb25Db250ZXh0KCkKLXsKLSAgICBMb2Nr
ZXIgbG9ja2VyIHsgc2VyaWFsaXphdGlvbkNvbnRleHRNYXBMb2NrIH07Ci0gICAgQVNTRVJUKHRo
aXMgPT0gc2VyaWFsaXphdGlvbkNvbnRleHRNYXAoKS5nZXQoJm1fdGhyZWFkKSk7Ci0KLSAgICBp
ZiAobV92bSkgewotICAgICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKCptX3ZtKTsKLSAgICAg
ICAgbV9nbG9iYWxPYmplY3QuY2xlYXIoKTsKLSAgICAgICAgbV92bSA9IG51bGxwdHI7Ci0gICAg
fQotICAgIHNlcmlhbGl6YXRpb25Db250ZXh0TWFwKCkucmVtb3ZlKCZtX3RocmVhZCk7Ci19Ci0K
LXZvaWQgSURCU2VyaWFsaXphdGlvbkNvbnRleHQ6OmluaXRpYWxpemVWTSgpCi17Ci0gICAgaWYg
KG1fdm0pCi0gICAgICAgIHJldHVybjsKLQotICAgIEFTU0VSVCghbV9nbG9iYWxPYmplY3QpOwot
ICAgIG1fdm0gPSBKU0M6OlZNOjpjcmVhdGUoKTsKLSAgICBtX3ZtLT5oZWFwLmFjcXVpcmVBY2Nl
c3MoKTsKLSAgICBKU1ZNQ2xpZW50RGF0YTo6aW5pdE5vcm1hbFdvcmxkKG1fdm0uZ2V0KCksIFdv
cmtlclRocmVhZFR5cGU6OldvcmtsZXQpOwotCi0gICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2Vy
KG1fdm0uZ2V0KCkpOwotICAgIG1fZ2xvYmFsT2JqZWN0LnNldCgqbV92bSwgSlNJREJTZXJpYWxp
emF0aW9uR2xvYmFsT2JqZWN0OjpjcmVhdGUoKm1fdm0sIEpTSURCU2VyaWFsaXphdGlvbkdsb2Jh
bE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKCptX3ZtLCBKU0M6OmpzTnVsbCgpKSwgbm9ybWFsV29y
bGQoKm1fdm0pKSk7Ci19Ci0KLUpTQzo6Vk0mIElEQlNlcmlhbGl6YXRpb25Db250ZXh0Ojp2bSgp
Ci17Ci0gICAgQVNTRVJUKCZtX3RocmVhZCA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwotCi0gICAg
aW5pdGlhbGl6ZVZNKCk7Ci0gICAgcmV0dXJuICptX3ZtOwotfQotCi1KU0M6OkpTR2xvYmFsT2Jq
ZWN0JiBJREJTZXJpYWxpemF0aW9uQ29udGV4dDo6Z2xvYmFsT2JqZWN0KCkKLXsKLSAgICBBU1NF
UlQoJm1fdGhyZWFkID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7Ci0KLSAgICBpbml0aWFsaXplVk0o
KTsKLSAgICByZXR1cm4gKm1fZ2xvYmFsT2JqZWN0LmdldCgpOwotfQotCi1JREJTZXJpYWxpemF0
aW9uQ29udGV4dDo6SURCU2VyaWFsaXphdGlvbkNvbnRleHQoVGhyZWFkJiB0aHJlYWQpCi0gICAg
OiBtX3RocmVhZCh0aHJlYWQpCi17Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIElEQlNlcnZlcgotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb25Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbkNvbnRleHQuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWZkZWMwMDcxZTgwODllOTRjNjc1M2I2ZjUwZTdj
MTA5Yzc2ODliMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlv
bkNvbnRleHQuaAorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
cHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkpTSURCU2VyaWFsaXphdGlvbkdsb2JhbE9iamVjdC5o
IgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZ0lubGluZXMuaD4KLSNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9TdHJ1Y3R1cmVJbmxpbmVzLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotY2xh
c3MgQ2FsbEZyYW1lOwotY2xhc3MgVk07Ci19Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFt
ZXNwYWNlIElEQlNlcnZlciB7Ci0KLWNsYXNzIElEQlNlcmlhbGl6YXRpb25Db250ZXh0IDogcHVi
bGljIFJlZkNvdW50ZWQ8SURCU2VyaWFsaXphdGlvbkNvbnRleHQ+IHsKLXB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPElEQlNlcmlhbGl6YXRpb25Db250ZXh0PiBnZXRPckNyZWF0ZUZvckN1cnJlbnRU
aHJlYWQoKTsKLQotICAgIH5JREJTZXJpYWxpemF0aW9uQ29udGV4dCgpOwotCi0gICAgSlNDOjpW
TSYgdm0oKTsKLSAgICBKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QoKTsKLQotcHJp
dmF0ZToKLSAgICBleHBsaWNpdCBJREJTZXJpYWxpemF0aW9uQ29udGV4dChUaHJlYWQmKTsKLSAg
ICB2b2lkIGluaXRpYWxpemVWTSgpOwotCi0gICAgUmVmUHRyPEpTQzo6Vk0+IG1fdm07Ci0gICAg
SlNDOjpTdHJvbmc8SlNJREJTZXJpYWxpemF0aW9uR2xvYmFsT2JqZWN0PiBtX2dsb2JhbE9iamVj
dDsKLSAgICBUaHJlYWQmIG1fdGhyZWFkOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgSURCU2VydmVy
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3Bw
CmluZGV4IDI0ZWIwZTNmYmMyODE1ZWY3NTQ4ZjA3OGFlZDM1YjU0NjBhZmM4YmQuLmI5ODBhMzFj
NWNmNzA3OWEyM2M1YTJjY2JlYjkzMGJlM2ZkZGY4NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNr
aW5nU3RvcmUuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJJREJJbmRleEluZm8uaCIKICNp
bmNsdWRlICJJREJJdGVyYXRlQ3Vyc29yRGF0YS5oIgogI2luY2x1ZGUgIklEQktleVJhbmdlRGF0
YS5oIgotI2luY2x1ZGUgIklEQlNlcmlhbGl6YXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgogI2luY2x1ZGUgIk1lbW9yeUluZGV4Q3Vyc29yLmgiCiAjaW5jbHVkZSAiTWVtb3J5
T2JqZWN0U3RvcmUuaCIKQEAgLTQ4LDcgKzQ3LDYgQEAgY29uc3RleHByIHVpbnQ2NF90IG1heEdl
bmVyYXRlZEtleVZhbHVlID0gMHgyMDAwMDAwMDAwMDAwMDsKIE1lbW9yeUlEQkJhY2tpbmdTdG9y
ZTo6TWVtb3J5SURCQmFja2luZ1N0b3JlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
SURCRGF0YWJhc2VJZGVudGlmaWVyJiBpZGVudGlmaWVyKQogICAgIDogbV9pZGVudGlmaWVyKGlk
ZW50aWZpZXIpCiAgICAgLCBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCi0gICAgLCBtX3NlcmlhbGl6
YXRpb25Db250ZXh0KElEQlNlcmlhbGl6YXRpb25Db250ZXh0OjpnZXRPckNyZWF0ZUZvckN1cnJl
bnRUaHJlYWQoKSkKIHsKIH0KIApAQCAtNjE2LDExICs2MTQsNiBAQCBSZWZQdHI8TWVtb3J5T2Jq
ZWN0U3RvcmU+IE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6dGFrZU9iamVjdFN0b3JlQnlJZGVudGlm
aWVyKHVpbgogICAgIHJldHVybiBvYmplY3RTdG9yZUJ5SWRlbnRpZmllcjsKIH0KIAotSURCU2Vy
aWFsaXphdGlvbkNvbnRleHQmIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6c2VyaWFsaXphdGlvbkNv
bnRleHQoKQotewotICAgIHJldHVybiBtX3NlcmlhbGl6YXRpb25Db250ZXh0LmdldCgpOwotfQot
CiBJREJPYmplY3RTdG9yZUluZm8qIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6aW5mb0Zvck9iamVj
dFN0b3JlKHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQobV9k
YXRhYmFzZUluZm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oCmluZGV4IDFkMzBiY2E2
M2U1ODkwOWY2NmMzMGY2ZjM2OWYxYjAzNWNjOWM4ZGQuLmUzNWYzYTc0NTU2NTc0ZTllYmU2NTVk
OTE0ODBiMTA0ZTNiNjk5NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmgKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsNyAr
MzYsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIElEQlNlcnZlciB7CiAKLWNs
YXNzIElEQlNlcmlhbGl6YXRpb25Db250ZXh0OwogY2xhc3MgTWVtb3J5T2JqZWN0U3RvcmU7CiAK
IGNsYXNzIE1lbW9yeUlEQkJhY2tpbmdTdG9yZSBmaW5hbCA6IHB1YmxpYyBJREJCYWNraW5nU3Rv
cmUgewpAQCAtNTIsOCArNTEsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVPYmplY3RTdG9y
ZUZvclZlcnNpb25DaGFuZ2VBYm9ydChNZW1vcnlPYmplY3RTdG9yZSYpOwogICAgIHZvaWQgcmVz
dG9yZU9iamVjdFN0b3JlRm9yVmVyc2lvbkNoYW5nZUFib3J0KFJlZjxNZW1vcnlPYmplY3RTdG9y
ZT4mJik7CiAKLSAgICBJREJTZXJpYWxpemF0aW9uQ29udGV4dCYgc2VyaWFsaXphdGlvbkNvbnRl
eHQoKSBmaW5hbDsKLQogcHJpdmF0ZToKICAgICBJREJFcnJvciBiZWdpblRyYW5zYWN0aW9uKGNv
bnN0IElEQlRyYW5zYWN0aW9uSW5mbyYpIGZpbmFsOwogICAgIElEQkVycm9yIGFib3J0VHJhbnNh
Y3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIp
IGZpbmFsOwpAQCAtOTUsNyArOTIsNiBAQCBwcml2YXRlOgogCiAgICAgSURCRGF0YWJhc2VJZGVu
dGlmaWVyIG1faWRlbnRpZmllcjsKICAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKLSAg
ICBSZWY8SURCU2VyaWFsaXphdGlvbkNvbnRleHQ+IG1fc2VyaWFsaXphdGlvbkNvbnRleHQ7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPElEQkRhdGFiYXNlSW5mbz4gbV9kYXRhYmFzZUluZm87CiAKICAg
ICBIYXNoTWFwPElEQlJlc291cmNlSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPE1lbW9yeUJh
Y2tpbmdTdG9yZVRyYW5zYWN0aW9uPj4gbV90cmFuc2FjdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0
b3JlLmNwcAppbmRleCAwM2MzMTFkZmY3YjJjMjQzNDlkMjdjYTg2MzQ3ZWM5ZGJmZGU3ZTliLi5k
M2EyZWNhYTMzMmRhY2IxZjllZDU1ZTIwNjNjNzgzNTNlMjllMDg4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmpl
Y3RTdG9yZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIklEQkVycm9yLmgiCiAjaW5jbHVk
ZSAiSURCR2V0QWxsUmVzdWx0LmgiCiAjaW5jbHVkZSAiSURCS2V5UmFuZ2VEYXRhLmgiCi0jaW5j
bHVkZSAiSURCU2VyaWFsaXphdGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJJREJTZXJpYWxpemF0
aW9uLmgiCiAjaW5jbHVkZSAiSURCVmFsdWUuaCIKICNpbmNsdWRlICJJbmRleEtleS5oIgogI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKQEAgLTUyLDcgKzUyLDYgQEAgUmVmPE1lbW9yeU9iamVjdFN0b3Jl
PiBNZW1vcnlPYmplY3RTdG9yZTo6Y3JlYXRlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QKIAogTWVtb3J5T2JqZWN0U3RvcmU6Ok1lbW9yeU9iamVjdFN0b3JlKFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mIGluZm8pCiAgICAgOiBtX2luZm8oaW5mbykKLSAg
ICAsIG1fc2VyaWFsaXphdGlvbkNvbnRleHQoSURCU2VyaWFsaXphdGlvbkNvbnRleHQ6OmdldE9y
Q3JlYXRlRm9yQ3VycmVudFRocmVhZCgpKQogewogfQogCkBAIC0yNTEsNyArMjUwLDEwIEBAIHZv
aWQgTWVtb3J5T2JqZWN0U3RvcmU6OmRlbGV0ZVJhbmdlKGNvbnN0IElEQktleVJhbmdlRGF0YSYg
aW5wdXRSYW5nZSkKIAogSURCRXJyb3IgTWVtb3J5T2JqZWN0U3RvcmU6OmFkZFJlY29yZChNZW1v
cnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIGNvbnN0IElEQktleURhdGEm
IGtleURhdGEsIGNvbnN0IElEQlZhbHVlJiB2YWx1ZSkKIHsKLSAgICBhdXRvIGluZGV4S2V5cyA9
IGdlbmVyYXRlSW5kZXhLZXlNYXBGb3JWYWx1ZShtX3NlcmlhbGl6YXRpb25Db250ZXh0LT5nbG9i
YWxPYmplY3QoKSwgbV9pbmZvLCBrZXlEYXRhLCB2YWx1ZSk7CisgICAgSW5kZXhJRFRvSW5kZXhL
ZXlNYXAgaW5kZXhLZXlzOworICAgIGNhbGxPbklEQlNlcmlhbGl6YXRpb25UaHJlYWRBbmRXYWl0
KFtpbmZvID0gbV9pbmZvLmlzb2xhdGVkQ29weSgpLCBrZXlEYXRhID0ga2V5RGF0YS5pc29sYXRl
ZENvcHkoKSwgdmFsdWUgPSB2YWx1ZS5pc29sYXRlZENvcHkoKSwgJmluZGV4S2V5c10oYXV0byYg
Z2xvYmFsT2JqZWN0KSB7CisgICAgICAgIGluZGV4S2V5cyA9IGdlbmVyYXRlSW5kZXhLZXlNYXBG
b3JWYWx1ZShnbG9iYWxPYmplY3QsIGluZm8sIGtleURhdGEsIHZhbHVlKTsKKyAgICB9KTsKICAg
ICByZXR1cm4gYWRkUmVjb3JkKHRyYW5zYWN0aW9uLCBrZXlEYXRhLCBpbmRleEtleXMsIHZhbHVl
KTsKIH0KIApAQCAtMzM4LDIwICszNDAsMjUgQEAgSURCRXJyb3IgTWVtb3J5T2JqZWN0U3RvcmU6
OnBvcHVsYXRlSW5kZXhXaXRoRXhpc3RpbmdSZWNvcmRzKE1lbW9yeUluZGV4JiBpbmRleCkKICAg
ICBpZiAoIW1fa2V5VmFsdWVTdG9yZSkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgfTsKIAot
ICAgIEpTTG9ja0hvbGRlciBsb2NrZXIobV9zZXJpYWxpemF0aW9uQ29udGV4dC0+dm0oKSk7Ci0K
ICAgICBmb3IgKGNvbnN0IGF1dG8mIGl0ZXJhdG9yIDogKm1fa2V5VmFsdWVTdG9yZSkgewotICAg
ICAgICBhdXRvIGpzVmFsdWUgPSBkZXNlcmlhbGl6ZUlEQlZhbHVlVG9KU1ZhbHVlKG1fc2VyaWFs
aXphdGlvbkNvbnRleHQtPmdsb2JhbE9iamVjdCgpLCBpdGVyYXRvci52YWx1ZSk7Ci0gICAgICAg
IGlmIChqc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCisgICAgICAgIE9wdGlvbmFsPEluZGV4
S2V5PiByZXN1bHRJbmRleEtleTsKKyAgICAgICAgY2FsbE9uSURCU2VyaWFsaXphdGlvblRocmVh
ZEFuZFdhaXQoW2tleSA9IGl0ZXJhdG9yLmtleS5pc29sYXRlZENvcHkoKSwgdmFsdWUgPSBpdGVy
YXRvci52YWx1ZSwgaW5mbyA9IG1faW5mby5pc29sYXRlZENvcHkoKSwgaW5kZXhJbmZvID0gaW5k
ZXguaW5mbygpLmlzb2xhdGVkQ29weSgpLCAmcmVzdWx0SW5kZXhLZXldKGF1dG8mIGdsb2JhbE9i
amVjdCkgeworICAgICAgICAgICAgYXV0byBqc1ZhbHVlID0gZGVzZXJpYWxpemVJREJWYWx1ZVRv
SlNWYWx1ZShnbG9iYWxPYmplY3QsIHZhbHVlKTsKKyAgICAgICAgICAgIGlmIChqc1ZhbHVlLmlz
VW5kZWZpbmVkT3JOdWxsKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAg
ICBJbmRleEtleSBpbmRleEtleTsKKyAgICAgICAgICAgIGdlbmVyYXRlSW5kZXhLZXlGb3JWYWx1
ZShnbG9iYWxPYmplY3QsIGluZGV4SW5mbywganNWYWx1ZSwgaW5kZXhLZXksIGluZm8ua2V5UGF0
aCgpLCBrZXkpOworICAgICAgICAgICAgcmVzdWx0SW5kZXhLZXkgPSBpbmRleEtleS5pc29sYXRl
ZENvcHkoKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaWYgKCFyZXN1bHRJbmRleEtleSkKICAg
ICAgICAgICAgIHJldHVybiBJREJFcnJvciB7IH07CiAKLSAgICAgICAgSW5kZXhLZXkgaW5kZXhL
ZXk7Ci0gICAgICAgIGdlbmVyYXRlSW5kZXhLZXlGb3JWYWx1ZShtX3NlcmlhbGl6YXRpb25Db250
ZXh0LT5nbG9iYWxPYmplY3QoKSwgaW5kZXguaW5mbygpLCBqc1ZhbHVlLCBpbmRleEtleSwgbV9p
bmZvLmtleVBhdGgoKSwgaXRlcmF0b3Iua2V5KTsKLQotICAgICAgICBpZiAoaW5kZXhLZXkuaXNO
dWxsKCkpCisgICAgICAgIGlmIChyZXN1bHRJbmRleEtleS0+aXNOdWxsKCkpCiAgICAgICAgICAg
ICBjb250aW51ZTsKIAotICAgICAgICBJREJFcnJvciBlcnJvciA9IGluZGV4LnB1dEluZGV4S2V5
KGl0ZXJhdG9yLmtleSwgaW5kZXhLZXkpOworICAgICAgICBJREJFcnJvciBlcnJvciA9IGluZGV4
LnB1dEluZGV4S2V5KGl0ZXJhdG9yLmtleSwgKnJlc3VsdEluZGV4S2V5KTsKICAgICAgICAgaWYg
KCFlcnJvci5pc051bGwoKSkKICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2Jq
ZWN0U3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1v
cnlPYmplY3RTdG9yZS5oCmluZGV4IDQzNDk5ZDViY2JlYzYyNmFkMTFjNDU4MmI2YWI2NjRkYTI2
ZGQwMTguLjdmNDFkYjI4OTVkMGE1M2NhNDNkM2RlOWE0YzJjMTBiYTZjNzU2NDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RT
dG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1v
cnlPYmplY3RTdG9yZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTU1LDcgKzU1LDYgQEAgZW51bSBjbGFzcyBJbmRleFJlY29yZFR5cGUg
OiBib29sOwogCiBuYW1lc3BhY2UgSURCU2VydmVyIHsKIAotY2xhc3MgSURCU2VyaWFsaXphdGlv
bkNvbnRleHQ7CiBjbGFzcyBNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbjsKIAogdHlwZWRl
ZiBIYXNoTWFwPElEQktleURhdGEsIFRocmVhZFNhZmVEYXRhQnVmZmVyLCBJREJLZXlEYXRhSGFz
aCwgSURCS2V5RGF0YUhhc2hUcmFpdHM+IEtleVZhbHVlTWFwOwpAQCAtMTMzLDggKzEzMiw2IEBA
IHByaXZhdGU6CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPE1lbW9yeUluZGV4Pj4gbV9p
bmRleGVzQnlJZGVudGlmaWVyOwogICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8TWVtb3J5SW5k
ZXg+PiBtX2luZGV4ZXNCeU5hbWU7CiAgICAgSGFzaE1hcDxJREJSZXNvdXJjZUlkZW50aWZpZXIs
IHN0ZDo6dW5pcXVlX3B0cjxNZW1vcnlPYmplY3RTdG9yZUN1cnNvcj4+IG1fY3Vyc29yczsKLQot
ICAgIFJlZjxJREJTZXJpYWxpemF0aW9uQ29udGV4dD4gbV9zZXJpYWxpemF0aW9uQ29udGV4dDsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIElEQlNlcnZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0
b3JlLmNwcAppbmRleCBkN2ZhM2JjMmVlMWM2ODdjZTdlNGExYmJkN2E0YjBhYzYwNjM0ODA3Li42
ZjgxMmQyNDg3MDQ2ZmY3ZmIyMTgxYjM4MTZiZTJjZmUzNzRmMmQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3Jl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRl
SURCQmFja2luZ1N0b3JlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlICJJREJLZXlE
YXRhLmgiCiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmVJbmZvLmgiCiAjaW5jbHVkZSAiSURCU2Vy
aWFsaXphdGlvbi5oIgotI2luY2x1ZGUgIklEQlNlcmlhbGl6YXRpb25Db250ZXh0LmgiCiAjaW5j
bHVkZSAiSURCVHJhbnNhY3Rpb25JbmZvLmgiCiAjaW5jbHVkZSAiSURCVmFsdWUuaCIKICNpbmNs
dWRlICJJbmRleEtleS5oIgpAQCAtMjQxLDcgKzI0MCw2IEBAIFNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6U1FMaXRlSURCQmFja2luZ1N0b3JlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
SURCCiAgICAgOiBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCiAgICAgLCBtX2lkZW50aWZpZXIoaWRl
bnRpZmllcikKICAgICAsIG1fZGF0YWJhc2VSb290RGlyZWN0b3J5KGRhdGFiYXNlUm9vdERpcmVj
dG9yeSkKLSAgICAsIG1fc2VyaWFsaXphdGlvbkNvbnRleHQoSURCU2VyaWFsaXphdGlvbkNvbnRl
eHQ6OmdldE9yQ3JlYXRlRm9yQ3VycmVudFRocmVhZCgpKQogewogICAgIG1fZGF0YWJhc2VEaXJl
Y3RvcnkgPSBmdWxsRGF0YWJhc2VEaXJlY3RvcnlXaXRoVXBncmFkZSgpOwogfQpAQCAtMjA3OCwx
OSArMjA3NiwyNCBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0ZVJhbmdl
KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhYwogCiBJREJFcnJvciBTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OnVwZGF0ZU9uZUluZGV4Rm9yQWRkUmVjb3JkKElEQk9iamVjdFN0b3Jl
SW5mbyYgb2JqZWN0U3RvcmVJbmZvLCBjb25zdCBJREJJbmRleEluZm8mIGluZm8sIGNvbnN0IElE
QktleURhdGEmIGtleSwgY29uc3QgVGhyZWFkU2FmZURhdGFCdWZmZXImIHZhbHVlLCBpbnQ2NF90
IHJlY29yZElEKQogewotICAgIEpTTG9ja0hvbGRlciBsb2NrZXIobV9zZXJpYWxpemF0aW9uQ29u
dGV4dC0+dm0oKSk7CisgICAgT3B0aW9uYWw8SW5kZXhLZXk+IHJlc3VsdEluZGV4S2V5OworICAg
IGNhbGxPbklEQlNlcmlhbGl6YXRpb25UaHJlYWRBbmRXYWl0KFtvYmplY3RTdG9yZUluZm8gPSBv
YmplY3RTdG9yZUluZm8uaXNvbGF0ZWRDb3B5KCksIGluZm8gPSBpbmZvLmlzb2xhdGVkQ29weSgp
LCBrZXkgPSBrZXkuaXNvbGF0ZWRDb3B5KCksIHZhbHVlLCAmcmVzdWx0SW5kZXhLZXldKGF1dG8m
IGdsb2JhbE9iamVjdCkgeworICAgICAgICBhdXRvIGpzVmFsdWUgPSBkZXNlcmlhbGl6ZUlEQlZh
bHVlVG9KU1ZhbHVlKGdsb2JhbE9iamVjdCwgdmFsdWUpOworICAgICAgICBpZiAoanNWYWx1ZS5p
c1VuZGVmaW5lZE9yTnVsbCgpKQorICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBqc1Zh
bHVlID0gZGVzZXJpYWxpemVJREJWYWx1ZVRvSlNWYWx1ZShtX3NlcmlhbGl6YXRpb25Db250ZXh0
LT5nbG9iYWxPYmplY3QoKSwgdmFsdWUpOwotICAgIGlmIChqc1ZhbHVlLmlzVW5kZWZpbmVkT3JO
dWxsKCkpCi0gICAgICAgIHJldHVybiBJREJFcnJvciB7IH07CisgICAgICAgIEluZGV4S2V5IGlu
ZGV4S2V5OworICAgICAgICBnZW5lcmF0ZUluZGV4S2V5Rm9yVmFsdWUoZ2xvYmFsT2JqZWN0LCBp
bmZvLCBqc1ZhbHVlLCBpbmRleEtleSwgb2JqZWN0U3RvcmVJbmZvLmtleVBhdGgoKSwga2V5KTsK
KyAgICAgICAgcmVzdWx0SW5kZXhLZXkgPSBpbmRleEtleS5pc29sYXRlZENvcHkoKTsKKyAgICB9
KTsKIAotICAgIEluZGV4S2V5IGluZGV4S2V5OwotICAgIGdlbmVyYXRlSW5kZXhLZXlGb3JWYWx1
ZShtX3NlcmlhbGl6YXRpb25Db250ZXh0LT5nbG9iYWxPYmplY3QoKSwgaW5mbywganNWYWx1ZSwg
aW5kZXhLZXksIG9iamVjdFN0b3JlSW5mby5rZXlQYXRoKCksIGtleSk7CisgICAgaWYgKCFyZXN1
bHRJbmRleEtleSkKKyAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgfTsKIAotICAgIGlmIChpbmRl
eEtleS5pc051bGwoKSkKKyAgICBpZiAocmVzdWx0SW5kZXhLZXktPmlzTnVsbCgpKQogICAgICAg
ICByZXR1cm4gSURCRXJyb3IgeyB9OwogCi0gICAgcmV0dXJuIHVuY2hlY2tlZFB1dEluZGV4S2V5
KGluZm8sIGtleSwgaW5kZXhLZXksIHJlY29yZElEKTsKKyAgICByZXR1cm4gdW5jaGVja2VkUHV0
SW5kZXhLZXkoaW5mbywga2V5LCAqcmVzdWx0SW5kZXhLZXksIHJlY29yZElEKTsKIH0KIAogSURC
RXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1cGRhdGVBbGxJbmRleGVzRm9yQWRkUmVjb3Jk
KGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbywgY29uc3QgSURCS2V5RGF0YSYga2V5LCBj
b25zdCBJbmRleElEVG9JbmRleEtleU1hcCYgaW5kZXhLZXlzLCBpbnQ2NF90IHJlY29yZElEKQpA
QCAtMjkzNywxMSArMjk0MCw2IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6aXRl
cmF0ZUN1cnNvcihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zCiAgICAgcmV0dXJu
IElEQkVycm9yIHsgfTsKIH0KIAotSURCU2VyaWFsaXphdGlvbkNvbnRleHQmIFNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6c2VyaWFsaXphdGlvbkNvbnRleHQoKQotewotICAgIHJldHVybiBtX3Nlcmlh
bGl6YXRpb25Db250ZXh0LmdldCgpOwotfQotCiBJREJPYmplY3RTdG9yZUluZm8qIFNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6aW5mb0Zvck9iamVjdFN0b3JlKHVpbnQ2NF90IG9iamVjdFN0b3JlSWRl
bnRpZmllcikKIHsKICAgICBBU1NFUlQobV9kYXRhYmFzZUluZm8pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9y
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJh
Y2tpbmdTdG9yZS5oCmluZGV4IDQxZGNiZjM5NTg1OWJlZjczYWUzM2EzMzNlNDZmYzhhM2NhNDI1
NjUuLjU0YWMyNDkzZTkwZWFhOTI1N2Q2ZGFlMjc5NGY5MTc3MzE0NDUyZjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5n
U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FM
aXRlSURCQmFja2luZ1N0b3JlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNDYsNyArNDYsNiBAQCBuYW1lc3BhY2UgSURCU2VydmVyIHsK
IAogZW51bSBjbGFzcyBJc1NjaGVtYVVwZ3JhZGVkIDogYm9vbCB7IE5vLCBZZXMgfTsKIAotY2xh
c3MgSURCU2VyaWFsaXphdGlvbkNvbnRleHQ7CiBjbGFzcyBTUUxpdGVJREJDdXJzb3I7CiAKIGNs
YXNzIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZSBmaW5hbCA6IHB1YmxpYyBJREJCYWNraW5nU3RvcmUg
ewpAQCAtODIsOCArODEsNiBAQCBwdWJsaWM6CiAgICAgSURCRXJyb3Igb3BlbkN1cnNvcihjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURC
Q3Vyc29ySW5mbyYsIElEQkdldFJlc3VsdCYgb3V0UmVzdWx0KSBmaW5hbDsKICAgICBJREJFcnJv
ciBpdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25J
ZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIGN1cnNvcklkZW50aWZpZXIs
IGNvbnN0IElEQkl0ZXJhdGVDdXJzb3JEYXRhJiwgSURCR2V0UmVzdWx0JiBvdXRSZXN1bHQpIGZp
bmFsOwogCi0gICAgSURCU2VyaWFsaXphdGlvbkNvbnRleHQmIHNlcmlhbGl6YXRpb25Db250ZXh0
KCkgZmluYWw7Ci0KICAgICBJREJPYmplY3RTdG9yZUluZm8qIGluZm9Gb3JPYmplY3RTdG9yZSh1
aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQgZGVsZXRlQmFj
a2luZ1N0b3JlKCkgZmluYWw7CiAKQEAgLTIyMSw4ICsyMTgsNiBAQCBwcml2YXRlOgogCiAgICAg
U3RyaW5nIG1fZGF0YWJhc2VSb290RGlyZWN0b3J5OwogICAgIFN0cmluZyBtX2RhdGFiYXNlRGly
ZWN0b3J5OwotCi0gICAgUmVmPElEQlNlcmlhbGl6YXRpb25Db250ZXh0PiBtX3NlcmlhbGl6YXRp
b25Db250ZXh0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSURCU2VydmVyCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRh
dGFiYXNlLmNwcAppbmRleCA5YzQ1MmYyNDViYjRkMTk3YjlhYzc1YWFlOTVjODgwYzMyMGFjMTli
Li43ZGIxYWIzMDZmZGI0ZjkzMmEyZDE5YjNkOTE1Mjc0ZmMxZDZmNDg2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJ
REJEYXRhYmFzZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1
LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIklEQkl0ZXJhdGVD
dXJzb3JEYXRhLmgiCiAjaW5jbHVkZSAiSURCS2V5UmFuZ2VEYXRhLmgiCiAjaW5jbHVkZSAiSURC
UmVzdWx0RGF0YS5oIgotI2luY2x1ZGUgIklEQlNlcmlhbGl6YXRpb25Db250ZXh0LmgiCisjaW5j
bHVkZSAiSURCU2VyaWFsaXphdGlvbi5oIgogI2luY2x1ZGUgIklEQlNlcnZlci5oIgogI2luY2x1
ZGUgIklEQlRyYW5zYWN0aW9uSW5mby5oIgogI2luY2x1ZGUgIklEQlZhbHVlLmgiCkBAIC03NDIs
NyArNzQyLDEwIEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnB1dE9yQWRkKGNvbnN0IElEQlJl
cXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5CiAgICAgICAgIHVzZWRLZXkgPSBr
ZXlEYXRhOwogCiAgICAgLy8gR2VuZXJhdGUgaW5kZXgga2V5cyB1cCBmcm9udCBmb3IgbW9yZSBh
Y2N1cmF0ZSBxdW90YSBjaGVjay4KLSAgICBhdXRvIGluZGV4S2V5cyA9IGdlbmVyYXRlSW5kZXhL
ZXlNYXBGb3JWYWx1ZShtX2JhY2tpbmdTdG9yZS0+c2VyaWFsaXphdGlvbkNvbnRleHQoKS5nbG9i
YWxPYmplY3QoKSwgKm9iamVjdFN0b3JlSW5mbywgdXNlZEtleSwgdmFsdWUpOworICAgIEluZGV4
SURUb0luZGV4S2V5TWFwIGluZGV4S2V5czsKKyAgICBjYWxsT25JREJTZXJpYWxpemF0aW9uVGhy
ZWFkQW5kV2FpdChbb2JqZWN0U3RvcmVJbmZvID0gb2JqZWN0U3RvcmVJbmZvLT5pc29sYXRlZENv
cHkoKSwga2V5ID0gdXNlZEtleS5pc29sYXRlZENvcHkoKSwgdmFsdWUgPSB2YWx1ZS5pc29sYXRl
ZENvcHkoKSwgJmluZGV4S2V5c10oYXV0byYgZ2xvYmFsT2JqZWN0KSB7CisgICAgICAgIGluZGV4
S2V5cyA9IGdlbmVyYXRlSW5kZXhLZXlNYXBGb3JWYWx1ZShnbG9iYWxPYmplY3QsIG9iamVjdFN0
b3JlSW5mbywga2V5LCB2YWx1ZSk7CisgICAgfSk7CiAKICAgICBpZiAob3ZlcndyaXRlTW9kZSA9
PSBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZTo6Tm9PdmVyd3JpdGUpIHsKICAg
ICAgICAgYm9vbCBrZXlFeGlzdHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGE1Yzc1ZGY3OTFkNzFiZDY3
Mzc0NGZiM2YwNDgzNmI3NzJhYzk5ZDkuLmMyZGQ3ZmI3MmQwYzQ4NDE4YmU2ZTE5ZGUzZGM4YzI3
ZTczZmEwZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC05NSw3ICs5NSw2IEBAIE1vZHVsZXMvaW5kZXhl
ZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwCiBNb2R1bGVzL2luZGV4ZWRkYi9j
bGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uY3BwCiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
SURCQ29ubmVjdGlvblRvQ2xpZW50LmNwcAogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNl
cmlhbGl6YXRpb24uY3BwCi1Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlv
bkNvbnRleHQuY3BwCiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcAogTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0luZGV4VmFsdWVFbnRyeS5jcHAKIE1vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JbmRleFZhbHVlU3RvcmUuY3BwCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430442</attachid>
            <date>2021-06-02 20:44:16 -0700</date>
            <delta_ts>2021-06-02 21:57:53 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-226228-20210602204415.patch</filename>
            <type>text/plain</type>
            <size>31054</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MzIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2VhYWQ0YzVmMWU0YjQy
ODBhNDA5MzgxZGE0ZmEwOTQyZDI0NmUxZi4uZTdiZGIwMTAwODY1MjkxYTQ4N2Q1MjA5MWZiMjNk
YTFjMGMyYjg1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIxLTA2LTAyICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjZSBhIHNoYXJl
ZCBJREIgc2VyaWFsaXphdGlvbiB0aHJlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyNjIyOAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzg3MjU1
MTY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgQ3VycmVu
dGx5IGVhY2ggV2ViSURCU2VydmVyIGhhcyBpdHMgb3duIHRocmVhZCwgYW5kIGRvZXMgc2VyaWFs
aXphdGlvbi9kZXNlcmlhbGl6YXRpb24gb24gdGhhdCB0aHJlYWQuIFRvCisgICAgICAgIHByZXBh
cmUgZm9yIG1ha2luZyBXZWJJREJTZXJ2ZXIgdXNlIFdvcmtRdWV1ZSwgbGlrZSB0aGUgb3RoZXIg
c3RvcmFnZSBtYW5hZ2VyIGNsYXNzZXMsIGxldCdzIGNyZWF0ZSBhIHNoYXJlZAorICAgICAgICB0
aHJlYWQgZm9yIGhhbmRsaW5nIGFsbCBzZXJpYWxpemF0aW9uL2Rlc2VyaWFsaXphdGlvbiBvcGVy
YXRpb25zLCB3aGljaCBjYW5ub3QgYmUgZG9uZSBvbiBXb3JrUXVldWUgYXMgVk0gbmVlZHMgCisg
ICAgICAgIHRvIGFjY2VzcyB0aHJlYWQtc3BlY2lmaWMgZGF0YS4gTm93IElEQiB0YXNrcyB3aWxs
IGNhbGwgY2FsbE9uSURCU2VyaWFsaXphdGlvblRocmVhZEFuZFdhaXQgdG8gcGVyZm9ybSAKKyAg
ICAgICAgc2VyaWFsaXphdGlvbi9kZXNlcmlhbGl6YXRpb24gb3BlcmF0aW9ucyBzeW5jaHJvbm91
c2x5LgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkJhY2tpbmdTdG9y
ZS5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9u
Q29udGV4dC5jcHA6IFJlbW92ZWQuIE1vdmVkIHRvIElEQkJpbmRpbmdVdGlsaXRpZXMuY3BwIGFz
IAorICAgICAgICBJREJTZXJpYWxpemF0aW9uQ29udGV4dCBpcyBvbmx5IHVzZWQgYnkgSURCU2Vy
aWFsaXphdGlvbiB0aHJlYWQgbm93LgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9JREJTZXJpYWxpemF0aW9uQ29udGV4dC5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpNZW1vcnlJREJCYWNraW5nU3RvcmU6Ok1lbW9yeUlEQkJhY2tpbmdT
dG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeUlEQkJhY2tpbmdTdG9y
ZTo6c2VyaWFsaXphdGlvbkNvbnRleHQpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpNZW1vcnlPYmplY3RTdG9yZTo6TWVtb3J5T2JqZWN0U3RvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlPYmplY3RTdG9yZTo6YWRkUmVjb3JkKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5T2JqZWN0U3RvcmU6OnBvcHVsYXRl
SW5kZXhXaXRoRXhpc3RpbmdSZWNvcmRzKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNl
cnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpTUUxpdGVJREJCYWNraW5nU3RvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVwZGF0ZU9u
ZUluZGV4Rm9yQWRkUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRl
SURCQmFja2luZ1N0b3JlOjpzZXJpYWxpemF0aW9uQ29udGV4dCk6IERlbGV0ZWQuCisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpwdXRPckFkZCk6
CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogYmluZGluZ3MvanMvSURCQmluZGlu
Z1V0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJpYWxpemF0aW9uQ29udGV4
dDo6SURCU2VyaWFsaXphdGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VyaWFs
aXphdGlvbkNvbnRleHQ6On5JREJTZXJpYWxpemF0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJpYWxpemF0aW9uQ29udGV4dDo6Z2xvYmFsT2JqZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcmlhbGl6YXRpb25Db250ZXh0Ojppbml0aWFsaXplVk0pOgorICAgICAgICAo
V2ViQ29yZTo6Y2FsbE9uSURCU2VyaWFsaXphdGlvblRocmVhZEFuZFdhaXQpOiBDcmVhdGUgYSBJ
REJTZXJpYWxpemF0aW9uIHRocmVhZCBpZiBub3QgZXhpc3RzLCBhbmQgZGlzcGF0Y2ggYSAKKyAg
ICAgICAgc3luY2hyb25vdXMgdGFzayB0byBpdC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9JREJC
aW5kaW5nVXRpbGl0aWVzLmg6CisKIDIwMjEtMDYtMDEgIEZ1amlpIEhpcm9ub3JpICA8SGlyb25v
cmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAgW1dpbkNhaXJvXSBHcmFwaGljc0NvbnRleHRD
YWlybzo6R3JhcGhpY3NDb250ZXh0Q2Fpcm8oSERDLCBib29sKSBsZWFrcyBjYWlyb190CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQmFja2lu
Z1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQmFj
a2luZ1N0b3JlLmgKaW5kZXggZTQ1ZDhhY2Y0YzE1NzI5YTFiM2MxNWMzNDQwYWVkZTM4OGZjMjk3
YS4uMDZjNjQ2ZDMzZjdmZWY4ZDkxMTRiYmE2NGU3N2NjYTAxMzY2NDU0ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkJhY2tpbmdTdG9yZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJCYWNraW5n
U3RvcmUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC01NSw4ICs1NSw2IEBAIGVudW0gY2xhc3MgSW5kZXhSZWNvcmRUeXBlIDogYm9vbDsK
IAogbmFtZXNwYWNlIElEQlNlcnZlciB7CiAKLWNsYXNzIElEQlNlcmlhbGl6YXRpb25Db250ZXh0
OwotCiBjbGFzcyBJREJCYWNraW5nU3RvcmUgewogcHVibGljOgogICAgIHZpcnR1YWwgfklEQkJh
Y2tpbmdTdG9yZSgpIHsgUkVMRUFTRV9BU1NFUlQoIWlzTWFpblRocmVhZCgpKTsgfQpAQCAtODgs
OCArODYsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBJREJFcnJvciBvcGVuQ3Vyc29yKGNvbnN0
IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJD
dXJzb3JJbmZvJiwgSURCR2V0UmVzdWx0JiBvdXRSZXN1bHQpID0gMDsKICAgICB2aXJ0dWFsIElE
QkVycm9yIGl0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2Fj
dGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgY3Vyc29ySWRlbnRp
ZmllciwgY29uc3QgSURCSXRlcmF0ZUN1cnNvckRhdGEmLCBJREJHZXRSZXN1bHQmIG91dFJlc3Vs
dCkgPSAwOwogCi0gICAgdmlydHVhbCBJREJTZXJpYWxpemF0aW9uQ29udGV4dCYgc2VyaWFsaXph
dGlvbkNvbnRleHQoKSA9IDA7Ci0KICAgICB2aXJ0dWFsIElEQk9iamVjdFN0b3JlSW5mbyogaW5m
b0Zvck9iamVjdFN0b3JlKHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBkZWxldGVCYWNraW5nU3RvcmUoKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2Vy
aWFsaXphdGlvbkNvbnRleHQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MTNi
MWJjZTYyMDMyNTFmYjdjNTgxYmEzNDVlNGM2ZjBjMWExNDgzLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uQ29udGV4dC5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSwxMDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJJREJTZXJpYWxpemF0aW9uQ29udGV4dC5oIgotCi0jaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxk
LmgiCi0jaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgotI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTT2JqZWN0SW5saW5lcy5oPgotI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIElEQlNlcnZlciB7Ci0KLXN0YXRpYyBMb2NrIHNl
cmlhbGl6YXRpb25Db250ZXh0TWFwTG9jazsKLQotc3RhdGljIEhhc2hNYXA8VGhyZWFkKiwgSURC
U2VyaWFsaXphdGlvbkNvbnRleHQqPiYgc2VyaWFsaXphdGlvbkNvbnRleHRNYXAoKSBXVEZfUkVR
VUlSRVNfTE9DSyhzZXJpYWxpemF0aW9uQ29udGV4dE1hcExvY2spCi17Ci0gICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEhhc2hNYXA8VGhyZWFkKiwgSURCU2VyaWFsaXphdGlvbkNvbnRleHQqPj4g
bWFwOwotICAgIHJldHVybiBtYXA7Ci19Ci0KLVJlZjxJREJTZXJpYWxpemF0aW9uQ29udGV4dD4g
SURCU2VyaWFsaXphdGlvbkNvbnRleHQ6OmdldE9yQ3JlYXRlRm9yQ3VycmVudFRocmVhZCgpCi17
Ci0gICAgYXV0byYgdGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7Ci0gICAgTG9ja2VyIGxvY2tl
ciB7IHNlcmlhbGl6YXRpb25Db250ZXh0TWFwTG9jayB9OwotICAgIGF1dG9baXRlciwgaXNOZXdF
bnRyeV0gPSBzZXJpYWxpemF0aW9uQ29udGV4dE1hcCgpLmFkZCgmdGhyZWFkLCBudWxscHRyKTsK
LSAgICBpZiAoaXNOZXdFbnRyeSkgewotICAgICAgICBSZWY8SURCU2VyaWFsaXphdGlvbkNvbnRl
eHQ+IHByb3RlY3RlZENvbnRleHQgPSBhZG9wdFJlZigqbmV3IElEQlNlcmlhbGl6YXRpb25Db250
ZXh0KHRocmVhZCkpOwotICAgICAgICBpdGVyLT52YWx1ZSA9IHByb3RlY3RlZENvbnRleHQucHRy
KCk7Ci0gICAgICAgIHJldHVybiBwcm90ZWN0ZWRDb250ZXh0OwotICAgIH0KLQotICAgIHJldHVy
biAqaXRlci0+dmFsdWU7Ci19Ci0KLUlEQlNlcmlhbGl6YXRpb25Db250ZXh0Ojp+SURCU2VyaWFs
aXphdGlvbkNvbnRleHQoKQotewotICAgIExvY2tlciBsb2NrZXIgeyBzZXJpYWxpemF0aW9uQ29u
dGV4dE1hcExvY2sgfTsKLSAgICBBU1NFUlQodGhpcyA9PSBzZXJpYWxpemF0aW9uQ29udGV4dE1h
cCgpLmdldCgmbV90aHJlYWQpKTsKLQotICAgIGlmIChtX3ZtKSB7Ci0gICAgICAgIEpTQzo6SlNM
b2NrSG9sZGVyIGxvY2soKm1fdm0pOwotICAgICAgICBtX2dsb2JhbE9iamVjdC5jbGVhcigpOwot
ICAgICAgICBtX3ZtID0gbnVsbHB0cjsKLSAgICB9Ci0gICAgc2VyaWFsaXphdGlvbkNvbnRleHRN
YXAoKS5yZW1vdmUoJm1fdGhyZWFkKTsKLX0KLQotdm9pZCBJREJTZXJpYWxpemF0aW9uQ29udGV4
dDo6aW5pdGlhbGl6ZVZNKCkKLXsKLSAgICBpZiAobV92bSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgQVNTRVJUKCFtX2dsb2JhbE9iamVjdCk7Ci0gICAgbV92bSA9IEpTQzo6Vk06OmNyZWF0ZSgp
OwotICAgIG1fdm0tPmhlYXAuYWNxdWlyZUFjY2VzcygpOwotICAgIEpTVk1DbGllbnREYXRhOjpp
bml0Tm9ybWFsV29ybGQobV92bS5nZXQoKSwgV29ya2VyVGhyZWFkVHlwZTo6V29ya2xldCk7Ci0K
LSAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIobV92bS5nZXQoKSk7Ci0gICAgbV9nbG9iYWxP
YmplY3Quc2V0KCptX3ZtLCBKU0lEQlNlcmlhbGl6YXRpb25HbG9iYWxPYmplY3Q6OmNyZWF0ZSgq
bV92bSwgSlNJREJTZXJpYWxpemF0aW9uR2xvYmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoKm1f
dm0sIEpTQzo6anNOdWxsKCkpLCBub3JtYWxXb3JsZCgqbV92bSkpKTsKLX0KLQotSlNDOjpWTSYg
SURCU2VyaWFsaXphdGlvbkNvbnRleHQ6OnZtKCkKLXsKLSAgICBBU1NFUlQoJm1fdGhyZWFkID09
ICZUaHJlYWQ6OmN1cnJlbnQoKSk7Ci0KLSAgICBpbml0aWFsaXplVk0oKTsKLSAgICByZXR1cm4g
Km1fdm07Ci19Ci0KLUpTQzo6SlNHbG9iYWxPYmplY3QmIElEQlNlcmlhbGl6YXRpb25Db250ZXh0
OjpnbG9iYWxPYmplY3QoKQotewotICAgIEFTU0VSVCgmbV90aHJlYWQgPT0gJlRocmVhZDo6Y3Vy
cmVudCgpKTsKLQotICAgIGluaXRpYWxpemVWTSgpOwotICAgIHJldHVybiAqbV9nbG9iYWxPYmpl
Y3QuZ2V0KCk7Ci19Ci0KLUlEQlNlcmlhbGl6YXRpb25Db250ZXh0OjpJREJTZXJpYWxpemF0aW9u
Q29udGV4dChUaHJlYWQmIHRocmVhZCkKLSAgICA6IG1fdGhyZWFkKHRocmVhZCkKLXsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgSURCU2VydmVyCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXph
dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9J
REJTZXJpYWxpemF0aW9uQ29udGV4dC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBh
ZmRlYzAwNzFlODA4OWU5NGM2NzUzYjZmNTBlN2MxMDljNzY4OWIxLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uQ29udGV4dC5oCisrKyAvZGV2L251bGwKQEAg
LTEsNjAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiSlNJ
REJTZXJpYWxpemF0aW9uR2xvYmFsT2JqZWN0LmgiCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
U3Ryb25nSW5saW5lcy5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cnVjdHVyZUlubGlu
ZXMuaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBDYWxsRnJhbWU7Ci1jbGFzcyBWTTsKLX0K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgSURCU2VydmVyIHsKLQotY2xhc3Mg
SURCU2VyaWFsaXphdGlvbkNvbnRleHQgOiBwdWJsaWMgUmVmQ291bnRlZDxJREJTZXJpYWxpemF0
aW9uQ29udGV4dD4gewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8SURCU2VyaWFsaXphdGlvbkNv
bnRleHQ+IGdldE9yQ3JlYXRlRm9yQ3VycmVudFRocmVhZCgpOwotCi0gICAgfklEQlNlcmlhbGl6
YXRpb25Db250ZXh0KCk7Ci0KLSAgICBKU0M6OlZNJiB2bSgpOwotICAgIEpTQzo6SlNHbG9iYWxP
YmplY3QmIGdsb2JhbE9iamVjdCgpOwotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IElEQlNlcmlh
bGl6YXRpb25Db250ZXh0KFRocmVhZCYpOwotICAgIHZvaWQgaW5pdGlhbGl6ZVZNKCk7Ci0KLSAg
ICBSZWZQdHI8SlNDOjpWTT4gbV92bTsKLSAgICBKU0M6OlN0cm9uZzxKU0lEQlNlcmlhbGl6YXRp
b25HbG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2JqZWN0OwotICAgIFRocmVhZCYgbV90aHJlYWQ7Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBJREJTZXJ2ZXIKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJ
REJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggMjRlYjBlM2ZiYzI4MTVlZjc1NDhm
MDc4YWVkMzViNTQ2MGFmYzhiZC4uYjk4MGEzMWM1Y2Y3MDc5YTIzYzVhMmNjYmViOTMwYmUzZmRk
Zjg1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsNyArMzMsNiBAQAog
I2luY2x1ZGUgIklEQkluZGV4SW5mby5oIgogI2luY2x1ZGUgIklEQkl0ZXJhdGVDdXJzb3JEYXRh
LmgiCiAjaW5jbHVkZSAiSURCS2V5UmFuZ2VEYXRhLmgiCi0jaW5jbHVkZSAiSURCU2VyaWFsaXph
dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVtb3J5SW5k
ZXhDdXJzb3IuaCIKICNpbmNsdWRlICJNZW1vcnlPYmplY3RTdG9yZS5oIgpAQCAtNDgsNyArNDcs
NiBAQCBjb25zdGV4cHIgdWludDY0X3QgbWF4R2VuZXJhdGVkS2V5VmFsdWUgPSAweDIwMDAwMDAw
MDAwMDAwOwogTWVtb3J5SURCQmFja2luZ1N0b3JlOjpNZW1vcnlJREJCYWNraW5nU3RvcmUoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImIGlkZW50
aWZpZXIpCiAgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKICAgICAsIG1fc2Vzc2lvbklE
KHNlc3Npb25JRCkKLSAgICAsIG1fc2VyaWFsaXphdGlvbkNvbnRleHQoSURCU2VyaWFsaXphdGlv
bkNvbnRleHQ6OmdldE9yQ3JlYXRlRm9yQ3VycmVudFRocmVhZCgpKQogewogfQogCkBAIC02MTYs
MTEgKzYxNCw2IEBAIFJlZlB0cjxNZW1vcnlPYmplY3RTdG9yZT4gTWVtb3J5SURCQmFja2luZ1N0
b3JlOjp0YWtlT2JqZWN0U3RvcmVCeUlkZW50aWZpZXIodWluCiAgICAgcmV0dXJuIG9iamVjdFN0
b3JlQnlJZGVudGlmaWVyOwogfQogCi1JREJTZXJpYWxpemF0aW9uQ29udGV4dCYgTWVtb3J5SURC
QmFja2luZ1N0b3JlOjpzZXJpYWxpemF0aW9uQ29udGV4dCgpCi17Ci0gICAgcmV0dXJuIG1fc2Vy
aWFsaXphdGlvbkNvbnRleHQuZ2V0KCk7Ci19Ci0KIElEQk9iamVjdFN0b3JlSW5mbyogTWVtb3J5
SURCQmFja2luZ1N0b3JlOjppbmZvRm9yT2JqZWN0U3RvcmUodWludDY0X3Qgb2JqZWN0U3RvcmVJ
ZGVudGlmaWVyKQogewogICAgIEFTU0VSVChtX2RhdGFiYXNlSW5mbyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0
b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURC
QmFja2luZ1N0b3JlLmgKaW5kZXggMWQzMGJjYTYzZTU4OTA5ZjY2YzMwZjZmMzY5ZjFiMDM1Y2M5
YzhkZC4uZTM1ZjNhNzQ1NTY1NzRlOWViZTY1NWQ5MTQ4MGIxMDRlM2I2OTk0NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tp
bmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9N
ZW1vcnlJREJCYWNraW5nU3RvcmUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE1LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0zNiw3ICszNiw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBuYW1lc3BhY2UgSURCU2VydmVyIHsKIAotY2xhc3MgSURCU2VyaWFsaXphdGlvbkNvbnRleHQ7
CiBjbGFzcyBNZW1vcnlPYmplY3RTdG9yZTsKIAogY2xhc3MgTWVtb3J5SURCQmFja2luZ1N0b3Jl
IGZpbmFsIDogcHVibGljIElEQkJhY2tpbmdTdG9yZSB7CkBAIC01Miw4ICs1MSw2IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHJlbW92ZU9iamVjdFN0b3JlRm9yVmVyc2lvbkNoYW5nZUFib3J0KE1lbW9y
eU9iamVjdFN0b3JlJik7CiAgICAgdm9pZCByZXN0b3JlT2JqZWN0U3RvcmVGb3JWZXJzaW9uQ2hh
bmdlQWJvcnQoUmVmPE1lbW9yeU9iamVjdFN0b3JlPiYmKTsKIAotICAgIElEQlNlcmlhbGl6YXRp
b25Db250ZXh0JiBzZXJpYWxpemF0aW9uQ29udGV4dCgpIGZpbmFsOwotCiBwcml2YXRlOgogICAg
IElEQkVycm9yIGJlZ2luVHJhbnNhY3Rpb24oY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJikgZmlu
YWw7CiAgICAgSURCRXJyb3IgYWJvcnRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50
aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcikgZmluYWw7CkBAIC05NSw3ICs5Miw2IEBAIHBy
aXZhdGU6CiAKICAgICBJREJEYXRhYmFzZUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIFBB
TDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwotICAgIFJlZjxJREJTZXJpYWxpemF0aW9uQ29udGV4
dD4gbV9zZXJpYWxpemF0aW9uQ29udGV4dDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCRGF0YWJh
c2VJbmZvPiBtX2RhdGFiYXNlSW5mbzsKIAogICAgIEhhc2hNYXA8SURCUmVzb3VyY2VJZGVudGlm
aWVyLCBzdGQ6OnVuaXF1ZV9wdHI8TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24+PiBtX3Ry
YW5zYWN0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3BwCmluZGV4IGMyZTllYTI0NjE3YTg4
ZTlmNGI4ZjAxMGQ3Y2UwM2ViMDAxZWIwMWQuLjVhNTNlMjMxNTI2ODRkZTM4MGRhYTFlNTk3M2Zi
MTkzZGYwMTI2NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMCw3ICszMCw2IEBACiAj
aW5jbHVkZSAiSURCRXJyb3IuaCIKICNpbmNsdWRlICJJREJHZXRBbGxSZXN1bHQuaCIKICNpbmNs
dWRlICJJREJLZXlSYW5nZURhdGEuaCIKLSNpbmNsdWRlICJJREJTZXJpYWxpemF0aW9uQ29udGV4
dC5oIgogI2luY2x1ZGUgIklEQlZhbHVlLmgiCiAjaW5jbHVkZSAiSW5kZXhLZXkuaCIKICNpbmNs
dWRlICJMb2dnaW5nLmgiCkBAIC01Miw3ICs1MSw2IEBAIFJlZjxNZW1vcnlPYmplY3RTdG9yZT4g
TWVtb3J5T2JqZWN0U3RvcmU6OmNyZWF0ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
CiAKIE1lbW9yeU9iamVjdFN0b3JlOjpNZW1vcnlPYmplY3RTdG9yZShQQUw6OlNlc3Npb25JRCwg
Y29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBpbmZvKQogICAgIDogbV9pbmZvKGluZm8pCi0gICAg
LCBtX3NlcmlhbGl6YXRpb25Db250ZXh0KElEQlNlcmlhbGl6YXRpb25Db250ZXh0OjpnZXRPckNy
ZWF0ZUZvckN1cnJlbnRUaHJlYWQoKSkKIHsKIH0KIApAQCAtMjUxLDcgKzI0OSwxMCBAQCB2b2lk
IE1lbW9yeU9iamVjdFN0b3JlOjpkZWxldGVSYW5nZShjb25zdCBJREJLZXlSYW5nZURhdGEmIGlu
cHV0UmFuZ2UpCiAKIElEQkVycm9yIE1lbW9yeU9iamVjdFN0b3JlOjphZGRSZWNvcmQoTWVtb3J5
QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBjb25zdCBJREJLZXlEYXRhJiBr
ZXlEYXRhLCBjb25zdCBJREJWYWx1ZSYgdmFsdWUpCiB7Ci0gICAgYXV0byBpbmRleEtleXMgPSBn
ZW5lcmF0ZUluZGV4S2V5TWFwRm9yVmFsdWUobV9zZXJpYWxpemF0aW9uQ29udGV4dC0+Z2xvYmFs
T2JqZWN0KCksIG1faW5mbywga2V5RGF0YSwgdmFsdWUpOworICAgIEluZGV4SURUb0luZGV4S2V5
TWFwIGluZGV4S2V5czsKKyAgICBjYWxsT25JREJTZXJpYWxpemF0aW9uVGhyZWFkQW5kV2FpdChb
aW5mbyA9IG1faW5mby5pc29sYXRlZENvcHkoKSwga2V5RGF0YSA9IGtleURhdGEuaXNvbGF0ZWRD
b3B5KCksIHZhbHVlID0gdmFsdWUuaXNvbGF0ZWRDb3B5KCksICZpbmRleEtleXNdKGF1dG8mIGds
b2JhbE9iamVjdCkgeworICAgICAgICBpbmRleEtleXMgPSBnZW5lcmF0ZUluZGV4S2V5TWFwRm9y
VmFsdWUoZ2xvYmFsT2JqZWN0LCBpbmZvLCBrZXlEYXRhLCB2YWx1ZSk7CisgICAgfSk7CiAgICAg
cmV0dXJuIGFkZFJlY29yZCh0cmFuc2FjdGlvbiwga2V5RGF0YSwgaW5kZXhLZXlzLCB2YWx1ZSk7
CiB9CiAKQEAgLTMzOCwyMCArMzM5LDI1IEBAIElEQkVycm9yIE1lbW9yeU9iamVjdFN0b3JlOjpw
b3B1bGF0ZUluZGV4V2l0aEV4aXN0aW5nUmVjb3JkcyhNZW1vcnlJbmRleCYgaW5kZXgpCiAgICAg
aWYgKCFtX2tleVZhbHVlU3RvcmUpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IH07CiAKLSAg
ICBKU0xvY2tIb2xkZXIgbG9ja2VyKG1fc2VyaWFsaXphdGlvbkNvbnRleHQtPnZtKCkpOwotCiAg
ICAgZm9yIChjb25zdCBhdXRvJiBpdGVyYXRvciA6ICptX2tleVZhbHVlU3RvcmUpIHsKLSAgICAg
ICAgYXV0byBqc1ZhbHVlID0gZGVzZXJpYWxpemVJREJWYWx1ZVRvSlNWYWx1ZShtX3NlcmlhbGl6
YXRpb25Db250ZXh0LT5nbG9iYWxPYmplY3QoKSwgaXRlcmF0b3IudmFsdWUpOwotICAgICAgICBp
ZiAoanNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQorICAgICAgICBzdGQ6Om9wdGlvbmFsPElu
ZGV4S2V5PiByZXN1bHRJbmRleEtleTsKKyAgICAgICAgY2FsbE9uSURCU2VyaWFsaXphdGlvblRo
cmVhZEFuZFdhaXQoW2tleSA9IGl0ZXJhdG9yLmtleS5pc29sYXRlZENvcHkoKSwgdmFsdWUgPSBp
dGVyYXRvci52YWx1ZSwgaW5mbyA9IG1faW5mby5pc29sYXRlZENvcHkoKSwgaW5kZXhJbmZvID0g
aW5kZXguaW5mbygpLmlzb2xhdGVkQ29weSgpLCAmcmVzdWx0SW5kZXhLZXldKGF1dG8mIGdsb2Jh
bE9iamVjdCkgeworICAgICAgICAgICAgYXV0byBqc1ZhbHVlID0gZGVzZXJpYWxpemVJREJWYWx1
ZVRvSlNWYWx1ZShnbG9iYWxPYmplY3QsIHZhbHVlKTsKKyAgICAgICAgICAgIGlmIChqc1ZhbHVl
LmlzVW5kZWZpbmVkT3JOdWxsKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
ICAgICBJbmRleEtleSBpbmRleEtleTsKKyAgICAgICAgICAgIGdlbmVyYXRlSW5kZXhLZXlGb3JW
YWx1ZShnbG9iYWxPYmplY3QsIGluZGV4SW5mbywganNWYWx1ZSwgaW5kZXhLZXksIGluZm8ua2V5
UGF0aCgpLCBrZXkpOworICAgICAgICAgICAgcmVzdWx0SW5kZXhLZXkgPSBpbmRleEtleS5pc29s
YXRlZENvcHkoKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaWYgKCFyZXN1bHRJbmRleEtleSkK
ICAgICAgICAgICAgIHJldHVybiBJREJFcnJvciB7IH07CiAKLSAgICAgICAgSW5kZXhLZXkgaW5k
ZXhLZXk7Ci0gICAgICAgIGdlbmVyYXRlSW5kZXhLZXlGb3JWYWx1ZShtX3NlcmlhbGl6YXRpb25D
b250ZXh0LT5nbG9iYWxPYmplY3QoKSwgaW5kZXguaW5mbygpLCBqc1ZhbHVlLCBpbmRleEtleSwg
bV9pbmZvLmtleVBhdGgoKSwgaXRlcmF0b3Iua2V5KTsKLQotICAgICAgICBpZiAoaW5kZXhLZXku
aXNOdWxsKCkpCisgICAgICAgIGlmIChyZXN1bHRJbmRleEtleS0+aXNOdWxsKCkpCiAgICAgICAg
ICAgICBjb250aW51ZTsKIAotICAgICAgICBJREJFcnJvciBlcnJvciA9IGluZGV4LnB1dEluZGV4
S2V5KGl0ZXJhdG9yLmtleSwgaW5kZXhLZXkpOworICAgICAgICBJREJFcnJvciBlcnJvciA9IGlu
ZGV4LnB1dEluZGV4S2V5KGl0ZXJhdG9yLmtleSwgKnJlc3VsdEluZGV4S2V5KTsKICAgICAgICAg
aWYgKCFlcnJvci5pc051bGwoKSkKICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5
T2JqZWN0U3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9N
ZW1vcnlPYmplY3RTdG9yZS5oCmluZGV4IDU2OTc2ZGVkMTI3MTZiOGIzNzMyMDYwYzVjNTkwYWI5
MzNhNzM0MDYuLjg3MWRlYjVlNGFlMDUxNDgyYjkwODk2ODk1ZWEzMWMyNzZkZDMwODYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmpl
Y3RTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9N
ZW1vcnlPYmplY3RTdG9yZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTU1LDcgKzU1LDYgQEAgZW51bSBjbGFzcyBJbmRleFJlY29yZFR5
cGUgOiBib29sOwogCiBuYW1lc3BhY2UgSURCU2VydmVyIHsKIAotY2xhc3MgSURCU2VyaWFsaXph
dGlvbkNvbnRleHQ7CiBjbGFzcyBNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbjsKIAogdHlw
ZWRlZiBIYXNoTWFwPElEQktleURhdGEsIFRocmVhZFNhZmVEYXRhQnVmZmVyLCBJREJLZXlEYXRh
SGFzaCwgSURCS2V5RGF0YUhhc2hUcmFpdHM+IEtleVZhbHVlTWFwOwpAQCAtMTMzLDggKzEzMiw2
IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPE1lbW9yeUluZGV4Pj4g
bV9pbmRleGVzQnlJZGVudGlmaWVyOwogICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8TWVtb3J5
SW5kZXg+PiBtX2luZGV4ZXNCeU5hbWU7CiAgICAgSGFzaE1hcDxJREJSZXNvdXJjZUlkZW50aWZp
ZXIsIHN0ZDo6dW5pcXVlX3B0cjxNZW1vcnlPYmplY3RTdG9yZUN1cnNvcj4+IG1fY3Vyc29yczsK
LQotICAgIFJlZjxJREJTZXJpYWxpemF0aW9uQ29udGV4dD4gbV9zZXJpYWxpemF0aW9uQ29udGV4
dDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIElEQlNlcnZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2lu
Z1N0b3JlLmNwcAppbmRleCA4ODM0ZDJhYWM2ZTc1NDM3MDAxMTZlNmEyNGM4MGYxY2VmYzcxY2Vm
Li42MGRlOGUzNzE5ZmIxYWQxZTEzY2Q0MGU3ZjZkNTk5N2ZjYmYzYjNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0
b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FM
aXRlSURCQmFja2luZ1N0b3JlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlICJJREJL
ZXlEYXRhLmgiCiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmVJbmZvLmgiCiAjaW5jbHVkZSAiSURC
U2VyaWFsaXphdGlvbi5oIgotI2luY2x1ZGUgIklEQlNlcmlhbGl6YXRpb25Db250ZXh0LmgiCiAj
aW5jbHVkZSAiSURCVHJhbnNhY3Rpb25JbmZvLmgiCiAjaW5jbHVkZSAiSURCVmFsdWUuaCIKICNp
bmNsdWRlICJJbmRleEtleS5oIgpAQCAtMjQxLDcgKzI0MCw2IEBAIFNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6U1FMaXRlSURCQmFja2luZ1N0b3JlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgSURCCiAgICAgOiBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCiAgICAgLCBtX2lkZW50aWZpZXIo
aWRlbnRpZmllcikKICAgICAsIG1fZGF0YWJhc2VSb290RGlyZWN0b3J5KGRhdGFiYXNlUm9vdERp
cmVjdG9yeSkKLSAgICAsIG1fc2VyaWFsaXphdGlvbkNvbnRleHQoSURCU2VyaWFsaXphdGlvbkNv
bnRleHQ6OmdldE9yQ3JlYXRlRm9yQ3VycmVudFRocmVhZCgpKQogewogICAgIG1fZGF0YWJhc2VE
aXJlY3RvcnkgPSBmdWxsRGF0YWJhc2VEaXJlY3RvcnlXaXRoVXBncmFkZSgpOwogfQpAQCAtMTg4
NiwxOSArMTg4NCwyNCBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0ZVJh
bmdlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhYwogCiBJREJFcnJvciBTUUxp
dGVJREJCYWNraW5nU3RvcmU6OnVwZGF0ZU9uZUluZGV4Rm9yQWRkUmVjb3JkKElEQk9iamVjdFN0
b3JlSW5mbyYgb2JqZWN0U3RvcmVJbmZvLCBjb25zdCBJREJJbmRleEluZm8mIGluZm8sIGNvbnN0
IElEQktleURhdGEmIGtleSwgY29uc3QgVGhyZWFkU2FmZURhdGFCdWZmZXImIHZhbHVlLCBpbnQ2
NF90IHJlY29yZElEKQogewotICAgIEpTTG9ja0hvbGRlciBsb2NrZXIobV9zZXJpYWxpemF0aW9u
Q29udGV4dC0+dm0oKSk7CisgICAgc3RkOjpvcHRpb25hbDxJbmRleEtleT4gcmVzdWx0SW5kZXhL
ZXk7CisgICAgY2FsbE9uSURCU2VyaWFsaXphdGlvblRocmVhZEFuZFdhaXQoW29iamVjdFN0b3Jl
SW5mbyA9IG9iamVjdFN0b3JlSW5mby5pc29sYXRlZENvcHkoKSwgaW5mbyA9IGluZm8uaXNvbGF0
ZWRDb3B5KCksIGtleSA9IGtleS5pc29sYXRlZENvcHkoKSwgdmFsdWUsICZyZXN1bHRJbmRleEtl
eV0oYXV0byYgZ2xvYmFsT2JqZWN0KSB7CisgICAgICAgIGF1dG8ganNWYWx1ZSA9IGRlc2VyaWFs
aXplSURCVmFsdWVUb0pTVmFsdWUoZ2xvYmFsT2JqZWN0LCB2YWx1ZSk7CisgICAgICAgIGlmIChq
c1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCisgICAgICAgICAgICByZXR1cm47CiAKLSAgICBh
dXRvIGpzVmFsdWUgPSBkZXNlcmlhbGl6ZUlEQlZhbHVlVG9KU1ZhbHVlKG1fc2VyaWFsaXphdGlv
bkNvbnRleHQtPmdsb2JhbE9iamVjdCgpLCB2YWx1ZSk7Ci0gICAgaWYgKGpzVmFsdWUuaXNVbmRl
ZmluZWRPck51bGwoKSkKLSAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgfTsKKyAgICAgICAgSW5k
ZXhLZXkgaW5kZXhLZXk7CisgICAgICAgIGdlbmVyYXRlSW5kZXhLZXlGb3JWYWx1ZShnbG9iYWxP
YmplY3QsIGluZm8sIGpzVmFsdWUsIGluZGV4S2V5LCBvYmplY3RTdG9yZUluZm8ua2V5UGF0aCgp
LCBrZXkpOworICAgICAgICByZXN1bHRJbmRleEtleSA9IGluZGV4S2V5Lmlzb2xhdGVkQ29weSgp
OworICAgIH0pOwogCi0gICAgSW5kZXhLZXkgaW5kZXhLZXk7Ci0gICAgZ2VuZXJhdGVJbmRleEtl
eUZvclZhbHVlKG1fc2VyaWFsaXphdGlvbkNvbnRleHQtPmdsb2JhbE9iamVjdCgpLCBpbmZvLCBq
c1ZhbHVlLCBpbmRleEtleSwgb2JqZWN0U3RvcmVJbmZvLmtleVBhdGgoKSwga2V5KTsKKyAgICBp
ZiAoIXJlc3VsdEluZGV4S2V5KQorICAgICAgICByZXR1cm4gSURCRXJyb3IgeyB9OwogCi0gICAg
aWYgKGluZGV4S2V5LmlzTnVsbCgpKQorICAgIGlmIChyZXN1bHRJbmRleEtleS0+aXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IH07CiAKLSAgICByZXR1cm4gdW5jaGVja2VkUHV0
SW5kZXhLZXkoaW5mbywga2V5LCBpbmRleEtleSwgcmVjb3JkSUQpOworICAgIHJldHVybiB1bmNo
ZWNrZWRQdXRJbmRleEtleShpbmZvLCBrZXksICpyZXN1bHRJbmRleEtleSwgcmVjb3JkSUQpOwog
fQogCiBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVwZGF0ZUFsbEluZGV4ZXNGb3JB
ZGRSZWNvcmQoY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBpbmZvLCBjb25zdCBJREJLZXlEYXRh
JiBrZXksIGNvbnN0IEluZGV4SURUb0luZGV4S2V5TWFwJiBpbmRleEtleXMsIGludDY0X3QgcmVj
b3JkSUQpCkBAIC0yNzQ1LDExICsyNzQ4LDYgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0
b3JlOjppdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnMKICAg
ICByZXR1cm4gSURCRXJyb3IgeyB9OwogfQogCi1JREJTZXJpYWxpemF0aW9uQ29udGV4dCYgU1FM
aXRlSURCQmFja2luZ1N0b3JlOjpzZXJpYWxpemF0aW9uQ29udGV4dCgpCi17Ci0gICAgcmV0dXJu
IG1fc2VyaWFsaXphdGlvbkNvbnRleHQuZ2V0KCk7Ci19Ci0KIElEQk9iamVjdFN0b3JlSW5mbyog
U1FMaXRlSURCQmFja2luZ1N0b3JlOjppbmZvRm9yT2JqZWN0U3RvcmUodWludDY0X3Qgb2JqZWN0
U3RvcmVJZGVudGlmaWVyKQogewogICAgIEFTU0VSVChtX2RhdGFiYXNlSW5mbyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFj
a2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FM
aXRlSURCQmFja2luZ1N0b3JlLmgKaW5kZXggNGUxYTQ4ZjEwOWE5ODRiMWE2YTNkYmIxYmEzZTM1
Y2I3ODJhNDZlOS4uNzQ5MjRiMmZhYTg0MzE5NDI5MDgwZDhlNzcwYWIyOGEzY2UwZDFhNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlE
QkJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Niw3ICs0Niw2IEBAIG5hbWVzcGFjZSBJREJT
ZXJ2ZXIgewogCiBlbnVtIGNsYXNzIElzU2NoZW1hVXBncmFkZWQgOiBib29sIHsgTm8sIFllcyB9
OwogCi1jbGFzcyBJREJTZXJpYWxpemF0aW9uQ29udGV4dDsKIGNsYXNzIFNRTGl0ZUlEQkN1cnNv
cjsKIAogY2xhc3MgU1FMaXRlSURCQmFja2luZ1N0b3JlIGZpbmFsIDogcHVibGljIElEQkJhY2tp
bmdTdG9yZSB7CkBAIC04Miw4ICs4MSw2IEBAIHB1YmxpYzoKICAgICBJREJFcnJvciBvcGVuQ3Vy
c29yKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBj
b25zdCBJREJDdXJzb3JJbmZvJiwgSURCR2V0UmVzdWx0JiBvdXRSZXN1bHQpIGZpbmFsOwogICAg
IElEQkVycm9yIGl0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFu
c2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgY3Vyc29ySWRl
bnRpZmllciwgY29uc3QgSURCSXRlcmF0ZUN1cnNvckRhdGEmLCBJREJHZXRSZXN1bHQmIG91dFJl
c3VsdCkgZmluYWw7CiAKLSAgICBJREJTZXJpYWxpemF0aW9uQ29udGV4dCYgc2VyaWFsaXphdGlv
bkNvbnRleHQoKSBmaW5hbDsKLQogICAgIElEQk9iamVjdFN0b3JlSW5mbyogaW5mb0Zvck9iamVj
dFN0b3JlKHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBk
ZWxldGVCYWNraW5nU3RvcmUoKSBmaW5hbDsKIApAQCAtMjIxLDggKzIxOCw2IEBAIHByaXZhdGU6
CiAKICAgICBTdHJpbmcgbV9kYXRhYmFzZVJvb3REaXJlY3Rvcnk7CiAgICAgU3RyaW5nIG1fZGF0
YWJhc2VEaXJlY3Rvcnk7Ci0KLSAgICBSZWY8SURCU2VyaWFsaXphdGlvbkNvbnRleHQ+IG1fc2Vy
aWFsaXphdGlvbkNvbnRleHQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJREJTZXJ2ZXIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJE
YXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5p
cXVlSURCRGF0YWJhc2UuY3BwCmluZGV4IGJlNTc2M2VhOTM1MmVkYjY5NGQyZTYwZjJiM2ZjZWIy
OGYxMWVkMGEuLjk5ZTE4NTg0ODNiODdkM2U0Y2Q0MDJjOTcyN2M4Y2E1M2ZmM2E3M2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJE
YXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L1VuaXF1ZUlEQkRhdGFiYXNlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTUsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE1LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAiSURC
SXRlcmF0ZUN1cnNvckRhdGEuaCIKICNpbmNsdWRlICJJREJLZXlSYW5nZURhdGEuaCIKICNpbmNs
dWRlICJJREJSZXN1bHREYXRhLmgiCi0jaW5jbHVkZSAiSURCU2VyaWFsaXphdGlvbkNvbnRleHQu
aCIKKyNpbmNsdWRlICJJREJTZXJpYWxpemF0aW9uLmgiCiAjaW5jbHVkZSAiSURCU2VydmVyLmgi
CiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25JbmZvLmgiCiAjaW5jbHVkZSAiSURCVmFsdWUuaCIK
QEAgLTc0NCw3ICs3NDQsMTAgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cHV0T3JBZGQoY29u
c3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXkKICAgICAgICAgdXNl
ZEtleSA9IGtleURhdGE7CiAKICAgICAvLyBHZW5lcmF0ZSBpbmRleCBrZXlzIHVwIGZyb250IGZv
ciBtb3JlIGFjY3VyYXRlIHF1b3RhIGNoZWNrLgotICAgIGF1dG8gaW5kZXhLZXlzID0gZ2VuZXJh
dGVJbmRleEtleU1hcEZvclZhbHVlKG1fYmFja2luZ1N0b3JlLT5zZXJpYWxpemF0aW9uQ29udGV4
dCgpLmdsb2JhbE9iamVjdCgpLCAqb2JqZWN0U3RvcmVJbmZvLCB1c2VkS2V5LCB2YWx1ZSk7Cisg
ICAgSW5kZXhJRFRvSW5kZXhLZXlNYXAgaW5kZXhLZXlzOworICAgIGNhbGxPbklEQlNlcmlhbGl6
YXRpb25UaHJlYWRBbmRXYWl0KFtvYmplY3RTdG9yZUluZm8gPSBvYmplY3RTdG9yZUluZm8tPmlz
b2xhdGVkQ29weSgpLCBrZXkgPSB1c2VkS2V5Lmlzb2xhdGVkQ29weSgpLCB2YWx1ZSA9IHZhbHVl
Lmlzb2xhdGVkQ29weSgpLCAmaW5kZXhLZXlzXShhdXRvJiBnbG9iYWxPYmplY3QpIHsKKyAgICAg
ICAgaW5kZXhLZXlzID0gZ2VuZXJhdGVJbmRleEtleU1hcEZvclZhbHVlKGdsb2JhbE9iamVjdCwg
b2JqZWN0U3RvcmVJbmZvLCBrZXksIHZhbHVlKTsKKyAgICB9KTsKIAogICAgIGlmIChvdmVyd3Jp
dGVNb2RlID09IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlOjpOb092ZXJ3cml0
ZSkgewogICAgICAgICBib29sIGtleUV4aXN0czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggNGM0NjM5ZmFl
NzgyMjgwZmEzMjAyNmE1YjZkNzU0N2NkODc2OWMxMC4uZjA1NjU0MjVlODY3ZjBmYWQ4YTgxMmRh
Y2Y2MmYyY2M1M2ZlZGFhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQK
KysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTk0LDcgKzk0LDYgQEAgTW9kdWxl
cy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAKIE1vZHVsZXMvaW5k
ZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5jcHAKIE1vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnQuY3BwCiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAKLU1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJp
YWxpemF0aW9uQ29udGV4dC5jcHAKIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIu
Y3BwCiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSW5kZXhWYWx1ZUVudHJ5LmNwcAogTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0luZGV4VmFsdWVTdG9yZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKaW5kZXggNjc3NWNiZjU4
ZjQ5OWZkNmM0NDhjODY1NjBmMjcyMmE5YjRlMzNlNC4uYmFlZGQwYzA2OWNhMjgxYjI5ODQ3MWUz
MGI2OTc0YjUyNTZkMzMwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SURCQmluZGluZ1V0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SURCQmluZGluZ1V0aWxpdGllcy5jcHAKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0
IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgTWljaGFlbCBQcnVldHQgPG1pY2hhZWxANjhrLm9yZz4KLSAqIENvcHlyaWdodCAo
QykgMjAxNC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDMsMTUgKzQzLDIxIEBACiAjaW5jbHVkZSAiSlNE
T01Db252ZXJ0TnVsbGFibGUuaCIKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgi
CiAjaW5jbHVkZSAiSlNGaWxlLmgiCisjaW5jbHVkZSAiSlNJREJTZXJpYWxpemF0aW9uR2xvYmFs
T2JqZWN0LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0Lmgi
CiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlRo
cmVhZFNhZmVEYXRhQnVmZmVyLmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FycmF5QnVmZmVyLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvRGF0ZUluc3RhbmNlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvT2JqZWN0
Q29uc3RydWN0b3IuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmdJbmxpbmVzLmg+
CisjaW5jbHVkZSA8d3RmL0F1dG9kcmFpbmVkUG9vbC5oPgorI2luY2x1ZGUgPHd0Zi9NZXNzYWdl
UXVldWUuaD4KKyNpbmNsdWRlIDx3dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEpTQzsKQEAgLTUxOSw0ICs1MjUsNzQg
QEAgc3RkOjpvcHRpb25hbDxKU0M6OkpTVmFsdWU+IGRlc2VyaWFsaXplSURCVmFsdWVXaXRoS2V5
SW5qZWN0aW9uKEpTR2xvYmFsT2JqZWN0JgogICAgIHJldHVybiBqc1ZhbHVlOwogfQogCitjbGFz
cyBJREJTZXJpYWxpemF0aW9uQ29udGV4dCB7CitwdWJsaWM6CisgICAgSURCU2VyaWFsaXphdGlv
bkNvbnRleHQoKQorICAgICAgICA6IG1fdGhyZWFkKFRocmVhZDo6Y3VycmVudCgpKQorICAgIHsK
KyAgICB9CisKKyAgICB+SURCU2VyaWFsaXphdGlvbkNvbnRleHQoKQorICAgIHsKKyAgICAgICAg
QVNTRVJUKCZtX3RocmVhZCA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOworICAgICAgICBpZiAoIW1f
dm0pCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9j
aygqbV92bSk7CisgICAgICAgIG1fZ2xvYmFsT2JqZWN0LmNsZWFyKCk7CisgICAgICAgIG1fdm0g
PSBudWxscHRyOworICAgIH0KKworICAgIEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCgpCisgICAgeworICAgICAgICBBU1NFUlQoJm1fdGhyZWFkID09ICZUaHJlYWQ6OmN1cnJlbnQo
KSk7CisKKyAgICAgICAgaW5pdGlhbGl6ZVZNKCk7CisgICAgICAgIHJldHVybiAqbV9nbG9iYWxP
YmplY3QuZ2V0KCk7CisgICAgfQorCitwcml2YXRlOgorICAgIHZvaWQgaW5pdGlhbGl6ZVZNKCkK
KyAgICB7CisgICAgICAgIGlmIChtX3ZtKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IEFTU0VSVCghbV9nbG9iYWxPYmplY3QpOworICAgICAgICBtX3ZtID0gSlNDOjpWTTo6Y3JlYXRl
KCk7CisgICAgICAgIG1fdm0tPmhlYXAuYWNxdWlyZUFjY2VzcygpOworICAgICAgICBKU1ZNQ2xp
ZW50RGF0YTo6aW5pdE5vcm1hbFdvcmxkKG1fdm0uZ2V0KCksIFdvcmtlclRocmVhZFR5cGU6Oldv
cmtsZXQpOworCisgICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcihtX3ZtLmdldCgpKTsK
KyAgICAgICAgbV9nbG9iYWxPYmplY3Quc2V0KCptX3ZtLCBKU0lEQlNlcmlhbGl6YXRpb25HbG9i
YWxPYmplY3Q6OmNyZWF0ZSgqbV92bSwgSlNJREJTZXJpYWxpemF0aW9uR2xvYmFsT2JqZWN0Ojpj
cmVhdGVTdHJ1Y3R1cmUoKm1fdm0sIEpTQzo6anNOdWxsKCkpLCBub3JtYWxXb3JsZCgqbV92bSkp
KTsKKyAgICB9CisKKyAgICBSZWZQdHI8SlNDOjpWTT4gbV92bTsKKyAgICBKU0M6OlN0cm9uZzxK
U0lEQlNlcmlhbGl6YXRpb25HbG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2JqZWN0OworICAgIFRocmVh
ZCYgbV90aHJlYWQ7Cit9OworCit2b2lkIGNhbGxPbklEQlNlcmlhbGl6YXRpb25UaHJlYWRBbmRX
YWl0KEZ1bmN0aW9uPHZvaWQoSlNDOjpKU0dsb2JhbE9iamVjdCYpPiYmIGZ1bmN0aW9uKQorewor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxNZXNzYWdlUXVldWU8RnVuY3Rpb248dm9pZChKU0M6
OkpTR2xvYmFsT2JqZWN0Jik+Pj4gcXVldWU7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGNy
ZWF0ZVRocmVhZDsKKworICAgIHN0ZDo6Y2FsbF9vbmNlKGNyZWF0ZVRocmVhZCwgW10geworICAg
ICAgICBUaHJlYWQ6OmNyZWF0ZSgiSW5kZXhlZERCIFNlcmlhbGl6YXRpb24iLCBbXSB7CisgICAg
ICAgICAgICBJREJTZXJpYWxpemF0aW9uQ29udGV4dCBzZXJpYWxpemF0aW9uQ29udGV4dDsKKyAg
ICAgICAgICAgIHdoaWxlIChhdXRvIGZ1bmN0aW9uID0gcXVldWUtPndhaXRGb3JNZXNzYWdlKCkp
IHsKKyAgICAgICAgICAgICAgICBBdXRvZHJhaW5lZFBvb2wgcG9vbDsKKyAgICAgICAgICAgICAg
ICAoKmZ1bmN0aW9uKShzZXJpYWxpemF0aW9uQ29udGV4dC5nbG9iYWxPYmplY3QoKSk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0pOworCisgICAgQmluYXJ5U2VtYXBob3JlIHNl
bWFwaG9yZTsKKyAgICBhdXRvIG5ld0Z1bnRpb24gPSBbJnNlbWFwaG9yZSwgZnVuY3Rpb24gPSBX
VEZNb3ZlKGZ1bmN0aW9uKV0oSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KSB7Cisg
ICAgICAgIGZ1bmN0aW9uKGdsb2JhbE9iamVjdCk7CisgICAgICAgIHNlbWFwaG9yZS5zaWduYWwo
KTsKKyAgICB9OworICAgIHF1ZXVlLT5hcHBlbmQobWFrZVVuaXF1ZTxGdW5jdGlvbjx2b2lkKEpT
Qzo6SlNHbG9iYWxPYmplY3QmKT4+KFdURk1vdmUobmV3RnVudGlvbikpKTsKKyAgICBzZW1hcGhv
cmUud2FpdCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmgKaW5kZXggNTlmODQ4NTE5OTQ5
ODU2ZWZhMTdiN2EwNzhiOTlmNmQ0YmQ4Yjg2My4uYTBkZDExNjlkNTQ1NmRkMTM3MzU0MmU1ZmRj
Nzc3YTE3YjM3OThlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURC
QmluZGluZ1V0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJp
bmRpbmdVdGlsaXRpZXMuaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAx
NCwgMjAxNSwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTQtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTYzLDQgKzYzLDcgQEAgSlNDOjpKU1ZhbHVlIHRv
SlMoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6SlNHbG9iYWxPYmplY3QmLCBJREJLZXkqKTsK
IEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVj
dCosIGNvbnN0IElEQktleURhdGEmKTsKIAogc3RkOjpvcHRpb25hbDxKU0M6OkpTVmFsdWU+IGRl
c2VyaWFsaXplSURCVmFsdWVXaXRoS2V5SW5qZWN0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBj
b25zdCBJREJWYWx1ZSYsIGNvbnN0IElEQktleURhdGEmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPElE
QktleVBhdGg+Jik7CisKK3ZvaWQgY2FsbE9uSURCU2VyaWFsaXphdGlvblRocmVhZEFuZFdhaXQo
RnVuY3Rpb248dm9pZChKU0M6OkpTR2xvYmFsT2JqZWN0Jik+JiYpOworCiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>