<?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>237984</bug_id>
          
          <creation_ts>2022-03-16 14:53:11 -0700</creation_ts>
          <short_desc>[WebAuthn] Support makeCredential for virtual HID authenticators</short_desc>
          <delta_ts>2022-03-17 11:29:25 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="pascoe@apple.com">pascoe</reporter>
          <assigned_to name="pascoe@apple.com">pascoe</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1852005</commentid>
    <comment_count>0</comment_count>
    <who name="pascoe@apple.com">pascoe</who>
    <bug_when>2022-03-16 14:53:11 -0700</bug_when>
    <thetext>^</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852006</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-03-16 14:53:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/90393676&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852008</commentid>
    <comment_count>2</comment_count>
      <attachid>454898</attachid>
    <who name="pascoe@apple.com">pascoe</who>
    <bug_when>2022-03-16 15:00:22 -0700</bug_when>
    <thetext>Created attachment 454898
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852043</commentid>
    <comment_count>3</comment_count>
      <attachid>454898</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-03-16 16:15:53 -0700</bug_when>
    <thetext>Comment on attachment 454898
Patch

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

r=me

&gt; Source/WebKit/UIProcess/WebAuthentication/Virtual/VirtualAuthenticatorUtils.mm:41
&gt; +    int8_t flags = 0b01000000; // AT set

Nit: It might be nice to define constants for these values:

constexpr int8_t ATset = 0b01000000;
... etc...

&gt; Source/WebKit/UIProcess/WebAuthentication/Virtual/VirtualAuthenticatorUtils.mm:45
&gt; +        flags = flags | 0b00000100;

Then you could explain what this one means :-)

&gt; Source/WebKit/UIProcess/WebAuthentication/Virtual/VirtualCredential.h:39
&gt; +    bool isVerificationRequired;

Nit: Putting the bools together at the end of the struct can allow better packing of the structure and reduce memory use.

&gt; Source/WebKit/UIProcess/WebAuthentication/Virtual/VirtualHidConnection.cpp:230
&gt; +            Vector&lt;uint8_t&gt; buffer;

Is buffer ever large enough that it&apos;s worth hinting the size of the buffer before appending using the &apos;reserveCapacity&apos; method?

buffer.reserveCapacity(payload.size() + 1)

Scanning through the code, there might be a number of places in the WebAuthn code where this could be helpful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852077</commentid>
    <comment_count>4</comment_count>
      <attachid>454915</attachid>
    <who name="pascoe@apple.com">pascoe</who>
    <bug_when>2022-03-16 17:16:12 -0700</bug_when>
    <thetext>Created attachment 454915
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852320</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-17 09:09:16 -0700</bug_when>
    <thetext>ChangeLog entry in Source/WebCore/ChangeLog contains OOPS!.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852339</commentid>
    <comment_count>6</comment_count>
      <attachid>454983</attachid>
    <who name="pascoe@apple.com">pascoe</who>
    <bug_when>2022-03-17 09:56:47 -0700</bug_when>
    <thetext>Created attachment 454983
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852388</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-17 11:29:23 -0700</bug_when>
    <thetext>Committed r291423 (248550@main): &lt;https://commits.webkit.org/248550@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 454983.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454898</attachid>
            <date>2022-03-16 15:00:22 -0700</date>
            <delta_ts>2022-03-16 17:16:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237984-20220316150021.patch</filename>
            <type>text/plain</type>
            <size>54050</size>
            <attacher name="pascoe@apple.com">pascoe</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxMzU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDE4Nzk4MjU1Nzc0Yzc5
NzQzMzA4NDBkYWI3NGFmODc2MWEyYTQ2Mi4uNDc2MjI2ZTE5ZDZiNDFhOTJmMDJhNzI2Mzg2YmJh
OGNlOGIyNDM3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIyLTAzLTE2ICBKIFBh
c2NvZSAgPGpfcGFzY29lQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIFN1cHBvcnQg
bWFrZUNyZWRlbnRpYWwgZm9yIHZpcnR1YWwgSElEIGF1dGhlbnRpY2F0b3JzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzc5ODQKKyAgICAgICAgcmRh
cjovL3Byb2JsZW0vOTAzOTM2NzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBWaXJ0dWFsIGF1dGhlbnRpY2F0b3JzIGZvciBXZWJBdXRobiBzdXBwb3J0
cyBkaWZmZXJlbnQgdHJhbnNwb3J0czogbmZjLHVzYixpbnRlcm5hbCxibGUuCisgICAgICAgIEN1
cnJlbnRseSwgd2Ugc3VwcG9ydCB0aGUgaW50ZXJuYWwgdHJhbnNwb3J0LCBidXQgdGhlIGRlZmF1
bHQgdHJhbnNwb3J0IHVzZWQgaW4gd2ViIHBsYXRmb3JtCisgICAgICAgIHRlc3RzIGlzIHVzYi4g
VGhpcyBwYXRjaCBpbXBsZW1lbnRzIG1ha2VDcmVkZW50aWFsIGZvciBoaWQtYmFzZWQgdmlydHVh
bCBhdXRoZW50aWNhdG9ycy4gVmlydHVhbAorICAgICAgICBjcmVkZW50aWFsIGluZm9ybWF0aW9u
IGlzIHN0b3JlZCBpbiB0aGUgVmlydHVhbENyZWRlbnRpYWwgc3RydWN0IGFzIHN1Z2dlc3RlZCBi
eSB0aGUgc3BlYy4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vV2ViQXV0aGVudGljYXRp
b25VdGlscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpidWlsZEF0dGVzdGF0aW9uTWFwKToKKyAg
ICAgICAgKFdlYkNvcmU6OmJ1aWxkQXR0ZXN0YXRpb25PYmplY3QpOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViYXV0aG4vV2ViQXV0aGVudGljYXRpb25VdGlscy5oOgorICAgICAgICAqIE1vZHVsZXMv
d2ViYXV0aG4vZmlkby9GaWRvQ29uc3RhbnRzLmg6CisKIDIwMjItMDMtMTYgIFBoaWxpcHBlIE5v
cm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIE1pZ3JhdGUgdXNlIG9mIE1l
ZGlhU2FtcGxlR1N0cmVhbWVyIHRvIFZpZGVvRnJhbWUgaW4gV2ViUlRDIHBpcGVsaW5lcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCBlNjE3ODkzZDBjMzk1YjU1NGMxYzkwMGQ5NTcyNjJiMGJlNzc5ODg2Li4xMWYxMTMw
ZmQ2ZmQ3OWJhMjYwODUwOWZjNmJjNTE2NmViMDAzMmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDUy
IEBACisyMDIyLTAzLTE2ICBKIFBhc2NvZSAgPGpfcGFzY29lQGFwcGxlLmNvbT4KKworICAgICAg
ICBbV2ViQXV0aG5dIFN1cHBvcnQgbWFrZUNyZWRlbnRpYWwgZm9yIHZpcnR1YWwgSElEIGF1dGhl
bnRpY2F0b3JzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzc5ODQKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vOTAzOTM2NzYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBWaXJ0dWFsIGF1dGhlbnRpY2F0b3Jz
IGZvciBXZWJBdXRobiBzdXBwb3J0cyBkaWZmZXJlbnQgdHJhbnNwb3J0czogbmZjLHVzYixpbnRl
cm5hbCxibGUuCisgICAgICAgIEN1cnJlbnRseSwgd2Ugc3VwcG9ydCB0aGUgaW50ZXJuYWwgdHJh
bnNwb3J0LCBidXQgdGhlIGRlZmF1bHQgdHJhbnNwb3J0IHVzZWQgaW4gd2ViIHBsYXRmb3JtCisg
ICAgICAgIHRlc3RzIGlzIHVzYi4gVGhpcyBwYXRjaCBpbXBsZW1lbnRzIG1ha2VDcmVkZW50aWFs
IGZvciBoaWQtYmFzZWQgdmlydHVhbCBhdXRoZW50aWNhdG9ycy4gVmlydHVhbAorICAgICAgICBj
cmVkZW50aWFsIGluZm9ybWF0aW9uIGlzIHN0b3JlZCBpbiB0aGUgVmlydHVhbENyZWRlbnRpYWwg
c3RydWN0IGFzIHN1Z2dlc3RlZCBieSB0aGUgc3BlYy4KKworICAgICAgICBUZXN0ZWQgbWFudWFs
bHkgdmlhIGNyZWF0aW5nIHZpcnR1YWwgYXV0aGVudGljYXRvciBhbmQgcGVyZm9ybWluZyBjcmVh
dGUgYW5kIHZpYSB3cHQgdGVzdHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vTW9jay9Nb2NrSGlkQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tI
aWRDb25uZWN0aW9uOjpwYXJzZVJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpNb2NrSGlkQ29u
bmVjdGlvbjo6ZmVlZFJlcG9ydHMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9WaXJ0dWFsL1ZpcnR1YWxBdXRoZW50aWNhdG9yTWFuYWdlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlZpcnR1YWxBdXRoZW50aWNhdG9yTWFuYWdlcjo6Y3JlYXRlQXV0aGVudGljYXRvcik6
CisgICAgICAgIChXZWJLaXQ6OlZpcnR1YWxBdXRoZW50aWNhdG9yTWFuYWdlcjo6YWRkQ3JlZGVu
dGlhbCk6CisgICAgICAgIChXZWJLaXQ6OlZpcnR1YWxBdXRoZW50aWNhdG9yTWFuYWdlcjo6Y3Jl
YXRlU2VydmljZSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L1ZpcnR1YWwvVmlydHVhbEF1dGhlbnRpY2F0b3JNYW5hZ2VyLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVhbEF1dGhlbnRpY2F0b3JVdGlscy5o
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9W
aXJ0dWFsL1ZpcnR1YWxTZXJ2aWNlLmguCisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL1ZpcnR1YWwvVmlydHVhbEF1dGhlbnRpY2F0b3JVdGlscy5tbTogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQ6OmZsYWdzRm9yQ29uZmlnKToKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRlUHJp
dmF0ZUtleSk6CisgICAgICAgIChXZWJLaXQ6OmNyZWRlbnRpYWxJZEFuZENvc2VQdWJLZXlGb3JQ
cml2YXRlS2V5KToKKyAgICAgICAgKFdlYktpdDo6YmFzZTY0UHJpdmF0ZUtleSk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVhbENyZWRlbnRpYWwu
aDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
VmlydHVhbC9WaXJ0dWFsU2VydmljZS5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9WaXJ0dWFsL1ZpcnR1YWxIaWRDb25uZWN0aW9uLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OlZpcnR1YWxIaWRDb25uZWN0aW9uOjpWaXJ0dWFsSGlkQ29ubmVjdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OlZpcnR1YWxIaWRDb25uZWN0aW9uOjppbml0aWFsaXplKToKKyAgICAg
ICAgKFdlYktpdDo6VmlydHVhbEhpZENvbm5lY3Rpb246OnRlcm1pbmF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlZpcnR1YWxIaWRDb25uZWN0aW9uOjpzZW5kU3luYyk6CisgICAgICAgIChXZWJLaXQ6
OlZpcnR1YWxIaWRDb25uZWN0aW9uOjpzZW5kKToKKyAgICAgICAgKFdlYktpdDo6VmlydHVhbEhp
ZENvbm5lY3Rpb246OmFzc2VtYmxlUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlZpcnR1YWxI
aWRDb25uZWN0aW9uOjpyZWNlaXZlSGlkTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlZpcnR1
YWxIaWRDb25uZWN0aW9uOjpyZWNpZXZlUmVzcG9uc2VDb2RlKToKKyAgICAgICAgKFdlYktpdDo6
VmlydHVhbEhpZENvbm5lY3Rpb246OnBhcnNlUmVxdWVzdCk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVhbEhpZENvbm5lY3Rpb24uaDogQ29waWVk
IGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vVmlydHVhbC9W
aXJ0dWFsQXV0aGVudGljYXRvck1hbmFnZXIuaC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vVmlydHVhbC9WaXJ0dWFsU2VydmljZS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9WaXJ0dWFsL1ZpcnR1YWxTZXJ2aWNlLm1tOgorICAgICAgICAo
V2ViS2l0OjpWaXJ0dWFsU2VydmljZTo6VmlydHVhbFNlcnZpY2UpOgorICAgICAgICAoV2ViS2l0
OjpWaXJ0dWFsU2VydmljZTo6Y3JlYXRlVmlydHVhbCk6CisgICAgICAgIChXZWJLaXQ6OmF1dGhl
bnRpY2F0b3JJbmZvRm9yQ29uZmlnKToKKyAgICAgICAgKFdlYktpdDo6VmlydHVhbFNlcnZpY2U6
OnN0YXJ0RGlzY292ZXJ5SW50ZXJuYWwpOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorCiAyMDIyLTAzLTE2ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFw
cGxlLmNvbT4KIAogICAgICAgICBJbmNvcnJlY3QgaGVhZGVyIG5hbWUgdXNlZCBpbiBfX2hhc19p
bmNsdWRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1dlYkF1
dGhlbnRpY2F0aW9uVXRpbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9X
ZWJBdXRoZW50aWNhdGlvblV0aWxzLmNwcAppbmRleCA4ZDQ3M2NhMjU5ZjJjNmJjMGY1YjVhMjZi
MGMyZDJhODQwY2RmNWZlLi5lZDkzNDY4NjZhN2VmM2MxM2VmY2U0NTY1ZjM5OTFjZTI5NTEwYTAw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1dlYkF1dGhlbnRp
Y2F0aW9uVXRpbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vV2Vi
QXV0aGVudGljYXRpb25VdGlscy5jcHAKQEAgLTExMCw3ICsxMTAsNyBAQCBWZWN0b3I8dWludDhf
dD4gYnVpbGRBdXRoRGF0YShjb25zdCBTdHJpbmcmIHJwSWQsIGNvbnN0IHVpbnQ4X3QgZmxhZ3Ms
IGNvbnN0IHVpbgogICAgIHJldHVybiBhdXRoRGF0YTsKIH0KIAotVmVjdG9yPHVpbnQ4X3Q+IGJ1
aWxkQXR0ZXN0YXRpb25PYmplY3QoVmVjdG9yPHVpbnQ4X3Q+JiYgYXV0aERhdGEsIFN0cmluZyYm
IGZvcm1hdCwgY2Jvcjo6Q0JPUlZhbHVlOjpNYXBWYWx1ZSYmIHN0YXRlbWVudE1hcCwgY29uc3Qg
QXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZSYgYXR0ZXN0YXRpb24pCitjYm9yOjpDQk9S
VmFsdWU6Ok1hcFZhbHVlIGJ1aWxkQXR0ZXN0YXRpb25NYXAoVmVjdG9yPHVpbnQ4X3Q+JiYgYXV0
aERhdGEsIFN0cmluZyYmIGZvcm1hdCwgY2Jvcjo6Q0JPUlZhbHVlOjpNYXBWYWx1ZSYmIHN0YXRl
bWVudE1hcCwgY29uc3QgQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZSYgYXR0ZXN0YXRp
b24pCiB7CiAgICAgY2Jvcjo6Q0JPUlZhbHVlOjpNYXBWYWx1ZSBhdHRlc3RhdGlvbk9iamVjdE1h
cDsKICAgICAvLyBUaGUgZm9sbG93aW5nIGltcGxlbWVudHMgU3RlcCAyMCB3aXRoIHJlZ2FyZCB0
byBBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlCkBAIC0xMjcsNiArMTI3LDEyIEBAIFZl
Y3Rvcjx1aW50OF90PiBidWlsZEF0dGVzdGF0aW9uT2JqZWN0KFZlY3Rvcjx1aW50OF90PiYmIGF1
dGhEYXRhLCBTdHJpbmcmJiBmb3JtCiAgICAgYXR0ZXN0YXRpb25PYmplY3RNYXBbY2Jvcjo6Q0JP
UlZhbHVlKCJhdXRoRGF0YSIpXSA9IGNib3I6OkNCT1JWYWx1ZShXVEZNb3ZlKGF1dGhEYXRhKSk7
CiAgICAgYXR0ZXN0YXRpb25PYmplY3RNYXBbY2Jvcjo6Q0JPUlZhbHVlKCJmbXQiKV0gPSBjYm9y
OjpDQk9SVmFsdWUoV1RGTW92ZShmb3JtYXQpKTsKICAgICBhdHRlc3RhdGlvbk9iamVjdE1hcFtj
Ym9yOjpDQk9SVmFsdWUoImF0dFN0bXQiKV0gPSBjYm9yOjpDQk9SVmFsdWUoV1RGTW92ZShzdGF0
ZW1lbnRNYXApKTsKKyAgICByZXR1cm4gYXR0ZXN0YXRpb25PYmplY3RNYXA7Cit9CisKK1ZlY3Rv
cjx1aW50OF90PiBidWlsZEF0dGVzdGF0aW9uT2JqZWN0KFZlY3Rvcjx1aW50OF90PiYmIGF1dGhE
YXRhLCBTdHJpbmcmJiBmb3JtYXQsIGNib3I6OkNCT1JWYWx1ZTo6TWFwVmFsdWUmJiBzdGF0ZW1l
bnRNYXAsIGNvbnN0IEF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2UmIGF0dGVzdGF0aW9u
KQoreworICAgIGNib3I6OkNCT1JWYWx1ZTo6TWFwVmFsdWUgYXR0ZXN0YXRpb25PYmplY3RNYXAg
PSBidWlsZEF0dGVzdGF0aW9uTWFwKFdURk1vdmUoYXV0aERhdGEpLCBXVEZNb3ZlKGZvcm1hdCks
IFdURk1vdmUoc3RhdGVtZW50TWFwKSwgYXR0ZXN0YXRpb24pOwogCiAgICAgYXV0byBhdHRlc3Rh
dGlvbk9iamVjdCA9IGNib3I6OkNCT1JXcml0ZXI6OndyaXRlKGNib3I6OkNCT1JWYWx1ZShXVEZN
b3ZlKGF0dGVzdGF0aW9uT2JqZWN0TWFwKSkpOwogICAgIEFTU0VSVChhdHRlc3RhdGlvbk9iamVj
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1dlYkF1dGhl
bnRpY2F0aW9uVXRpbHMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vV2ViQXV0
aGVudGljYXRpb25VdGlscy5oCmluZGV4IGE2NDI1NDRkNGE2NTg2OGJiNGRhOTczMmRhZTAyOGNk
ZmM1NThjMGIuLjMzMjE1N2U1MjEzMDMwODdlNWE3MzRlNDdmYmU3Zjg5OGQwYjA4NWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vV2ViQXV0aGVudGljYXRpb25V
dGlscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vV2ViQXV0aGVudGlj
YXRpb25VdGlscy5oCkBAIC00OSw2ICs0OSw4IEBAIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50
OF90PiBidWlsZEF0dGVzdGVkQ3JlZGVudGlhbERhdGEoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+CiAv
LyBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4vI3NlYy1hdXRoZW50aWNhdG9yLWRhdGEK
IFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBidWlsZEF1dGhEYXRhKGNvbnN0IFN0cmlu
ZyYgcnBJZCwgY29uc3QgdWludDhfdCBmbGFncywgY29uc3QgdWludDMyX3QgY291bnRlciwgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBvcHRpb25hbEF0dGVzdGVkQ3JlZGVudGlhbERhdGEpOwogCitX
RUJDT1JFX0VYUE9SVCBjYm9yOjpDQk9SVmFsdWU6Ok1hcFZhbHVlIGJ1aWxkQXR0ZXN0YXRpb25N
YXAoVmVjdG9yPHVpbnQ4X3Q+JiYsIFN0cmluZyYmLCBjYm9yOjpDQk9SVmFsdWU6Ok1hcFZhbHVl
JiYsIGNvbnN0IEF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2UmKTsKKwogLy8gaHR0cHM6
Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLyNhdHRlc3RhdGlvbi1vYmplY3QKIFdFQkNPUkVfRVhQ
T1JUIFZlY3Rvcjx1aW50OF90PiBidWlsZEF0dGVzdGF0aW9uT2JqZWN0KFZlY3Rvcjx1aW50OF90
PiYmIGF1dGhEYXRhLCBTdHJpbmcmJiBmb3JtYXQsIGNib3I6OkNCT1JWYWx1ZTo6TWFwVmFsdWUm
JiBzdGF0ZW1lbnRNYXAsIGNvbnN0IEF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2UmKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9D
b25zdGFudHMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvQ29u
c3RhbnRzLmgKaW5kZXggZWYxZTE1ZGRjMDQ2NmZhZTgyOTYxODE5NDYxMDRlMTg4MDgwNDdiYS4u
ZGM3NzExYjYzYWQ2MzVlMjgyYWQyN2E5Y2I2Y2IyMTU2ZjY2NzQ3MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9Db25zdGFudHMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0NvbnN0YW50cy5oCkBAIC0y
NTUsNiArMjU1LDE5IEBAIGNvbnN0IHVpbnQ4X3Qga0N0YXBOZmNBcHBsZXRTZWxlY3Rpb25DdGFw
W10gPSB7CiBjb25zdCB1aW50OF90IGtDdGFwTmZjQXBkdUNsYSA9IDB4ODA7CiBjb25zdCB1aW50
OF90IGtDdGFwTmZjQXBkdUlucyA9IDB4MTA7CiAKKy8vIGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9y
Zy9zcGVjcy9maWRvLXYyLjAtcHMtMjAxNzA5MjcvZmlkby1jbGllbnQtdG8tYXV0aGVudGljYXRv
ci1wcm90b2NvbC12Mi4wLXBzLTIwMTcwOTI3Lmh0bWwjbWFuZGF0b3J5LWNvbW1hbmRzCitjb25z
dCBzaXplX3Qga0N0YXBDaGFubmVsSWRTaXplID0gNDsKK2NvbnN0IHVpbnQ4X3Qga0N0YXBLZWVw
QWxpdmVTdGF0dXNQcm9jZXNzaW5nID0gMTsKKy8vIGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9z
cGVjcy9maWRvLXYyLjAtcHMtMjAxNzA5MjcvZmlkby1jbGllbnQtdG8tYXV0aGVudGljYXRvci1w
cm90b2NvbC12Mi4wLXBzLTIwMTcwOTI3Lmh0bWwjY29tbWFuZHMKK2NvbnN0IGludDY0X3Qga0N0
YXBNYWtlQ3JlZGVudGlhbENsaWVudERhdGFIYXNoS2V5ID0gMTsKK2NvbnN0IGludDY0X3Qga0N0
YXBNYWtlQ3JlZGVudGlhbFJwS2V5ID0gMjsKK2NvbnN0IGludDY0X3Qga0N0YXBNYWtlQ3JlZGVu
dGlhbFVzZXJLZXkgPSAzOworY29uc3QgaW50NjRfdCBrQ3RhcE1ha2VDcmVkZW50aWFsUHViS2V5
Q3JlZFBhcmFtc0tleSA9IDQ7Citjb25zdCBpbnQ2NF90IGtDdGFwTWFrZUNyZWRlbnRpYWxFeGNs
dWRlTGlzdEtleSA9IDU7Citjb25zdCBpbnQ2NF90IGtDdGFwTWFrZUNyZWRlbnRpYWxFeHRlbnNp
b25zS2V5ID0gNjsKK2NvbnN0IGludDY0X3Qga0N0YXBNYWtlQ3JlZGVudGlhbFJlcXVlc3RPcHRp
b25zS2V5ID0gNzsKK2NvbnN0IGludDY0X3Qga0N0YXBHZXRBc3NlcnRpb25SZXF1ZXN0T3B0aW9u
c0tleSA9IDU7CisKIH0gLy8gbmFtZXNwYWNlIGZpZG8KIAogI2VuZGlmIC8vIEVOQUJMRShXRUJf
QVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9Nb2NrL01vY2tIaWRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZENvbm5lY3Rpb24uY3BwCmluZGV4IDg1NWZk
ZTM0NzBmYjc4NDg1YjBhZTU5ZTA5Yzg2NDIxZDAwYzExNTYuLjlmZGRiMjIzMzc5Njk2Njk2MmVj
OTcxZGIyNGYwODg2OWQxZTExNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZENvbm5lY3Rp
b24uY3BwCkBAIC00NCwxNSArNDQsNiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5n
IG5hbWVzcGFjZSBjYm9yOwogdXNpbmcgbmFtZXNwYWNlIGZpZG87CiAKLW5hbWVzcGFjZSBNb2Nr
SGlkQ29ubmVjdGlvbkludGVybmFsIHsKLS8vIGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9zcGVj
cy9maWRvLXYyLjAtcHMtMjAxNzA5MjcvZmlkby1jbGllbnQtdG8tYXV0aGVudGljYXRvci1wcm90
b2NvbC12Mi4wLXBzLTIwMTcwOTI3Lmh0bWwjbWFuZGF0b3J5LWNvbW1hbmRzCi1jb25zdCBzaXpl
X3QgQ3RhcENoYW5uZWxJZFNpemUgPSA0OwotY29uc3QgdWludDhfdCBDdGFwS2VlcEFsaXZlU3Rh
dHVzUHJvY2Vzc2luZyA9IDE7Ci0vLyBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvc3BlY3MvZmlk
by12Mi4wLXBzLTIwMTcwOTI3L2ZpZG8tY2xpZW50LXRvLWF1dGhlbnRpY2F0b3ItcHJvdG9jb2wt
djIuMC1wcy0yMDE3MDkyNy5odG1sI2NvbW1hbmRzCi1jb25zdCBpbnQ2NF90IEN0YXBNYWtlQ3Jl
ZGVudGlhbFJlcXVlc3RPcHRpb25zS2V5ID0gNzsKLWNvbnN0IGludDY0X3QgQ3RhcEdldEFzc2Vy
dGlvblJlcXVlc3RPcHRpb25zS2V5ID0gNTsKLX0KLQogTW9ja0hpZENvbm5lY3Rpb246Ok1vY2tI
aWRDb25uZWN0aW9uKElPSElERGV2aWNlUmVmIGRldmljZSwgY29uc3QgTW9ja1dlYkF1dGhlbnRp
Y2F0aW9uQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKICAgICA6IEhpZENvbm5lY3Rpb24o
ZGV2aWNlKQogICAgICwgbV9jb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pCkBAIC0xMzAsOCAr
MTIxLDYgQEAgdm9pZCBNb2NrSGlkQ29ubmVjdGlvbjo6YXNzZW1ibGVSZXF1ZXN0KFZlY3Rvcjx1
aW50OF90PiYmIGRhdGEpCiAKIHZvaWQgTW9ja0hpZENvbm5lY3Rpb246OnBhcnNlUmVxdWVzdCgp
CiB7Ci0gICAgdXNpbmcgbmFtZXNwYWNlIE1vY2tIaWRDb25uZWN0aW9uSW50ZXJuYWw7Ci0KICAg
ICBBU1NFUlQobV9yZXF1ZXN0TWVzc2FnZSk7CiAgICAgLy8gU2V0IHN0YWdlcy4KICAgICBpZiAo
bV9yZXF1ZXN0TWVzc2FnZS0+Y21kKCkgPT0gRmlkb0hpZERldmljZUNvbW1hbmQ6OmtJbml0KSB7
CkBAIC0xNjIsNyArMTUxLDcgQEAgdm9pZCBNb2NrSGlkQ29ubmVjdGlvbjo6cGFyc2VSZXF1ZXN0
KCkKICAgICAgICAgICAgIEFTU0VSVChyZXF1ZXN0TWFwIHx8IGNtZCA9PSBDdGFwUmVxdWVzdENv
bW1hbmQ6OmtBdXRoZW50aWNhdG9yR2V0TmV4dEFzc2VydGlvbik7CiAKICAgICAgICAgICAgIGlm
IChjbWQgPT0gQ3RhcFJlcXVlc3RDb21tYW5kOjprQXV0aGVudGljYXRvck1ha2VDcmVkZW50aWFs
KSB7Ci0gICAgICAgICAgICAgICAgYXV0byBpdCA9IHJlcXVlc3RNYXAtPmdldE1hcCgpLmZpbmQo
Q0JPUlZhbHVlKEN0YXBNYWtlQ3JlZGVudGlhbFJlcXVlc3RPcHRpb25zS2V5KSk7IC8vIEZpbmQg
b3B0aW9ucy4KKyAgICAgICAgICAgICAgICBhdXRvIGl0ID0gcmVxdWVzdE1hcC0+Z2V0TWFwKCku
ZmluZChDQk9SVmFsdWUoa0N0YXBNYWtlQ3JlZGVudGlhbFJlcXVlc3RPcHRpb25zS2V5KSk7IC8v
IEZpbmQgb3B0aW9ucy4KICAgICAgICAgICAgICAgICBpZiAoaXQgIT0gcmVxdWVzdE1hcC0+Z2V0
TWFwKCkuZW5kKCkpIHsKICAgICAgICAgICAgICAgICAgICAgYXV0byYgb3B0aW9uTWFwID0gaXQt
PnNlY29uZC5nZXRNYXAoKTsKIApAQCAtMTc3LDcgKzE2Niw3IEBAIHZvaWQgTW9ja0hpZENvbm5l
Y3Rpb246OnBhcnNlUmVxdWVzdCgpCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChj
bWQgPT0gQ3RhcFJlcXVlc3RDb21tYW5kOjprQXV0aGVudGljYXRvckdldEFzc2VydGlvbikgewot
ICAgICAgICAgICAgICAgIGF1dG8gaXQgPSByZXF1ZXN0TWFwLT5nZXRNYXAoKS5maW5kKENCT1JW
YWx1ZShDdGFwR2V0QXNzZXJ0aW9uUmVxdWVzdE9wdGlvbnNLZXkpKTsgLy8gRmluZCBvcHRpb25z
LgorICAgICAgICAgICAgICAgIGF1dG8gaXQgPSByZXF1ZXN0TWFwLT5nZXRNYXAoKS5maW5kKENC
T1JWYWx1ZShrQ3RhcEdldEFzc2VydGlvblJlcXVlc3RPcHRpb25zS2V5KSk7IC8vIEZpbmQgb3B0
aW9ucy4KICAgICAgICAgICAgICAgICBpZiAoaXQgIT0gcmVxdWVzdE1hcC0+Z2V0TWFwKCkuZW5k
KCkpIHsKICAgICAgICAgICAgICAgICAgICAgYXV0byYgb3B0aW9uTWFwID0gaXQtPnNlY29uZC5n
ZXRNYXAoKTsKICAgICAgICAgICAgICAgICAgICAgYXV0byBpdHIgPSBvcHRpb25NYXAuZmluZChD
Qk9SVmFsdWUoa1VzZXJWZXJpZmljYXRpb25NYXBLZXkpKTsKQEAgLTIwMiw4ICsxOTEsNiBAQCB2
b2lkIE1vY2tIaWRDb25uZWN0aW9uOjpwYXJzZVJlcXVlc3QoKQogCiB2b2lkIE1vY2tIaWRDb25u
ZWN0aW9uOjpmZWVkUmVwb3J0cygpCiB7Ci0gICAgdXNpbmcgbmFtZXNwYWNlIE1vY2tIaWRDb25u
ZWN0aW9uSW50ZXJuYWw7Ci0KICAgICBpZiAobV9zdWJTdGFnZSA9PSBNb2NrOjpIaWRTdWJTdGFn
ZTo6SW5pdCkgewogICAgICAgICBWZWN0b3I8dWludDhfdD4gcGF5bG9hZDsKICAgICAgICAgcGF5
bG9hZC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGtIaWRJbml0UmVzcG9uc2VTaXplKTsKQEAgLTIx
Miw3ICsxOTksNyBAQCB2b2lkIE1vY2tIaWRDb25uZWN0aW9uOjpmZWVkUmVwb3J0cygpCiAgICAg
ICAgIGlmIChzdGFnZXNNYXRjaCgpICYmIG1fY29uZmlndXJhdGlvbi5oaWQtPmVycm9yID09IE1v
Y2s6OkhpZEVycm9yOjpXcm9uZ05vbmNlKQogICAgICAgICAgICAgcGF5bG9hZFswXS0tOwogICAg
ICAgICBwYXlsb2FkLmdyb3coa0hpZEluaXRSZXNwb25zZVNpemUpOwotICAgICAgICBjcnlwdG9n
cmFwaGljYWxseVJhbmRvbVZhbHVlcyhwYXlsb2FkLmRhdGEoKSArIHdyaXRlUG9zaXRpb24sIEN0
YXBDaGFubmVsSWRTaXplKTsKKyAgICAgICAgY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21WYWx1ZXMo
cGF5bG9hZC5kYXRhKCkgKyB3cml0ZVBvc2l0aW9uLCBrQ3RhcENoYW5uZWxJZFNpemUpOwogICAg
ICAgICBhdXRvIGNoYW5uZWwgPSBrSGlkQnJvYWRjYXN0Q2hhbm5lbDsKICAgICAgICAgaWYgKHN0
YWdlc01hdGNoKCkgJiYgbV9jb25maWd1cmF0aW9uLmhpZC0+ZXJyb3IgPT0gTW9jazo6SGlkRXJy
b3I6Oldyb25nQ2hhbm5lbElkKQogICAgICAgICAgICAgY2hhbm5lbC0tOwpAQCAtMjU2LDcgKzI0
Myw3IEBAIHZvaWQgTW9ja0hpZENvbm5lY3Rpb246OmZlZWRSZXBvcnRzKCkKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgaWYgKG1fY29uZmlndXJhdGlvbi5oaWQtPmtlZXBBbGl2ZSkgewog
ICAgICAgICAgICAgbV9jb25maWd1cmF0aW9uLmhpZC0+a2VlcEFsaXZlID0gZmFsc2U7Ci0gICAg
ICAgICAgICBGaWRvSGlkSW5pdFBhY2tldCBpbml0UGFja2V0KG1fY3VycmVudENoYW5uZWwsIEZp
ZG9IaWREZXZpY2VDb21tYW5kOjprS2VlcEFsaXZlLCB7IEN0YXBLZWVwQWxpdmVTdGF0dXNQcm9j
ZXNzaW5nIH0sIDEpOworICAgICAgICAgICAgRmlkb0hpZEluaXRQYWNrZXQgaW5pdFBhY2tldCht
X2N1cnJlbnRDaGFubmVsLCBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a0tlZXBBbGl2ZSwgeyBrQ3Rh
cEtlZXBBbGl2ZVN0YXR1c1Byb2Nlc3NpbmcgfSwgMSk7CiAgICAgICAgICAgICByZWNlaXZlUmVw
b3J0KGluaXRQYWNrZXQuZ2V0U2VyaWFsaXplZERhdGEoKSk7CiAgICAgICAgICAgICBjb250aW51
ZUZlZWRSZXBvcnRzKCk7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9WaXJ0dWFsL1ZpcnR1YWxBdXRoZW50
aWNhdG9yTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9WaXJ0dWFsL1ZpcnR1YWxBdXRoZW50aWNhdG9yTWFuYWdlci5jcHAKaW5kZXggM2FmYjBj
ZTJmMzU2YzVmNTViODYzZWQwMjIyMDVmMjFmZGMxMDZlNC4uMjc1YjFlYjc4YjVlYWRmNDkyZGU0
ZTIzMzA3YzYzNjI5OTE3YjQ0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vVmlydHVhbC9WaXJ0dWFsQXV0aGVudGljYXRvck1hbmFnZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwv
VmlydHVhbEF1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcApAQCAtMzMsNiArMzMsOCBAQAogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAorc3RydWN0IFZpcnR1YWxDcmVkZW50aWFsOworCiBWaXJ0dWFsQXV0
aGVudGljYXRvck1hbmFnZXI6OlZpcnR1YWxBdXRoZW50aWNhdG9yTWFuYWdlcigpCiAgICAgOiBB
dXRoZW50aWNhdG9yTWFuYWdlcigpCiB7CkBAIC00MCwxMCArNDIsMTIgQEAgVmlydHVhbEF1dGhl
bnRpY2F0b3JNYW5hZ2VyOjpWaXJ0dWFsQXV0aGVudGljYXRvck1hbmFnZXIoKQogCiBTdHJpbmcg
VmlydHVhbEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpjcmVhdGVBdXRoZW50aWNhdG9yKGNvbnN0IFZp
cnR1YWxBdXRoZW50aWNhdG9yQ29uZmlndXJhdGlvbiYgY29uZmlnKQogewotICAgIGlmIChjb25m
aWcudHJhbnNwb3J0ICE9IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6OkludGVybmFs
KQorICAgIGlmIChjb25maWcudHJhbnNwb3J0ICE9IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFu
c3BvcnQ6OkludGVybmFsICYmIGNvbmZpZy50cmFuc3BvcnQgIT0gV2ViQ29yZTo6QXV0aGVudGlj
YXRvclRyYW5zcG9ydDo6VXNiKQogICAgICAgICBVTklNUExFTUVOVEVEKCk7CiAgICAgYXV0byBp
ZCA9IGNyZWF0ZVZlcnNpb240VVVJRFN0cmluZygpOwogICAgIG1fdmlydHVhbEF1dGhlbnRpY2F0
b3JzLnNldChpZCwgbWFrZVVuaXF1ZVJlZjxWaXJ0dWFsQXV0aGVudGljYXRvckNvbmZpZ3VyYXRp
b24+KGNvbmZpZykpOworICAgIFZlY3RvcjxWaXJ0dWFsQ3JlZGVudGlhbD4gY3JlZGVudGlhbHM7
CisgICAgbV9jcmVkZW50aWFsc0J5QXV0aGVudGljYXRvci5zZXQoaWQsIFdURk1vdmUoY3JlZGVu
dGlhbHMpKTsKIAogICAgIHJldHVybiBpZDsKIH0KQEAgLTUzLDEyICs1NywxOCBAQCBib29sIFZp
cnR1YWxBdXRoZW50aWNhdG9yTWFuYWdlcjo6cmVtb3ZlQXV0aGVudGljYXRvcihjb25zdCBTdHJp
bmcmIGlkKQogICAgIHJldHVybiBtX3ZpcnR1YWxBdXRoZW50aWNhdG9ycy5yZW1vdmUoaWQpOwog
fQogCit2b2lkIFZpcnR1YWxBdXRoZW50aWNhdG9yTWFuYWdlcjo6YWRkQ3JlZGVudGlhbChjb25z
dCBTdHJpbmcmIGF1dGhlbnRpY2F0b3JJZCwgY29uc3QgVmlydHVhbENyZWRlbnRpYWwmIGNyZWRl
bnRpYWwpCit7CisgICAgbV9jcmVkZW50aWFsc0J5QXV0aGVudGljYXRvci5nZXQoYXV0aGVudGlj
YXRvcklkKS5hcHBlbmQoY3JlZGVudGlhbCk7Cit9CisKIFVuaXF1ZVJlZjxBdXRoZW50aWNhdG9y
VHJhbnNwb3J0U2VydmljZT4gVmlydHVhbEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpjcmVhdGVTZXJ2
aWNlKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQgdHJhbnNwb3J0LCBBdXRoZW50aWNh
dG9yVHJhbnNwb3J0U2VydmljZTo6T2JzZXJ2ZXImIG9ic2VydmVyKSBjb25zdAogewotICAgIFZl
Y3RvcjxWaXJ0dWFsQXV0aGVudGljYXRvckNvbmZpZ3VyYXRpb24+IGNvbmZpZ3M7Ci0gICAgZm9y
IChhdXRvJiBjb25maWcgOiBtX3ZpcnR1YWxBdXRoZW50aWNhdG9ycy52YWx1ZXMoKSkgewotICAg
ICAgICBpZiAoY29uZmlnLmdldCgpLnRyYW5zcG9ydCA9PSB0cmFuc3BvcnQpCi0gICAgICAgICAg
ICBjb25maWdzLmFwcGVuZChjb25maWcuZ2V0KCkpOworICAgIFZlY3RvcjxzdGQ6OnBhaXI8U3Ry
aW5nLCBWaXJ0dWFsQXV0aGVudGljYXRvckNvbmZpZ3VyYXRpb24+PiBjb25maWdzOworICAgIGZv
ciAoYXV0byYgaWQgOiBtX3ZpcnR1YWxBdXRoZW50aWNhdG9ycy5rZXlzKCkpIHsKKyAgICAgICAg
YXV0byBjb25maWcgPSBtX3ZpcnR1YWxBdXRoZW50aWNhdG9ycy5nZXQoaWQpOworICAgICAgICBp
ZiAoY29uZmlnLT50cmFuc3BvcnQgPT0gdHJhbnNwb3J0KQorICAgICAgICAgICAgY29uZmlncy5h
cHBlbmQoc3RkOjpwYWlyIHsgaWQsICpjb25maWcgfSk7CiAgICAgfQogICAgIHJldHVybiBWaXJ0
dWFsU2VydmljZTo6Y3JlYXRlVmlydHVhbCh0cmFuc3BvcnQsIG9ic2VydmVyLCBjb25maWdzKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L1ZpcnR1YWwvVmlydHVhbEF1dGhlbnRpY2F0b3JNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9WaXJ0dWFsL1ZpcnR1YWxBdXRoZW50aWNhdG9yTWFu
YWdlci5oCmluZGV4IGY1ZmM1Zjk1ZTJjMGIzMDdjNzIzNjY5YTA1YzZiMGFlYWUwMGE5NTkuLjEx
ZGYwOTYxYmE1ZmYxOWI4MGEyNWVjY2MxZWJiNWNhZDhhNzE0ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVhbEF1dGhl
bnRpY2F0b3JNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vVmlydHVhbC9WaXJ0dWFsQXV0aGVudGljYXRvck1hbmFnZXIuaApAQCAtMjksOCAr
MjksMTEgQEAKIAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JNYW5hZ2VyLmgiCiAjaW5jbHVkZSAi
VmlydHVhbEF1dGhlbnRpY2F0b3JDb25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAiVmlydHVhbENy
ZWRlbnRpYWwuaCIKKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKK3N0cnVjdCBWaXJ0dWFsQ3JlZGVudGlhbDsKIAogY2xhc3MgVmlydHVhbEF1dGhlbnRpY2F0
b3JNYW5hZ2VyIGZpbmFsIDogcHVibGljIEF1dGhlbnRpY2F0b3JNYW5hZ2VyIHsKIHB1YmxpYzoK
QEAgLTQwLDE0ICs0MywyMCBAQCBwdWJsaWM6CiAgICAgYm9vbCByZW1vdmVBdXRoZW50aWNhdG9y
KGNvbnN0IFN0cmluZyYgLyphdXRoZW50aWNhdG9ySWQqLyk7CiAKICAgICBib29sIGlzVmlydHVh
bCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2b2lkIHJ1blBhbmVsKCk7Ci0g
ICAgdm9pZCBzZWxlY3RBc3NlcnRpb25SZXNwb25zZShWZWN0b3I8UmVmPFdlYkNvcmU6OkF1dGhl
bnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4+JiYsIFdlYkF1dGhlbnRpY2F0aW9uU291cmNlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNw
b25zZSopPiYmKTsKLSAgICB2b2lkIGRlY2lkZVBvbGljeUZvckxvY2FsQXV0aGVudGljYXRvcihD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKExvY2FsQXV0aGVudGljYXRvclBvbGljeSk+JiYpOwogCisg
ICAgdm9pZCBhZGRDcmVkZW50aWFsKGNvbnN0IFN0cmluZyYsIGNvbnN0IFZpcnR1YWxDcmVkZW50
aWFsJik7CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGRlY2lkZVBvbGljeUZvckxvY2FsQXV0aGVu
dGljYXRvcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKExvY2FsQXV0aGVudGljYXRvclBvbGljeSk+
JiYpIG92ZXJyaWRlOworICAgIHZvaWQgc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2UoVmVjdG9yPFJl
ZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+PiYmLCBXZWJBdXRoZW50
aWNhdGlvblNvdXJjZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpBdXRoZW50aWNh
dG9yQXNzZXJ0aW9uUmVzcG9uc2UqKT4mJikgb3ZlcnJpZGU7CisgICAgCisgICAgCiBwcml2YXRl
OgogICAgIFVuaXF1ZVJlZjxBdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZT4gY3JlYXRlU2Vy
dmljZShXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0LCBBdXRoZW50aWNhdG9yVHJhbnNw
b3J0U2VydmljZTo6T2JzZXJ2ZXImKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHJ1blBhbmVsKCkg
b3ZlcnJpZGU7CiAKICAgICBIYXNoTWFwPFN0cmluZywgVW5pcXVlUmVmPFZpcnR1YWxBdXRoZW50
aWNhdG9yQ29uZmlndXJhdGlvbj4+IG1fdmlydHVhbEF1dGhlbnRpY2F0b3JzOworICAgIEhhc2hN
YXA8U3RyaW5nLCBWZWN0b3I8VmlydHVhbENyZWRlbnRpYWw+PiBtX2NyZWRlbnRpYWxzQnlBdXRo
ZW50aWNhdG9yOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9WaXJ0dWFsL1ZpcnR1YWxBdXRo
ZW50aWNhdG9yVXRpbHMuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL1ZpcnR1YWwvVmlydHVhbEF1dGhlbnRpY2F0b3JVdGlscy5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3N2I4
Y2I2Nzk2NzI5YmM3NWE4YzQzNjM2YTlhNzRhMTU1ZWJkN2EKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9WaXJ0dWFsL1ZpcnR1YWxB
dXRoZW50aWNhdG9yVXRpbHMuaApAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisjaW5jbHVkZSAiVmlydHVhbEF1dGhl
bnRpY2F0b3JDb25maWd1cmF0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1aW50OF90
IGZsYWdzRm9yQ29uZmlnKGNvbnN0IFZpcnR1YWxBdXRoZW50aWNhdG9yQ29uZmlndXJhdGlvbiYp
OworUmV0YWluUHRyPFNlY0tleVJlZj4gY3JlYXRlUHJpdmF0ZUtleSgpOworc3RkOjpwYWlyPFZl
Y3Rvcjx1aW50OF90PiwgVmVjdG9yPHVpbnQ4X3Q+PiBjcmVkZW50aWFsSWRBbmRDb3NlUHViS2V5
Rm9yUHJpdmF0ZUtleShSZXRhaW5QdHI8U2VjS2V5UmVmPiBwcml2YXRlS2V5KTsKK1N0cmluZyBi
YXNlNjRQcml2YXRlS2V5KFJldGFpblB0cjxTZWNLZXlSZWY+IHByaXZhdGVLZXkpOworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9WaXJ0dWFsL1Zp
cnR1YWxBdXRoZW50aWNhdG9yVXRpbHMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9WaXJ0dWFsL1ZpcnR1YWxBdXRoZW50aWNhdG9yVXRpbHMubW0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDM2ZjcwOTQxYjk5OGNjMDk3MGIzZjliNGQ2ZWIzNzYzOWQ4NDc2MQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1
YWwvVmlydHVhbEF1dGhlbnRpY2F0b3JVdGlscy5tbQpAQCAtMCwwICsxLDExNCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlZpcnR1YWxBdXRoZW50aWNh
dG9yVXRpbHMuaCIKKworI2lmIEVOQUJMRShXRUJfQVVUSE4pCisKKyNpbmNsdWRlIDxXZWJDb3Jl
L1dlYkF1dGhlbnRpY2F0aW9uQ29uc3RhbnRzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9XZWJBdXRo
ZW50aWNhdGlvblV0aWxzLmg+CisjaW5jbHVkZSA8cGFsL2NyeXB0by9DcnlwdG9EaWdlc3QuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwordWludDhf
dCBmbGFnc0ZvckNvbmZpZyhjb25zdCBWaXJ0dWFsQXV0aGVudGljYXRvckNvbmZpZ3VyYXRpb24m
IGNvbmZpZykKK3sKKyAgICBpbnQ4X3QgZmxhZ3MgPSAwYjAxMDAwMDAwOyAvLyBBVCBzZXQKKyAg
ICBpZiAoY29uZmlnLmlzVXNlckNvbnNlbnRpbmcpCisgICAgICAgIGZsYWdzID0gZmxhZ3MgfCAw
YjAwMDAwMDAxOyAvLyBVUCBzZXQKKyAgICBpZiAoY29uZmlnLmlzVXNlclZlcmlmaWVkKQorICAg
ICAgICBmbGFncyA9IGZsYWdzIHwgMGIwMDAwMDEwMDsKKyAgICByZXR1cm4gZmxhZ3M7Cit9CisK
K1JldGFpblB0cjxTZWNLZXlSZWY+IGNyZWF0ZVByaXZhdGVLZXkoKQoreworICAgIE5TRGljdGlv
bmFyeSogb3B0aW9ucyA9IEB7CisgICAgICAgIChpZClrU2VjQXR0cktleVR5cGU6IChpZClrU2Vj
QXR0cktleVR5cGVFQ1NFQ1ByaW1lUmFuZG9tLAorICAgICAgICAoaWQpa1NlY0F0dHJLZXlDbGFz
czogKGlkKWtTZWNBdHRyS2V5Q2xhc3NQcml2YXRlLAorICAgICAgICAoaWQpa1NlY0F0dHJLZXlT
aXplSW5CaXRzOiBAMjU2LAorICAgIH07CisgICAgQ0ZFcnJvclJlZiBlcnJvclJlZiA9IG51bGxw
dHI7CisgICAgYXV0byBrZXkgPSBhZG9wdENGKFNlY0tleUNyZWF0ZVJhbmRvbUtleSgKKyAgICAg
ICAgKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilvcHRpb25zLAorICAgICAgICAmZXJyb3JSZWYK
KyAgICApKTsKKyAgICBpZiAoZXJyb3JSZWYpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IHJldHVybiBrZXk7Cit9CisKK3N0ZDo6cGFpcjxWZWN0b3I8dWludDhfdD4sIFZlY3Rvcjx1aW50
OF90Pj4gY3JlZGVudGlhbElkQW5kQ29zZVB1YktleUZvclByaXZhdGVLZXkoUmV0YWluUHRyPFNl
Y0tleVJlZj4gcHJpdmF0ZUtleSkKK3sKKyAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBwdWJsaWNL
ZXlEYXRhUmVmOworICAgIHsKKyAgICAgICAgYXV0byBwdWJsaWNLZXkgPSBhZG9wdENGKFNlY0tl
eUNvcHlQdWJsaWNLZXkocHJpdmF0ZUtleS5nZXQoKSkpOworICAgICAgICBDRkVycm9yUmVmIGVy
cm9yUmVmID0gbnVsbHB0cjsKKyAgICAgICAgcHVibGljS2V5RGF0YVJlZiA9IGFkb3B0Q0YoU2Vj
S2V5Q29weUV4dGVybmFsUmVwcmVzZW50YXRpb24ocHVibGljS2V5LmdldCgpLCAmZXJyb3JSZWYp
KTsKKyAgICAgICAgYXV0byByZXRhaW5FcnJvciA9IGFkb3B0Q0YoZXJyb3JSZWYpOworICAgICAg
ICBBU1NFUlQoIWVycm9yUmVmKTsKKyAgICAgICAgQVNTRVJUKCgoTlNEYXRhICopcHVibGljS2V5
RGF0YVJlZi5nZXQoKSkubGVuZ3RoID09ICgxICsgMiAqIEVTMjU2RmllbGRFbGVtZW50TGVuZ3Ro
KSk7IC8vIDA0IHwgWCB8IFkKKyAgICB9CisgICAgTlNEYXRhICpuc1B1YmxpY0tleURhdGEgPSAo
TlNEYXRhICopcHVibGljS2V5RGF0YVJlZi5nZXQoKTsKKworICAgIFZlY3Rvcjx1aW50OF90PiBj
cmVkZW50aWFsSWQ7CisgICAgeworICAgICAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGln
ZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzEpOworICAgICAg
ICBkaWdlc3QtPmFkZEJ5dGVzKG5zUHVibGljS2V5RGF0YS5ieXRlcywgbnNQdWJsaWNLZXlEYXRh
Lmxlbmd0aCk7CisgICAgICAgIGNyZWRlbnRpYWxJZCA9IGRpZ2VzdC0+Y29tcHV0ZUhhc2goKTsK
KyAgICB9CisKKyAgICBWZWN0b3I8dWludDhfdD4gY29zZVB1YmxpY0tleTsKKyAgICB7CisgICAg
ICAgIC8vIENPU0UgRW5jb2RpbmcKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHgoRVMyNTZGaWVs
ZEVsZW1lbnRMZW5ndGgpOworICAgICAgICBbbnNQdWJsaWNLZXlEYXRhIGdldEJ5dGVzOiB4LmRh
dGEoKSByYW5nZTpOU01ha2VSYW5nZSgxLCBFUzI1NkZpZWxkRWxlbWVudExlbmd0aCldOworICAg
ICAgICBWZWN0b3I8dWludDhfdD4geShFUzI1NkZpZWxkRWxlbWVudExlbmd0aCk7CisgICAgICAg
IFtuc1B1YmxpY0tleURhdGEgZ2V0Qnl0ZXM6IHkuZGF0YSgpIHJhbmdlOk5TTWFrZVJhbmdlKDEg
KyBFUzI1NkZpZWxkRWxlbWVudExlbmd0aCwgRVMyNTZGaWVsZEVsZW1lbnRMZW5ndGgpXTsKKyAg
ICAgICAgY29zZVB1YmxpY0tleSA9IGVuY29kZUVTMjU2UHVibGljS2V5QXNDQk9SKFdURk1vdmUo
eCksIFdURk1vdmUoeSkpOworICAgIH0KKyAgICByZXR1cm4gc3RkOjpwYWlyIHsgY3JlZGVudGlh
bElkLCBjb3NlUHVibGljS2V5IH07Cit9CisKK1N0cmluZyBiYXNlNjRQcml2YXRlS2V5KFJldGFp
blB0cjxTZWNLZXlSZWY+IHByaXZhdGVLZXkpCit7CisgICAgQ0ZFcnJvclJlZiBlcnJvclJlZiA9
IG51bGxwdHI7CisgICAgYXV0byBwcml2YXRlS2V5UmVwID0gYWRvcHRDRihTZWNLZXlDb3B5RXh0
ZXJuYWxSZXByZXNlbnRhdGlvbigoX19icmlkZ2UgU2VjS2V5UmVmKSgoaWQpcHJpdmF0ZUtleS5n
ZXQoKSksICZlcnJvclJlZikpOworICAgIGF1dG8gcmV0YWluRXJyb3IgPSBhZG9wdENGKGVycm9y
UmVmKTsKKyAgICBpZiAoZXJyb3JSZWYpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgIHJldHVybiAiIjsKKyAgICB9CisgICAgTlNEYXRhICpuc1ByaXZhdGVLZXlSZXAg
PSAoTlNEYXRhICopcHJpdmF0ZUtleVJlcC5nZXQoKTsKKworICAgIHJldHVybiBTdHJpbmcoW25z
UHJpdmF0ZUtleVJlcCBiYXNlNjRFbmNvZGVkU3RyaW5nV2l0aE9wdGlvbnM6MF0pOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9WaXJ0dWFs
L1ZpcnR1YWxDcmVkZW50aWFsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9WaXJ0dWFsL1ZpcnR1YWxDcmVkZW50aWFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODFkYmEwZmRi
ZDY0OWRmNWZmYTIyMTJkMGIyYzQyYjdhNmQzNWUzYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVhbENyZWRl
bnRpYWwuaApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
ZiBFTkFCTEUoV0VCX0FVVEhOKQorCisjaW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50aWNhdG9yVHJh
bnNwb3J0Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitzdHJ1Y3QgVmlydHVhbENyZWRlbnRpYWwgeworICAgIFdURl9NQUtFX1NUUlVD
VF9GQVNUX0FMTE9DQVRFRDsKKyAgICBWZWN0b3I8dWludDhfdD4gY3JlZGVudGlhbElkOworICAg
IGJvb2wgaXNSZXNpZGVudENyZWRlbnRpYWw7CisgICAgYm9vbCBpc1ZlcmlmaWNhdGlvblJlcXVp
cmVkOworICAgIFN0cmluZyBycElkOworICAgIFN0cmluZyBwcml2YXRlS2V5OworICAgIHN0ZDo6
b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiB1c2VySGFuZGxlOworICAgIHVpbnQ2NF90IHNpZ25D
b3VudDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFdF
Ql9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL1ZpcnR1YWwvVmlydHVhbEhpZENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vVmlydHVhbC9WaXJ0dWFsSGlkQ29ubmVjdGlvbi5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZjZmNjM2ODlkZjFhOTU0NjIxNTAyMTY0MDhkNTI4Nzk3NmFiMmQzMgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL1ZpcnR1YWwvVmlydHVhbEhpZENvbm5lY3Rpb24uY3BwCkBAIC0wLDAgKzEsMjQ4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlZpcnR1YWxIaWRDb25u
ZWN0aW9uLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisjaW5jbHVkZSAiVmlydHVhbEF1
dGhlbnRpY2F0b3JNYW5hZ2VyLmgiCisjaW5jbHVkZSAiVmlydHVhbEF1dGhlbnRpY2F0b3JVdGls
cy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ0JPUlJlYWRlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
Q0JPUldyaXRlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRmlkb0NvbnN0YW50cy5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvV2ViQXV0aGVudGljYXRpb25VdGlscy5oPgorI2luY2x1ZGUgPHd0Zi9CbG9j
a1B0ci5oPgorI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5oPgor
I2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFt
ZXNwYWNlIGNib3I7Cit1c2luZyBuYW1lc3BhY2UgZmlkbzsKK3VzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOworCitjb25zdCBzaXplX3QgQ3RhcENoYW5uZWxJZFNpemUgPSA0OworCitWaXJ0dWFsSGlk
Q29ubmVjdGlvbjo6VmlydHVhbEhpZENvbm5lY3Rpb24oY29uc3QgU3RyaW5nJiBhdXRoZW50aWNh
dG9ySWQsIGNvbnN0IFZpcnR1YWxBdXRoZW50aWNhdG9yQ29uZmlndXJhdGlvbiYgY29uZmlndXJh
dGlvbiwgY29uc3QgV2Vha1B0cjxWaXJ0dWFsQXV0aGVudGljYXRvck1hbmFnZXI+JiBtYW5hZ2Vy
KQorICAgIDogSGlkQ29ubmVjdGlvbihudWxscHRyKQorICAgICwgbV9tYW5hZ2VyKG1hbmFnZXIp
CisgICAgLCBtX2NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbikKKyAgICAsIG1fYXV0aGVudGlj
YXRvcklkKGF1dGhlbnRpY2F0b3JJZCkKK3sKK30KKwordm9pZCBWaXJ0dWFsSGlkQ29ubmVjdGlv
bjo6aW5pdGlhbGl6ZSgpCit7CisgICAgc2V0SXNJbml0aWFsaXplZCh0cnVlKTsKK30KKwordm9p
ZCBWaXJ0dWFsSGlkQ29ubmVjdGlvbjo6dGVybWluYXRlKCkKK3sKKyAgICBzZXRJc0luaXRpYWxp
emVkKGZhbHNlKTsKK30KKworYXV0byBWaXJ0dWFsSGlkQ29ubmVjdGlvbjo6c2VuZFN5bmMoY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSAtPiBEYXRhU2VudAoreworICAgIEFTU0VSVChpc0lu
aXRpYWxpemVkKCkpOworICAgIHJldHVybiBEYXRhU2VudDo6WWVzOworfQorCit2b2lkIFZpcnR1
YWxIaWRDb25uZWN0aW9uOjpzZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIERhdGFTZW50Q2Fs
bGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBBU1NFUlQoaXNJbml0aWFsaXplZCgpKTsKKyAgICBh
dXRvIHRhc2sgPSBtYWtlQmxvY2tQdHIoW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGRh
dGEgPSBXVEZNb3ZlKGRhdGEpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFi
bGUgeworICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICAgICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrVGhpcywgZGF0YSA9IFdURk1vdmUoZGF0YSksIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdl
YWtUaGlzKSB7CisgICAgICAgICAgICAgICAgY2FsbGJhY2soRGF0YVNlbnQ6Ok5vKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHdlYWtUaGlz
LT5hc3NlbWJsZVJlcXVlc3QoV1RGTW92ZShkYXRhKSk7CisKKyAgICAgICAgICAgIGNhbGxiYWNr
KERhdGFTZW50OjpZZXMpOworICAgICAgICB9KTsKKyAgICB9KTsKKyAgICBkaXNwYXRjaF9hc3lu
YyhkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFV
TFQsIDApLCB0YXNrLmdldCgpKTsKK30KKwordm9pZCBWaXJ0dWFsSGlkQ29ubmVjdGlvbjo6YXNz
ZW1ibGVSZXF1ZXN0KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCit7CisgICAgaWYgKCFtX3JlcXVl
c3RNZXNzYWdlKSB7CisgICAgICAgIG1fcmVxdWVzdE1lc3NhZ2UgPSBGaWRvSGlkTWVzc2FnZTo6
Y3JlYXRlRnJvbVNlcmlhbGl6ZWREYXRhKGRhdGEpOworICAgICAgICBBU1NFUlQobV9yZXF1ZXN0
TWVzc2FnZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgYXV0byBzdGF0dXMgPSBtX3JlcXVlc3RN
ZXNzYWdlLT5hZGRDb250aW51YXRpb25QYWNrZXQoZGF0YSk7CisgICAgICAgIEFTU0VSVF9VTlVT
RUQoc3RhdHVzLCBzdGF0dXMpOworICAgIH0KKworICAgIGlmIChtX3JlcXVlc3RNZXNzYWdlLT5t
ZXNzYWdlQ29tcGxldGUoKSkKKyAgICAgICAgcGFyc2VSZXF1ZXN0KCk7Cit9CisKK3ZvaWQgVmly
dHVhbEhpZENvbm5lY3Rpb246OnJlY2VpdmVIaWRNZXNzYWdlKGZpZG86OkZpZG9IaWRNZXNzYWdl
JiYgbWVzc2FnZSkKK3sKKyAgICB3aGlsZSAobWVzc2FnZS5udW1QYWNrZXRzKCkpIHsKKyAgICAg
ICAgYXV0byByZXBvcnQgPSBtZXNzYWdlLnBvcE5leHRQYWNrZXQoKTsKKyAgICAgICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKFtyZXBvcnQgPSBXVEZNb3ZlKHJlcG9ydCksIHdlYWtUaGlzID0g
V2Vha1B0ciB7ICp0aGlzIH1dKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlz
KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHdlYWtUaGlzLT5yZWNlaXZl
UmVwb3J0KFdURk1vdmUocmVwb3J0KSk7CisgICAgICAgIH0pOworICAgIH0KK30KKwordm9pZCBW
aXJ0dWFsSGlkQ29ubmVjdGlvbjo6cmVjaWV2ZVJlc3BvbnNlQ29kZShmaWRvOjpDdGFwRGV2aWNl
UmVzcG9uc2VDb2RlIGNvZGUpCit7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKKyAgICBi
dWZmZXIuYXBwZW5kKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGNvZGUpKTsKKworICAgIGF1dG8gbWVz
c2FnZSA9IEZpZG9IaWRNZXNzYWdlOjpjcmVhdGUobV9jdXJyZW50Q2hhbm5lbCwgRmlkb0hpZERl
dmljZUNvbW1hbmQ6OmtDYm9yLCBXVEZNb3ZlKGJ1ZmZlcikpOworICAgIHJlY2VpdmVIaWRNZXNz
YWdlKFdURk1vdmUoKm1lc3NhZ2UpKTsKK30KKwordm9pZCBWaXJ0dWFsSGlkQ29ubmVjdGlvbjo6
cGFyc2VSZXF1ZXN0KCkKK3sKKyAgICBpZiAoIW1fcmVxdWVzdE1lc3NhZ2UpCisgICAgICAgIHJl
dHVybjsKKyAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8qIG1h
bmFnZXIgPSBtX21hbmFnZXIuZ2V0KCk7CisgICAgbV9jdXJyZW50Q2hhbm5lbCA9IG1fcmVxdWVz
dE1lc3NhZ2UtPmNoYW5uZWxJZCgpOworICAgIHN3aXRjaCAobV9yZXF1ZXN0TWVzc2FnZS0+Y21k
KCkpIHsKKyAgICBjYXNlIEZpZG9IaWREZXZpY2VDb21tYW5kOjprSW5pdDogeworICAgICAgICBt
X25vbmNlID0gbV9yZXF1ZXN0TWVzc2FnZS0+Z2V0TWVzc2FnZVBheWxvYWQoKTsKKyAgICAgICAg
QVNTRVJUKG1fbm9uY2Uuc2l6ZSgpID09IGtIaWRJbml0Tm9uY2VMZW5ndGgpOworICAgICAgICBW
ZWN0b3I8dWludDhfdD4gcGF5bG9hZDsKKyAgICAgICAgcGF5bG9hZC5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KGtIaWRJbml0UmVzcG9uc2VTaXplKTsKKyAgICAgICAgcGF5bG9hZC5hcHBlbmRWZWN0
b3IobV9ub25jZSk7CisgICAgICAgIHNpemVfdCB3cml0ZVBvc2l0aW9uID0gcGF5bG9hZC5zaXpl
KCk7CisgICAgICAgIHBheWxvYWQuZ3JvdyhrSGlkSW5pdFJlc3BvbnNlU2l6ZSk7CisgICAgICAg
IGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tVmFsdWVzKHBheWxvYWQuZGF0YSgpICsgd3JpdGVQb3Np
dGlvbiwgQ3RhcENoYW5uZWxJZFNpemUpOworICAgICAgICBhdXRvIGNoYW5uZWwgPSBrSGlkQnJv
YWRjYXN0Q2hhbm5lbDsKKyAgICAgICAgRmlkb0hpZEluaXRQYWNrZXQgaW5pdFBhY2tldChjaGFu
bmVsLCBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a0luaXQsIFdURk1vdmUocGF5bG9hZCksIHBheWxv
YWQuc2l6ZSgpKTsKKyAgICAgICAgcmVjZWl2ZVJlcG9ydChpbml0UGFja2V0LmdldFNlcmlhbGl6
ZWREYXRhKCkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBGaWRvSGlkRGV2aWNl
Q29tbWFuZDo6a0Nib3I6IHsKKyAgICAgICAgYXV0byBwYXlsb2FkID0gbV9yZXF1ZXN0TWVzc2Fn
ZS0+Z2V0TWVzc2FnZVBheWxvYWQoKTsKKyAgICAgICAgQVNTRVJUKHBheWxvYWQuc2l6ZSgpKTsK
KyAgICAgICAgYXV0byBjbWQgPSBzdGF0aWNfY2FzdDxDdGFwUmVxdWVzdENvbW1hbmQ+KHBheWxv
YWRbMF0pOworICAgICAgICBwYXlsb2FkLnJlbW92ZSgwKTsKKyAgICAgICAgYXV0byByZXF1ZXN0
TWFwID0gQ0JPUlJlYWRlcjo6cmVhZChwYXlsb2FkKTsKKyAgICAgICAgQVNTRVJUKHJlcXVlc3RN
YXAgfHwgY21kID09IEN0YXBSZXF1ZXN0Q29tbWFuZDo6a0F1dGhlbnRpY2F0b3JHZXROZXh0QXNz
ZXJ0aW9uKTsKKyAgICAgICAgaWYgKGNtZCA9PSBDdGFwUmVxdWVzdENvbW1hbmQ6OmtBdXRoZW50
aWNhdG9yTWFrZUNyZWRlbnRpYWwpIHsKKyAgICAgICAgICAgIFZpcnR1YWxDcmVkZW50aWFsIGNy
ZWRlbnRpYWw7CisgICAgICAgICAgICBhdXRvIGl0ID0gcmVxdWVzdE1hcC0+Z2V0TWFwKCkuZmlu
ZChDQk9SVmFsdWUoa0N0YXBNYWtlQ3JlZGVudGlhbFJlcXVlc3RPcHRpb25zS2V5KSk7IC8vIEZp
bmQgb3B0aW9ucy4KKyAgICAgICAgICAgIGlmIChpdCAhPSByZXF1ZXN0TWFwLT5nZXRNYXAoKS5l
bmQoKSkgeworICAgICAgICAgICAgICAgIGF1dG8mIG9wdGlvbk1hcCA9IGl0LT5zZWNvbmQuZ2V0
TWFwKCk7CisKKyAgICAgICAgICAgICAgICBhdXRvIGl0ciA9IG9wdGlvbk1hcC5maW5kKENCT1JW
YWx1ZShrUmVzaWRlbnRLZXlNYXBLZXkpKTsKKyAgICAgICAgICAgICAgICBpZiAoaXRyICE9IG9w
dGlvbk1hcC5lbmQoKSkgeworICAgICAgICAgICAgICAgICAgICBhdXRvIHJlcXVpcmVSZXNpZGVu
dEtleSA9IGl0ci0+c2Vjb25kLmdldEJvb2woKTsKKyAgICAgICAgICAgICAgICAgICAgLy8gaHR0
cHM6Ly9maWRvYWxsaWFuY2Uub3JnL3NwZWNzL2ZpZG8tdjIuMS1yZC0yMDIxMDMwOS9maWRvLWNs
aWVudC10by1hdXRoZW50aWNhdG9yLXByb3RvY29sLXYyLjEtcmQtMjAyMTAzMDkuaHRtbCNvcC1t
YWtlY3JlZC1zdGVwLW9wdGlvbnMKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJlcXVpcmVSZXNp
ZGVudEtleSAmJiAhbV9jb25maWd1cmF0aW9uLmhhc1Jlc2lkZW50S2V5KSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICByZWNpZXZlUmVzcG9uc2VDb2RlKEN0YXBEZXZpY2VSZXNwb25zZUNvZGU6
OmtDdGFwMkVyclVuc3VwcG9ydGVkT3B0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAocmVx
dWlyZVJlc2lkZW50S2V5KQorICAgICAgICAgICAgICAgICAgICAgICAgY3JlZGVudGlhbC5pc1Jl
c2lkZW50Q3JlZGVudGlhbCA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgaXRyID0gb3B0aW9uTWFwLmZpbmQoQ0JPUlZhbHVlKGtVc2VyVmVyaWZpY2F0aW9uTWFw
S2V5KSk7CisgICAgICAgICAgICAgICAgaWYgKGl0ciAhPSBvcHRpb25NYXAuZW5kKCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgYXV0byByZXF1aXJlVXNlclZlcmlmaWNhdGlvbiA9IGl0ci0+c2Vj
b25kLmdldEJvb2woKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJlcXVpcmVVc2VyVmVyaWZp
Y2F0aW9uICYmICFtX2NvbmZpZ3VyYXRpb24uaGFzVXNlclZlcmlmaWNhdGlvbikgeworICAgICAg
ICAgICAgICAgICAgICAgICAgcmVjaWV2ZVJlc3BvbnNlQ29kZShDdGFwRGV2aWNlUmVzcG9uc2VD
b2RlOjprQ3RhcDJFcnJJbnZhbGlkT3B0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAocmVx
dWlyZVVzZXJWZXJpZmljYXRpb24gJiYgIW1fY29uZmlndXJhdGlvbi5pc1VzZXJWZXJpZmllZCkg
eworICAgICAgICAgICAgICAgICAgICAgICAgcmVjaWV2ZVJlc3BvbnNlQ29kZShDdGFwRGV2aWNl
UmVzcG9uc2VDb2RlOjprQ3RhcDJFcnJPcGVyYXRpb25EZW5pZWQpOworICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgIGNyZWRlbnRpYWwuaXNWZXJpZmljYXRpb25SZXF1aXJlZCA9IHJlcXVpcmVVc2VyVmVyaWZp
Y2F0aW9uOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGl0
ID0gcmVxdWVzdE1hcC0+Z2V0TWFwKCkuZmluZChDQk9SVmFsdWUoa0N0YXBNYWtlQ3JlZGVudGlh
bFJwS2V5KSk7CisgICAgICAgICAgICBpZiAoaXQgPT0gcmVxdWVzdE1hcC0+Z2V0TWFwKCkuZW5k
KCkpIHsKKyAgICAgICAgICAgICAgICByZWNpZXZlUmVzcG9uc2VDb2RlKEN0YXBEZXZpY2VSZXNw
b25zZUNvZGU6OmtDdGFwMkVyck1pc3NpbmdQYXJhbWV0ZXIpOworICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGF1dG8mIHJwRW50aXR5ID0gaXQtPnNl
Y29uZC5nZXRNYXAoKTsKKyAgICAgICAgICAgIGl0ID0gcnBFbnRpdHkuZmluZChDQk9SVmFsdWUo
a0VudGl0eUlkTWFwS2V5KSk7CisgICAgICAgICAgICBpZiAoaXQgPT0gcnBFbnRpdHkuZW5kKCkp
IHsKKyAgICAgICAgICAgICAgICByZWNpZXZlUmVzcG9uc2VDb2RlKEN0YXBEZXZpY2VSZXNwb25z
ZUNvZGU6OmtDdGFwMkVyck1pc3NpbmdQYXJhbWV0ZXIpOworICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNyZWRlbnRpYWwucnBJZCA9IGl0LT5zZWNv
bmQuZ2V0U3RyaW5nKCk7CisgICAgICAgICAgICBhdXRvIHByaXZhdGVLZXkgPSBjcmVhdGVQcml2
YXRlS2V5KCk7CisgICAgICAgICAgICBjcmVkZW50aWFsLnByaXZhdGVLZXkgPSBiYXNlNjRQcml2
YXRlS2V5KHByaXZhdGVLZXkpOworCisgICAgICAgICAgICBpdCA9IHJlcXVlc3RNYXAtPmdldE1h
cCgpLmZpbmQoQ0JPUlZhbHVlKGtDdGFwTWFrZUNyZWRlbnRpYWxVc2VyS2V5KSk7CisgICAgICAg
ICAgICBpZiAoaXQgPT0gcmVxdWVzdE1hcC0+Z2V0TWFwKCkuZW5kKCkpIHsKKyAgICAgICAgICAg
ICAgICByZWNpZXZlUmVzcG9uc2VDb2RlKEN0YXBEZXZpY2VSZXNwb25zZUNvZGU6OmtDdGFwMkVy
ck1pc3NpbmdQYXJhbWV0ZXIpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGF1dG8mIHVzZXJFbnRpdHkgPSBpdC0+c2Vjb25kLmdldE1hcCgpOwor
ICAgICAgICAgICAgaXQgPSB1c2VyRW50aXR5LmZpbmQoQ0JPUlZhbHVlKGtFbnRpdHlJZE1hcEtl
eSkpOworICAgICAgICAgICAgaWYgKGl0ID09IHVzZXJFbnRpdHkuZW5kKCkpIHsKKyAgICAgICAg
ICAgICAgICByZWNpZXZlUmVzcG9uc2VDb2RlKEN0YXBEZXZpY2VSZXNwb25zZUNvZGU6OmtDdGFw
MkVyck1pc3NpbmdQYXJhbWV0ZXIpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGNyZWRlbnRpYWwudXNlckhhbmRsZSA9IGl0LT5zZWNvbmQuZ2V0
Qnl0ZVN0cmluZygpOworCisgICAgICAgICAgICBtYW5hZ2VyLT5hZGRDcmVkZW50aWFsKG1fYXV0
aGVudGljYXRvcklkLCBjcmVkZW50aWFsKTsKKyAgICAgICAgICAgIGF1dG8gY3JlZGVudGlhbElk
QW5kQ29zZVB1YktleSA9IGNyZWRlbnRpYWxJZEFuZENvc2VQdWJLZXlGb3JQcml2YXRlS2V5KHBy
aXZhdGVLZXkpOworCisgICAgICAgICAgICBhdXRvIGF0dGVzdGVkQ3JlZGVudGlhbERhdGEgPSBi
dWlsZEF0dGVzdGVkQ3JlZGVudGlhbERhdGEoVmVjdG9yPHVpbnQ4X3Q+KGFhZ3VpZExlbmd0aCwg
MCksIGNyZWRlbnRpYWxJZEFuZENvc2VQdWJLZXkuZmlyc3QsIGNyZWRlbnRpYWxJZEFuZENvc2VQ
dWJLZXkuc2Vjb25kKTsKKworICAgICAgICAgICAgYXV0byBhdXRoZW50aWNhdG9yRGF0YSA9IGJ1
aWxkQXV0aERhdGEoY3JlZGVudGlhbC5ycElkLCBmbGFnc0ZvckNvbmZpZyhtX2NvbmZpZ3VyYXRp
b24pLCBjcmVkZW50aWFsLnNpZ25Db3VudCwgYXR0ZXN0ZWRDcmVkZW50aWFsRGF0YSk7CisgICAg
ICAgICAgICBDQk9SVmFsdWU6Ok1hcFZhbHVlIHJlc3BvbnNlOworICAgICAgICAgICAgcmVzcG9u
c2VbQ0JPUlZhbHVlKDIpXSA9IENCT1JWYWx1ZShhdXRoZW50aWNhdG9yRGF0YSk7CisKKyAgICAg
ICAgICAgIGF1dG8gYXR0T2JqID0gYnVpbGRBdHRlc3RhdGlvbk1hcChXVEZNb3ZlKGF1dGhlbnRp
Y2F0b3JEYXRhKSwgIiIsIHsgfSwgQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZTo6Tm9u
ZSk7CisKKyAgICAgICAgICAgIHJlc3BvbnNlW0NCT1JWYWx1ZSgxKV0gPSBDQk9SVmFsdWUoIm5v
bmUiKTsKKyAgICAgICAgICAgIHJlc3BvbnNlW0NCT1JWYWx1ZSgzKV0gPSBDQk9SVmFsdWUoYXR0
T2JqKTsKKyAgICAgICAgICAgIGF1dG8gcGF5bG9hZCA9IENCT1JXcml0ZXI6OndyaXRlKENCT1JW
YWx1ZShyZXNwb25zZSkpOworICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKKyAg
ICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoc3RhdGljX2Nhc3Q8dWludDhfdD4oZmlkbzo6Q3RhcERl
dmljZVJlc3BvbnNlQ29kZTo6a1N1Y2Nlc3MpKTsKKyAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmRW
ZWN0b3IoKnBheWxvYWQpOworCisgICAgICAgICAgICBhdXRvIG1lc3NhZ2UgPSBGaWRvSGlkTWVz
c2FnZTo6Y3JlYXRlKG1fcmVxdWVzdE1lc3NhZ2UtPmNoYW5uZWxJZCgpLCBGaWRvSGlkRGV2aWNl
Q29tbWFuZDo6a0Nib3IsIFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgICAgICByZWNlaXZlSGlk
TWVzc2FnZShXVEZNb3ZlKCptZXNzYWdlKSk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBtX3JlcXVlc3RN
ZXNzYWdlID0gc3RkOjpudWxsb3B0OworfQorCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVhbEhpZENvbm5lY3Rpb24uaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVh
bEhpZENvbm5lY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYWIyMzE0YzI4ZGIzNjM2MzhhMTQxYTkxMmVk
YjNlYzBmODAwMzZmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vVmlydHVhbC9WaXJ0dWFsSGlkQ29ubmVjdGlvbi5oCkBAIC0wLDAg
KzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJfQVVU
SE4pCisKKyNpbmNsdWRlICJIaWRDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiVmlydHVhbEF1dGhl
bnRpY2F0b3JDb25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9GaWRvSGlkTWVzc2Fn
ZS5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworc3Ry
dWN0IFZpcnR1YWxBdXRoZW50aWNhdG9yQ29uZmlndXJhdGlvbjsKK2NsYXNzIFZpcnR1YWxBdXRo
ZW50aWNhdG9yTWFuYWdlcjsKKworY2xhc3MgVmlydHVhbEhpZENvbm5lY3Rpb24gZmluYWwgOiBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8VmlydHVhbEhpZENvbm5lY3Rpb24+LCBwdWJsaWMgSGlkQ29u
bmVjdGlvbiB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgVmlydHVhbEhpZENvbm5lY3Rpb24oY29u
c3QgU3RyaW5nJiBhdXRoZW50aWNhdG9ySWQsIGNvbnN0IFZpcnR1YWxBdXRoZW50aWNhdG9yQ29u
ZmlndXJhdGlvbiYsIGNvbnN0IFdlYWtQdHI8VmlydHVhbEF1dGhlbnRpY2F0b3JNYW5hZ2VyPiYp
OworCitwcml2YXRlOgorICAgIHZvaWQgaW5pdGlhbGl6ZSgpIGZpbmFsOworICAgIHZvaWQgdGVy
bWluYXRlKCkgZmluYWw7CisgICAgRGF0YVNlbnQgc2VuZFN5bmMoY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHNlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwg
RGF0YVNlbnRDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIGFzc2VtYmxlUmVxdWVzdChWZWN0
b3I8dWludDhfdD4mJik7CisgICAgdm9pZCBwYXJzZVJlcXVlc3QoKTsKKworICAgIHZvaWQgcmVj
ZWl2ZUhpZE1lc3NhZ2UoZmlkbzo6Rmlkb0hpZE1lc3NhZ2UmJik7CisgICAgdm9pZCByZWNpZXZl
UmVzcG9uc2VDb2RlKGZpZG86OkN0YXBEZXZpY2VSZXNwb25zZUNvZGUpOworCisgICAgV2Vha1B0
cjxWaXJ0dWFsQXV0aGVudGljYXRvck1hbmFnZXI+IG1fbWFuYWdlcjsKKyAgICBWaXJ0dWFsQXV0
aGVudGljYXRvckNvbmZpZ3VyYXRpb24gbV9jb25maWd1cmF0aW9uOworICAgIHN0ZDo6b3B0aW9u
YWw8Zmlkbzo6Rmlkb0hpZE1lc3NhZ2U+IG1fcmVxdWVzdE1lc3NhZ2U7CisgICAgVmVjdG9yPHVp
bnQ4X3Q+IG1fbm9uY2U7CisgICAgdWludDMyX3QgbV9jdXJyZW50Q2hhbm5lbCB7IGZpZG86OmtI
aWRCcm9hZGNhc3RDaGFubmVsIH07CisgICAgU3RyaW5nIG1fYXV0aGVudGljYXRvcklkOworfTsK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9WaXJ0dWFsL1ZpcnR1YWxTZXJ2aWNlLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9WaXJ0dWFsL1ZpcnR1YWxT
ZXJ2aWNlLmgKaW5kZXggOTg2OGYzY2U4NDI1YjJiOWY2MWVkMWZmYjliNWYxZTZmYWY2ZmI0NS4u
ZThhZDNhNzFhOWUxYzkxM2VlYjdlMmFmZDNlMTM3YjBiZWQ0OThhYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vVmlydHVhbC9WaXJ0dWFsU2Vy
dmljZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1Zp
cnR1YWwvVmlydHVhbFNlcnZpY2UuaApAQCAtMjksMTggKzI5LDIyIEBACiAKICNpbmNsdWRlICJB
dXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZS5oIgogI2luY2x1ZGUgIlZpcnR1YWxBdXRoZW50
aWNhdG9yQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIlZpcnR1YWxDcmVkZW50aWFsLmgiCisj
aW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIFZp
cnR1YWxBdXRoZW50aWNhdG9yTWFuYWdlcjsKKwogY2xhc3MgVmlydHVhbFNlcnZpY2UgOiBwdWJs
aWMgQXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2UgewogcHVibGljOgotICAgIGV4cGxpY2l0
IFZpcnR1YWxTZXJ2aWNlKE9ic2VydmVyJiwgY29uc3QgVmVjdG9yPFZpcnR1YWxBdXRoZW50aWNh
dG9yQ29uZmlndXJhdGlvbj4mKTsKKyAgICBleHBsaWNpdCBWaXJ0dWFsU2VydmljZShPYnNlcnZl
ciYsIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBWaXJ0dWFsQXV0aGVudGljYXRvckNvbmZpZ3Vy
YXRpb24+PiYpOwogCi0gICAgc3RhdGljIFVuaXF1ZVJlZjxBdXRoZW50aWNhdG9yVHJhbnNwb3J0
U2VydmljZT4gY3JlYXRlVmlydHVhbChXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0LCBP
YnNlcnZlciYsIGNvbnN0IFZlY3RvcjxWaXJ0dWFsQXV0aGVudGljYXRvckNvbmZpZ3VyYXRpb24+
JiBjb25maWdzKTsKKyAgICBzdGF0aWMgVW5pcXVlUmVmPEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRT
ZXJ2aWNlPiBjcmVhdGVWaXJ0dWFsKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQsIE9i
c2VydmVyJiwgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFZpcnR1YWxBdXRoZW50aWNhdG9yQ29u
ZmlndXJhdGlvbj4+Jik7CiBwcml2YXRlOgogICAgIHZvaWQgc3RhcnREaXNjb3ZlcnlJbnRlcm5h
bCgpIGZpbmFsOwogCi0gICAgVmVjdG9yPFZpcnR1YWxBdXRoZW50aWNhdG9yQ29uZmlndXJhdGlv
bj4gbV9jb25maWd1cmF0aW9uczsKKyAgICBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgVmlydHVh
bEF1dGhlbnRpY2F0b3JDb25maWd1cmF0aW9uPj4gbV9hdXRoZW50aWNhdG9yczsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vVmlydHVhbC9WaXJ0dWFsU2VydmljZS5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVhbFNlcnZpY2UubW0K
aW5kZXggZThiMWZiNTNjYjUyODNkYWI0YmY1NGIzZWVjM2NlZTNlNWM1MTUwOC4uZWQ2NjlhYmI4
YmUzYWM5MjNkZGZiMjcxZjBjYjNmNWFlODU3YjhkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vVmlydHVhbC9WaXJ0dWFsU2VydmljZS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9WaXJ0dWFsL1Zp
cnR1YWxTZXJ2aWNlLm1tCkBAIC0yOCwzMiArMjgsNTQgQEAKIAogI2lmIEVOQUJMRShXRUJfQVVU
SE4pCiAKKyNpbXBvcnQgIkN0YXBBdXRoZW50aWNhdG9yLmgiCisjaW1wb3J0ICJDdGFwSGlkRHJp
dmVyLmgiCiAjaW1wb3J0ICJMb2NhbEF1dGhlbnRpY2F0b3IuaCIKKyNpbXBvcnQgIlZpcnR1YWxB
dXRoZW50aWNhdG9yTWFuYWdlci5oIgorI2ltcG9ydCAiVmlydHVhbEhpZENvbm5lY3Rpb24uaCIK
ICNpbXBvcnQgIlZpcnR1YWxMb2NhbENvbm5lY3Rpb24uaCIKKyNpbXBvcnQgPFdlYkNvcmUvRmlk
b0NvbnN0YW50cy5oPgorI2ltcG9ydCA8V2ViQ29yZS9XZWJBdXRoZW50aWNhdGlvbkNvbnN0YW50
cy5oPgorI2ltcG9ydCA8d3RmL1VuaXF1ZVJlZi5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIGZpZG87Cit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotVmlydHVhbFNlcnZpY2U6OlZpcnR1YWxTZXJ2aWNlKE9i
c2VydmVyJiBvYnNlcnZlciwgY29uc3QgVmVjdG9yPFZpcnR1YWxBdXRoZW50aWNhdG9yQ29uZmln
dXJhdGlvbj4mIGNvbmZpZ3VyYXRpb25zKQotICAgIDogQXV0aGVudGljYXRvclRyYW5zcG9ydFNl
cnZpY2Uob2JzZXJ2ZXIpLCBtX2NvbmZpZ3VyYXRpb25zKGNvbmZpZ3VyYXRpb25zKQorVmlydHVh
bFNlcnZpY2U6OlZpcnR1YWxTZXJ2aWNlKE9ic2VydmVyJiBvYnNlcnZlciwgVmVjdG9yPHN0ZDo6
cGFpcjxTdHJpbmcsIFZpcnR1YWxBdXRoZW50aWNhdG9yQ29uZmlndXJhdGlvbj4+JiBhdXRoZW50
aWNhdG9ycykKKyAgICA6IEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlKG9ic2VydmVyKSwg
bV9hdXRoZW50aWNhdG9ycyhhdXRoZW50aWNhdG9ycykKIHsKIH0KIAotVW5pcXVlUmVmPEF1dGhl
bnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlPiBWaXJ0dWFsU2VydmljZTo6Y3JlYXRlVmlydHVhbChX
ZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0IHRyYW5zcG9ydCwgT2JzZXJ2ZXImIG9ic2Vy
dmVyLCAgY29uc3QgVmVjdG9yPFZpcnR1YWxBdXRoZW50aWNhdG9yQ29uZmlndXJhdGlvbj4mIGNv
bmZpZ3MpCitVbmlxdWVSZWY8QXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2U+IFZpcnR1YWxT
ZXJ2aWNlOjpjcmVhdGVWaXJ0dWFsKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQgdHJh
bnNwb3J0LCBPYnNlcnZlciYgb2JzZXJ2ZXIsIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBWaXJ0
dWFsQXV0aGVudGljYXRvckNvbmZpZ3VyYXRpb24+PiYgYXV0aGVudGljYXRvcnMpCiB7Ci0gICAg
cmV0dXJuIG1ha2VVbmlxdWVSZWY8VmlydHVhbFNlcnZpY2U+KG9ic2VydmVyLCBjb25maWdzKTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxWaXJ0dWFsU2VydmljZT4ob2JzZXJ2ZXIsIGF1dGhl
bnRpY2F0b3JzKTsKK30KKworc3RhdGljIEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2UgYXV0
aGVudGljYXRvckluZm9Gb3JDb25maWcoY29uc3QgVmlydHVhbEF1dGhlbnRpY2F0b3JDb25maWd1
cmF0aW9uJiBjb25maWcpCit7CisgICAgQXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZSBpbmZv
UmVzcG9uc2UoeyBQcm90b2NvbFZlcnNpb246OmtDdGFwIH0sIFZlY3Rvcjx1aW50OF90PihhYWd1
aWRMZW5ndGgsIDB1KSk7CisgICAgQXV0aGVudGljYXRvclN1cHBvcnRlZE9wdGlvbnMgb3B0aW9u
czsKKyAgICBpbmZvUmVzcG9uc2Uuc2V0T3B0aW9ucyhXVEZNb3ZlKG9wdGlvbnMpKTsKKyAgICBy
ZXR1cm4gaW5mb1Jlc3BvbnNlOwogfQogCiB2b2lkIFZpcnR1YWxTZXJ2aWNlOjpzdGFydERpc2Nv
dmVyeUludGVybmFsKCkKIHsKIAotICAgIGZvciAoYXV0byYgY29uZmlnIDogbV9jb25maWd1cmF0
aW9ucykgeworICAgIGZvciAoYXV0byYgYXV0aGVudGljYXRvciA6IG1fYXV0aGVudGljYXRvcnMp
IHsKICAgICAgICAgaWYgKCFvYnNlcnZlcigpKQogICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICBhdXRvIGNvbmZpZyA9IGF1dGhlbnRpY2F0b3Iuc2Vjb25kOworICAgICAgICBhdXRvIGF1dGhl
bnRpY2F0b3JJZCA9IGF1dGhlbnRpY2F0b3IuZmlyc3Q7CiAgICAgICAgIHN3aXRjaCAoY29uZmln
LnRyYW5zcG9ydCkgeworICAgICAgICBjYXNlIFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3Bv
cnQ6OlVzYjoKKyAgICAgICAgICAgIG9ic2VydmVyKCktPmF1dGhlbnRpY2F0b3JBZGRlZChDdGFw
QXV0aGVudGljYXRvcjo6Y3JlYXRlKFdURjo6bWFrZVVuaXF1ZTxDdGFwSGlkRHJpdmVyPihtYWtl
VW5pcXVlUmVmPFZpcnR1YWxIaWRDb25uZWN0aW9uPihhdXRoZW50aWNhdG9ySWQsIGNvbmZpZywg
V2Vha1B0ciB7IHN0YXRpY19jYXN0PFZpcnR1YWxBdXRoZW50aWNhdG9yTWFuYWdlciAqPihvYnNl
cnZlcigpKSB9KSksIGF1dGhlbnRpY2F0b3JJbmZvRm9yQ29uZmlnKGNvbmZpZykpKTsKKyAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3Bv
cnQ6OkludGVybmFsOgogICAgICAgICAgICAgb2JzZXJ2ZXIoKS0+YXV0aGVudGljYXRvckFkZGVk
KExvY2FsQXV0aGVudGljYXRvcjo6Y3JlYXRlKG1ha2VVbmlxdWVSZWY8VmlydHVhbExvY2FsQ29u
bmVjdGlvbj4oY29uZmlnKSkpOwotICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7CiAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IGQyMDdiYTU4MWViZDM1YTg5YTUyZjFmNjQ3ZDkyMjQ5ZDlkYTIxMGQuLjI5MWQ5
OGM4YmM1YzFlODA5MTNiMmUyOTNlMjBhNTYwZjk0MzY1YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA4MSw2ICsxMDgxLDggQEAK
IAkJNTFGQUVDM0ExQjA2NTc2MzAwMDlDNEU3IC8qIEF1eGlsaWFyeVByb2Nlc3NNZXNzYWdlcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGQUVDMzcx
QjA2NTczMTAwMDlDNEU3IC8qIEF1eGlsaWFyeVByb2Nlc3NNZXNzYWdlcy5oICovOyB9OwogCQk1
MUZBRUMzQjFCMDY1NzY4MDAwOUM0RTcgLyogQXV4aWxpYXJ5UHJvY2Vzc01lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUZB
RUMzNjFCMDY1NzMxMDAwOUM0RTcgLyogQXV4aWxpYXJ5UHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5j
cHAgKi87IH07CiAJCTUxRkQxOEI2MTY1MUZCQUQwMERCRTFDRSAvKiBOZXR3b3JrUmVzb3VyY2VM
b2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
RkQxOEI0MTY1MUZCQUQwMERCRTFDRSAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCAqLzsgfTsK
KwkJNTI1MkE1MTkyN0UwNDg3NDAwOTRCRUI5IC8qIFZpcnR1YWxIaWRDb25uZWN0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MjUyQTUxNzI3RTA0
ODc0MDA5NEJFQjkgLyogVmlydHVhbEhpZENvbm5lY3Rpb24uaCAqLzsgfTsKKwkJNTI1MkE1MUEy
N0UwNDg3NDAwOTRCRUI5IC8qIFZpcnR1YWxIaWRDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyNTJBNTE4MjdFMDQ4NzQwMDk0QkVC
OSAvKiBWaXJ0dWFsSGlkQ29ubmVjdGlvbi5jcHAgKi87IH07CiAJCTUyNjg4QUI0MjdEN0NFNDAw
MDM1NzdBMiAvKiBfV0tSZXNpZGVudEtleVJlcXVpcmVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MjY4OEFCMzI3RDdDRTQwMDAzNTc3QTIgLyog
X1dLUmVzaWRlbnRLZXlSZXF1aXJlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTUyNzJENEM5MUU3MzVGMDkwMEVCNDI5MCAvKiBXS1Byb3Rl
Y3Rpb25TcGFjZU5TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MjcyRDRDNzFFNzM1RjA5MDBFQjQyOTAgLyogV0tQcm90ZWN0aW9uU3BhY2VOUy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUyOEMzN0Mx
MTk1Q0JCMUEwMEQ4QjlDQyAvKiBXS0JhY2tGb3J3YXJkTGlzdFByaXZhdGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOUYyODEwMTk1OEY0NzgwMDhD
QUM3MiAvKiBXS0JhY2tGb3J3YXJkTGlzdFByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTA5Myw2ICsxMDk1LDkgQEAKIAkJNTJDREM1
Q0EyNzMxREEwRDAwQTNFM0VCIC8qIFZpcnR1YWxBdXRoZW50aWNhdG9yTWFuYWdlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJDREM1QzMyNzMxREEw
QzAwQTNFM0VCIC8qIFZpcnR1YWxBdXRoZW50aWNhdG9yTWFuYWdlci5oICovOyB9OwogCQk1MkQ1
QTFCMDFDNTc0OTVBMDBERTM0QTMgLyogVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkQ1QTFBQTFDNTc0
OTRFMDBERTM0QTMgLyogVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmggKi87IH07CiAJCTUy
RjA2MEUxMTY1NDMxODUwMEYzMjgxQiAvKiBOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlck1l
c3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MkYwNjBERDE2NTQzMTc1MDBGMzI4MUIgLyogTmV0d29ya0NvbnRlbnRSdWxlTGlz
dE1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OworCQk1MkY0QjQ2OTI3RTExOTc3MDBG
RkQxMjkgLyogVmlydHVhbEF1dGhlbnRpY2F0b3JVdGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJGNEI0NjcyN0UxMTk3NzAwRkZEMTI5IC8qIFZp
cnR1YWxBdXRoZW50aWNhdG9yVXRpbHMuaCAqLzsgfTsKKwkJNTJGNEI0NkEyN0UxMTk3NzAwRkZE
MTI5IC8qIFZpcnR1YWxBdXRoZW50aWNhdG9yVXRpbHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkY0QjQ2ODI3RTExOTc3MDBGRkQxMjkgLyogVmly
dHVhbEF1dGhlbnRpY2F0b3JVdGlscy5tbSAqLzsgfTsKKwkJNTJGNEI0NkQyN0UxMjVBODAwRkZE
MTI5IC8qIFZpcnR1YWxDcmVkZW50aWFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MkY0QjQ2QjI3RTEyNUE4MDBGRkQxMjkgLyogVmlydHVhbENyZWRl
bnRpYWwuaCAqLzsgfTsKIAkJNTMyMTU5NTUxREJBRTcyOTAwNTRBQTNDIC8qIE5ldHdvcmtTZXNz
aW9uQ29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUzMjE1OTUwMURCQUU2RDcwMDU0QUEzQyAvKiBOZXR3b3JrU2Vzc2lvbkNvY29hLmggKi87IH07
CiAJCTUzMjE1OTU2MURCQUU3MkQwMDU0QUEzQyAvKiBOZXR3b3JrRGF0YVRhc2tDb2NvYS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMyMTU5NEYxREJB
RTZENzAwNTRBQTNDIC8qIE5ldHdvcmtEYXRhVGFza0NvY29hLmggKi87IH07CiAJCTUzNUJDQjky
MjA2OUM0OUMwMENDQ0UwMiAvKiBOZXR3b3JrQWN0aXZpdHlUcmFja2VyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzVCQ0I5MDIwNjlDNDlDMDBDQ0NF
MDIgLyogTmV0d29ya0FjdGl2aXR5VHJhY2tlci5oICovOyB9OwpAQCAtNDY0NCw2ICs0NjQ5LDgg
QEAKIAkJNTFGQjA5MDIxNjNBM0IxQzAwRUMzMjRBIC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bi5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IG5hbWUgPSBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW47
IHBhdGggPSBOZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFGRDE4QjMxNjUxRkJBRDAwREJFMUNFIC8qIE5l
dHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBOZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MUZEMThCNDE2NTFGQkFEMDBEQkUxQ0UgLyogTmV0d29ya1Jlc291cmNlTG9hZGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtSZXNvdXJjZUxvYWRlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MjUyQTUxNzI3RTA0ODc0MDA5NEJFQjkg
LyogVmlydHVhbEhpZENvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlydHVhbEhpZENvbm5l
Y3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTI1MkE1MTgyN0UwNDg3NDAw
OTRCRUI5IC8qIFZpcnR1YWxIaWRDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZp
cnR1YWxIaWRDb25uZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTI2
ODhBQjMyN0Q3Q0U0MDAwMzU3N0EyIC8qIF9XS1Jlc2lkZW50S2V5UmVxdWlyZW1lbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gX1dLUmVzaWRlbnRLZXlSZXF1aXJlbWVudC5oOyBwYXRoID0gVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tSZXNpZGVudEtleVJlcXVpcmVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUyNzJENEM3MUU3MzVGMDkwMEVCNDI5MCAvKiBXS1Byb3RlY3Rpb25TcGFj
ZU5TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLUHJvdGVjdGlvblNwYWNl
TlMuaDsgcGF0aCA9IG1hYy9XS1Byb3RlY3Rpb25TcGFjZU5TLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUyNzJENEM4MUU3MzVGMDkwMEVCNDI5MCAvKiBXS1Byb3RlY3Rpb25TcGFj
ZU5TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tQcm90ZWN0
aW9uU3BhY2VOUy5tbTsgcGF0aCA9IG1hYy9XS1Byb3RlY3Rpb25TcGFjZU5TLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDY2Myw2ICs0NjcwLDkgQEAKIAkJNTJFQjY4Q0IyNzlF
MjE0NTAwNUM5OEQ5IC8qIEFSS2l0U29mdExpbmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVJLaXRTb2Z0
TGluay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MkVCNjhDQzI3OUUyMTQ1MDA1
Qzk4RDkgLyogQVJLaXRTb2Z0TGluay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFSS2l0U29m
dExpbmsubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyRjA2MEREMTY1NDMxNzUw
MEYzMjgxQiAvKiBOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlck1lc3NhZ2VSZWNlaXZlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlck1lc3Nh
Z2VSZWNlaXZlci5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQvTmV0d29ya0NvbnRl
bnRSdWxlTGlzdE1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRf
UFJPRFVDVFNfRElSOyB9OworCQk1MkY0QjQ2NzI3RTExOTc3MDBGRkQxMjkgLyogVmlydHVhbEF1
dGhlbnRpY2F0b3JVdGlscy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaXJ0dWFsQXV0aGVudGljYXRvclV0
aWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUyRjRCNDY4MjdFMTE5NzcwMEZG
RDEyOSAvKiBWaXJ0dWFsQXV0aGVudGljYXRvclV0aWxzLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gVmlydHVhbEF1dGhlbnRpY2F0b3JVdGlscy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNTJGNEI0NkIyN0UxMjVBODAwRkZEMTI5IC8qIFZpcnR1YWxDcmVkZW50aWFsLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFZpcnR1YWxDcmVkZW50aWFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUzMTU4NzZCMjA3NkI3MTMwMDRCRjlGMyAvKiBOZXR3b3JrQWN0aXZpdHlUcmFja2Vy
Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBOZXR3b3Jr
QWN0aXZpdHlUcmFja2VyQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUz
MjE1OTRGMURCQUU2RDcwMDU0QUEzQyAvKiBOZXR3b3JrRGF0YVRhc2tDb2NvYS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrRGF0YVRhc2tDb2NvYS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MzIxNTk1MDFEQkFFNkQ3MDA1NEFBM0MgLyogTmV0d29y
a1Nlc3Npb25Db2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3Jr
U2Vzc2lvbkNvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05ODU4LDYgKzk4
NjgsMTEgQEAKIAkJCQk1MkNEQzVCRDI3MzFEQTBDMDBBM0UzRUIgLyogVmlydHVhbEF1dGhlbnRp
Y2F0b3JDb25maWd1cmF0aW9uLmggKi8sCiAJCQkJNTJDREM1QkYyNzMxREEwQzAwQTNFM0VCIC8q
IFZpcnR1YWxBdXRoZW50aWNhdG9yTWFuYWdlci5jcHAgKi8sCiAJCQkJNTJDREM1QzMyNzMxREEw
QzAwQTNFM0VCIC8qIFZpcnR1YWxBdXRoZW50aWNhdG9yTWFuYWdlci5oICovLAorCQkJCTUyRjRC
NDY3MjdFMTE5NzcwMEZGRDEyOSAvKiBWaXJ0dWFsQXV0aGVudGljYXRvclV0aWxzLmggKi8sCisJ
CQkJNTJGNEI0NjgyN0UxMTk3NzAwRkZEMTI5IC8qIFZpcnR1YWxBdXRoZW50aWNhdG9yVXRpbHMu
bW0gKi8sCisJCQkJNTJGNEI0NkIyN0UxMjVBODAwRkZEMTI5IC8qIFZpcnR1YWxDcmVkZW50aWFs
LmggKi8sCisJCQkJNTI1MkE1MTgyN0UwNDg3NDAwOTRCRUI5IC8qIFZpcnR1YWxIaWRDb25uZWN0
aW9uLmNwcCAqLywKKwkJCQk1MjUyQTUxNzI3RTA0ODc0MDA5NEJFQjkgLyogVmlydHVhbEhpZENv
bm5lY3Rpb24uaCAqLywKIAkJCQk1MkNEQzVDMDI3MzFEQTBDMDBBM0UzRUIgLyogVmlydHVhbExv
Y2FsQ29ubmVjdGlvbi5oICovLAogCQkJCTUyQ0RDNUMyMjczMURBMEMwMEEzRTNFQiAvKiBWaXJ0
dWFsTG9jYWxDb25uZWN0aW9uLm1tICovLAogCQkJCTUyQ0RDNUMxMjczMURBMEMwMEEzRTNFQiAv
KiBWaXJ0dWFsU2VydmljZS5oICovLApAQCAtMTM2NTYsNiArMTM2NzEsOSBAQAogCQkJCTI2ODQw
NTUzMThCODZFRDYwMDIyQzM4QiAvKiBWaWV3VXBkYXRlRGlzcGF0Y2hlck1lc3NhZ2VzLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1MkNEQzVDNDI3MzFEQTBEMDBBM0UzRUIgLyogVmlydHVhbEF1dGhl
bnRpY2F0b3JDb25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MkNEQzVDQTI3MzFE
QTBEMDBBM0UzRUIgLyogVmlydHVhbEF1dGhlbnRpY2F0b3JNYW5hZ2VyLmggaW4gSGVhZGVycyAq
LywKKwkJCQk1MkY0QjQ2OTI3RTExOTc3MDBGRkQxMjkgLyogVmlydHVhbEF1dGhlbnRpY2F0b3JV
dGlscy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTJGNEI0NkQyN0UxMjVBODAwRkZEMTI5IC8qIFZp
cnR1YWxDcmVkZW50aWFsLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MjUyQTUxOTI3RTA0ODc0MDA5
NEJFQjkgLyogVmlydHVhbEhpZENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTUyQ0RD
NUM3MjczMURBMEQwMEEzRTNFQiAvKiBWaXJ0dWFsTG9jYWxDb25uZWN0aW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MkNEQzVDODI3MzFEQTBEMDBBM0UzRUIgLyogVmlydHVhbFNlcnZpY2UuaCBp
biBIZWFkZXJzICovLAogCQkJCTI2ODQwNTQ0MThCODVBNjMwMDIyQzM4QiAvKiBWaXNpYmxlQ29u
dGVudFJlY3RVcGRhdGVJbmZvLmggaW4gSGVhZGVycyAqLywKQEAgLTE2MTUyLDYgKzE2MTcwLDgg
QEAKIAkJCQkyRDgxOUJBMTE4NjI4MDBFMDAxRjAzRDEgLyogVmlld0dlc3R1cmVHZW9tZXRyeUNv
bGxlY3Rvck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyNjg0MDU1MjE4
Qjg2RUQ2MDAyMkMzOEIgLyogVmlld1VwZGF0ZURpc3BhdGNoZXJNZXNzYWdlUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTJDREM1QzYyNzMxREEwRDAwQTNFM0VCIC8qIFZpcnR1YWxB
dXRoZW50aWNhdG9yTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MkY0QjQ2QTI3RTEx
OTc3MDBGRkQxMjkgLyogVmlydHVhbEF1dGhlbnRpY2F0b3JVdGlscy5tbSBpbiBTb3VyY2VzICov
LAorCQkJCTUyNTJBNTFBMjdFMDQ4NzQwMDk0QkVCOSAvKiBWaXJ0dWFsSGlkQ29ubmVjdGlvbi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk1MkNEQzVDOTI3MzFEQTBEMDBBM0UzRUIgLyogVmlydHVh
bExvY2FsQ29ubmVjdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUyQ0RDNUM1MjczMURBMEQw
MEEzRTNFQiAvKiBWaXJ0dWFsU2VydmljZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBNjAyMjRD
MThDMTZCOUYwMEMzRThDOSAvKiBWaXNpdGVkTGlua1N0b3JlTWVzc2FnZVJlY2VpdmVyLmNwcCBp
biBTb3VyY2VzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454915</attachid>
            <date>2022-03-16 17:16:12 -0700</date>
            <delta_ts>2022-03-17 09:56:46 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-237984-20220316171612.patch</filename>
            <type>text/plain</type>
            <size>56388</size>
            <attacher name="pascoe@apple.com">pascoe</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxMzU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDE4Nzk4MjU1Nzc0Yzc5
NzQzMzA4NDBkYWI3NGFmODc2MWEyYTQ2Mi4uNDc2MjI2ZTE5ZDZiNDFhOTJmMDJhNzI2Mzg2YmJh
OGNlOGIyNDM3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIyLTAzLTE2ICBKIFBh
c2NvZSAgPGpfcGFzY29lQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIFN1cHBvcnQg
bWFrZUNyZWRlbnRpYWwgZm9yIHZpcnR1YWwgSElEIGF1dGhlbnRpY2F0b3JzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzc5ODQKKyAgICAgICAgcmRh
cjovL3Byb2JsZW0vOTAzOTM2NzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBWaXJ0dWFsIGF1dGhlbnRpY2F0b3JzIGZvciBXZWJBdXRobiBzdXBwb3J0
cyBkaWZmZXJlbnQgdHJhbnNwb3J0czogbmZjLHVzYixpbnRlcm5hbCxibGUuCisgICAgICAgIEN1
cnJlbnRseSwgd2Ugc3VwcG9ydCB0aGUgaW50ZXJuYWwgdHJhbnNwb3J0LCBidXQgdGhlIGRlZmF1
bHQgdHJhbnNwb3J0IHVzZWQgaW4gd2ViIHBsYXRmb3JtCisgICAgICAgIHRlc3RzIGlzIHVzYi4g
VGhpcyBwYXRjaCBpbXBsZW1lbnRzIG1ha2VDcmVkZW50aWFsIGZvciBoaWQtYmFzZWQgdmlydHVh
bCBhdXRoZW50aWNhdG9ycy4gVmlydHVhbAorICAgICAgICBjcmVkZW50aWFsIGluZm9ybWF0aW9u
IGlzIHN0b3JlZCBpbiB0aGUgVmlydHVhbENyZWRlbnRpYWwgc3RydWN0IGFzIHN1Z2dlc3RlZCBi
eSB0aGUgc3BlYy4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vV2ViQXV0aGVudGljYXRp
b25VdGlscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpidWlsZEF0dGVzdGF0aW9uTWFwKToKKyAg
ICAgICAgKFdlYkNvcmU6OmJ1aWxkQXR0ZXN0YXRpb25PYmplY3QpOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViYXV0aG4vV2ViQXV0aGVudGljYXRpb25VdGlscy5oOgorICAgICAgICAqIE1vZHVsZXMv
d2ViYXV0aG4vZmlkby9GaWRvQ29uc3RhbnRzLmg6CisKIDIwMjItMDMtMTYgIFBoaWxpcHBlIE5v
cm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIE1pZ3JhdGUgdXNlIG9mIE1l
ZGlhU2FtcGxlR1N0cmVhbWVyIHRvIFZpZGVvRnJhbWUgaW4gV2ViUlRDIHBpcGVsaW5lcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCBlNjE3ODkzZDBjMzk1YjU1NGMxYzkwMGQ5NTcyNjJiMGJlNzc5ODg2Li4xMWYxMTMw
ZmQ2ZmQ3OWJhMjYwODUwOWZjNmJjNTE2NmViMDAzMmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDUy
IEBACisyMDIyLTAzLTE2ICBKIFBhc2NvZSAgPGpfcGFzY29lQGFwcGxlLmNvbT4KKworICAgICAg
ICBbV2ViQXV0aG5dIFN1cHBvcnQgbWFrZUNyZWRlbnRpYWwgZm9yIHZpcnR1YWwgSElEIGF1dGhl
bnRpY2F0b3JzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzc5ODQKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vOTAzOTM2NzYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBWaXJ0dWFsIGF1dGhlbnRpY2F0b3Jz
IGZvciBXZWJBdXRobiBzdXBwb3J0cyBkaWZmZXJlbnQgdHJhbnNwb3J0czogbmZjLHVzYixpbnRl
cm5hbCxibGUuCisgICAgICAgIEN1cnJlbnRseSwgd2Ugc3VwcG9ydCB0aGUgaW50ZXJuYWwgdHJh
bnNwb3J0LCBidXQgdGhlIGRlZmF1bHQgdHJhbnNwb3J0IHVzZWQgaW4gd2ViIHBsYXRmb3JtCisg
ICAgICAgIHRlc3RzIGlzIHVzYi4gVGhpcyBwYXRjaCBpbXBsZW1lbnRzIG1ha2VDcmVkZW50aWFs
IGZvciBoaWQtYmFzZWQgdmlydHVhbCBhdXRoZW50aWNhdG9ycy4gVmlydHVhbAorICAgICAgICBj
cmVkZW50aWFsIGluZm9ybWF0aW9uIGlzIHN0b3JlZCBpbiB0aGUgVmlydHVhbENyZWRlbnRpYWwg
c3RydWN0IGFzIHN1Z2dlc3RlZCBieSB0aGUgc3BlYy4KKworICAgICAgICBUZXN0ZWQgbWFudWFs
bHkgdmlhIGNyZWF0aW5nIHZpcnR1YWwgYXV0aGVudGljYXRvciBhbmQgcGVyZm9ybWluZyBjcmVh
dGUgYW5kIHZpYSB3cHQgdGVzdHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vTW9jay9Nb2NrSGlkQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tI
aWRDb25uZWN0aW9uOjpwYXJzZVJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpNb2NrSGlkQ29u
bmVjdGlvbjo6ZmVlZFJlcG9ydHMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9WaXJ0dWFsL1ZpcnR1YWxBdXRoZW50aWNhdG9yTWFuYWdlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlZpcnR1YWxBdXRoZW50aWNhdG9yTWFuYWdlcjo6Y3JlYXRlQXV0aGVudGljYXRvcik6
CisgICAgICAgIChXZWJLaXQ6OlZpcnR1YWxBdXRoZW50aWNhdG9yTWFuYWdlcjo6YWRkQ3JlZGVu
dGlhbCk6CisgICAgICAgIChXZWJLaXQ6OlZpcnR1YWxBdXRoZW50aWNhdG9yTWFuYWdlcjo6Y3Jl
YXRlU2VydmljZSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L1ZpcnR1YWwvVmlydHVhbEF1dGhlbnRpY2F0b3JNYW5hZ2VyLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVhbEF1dGhlbnRpY2F0b3JVdGlscy5o
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9W
aXJ0dWFsL1ZpcnR1YWxTZXJ2aWNlLmguCisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL1ZpcnR1YWwvVmlydHVhbEF1dGhlbnRpY2F0b3JVdGlscy5tbTogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQ6OmZsYWdzRm9yQ29uZmlnKToKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRlUHJp
dmF0ZUtleSk6CisgICAgICAgIChXZWJLaXQ6OmNyZWRlbnRpYWxJZEFuZENvc2VQdWJLZXlGb3JQ
cml2YXRlS2V5KToKKyAgICAgICAgKFdlYktpdDo6YmFzZTY0UHJpdmF0ZUtleSk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVhbENyZWRlbnRpYWwu
aDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
VmlydHVhbC9WaXJ0dWFsU2VydmljZS5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9WaXJ0dWFsL1ZpcnR1YWxIaWRDb25uZWN0aW9uLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OlZpcnR1YWxIaWRDb25uZWN0aW9uOjpWaXJ0dWFsSGlkQ29ubmVjdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OlZpcnR1YWxIaWRDb25uZWN0aW9uOjppbml0aWFsaXplKToKKyAgICAg
ICAgKFdlYktpdDo6VmlydHVhbEhpZENvbm5lY3Rpb246OnRlcm1pbmF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlZpcnR1YWxIaWRDb25uZWN0aW9uOjpzZW5kU3luYyk6CisgICAgICAgIChXZWJLaXQ6
OlZpcnR1YWxIaWRDb25uZWN0aW9uOjpzZW5kKToKKyAgICAgICAgKFdlYktpdDo6VmlydHVhbEhp
ZENvbm5lY3Rpb246OmFzc2VtYmxlUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlZpcnR1YWxI
aWRDb25uZWN0aW9uOjpyZWNlaXZlSGlkTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlZpcnR1
YWxIaWRDb25uZWN0aW9uOjpyZWNpZXZlUmVzcG9uc2VDb2RlKToKKyAgICAgICAgKFdlYktpdDo6
VmlydHVhbEhpZENvbm5lY3Rpb246OnBhcnNlUmVxdWVzdCk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVhbEhpZENvbm5lY3Rpb24uaDogQ29waWVk
IGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vVmlydHVhbC9W
aXJ0dWFsQXV0aGVudGljYXRvck1hbmFnZXIuaC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vVmlydHVhbC9WaXJ0dWFsU2VydmljZS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9WaXJ0dWFsL1ZpcnR1YWxTZXJ2aWNlLm1tOgorICAgICAgICAo
V2ViS2l0OjpWaXJ0dWFsU2VydmljZTo6VmlydHVhbFNlcnZpY2UpOgorICAgICAgICAoV2ViS2l0
OjpWaXJ0dWFsU2VydmljZTo6Y3JlYXRlVmlydHVhbCk6CisgICAgICAgIChXZWJLaXQ6OmF1dGhl
bnRpY2F0b3JJbmZvRm9yQ29uZmlnKToKKyAgICAgICAgKFdlYktpdDo6VmlydHVhbFNlcnZpY2U6
OnN0YXJ0RGlzY292ZXJ5SW50ZXJuYWwpOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorCiAyMDIyLTAzLTE2ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFw
cGxlLmNvbT4KIAogICAgICAgICBJbmNvcnJlY3QgaGVhZGVyIG5hbWUgdXNlZCBpbiBfX2hhc19p
bmNsdWRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1dlYkF1
dGhlbnRpY2F0aW9uQ29uc3RhbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhu
L1dlYkF1dGhlbnRpY2F0aW9uQ29uc3RhbnRzLmgKaW5kZXggNjBmZDgxYmM4NzMzOWVhODQwYTA3
OGZjNDM0ZDUyNDFjNmM1ZTEyOC4uY2M0MDZhYTU4ODcxYTllYWZmNzdlNTQxOWUwMTgwZTU1NTk3
ZmMxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9XZWJBdXRo
ZW50aWNhdGlvbkNvbnN0YW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0
aG4vV2ViQXV0aGVudGljYXRpb25Db25zdGFudHMuaApAQCAtMTAwLDQgKzEwMCw5IEBAIGVudW0g
Y2xhc3MgU2NvcGUgewogICAgIFNhbWVTaXRlCiB9OwogCisvLyBodHRwczovL3d3dy53My5vcmcv
VFIvd2ViYXV0aG4tMi8jYXV0aGVudGljYXRvci1kYXRhCitjb25zdGV4cHIgdWludDhfdCB1c2Vy
UHJlc2VuY2VGbGFnID0gMGIwMDAwMDAwMTsKK2NvbnN0ZXhwciB1aW50OF90IHVzZXJWZXJpZmll
ZEZsYWcgPSAwYjAwMDAwMTAwOworY29uc3RleHByIHVpbnQ4X3QgYXR0ZXN0ZWRDcmVkZW50aWFs
RGF0YUluY2x1ZGVkRmxhZyA9IDBiMDEwMDAwMDA7CisKIH0gLy8gbmFtZXNwYWNlIFdlYkF1dGhu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1dlYkF1dGhlbnRp
Y2F0aW9uVXRpbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9XZWJBdXRo
ZW50aWNhdGlvblV0aWxzLmNwcAppbmRleCA4ZDQ3M2NhMjU5ZjJjNmJjMGY1YjVhMjZiMGMyZDJh
ODQwY2RmNWZlLi5lZDkzNDY4NjZhN2VmM2MxM2VmY2U0NTY1ZjM5OTFjZTI5NTEwYTAwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1dlYkF1dGhlbnRpY2F0aW9u
VXRpbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vV2ViQXV0aGVu
dGljYXRpb25VdGlscy5jcHAKQEAgLTExMCw3ICsxMTAsNyBAQCBWZWN0b3I8dWludDhfdD4gYnVp
bGRBdXRoRGF0YShjb25zdCBTdHJpbmcmIHJwSWQsIGNvbnN0IHVpbnQ4X3QgZmxhZ3MsIGNvbnN0
IHVpbgogICAgIHJldHVybiBhdXRoRGF0YTsKIH0KIAotVmVjdG9yPHVpbnQ4X3Q+IGJ1aWxkQXR0
ZXN0YXRpb25PYmplY3QoVmVjdG9yPHVpbnQ4X3Q+JiYgYXV0aERhdGEsIFN0cmluZyYmIGZvcm1h
dCwgY2Jvcjo6Q0JPUlZhbHVlOjpNYXBWYWx1ZSYmIHN0YXRlbWVudE1hcCwgY29uc3QgQXR0ZXN0
YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZSYgYXR0ZXN0YXRpb24pCitjYm9yOjpDQk9SVmFsdWU6
Ok1hcFZhbHVlIGJ1aWxkQXR0ZXN0YXRpb25NYXAoVmVjdG9yPHVpbnQ4X3Q+JiYgYXV0aERhdGEs
IFN0cmluZyYmIGZvcm1hdCwgY2Jvcjo6Q0JPUlZhbHVlOjpNYXBWYWx1ZSYmIHN0YXRlbWVudE1h
cCwgY29uc3QgQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZSYgYXR0ZXN0YXRpb24pCiB7
CiAgICAgY2Jvcjo6Q0JPUlZhbHVlOjpNYXBWYWx1ZSBhdHRlc3RhdGlvbk9iamVjdE1hcDsKICAg
ICAvLyBUaGUgZm9sbG93aW5nIGltcGxlbWVudHMgU3RlcCAyMCB3aXRoIHJlZ2FyZCB0byBBdHRl
c3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlCkBAIC0xMjcsNiArMTI3LDEyIEBAIFZlY3Rvcjx1
aW50OF90PiBidWlsZEF0dGVzdGF0aW9uT2JqZWN0KFZlY3Rvcjx1aW50OF90PiYmIGF1dGhEYXRh
LCBTdHJpbmcmJiBmb3JtCiAgICAgYXR0ZXN0YXRpb25PYmplY3RNYXBbY2Jvcjo6Q0JPUlZhbHVl
KCJhdXRoRGF0YSIpXSA9IGNib3I6OkNCT1JWYWx1ZShXVEZNb3ZlKGF1dGhEYXRhKSk7CiAgICAg
YXR0ZXN0YXRpb25PYmplY3RNYXBbY2Jvcjo6Q0JPUlZhbHVlKCJmbXQiKV0gPSBjYm9yOjpDQk9S
VmFsdWUoV1RGTW92ZShmb3JtYXQpKTsKICAgICBhdHRlc3RhdGlvbk9iamVjdE1hcFtjYm9yOjpD
Qk9SVmFsdWUoImF0dFN0bXQiKV0gPSBjYm9yOjpDQk9SVmFsdWUoV1RGTW92ZShzdGF0ZW1lbnRN
YXApKTsKKyAgICByZXR1cm4gYXR0ZXN0YXRpb25PYmplY3RNYXA7Cit9CisKK1ZlY3Rvcjx1aW50
OF90PiBidWlsZEF0dGVzdGF0aW9uT2JqZWN0KFZlY3Rvcjx1aW50OF90PiYmIGF1dGhEYXRhLCBT
dHJpbmcmJiBmb3JtYXQsIGNib3I6OkNCT1JWYWx1ZTo6TWFwVmFsdWUmJiBzdGF0ZW1lbnRNYXAs
IGNvbnN0IEF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2UmIGF0dGVzdGF0aW9uKQorewor
ICAgIGNib3I6OkNCT1JWYWx1ZTo6TWFwVmFsdWUgYXR0ZXN0YXRpb25PYmplY3RNYXAgPSBidWls
ZEF0dGVzdGF0aW9uTWFwKFdURk1vdmUoYXV0aERhdGEpLCBXVEZNb3ZlKGZvcm1hdCksIFdURk1v
dmUoc3RhdGVtZW50TWFwKSwgYXR0ZXN0YXRpb24pOwogCiAgICAgYXV0byBhdHRlc3RhdGlvbk9i
amVjdCA9IGNib3I6OkNCT1JXcml0ZXI6OndyaXRlKGNib3I6OkNCT1JWYWx1ZShXVEZNb3ZlKGF0
dGVzdGF0aW9uT2JqZWN0TWFwKSkpOwogICAgIEFTU0VSVChhdHRlc3RhdGlvbk9iamVjdCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1dlYkF1dGhlbnRpY2F0
aW9uVXRpbHMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vV2ViQXV0aGVudGlj
YXRpb25VdGlscy5oCmluZGV4IGE2NDI1NDRkNGE2NTg2OGJiNGRhOTczMmRhZTAyOGNkZmM1NThj
MGIuLjMzMjE1N2U1MjEzMDMwODdlNWE3MzRlNDdmYmU3Zjg5OGQwYjA4NWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vV2ViQXV0aGVudGljYXRpb25VdGlscy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vV2ViQXV0aGVudGljYXRpb25V
dGlscy5oCkBAIC00OSw2ICs0OSw4IEBAIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBi
dWlsZEF0dGVzdGVkQ3JlZGVudGlhbERhdGEoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+CiAvLyBodHRw
czovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4vI3NlYy1hdXRoZW50aWNhdG9yLWRhdGEKIFdFQkNP
UkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBidWlsZEF1dGhEYXRhKGNvbnN0IFN0cmluZyYgcnBJ
ZCwgY29uc3QgdWludDhfdCBmbGFncywgY29uc3QgdWludDMyX3QgY291bnRlciwgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBvcHRpb25hbEF0dGVzdGVkQ3JlZGVudGlhbERhdGEpOwogCitXRUJDT1JF
X0VYUE9SVCBjYm9yOjpDQk9SVmFsdWU6Ok1hcFZhbHVlIGJ1aWxkQXR0ZXN0YXRpb25NYXAoVmVj
dG9yPHVpbnQ4X3Q+JiYsIFN0cmluZyYmLCBjYm9yOjpDQk9SVmFsdWU6Ok1hcFZhbHVlJiYsIGNv
bnN0IEF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2UmKTsKKwogLy8gaHR0cHM6Ly93d3cu
dzMub3JnL1RSL3dlYmF1dGhuLyNhdHRlc3RhdGlvbi1vYmplY3QKIFdFQkNPUkVfRVhQT1JUIFZl
Y3Rvcjx1aW50OF90PiBidWlsZEF0dGVzdGF0aW9uT2JqZWN0KFZlY3Rvcjx1aW50OF90PiYmIGF1
dGhEYXRhLCBTdHJpbmcmJiBmb3JtYXQsIGNib3I6OkNCT1JWYWx1ZTo6TWFwVmFsdWUmJiBzdGF0
ZW1lbnRNYXAsIGNvbnN0IEF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2UmKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9Db25zdGFu
dHMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvQ29uc3RhbnRz
LmgKaW5kZXggZWYxZTE1ZGRjMDQ2NmZhZTgyOTYxODE5NDYxMDRlMTg4MDgwNDdiYS4uZGM3NzEx
YjYzYWQ2MzVlMjgyYWQyN2E5Y2I2Y2IyMTU2ZjY2NzQ3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9Db25zdGFudHMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0NvbnN0YW50cy5oCkBAIC0yNTUsNiAr
MjU1LDE5IEBAIGNvbnN0IHVpbnQ4X3Qga0N0YXBOZmNBcHBsZXRTZWxlY3Rpb25DdGFwW10gPSB7
CiBjb25zdCB1aW50OF90IGtDdGFwTmZjQXBkdUNsYSA9IDB4ODA7CiBjb25zdCB1aW50OF90IGtD
dGFwTmZjQXBkdUlucyA9IDB4MTA7CiAKKy8vIGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9zcGVj
cy9maWRvLXYyLjAtcHMtMjAxNzA5MjcvZmlkby1jbGllbnQtdG8tYXV0aGVudGljYXRvci1wcm90
b2NvbC12Mi4wLXBzLTIwMTcwOTI3Lmh0bWwjbWFuZGF0b3J5LWNvbW1hbmRzCitjb25zdCBzaXpl
X3Qga0N0YXBDaGFubmVsSWRTaXplID0gNDsKK2NvbnN0IHVpbnQ4X3Qga0N0YXBLZWVwQWxpdmVT
dGF0dXNQcm9jZXNzaW5nID0gMTsKKy8vIGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9zcGVjcy9m
aWRvLXYyLjAtcHMtMjAxNzA5MjcvZmlkby1jbGllbnQtdG8tYXV0aGVudGljYXRvci1wcm90b2Nv
bC12Mi4wLXBzLTIwMTcwOTI3Lmh0bWwjY29tbWFuZHMKK2NvbnN0IGludDY0X3Qga0N0YXBNYWtl
Q3JlZGVudGlhbENsaWVudERhdGFIYXNoS2V5ID0gMTsKK2NvbnN0IGludDY0X3Qga0N0YXBNYWtl
Q3JlZGVudGlhbFJwS2V5ID0gMjsKK2NvbnN0IGludDY0X3Qga0N0YXBNYWtlQ3JlZGVudGlhbFVz
ZXJLZXkgPSAzOworY29uc3QgaW50NjRfdCBrQ3RhcE1ha2VDcmVkZW50aWFsUHViS2V5Q3JlZFBh
cmFtc0tleSA9IDQ7Citjb25zdCBpbnQ2NF90IGtDdGFwTWFrZUNyZWRlbnRpYWxFeGNsdWRlTGlz
dEtleSA9IDU7Citjb25zdCBpbnQ2NF90IGtDdGFwTWFrZUNyZWRlbnRpYWxFeHRlbnNpb25zS2V5
ID0gNjsKK2NvbnN0IGludDY0X3Qga0N0YXBNYWtlQ3JlZGVudGlhbFJlcXVlc3RPcHRpb25zS2V5
ID0gNzsKK2NvbnN0IGludDY0X3Qga0N0YXBHZXRBc3NlcnRpb25SZXF1ZXN0T3B0aW9uc0tleSA9
IDU7CisKIH0gLy8gbmFtZXNwYWNlIGZpZG8KIAogI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9D
b2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0KaW5kZXggZjdiOWY3NGU5
NTQ4OWE3NmQ1NzI5OGM0ZDAzNDQ2MDA2MTU0YWZjMS4uYmVlNmI5MjM4MmNhYWYzYjRmOWYwZTdj
ZTgyYzAxYTc2NzMzMjgyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRv
ci5tbQpAQCAtNjUsMTUgKzY1LDE2IEBAIHN0YXRpYyBpbmxpbmUgU3RyaW5nIGdyb3VwRm9yQXR0
cmlidXRlcyhOU0RpY3Rpb25hcnkgKmF0dHJpYnV0ZXMpCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVz
aW5nIG5hbWVzcGFjZSBmaWRvOwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBuYW1l
c3BhY2UgV2ViQXV0aG47CiB1c2luZyBDQk9SID0gY2Jvcjo6Q0JPUlZhbHVlOwogCiBuYW1lc3Bh
Y2UgTG9jYWxBdXRoZW50aWNhdG9ySW50ZXJuYWwgewogCiAvLyBTZWUgaHR0cHM6Ly93d3cudzMu
b3JnL1RSL3dlYmF1dGhuLyNmbGFncy4KLWNvbnN0IHVpbnQ4X3QgbWFrZUNyZWRlbnRpYWxGbGFn
cyA9IDBiMDEwMDAxMDE7IC8vIFVQLCBVViBhbmQgQVQgYXJlIHNldC4KLWNvbnN0IHVpbnQ4X3Qg
b3RoZXJNYWtlQ3JlZGVudGlhbEZsYWdzID0gMGIwMTAwMDAwMTsgLy8gVVAgYW5kIEFUIGFyZSBz
ZXQuCi1jb25zdCB1aW50OF90IGdldEFzc2VydGlvbkZsYWdzID0gMGIwMDAwMDEwMTsgLy8gVVAg
YW5kIFVWIGFyZSBzZXQuCi1jb25zdCB1aW50OF90IG90aGVyR2V0QXNzZXJ0aW9uRmxhZ3MgPSAw
YjAwMDAwMDAxOyAvLyBVUCBpcyBzZXQuCitjb25zdCB1aW50OF90IG1ha2VDcmVkZW50aWFsRmxh
Z3MgPSB1c2VyUHJlc2VuY2VGbGFnIHwgdXNlclZlcmlmaWVkRmxhZyB8IGF0dGVzdGVkQ3JlZGVu
dGlhbERhdGFJbmNsdWRlZEZsYWc7IC8vIFVQLCBVViBhbmQgQVQgYXJlIHNldC4KK2NvbnN0IHVp
bnQ4X3Qgb3RoZXJNYWtlQ3JlZGVudGlhbEZsYWdzID0gdXNlclByZXNlbmNlRmxhZyB8IGF0dGVz
dGVkQ3JlZGVudGlhbERhdGFJbmNsdWRlZEZsYWc7IC8vIFVQIGFuZCBBVCBhcmUgc2V0LgorY29u
c3QgdWludDhfdCBnZXRBc3NlcnRpb25GbGFncyA9IHVzZXJQcmVzZW5jZUZsYWcgfCB1c2VyVmVy
aWZpZWRGbGFnOyAvLyBVUCBhbmQgVVYgYXJlIHNldC4KK2NvbnN0IHVpbnQ4X3Qgb3RoZXJHZXRB
c3NlcnRpb25GbGFncyA9IHVzZXJQcmVzZW5jZUZsYWc7IC8vIFVQIGlzIHNldC4KIC8vIENyZWRl
bnRpYWwgSUQgaXMgY3VycmVudGx5IFNIQS0xIG9mIHRoZSBjb3JyZXNwb25kaW5nIHB1YmxpYyBr
ZXkuCiBjb25zdCB1aW50MTZfdCBjcmVkZW50aWFsSWRMZW5ndGggPSAyMDsKIGNvbnN0IHVpbnQ2
NF90IGNvdW50ZXIgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRDb25uZWN0aW9uLmNwcApp
bmRleCA4NTVmZGUzNDcwZmI3ODQ4NWIwYWU1OWUwOWM4NjQyMWQwMGMxMTU2Li45ZmRkYjIyMzM3
OTY5NjY5NjJlYzk3MWRiMjRmMDg4NjlkMWUxMTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRDb25uZWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tI
aWRDb25uZWN0aW9uLmNwcApAQCAtNDQsMTUgKzQ0LDYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiB1c2luZyBuYW1lc3BhY2UgY2JvcjsKIHVzaW5nIG5hbWVzcGFjZSBmaWRvOwogCi1uYW1l
c3BhY2UgTW9ja0hpZENvbm5lY3Rpb25JbnRlcm5hbCB7Ci0vLyBodHRwczovL2ZpZG9hbGxpYW5j
ZS5vcmcvc3BlY3MvZmlkby12Mi4wLXBzLTIwMTcwOTI3L2ZpZG8tY2xpZW50LXRvLWF1dGhlbnRp
Y2F0b3ItcHJvdG9jb2wtdjIuMC1wcy0yMDE3MDkyNy5odG1sI21hbmRhdG9yeS1jb21tYW5kcwot
Y29uc3Qgc2l6ZV90IEN0YXBDaGFubmVsSWRTaXplID0gNDsKLWNvbnN0IHVpbnQ4X3QgQ3RhcEtl
ZXBBbGl2ZVN0YXR1c1Byb2Nlc3NpbmcgPSAxOwotLy8gaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3Jn
L3NwZWNzL2ZpZG8tdjIuMC1wcy0yMDE3MDkyNy9maWRvLWNsaWVudC10by1hdXRoZW50aWNhdG9y
LXByb3RvY29sLXYyLjAtcHMtMjAxNzA5MjcuaHRtbCNjb21tYW5kcwotY29uc3QgaW50NjRfdCBD
dGFwTWFrZUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9uc0tleSA9IDc7Ci1jb25zdCBpbnQ2NF90IEN0
YXBHZXRBc3NlcnRpb25SZXF1ZXN0T3B0aW9uc0tleSA9IDU7Ci19Ci0KIE1vY2tIaWRDb25uZWN0
aW9uOjpNb2NrSGlkQ29ubmVjdGlvbihJT0hJRERldmljZVJlZiBkZXZpY2UsIGNvbnN0IE1vY2tX
ZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCiAgICAgOiBIaWRD
b25uZWN0aW9uKGRldmljZSkKICAgICAsIG1fY29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKQpA
QCAtMTMwLDggKzEyMSw2IEBAIHZvaWQgTW9ja0hpZENvbm5lY3Rpb246OmFzc2VtYmxlUmVxdWVz
dChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogCiB2b2lkIE1vY2tIaWRDb25uZWN0aW9uOjpwYXJz
ZVJlcXVlc3QoKQogewotICAgIHVzaW5nIG5hbWVzcGFjZSBNb2NrSGlkQ29ubmVjdGlvbkludGVy
bmFsOwotCiAgICAgQVNTRVJUKG1fcmVxdWVzdE1lc3NhZ2UpOwogICAgIC8vIFNldCBzdGFnZXMu
CiAgICAgaWYgKG1fcmVxdWVzdE1lc3NhZ2UtPmNtZCgpID09IEZpZG9IaWREZXZpY2VDb21tYW5k
OjprSW5pdCkgewpAQCAtMTYyLDcgKzE1MSw3IEBAIHZvaWQgTW9ja0hpZENvbm5lY3Rpb246OnBh
cnNlUmVxdWVzdCgpCiAgICAgICAgICAgICBBU1NFUlQocmVxdWVzdE1hcCB8fCBjbWQgPT0gQ3Rh
cFJlcXVlc3RDb21tYW5kOjprQXV0aGVudGljYXRvckdldE5leHRBc3NlcnRpb24pOwogCiAgICAg
ICAgICAgICBpZiAoY21kID09IEN0YXBSZXF1ZXN0Q29tbWFuZDo6a0F1dGhlbnRpY2F0b3JNYWtl
Q3JlZGVudGlhbCkgewotICAgICAgICAgICAgICAgIGF1dG8gaXQgPSByZXF1ZXN0TWFwLT5nZXRN
YXAoKS5maW5kKENCT1JWYWx1ZShDdGFwTWFrZUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9uc0tleSkp
OyAvLyBGaW5kIG9wdGlvbnMuCisgICAgICAgICAgICAgICAgYXV0byBpdCA9IHJlcXVlc3RNYXAt
PmdldE1hcCgpLmZpbmQoQ0JPUlZhbHVlKGtDdGFwTWFrZUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9u
c0tleSkpOyAvLyBGaW5kIG9wdGlvbnMuCiAgICAgICAgICAgICAgICAgaWYgKGl0ICE9IHJlcXVl
c3RNYXAtPmdldE1hcCgpLmVuZCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8mIG9wdGlv
bk1hcCA9IGl0LT5zZWNvbmQuZ2V0TWFwKCk7CiAKQEAgLTE3Nyw3ICsxNjYsNyBAQCB2b2lkIE1v
Y2tIaWRDb25uZWN0aW9uOjpwYXJzZVJlcXVlc3QoKQogICAgICAgICAgICAgfQogCiAgICAgICAg
ICAgICBpZiAoY21kID09IEN0YXBSZXF1ZXN0Q29tbWFuZDo6a0F1dGhlbnRpY2F0b3JHZXRBc3Nl
cnRpb24pIHsKLSAgICAgICAgICAgICAgICBhdXRvIGl0ID0gcmVxdWVzdE1hcC0+Z2V0TWFwKCku
ZmluZChDQk9SVmFsdWUoQ3RhcEdldEFzc2VydGlvblJlcXVlc3RPcHRpb25zS2V5KSk7IC8vIEZp
bmQgb3B0aW9ucy4KKyAgICAgICAgICAgICAgICBhdXRvIGl0ID0gcmVxdWVzdE1hcC0+Z2V0TWFw
KCkuZmluZChDQk9SVmFsdWUoa0N0YXBHZXRBc3NlcnRpb25SZXF1ZXN0T3B0aW9uc0tleSkpOyAv
LyBGaW5kIG9wdGlvbnMuCiAgICAgICAgICAgICAgICAgaWYgKGl0ICE9IHJlcXVlc3RNYXAtPmdl
dE1hcCgpLmVuZCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8mIG9wdGlvbk1hcCA9IGl0
LT5zZWNvbmQuZ2V0TWFwKCk7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8gaXRyID0gb3B0aW9u
TWFwLmZpbmQoQ0JPUlZhbHVlKGtVc2VyVmVyaWZpY2F0aW9uTWFwS2V5KSk7CkBAIC0yMDIsOCAr
MTkxLDYgQEAgdm9pZCBNb2NrSGlkQ29ubmVjdGlvbjo6cGFyc2VSZXF1ZXN0KCkKIAogdm9pZCBN
b2NrSGlkQ29ubmVjdGlvbjo6ZmVlZFJlcG9ydHMoKQogewotICAgIHVzaW5nIG5hbWVzcGFjZSBN
b2NrSGlkQ29ubmVjdGlvbkludGVybmFsOwotCiAgICAgaWYgKG1fc3ViU3RhZ2UgPT0gTW9jazo6
SGlkU3ViU3RhZ2U6OkluaXQpIHsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHBheWxvYWQ7CiAg
ICAgICAgIHBheWxvYWQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShrSGlkSW5pdFJlc3BvbnNlU2l6
ZSk7CkBAIC0yMTIsNyArMTk5LDcgQEAgdm9pZCBNb2NrSGlkQ29ubmVjdGlvbjo6ZmVlZFJlcG9y
dHMoKQogICAgICAgICBpZiAoc3RhZ2VzTWF0Y2goKSAmJiBtX2NvbmZpZ3VyYXRpb24uaGlkLT5l
cnJvciA9PSBNb2NrOjpIaWRFcnJvcjo6V3JvbmdOb25jZSkKICAgICAgICAgICAgIHBheWxvYWRb
MF0tLTsKICAgICAgICAgcGF5bG9hZC5ncm93KGtIaWRJbml0UmVzcG9uc2VTaXplKTsKLSAgICAg
ICAgY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21WYWx1ZXMocGF5bG9hZC5kYXRhKCkgKyB3cml0ZVBv
c2l0aW9uLCBDdGFwQ2hhbm5lbElkU2l6ZSk7CisgICAgICAgIGNyeXB0b2dyYXBoaWNhbGx5UmFu
ZG9tVmFsdWVzKHBheWxvYWQuZGF0YSgpICsgd3JpdGVQb3NpdGlvbiwga0N0YXBDaGFubmVsSWRT
aXplKTsKICAgICAgICAgYXV0byBjaGFubmVsID0ga0hpZEJyb2FkY2FzdENoYW5uZWw7CiAgICAg
ICAgIGlmIChzdGFnZXNNYXRjaCgpICYmIG1fY29uZmlndXJhdGlvbi5oaWQtPmVycm9yID09IE1v
Y2s6OkhpZEVycm9yOjpXcm9uZ0NoYW5uZWxJZCkKICAgICAgICAgICAgIGNoYW5uZWwtLTsKQEAg
LTI1Niw3ICsyNDMsNyBAQCB2b2lkIE1vY2tIaWRDb25uZWN0aW9uOjpmZWVkUmVwb3J0cygpCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGlmIChtX2NvbmZpZ3VyYXRpb24uaGlkLT5rZWVw
QWxpdmUpIHsKICAgICAgICAgICAgIG1fY29uZmlndXJhdGlvbi5oaWQtPmtlZXBBbGl2ZSA9IGZh
bHNlOwotICAgICAgICAgICAgRmlkb0hpZEluaXRQYWNrZXQgaW5pdFBhY2tldChtX2N1cnJlbnRD
aGFubmVsLCBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a0tlZXBBbGl2ZSwgeyBDdGFwS2VlcEFsaXZl
U3RhdHVzUHJvY2Vzc2luZyB9LCAxKTsKKyAgICAgICAgICAgIEZpZG9IaWRJbml0UGFja2V0IGlu
aXRQYWNrZXQobV9jdXJyZW50Q2hhbm5lbCwgRmlkb0hpZERldmljZUNvbW1hbmQ6OmtLZWVwQWxp
dmUsIHsga0N0YXBLZWVwQWxpdmVTdGF0dXNQcm9jZXNzaW5nIH0sIDEpOwogICAgICAgICAgICAg
cmVjZWl2ZVJlcG9ydChpbml0UGFja2V0LmdldFNlcmlhbGl6ZWREYXRhKCkpOwogICAgICAgICAg
ICAgY29udGludWVGZWVkUmVwb3J0cygpOwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vVmlydHVhbC9WaXJ0
dWFsQXV0aGVudGljYXRvck1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vVmlydHVhbC9WaXJ0dWFsQXV0aGVudGljYXRvck1hbmFnZXIuY3BwCmlu
ZGV4IDNhZmIwY2UyZjM1NmM1ZjU1Yjg2M2VkMDIyMjA1ZjIxZmRjMTA2ZTQuLjI3NWIxZWI3OGI1
ZWFkZjQ5MmRlNGUyMzMwN2M2MzYyOTkxN2I0NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVhbEF1dGhlbnRpY2F0b3JN
YW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9WaXJ0dWFsL1ZpcnR1YWxBdXRoZW50aWNhdG9yTWFuYWdlci5jcHAKQEAgLTMzLDYgKzMzLDgg
QEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK3N0cnVjdCBWaXJ0dWFsQ3JlZGVudGlhbDsKKwog
VmlydHVhbEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpWaXJ0dWFsQXV0aGVudGljYXRvck1hbmFnZXIo
KQogICAgIDogQXV0aGVudGljYXRvck1hbmFnZXIoKQogewpAQCAtNDAsMTAgKzQyLDEyIEBAIFZp
cnR1YWxBdXRoZW50aWNhdG9yTWFuYWdlcjo6VmlydHVhbEF1dGhlbnRpY2F0b3JNYW5hZ2VyKCkK
IAogU3RyaW5nIFZpcnR1YWxBdXRoZW50aWNhdG9yTWFuYWdlcjo6Y3JlYXRlQXV0aGVudGljYXRv
cihjb25zdCBWaXJ0dWFsQXV0aGVudGljYXRvckNvbmZpZ3VyYXRpb24mIGNvbmZpZykKIHsKLSAg
ICBpZiAoY29uZmlnLnRyYW5zcG9ydCAhPSBXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0
OjpJbnRlcm5hbCkKKyAgICBpZiAoY29uZmlnLnRyYW5zcG9ydCAhPSBXZWJDb3JlOjpBdXRoZW50
aWNhdG9yVHJhbnNwb3J0OjpJbnRlcm5hbCAmJiBjb25maWcudHJhbnNwb3J0ICE9IFdlYkNvcmU6
OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6OlVzYikKICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOwog
ICAgIGF1dG8gaWQgPSBjcmVhdGVWZXJzaW9uNFVVSURTdHJpbmcoKTsKICAgICBtX3ZpcnR1YWxB
dXRoZW50aWNhdG9ycy5zZXQoaWQsIG1ha2VVbmlxdWVSZWY8VmlydHVhbEF1dGhlbnRpY2F0b3JD
b25maWd1cmF0aW9uPihjb25maWcpKTsKKyAgICBWZWN0b3I8VmlydHVhbENyZWRlbnRpYWw+IGNy
ZWRlbnRpYWxzOworICAgIG1fY3JlZGVudGlhbHNCeUF1dGhlbnRpY2F0b3Iuc2V0KGlkLCBXVEZN
b3ZlKGNyZWRlbnRpYWxzKSk7CiAKICAgICByZXR1cm4gaWQ7CiB9CkBAIC01MywxMiArNTcsMTgg
QEAgYm9vbCBWaXJ0dWFsQXV0aGVudGljYXRvck1hbmFnZXI6OnJlbW92ZUF1dGhlbnRpY2F0b3Io
Y29uc3QgU3RyaW5nJiBpZCkKICAgICByZXR1cm4gbV92aXJ0dWFsQXV0aGVudGljYXRvcnMucmVt
b3ZlKGlkKTsKIH0KIAordm9pZCBWaXJ0dWFsQXV0aGVudGljYXRvck1hbmFnZXI6OmFkZENyZWRl
bnRpYWwoY29uc3QgU3RyaW5nJiBhdXRoZW50aWNhdG9ySWQsIGNvbnN0IFZpcnR1YWxDcmVkZW50
aWFsJiBjcmVkZW50aWFsKQoreworICAgIG1fY3JlZGVudGlhbHNCeUF1dGhlbnRpY2F0b3IuZ2V0
KGF1dGhlbnRpY2F0b3JJZCkuYXBwZW5kKGNyZWRlbnRpYWwpOworfQorCiBVbmlxdWVSZWY8QXV0
aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2U+IFZpcnR1YWxBdXRoZW50aWNhdG9yTWFuYWdlcjo6
Y3JlYXRlU2VydmljZShXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0IHRyYW5zcG9ydCwg
QXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2U6Ok9ic2VydmVyJiBvYnNlcnZlcikgY29uc3QK
IHsKLSAgICBWZWN0b3I8VmlydHVhbEF1dGhlbnRpY2F0b3JDb25maWd1cmF0aW9uPiBjb25maWdz
OwotICAgIGZvciAoYXV0byYgY29uZmlnIDogbV92aXJ0dWFsQXV0aGVudGljYXRvcnMudmFsdWVz
KCkpIHsKLSAgICAgICAgaWYgKGNvbmZpZy5nZXQoKS50cmFuc3BvcnQgPT0gdHJhbnNwb3J0KQot
ICAgICAgICAgICAgY29uZmlncy5hcHBlbmQoY29uZmlnLmdldCgpKTsKKyAgICBWZWN0b3I8c3Rk
OjpwYWlyPFN0cmluZywgVmlydHVhbEF1dGhlbnRpY2F0b3JDb25maWd1cmF0aW9uPj4gY29uZmln
czsKKyAgICBmb3IgKGF1dG8mIGlkIDogbV92aXJ0dWFsQXV0aGVudGljYXRvcnMua2V5cygpKSB7
CisgICAgICAgIGF1dG8gY29uZmlnID0gbV92aXJ0dWFsQXV0aGVudGljYXRvcnMuZ2V0KGlkKTsK
KyAgICAgICAgaWYgKGNvbmZpZy0+dHJhbnNwb3J0ID09IHRyYW5zcG9ydCkKKyAgICAgICAgICAg
IGNvbmZpZ3MuYXBwZW5kKHN0ZDo6cGFpciB7IGlkLCAqY29uZmlnIH0pOwogICAgIH0KICAgICBy
ZXR1cm4gVmlydHVhbFNlcnZpY2U6OmNyZWF0ZVZpcnR1YWwodHJhbnNwb3J0LCBvYnNlcnZlciwg
Y29uZmlncyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9WaXJ0dWFsL1ZpcnR1YWxBdXRoZW50aWNhdG9yTWFuYWdlci5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vVmlydHVhbC9WaXJ0dWFsQXV0aGVu
dGljYXRvck1hbmFnZXIuaAppbmRleCBmNWZjNWY5NWUyYzBiMzA3YzcyMzY2OWEwNWM2YjBhZWFl
MDBhOTU5Li4xMWRmMDk2MWJhNWZmMTliODBhMjVlY2NjMWViYjVjYWQ4YTcxNGQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9WaXJ0dWFsL1Zp
cnR1YWxBdXRoZW50aWNhdG9yTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVhbEF1dGhlbnRpY2F0b3JNYW5hZ2VyLmgK
QEAgLTI5LDggKzI5LDExIEBACiAKICNpbmNsdWRlICJBdXRoZW50aWNhdG9yTWFuYWdlci5oIgog
I2luY2x1ZGUgIlZpcnR1YWxBdXRoZW50aWNhdG9yQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUg
IlZpcnR1YWxDcmVkZW50aWFsLmgiCisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNw
YWNlIFdlYktpdCB7CitzdHJ1Y3QgVmlydHVhbENyZWRlbnRpYWw7CiAKIGNsYXNzIFZpcnR1YWxB
dXRoZW50aWNhdG9yTWFuYWdlciBmaW5hbCA6IHB1YmxpYyBBdXRoZW50aWNhdG9yTWFuYWdlciB7
CiBwdWJsaWM6CkBAIC00MCwxNCArNDMsMjAgQEAgcHVibGljOgogICAgIGJvb2wgcmVtb3ZlQXV0
aGVudGljYXRvcihjb25zdCBTdHJpbmcmIC8qYXV0aGVudGljYXRvcklkKi8pOwogCiAgICAgYm9v
bCBpc1ZpcnR1YWwoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdm9pZCBydW5Q
YW5lbCgpOwotICAgIHZvaWQgc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2UoVmVjdG9yPFJlZjxXZWJD
b3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+PiYmLCBXZWJBdXRoZW50aWNhdGlv
blNvdXJjZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNz
ZXJ0aW9uUmVzcG9uc2UqKT4mJik7Ci0gICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JMb2NhbEF1dGhl
bnRpY2F0b3IoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChMb2NhbEF1dGhlbnRpY2F0b3JQb2xpY3kp
PiYmKTsKIAorICAgIHZvaWQgYWRkQ3JlZGVudGlhbChjb25zdCBTdHJpbmcmLCBjb25zdCBWaXJ0
dWFsQ3JlZGVudGlhbCYpOworCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JM
b2NhbEF1dGhlbnRpY2F0b3IoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChMb2NhbEF1dGhlbnRpY2F0
b3JQb2xpY3kpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNlbGVjdEFzc2VydGlvblJlc3BvbnNl
KFZlY3RvcjxSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPj4mJiwg
V2ViQXV0aGVudGljYXRpb25Tb3VyY2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6
QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKik+JiYpIG92ZXJyaWRlOworICAgIAorICAg
IAogcHJpdmF0ZToKICAgICBVbmlxdWVSZWY8QXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2U+
IGNyZWF0ZVNlcnZpY2UoV2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydCwgQXV0aGVudGlj
YXRvclRyYW5zcG9ydFNlcnZpY2U6Ok9ic2VydmVyJikgY29uc3QgZmluYWw7CisgICAgdm9pZCBy
dW5QYW5lbCgpIG92ZXJyaWRlOwogCiAgICAgSGFzaE1hcDxTdHJpbmcsIFVuaXF1ZVJlZjxWaXJ0
dWFsQXV0aGVudGljYXRvckNvbmZpZ3VyYXRpb24+PiBtX3ZpcnR1YWxBdXRoZW50aWNhdG9yczsK
KyAgICBIYXNoTWFwPFN0cmluZywgVmVjdG9yPFZpcnR1YWxDcmVkZW50aWFsPj4gbV9jcmVkZW50
aWFsc0J5QXV0aGVudGljYXRvcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vVmlydHVhbC9W
aXJ0dWFsQXV0aGVudGljYXRvclV0aWxzLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9WaXJ0dWFsL1ZpcnR1YWxBdXRoZW50aWNhdG9yVXRpbHMuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43NzdiOGNiNjc5NjcyOWJjNzVhOGM0MzYzNmE5YTc0YTE1NWViZDdhCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vVmlydHVh
bC9WaXJ0dWFsQXV0aGVudGljYXRvclV0aWxzLmgKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9BVVRITikKKworI2luY2x1ZGUgIlZp
cnR1YWxBdXRoZW50aWNhdG9yQ29uZmlndXJhdGlvbi5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KwordWludDhfdCBmbGFnc0ZvckNvbmZpZyhjb25zdCBWaXJ0dWFsQXV0aGVudGljYXRvckNvbmZp
Z3VyYXRpb24mKTsKK1JldGFpblB0cjxTZWNLZXlSZWY+IGNyZWF0ZVByaXZhdGVLZXkoKTsKK3N0
ZDo6cGFpcjxWZWN0b3I8dWludDhfdD4sIFZlY3Rvcjx1aW50OF90Pj4gY3JlZGVudGlhbElkQW5k
Q29zZVB1YktleUZvclByaXZhdGVLZXkoUmV0YWluUHRyPFNlY0tleVJlZj4gcHJpdmF0ZUtleSk7
CitTdHJpbmcgYmFzZTY0UHJpdmF0ZUtleShSZXRhaW5QdHI8U2VjS2V5UmVmPiBwcml2YXRlS2V5
KTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhO
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
VmlydHVhbC9WaXJ0dWFsQXV0aGVudGljYXRvclV0aWxzLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vVmlydHVhbC9WaXJ0dWFsQXV0aGVudGljYXRvclV0aWxz
Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjg2NzU5OTdkMzdhN2RkNzViNGI1NGU2MjZlODhkMDBmM2UyMGFmZjMK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9WaXJ0dWFsL1ZpcnR1YWxBdXRoZW50aWNhdG9yVXRpbHMubW0KQEAgLTAsMCArMSwxMTQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJWaXJ0dWFs
QXV0aGVudGljYXRvclV0aWxzLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisjaW5jbHVk
ZSA8V2ViQ29yZS9XZWJBdXRoZW50aWNhdGlvbkNvbnN0YW50cy5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvV2ViQXV0aGVudGljYXRpb25VdGlscy5oPgorI2luY2x1ZGUgPHBhbC9jcnlwdG8vQ3J5cHRv
RGlnZXN0Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CisKK3VpbnQ4X3QgZmxhZ3NGb3JDb25maWcoY29uc3QgVmlydHVhbEF1dGhlbnRpY2F0b3JDb25m
aWd1cmF0aW9uJiBjb25maWcpCit7CisgICAgdWludDhfdCBmbGFncyA9IFdlYkF1dGhuOjphdHRl
c3RlZENyZWRlbnRpYWxEYXRhSW5jbHVkZWRGbGFnOworICAgIGlmIChjb25maWcuaXNVc2VyQ29u
c2VudGluZykKKyAgICAgICAgZmxhZ3MgPSBmbGFncyB8IFdlYkF1dGhuOjp1c2VyUHJlc2VuY2VG
bGFnOworICAgIGlmIChjb25maWcuaXNVc2VyVmVyaWZpZWQpCisgICAgICAgIGZsYWdzID0gZmxh
Z3MgfCBXZWJBdXRobjo6dXNlclZlcmlmaWVkRmxhZzsKKyAgICByZXR1cm4gZmxhZ3M7Cit9CisK
K1JldGFpblB0cjxTZWNLZXlSZWY+IGNyZWF0ZVByaXZhdGVLZXkoKQoreworICAgIE5TRGljdGlv
bmFyeSogb3B0aW9ucyA9IEB7CisgICAgICAgIChpZClrU2VjQXR0cktleVR5cGU6IChpZClrU2Vj
QXR0cktleVR5cGVFQ1NFQ1ByaW1lUmFuZG9tLAorICAgICAgICAoaWQpa1NlY0F0dHJLZXlDbGFz
czogKGlkKWtTZWNBdHRyS2V5Q2xhc3NQcml2YXRlLAorICAgICAgICAoaWQpa1NlY0F0dHJLZXlT
aXplSW5CaXRzOiBAMjU2LAorICAgIH07CisgICAgQ0ZFcnJvclJlZiBlcnJvclJlZiA9IG51bGxw
dHI7CisgICAgYXV0byBrZXkgPSBhZG9wdENGKFNlY0tleUNyZWF0ZVJhbmRvbUtleSgKKyAgICAg
ICAgKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilvcHRpb25zLAorICAgICAgICAmZXJyb3JSZWYK
KyAgICApKTsKKyAgICBpZiAoZXJyb3JSZWYpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IHJldHVybiBrZXk7Cit9CisKK3N0ZDo6cGFpcjxWZWN0b3I8dWludDhfdD4sIFZlY3Rvcjx1aW50
OF90Pj4gY3JlZGVudGlhbElkQW5kQ29zZVB1YktleUZvclByaXZhdGVLZXkoUmV0YWluUHRyPFNl
Y0tleVJlZj4gcHJpdmF0ZUtleSkKK3sKKyAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBwdWJsaWNL
ZXlEYXRhUmVmOworICAgIHsKKyAgICAgICAgYXV0byBwdWJsaWNLZXkgPSBhZG9wdENGKFNlY0tl
eUNvcHlQdWJsaWNLZXkocHJpdmF0ZUtleS5nZXQoKSkpOworICAgICAgICBDRkVycm9yUmVmIGVy
cm9yUmVmID0gbnVsbHB0cjsKKyAgICAgICAgcHVibGljS2V5RGF0YVJlZiA9IGFkb3B0Q0YoU2Vj
S2V5Q29weUV4dGVybmFsUmVwcmVzZW50YXRpb24ocHVibGljS2V5LmdldCgpLCAmZXJyb3JSZWYp
KTsKKyAgICAgICAgYXV0byByZXRhaW5FcnJvciA9IGFkb3B0Q0YoZXJyb3JSZWYpOworICAgICAg
ICBBU1NFUlQoIWVycm9yUmVmKTsKKyAgICAgICAgQVNTRVJUKCgoTlNEYXRhICopcHVibGljS2V5
RGF0YVJlZi5nZXQoKSkubGVuZ3RoID09ICgxICsgMiAqIEVTMjU2RmllbGRFbGVtZW50TGVuZ3Ro
KSk7IC8vIDA0IHwgWCB8IFkKKyAgICB9CisgICAgTlNEYXRhICpuc1B1YmxpY0tleURhdGEgPSAo
TlNEYXRhICopcHVibGljS2V5RGF0YVJlZi5nZXQoKTsKKworICAgIFZlY3Rvcjx1aW50OF90PiBj
cmVkZW50aWFsSWQ7CisgICAgeworICAgICAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGln
ZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzEpOworICAgICAg
ICBkaWdlc3QtPmFkZEJ5dGVzKG5zUHVibGljS2V5RGF0YS5ieXRlcywgbnNQdWJsaWNLZXlEYXRh
Lmxlbmd0aCk7CisgICAgICAgIGNyZWRlbnRpYWxJZCA9IGRpZ2VzdC0+Y29tcHV0ZUhhc2goKTsK
KyAgICB9CisKKyAgICBWZWN0b3I8dWludDhfdD4gY29zZVB1YmxpY0tleTsKKyAgICB7CisgICAg
ICAgIC8vIENPU0UgRW5jb2RpbmcKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHgoRVMyNTZGaWVs
ZEVsZW1lbnRMZW5ndGgpOworICAgICAgICBbbnNQdWJsaWNLZXlEYXRhIGdldEJ5dGVzOiB4LmRh
dGEoKSByYW5nZTpOU01ha2VSYW5nZSgxLCBFUzI1NkZpZWxkRWxlbWVudExlbmd0aCldOworICAg
ICAgICBWZWN0b3I8dWludDhfdD4geShFUzI1NkZpZWxkRWxlbWVudExlbmd0aCk7CisgICAgICAg
IFtuc1B1YmxpY0tleURhdGEgZ2V0Qnl0ZXM6IHkuZGF0YSgpIHJhbmdlOk5TTWFrZVJhbmdlKDEg
KyBFUzI1NkZpZWxkRWxlbWVudExlbmd0aCwgRVMyNTZGaWVsZEVsZW1lbnRMZW5ndGgpXTsKKyAg
ICAgICAgY29zZVB1YmxpY0tleSA9IGVuY29kZUVTMjU2UHVibGljS2V5QXNDQk9SKFdURk1vdmUo
eCksIFdURk1vdmUoeSkpOworICAgIH0KKyAgICByZXR1cm4gc3RkOjpwYWlyIHsgY3JlZGVudGlh
bElkLCBjb3NlUHVibGljS2V5IH07Cit9CisKK1N0cmluZyBiYXNlNjRQcml2YXRlS2V5KFJldGFp
blB0cjxTZWNLZXlSZWY+IHByaXZhdGVLZXkpCit7CisgICAgQ0ZFcnJvclJlZiBlcnJvclJlZiA9
IG51bGxwdHI7CisgICAgYXV0byBwcml2YXRlS2V5UmVwID0gYWRvcHRDRihTZWNLZXlDb3B5RXh0
ZXJuYWxSZXByZXNlbnRhdGlvbigoX19icmlkZ2UgU2VjS2V5UmVmKSgoaWQpcHJpdmF0ZUtleS5n
ZXQoKSksICZlcnJvclJlZikpOworICAgIGF1dG8gcmV0YWluRXJyb3IgPSBhZG9wdENGKGVycm9y
UmVmKTsKKyAgICBpZiAoZXJyb3JSZWYpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgIHJldHVybiAiIjsKKyAgICB9CisgICAgTlNEYXRhICpuc1ByaXZhdGVLZXlSZXAg
PSAoTlNEYXRhICopcHJpdmF0ZUtleVJlcC5nZXQoKTsKKworICAgIHJldHVybiBTdHJpbmcoW25z
UHJpdmF0ZUtleVJlcCBiYXNlNjRFbmNvZGVkU3RyaW5nV2l0aE9wdGlvbnM6MF0pOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9WaXJ0dWFs
L1ZpcnR1YWxDcmVkZW50aWFsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9WaXJ0dWFsL1ZpcnR1YWxDcmVkZW50aWFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTE2OWZmZTBj
MDgyZjk3NjM1MmMxZDJkZGRlMGMwODMzNjAxNWY2OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVhbENyZWRl
bnRpYWwuaApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
ZiBFTkFCTEUoV0VCX0FVVEhOKQorCisjaW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50aWNhdG9yVHJh
bnNwb3J0Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitzdHJ1Y3QgVmlydHVhbENyZWRlbnRpYWwgeworICAgIFdURl9NQUtFX1NUUlVD
VF9GQVNUX0FMTE9DQVRFRDsKKyAgICBWZWN0b3I8dWludDhfdD4gY3JlZGVudGlhbElkOworICAg
IFN0cmluZyBycElkOworICAgIFN0cmluZyBwcml2YXRlS2V5OworICAgIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPHVpbnQ4X3Q+PiB1c2VySGFuZGxlOworICAgIHVpbnQ2NF90IHNpZ25Db3VudDsKKyAg
ICBib29sIGlzUmVzaWRlbnRDcmVkZW50aWFsOworICAgIGJvb2wgaXNWZXJpZmljYXRpb25SZXF1
aXJlZDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFdF
Ql9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL1ZpcnR1YWwvVmlydHVhbEhpZENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vVmlydHVhbC9WaXJ0dWFsSGlkQ29ubmVjdGlvbi5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYzM0OGJjMjFlMWNkMzA0YjRjNjI2NjMxMzA4YjljYTM2YWJlY2RmYQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL1ZpcnR1YWwvVmlydHVhbEhpZENvbm5lY3Rpb24uY3BwCkBAIC0wLDAgKzEsMjQ5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlZpcnR1YWxIaWRDb25u
ZWN0aW9uLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisjaW5jbHVkZSAiVmlydHVhbEF1
dGhlbnRpY2F0b3JNYW5hZ2VyLmgiCisjaW5jbHVkZSAiVmlydHVhbEF1dGhlbnRpY2F0b3JVdGls
cy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ0JPUlJlYWRlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
Q0JPUldyaXRlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRmlkb0NvbnN0YW50cy5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvV2ViQXV0aGVudGljYXRpb25VdGlscy5oPgorI2luY2x1ZGUgPHd0Zi9CbG9j
a1B0ci5oPgorI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5oPgor
I2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFt
ZXNwYWNlIGNib3I7Cit1c2luZyBuYW1lc3BhY2UgZmlkbzsKK3VzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOworCitjb25zdCBzaXplX3QgQ3RhcENoYW5uZWxJZFNpemUgPSA0OworCitWaXJ0dWFsSGlk
Q29ubmVjdGlvbjo6VmlydHVhbEhpZENvbm5lY3Rpb24oY29uc3QgU3RyaW5nJiBhdXRoZW50aWNh
dG9ySWQsIGNvbnN0IFZpcnR1YWxBdXRoZW50aWNhdG9yQ29uZmlndXJhdGlvbiYgY29uZmlndXJh
dGlvbiwgY29uc3QgV2Vha1B0cjxWaXJ0dWFsQXV0aGVudGljYXRvck1hbmFnZXI+JiBtYW5hZ2Vy
KQorICAgIDogSGlkQ29ubmVjdGlvbihudWxscHRyKQorICAgICwgbV9tYW5hZ2VyKG1hbmFnZXIp
CisgICAgLCBtX2NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbikKKyAgICAsIG1fYXV0aGVudGlj
YXRvcklkKGF1dGhlbnRpY2F0b3JJZCkKK3sKK30KKwordm9pZCBWaXJ0dWFsSGlkQ29ubmVjdGlv
bjo6aW5pdGlhbGl6ZSgpCit7CisgICAgc2V0SXNJbml0aWFsaXplZCh0cnVlKTsKK30KKwordm9p
ZCBWaXJ0dWFsSGlkQ29ubmVjdGlvbjo6dGVybWluYXRlKCkKK3sKKyAgICBzZXRJc0luaXRpYWxp
emVkKGZhbHNlKTsKK30KKworYXV0byBWaXJ0dWFsSGlkQ29ubmVjdGlvbjo6c2VuZFN5bmMoY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSAtPiBEYXRhU2VudAoreworICAgIEFTU0VSVChpc0lu
aXRpYWxpemVkKCkpOworICAgIHJldHVybiBEYXRhU2VudDo6WWVzOworfQorCit2b2lkIFZpcnR1
YWxIaWRDb25uZWN0aW9uOjpzZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIERhdGFTZW50Q2Fs
bGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBBU1NFUlQoaXNJbml0aWFsaXplZCgpKTsKKyAgICBh
dXRvIHRhc2sgPSBtYWtlQmxvY2tQdHIoW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGRh
dGEgPSBXVEZNb3ZlKGRhdGEpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFi
bGUgeworICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICAgICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrVGhpcywgZGF0YSA9IFdURk1vdmUoZGF0YSksIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdl
YWtUaGlzKSB7CisgICAgICAgICAgICAgICAgY2FsbGJhY2soRGF0YVNlbnQ6Ok5vKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHdlYWtUaGlz
LT5hc3NlbWJsZVJlcXVlc3QoV1RGTW92ZShkYXRhKSk7CisKKyAgICAgICAgICAgIGNhbGxiYWNr
KERhdGFTZW50OjpZZXMpOworICAgICAgICB9KTsKKyAgICB9KTsKKyAgICBkaXNwYXRjaF9hc3lu
YyhkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFV
TFQsIDApLCB0YXNrLmdldCgpKTsKK30KKwordm9pZCBWaXJ0dWFsSGlkQ29ubmVjdGlvbjo6YXNz
ZW1ibGVSZXF1ZXN0KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCit7CisgICAgaWYgKCFtX3JlcXVl
c3RNZXNzYWdlKSB7CisgICAgICAgIG1fcmVxdWVzdE1lc3NhZ2UgPSBGaWRvSGlkTWVzc2FnZTo6
Y3JlYXRlRnJvbVNlcmlhbGl6ZWREYXRhKGRhdGEpOworICAgICAgICBBU1NFUlQobV9yZXF1ZXN0
TWVzc2FnZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgYXV0byBzdGF0dXMgPSBtX3JlcXVlc3RN
ZXNzYWdlLT5hZGRDb250aW51YXRpb25QYWNrZXQoZGF0YSk7CisgICAgICAgIEFTU0VSVF9VTlVT
RUQoc3RhdHVzLCBzdGF0dXMpOworICAgIH0KKworICAgIGlmIChtX3JlcXVlc3RNZXNzYWdlLT5t
ZXNzYWdlQ29tcGxldGUoKSkKKyAgICAgICAgcGFyc2VSZXF1ZXN0KCk7Cit9CisKK3ZvaWQgVmly
dHVhbEhpZENvbm5lY3Rpb246OnJlY2VpdmVIaWRNZXNzYWdlKGZpZG86OkZpZG9IaWRNZXNzYWdl
JiYgbWVzc2FnZSkKK3sKKyAgICB3aGlsZSAobWVzc2FnZS5udW1QYWNrZXRzKCkpIHsKKyAgICAg
ICAgYXV0byByZXBvcnQgPSBtZXNzYWdlLnBvcE5leHRQYWNrZXQoKTsKKyAgICAgICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKFtyZXBvcnQgPSBXVEZNb3ZlKHJlcG9ydCksIHdlYWtUaGlzID0g
V2Vha1B0ciB7ICp0aGlzIH1dKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlz
KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHdlYWtUaGlzLT5yZWNlaXZl
UmVwb3J0KFdURk1vdmUocmVwb3J0KSk7CisgICAgICAgIH0pOworICAgIH0KK30KKwordm9pZCBW
aXJ0dWFsSGlkQ29ubmVjdGlvbjo6cmVjaWV2ZVJlc3BvbnNlQ29kZShmaWRvOjpDdGFwRGV2aWNl
UmVzcG9uc2VDb2RlIGNvZGUpCit7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKKyAgICBi
dWZmZXIuYXBwZW5kKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGNvZGUpKTsKKworICAgIGF1dG8gbWVz
c2FnZSA9IEZpZG9IaWRNZXNzYWdlOjpjcmVhdGUobV9jdXJyZW50Q2hhbm5lbCwgRmlkb0hpZERl
dmljZUNvbW1hbmQ6OmtDYm9yLCBXVEZNb3ZlKGJ1ZmZlcikpOworICAgIHJlY2VpdmVIaWRNZXNz
YWdlKFdURk1vdmUoKm1lc3NhZ2UpKTsKK30KKwordm9pZCBWaXJ0dWFsSGlkQ29ubmVjdGlvbjo6
cGFyc2VSZXF1ZXN0KCkKK3sKKyAgICBpZiAoIW1fcmVxdWVzdE1lc3NhZ2UpCisgICAgICAgIHJl
dHVybjsKKyAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8qIG1h
bmFnZXIgPSBtX21hbmFnZXIuZ2V0KCk7CisgICAgbV9jdXJyZW50Q2hhbm5lbCA9IG1fcmVxdWVz
dE1lc3NhZ2UtPmNoYW5uZWxJZCgpOworICAgIHN3aXRjaCAobV9yZXF1ZXN0TWVzc2FnZS0+Y21k
KCkpIHsKKyAgICBjYXNlIEZpZG9IaWREZXZpY2VDb21tYW5kOjprSW5pdDogeworICAgICAgICBt
X25vbmNlID0gbV9yZXF1ZXN0TWVzc2FnZS0+Z2V0TWVzc2FnZVBheWxvYWQoKTsKKyAgICAgICAg
QVNTRVJUKG1fbm9uY2Uuc2l6ZSgpID09IGtIaWRJbml0Tm9uY2VMZW5ndGgpOworICAgICAgICBW
ZWN0b3I8dWludDhfdD4gcGF5bG9hZDsKKyAgICAgICAgcGF5bG9hZC5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KGtIaWRJbml0UmVzcG9uc2VTaXplKTsKKyAgICAgICAgcGF5bG9hZC5hcHBlbmRWZWN0
b3IobV9ub25jZSk7CisgICAgICAgIHNpemVfdCB3cml0ZVBvc2l0aW9uID0gcGF5bG9hZC5zaXpl
KCk7CisgICAgICAgIHBheWxvYWQuZ3JvdyhrSGlkSW5pdFJlc3BvbnNlU2l6ZSk7CisgICAgICAg
IGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tVmFsdWVzKHBheWxvYWQuZGF0YSgpICsgd3JpdGVQb3Np
dGlvbiwgQ3RhcENoYW5uZWxJZFNpemUpOworICAgICAgICBhdXRvIGNoYW5uZWwgPSBrSGlkQnJv
YWRjYXN0Q2hhbm5lbDsKKyAgICAgICAgRmlkb0hpZEluaXRQYWNrZXQgaW5pdFBhY2tldChjaGFu
bmVsLCBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a0luaXQsIFdURk1vdmUocGF5bG9hZCksIHBheWxv
YWQuc2l6ZSgpKTsKKyAgICAgICAgcmVjZWl2ZVJlcG9ydChpbml0UGFja2V0LmdldFNlcmlhbGl6
ZWREYXRhKCkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBGaWRvSGlkRGV2aWNl
Q29tbWFuZDo6a0Nib3I6IHsKKyAgICAgICAgYXV0byBwYXlsb2FkID0gbV9yZXF1ZXN0TWVzc2Fn
ZS0+Z2V0TWVzc2FnZVBheWxvYWQoKTsKKyAgICAgICAgQVNTRVJUKHBheWxvYWQuc2l6ZSgpKTsK
KyAgICAgICAgYXV0byBjbWQgPSBzdGF0aWNfY2FzdDxDdGFwUmVxdWVzdENvbW1hbmQ+KHBheWxv
YWRbMF0pOworICAgICAgICBwYXlsb2FkLnJlbW92ZSgwKTsKKyAgICAgICAgYXV0byByZXF1ZXN0
TWFwID0gQ0JPUlJlYWRlcjo6cmVhZChwYXlsb2FkKTsKKyAgICAgICAgQVNTRVJUKHJlcXVlc3RN
YXAgfHwgY21kID09IEN0YXBSZXF1ZXN0Q29tbWFuZDo6a0F1dGhlbnRpY2F0b3JHZXROZXh0QXNz
ZXJ0aW9uKTsKKyAgICAgICAgaWYgKGNtZCA9PSBDdGFwUmVxdWVzdENvbW1hbmQ6OmtBdXRoZW50
aWNhdG9yTWFrZUNyZWRlbnRpYWwpIHsKKyAgICAgICAgICAgIFZpcnR1YWxDcmVkZW50aWFsIGNy
ZWRlbnRpYWw7CisgICAgICAgICAgICBhdXRvIGl0ID0gcmVxdWVzdE1hcC0+Z2V0TWFwKCkuZmlu
ZChDQk9SVmFsdWUoa0N0YXBNYWtlQ3JlZGVudGlhbFJlcXVlc3RPcHRpb25zS2V5KSk7IC8vIEZp
bmQgb3B0aW9ucy4KKyAgICAgICAgICAgIGlmIChpdCAhPSByZXF1ZXN0TWFwLT5nZXRNYXAoKS5l
bmQoKSkgeworICAgICAgICAgICAgICAgIGF1dG8mIG9wdGlvbk1hcCA9IGl0LT5zZWNvbmQuZ2V0
TWFwKCk7CisKKyAgICAgICAgICAgICAgICBhdXRvIGl0ciA9IG9wdGlvbk1hcC5maW5kKENCT1JW
YWx1ZShrUmVzaWRlbnRLZXlNYXBLZXkpKTsKKyAgICAgICAgICAgICAgICBpZiAoaXRyICE9IG9w
dGlvbk1hcC5lbmQoKSkgeworICAgICAgICAgICAgICAgICAgICBhdXRvIHJlcXVpcmVSZXNpZGVu
dEtleSA9IGl0ci0+c2Vjb25kLmdldEJvb2woKTsKKyAgICAgICAgICAgICAgICAgICAgLy8gaHR0
cHM6Ly9maWRvYWxsaWFuY2Uub3JnL3NwZWNzL2ZpZG8tdjIuMS1yZC0yMDIxMDMwOS9maWRvLWNs
aWVudC10by1hdXRoZW50aWNhdG9yLXByb3RvY29sLXYyLjEtcmQtMjAyMTAzMDkuaHRtbCNvcC1t
YWtlY3JlZC1zdGVwLW9wdGlvbnMKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJlcXVpcmVSZXNp
ZGVudEtleSAmJiAhbV9jb25maWd1cmF0aW9uLmhhc1Jlc2lkZW50S2V5KSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICByZWNpZXZlUmVzcG9uc2VDb2RlKEN0YXBEZXZpY2VSZXNwb25zZUNvZGU6
OmtDdGFwMkVyclVuc3VwcG9ydGVkT3B0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAocmVx
dWlyZVJlc2lkZW50S2V5KQorICAgICAgICAgICAgICAgICAgICAgICAgY3JlZGVudGlhbC5pc1Jl
c2lkZW50Q3JlZGVudGlhbCA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgaXRyID0gb3B0aW9uTWFwLmZpbmQoQ0JPUlZhbHVlKGtVc2VyVmVyaWZpY2F0aW9uTWFw
S2V5KSk7CisgICAgICAgICAgICAgICAgaWYgKGl0ciAhPSBvcHRpb25NYXAuZW5kKCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgYXV0byByZXF1aXJlVXNlclZlcmlmaWNhdGlvbiA9IGl0ci0+c2Vj
b25kLmdldEJvb2woKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJlcXVpcmVVc2VyVmVyaWZp
Y2F0aW9uICYmICFtX2NvbmZpZ3VyYXRpb24uaGFzVXNlclZlcmlmaWNhdGlvbikgeworICAgICAg
ICAgICAgICAgICAgICAgICAgcmVjaWV2ZVJlc3BvbnNlQ29kZShDdGFwRGV2aWNlUmVzcG9uc2VD
b2RlOjprQ3RhcDJFcnJJbnZhbGlkT3B0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAocmVx
dWlyZVVzZXJWZXJpZmljYXRpb24gJiYgIW1fY29uZmlndXJhdGlvbi5pc1VzZXJWZXJpZmllZCkg
eworICAgICAgICAgICAgICAgICAgICAgICAgcmVjaWV2ZVJlc3BvbnNlQ29kZShDdGFwRGV2aWNl
UmVzcG9uc2VDb2RlOjprQ3RhcDJFcnJPcGVyYXRpb25EZW5pZWQpOworICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgIGNyZWRlbnRpYWwuaXNWZXJpZmljYXRpb25SZXF1aXJlZCA9IHJlcXVpcmVVc2VyVmVyaWZp
Y2F0aW9uOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGl0
ID0gcmVxdWVzdE1hcC0+Z2V0TWFwKCkuZmluZChDQk9SVmFsdWUoa0N0YXBNYWtlQ3JlZGVudGlh
bFJwS2V5KSk7CisgICAgICAgICAgICBpZiAoaXQgPT0gcmVxdWVzdE1hcC0+Z2V0TWFwKCkuZW5k
KCkpIHsKKyAgICAgICAgICAgICAgICByZWNpZXZlUmVzcG9uc2VDb2RlKEN0YXBEZXZpY2VSZXNw
b25zZUNvZGU6OmtDdGFwMkVyck1pc3NpbmdQYXJhbWV0ZXIpOworICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGF1dG8mIHJwRW50aXR5ID0gaXQtPnNl
Y29uZC5nZXRNYXAoKTsKKyAgICAgICAgICAgIGl0ID0gcnBFbnRpdHkuZmluZChDQk9SVmFsdWUo
a0VudGl0eUlkTWFwS2V5KSk7CisgICAgICAgICAgICBpZiAoaXQgPT0gcnBFbnRpdHkuZW5kKCkp
IHsKKyAgICAgICAgICAgICAgICByZWNpZXZlUmVzcG9uc2VDb2RlKEN0YXBEZXZpY2VSZXNwb25z
ZUNvZGU6OmtDdGFwMkVyck1pc3NpbmdQYXJhbWV0ZXIpOworICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNyZWRlbnRpYWwucnBJZCA9IGl0LT5zZWNv
bmQuZ2V0U3RyaW5nKCk7CisgICAgICAgICAgICBhdXRvIHByaXZhdGVLZXkgPSBjcmVhdGVQcml2
YXRlS2V5KCk7CisgICAgICAgICAgICBjcmVkZW50aWFsLnByaXZhdGVLZXkgPSBiYXNlNjRQcml2
YXRlS2V5KHByaXZhdGVLZXkpOworCisgICAgICAgICAgICBpdCA9IHJlcXVlc3RNYXAtPmdldE1h
cCgpLmZpbmQoQ0JPUlZhbHVlKGtDdGFwTWFrZUNyZWRlbnRpYWxVc2VyS2V5KSk7CisgICAgICAg
ICAgICBpZiAoaXQgPT0gcmVxdWVzdE1hcC0+Z2V0TWFwKCkuZW5kKCkpIHsKKyAgICAgICAgICAg
ICAgICByZWNpZXZlUmVzcG9uc2VDb2RlKEN0YXBEZXZpY2VSZXNwb25zZUNvZGU6OmtDdGFwMkVy
ck1pc3NpbmdQYXJhbWV0ZXIpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGF1dG8mIHVzZXJFbnRpdHkgPSBpdC0+c2Vjb25kLmdldE1hcCgpOwor
ICAgICAgICAgICAgaXQgPSB1c2VyRW50aXR5LmZpbmQoQ0JPUlZhbHVlKGtFbnRpdHlJZE1hcEtl
eSkpOworICAgICAgICAgICAgaWYgKGl0ID09IHVzZXJFbnRpdHkuZW5kKCkpIHsKKyAgICAgICAg
ICAgICAgICByZWNpZXZlUmVzcG9uc2VDb2RlKEN0YXBEZXZpY2VSZXNwb25zZUNvZGU6OmtDdGFw
MkVyck1pc3NpbmdQYXJhbWV0ZXIpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGNyZWRlbnRpYWwudXNlckhhbmRsZSA9IGl0LT5zZWNvbmQuZ2V0
Qnl0ZVN0cmluZygpOworCisgICAgICAgICAgICBtYW5hZ2VyLT5hZGRDcmVkZW50aWFsKG1fYXV0
aGVudGljYXRvcklkLCBjcmVkZW50aWFsKTsKKyAgICAgICAgICAgIGF1dG8gY3JlZGVudGlhbElk
QW5kQ29zZVB1YktleSA9IGNyZWRlbnRpYWxJZEFuZENvc2VQdWJLZXlGb3JQcml2YXRlS2V5KHBy
aXZhdGVLZXkpOworCisgICAgICAgICAgICBhdXRvIGF0dGVzdGVkQ3JlZGVudGlhbERhdGEgPSBi
dWlsZEF0dGVzdGVkQ3JlZGVudGlhbERhdGEoVmVjdG9yPHVpbnQ4X3Q+KGFhZ3VpZExlbmd0aCwg
MCksIGNyZWRlbnRpYWxJZEFuZENvc2VQdWJLZXkuZmlyc3QsIGNyZWRlbnRpYWxJZEFuZENvc2VQ
dWJLZXkuc2Vjb25kKTsKKworICAgICAgICAgICAgYXV0byBhdXRoZW50aWNhdG9yRGF0YSA9IGJ1
aWxkQXV0aERhdGEoY3JlZGVudGlhbC5ycElkLCBmbGFnc0ZvckNvbmZpZyhtX2NvbmZpZ3VyYXRp
b24pLCBjcmVkZW50aWFsLnNpZ25Db3VudCwgYXR0ZXN0ZWRDcmVkZW50aWFsRGF0YSk7CisgICAg
ICAgICAgICBDQk9SVmFsdWU6Ok1hcFZhbHVlIHJlc3BvbnNlOworICAgICAgICAgICAgcmVzcG9u
c2VbQ0JPUlZhbHVlKDIpXSA9IENCT1JWYWx1ZShhdXRoZW50aWNhdG9yRGF0YSk7CisKKyAgICAg
ICAgICAgIGF1dG8gYXR0T2JqID0gYnVpbGRBdHRlc3RhdGlvbk1hcChXVEZNb3ZlKGF1dGhlbnRp
Y2F0b3JEYXRhKSwgIiIsIHsgfSwgQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZTo6Tm9u
ZSk7CisKKyAgICAgICAgICAgIHJlc3BvbnNlW0NCT1JWYWx1ZSgxKV0gPSBDQk9SVmFsdWUoIm5v
bmUiKTsKKyAgICAgICAgICAgIHJlc3BvbnNlW0NCT1JWYWx1ZSgzKV0gPSBDQk9SVmFsdWUoYXR0
T2JqKTsKKyAgICAgICAgICAgIGF1dG8gcGF5bG9hZCA9IENCT1JXcml0ZXI6OndyaXRlKENCT1JW
YWx1ZShyZXNwb25zZSkpOworICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKKyAg
ICAgICAgICAgIGJ1ZmZlci5yZXNlcnZlQ2FwYWNpdHkocGF5bG9hZC0+c2l6ZSgpICsgMSk7Cisg
ICAgICAgICAgICBidWZmZXIuYXBwZW5kKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGZpZG86OkN0YXBE
ZXZpY2VSZXNwb25zZUNvZGU6OmtTdWNjZXNzKSk7CisgICAgICAgICAgICBidWZmZXIuYXBwZW5k
VmVjdG9yKCpwYXlsb2FkKTsKKworICAgICAgICAgICAgYXV0byBtZXNzYWdlID0gRmlkb0hpZE1l
c3NhZ2U6OmNyZWF0ZShtX3JlcXVlc3RNZXNzYWdlLT5jaGFubmVsSWQoKSwgRmlkb0hpZERldmlj
ZUNvbW1hbmQ6OmtDYm9yLCBXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAgcmVjZWl2ZUhp
ZE1lc3NhZ2UoV1RGTW92ZSgqbWVzc2FnZSkpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisgICAgbV9yZXF1ZXN0
TWVzc2FnZSA9IHN0ZDo6bnVsbG9wdDsKK30KKworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwor
I2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9WaXJ0dWFsL1ZpcnR1YWxIaWRDb25uZWN0aW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9WaXJ0dWFsL1ZpcnR1
YWxIaWRDb25uZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGFiMjMxNGMyOGRiMzYzNjM4YTE0MWE5MTJl
ZGIzZWMwZjgwMDM2ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVhbEhpZENvbm5lY3Rpb24uaApAQCAtMCww
ICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX0FV
VEhOKQorCisjaW5jbHVkZSAiSGlkQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlZpcnR1YWxBdXRo
ZW50aWNhdG9yQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRmlkb0hpZE1lc3Nh
Z2UuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK3N0
cnVjdCBWaXJ0dWFsQXV0aGVudGljYXRvckNvbmZpZ3VyYXRpb247CitjbGFzcyBWaXJ0dWFsQXV0
aGVudGljYXRvck1hbmFnZXI7CisKK2NsYXNzIFZpcnR1YWxIaWRDb25uZWN0aW9uIGZpbmFsIDog
cHVibGljIENhbk1ha2VXZWFrUHRyPFZpcnR1YWxIaWRDb25uZWN0aW9uPiwgcHVibGljIEhpZENv
bm5lY3Rpb24geworcHVibGljOgorICAgIGV4cGxpY2l0IFZpcnR1YWxIaWRDb25uZWN0aW9uKGNv
bnN0IFN0cmluZyYgYXV0aGVudGljYXRvcklkLCBjb25zdCBWaXJ0dWFsQXV0aGVudGljYXRvckNv
bmZpZ3VyYXRpb24mLCBjb25zdCBXZWFrUHRyPFZpcnR1YWxBdXRoZW50aWNhdG9yTWFuYWdlcj4m
KTsKKworcHJpdmF0ZToKKyAgICB2b2lkIGluaXRpYWxpemUoKSBmaW5hbDsKKyAgICB2b2lkIHRl
cm1pbmF0ZSgpIGZpbmFsOworICAgIERhdGFTZW50IHNlbmRTeW5jKGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgZGF0YSkgZmluYWw7CisgICAgdm9pZCBzZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEs
IERhdGFTZW50Q2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBhc3NlbWJsZVJlcXVlc3QoVmVj
dG9yPHVpbnQ4X3Q+JiYpOworICAgIHZvaWQgcGFyc2VSZXF1ZXN0KCk7CisKKyAgICB2b2lkIHJl
Y2VpdmVIaWRNZXNzYWdlKGZpZG86OkZpZG9IaWRNZXNzYWdlJiYpOworICAgIHZvaWQgcmVjaWV2
ZVJlc3BvbnNlQ29kZShmaWRvOjpDdGFwRGV2aWNlUmVzcG9uc2VDb2RlKTsKKworICAgIFdlYWtQ
dHI8VmlydHVhbEF1dGhlbnRpY2F0b3JNYW5hZ2VyPiBtX21hbmFnZXI7CisgICAgVmlydHVhbEF1
dGhlbnRpY2F0b3JDb25maWd1cmF0aW9uIG1fY29uZmlndXJhdGlvbjsKKyAgICBzdGQ6Om9wdGlv
bmFsPGZpZG86OkZpZG9IaWRNZXNzYWdlPiBtX3JlcXVlc3RNZXNzYWdlOworICAgIFZlY3Rvcjx1
aW50OF90PiBtX25vbmNlOworICAgIHVpbnQzMl90IG1fY3VycmVudENoYW5uZWwgeyBmaWRvOjpr
SGlkQnJvYWRjYXN0Q2hhbm5lbCB9OworICAgIFN0cmluZyBtX2F1dGhlbnRpY2F0b3JJZDsKK307
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vVmlydHVhbC9WaXJ0dWFsU2VydmljZS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vVmlydHVhbC9WaXJ0dWFs
U2VydmljZS5oCmluZGV4IDk4NjhmM2NlODQyNWIyYjlmNjFlZDFmZmI5YjVmMWU2ZmFmNmZiNDUu
LmU4YWQzYTcxYTllMWM5MTNlZWI3ZTJhZmQzZTEzN2IwYmVkNDk4YWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVhbFNl
cnZpY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9W
aXJ0dWFsL1ZpcnR1YWxTZXJ2aWNlLmgKQEAgLTI5LDE4ICsyOSwyMiBAQAogCiAjaW5jbHVkZSAi
QXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2UuaCIKICNpbmNsdWRlICJWaXJ0dWFsQXV0aGVu
dGljYXRvckNvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJWaXJ0dWFsQ3JlZGVudGlhbC5oIgor
I2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBW
aXJ0dWFsQXV0aGVudGljYXRvck1hbmFnZXI7CisKIGNsYXNzIFZpcnR1YWxTZXJ2aWNlIDogcHVi
bGljIEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlIHsKIHB1YmxpYzoKLSAgICBleHBsaWNp
dCBWaXJ0dWFsU2VydmljZShPYnNlcnZlciYsIGNvbnN0IFZlY3RvcjxWaXJ0dWFsQXV0aGVudGlj
YXRvckNvbmZpZ3VyYXRpb24+Jik7CisgICAgZXhwbGljaXQgVmlydHVhbFNlcnZpY2UoT2JzZXJ2
ZXImLCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgVmlydHVhbEF1dGhlbnRpY2F0b3JDb25maWd1
cmF0aW9uPj4mKTsKIAotICAgIHN0YXRpYyBVbmlxdWVSZWY8QXV0aGVudGljYXRvclRyYW5zcG9y
dFNlcnZpY2U+IGNyZWF0ZVZpcnR1YWwoV2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydCwg
T2JzZXJ2ZXImLCBjb25zdCBWZWN0b3I8VmlydHVhbEF1dGhlbnRpY2F0b3JDb25maWd1cmF0aW9u
PiYgY29uZmlncyk7CisgICAgc3RhdGljIFVuaXF1ZVJlZjxBdXRoZW50aWNhdG9yVHJhbnNwb3J0
U2VydmljZT4gY3JlYXRlVmlydHVhbChXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0LCBP
YnNlcnZlciYsIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBWaXJ0dWFsQXV0aGVudGljYXRvckNv
bmZpZ3VyYXRpb24+PiYpOwogcHJpdmF0ZToKICAgICB2b2lkIHN0YXJ0RGlzY292ZXJ5SW50ZXJu
YWwoKSBmaW5hbDsKIAotICAgIFZlY3RvcjxWaXJ0dWFsQXV0aGVudGljYXRvckNvbmZpZ3VyYXRp
b24+IG1fY29uZmlndXJhdGlvbnM7CisgICAgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFZpcnR1
YWxBdXRoZW50aWNhdG9yQ29uZmlndXJhdGlvbj4+IG1fYXV0aGVudGljYXRvcnM7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVhbFNlcnZpY2UubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9WaXJ0dWFsL1ZpcnR1YWxTZXJ2aWNlLm1t
CmluZGV4IGU4YjFmYjUzY2I1MjgzZGFiNGJmNTRiM2VlYzNjZWUzZTVjNTE1MDguLmVkNjY5YWJi
OGJlM2FjOTIzZGRmYjI3MWYwY2IzZjVhZTg1N2I4ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVhbFNlcnZpY2UubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vVmlydHVhbC9W
aXJ0dWFsU2VydmljZS5tbQpAQCAtMjgsMzIgKzI4LDU0IEBACiAKICNpZiBFTkFCTEUoV0VCX0FV
VEhOKQogCisjaW1wb3J0ICJDdGFwQXV0aGVudGljYXRvci5oIgorI2ltcG9ydCAiQ3RhcEhpZERy
aXZlci5oIgogI2ltcG9ydCAiTG9jYWxBdXRoZW50aWNhdG9yLmgiCisjaW1wb3J0ICJWaXJ0dWFs
QXV0aGVudGljYXRvck1hbmFnZXIuaCIKKyNpbXBvcnQgIlZpcnR1YWxIaWRDb25uZWN0aW9uLmgi
CiAjaW1wb3J0ICJWaXJ0dWFsTG9jYWxDb25uZWN0aW9uLmgiCisjaW1wb3J0IDxXZWJDb3JlL0Zp
ZG9Db25zdGFudHMuaD4KKyNpbXBvcnQgPFdlYkNvcmUvV2ViQXV0aGVudGljYXRpb25Db25zdGFu
dHMuaD4KKyNpbXBvcnQgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBmaWRvOwordXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVZpcnR1YWxTZXJ2aWNlOjpWaXJ0dWFsU2VydmljZShP
YnNlcnZlciYgb2JzZXJ2ZXIsIGNvbnN0IFZlY3RvcjxWaXJ0dWFsQXV0aGVudGljYXRvckNvbmZp
Z3VyYXRpb24+JiBjb25maWd1cmF0aW9ucykKLSAgICA6IEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRT
ZXJ2aWNlKG9ic2VydmVyKSwgbV9jb25maWd1cmF0aW9ucyhjb25maWd1cmF0aW9ucykKK1ZpcnR1
YWxTZXJ2aWNlOjpWaXJ0dWFsU2VydmljZShPYnNlcnZlciYgb2JzZXJ2ZXIsIFZlY3RvcjxzdGQ6
OnBhaXI8U3RyaW5nLCBWaXJ0dWFsQXV0aGVudGljYXRvckNvbmZpZ3VyYXRpb24+PiYgYXV0aGVu
dGljYXRvcnMpCisgICAgOiBBdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZShvYnNlcnZlciks
IG1fYXV0aGVudGljYXRvcnMoYXV0aGVudGljYXRvcnMpCiB7CiB9CiAKLVVuaXF1ZVJlZjxBdXRo
ZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZT4gVmlydHVhbFNlcnZpY2U6OmNyZWF0ZVZpcnR1YWwo
V2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydCB0cmFuc3BvcnQsIE9ic2VydmVyJiBvYnNl
cnZlciwgIGNvbnN0IFZlY3RvcjxWaXJ0dWFsQXV0aGVudGljYXRvckNvbmZpZ3VyYXRpb24+JiBj
b25maWdzKQorVW5pcXVlUmVmPEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlPiBWaXJ0dWFs
U2VydmljZTo6Y3JlYXRlVmlydHVhbChXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0IHRy
YW5zcG9ydCwgT2JzZXJ2ZXImIG9ic2VydmVyLCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgVmly
dHVhbEF1dGhlbnRpY2F0b3JDb25maWd1cmF0aW9uPj4mIGF1dGhlbnRpY2F0b3JzKQogewotICAg
IHJldHVybiBtYWtlVW5pcXVlUmVmPFZpcnR1YWxTZXJ2aWNlPihvYnNlcnZlciwgY29uZmlncyk7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWVSZWY8VmlydHVhbFNlcnZpY2U+KG9ic2VydmVyLCBhdXRo
ZW50aWNhdG9ycyk7Cit9CisKK3N0YXRpYyBBdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlIGF1
dGhlbnRpY2F0b3JJbmZvRm9yQ29uZmlnKGNvbnN0IFZpcnR1YWxBdXRoZW50aWNhdG9yQ29uZmln
dXJhdGlvbiYgY29uZmlnKQoreworICAgIEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2UgaW5m
b1Jlc3BvbnNlKHsgUHJvdG9jb2xWZXJzaW9uOjprQ3RhcCB9LCBWZWN0b3I8dWludDhfdD4oYWFn
dWlkTGVuZ3RoLCAwdSkpOworICAgIEF1dGhlbnRpY2F0b3JTdXBwb3J0ZWRPcHRpb25zIG9wdGlv
bnM7CisgICAgaW5mb1Jlc3BvbnNlLnNldE9wdGlvbnMoV1RGTW92ZShvcHRpb25zKSk7CisgICAg
cmV0dXJuIGluZm9SZXNwb25zZTsKIH0KIAogdm9pZCBWaXJ0dWFsU2VydmljZTo6c3RhcnREaXNj
b3ZlcnlJbnRlcm5hbCgpCiB7CiAKLSAgICBmb3IgKGF1dG8mIGNvbmZpZyA6IG1fY29uZmlndXJh
dGlvbnMpIHsKKyAgICBmb3IgKGF1dG8mIGF1dGhlbnRpY2F0b3IgOiBtX2F1dGhlbnRpY2F0b3Jz
KSB7CiAgICAgICAgIGlmICghb2JzZXJ2ZXIoKSkKICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgYXV0byBjb25maWcgPSBhdXRoZW50aWNhdG9yLnNlY29uZDsKKyAgICAgICAgYXV0byBhdXRo
ZW50aWNhdG9ySWQgPSBhdXRoZW50aWNhdG9yLmZpcnN0OwogICAgICAgICBzd2l0Y2ggKGNvbmZp
Zy50cmFuc3BvcnQpIHsKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNw
b3J0OjpVc2I6CisgICAgICAgICAgICBvYnNlcnZlcigpLT5hdXRoZW50aWNhdG9yQWRkZWQoQ3Rh
cEF1dGhlbnRpY2F0b3I6OmNyZWF0ZShXVEY6Om1ha2VVbmlxdWU8Q3RhcEhpZERyaXZlcj4obWFr
ZVVuaXF1ZVJlZjxWaXJ0dWFsSGlkQ29ubmVjdGlvbj4oYXV0aGVudGljYXRvcklkLCBjb25maWcs
IFdlYWtQdHIgeyBzdGF0aWNfY2FzdDxWaXJ0dWFsQXV0aGVudGljYXRvck1hbmFnZXIgKj4ob2Jz
ZXJ2ZXIoKSkgfSkpLCBhdXRoZW50aWNhdG9ySW5mb0ZvckNvbmZpZyhjb25maWcpKSk7CisgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNw
b3J0OjpJbnRlcm5hbDoKICAgICAgICAgICAgIG9ic2VydmVyKCktPmF1dGhlbnRpY2F0b3JBZGRl
ZChMb2NhbEF1dGhlbnRpY2F0b3I6OmNyZWF0ZShtYWtlVW5pcXVlUmVmPFZpcnR1YWxMb2NhbENv
bm5lY3Rpb24+KGNvbmZpZykpKTsKLSAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOwog
ICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCBkMjA3YmE1ODFlYmQzNWE4OWE1MmYxZjY0N2Q5MjI0OWQ5ZGEyMTBkLi4yOTFk
OThjOGJjNWMxZTgwOTEzYjJlMjkzZTIwYTU2MGY5NDM2NWJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwODEsNiArMTA4MSw4IEBA
CiAJCTUxRkFFQzNBMUIwNjU3NjMwMDA5QzRFNyAvKiBBdXhpbGlhcnlQcm9jZXNzTWVzc2FnZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRkFFQzM3
MUIwNjU3MzEwMDA5QzRFNyAvKiBBdXhpbGlhcnlQcm9jZXNzTWVzc2FnZXMuaCAqLzsgfTsKIAkJ
NTFGQUVDM0IxQjA2NTc2ODAwMDlDNEU3IC8qIEF1eGlsaWFyeVByb2Nlc3NNZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFG
QUVDMzYxQjA2NTczMTAwMDlDNEU3IC8qIEF1eGlsaWFyeVByb2Nlc3NNZXNzYWdlUmVjZWl2ZXIu
Y3BwICovOyB9OwogCQk1MUZEMThCNjE2NTFGQkFEMDBEQkUxQ0UgLyogTmV0d29ya1Jlc291cmNl
TG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MUZEMThCNDE2NTFGQkFEMDBEQkUxQ0UgLyogTmV0d29ya1Jlc291cmNlTG9hZGVyLmggKi87IH07
CisJCTUyNTJBNTE5MjdFMDQ4NzQwMDk0QkVCOSAvKiBWaXJ0dWFsSGlkQ29ubmVjdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTI1MkE1MTcyN0Uw
NDg3NDAwOTRCRUI5IC8qIFZpcnR1YWxIaWRDb25uZWN0aW9uLmggKi87IH07CisJCTUyNTJBNTFB
MjdFMDQ4NzQwMDk0QkVCOSAvKiBWaXJ0dWFsSGlkQ29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MjUyQTUxODI3RTA0ODc0MDA5NEJF
QjkgLyogVmlydHVhbEhpZENvbm5lY3Rpb24uY3BwICovOyB9OwogCQk1MjY4OEFCNDI3RDdDRTQw
MDAzNTc3QTIgLyogX1dLUmVzaWRlbnRLZXlSZXF1aXJlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTI2ODhBQjMyN0Q3Q0U0MDAwMzU3N0EyIC8q
IF9XS1Jlc2lkZW50S2V5UmVxdWlyZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk1MjcyRDRDOTFFNzM1RjA5MDBFQjQyOTAgLyogV0tQcm90
ZWN0aW9uU3BhY2VOUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTI3MkQ0QzcxRTczNUYwOTAwRUI0MjkwIC8qIFdLUHJvdGVjdGlvblNwYWNlTlMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MjhDMzdD
MTE5NUNCQjFBMDBEOEI5Q0MgLyogV0tCYWNrRm9yd2FyZExpc3RQcml2YXRlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTlGMjgxMDE5NThGNDc4MDA4
Q0FDNzIgLyogV0tCYWNrRm9yd2FyZExpc3RQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEwOTMsNiArMTA5NSw5IEBACiAJCTUyQ0RD
NUNBMjczMURBMEQwMEEzRTNFQiAvKiBWaXJ0dWFsQXV0aGVudGljYXRvck1hbmFnZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyQ0RDNUMzMjczMURB
MEMwMEEzRTNFQiAvKiBWaXJ0dWFsQXV0aGVudGljYXRvck1hbmFnZXIuaCAqLzsgfTsKIAkJNTJE
NUExQjAxQzU3NDk1QTAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJENUExQUExQzU3
NDk0RTAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oICovOyB9OwogCQk1
MkYwNjBFMTE2NTQzMTg1MDBGMzI4MUIgLyogTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXJN
ZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTJGMDYwREQxNjU0MzE3NTAwRjMyODFCIC8qIE5ldHdvcmtDb250ZW50UnVsZUxp
c3RNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJNTJGNEI0NjkyN0UxMTk3NzAw
RkZEMTI5IC8qIFZpcnR1YWxBdXRoZW50aWNhdG9yVXRpbHMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyRjRCNDY3MjdFMTE5NzcwMEZGRDEyOSAvKiBW
aXJ0dWFsQXV0aGVudGljYXRvclV0aWxzLmggKi87IH07CisJCTUyRjRCNDZBMjdFMTE5NzcwMEZG
RDEyOSAvKiBWaXJ0dWFsQXV0aGVudGljYXRvclV0aWxzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJGNEI0NjgyN0UxMTk3NzAwRkZEMTI5IC8qIFZp
cnR1YWxBdXRoZW50aWNhdG9yVXRpbHMubW0gKi87IH07CisJCTUyRjRCNDZEMjdFMTI1QTgwMEZG
RDEyOSAvKiBWaXJ0dWFsQ3JlZGVudGlhbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTJGNEI0NkIyN0UxMjVBODAwRkZEMTI5IC8qIFZpcnR1YWxDcmVk
ZW50aWFsLmggKi87IH07CiAJCTUzMjE1OTU1MURCQUU3MjkwMDU0QUEzQyAvKiBOZXR3b3JrU2Vz
c2lvbkNvY29hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MzIxNTk1MDFEQkFFNkQ3MDA1NEFBM0MgLyogTmV0d29ya1Nlc3Npb25Db2NvYS5oICovOyB9
OwogCQk1MzIxNTk1NjFEQkFFNzJEMDA1NEFBM0MgLyogTmV0d29ya0RhdGFUYXNrQ29jb2EuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzMjE1OTRGMURC
QUU2RDcwMDU0QUEzQyAvKiBOZXR3b3JrRGF0YVRhc2tDb2NvYS5oICovOyB9OwogCQk1MzVCQ0I5
MjIwNjlDNDlDMDBDQ0NFMDIgLyogTmV0d29ya0FjdGl2aXR5VHJhY2tlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM1QkNCOTAyMDY5QzQ5QzAwQ0ND
RTAyIC8qIE5ldHdvcmtBY3Rpdml0eVRyYWNrZXIuaCAqLzsgfTsKQEAgLTQ2NDQsNiArNDY0OSw4
IEBACiAJCTUxRkIwOTAyMTYzQTNCMUMwMEVDMzI0QSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24ubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBuYW1lID0gTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmlu
OyBwYXRoID0gTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW47IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRkQxOEIzMTY1MUZCQUQwMERCRTFDRSAvKiBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTFGRDE4QjQxNjUxRkJBRDAwREJFMUNFIC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrUmVzb3VyY2VMb2FkZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTI1MkE1MTcyN0UwNDg3NDAwOTRCRUI5
IC8qIFZpcnR1YWxIaWRDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpcnR1YWxIaWRDb25u
ZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUyNTJBNTE4MjdFMDQ4NzQw
MDk0QkVCOSAvKiBWaXJ0dWFsSGlkQ29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBW
aXJ0dWFsSGlkQ29ubmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUy
Njg4QUIzMjdEN0NFNDAwMDM1NzdBMiAvKiBfV0tSZXNpZGVudEtleVJlcXVpcmVtZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IF9XS1Jlc2lkZW50S2V5UmVxdWlyZW1lbnQuaDsgcGF0aCA9IFVJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLUmVzaWRlbnRLZXlSZXF1aXJlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MjcyRDRDNzFFNzM1RjA5MDBFQjQyOTAgLyogV0tQcm90ZWN0aW9uU3Bh
Y2VOUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS1Byb3RlY3Rpb25TcGFj
ZU5TLmg7IHBhdGggPSBtYWMvV0tQcm90ZWN0aW9uU3BhY2VOUy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MjcyRDRDODFFNzM1RjA5MDBFQjQyOTAgLyogV0tQcm90ZWN0aW9uU3Bh
Y2VOUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLUHJvdGVj
dGlvblNwYWNlTlMubW07IHBhdGggPSBtYWMvV0tQcm90ZWN0aW9uU3BhY2VOUy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ2NjMsNiArNDY3MCw5IEBACiAJCTUyRUI2OENCMjc5
RTIxNDUwMDVDOThEOSAvKiBBUktpdFNvZnRMaW5rLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFSS2l0U29m
dExpbmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTJFQjY4Q0MyNzlFMjE0NTAw
NUM5OEQ5IC8qIEFSS2l0U29mdExpbmsubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBUktpdFNv
ZnRMaW5rLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MkYwNjBERDE2NTQzMTc1
MDBGMzI4MUIgLyogTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXJNZXNz
YWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0L05ldHdvcmtDb250
ZW50UnVsZUxpc3RNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9IEJVSUxU
X1BST0RVQ1RTX0RJUjsgfTsKKwkJNTJGNEI0NjcyN0UxMTk3NzAwRkZEMTI5IC8qIFZpcnR1YWxB
dXRoZW50aWNhdG9yVXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlydHVhbEF1dGhlbnRpY2F0b3JV
dGlscy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MkY0QjQ2ODI3RTExOTc3MDBG
RkQxMjkgLyogVmlydHVhbEF1dGhlbnRpY2F0b3JVdGlscy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFZpcnR1YWxBdXRoZW50aWNhdG9yVXRpbHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTUyRjRCNDZCMjdFMTI1QTgwMEZGRDEyOSAvKiBWaXJ0dWFsQ3JlZGVudGlhbC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBWaXJ0dWFsQ3JlZGVudGlhbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MzE1ODc2QjIwNzZCNzEzMDA0QkY5RjMgLyogTmV0d29ya0FjdGl2aXR5VHJhY2tl
ckNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTmV0d29y
a0FjdGl2aXR5VHJhY2tlckNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MzIxNTk0RjFEQkFFNkQ3MDA1NEFBM0MgLyogTmV0d29ya0RhdGFUYXNrQ29jb2EuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0RhdGFUYXNrQ29jb2EuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMyMTU5NTAxREJBRTZENzAwNTRBQTNDIC8qIE5ldHdv
cmtTZXNzaW9uQ29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29y
a1Nlc3Npb25Db2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTg1OCw2ICs5
ODY4LDExIEBACiAJCQkJNTJDREM1QkQyNzMxREEwQzAwQTNFM0VCIC8qIFZpcnR1YWxBdXRoZW50
aWNhdG9yQ29uZmlndXJhdGlvbi5oICovLAogCQkJCTUyQ0RDNUJGMjczMURBMEMwMEEzRTNFQiAv
KiBWaXJ0dWFsQXV0aGVudGljYXRvck1hbmFnZXIuY3BwICovLAogCQkJCTUyQ0RDNUMzMjczMURB
MEMwMEEzRTNFQiAvKiBWaXJ0dWFsQXV0aGVudGljYXRvck1hbmFnZXIuaCAqLywKKwkJCQk1MkY0
QjQ2NzI3RTExOTc3MDBGRkQxMjkgLyogVmlydHVhbEF1dGhlbnRpY2F0b3JVdGlscy5oICovLAor
CQkJCTUyRjRCNDY4MjdFMTE5NzcwMEZGRDEyOSAvKiBWaXJ0dWFsQXV0aGVudGljYXRvclV0aWxz
Lm1tICovLAorCQkJCTUyRjRCNDZCMjdFMTI1QTgwMEZGRDEyOSAvKiBWaXJ0dWFsQ3JlZGVudGlh
bC5oICovLAorCQkJCTUyNTJBNTE4MjdFMDQ4NzQwMDk0QkVCOSAvKiBWaXJ0dWFsSGlkQ29ubmVj
dGlvbi5jcHAgKi8sCisJCQkJNTI1MkE1MTcyN0UwNDg3NDAwOTRCRUI5IC8qIFZpcnR1YWxIaWRD
b25uZWN0aW9uLmggKi8sCiAJCQkJNTJDREM1QzAyNzMxREEwQzAwQTNFM0VCIC8qIFZpcnR1YWxM
b2NhbENvbm5lY3Rpb24uaCAqLywKIAkJCQk1MkNEQzVDMjI3MzFEQTBDMDBBM0UzRUIgLyogVmly
dHVhbExvY2FsQ29ubmVjdGlvbi5tbSAqLywKIAkJCQk1MkNEQzVDMTI3MzFEQTBDMDBBM0UzRUIg
LyogVmlydHVhbFNlcnZpY2UuaCAqLywKQEAgLTEzNjU2LDYgKzEzNjcxLDkgQEAKIAkJCQkyNjg0
MDU1MzE4Qjg2RUQ2MDAyMkMzOEIgLyogVmlld1VwZGF0ZURpc3BhdGNoZXJNZXNzYWdlcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTJDREM1QzQyNzMxREEwRDAwQTNFM0VCIC8qIFZpcnR1YWxBdXRo
ZW50aWNhdG9yQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTJDREM1Q0EyNzMx
REEwRDAwQTNFM0VCIC8qIFZpcnR1YWxBdXRoZW50aWNhdG9yTWFuYWdlci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNTJGNEI0NjkyN0UxMTk3NzAwRkZEMTI5IC8qIFZpcnR1YWxBdXRoZW50aWNhdG9y
VXRpbHMuaCBpbiBIZWFkZXJzICovLAorCQkJCTUyRjRCNDZEMjdFMTI1QTgwMEZGRDEyOSAvKiBW
aXJ0dWFsQ3JlZGVudGlhbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTI1MkE1MTkyN0UwNDg3NDAw
OTRCRUI5IC8qIFZpcnR1YWxIaWRDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MkNE
QzVDNzI3MzFEQTBEMDBBM0UzRUIgLyogVmlydHVhbExvY2FsQ29ubmVjdGlvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTJDREM1QzgyNzMxREEwRDAwQTNFM0VCIC8qIFZpcnR1YWxTZXJ2aWNlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkyNjg0MDU0NDE4Qjg1QTYzMDAyMkMzOEIgLyogVmlzaWJsZUNv
bnRlbnRSZWN0VXBkYXRlSW5mby5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNjE1Miw2ICsxNjE3MCw4
IEBACiAJCQkJMkQ4MTlCQTExODYyODAwRTAwMUYwM0QxIC8qIFZpZXdHZXN0dXJlR2VvbWV0cnlD
b2xsZWN0b3JNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjY4NDA1NTIx
OEI4NkVENjAwMjJDMzhCIC8qIFZpZXdVcGRhdGVEaXNwYXRjaGVyTWVzc2FnZVJlY2VpdmVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTUyQ0RDNUM2MjczMURBMEQwMEEzRTNFQiAvKiBWaXJ0dWFs
QXV0aGVudGljYXRvck1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTJGNEI0NkEyN0Ux
MTk3NzAwRkZEMTI5IC8qIFZpcnR1YWxBdXRoZW50aWNhdG9yVXRpbHMubW0gaW4gU291cmNlcyAq
LywKKwkJCQk1MjUyQTUxQTI3RTA0ODc0MDA5NEJFQjkgLyogVmlydHVhbEhpZENvbm5lY3Rpb24u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTJDREM1QzkyNzMxREEwRDAwQTNFM0VCIC8qIFZpcnR1
YWxMb2NhbENvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MkNEQzVDNTI3MzFEQTBE
MDBBM0UzRUIgLyogVmlydHVhbFNlcnZpY2UubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTYwMjI0
QzE4QzE2QjlGMDBDM0U4QzkgLyogVmlzaXRlZExpbmtTdG9yZU1lc3NhZ2VSZWNlaXZlci5jcHAg
aW4gU291cmNlcyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454983</attachid>
            <date>2022-03-17 09:56:47 -0700</date>
            <delta_ts>2022-03-17 11:29:24 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-237984-20220317095647.patch</filename>
            <type>text/plain</type>
            <size>56343</size>
            <attacher name="pascoe@apple.com">pascoe</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNDE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmJjOTVhZjgyNmQyNTA2
M2EyMzc4M2U0MjdjZDgzNzlhMTA5Y2ZmNy4uNjhmMDc1YzhmMzYzMTI2NTgzMzJiN2Q4OGU5NDVl
MDZjNzVmNDgzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIyLTAzLTE3ICBKIFBh
c2NvZSAgPGpfcGFzY29lQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIFN1cHBvcnQg
bWFrZUNyZWRlbnRpYWwgZm9yIHZpcnR1YWwgSElEIGF1dGhlbnRpY2F0b3JzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzc5ODQKKyAgICAgICAgcmRh
cjovL3Byb2JsZW0vOTAzOTM2NzYKKworICAgICAgICBSZXZpZXdlZCBieSBCcmVudCBGdWxnaGFt
LgorCisgICAgICAgIFZpcnR1YWwgYXV0aGVudGljYXRvcnMgZm9yIFdlYkF1dGhuIHN1cHBvcnRz
IGRpZmZlcmVudCB0cmFuc3BvcnRzOiBuZmMsdXNiLGludGVybmFsLGJsZS4KKyAgICAgICAgQ3Vy
cmVudGx5LCB3ZSBzdXBwb3J0IHRoZSBpbnRlcm5hbCB0cmFuc3BvcnQsIGJ1dCB0aGUgZGVmYXVs
dCB0cmFuc3BvcnQgdXNlZCBpbiB3ZWIgcGxhdGZvcm0KKyAgICAgICAgdGVzdHMgaXMgdXNiLiBU
aGlzIHBhdGNoIGltcGxlbWVudHMgbWFrZUNyZWRlbnRpYWwgZm9yIGhpZC1iYXNlZCB2aXJ0dWFs
IGF1dGhlbnRpY2F0b3JzLiBWaXJ0dWFsCisgICAgICAgIGNyZWRlbnRpYWwgaW5mb3JtYXRpb24g
aXMgc3RvcmVkIGluIHRoZSBWaXJ0dWFsQ3JlZGVudGlhbCBzdHJ1Y3QgYXMgc3VnZ2VzdGVkIGJ5
IHRoZSBzcGVjLgorCisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlv
blV0aWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkQXR0ZXN0YXRpb25NYXApOgorICAg
ICAgICAoV2ViQ29yZTo6YnVpbGRBdHRlc3RhdGlvbk9iamVjdCk6CisgICAgICAgICogTW9kdWxl
cy93ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlvblV0aWxzLmg6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdXRobi9maWRvL0ZpZG9Db25zdGFudHMuaDoKKwogMjAyMi0wMy0xNyAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFN0b3AgcmV0dXJuaW5nIE5vZGVWZWN0b3Ig
ZnJvbSBmdW5jdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYjFjYjI5ZTNhNjhkMDA0YWQ5Yzk5YTlmZjcyNzAx
MmViNDJkNGRkYS4uNDg2ZDNiOTlmNzUxZGYzNzJhNjY1ZTMyYjBjMmYzZmQxYjg5MmMzMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw1MiBAQAorMjAyMi0wMy0xNyAgSiBQYXNjb2UgIDxqX3Bhc2NvZUBh
cHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBTdXBwb3J0IG1ha2VDcmVkZW50aWFsIGZv
ciB2aXJ0dWFsIEhJRCBhdXRoZW50aWNhdG9ycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3OTg0CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzkwMzkz
Njc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJlbnQgRnVsZ2hhbS4KKworICAgICAgICBWaXJ0
dWFsIGF1dGhlbnRpY2F0b3JzIGZvciBXZWJBdXRobiBzdXBwb3J0cyBkaWZmZXJlbnQgdHJhbnNw
b3J0czogbmZjLHVzYixpbnRlcm5hbCxibGUuCisgICAgICAgIEN1cnJlbnRseSwgd2Ugc3VwcG9y
dCB0aGUgaW50ZXJuYWwgdHJhbnNwb3J0LCBidXQgdGhlIGRlZmF1bHQgdHJhbnNwb3J0IHVzZWQg
aW4gd2ViIHBsYXRmb3JtCisgICAgICAgIHRlc3RzIGlzIHVzYi4gVGhpcyBwYXRjaCBpbXBsZW1l
bnRzIG1ha2VDcmVkZW50aWFsIGZvciBoaWQtYmFzZWQgdmlydHVhbCBhdXRoZW50aWNhdG9ycy4g
VmlydHVhbAorICAgICAgICBjcmVkZW50aWFsIGluZm9ybWF0aW9uIGlzIHN0b3JlZCBpbiB0aGUg
VmlydHVhbENyZWRlbnRpYWwgc3RydWN0IGFzIHN1Z2dlc3RlZCBieSB0aGUgc3BlYy4KKworICAg
ICAgICBUZXN0ZWQgbWFudWFsbHkgdmlhIGNyZWF0aW5nIHZpcnR1YWwgYXV0aGVudGljYXRvciBh
bmQgcGVyZm9ybWluZyBjcmVhdGUgYW5kIHZpYSB3cHQgdGVzdHMuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkQ29ubmVjdGlvbi5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok1vY2tIaWRDb25uZWN0aW9uOjpwYXJzZVJlcXVlc3QpOgorICAgICAgICAo
V2ViS2l0OjpNb2NrSGlkQ29ubmVjdGlvbjo6ZmVlZFJlcG9ydHMpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9WaXJ0dWFsL1ZpcnR1YWxBdXRoZW50aWNhdG9yTWFuYWdl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlZpcnR1YWxBdXRoZW50aWNhdG9yTWFuYWdlcjo6Y3Jl
YXRlQXV0aGVudGljYXRvcik6CisgICAgICAgIChXZWJLaXQ6OlZpcnR1YWxBdXRoZW50aWNhdG9y
TWFuYWdlcjo6YWRkQ3JlZGVudGlhbCk6CisgICAgICAgIChXZWJLaXQ6OlZpcnR1YWxBdXRoZW50
aWNhdG9yTWFuYWdlcjo6Y3JlYXRlU2VydmljZSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVhbEF1dGhlbnRpY2F0b3JNYW5hZ2VyLmg6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVhbEF1
dGhlbnRpY2F0b3JVdGlscy5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9WaXJ0dWFsL1ZpcnR1YWxTZXJ2aWNlLmguCisgICAgICAgICogVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVhbEF1dGhlbnRpY2F0b3JVdGls
cy5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OmZsYWdzRm9yQ29uZmlnKToKKyAgICAgICAg
KFdlYktpdDo6Y3JlYXRlUHJpdmF0ZUtleSk6CisgICAgICAgIChXZWJLaXQ6OmNyZWRlbnRpYWxJ
ZEFuZENvc2VQdWJLZXlGb3JQcml2YXRlS2V5KToKKyAgICAgICAgKFdlYktpdDo6YmFzZTY0UHJp
dmF0ZUtleSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwv
VmlydHVhbENyZWRlbnRpYWwuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vVmlydHVhbC9WaXJ0dWFsU2VydmljZS5oLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9WaXJ0dWFsL1ZpcnR1YWxIaWRDb25uZWN0aW9uLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlZpcnR1YWxIaWRDb25uZWN0aW9uOjpWaXJ0dWFs
SGlkQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlZpcnR1YWxIaWRDb25uZWN0aW9uOjpp
bml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6VmlydHVhbEhpZENvbm5lY3Rpb246OnRlcm1p
bmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlZpcnR1YWxIaWRDb25uZWN0aW9uOjpzZW5kU3luYyk6
CisgICAgICAgIChXZWJLaXQ6OlZpcnR1YWxIaWRDb25uZWN0aW9uOjpzZW5kKToKKyAgICAgICAg
KFdlYktpdDo6VmlydHVhbEhpZENvbm5lY3Rpb246OmFzc2VtYmxlUmVxdWVzdCk6CisgICAgICAg
IChXZWJLaXQ6OlZpcnR1YWxIaWRDb25uZWN0aW9uOjpyZWNlaXZlSGlkTWVzc2FnZSk6CisgICAg
ICAgIChXZWJLaXQ6OlZpcnR1YWxIaWRDb25uZWN0aW9uOjpyZWNpZXZlUmVzcG9uc2VDb2RlKToK
KyAgICAgICAgKFdlYktpdDo6VmlydHVhbEhpZENvbm5lY3Rpb246OnBhcnNlUmVxdWVzdCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVhbEhpZENv
bm5lY3Rpb24uaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vVmlydHVhbC9WaXJ0dWFsQXV0aGVudGljYXRvck1hbmFnZXIuaC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vVmlydHVhbC9WaXJ0dWFsU2VydmljZS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9WaXJ0dWFsL1ZpcnR1YWxTZXJ2
aWNlLm1tOgorICAgICAgICAoV2ViS2l0OjpWaXJ0dWFsU2VydmljZTo6VmlydHVhbFNlcnZpY2Up
OgorICAgICAgICAoV2ViS2l0OjpWaXJ0dWFsU2VydmljZTo6Y3JlYXRlVmlydHVhbCk6CisgICAg
ICAgIChXZWJLaXQ6OmF1dGhlbnRpY2F0b3JJbmZvRm9yQ29uZmlnKToKKyAgICAgICAgKFdlYktp
dDo6VmlydHVhbFNlcnZpY2U6OnN0YXJ0RGlzY292ZXJ5SW50ZXJuYWwpOgorICAgICAgICAqIFdl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDIyLTAzLTE3ICBCZW4gTmhhbSAg
PG5oYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEFsbG93IHB1c2ggcHJlZmVyZW5jZSB0byBiZSBz
ZXQgcHJvZ3JhbWF0aWNhbGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1dGhuL1dlYkF1dGhlbnRpY2F0aW9uQ29uc3RhbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1dGhuL1dlYkF1dGhlbnRpY2F0aW9uQ29uc3RhbnRzLmgKaW5kZXggNjBmZDgxYmM4
NzMzOWVhODQwYTA3OGZjNDM0ZDUyNDFjNmM1ZTEyOC4uY2M0MDZhYTU4ODcxYTllYWZmNzdlNTQx
OWUwMTgwZTU1NTk3ZmMxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dXRobi9XZWJBdXRoZW50aWNhdGlvbkNvbnN0YW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXV0aG4vV2ViQXV0aGVudGljYXRpb25Db25zdGFudHMuaApAQCAtMTAwLDQgKzEw
MCw5IEBAIGVudW0gY2xhc3MgU2NvcGUgewogICAgIFNhbWVTaXRlCiB9OwogCisvLyBodHRwczov
L3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jYXV0aGVudGljYXRvci1kYXRhCitjb25zdGV4cHIg
dWludDhfdCB1c2VyUHJlc2VuY2VGbGFnID0gMGIwMDAwMDAwMTsKK2NvbnN0ZXhwciB1aW50OF90
IHVzZXJWZXJpZmllZEZsYWcgPSAwYjAwMDAwMTAwOworY29uc3RleHByIHVpbnQ4X3QgYXR0ZXN0
ZWRDcmVkZW50aWFsRGF0YUluY2x1ZGVkRmxhZyA9IDBiMDEwMDAwMDA7CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkF1dGhuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhu
L1dlYkF1dGhlbnRpY2F0aW9uVXRpbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dXRobi9XZWJBdXRoZW50aWNhdGlvblV0aWxzLmNwcAppbmRleCA4ZDQ3M2NhMjU5ZjJjNmJjMGY1
YjVhMjZiMGMyZDJhODQwY2RmNWZlLi5lZDkzNDY4NjZhN2VmM2MxM2VmY2U0NTY1ZjM5OTFjZTI5
NTEwYTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1dlYkF1
dGhlbnRpY2F0aW9uVXRpbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0
aG4vV2ViQXV0aGVudGljYXRpb25VdGlscy5jcHAKQEAgLTExMCw3ICsxMTAsNyBAQCBWZWN0b3I8
dWludDhfdD4gYnVpbGRBdXRoRGF0YShjb25zdCBTdHJpbmcmIHJwSWQsIGNvbnN0IHVpbnQ4X3Qg
ZmxhZ3MsIGNvbnN0IHVpbgogICAgIHJldHVybiBhdXRoRGF0YTsKIH0KIAotVmVjdG9yPHVpbnQ4
X3Q+IGJ1aWxkQXR0ZXN0YXRpb25PYmplY3QoVmVjdG9yPHVpbnQ4X3Q+JiYgYXV0aERhdGEsIFN0
cmluZyYmIGZvcm1hdCwgY2Jvcjo6Q0JPUlZhbHVlOjpNYXBWYWx1ZSYmIHN0YXRlbWVudE1hcCwg
Y29uc3QgQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZSYgYXR0ZXN0YXRpb24pCitjYm9y
OjpDQk9SVmFsdWU6Ok1hcFZhbHVlIGJ1aWxkQXR0ZXN0YXRpb25NYXAoVmVjdG9yPHVpbnQ4X3Q+
JiYgYXV0aERhdGEsIFN0cmluZyYmIGZvcm1hdCwgY2Jvcjo6Q0JPUlZhbHVlOjpNYXBWYWx1ZSYm
IHN0YXRlbWVudE1hcCwgY29uc3QgQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZSYgYXR0
ZXN0YXRpb24pCiB7CiAgICAgY2Jvcjo6Q0JPUlZhbHVlOjpNYXBWYWx1ZSBhdHRlc3RhdGlvbk9i
amVjdE1hcDsKICAgICAvLyBUaGUgZm9sbG93aW5nIGltcGxlbWVudHMgU3RlcCAyMCB3aXRoIHJl
Z2FyZCB0byBBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlCkBAIC0xMjcsNiArMTI3LDEy
IEBAIFZlY3Rvcjx1aW50OF90PiBidWlsZEF0dGVzdGF0aW9uT2JqZWN0KFZlY3Rvcjx1aW50OF90
PiYmIGF1dGhEYXRhLCBTdHJpbmcmJiBmb3JtCiAgICAgYXR0ZXN0YXRpb25PYmplY3RNYXBbY2Jv
cjo6Q0JPUlZhbHVlKCJhdXRoRGF0YSIpXSA9IGNib3I6OkNCT1JWYWx1ZShXVEZNb3ZlKGF1dGhE
YXRhKSk7CiAgICAgYXR0ZXN0YXRpb25PYmplY3RNYXBbY2Jvcjo6Q0JPUlZhbHVlKCJmbXQiKV0g
PSBjYm9yOjpDQk9SVmFsdWUoV1RGTW92ZShmb3JtYXQpKTsKICAgICBhdHRlc3RhdGlvbk9iamVj
dE1hcFtjYm9yOjpDQk9SVmFsdWUoImF0dFN0bXQiKV0gPSBjYm9yOjpDQk9SVmFsdWUoV1RGTW92
ZShzdGF0ZW1lbnRNYXApKTsKKyAgICByZXR1cm4gYXR0ZXN0YXRpb25PYmplY3RNYXA7Cit9CisK
K1ZlY3Rvcjx1aW50OF90PiBidWlsZEF0dGVzdGF0aW9uT2JqZWN0KFZlY3Rvcjx1aW50OF90PiYm
IGF1dGhEYXRhLCBTdHJpbmcmJiBmb3JtYXQsIGNib3I6OkNCT1JWYWx1ZTo6TWFwVmFsdWUmJiBz
dGF0ZW1lbnRNYXAsIGNvbnN0IEF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2UmIGF0dGVz
dGF0aW9uKQoreworICAgIGNib3I6OkNCT1JWYWx1ZTo6TWFwVmFsdWUgYXR0ZXN0YXRpb25PYmpl
Y3RNYXAgPSBidWlsZEF0dGVzdGF0aW9uTWFwKFdURk1vdmUoYXV0aERhdGEpLCBXVEZNb3ZlKGZv
cm1hdCksIFdURk1vdmUoc3RhdGVtZW50TWFwKSwgYXR0ZXN0YXRpb24pOwogCiAgICAgYXV0byBh
dHRlc3RhdGlvbk9iamVjdCA9IGNib3I6OkNCT1JXcml0ZXI6OndyaXRlKGNib3I6OkNCT1JWYWx1
ZShXVEZNb3ZlKGF0dGVzdGF0aW9uT2JqZWN0TWFwKSkpOwogICAgIEFTU0VSVChhdHRlc3RhdGlv
bk9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1dl
YkF1dGhlbnRpY2F0aW9uVXRpbHMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4v
V2ViQXV0aGVudGljYXRpb25VdGlscy5oCmluZGV4IGE2NDI1NDRkNGE2NTg2OGJiNGRhOTczMmRh
ZTAyOGNkZmM1NThjMGIuLjMzMjE1N2U1MjEzMDMwODdlNWE3MzRlNDdmYmU3Zjg5OGQwYjA4NWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vV2ViQXV0aGVudGlj
YXRpb25VdGlscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vV2ViQXV0
aGVudGljYXRpb25VdGlscy5oCkBAIC00OSw2ICs0OSw4IEBAIFdFQkNPUkVfRVhQT1JUIFZlY3Rv
cjx1aW50OF90PiBidWlsZEF0dGVzdGVkQ3JlZGVudGlhbERhdGEoY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+CiAvLyBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4vI3NlYy1hdXRoZW50aWNhdG9y
LWRhdGEKIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBidWlsZEF1dGhEYXRhKGNvbnN0
IFN0cmluZyYgcnBJZCwgY29uc3QgdWludDhfdCBmbGFncywgY29uc3QgdWludDMyX3QgY291bnRl
ciwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBvcHRpb25hbEF0dGVzdGVkQ3JlZGVudGlhbERhdGEp
OwogCitXRUJDT1JFX0VYUE9SVCBjYm9yOjpDQk9SVmFsdWU6Ok1hcFZhbHVlIGJ1aWxkQXR0ZXN0
YXRpb25NYXAoVmVjdG9yPHVpbnQ4X3Q+JiYsIFN0cmluZyYmLCBjYm9yOjpDQk9SVmFsdWU6Ok1h
cFZhbHVlJiYsIGNvbnN0IEF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2UmKTsKKwogLy8g
aHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLyNhdHRlc3RhdGlvbi1vYmplY3QKIFdFQkNP
UkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBidWlsZEF0dGVzdGF0aW9uT2JqZWN0KFZlY3Rvcjx1
aW50OF90PiYmIGF1dGhEYXRhLCBTdHJpbmcmJiBmb3JtYXQsIGNib3I6OkNCT1JWYWx1ZTo6TWFw
VmFsdWUmJiBzdGF0ZW1lbnRNYXAsIGNvbnN0IEF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVu
Y2UmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRv
L0ZpZG9Db25zdGFudHMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9G
aWRvQ29uc3RhbnRzLmgKaW5kZXggZWYxZTE1ZGRjMDQ2NmZhZTgyOTYxODE5NDYxMDRlMTg4MDgw
NDdiYS4uZGM3NzExYjYzYWQ2MzVlMjgyYWQyN2E5Y2I2Y2IyMTU2ZjY2NzQ3MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9Db25zdGFudHMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0NvbnN0YW50cy5o
CkBAIC0yNTUsNiArMjU1LDE5IEBAIGNvbnN0IHVpbnQ4X3Qga0N0YXBOZmNBcHBsZXRTZWxlY3Rp
b25DdGFwW10gPSB7CiBjb25zdCB1aW50OF90IGtDdGFwTmZjQXBkdUNsYSA9IDB4ODA7CiBjb25z
dCB1aW50OF90IGtDdGFwTmZjQXBkdUlucyA9IDB4MTA7CiAKKy8vIGh0dHBzOi8vZmlkb2FsbGlh
bmNlLm9yZy9zcGVjcy9maWRvLXYyLjAtcHMtMjAxNzA5MjcvZmlkby1jbGllbnQtdG8tYXV0aGVu
dGljYXRvci1wcm90b2NvbC12Mi4wLXBzLTIwMTcwOTI3Lmh0bWwjbWFuZGF0b3J5LWNvbW1hbmRz
Citjb25zdCBzaXplX3Qga0N0YXBDaGFubmVsSWRTaXplID0gNDsKK2NvbnN0IHVpbnQ4X3Qga0N0
YXBLZWVwQWxpdmVTdGF0dXNQcm9jZXNzaW5nID0gMTsKKy8vIGh0dHBzOi8vZmlkb2FsbGlhbmNl
Lm9yZy9zcGVjcy9maWRvLXYyLjAtcHMtMjAxNzA5MjcvZmlkby1jbGllbnQtdG8tYXV0aGVudGlj
YXRvci1wcm90b2NvbC12Mi4wLXBzLTIwMTcwOTI3Lmh0bWwjY29tbWFuZHMKK2NvbnN0IGludDY0
X3Qga0N0YXBNYWtlQ3JlZGVudGlhbENsaWVudERhdGFIYXNoS2V5ID0gMTsKK2NvbnN0IGludDY0
X3Qga0N0YXBNYWtlQ3JlZGVudGlhbFJwS2V5ID0gMjsKK2NvbnN0IGludDY0X3Qga0N0YXBNYWtl
Q3JlZGVudGlhbFVzZXJLZXkgPSAzOworY29uc3QgaW50NjRfdCBrQ3RhcE1ha2VDcmVkZW50aWFs
UHViS2V5Q3JlZFBhcmFtc0tleSA9IDQ7Citjb25zdCBpbnQ2NF90IGtDdGFwTWFrZUNyZWRlbnRp
YWxFeGNsdWRlTGlzdEtleSA9IDU7Citjb25zdCBpbnQ2NF90IGtDdGFwTWFrZUNyZWRlbnRpYWxF
eHRlbnNpb25zS2V5ID0gNjsKK2NvbnN0IGludDY0X3Qga0N0YXBNYWtlQ3JlZGVudGlhbFJlcXVl
c3RPcHRpb25zS2V5ID0gNzsKK2NvbnN0IGludDY0X3Qga0N0YXBHZXRBc3NlcnRpb25SZXF1ZXN0
T3B0aW9uc0tleSA9IDU7CisKIH0gLy8gbmFtZXNwYWNlIGZpZG8KIAogI2VuZGlmIC8vIEVOQUJM
RShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0KaW5k
ZXggZjdiOWY3NGU5NTQ4OWE3NmQ1NzI5OGM0ZDAzNDQ2MDA2MTU0YWZjMS4uYmVlNmI5MjM4MmNh
YWYzYjRmOWYwZTdjZTgyYzAxYTc2NzMzMjgyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2Fs
QXV0aGVudGljYXRvci5tbQpAQCAtNjUsMTUgKzY1LDE2IEBAIHN0YXRpYyBpbmxpbmUgU3RyaW5n
IGdyb3VwRm9yQXR0cmlidXRlcyhOU0RpY3Rpb25hcnkgKmF0dHJpYnV0ZXMpCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBmaWRvOwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
Cit1c2luZyBuYW1lc3BhY2UgV2ViQXV0aG47CiB1c2luZyBDQk9SID0gY2Jvcjo6Q0JPUlZhbHVl
OwogCiBuYW1lc3BhY2UgTG9jYWxBdXRoZW50aWNhdG9ySW50ZXJuYWwgewogCiAvLyBTZWUgaHR0
cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLyNmbGFncy4KLWNvbnN0IHVpbnQ4X3QgbWFrZUNy
ZWRlbnRpYWxGbGFncyA9IDBiMDEwMDAxMDE7IC8vIFVQLCBVViBhbmQgQVQgYXJlIHNldC4KLWNv
bnN0IHVpbnQ4X3Qgb3RoZXJNYWtlQ3JlZGVudGlhbEZsYWdzID0gMGIwMTAwMDAwMTsgLy8gVVAg
YW5kIEFUIGFyZSBzZXQuCi1jb25zdCB1aW50OF90IGdldEFzc2VydGlvbkZsYWdzID0gMGIwMDAw
MDEwMTsgLy8gVVAgYW5kIFVWIGFyZSBzZXQuCi1jb25zdCB1aW50OF90IG90aGVyR2V0QXNzZXJ0
aW9uRmxhZ3MgPSAwYjAwMDAwMDAxOyAvLyBVUCBpcyBzZXQuCitjb25zdCB1aW50OF90IG1ha2VD
cmVkZW50aWFsRmxhZ3MgPSB1c2VyUHJlc2VuY2VGbGFnIHwgdXNlclZlcmlmaWVkRmxhZyB8IGF0
dGVzdGVkQ3JlZGVudGlhbERhdGFJbmNsdWRlZEZsYWc7IC8vIFVQLCBVViBhbmQgQVQgYXJlIHNl
dC4KK2NvbnN0IHVpbnQ4X3Qgb3RoZXJNYWtlQ3JlZGVudGlhbEZsYWdzID0gdXNlclByZXNlbmNl
RmxhZyB8IGF0dGVzdGVkQ3JlZGVudGlhbERhdGFJbmNsdWRlZEZsYWc7IC8vIFVQIGFuZCBBVCBh
cmUgc2V0LgorY29uc3QgdWludDhfdCBnZXRBc3NlcnRpb25GbGFncyA9IHVzZXJQcmVzZW5jZUZs
YWcgfCB1c2VyVmVyaWZpZWRGbGFnOyAvLyBVUCBhbmQgVVYgYXJlIHNldC4KK2NvbnN0IHVpbnQ4
X3Qgb3RoZXJHZXRBc3NlcnRpb25GbGFncyA9IHVzZXJQcmVzZW5jZUZsYWc7IC8vIFVQIGlzIHNl
dC4KIC8vIENyZWRlbnRpYWwgSUQgaXMgY3VycmVudGx5IFNIQS0xIG9mIHRoZSBjb3JyZXNwb25k
aW5nIHB1YmxpYyBrZXkuCiBjb25zdCB1aW50MTZfdCBjcmVkZW50aWFsSWRMZW5ndGggPSAyMDsK
IGNvbnN0IHVpbnQ2NF90IGNvdW50ZXIgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkQ29ubmVjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRDb25u
ZWN0aW9uLmNwcAppbmRleCA4NTVmZGUzNDcwZmI3ODQ4NWIwYWU1OWUwOWM4NjQyMWQwMGMxMTU2
Li45ZmRkYjIyMzM3OTY5NjY5NjJlYzk3MWRiMjRmMDg4NjlkMWUxMTY4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRDb25u
ZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Nb2NrL01vY2tIaWRDb25uZWN0aW9uLmNwcApAQCAtNDQsMTUgKzQ0LDYgQEAgdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgY2JvcjsKIHVzaW5nIG5hbWVzcGFjZSBm
aWRvOwogCi1uYW1lc3BhY2UgTW9ja0hpZENvbm5lY3Rpb25JbnRlcm5hbCB7Ci0vLyBodHRwczov
L2ZpZG9hbGxpYW5jZS5vcmcvc3BlY3MvZmlkby12Mi4wLXBzLTIwMTcwOTI3L2ZpZG8tY2xpZW50
LXRvLWF1dGhlbnRpY2F0b3ItcHJvdG9jb2wtdjIuMC1wcy0yMDE3MDkyNy5odG1sI21hbmRhdG9y
eS1jb21tYW5kcwotY29uc3Qgc2l6ZV90IEN0YXBDaGFubmVsSWRTaXplID0gNDsKLWNvbnN0IHVp
bnQ4X3QgQ3RhcEtlZXBBbGl2ZVN0YXR1c1Byb2Nlc3NpbmcgPSAxOwotLy8gaHR0cHM6Ly9maWRv
YWxsaWFuY2Uub3JnL3NwZWNzL2ZpZG8tdjIuMC1wcy0yMDE3MDkyNy9maWRvLWNsaWVudC10by1h
dXRoZW50aWNhdG9yLXByb3RvY29sLXYyLjAtcHMtMjAxNzA5MjcuaHRtbCNjb21tYW5kcwotY29u
c3QgaW50NjRfdCBDdGFwTWFrZUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9uc0tleSA9IDc7Ci1jb25z
dCBpbnQ2NF90IEN0YXBHZXRBc3NlcnRpb25SZXF1ZXN0T3B0aW9uc0tleSA9IDU7Ci19Ci0KIE1v
Y2tIaWRDb25uZWN0aW9uOjpNb2NrSGlkQ29ubmVjdGlvbihJT0hJRERldmljZVJlZiBkZXZpY2Us
IGNvbnN0IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24p
CiAgICAgOiBIaWRDb25uZWN0aW9uKGRldmljZSkKICAgICAsIG1fY29uZmlndXJhdGlvbihjb25m
aWd1cmF0aW9uKQpAQCAtMTMwLDggKzEyMSw2IEBAIHZvaWQgTW9ja0hpZENvbm5lY3Rpb246OmFz
c2VtYmxlUmVxdWVzdChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogCiB2b2lkIE1vY2tIaWRDb25u
ZWN0aW9uOjpwYXJzZVJlcXVlc3QoKQogewotICAgIHVzaW5nIG5hbWVzcGFjZSBNb2NrSGlkQ29u
bmVjdGlvbkludGVybmFsOwotCiAgICAgQVNTRVJUKG1fcmVxdWVzdE1lc3NhZ2UpOwogICAgIC8v
IFNldCBzdGFnZXMuCiAgICAgaWYgKG1fcmVxdWVzdE1lc3NhZ2UtPmNtZCgpID09IEZpZG9IaWRE
ZXZpY2VDb21tYW5kOjprSW5pdCkgewpAQCAtMTYyLDcgKzE1MSw3IEBAIHZvaWQgTW9ja0hpZENv
bm5lY3Rpb246OnBhcnNlUmVxdWVzdCgpCiAgICAgICAgICAgICBBU1NFUlQocmVxdWVzdE1hcCB8
fCBjbWQgPT0gQ3RhcFJlcXVlc3RDb21tYW5kOjprQXV0aGVudGljYXRvckdldE5leHRBc3NlcnRp
b24pOwogCiAgICAgICAgICAgICBpZiAoY21kID09IEN0YXBSZXF1ZXN0Q29tbWFuZDo6a0F1dGhl
bnRpY2F0b3JNYWtlQ3JlZGVudGlhbCkgewotICAgICAgICAgICAgICAgIGF1dG8gaXQgPSByZXF1
ZXN0TWFwLT5nZXRNYXAoKS5maW5kKENCT1JWYWx1ZShDdGFwTWFrZUNyZWRlbnRpYWxSZXF1ZXN0
T3B0aW9uc0tleSkpOyAvLyBGaW5kIG9wdGlvbnMuCisgICAgICAgICAgICAgICAgYXV0byBpdCA9
IHJlcXVlc3RNYXAtPmdldE1hcCgpLmZpbmQoQ0JPUlZhbHVlKGtDdGFwTWFrZUNyZWRlbnRpYWxS
ZXF1ZXN0T3B0aW9uc0tleSkpOyAvLyBGaW5kIG9wdGlvbnMuCiAgICAgICAgICAgICAgICAgaWYg
KGl0ICE9IHJlcXVlc3RNYXAtPmdldE1hcCgpLmVuZCgpKSB7CiAgICAgICAgICAgICAgICAgICAg
IGF1dG8mIG9wdGlvbk1hcCA9IGl0LT5zZWNvbmQuZ2V0TWFwKCk7CiAKQEAgLTE3Nyw3ICsxNjYs
NyBAQCB2b2lkIE1vY2tIaWRDb25uZWN0aW9uOjpwYXJzZVJlcXVlc3QoKQogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICBpZiAoY21kID09IEN0YXBSZXF1ZXN0Q29tbWFuZDo6a0F1dGhlbnRp
Y2F0b3JHZXRBc3NlcnRpb24pIHsKLSAgICAgICAgICAgICAgICBhdXRvIGl0ID0gcmVxdWVzdE1h
cC0+Z2V0TWFwKCkuZmluZChDQk9SVmFsdWUoQ3RhcEdldEFzc2VydGlvblJlcXVlc3RPcHRpb25z
S2V5KSk7IC8vIEZpbmQgb3B0aW9ucy4KKyAgICAgICAgICAgICAgICBhdXRvIGl0ID0gcmVxdWVz
dE1hcC0+Z2V0TWFwKCkuZmluZChDQk9SVmFsdWUoa0N0YXBHZXRBc3NlcnRpb25SZXF1ZXN0T3B0
aW9uc0tleSkpOyAvLyBGaW5kIG9wdGlvbnMuCiAgICAgICAgICAgICAgICAgaWYgKGl0ICE9IHJl
cXVlc3RNYXAtPmdldE1hcCgpLmVuZCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8mIG9w
dGlvbk1hcCA9IGl0LT5zZWNvbmQuZ2V0TWFwKCk7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8g
aXRyID0gb3B0aW9uTWFwLmZpbmQoQ0JPUlZhbHVlKGtVc2VyVmVyaWZpY2F0aW9uTWFwS2V5KSk7
CkBAIC0yMDIsOCArMTkxLDYgQEAgdm9pZCBNb2NrSGlkQ29ubmVjdGlvbjo6cGFyc2VSZXF1ZXN0
KCkKIAogdm9pZCBNb2NrSGlkQ29ubmVjdGlvbjo6ZmVlZFJlcG9ydHMoKQogewotICAgIHVzaW5n
IG5hbWVzcGFjZSBNb2NrSGlkQ29ubmVjdGlvbkludGVybmFsOwotCiAgICAgaWYgKG1fc3ViU3Rh
Z2UgPT0gTW9jazo6SGlkU3ViU3RhZ2U6OkluaXQpIHsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+
IHBheWxvYWQ7CiAgICAgICAgIHBheWxvYWQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShrSGlkSW5p
dFJlc3BvbnNlU2l6ZSk7CkBAIC0yMTIsNyArMTk5LDcgQEAgdm9pZCBNb2NrSGlkQ29ubmVjdGlv
bjo6ZmVlZFJlcG9ydHMoKQogICAgICAgICBpZiAoc3RhZ2VzTWF0Y2goKSAmJiBtX2NvbmZpZ3Vy
YXRpb24uaGlkLT5lcnJvciA9PSBNb2NrOjpIaWRFcnJvcjo6V3JvbmdOb25jZSkKICAgICAgICAg
ICAgIHBheWxvYWRbMF0tLTsKICAgICAgICAgcGF5bG9hZC5ncm93KGtIaWRJbml0UmVzcG9uc2VT
aXplKTsKLSAgICAgICAgY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21WYWx1ZXMocGF5bG9hZC5kYXRh
KCkgKyB3cml0ZVBvc2l0aW9uLCBDdGFwQ2hhbm5lbElkU2l6ZSk7CisgICAgICAgIGNyeXB0b2dy
YXBoaWNhbGx5UmFuZG9tVmFsdWVzKHBheWxvYWQuZGF0YSgpICsgd3JpdGVQb3NpdGlvbiwga0N0
YXBDaGFubmVsSWRTaXplKTsKICAgICAgICAgYXV0byBjaGFubmVsID0ga0hpZEJyb2FkY2FzdENo
YW5uZWw7CiAgICAgICAgIGlmIChzdGFnZXNNYXRjaCgpICYmIG1fY29uZmlndXJhdGlvbi5oaWQt
PmVycm9yID09IE1vY2s6OkhpZEVycm9yOjpXcm9uZ0NoYW5uZWxJZCkKICAgICAgICAgICAgIGNo
YW5uZWwtLTsKQEAgLTI1Niw3ICsyNDMsNyBAQCB2b2lkIE1vY2tIaWRDb25uZWN0aW9uOjpmZWVk
UmVwb3J0cygpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGlmIChtX2NvbmZpZ3VyYXRp
b24uaGlkLT5rZWVwQWxpdmUpIHsKICAgICAgICAgICAgIG1fY29uZmlndXJhdGlvbi5oaWQtPmtl
ZXBBbGl2ZSA9IGZhbHNlOwotICAgICAgICAgICAgRmlkb0hpZEluaXRQYWNrZXQgaW5pdFBhY2tl
dChtX2N1cnJlbnRDaGFubmVsLCBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a0tlZXBBbGl2ZSwgeyBD
dGFwS2VlcEFsaXZlU3RhdHVzUHJvY2Vzc2luZyB9LCAxKTsKKyAgICAgICAgICAgIEZpZG9IaWRJ
bml0UGFja2V0IGluaXRQYWNrZXQobV9jdXJyZW50Q2hhbm5lbCwgRmlkb0hpZERldmljZUNvbW1h
bmQ6OmtLZWVwQWxpdmUsIHsga0N0YXBLZWVwQWxpdmVTdGF0dXNQcm9jZXNzaW5nIH0sIDEpOwog
ICAgICAgICAgICAgcmVjZWl2ZVJlcG9ydChpbml0UGFja2V0LmdldFNlcmlhbGl6ZWREYXRhKCkp
OwogICAgICAgICAgICAgY29udGludWVGZWVkUmVwb3J0cygpOwogICAgICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
VmlydHVhbC9WaXJ0dWFsQXV0aGVudGljYXRvck1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vVmlydHVhbC9WaXJ0dWFsQXV0aGVudGljYXRvck1h
bmFnZXIuY3BwCmluZGV4IDNhZmIwY2UyZjM1NmM1ZjU1Yjg2M2VkMDIyMjA1ZjIxZmRjMTA2ZTQu
LjI3NWIxZWI3OGI1ZWFkZjQ5MmRlNGUyMzMwN2M2MzYyOTkxN2I0NDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVhbEF1
dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9WaXJ0dWFsL1ZpcnR1YWxBdXRoZW50aWNhdG9yTWFuYWdlci5jcHAKQEAg
LTMzLDYgKzMzLDggQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK3N0cnVjdCBWaXJ0dWFsQ3Jl
ZGVudGlhbDsKKwogVmlydHVhbEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpWaXJ0dWFsQXV0aGVudGlj
YXRvck1hbmFnZXIoKQogICAgIDogQXV0aGVudGljYXRvck1hbmFnZXIoKQogewpAQCAtNDAsMTAg
KzQyLDEyIEBAIFZpcnR1YWxBdXRoZW50aWNhdG9yTWFuYWdlcjo6VmlydHVhbEF1dGhlbnRpY2F0
b3JNYW5hZ2VyKCkKIAogU3RyaW5nIFZpcnR1YWxBdXRoZW50aWNhdG9yTWFuYWdlcjo6Y3JlYXRl
QXV0aGVudGljYXRvcihjb25zdCBWaXJ0dWFsQXV0aGVudGljYXRvckNvbmZpZ3VyYXRpb24mIGNv
bmZpZykKIHsKLSAgICBpZiAoY29uZmlnLnRyYW5zcG9ydCAhPSBXZWJDb3JlOjpBdXRoZW50aWNh
dG9yVHJhbnNwb3J0OjpJbnRlcm5hbCkKKyAgICBpZiAoY29uZmlnLnRyYW5zcG9ydCAhPSBXZWJD
b3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpJbnRlcm5hbCAmJiBjb25maWcudHJhbnNwb3J0
ICE9IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6OlVzYikKICAgICAgICAgVU5JTVBM
RU1FTlRFRCgpOwogICAgIGF1dG8gaWQgPSBjcmVhdGVWZXJzaW9uNFVVSURTdHJpbmcoKTsKICAg
ICBtX3ZpcnR1YWxBdXRoZW50aWNhdG9ycy5zZXQoaWQsIG1ha2VVbmlxdWVSZWY8VmlydHVhbEF1
dGhlbnRpY2F0b3JDb25maWd1cmF0aW9uPihjb25maWcpKTsKKyAgICBWZWN0b3I8VmlydHVhbENy
ZWRlbnRpYWw+IGNyZWRlbnRpYWxzOworICAgIG1fY3JlZGVudGlhbHNCeUF1dGhlbnRpY2F0b3Iu
c2V0KGlkLCBXVEZNb3ZlKGNyZWRlbnRpYWxzKSk7CiAKICAgICByZXR1cm4gaWQ7CiB9CkBAIC01
MywxMiArNTcsMTggQEAgYm9vbCBWaXJ0dWFsQXV0aGVudGljYXRvck1hbmFnZXI6OnJlbW92ZUF1
dGhlbnRpY2F0b3IoY29uc3QgU3RyaW5nJiBpZCkKICAgICByZXR1cm4gbV92aXJ0dWFsQXV0aGVu
dGljYXRvcnMucmVtb3ZlKGlkKTsKIH0KIAordm9pZCBWaXJ0dWFsQXV0aGVudGljYXRvck1hbmFn
ZXI6OmFkZENyZWRlbnRpYWwoY29uc3QgU3RyaW5nJiBhdXRoZW50aWNhdG9ySWQsIGNvbnN0IFZp
cnR1YWxDcmVkZW50aWFsJiBjcmVkZW50aWFsKQoreworICAgIG1fY3JlZGVudGlhbHNCeUF1dGhl
bnRpY2F0b3IuZ2V0KGF1dGhlbnRpY2F0b3JJZCkuYXBwZW5kKGNyZWRlbnRpYWwpOworfQorCiBV
bmlxdWVSZWY8QXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2U+IFZpcnR1YWxBdXRoZW50aWNh
dG9yTWFuYWdlcjo6Y3JlYXRlU2VydmljZShXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0
IHRyYW5zcG9ydCwgQXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2U6Ok9ic2VydmVyJiBvYnNl
cnZlcikgY29uc3QKIHsKLSAgICBWZWN0b3I8VmlydHVhbEF1dGhlbnRpY2F0b3JDb25maWd1cmF0
aW9uPiBjb25maWdzOwotICAgIGZvciAoYXV0byYgY29uZmlnIDogbV92aXJ0dWFsQXV0aGVudGlj
YXRvcnMudmFsdWVzKCkpIHsKLSAgICAgICAgaWYgKGNvbmZpZy5nZXQoKS50cmFuc3BvcnQgPT0g
dHJhbnNwb3J0KQotICAgICAgICAgICAgY29uZmlncy5hcHBlbmQoY29uZmlnLmdldCgpKTsKKyAg
ICBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgVmlydHVhbEF1dGhlbnRpY2F0b3JDb25maWd1cmF0
aW9uPj4gY29uZmlnczsKKyAgICBmb3IgKGF1dG8mIGlkIDogbV92aXJ0dWFsQXV0aGVudGljYXRv
cnMua2V5cygpKSB7CisgICAgICAgIGF1dG8gY29uZmlnID0gbV92aXJ0dWFsQXV0aGVudGljYXRv
cnMuZ2V0KGlkKTsKKyAgICAgICAgaWYgKGNvbmZpZy0+dHJhbnNwb3J0ID09IHRyYW5zcG9ydCkK
KyAgICAgICAgICAgIGNvbmZpZ3MuYXBwZW5kKHN0ZDo6cGFpciB7IGlkLCAqY29uZmlnIH0pOwog
ICAgIH0KICAgICByZXR1cm4gVmlydHVhbFNlcnZpY2U6OmNyZWF0ZVZpcnR1YWwodHJhbnNwb3J0
LCBvYnNlcnZlciwgY29uZmlncyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9WaXJ0dWFsL1ZpcnR1YWxBdXRoZW50aWNhdG9yTWFuYWdl
ci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vVmlydHVhbC9W
aXJ0dWFsQXV0aGVudGljYXRvck1hbmFnZXIuaAppbmRleCBmNWZjNWY5NWUyYzBiMzA3YzcyMzY2
OWEwNWM2YjBhZWFlMDBhOTU5Li4xMWRmMDk2MWJhNWZmMTliODBhMjVlY2NjMWViYjVjYWQ4YTcx
NGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9WaXJ0dWFsL1ZpcnR1YWxBdXRoZW50aWNhdG9yTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVhbEF1dGhlbnRpY2F0
b3JNYW5hZ2VyLmgKQEAgLTI5LDggKzI5LDExIEBACiAKICNpbmNsdWRlICJBdXRoZW50aWNhdG9y
TWFuYWdlci5oIgogI2luY2x1ZGUgIlZpcnR1YWxBdXRoZW50aWNhdG9yQ29uZmlndXJhdGlvbi5o
IgorI2luY2x1ZGUgIlZpcnR1YWxDcmVkZW50aWFsLmgiCisjaW5jbHVkZSA8d3RmL1dlYWtQdHIu
aD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CitzdHJ1Y3QgVmlydHVhbENyZWRlbnRpYWw7CiAKIGNs
YXNzIFZpcnR1YWxBdXRoZW50aWNhdG9yTWFuYWdlciBmaW5hbCA6IHB1YmxpYyBBdXRoZW50aWNh
dG9yTWFuYWdlciB7CiBwdWJsaWM6CkBAIC00MCwxNCArNDMsMjAgQEAgcHVibGljOgogICAgIGJv
b2wgcmVtb3ZlQXV0aGVudGljYXRvcihjb25zdCBTdHJpbmcmIC8qYXV0aGVudGljYXRvcklkKi8p
OwogCiAgICAgYm9vbCBpc1ZpcnR1YWwoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9Ci0g
ICAgdm9pZCBydW5QYW5lbCgpOwotICAgIHZvaWQgc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2UoVmVj
dG9yPFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+PiYmLCBXZWJB
dXRoZW50aWNhdGlvblNvdXJjZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpBdXRo
ZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UqKT4mJik7Ci0gICAgdm9pZCBkZWNpZGVQb2xpY3lG
b3JMb2NhbEF1dGhlbnRpY2F0b3IoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChMb2NhbEF1dGhlbnRp
Y2F0b3JQb2xpY3kpPiYmKTsKIAorICAgIHZvaWQgYWRkQ3JlZGVudGlhbChjb25zdCBTdHJpbmcm
LCBjb25zdCBWaXJ0dWFsQ3JlZGVudGlhbCYpOworCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBkZWNp
ZGVQb2xpY3lGb3JMb2NhbEF1dGhlbnRpY2F0b3IoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChMb2Nh
bEF1dGhlbnRpY2F0b3JQb2xpY3kpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNlbGVjdEFzc2Vy
dGlvblJlc3BvbnNlKFZlY3RvcjxSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlPj4mJiwgV2ViQXV0aGVudGljYXRpb25Tb3VyY2UsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoV2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKik+JiYpIG92ZXJyaWRl
OworICAgIAorICAgIAogcHJpdmF0ZToKICAgICBVbmlxdWVSZWY8QXV0aGVudGljYXRvclRyYW5z
cG9ydFNlcnZpY2U+IGNyZWF0ZVNlcnZpY2UoV2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9y
dCwgQXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2U6Ok9ic2VydmVyJikgY29uc3QgZmluYWw7
CisgICAgdm9pZCBydW5QYW5lbCgpIG92ZXJyaWRlOwogCiAgICAgSGFzaE1hcDxTdHJpbmcsIFVu
aXF1ZVJlZjxWaXJ0dWFsQXV0aGVudGljYXRvckNvbmZpZ3VyYXRpb24+PiBtX3ZpcnR1YWxBdXRo
ZW50aWNhdG9yczsKKyAgICBIYXNoTWFwPFN0cmluZywgVmVjdG9yPFZpcnR1YWxDcmVkZW50aWFs
Pj4gbV9jcmVkZW50aWFsc0J5QXV0aGVudGljYXRvcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vVmlydHVhbC9WaXJ0dWFsQXV0aGVudGljYXRvclV0aWxzLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9WaXJ0dWFsL1ZpcnR1YWxBdXRoZW50aWNhdG9yVXRp
bHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43NzdiOGNiNjc5NjcyOWJjNzVhOGM0MzYzNmE5YTc0YTE1NWViZDdh
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vVmlydHVhbC9WaXJ0dWFsQXV0aGVudGljYXRvclV0aWxzLmgKQEAgLTAsMCArMSw0MSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9BVVRITikKKwor
I2luY2x1ZGUgIlZpcnR1YWxBdXRoZW50aWNhdG9yQ29uZmlndXJhdGlvbi5oIgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKwordWludDhfdCBmbGFnc0ZvckNvbmZpZyhjb25zdCBWaXJ0dWFsQXV0aGVu
dGljYXRvckNvbmZpZ3VyYXRpb24mKTsKK1JldGFpblB0cjxTZWNLZXlSZWY+IGNyZWF0ZVByaXZh
dGVLZXkoKTsKK3N0ZDo6cGFpcjxWZWN0b3I8dWludDhfdD4sIFZlY3Rvcjx1aW50OF90Pj4gY3Jl
ZGVudGlhbElkQW5kQ29zZVB1YktleUZvclByaXZhdGVLZXkoUmV0YWluUHRyPFNlY0tleVJlZj4g
cHJpdmF0ZUtleSk7CitTdHJpbmcgYmFzZTY0UHJpdmF0ZUtleShSZXRhaW5QdHI8U2VjS2V5UmVm
PiBwcml2YXRlS2V5KTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFC
TEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vVmlydHVhbC9WaXJ0dWFsQXV0aGVudGljYXRvclV0aWxzLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vVmlydHVhbC9WaXJ0dWFsQXV0aGVu
dGljYXRvclV0aWxzLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2NzU5OTdkMzdhN2RkNzViNGI1NGU2MjZlODhk
MDBmM2UyMGFmZjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9WaXJ0dWFsL1ZpcnR1YWxBdXRoZW50aWNhdG9yVXRpbHMubW0KQEAg
LTAsMCArMSwxMTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJWaXJ0dWFsQXV0aGVudGljYXRvclV0aWxzLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhO
KQorCisjaW5jbHVkZSA8V2ViQ29yZS9XZWJBdXRoZW50aWNhdGlvbkNvbnN0YW50cy5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvV2ViQXV0aGVudGljYXRpb25VdGlscy5oPgorI2luY2x1ZGUgPHBhbC9j
cnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CisKK3VpbnQ4X3QgZmxhZ3NGb3JDb25maWcoY29uc3QgVmlydHVhbEF1dGhl
bnRpY2F0b3JDb25maWd1cmF0aW9uJiBjb25maWcpCit7CisgICAgdWludDhfdCBmbGFncyA9IFdl
YkF1dGhuOjphdHRlc3RlZENyZWRlbnRpYWxEYXRhSW5jbHVkZWRGbGFnOworICAgIGlmIChjb25m
aWcuaXNVc2VyQ29uc2VudGluZykKKyAgICAgICAgZmxhZ3MgPSBmbGFncyB8IFdlYkF1dGhuOjp1
c2VyUHJlc2VuY2VGbGFnOworICAgIGlmIChjb25maWcuaXNVc2VyVmVyaWZpZWQpCisgICAgICAg
IGZsYWdzID0gZmxhZ3MgfCBXZWJBdXRobjo6dXNlclZlcmlmaWVkRmxhZzsKKyAgICByZXR1cm4g
ZmxhZ3M7Cit9CisKK1JldGFpblB0cjxTZWNLZXlSZWY+IGNyZWF0ZVByaXZhdGVLZXkoKQorewor
ICAgIE5TRGljdGlvbmFyeSogb3B0aW9ucyA9IEB7CisgICAgICAgIChpZClrU2VjQXR0cktleVR5
cGU6IChpZClrU2VjQXR0cktleVR5cGVFQ1NFQ1ByaW1lUmFuZG9tLAorICAgICAgICAoaWQpa1Nl
Y0F0dHJLZXlDbGFzczogKGlkKWtTZWNBdHRyS2V5Q2xhc3NQcml2YXRlLAorICAgICAgICAoaWQp
a1NlY0F0dHJLZXlTaXplSW5CaXRzOiBAMjU2LAorICAgIH07CisgICAgQ0ZFcnJvclJlZiBlcnJv
clJlZiA9IG51bGxwdHI7CisgICAgYXV0byBrZXkgPSBhZG9wdENGKFNlY0tleUNyZWF0ZVJhbmRv
bUtleSgKKyAgICAgICAgKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilvcHRpb25zLAorICAgICAg
ICAmZXJyb3JSZWYKKyAgICApKTsKKyAgICBpZiAoZXJyb3JSZWYpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIHJldHVybiBrZXk7Cit9CisKK3N0ZDo6cGFpcjxWZWN0b3I8dWludDhfdD4s
IFZlY3Rvcjx1aW50OF90Pj4gY3JlZGVudGlhbElkQW5kQ29zZVB1YktleUZvclByaXZhdGVLZXko
UmV0YWluUHRyPFNlY0tleVJlZj4gcHJpdmF0ZUtleSkKK3sKKyAgICBSZXRhaW5QdHI8Q0ZEYXRh
UmVmPiBwdWJsaWNLZXlEYXRhUmVmOworICAgIHsKKyAgICAgICAgYXV0byBwdWJsaWNLZXkgPSBh
ZG9wdENGKFNlY0tleUNvcHlQdWJsaWNLZXkocHJpdmF0ZUtleS5nZXQoKSkpOworICAgICAgICBD
RkVycm9yUmVmIGVycm9yUmVmID0gbnVsbHB0cjsKKyAgICAgICAgcHVibGljS2V5RGF0YVJlZiA9
IGFkb3B0Q0YoU2VjS2V5Q29weUV4dGVybmFsUmVwcmVzZW50YXRpb24ocHVibGljS2V5LmdldCgp
LCAmZXJyb3JSZWYpKTsKKyAgICAgICAgYXV0byByZXRhaW5FcnJvciA9IGFkb3B0Q0YoZXJyb3JS
ZWYpOworICAgICAgICBBU1NFUlQoIWVycm9yUmVmKTsKKyAgICAgICAgQVNTRVJUKCgoTlNEYXRh
ICopcHVibGljS2V5RGF0YVJlZi5nZXQoKSkubGVuZ3RoID09ICgxICsgMiAqIEVTMjU2RmllbGRF
bGVtZW50TGVuZ3RoKSk7IC8vIDA0IHwgWCB8IFkKKyAgICB9CisgICAgTlNEYXRhICpuc1B1Ymxp
Y0tleURhdGEgPSAoTlNEYXRhICopcHVibGljS2V5RGF0YVJlZi5nZXQoKTsKKworICAgIFZlY3Rv
cjx1aW50OF90PiBjcmVkZW50aWFsSWQ7CisgICAgeworICAgICAgICBhdXRvIGRpZ2VzdCA9IFBB
TDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hB
XzEpOworICAgICAgICBkaWdlc3QtPmFkZEJ5dGVzKG5zUHVibGljS2V5RGF0YS5ieXRlcywgbnNQ
dWJsaWNLZXlEYXRhLmxlbmd0aCk7CisgICAgICAgIGNyZWRlbnRpYWxJZCA9IGRpZ2VzdC0+Y29t
cHV0ZUhhc2goKTsKKyAgICB9CisKKyAgICBWZWN0b3I8dWludDhfdD4gY29zZVB1YmxpY0tleTsK
KyAgICB7CisgICAgICAgIC8vIENPU0UgRW5jb2RpbmcKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+
IHgoRVMyNTZGaWVsZEVsZW1lbnRMZW5ndGgpOworICAgICAgICBbbnNQdWJsaWNLZXlEYXRhIGdl
dEJ5dGVzOiB4LmRhdGEoKSByYW5nZTpOU01ha2VSYW5nZSgxLCBFUzI1NkZpZWxkRWxlbWVudExl
bmd0aCldOworICAgICAgICBWZWN0b3I8dWludDhfdD4geShFUzI1NkZpZWxkRWxlbWVudExlbmd0
aCk7CisgICAgICAgIFtuc1B1YmxpY0tleURhdGEgZ2V0Qnl0ZXM6IHkuZGF0YSgpIHJhbmdlOk5T
TWFrZVJhbmdlKDEgKyBFUzI1NkZpZWxkRWxlbWVudExlbmd0aCwgRVMyNTZGaWVsZEVsZW1lbnRM
ZW5ndGgpXTsKKyAgICAgICAgY29zZVB1YmxpY0tleSA9IGVuY29kZUVTMjU2UHVibGljS2V5QXND
Qk9SKFdURk1vdmUoeCksIFdURk1vdmUoeSkpOworICAgIH0KKyAgICByZXR1cm4gc3RkOjpwYWly
IHsgY3JlZGVudGlhbElkLCBjb3NlUHVibGljS2V5IH07Cit9CisKK1N0cmluZyBiYXNlNjRQcml2
YXRlS2V5KFJldGFpblB0cjxTZWNLZXlSZWY+IHByaXZhdGVLZXkpCit7CisgICAgQ0ZFcnJvclJl
ZiBlcnJvclJlZiA9IG51bGxwdHI7CisgICAgYXV0byBwcml2YXRlS2V5UmVwID0gYWRvcHRDRihT
ZWNLZXlDb3B5RXh0ZXJuYWxSZXByZXNlbnRhdGlvbigoX19icmlkZ2UgU2VjS2V5UmVmKSgoaWQp
cHJpdmF0ZUtleS5nZXQoKSksICZlcnJvclJlZikpOworICAgIGF1dG8gcmV0YWluRXJyb3IgPSBh
ZG9wdENGKGVycm9yUmVmKTsKKyAgICBpZiAoZXJyb3JSZWYpIHsKKyAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAiIjsKKyAgICB9CisgICAgTlNEYXRhICpuc1By
aXZhdGVLZXlSZXAgPSAoTlNEYXRhICopcHJpdmF0ZUtleVJlcC5nZXQoKTsKKworICAgIHJldHVy
biBTdHJpbmcoW25zUHJpdmF0ZUtleVJlcCBiYXNlNjRFbmNvZGVkU3RyaW5nV2l0aE9wdGlvbnM6
MF0pOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJf
QVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9WaXJ0dWFsL1ZpcnR1YWxDcmVkZW50aWFsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9WaXJ0dWFsL1ZpcnR1YWxDcmVkZW50aWFsLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYTE2OWZmZTBjMDgyZjk3NjM1MmMxZDJkZGRlMGMwODMzNjAxNWY2OQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwv
VmlydHVhbENyZWRlbnRpYWwuaApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisjaW5jbHVkZSA8V2ViQ29yZS9BdXRo
ZW50aWNhdG9yVHJhbnNwb3J0Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgVmlydHVhbENyZWRlbnRpYWwgeworICAgIFdU
Rl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKKyAgICBWZWN0b3I8dWludDhfdD4gY3JlZGVu
dGlhbElkOworICAgIFN0cmluZyBycElkOworICAgIFN0cmluZyBwcml2YXRlS2V5OworICAgIHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiB1c2VySGFuZGxlOworICAgIHVpbnQ2NF90IHNp
Z25Db3VudDsKKyAgICBib29sIGlzUmVzaWRlbnRDcmVkZW50aWFsOworICAgIGJvb2wgaXNWZXJp
ZmljYXRpb25SZXF1aXJlZDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYg
Ly8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVhbEhpZENvbm5lY3Rpb24uY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vVmlydHVhbC9WaXJ0dWFsSGlk
Q29ubmVjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzM0OGJjMjFlMWNkMzA0YjRjNjI2NjMxMzA4Yjlj
YTM2YWJlY2RmYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVhbEhpZENvbm5lY3Rpb24uY3BwCkBAIC0wLDAg
KzEsMjQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlZp
cnR1YWxIaWRDb25uZWN0aW9uLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisjaW5jbHVk
ZSAiVmlydHVhbEF1dGhlbnRpY2F0b3JNYW5hZ2VyLmgiCisjaW5jbHVkZSAiVmlydHVhbEF1dGhl
bnRpY2F0b3JVdGlscy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ0JPUlJlYWRlci5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvQ0JPUldyaXRlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRmlkb0NvbnN0YW50
cy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvV2ViQXV0aGVudGljYXRpb25VdGlscy5oPgorI2luY2x1
ZGUgPHd0Zi9CbG9ja1B0ci5oPgorI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRv
bU51bWJlci5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisKK25hbWVzcGFjZSBXZWJLaXQg
ewordXNpbmcgbmFtZXNwYWNlIGNib3I7Cit1c2luZyBuYW1lc3BhY2UgZmlkbzsKK3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOworCitjb25zdCBzaXplX3QgQ3RhcENoYW5uZWxJZFNpemUgPSA0Owor
CitWaXJ0dWFsSGlkQ29ubmVjdGlvbjo6VmlydHVhbEhpZENvbm5lY3Rpb24oY29uc3QgU3RyaW5n
JiBhdXRoZW50aWNhdG9ySWQsIGNvbnN0IFZpcnR1YWxBdXRoZW50aWNhdG9yQ29uZmlndXJhdGlv
biYgY29uZmlndXJhdGlvbiwgY29uc3QgV2Vha1B0cjxWaXJ0dWFsQXV0aGVudGljYXRvck1hbmFn
ZXI+JiBtYW5hZ2VyKQorICAgIDogSGlkQ29ubmVjdGlvbihudWxscHRyKQorICAgICwgbV9tYW5h
Z2VyKG1hbmFnZXIpCisgICAgLCBtX2NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbikKKyAgICAs
IG1fYXV0aGVudGljYXRvcklkKGF1dGhlbnRpY2F0b3JJZCkKK3sKK30KKwordm9pZCBWaXJ0dWFs
SGlkQ29ubmVjdGlvbjo6aW5pdGlhbGl6ZSgpCit7CisgICAgc2V0SXNJbml0aWFsaXplZCh0cnVl
KTsKK30KKwordm9pZCBWaXJ0dWFsSGlkQ29ubmVjdGlvbjo6dGVybWluYXRlKCkKK3sKKyAgICBz
ZXRJc0luaXRpYWxpemVkKGZhbHNlKTsKK30KKworYXV0byBWaXJ0dWFsSGlkQ29ubmVjdGlvbjo6
c2VuZFN5bmMoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSAtPiBEYXRhU2VudAoreworICAg
IEFTU0VSVChpc0luaXRpYWxpemVkKCkpOworICAgIHJldHVybiBEYXRhU2VudDo6WWVzOworfQor
Cit2b2lkIFZpcnR1YWxIaWRDb25uZWN0aW9uOjpzZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEs
IERhdGFTZW50Q2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBBU1NFUlQoaXNJbml0aWFsaXpl
ZCgpKTsKKyAgICBhdXRvIHRhc2sgPSBtYWtlQmxvY2tQdHIoW3dlYWtUaGlzID0gV2Vha1B0ciB7
ICp0aGlzIH0sIGRhdGEgPSBXVEZNb3ZlKGRhdGEpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spXSgpIG11dGFibGUgeworICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKyAg
ICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrVGhpcywgZGF0YSA9IFdURk1vdmUo
ZGF0YSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAgICAg
ICAgICBpZiAoIXdlYWtUaGlzKSB7CisgICAgICAgICAgICAgICAgY2FsbGJhY2soRGF0YVNlbnQ6
Ok5vKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHdlYWtUaGlzLT5hc3NlbWJsZVJlcXVlc3QoV1RGTW92ZShkYXRhKSk7CisKKyAgICAgICAg
ICAgIGNhbGxiYWNrKERhdGFTZW50OjpZZXMpOworICAgICAgICB9KTsKKyAgICB9KTsKKyAgICBk
aXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BS
SU9SSVRZX0RFRkFVTFQsIDApLCB0YXNrLmdldCgpKTsKK30KKwordm9pZCBWaXJ0dWFsSGlkQ29u
bmVjdGlvbjo6YXNzZW1ibGVSZXF1ZXN0KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCit7CisgICAg
aWYgKCFtX3JlcXVlc3RNZXNzYWdlKSB7CisgICAgICAgIG1fcmVxdWVzdE1lc3NhZ2UgPSBGaWRv
SGlkTWVzc2FnZTo6Y3JlYXRlRnJvbVNlcmlhbGl6ZWREYXRhKGRhdGEpOworICAgICAgICBBU1NF
UlQobV9yZXF1ZXN0TWVzc2FnZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgYXV0byBzdGF0dXMg
PSBtX3JlcXVlc3RNZXNzYWdlLT5hZGRDb250aW51YXRpb25QYWNrZXQoZGF0YSk7CisgICAgICAg
IEFTU0VSVF9VTlVTRUQoc3RhdHVzLCBzdGF0dXMpOworICAgIH0KKworICAgIGlmIChtX3JlcXVl
c3RNZXNzYWdlLT5tZXNzYWdlQ29tcGxldGUoKSkKKyAgICAgICAgcGFyc2VSZXF1ZXN0KCk7Cit9
CisKK3ZvaWQgVmlydHVhbEhpZENvbm5lY3Rpb246OnJlY2VpdmVIaWRNZXNzYWdlKGZpZG86OkZp
ZG9IaWRNZXNzYWdlJiYgbWVzc2FnZSkKK3sKKyAgICB3aGlsZSAobWVzc2FnZS5udW1QYWNrZXRz
KCkpIHsKKyAgICAgICAgYXV0byByZXBvcnQgPSBtZXNzYWdlLnBvcE5leHRQYWNrZXQoKTsKKyAg
ICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtyZXBvcnQgPSBXVEZNb3ZlKHJlcG9ydCks
IHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBp
ZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHdlYWtU
aGlzLT5yZWNlaXZlUmVwb3J0KFdURk1vdmUocmVwb3J0KSk7CisgICAgICAgIH0pOworICAgIH0K
K30KKwordm9pZCBWaXJ0dWFsSGlkQ29ubmVjdGlvbjo6cmVjaWV2ZVJlc3BvbnNlQ29kZShmaWRv
OjpDdGFwRGV2aWNlUmVzcG9uc2VDb2RlIGNvZGUpCit7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1
ZmZlcjsKKyAgICBidWZmZXIuYXBwZW5kKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGNvZGUpKTsKKwor
ICAgIGF1dG8gbWVzc2FnZSA9IEZpZG9IaWRNZXNzYWdlOjpjcmVhdGUobV9jdXJyZW50Q2hhbm5l
bCwgRmlkb0hpZERldmljZUNvbW1hbmQ6OmtDYm9yLCBXVEZNb3ZlKGJ1ZmZlcikpOworICAgIHJl
Y2VpdmVIaWRNZXNzYWdlKFdURk1vdmUoKm1lc3NhZ2UpKTsKK30KKwordm9pZCBWaXJ0dWFsSGlk
Q29ubmVjdGlvbjo6cGFyc2VSZXF1ZXN0KCkKK3sKKyAgICBpZiAoIW1fcmVxdWVzdE1lc3NhZ2Up
CisgICAgICAgIHJldHVybjsKKyAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgcmV0dXJuOwor
ICAgIGF1dG8qIG1hbmFnZXIgPSBtX21hbmFnZXIuZ2V0KCk7CisgICAgbV9jdXJyZW50Q2hhbm5l
bCA9IG1fcmVxdWVzdE1lc3NhZ2UtPmNoYW5uZWxJZCgpOworICAgIHN3aXRjaCAobV9yZXF1ZXN0
TWVzc2FnZS0+Y21kKCkpIHsKKyAgICBjYXNlIEZpZG9IaWREZXZpY2VDb21tYW5kOjprSW5pdDog
eworICAgICAgICBtX25vbmNlID0gbV9yZXF1ZXN0TWVzc2FnZS0+Z2V0TWVzc2FnZVBheWxvYWQo
KTsKKyAgICAgICAgQVNTRVJUKG1fbm9uY2Uuc2l6ZSgpID09IGtIaWRJbml0Tm9uY2VMZW5ndGgp
OworICAgICAgICBWZWN0b3I8dWludDhfdD4gcGF5bG9hZDsKKyAgICAgICAgcGF5bG9hZC5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KGtIaWRJbml0UmVzcG9uc2VTaXplKTsKKyAgICAgICAgcGF5bG9h
ZC5hcHBlbmRWZWN0b3IobV9ub25jZSk7CisgICAgICAgIHNpemVfdCB3cml0ZVBvc2l0aW9uID0g
cGF5bG9hZC5zaXplKCk7CisgICAgICAgIHBheWxvYWQuZ3JvdyhrSGlkSW5pdFJlc3BvbnNlU2l6
ZSk7CisgICAgICAgIGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tVmFsdWVzKHBheWxvYWQuZGF0YSgp
ICsgd3JpdGVQb3NpdGlvbiwgQ3RhcENoYW5uZWxJZFNpemUpOworICAgICAgICBhdXRvIGNoYW5u
ZWwgPSBrSGlkQnJvYWRjYXN0Q2hhbm5lbDsKKyAgICAgICAgRmlkb0hpZEluaXRQYWNrZXQgaW5p
dFBhY2tldChjaGFubmVsLCBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a0luaXQsIFdURk1vdmUocGF5
bG9hZCksIHBheWxvYWQuc2l6ZSgpKTsKKyAgICAgICAgcmVjZWl2ZVJlcG9ydChpbml0UGFja2V0
LmdldFNlcmlhbGl6ZWREYXRhKCkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBG
aWRvSGlkRGV2aWNlQ29tbWFuZDo6a0Nib3I6IHsKKyAgICAgICAgYXV0byBwYXlsb2FkID0gbV9y
ZXF1ZXN0TWVzc2FnZS0+Z2V0TWVzc2FnZVBheWxvYWQoKTsKKyAgICAgICAgQVNTRVJUKHBheWxv
YWQuc2l6ZSgpKTsKKyAgICAgICAgYXV0byBjbWQgPSBzdGF0aWNfY2FzdDxDdGFwUmVxdWVzdENv
bW1hbmQ+KHBheWxvYWRbMF0pOworICAgICAgICBwYXlsb2FkLnJlbW92ZSgwKTsKKyAgICAgICAg
YXV0byByZXF1ZXN0TWFwID0gQ0JPUlJlYWRlcjo6cmVhZChwYXlsb2FkKTsKKyAgICAgICAgQVNT
RVJUKHJlcXVlc3RNYXAgfHwgY21kID09IEN0YXBSZXF1ZXN0Q29tbWFuZDo6a0F1dGhlbnRpY2F0
b3JHZXROZXh0QXNzZXJ0aW9uKTsKKyAgICAgICAgaWYgKGNtZCA9PSBDdGFwUmVxdWVzdENvbW1h
bmQ6OmtBdXRoZW50aWNhdG9yTWFrZUNyZWRlbnRpYWwpIHsKKyAgICAgICAgICAgIFZpcnR1YWxD
cmVkZW50aWFsIGNyZWRlbnRpYWw7CisgICAgICAgICAgICBhdXRvIGl0ID0gcmVxdWVzdE1hcC0+
Z2V0TWFwKCkuZmluZChDQk9SVmFsdWUoa0N0YXBNYWtlQ3JlZGVudGlhbFJlcXVlc3RPcHRpb25z
S2V5KSk7IC8vIEZpbmQgb3B0aW9ucy4KKyAgICAgICAgICAgIGlmIChpdCAhPSByZXF1ZXN0TWFw
LT5nZXRNYXAoKS5lbmQoKSkgeworICAgICAgICAgICAgICAgIGF1dG8mIG9wdGlvbk1hcCA9IGl0
LT5zZWNvbmQuZ2V0TWFwKCk7CisKKyAgICAgICAgICAgICAgICBhdXRvIGl0ciA9IG9wdGlvbk1h
cC5maW5kKENCT1JWYWx1ZShrUmVzaWRlbnRLZXlNYXBLZXkpKTsKKyAgICAgICAgICAgICAgICBp
ZiAoaXRyICE9IG9wdGlvbk1hcC5lbmQoKSkgeworICAgICAgICAgICAgICAgICAgICBhdXRvIHJl
cXVpcmVSZXNpZGVudEtleSA9IGl0ci0+c2Vjb25kLmdldEJvb2woKTsKKyAgICAgICAgICAgICAg
ICAgICAgLy8gaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL3NwZWNzL2ZpZG8tdjIuMS1yZC0yMDIx
MDMwOS9maWRvLWNsaWVudC10by1hdXRoZW50aWNhdG9yLXByb3RvY29sLXYyLjEtcmQtMjAyMTAz
MDkuaHRtbCNvcC1tYWtlY3JlZC1zdGVwLW9wdGlvbnMKKyAgICAgICAgICAgICAgICAgICAgaWYg
KHJlcXVpcmVSZXNpZGVudEtleSAmJiAhbV9jb25maWd1cmF0aW9uLmhhc1Jlc2lkZW50S2V5KSB7
CisgICAgICAgICAgICAgICAgICAgICAgICByZWNpZXZlUmVzcG9uc2VDb2RlKEN0YXBEZXZpY2VS
ZXNwb25zZUNvZGU6OmtDdGFwMkVyclVuc3VwcG9ydGVkT3B0aW9uKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICBpZiAocmVxdWlyZVJlc2lkZW50S2V5KQorICAgICAgICAgICAgICAgICAgICAgICAgY3Jl
ZGVudGlhbC5pc1Jlc2lkZW50Q3JlZGVudGlhbCA9IHRydWU7CisgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgaXRyID0gb3B0aW9uTWFwLmZpbmQoQ0JPUlZhbHVlKGtVc2VyVmVy
aWZpY2F0aW9uTWFwS2V5KSk7CisgICAgICAgICAgICAgICAgaWYgKGl0ciAhPSBvcHRpb25NYXAu
ZW5kKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byByZXF1aXJlVXNlclZlcmlmaWNhdGlv
biA9IGl0ci0+c2Vjb25kLmdldEJvb2woKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJlcXVp
cmVVc2VyVmVyaWZpY2F0aW9uICYmICFtX2NvbmZpZ3VyYXRpb24uaGFzVXNlclZlcmlmaWNhdGlv
bikgeworICAgICAgICAgICAgICAgICAgICAgICAgcmVjaWV2ZVJlc3BvbnNlQ29kZShDdGFwRGV2
aWNlUmVzcG9uc2VDb2RlOjprQ3RhcDJFcnJJbnZhbGlkT3B0aW9uKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICBpZiAocmVxdWlyZVVzZXJWZXJpZmljYXRpb24gJiYgIW1fY29uZmlndXJhdGlvbi5pc1Vz
ZXJWZXJpZmllZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmVjaWV2ZVJlc3BvbnNlQ29k
ZShDdGFwRGV2aWNlUmVzcG9uc2VDb2RlOjprQ3RhcDJFcnJPcGVyYXRpb25EZW5pZWQpOworICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgIGNyZWRlbnRpYWwuaXNWZXJpZmljYXRpb25SZXF1aXJlZCA9IHJlcXVp
cmVVc2VyVmVyaWZpY2F0aW9uOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGl0ID0gcmVxdWVzdE1hcC0+Z2V0TWFwKCkuZmluZChDQk9SVmFsdWUoa0N0YXBN
YWtlQ3JlZGVudGlhbFJwS2V5KSk7CisgICAgICAgICAgICBpZiAoaXQgPT0gcmVxdWVzdE1hcC0+
Z2V0TWFwKCkuZW5kKCkpIHsKKyAgICAgICAgICAgICAgICByZWNpZXZlUmVzcG9uc2VDb2RlKEN0
YXBEZXZpY2VSZXNwb25zZUNvZGU6OmtDdGFwMkVyck1pc3NpbmdQYXJhbWV0ZXIpOworICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGF1dG8mIHJwRW50
aXR5ID0gaXQtPnNlY29uZC5nZXRNYXAoKTsKKyAgICAgICAgICAgIGl0ID0gcnBFbnRpdHkuZmlu
ZChDQk9SVmFsdWUoa0VudGl0eUlkTWFwS2V5KSk7CisgICAgICAgICAgICBpZiAoaXQgPT0gcnBF
bnRpdHkuZW5kKCkpIHsKKyAgICAgICAgICAgICAgICByZWNpZXZlUmVzcG9uc2VDb2RlKEN0YXBE
ZXZpY2VSZXNwb25zZUNvZGU6OmtDdGFwMkVyck1pc3NpbmdQYXJhbWV0ZXIpOworICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNyZWRlbnRpYWwucnBJ
ZCA9IGl0LT5zZWNvbmQuZ2V0U3RyaW5nKCk7CisgICAgICAgICAgICBhdXRvIHByaXZhdGVLZXkg
PSBjcmVhdGVQcml2YXRlS2V5KCk7CisgICAgICAgICAgICBjcmVkZW50aWFsLnByaXZhdGVLZXkg
PSBiYXNlNjRQcml2YXRlS2V5KHByaXZhdGVLZXkpOworCisgICAgICAgICAgICBpdCA9IHJlcXVl
c3RNYXAtPmdldE1hcCgpLmZpbmQoQ0JPUlZhbHVlKGtDdGFwTWFrZUNyZWRlbnRpYWxVc2VyS2V5
KSk7CisgICAgICAgICAgICBpZiAoaXQgPT0gcmVxdWVzdE1hcC0+Z2V0TWFwKCkuZW5kKCkpIHsK
KyAgICAgICAgICAgICAgICByZWNpZXZlUmVzcG9uc2VDb2RlKEN0YXBEZXZpY2VSZXNwb25zZUNv
ZGU6OmtDdGFwMkVyck1pc3NpbmdQYXJhbWV0ZXIpOworICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGF1dG8mIHVzZXJFbnRpdHkgPSBpdC0+c2Vjb25k
LmdldE1hcCgpOworICAgICAgICAgICAgaXQgPSB1c2VyRW50aXR5LmZpbmQoQ0JPUlZhbHVlKGtF
bnRpdHlJZE1hcEtleSkpOworICAgICAgICAgICAgaWYgKGl0ID09IHVzZXJFbnRpdHkuZW5kKCkp
IHsKKyAgICAgICAgICAgICAgICByZWNpZXZlUmVzcG9uc2VDb2RlKEN0YXBEZXZpY2VSZXNwb25z
ZUNvZGU6OmtDdGFwMkVyck1pc3NpbmdQYXJhbWV0ZXIpOworICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNyZWRlbnRpYWwudXNlckhhbmRsZSA9IGl0
LT5zZWNvbmQuZ2V0Qnl0ZVN0cmluZygpOworCisgICAgICAgICAgICBtYW5hZ2VyLT5hZGRDcmVk
ZW50aWFsKG1fYXV0aGVudGljYXRvcklkLCBjcmVkZW50aWFsKTsKKyAgICAgICAgICAgIGF1dG8g
Y3JlZGVudGlhbElkQW5kQ29zZVB1YktleSA9IGNyZWRlbnRpYWxJZEFuZENvc2VQdWJLZXlGb3JQ
cml2YXRlS2V5KHByaXZhdGVLZXkpOworCisgICAgICAgICAgICBhdXRvIGF0dGVzdGVkQ3JlZGVu
dGlhbERhdGEgPSBidWlsZEF0dGVzdGVkQ3JlZGVudGlhbERhdGEoVmVjdG9yPHVpbnQ4X3Q+KGFh
Z3VpZExlbmd0aCwgMCksIGNyZWRlbnRpYWxJZEFuZENvc2VQdWJLZXkuZmlyc3QsIGNyZWRlbnRp
YWxJZEFuZENvc2VQdWJLZXkuc2Vjb25kKTsKKworICAgICAgICAgICAgYXV0byBhdXRoZW50aWNh
dG9yRGF0YSA9IGJ1aWxkQXV0aERhdGEoY3JlZGVudGlhbC5ycElkLCBmbGFnc0ZvckNvbmZpZyht
X2NvbmZpZ3VyYXRpb24pLCBjcmVkZW50aWFsLnNpZ25Db3VudCwgYXR0ZXN0ZWRDcmVkZW50aWFs
RGF0YSk7CisgICAgICAgICAgICBDQk9SVmFsdWU6Ok1hcFZhbHVlIHJlc3BvbnNlOworICAgICAg
ICAgICAgcmVzcG9uc2VbQ0JPUlZhbHVlKDIpXSA9IENCT1JWYWx1ZShhdXRoZW50aWNhdG9yRGF0
YSk7CisKKyAgICAgICAgICAgIGF1dG8gYXR0T2JqID0gYnVpbGRBdHRlc3RhdGlvbk1hcChXVEZN
b3ZlKGF1dGhlbnRpY2F0b3JEYXRhKSwgIiIsIHsgfSwgQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJl
ZmVyZW5jZTo6Tm9uZSk7CisKKyAgICAgICAgICAgIHJlc3BvbnNlW0NCT1JWYWx1ZSgxKV0gPSBD
Qk9SVmFsdWUoIm5vbmUiKTsKKyAgICAgICAgICAgIHJlc3BvbnNlW0NCT1JWYWx1ZSgzKV0gPSBD
Qk9SVmFsdWUoYXR0T2JqKTsKKyAgICAgICAgICAgIGF1dG8gcGF5bG9hZCA9IENCT1JXcml0ZXI6
OndyaXRlKENCT1JWYWx1ZShyZXNwb25zZSkpOworICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+
IGJ1ZmZlcjsKKyAgICAgICAgICAgIGJ1ZmZlci5yZXNlcnZlQ2FwYWNpdHkocGF5bG9hZC0+c2l6
ZSgpICsgMSk7CisgICAgICAgICAgICBidWZmZXIuYXBwZW5kKHN0YXRpY19jYXN0PHVpbnQ4X3Q+
KGZpZG86OkN0YXBEZXZpY2VSZXNwb25zZUNvZGU6OmtTdWNjZXNzKSk7CisgICAgICAgICAgICBi
dWZmZXIuYXBwZW5kVmVjdG9yKCpwYXlsb2FkKTsKKworICAgICAgICAgICAgYXV0byBtZXNzYWdl
ID0gRmlkb0hpZE1lc3NhZ2U6OmNyZWF0ZShtX3JlcXVlc3RNZXNzYWdlLT5jaGFubmVsSWQoKSwg
Rmlkb0hpZERldmljZUNvbW1hbmQ6OmtDYm9yLCBXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAg
ICAgcmVjZWl2ZUhpZE1lc3NhZ2UoV1RGTW92ZSgqbWVzc2FnZSkpOworICAgICAgICB9CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgbV9yZXF1ZXN0TWVzc2FnZSA9IHN0ZDo6bnVsbG9wdDsKK30KKworCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9WaXJ0dWFsL1ZpcnR1YWxIaWRD
b25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9W
aXJ0dWFsL1ZpcnR1YWxIaWRDb25uZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGFiMjMxNGMyOGRiMzYz
NjM4YTE0MWE5MTJlZGIzZWMwZjgwMDM2ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVhbEhpZENvbm5lY3Rp
b24uaApAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoV0VCX0FVVEhOKQorCisjaW5jbHVkZSAiSGlkQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUg
IlZpcnR1YWxBdXRoZW50aWNhdG9yQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
Rmlkb0hpZE1lc3NhZ2UuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKK3N0cnVjdCBWaXJ0dWFsQXV0aGVudGljYXRvckNvbmZpZ3VyYXRpb247CitjbGFz
cyBWaXJ0dWFsQXV0aGVudGljYXRvck1hbmFnZXI7CisKK2NsYXNzIFZpcnR1YWxIaWRDb25uZWN0
aW9uIGZpbmFsIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFZpcnR1YWxIaWRDb25uZWN0aW9uPiwg
cHVibGljIEhpZENvbm5lY3Rpb24geworcHVibGljOgorICAgIGV4cGxpY2l0IFZpcnR1YWxIaWRD
b25uZWN0aW9uKGNvbnN0IFN0cmluZyYgYXV0aGVudGljYXRvcklkLCBjb25zdCBWaXJ0dWFsQXV0
aGVudGljYXRvckNvbmZpZ3VyYXRpb24mLCBjb25zdCBXZWFrUHRyPFZpcnR1YWxBdXRoZW50aWNh
dG9yTWFuYWdlcj4mKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIGluaXRpYWxpemUoKSBmaW5hbDsK
KyAgICB2b2lkIHRlcm1pbmF0ZSgpIGZpbmFsOworICAgIERhdGFTZW50IHNlbmRTeW5jKGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkgZmluYWw7CisgICAgdm9pZCBzZW5kKFZlY3Rvcjx1aW50
OF90PiYmIGRhdGEsIERhdGFTZW50Q2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBhc3NlbWJs
ZVJlcXVlc3QoVmVjdG9yPHVpbnQ4X3Q+JiYpOworICAgIHZvaWQgcGFyc2VSZXF1ZXN0KCk7CisK
KyAgICB2b2lkIHJlY2VpdmVIaWRNZXNzYWdlKGZpZG86OkZpZG9IaWRNZXNzYWdlJiYpOworICAg
IHZvaWQgcmVjaWV2ZVJlc3BvbnNlQ29kZShmaWRvOjpDdGFwRGV2aWNlUmVzcG9uc2VDb2RlKTsK
KworICAgIFdlYWtQdHI8VmlydHVhbEF1dGhlbnRpY2F0b3JNYW5hZ2VyPiBtX21hbmFnZXI7Cisg
ICAgVmlydHVhbEF1dGhlbnRpY2F0b3JDb25maWd1cmF0aW9uIG1fY29uZmlndXJhdGlvbjsKKyAg
ICBzdGQ6Om9wdGlvbmFsPGZpZG86OkZpZG9IaWRNZXNzYWdlPiBtX3JlcXVlc3RNZXNzYWdlOwor
ICAgIFZlY3Rvcjx1aW50OF90PiBtX25vbmNlOworICAgIHVpbnQzMl90IG1fY3VycmVudENoYW5u
ZWwgeyBmaWRvOjprSGlkQnJvYWRjYXN0Q2hhbm5lbCB9OworICAgIFN0cmluZyBtX2F1dGhlbnRp
Y2F0b3JJZDsKK307Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vVmlydHVhbC9WaXJ0dWFs
U2VydmljZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vVmly
dHVhbC9WaXJ0dWFsU2VydmljZS5oCmluZGV4IDk4NjhmM2NlODQyNWIyYjlmNjFlZDFmZmI5YjVm
MWU2ZmFmNmZiNDUuLmU4YWQzYTcxYTllMWM5MTNlZWI3ZTJhZmQzZTEzN2IwYmVkNDk4YWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1
YWwvVmlydHVhbFNlcnZpY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9WaXJ0dWFsL1ZpcnR1YWxTZXJ2aWNlLmgKQEAgLTI5LDE4ICsyOSwyMiBAQAog
CiAjaW5jbHVkZSAiQXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2UuaCIKICNpbmNsdWRlICJW
aXJ0dWFsQXV0aGVudGljYXRvckNvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJWaXJ0dWFsQ3Jl
ZGVudGlhbC5oIgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCitjbGFzcyBWaXJ0dWFsQXV0aGVudGljYXRvck1hbmFnZXI7CisKIGNsYXNzIFZpcnR1YWxT
ZXJ2aWNlIDogcHVibGljIEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlIHsKIHB1YmxpYzoK
LSAgICBleHBsaWNpdCBWaXJ0dWFsU2VydmljZShPYnNlcnZlciYsIGNvbnN0IFZlY3RvcjxWaXJ0
dWFsQXV0aGVudGljYXRvckNvbmZpZ3VyYXRpb24+Jik7CisgICAgZXhwbGljaXQgVmlydHVhbFNl
cnZpY2UoT2JzZXJ2ZXImLCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgVmlydHVhbEF1dGhlbnRp
Y2F0b3JDb25maWd1cmF0aW9uPj4mKTsKIAotICAgIHN0YXRpYyBVbmlxdWVSZWY8QXV0aGVudGlj
YXRvclRyYW5zcG9ydFNlcnZpY2U+IGNyZWF0ZVZpcnR1YWwoV2ViQ29yZTo6QXV0aGVudGljYXRv
clRyYW5zcG9ydCwgT2JzZXJ2ZXImLCBjb25zdCBWZWN0b3I8VmlydHVhbEF1dGhlbnRpY2F0b3JD
b25maWd1cmF0aW9uPiYgY29uZmlncyk7CisgICAgc3RhdGljIFVuaXF1ZVJlZjxBdXRoZW50aWNh
dG9yVHJhbnNwb3J0U2VydmljZT4gY3JlYXRlVmlydHVhbChXZWJDb3JlOjpBdXRoZW50aWNhdG9y
VHJhbnNwb3J0LCBPYnNlcnZlciYsIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBWaXJ0dWFsQXV0
aGVudGljYXRvckNvbmZpZ3VyYXRpb24+PiYpOwogcHJpdmF0ZToKICAgICB2b2lkIHN0YXJ0RGlz
Y292ZXJ5SW50ZXJuYWwoKSBmaW5hbDsKIAotICAgIFZlY3RvcjxWaXJ0dWFsQXV0aGVudGljYXRv
ckNvbmZpZ3VyYXRpb24+IG1fY29uZmlndXJhdGlvbnM7CisgICAgVmVjdG9yPHN0ZDo6cGFpcjxT
dHJpbmcsIFZpcnR1YWxBdXRoZW50aWNhdG9yQ29uZmlndXJhdGlvbj4+IG1fYXV0aGVudGljYXRv
cnM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVhbFNlcnZpY2UubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9WaXJ0dWFsL1ZpcnR1
YWxTZXJ2aWNlLm1tCmluZGV4IGU4YjFmYjUzY2I1MjgzZGFiNGJmNTRiM2VlYzNjZWUzZTVjNTE1
MDguLmVkNjY5YWJiOGJlM2FjOTIzZGRmYjI3MWYwY2IzZjVhZTg1N2I4ZDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVh
bFNlcnZpY2UubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vVmlydHVhbC9WaXJ0dWFsU2VydmljZS5tbQpAQCAtMjgsMzIgKzI4LDU0IEBACiAKICNpZiBF
TkFCTEUoV0VCX0FVVEhOKQogCisjaW1wb3J0ICJDdGFwQXV0aGVudGljYXRvci5oIgorI2ltcG9y
dCAiQ3RhcEhpZERyaXZlci5oIgogI2ltcG9ydCAiTG9jYWxBdXRoZW50aWNhdG9yLmgiCisjaW1w
b3J0ICJWaXJ0dWFsQXV0aGVudGljYXRvck1hbmFnZXIuaCIKKyNpbXBvcnQgIlZpcnR1YWxIaWRD
b25uZWN0aW9uLmgiCiAjaW1wb3J0ICJWaXJ0dWFsTG9jYWxDb25uZWN0aW9uLmgiCisjaW1wb3J0
IDxXZWJDb3JlL0ZpZG9Db25zdGFudHMuaD4KKyNpbXBvcnQgPFdlYkNvcmUvV2ViQXV0aGVudGlj
YXRpb25Db25zdGFudHMuaD4KKyNpbXBvcnQgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbXBvcnQgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFj
ZSBmaWRvOwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVZpcnR1YWxTZXJ2aWNlOjpWaXJ0
dWFsU2VydmljZShPYnNlcnZlciYgb2JzZXJ2ZXIsIGNvbnN0IFZlY3RvcjxWaXJ0dWFsQXV0aGVu
dGljYXRvckNvbmZpZ3VyYXRpb24+JiBjb25maWd1cmF0aW9ucykKLSAgICA6IEF1dGhlbnRpY2F0
b3JUcmFuc3BvcnRTZXJ2aWNlKG9ic2VydmVyKSwgbV9jb25maWd1cmF0aW9ucyhjb25maWd1cmF0
aW9ucykKK1ZpcnR1YWxTZXJ2aWNlOjpWaXJ0dWFsU2VydmljZShPYnNlcnZlciYgb2JzZXJ2ZXIs
IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBWaXJ0dWFsQXV0aGVudGljYXRvckNvbmZpZ3VyYXRp
b24+PiYgYXV0aGVudGljYXRvcnMpCisgICAgOiBBdXRoZW50aWNhdG9yVHJhbnNwb3J0U2Vydmlj
ZShvYnNlcnZlciksIG1fYXV0aGVudGljYXRvcnMoYXV0aGVudGljYXRvcnMpCiB7CiB9CiAKLVVu
aXF1ZVJlZjxBdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZT4gVmlydHVhbFNlcnZpY2U6OmNy
ZWF0ZVZpcnR1YWwoV2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydCB0cmFuc3BvcnQsIE9i
c2VydmVyJiBvYnNlcnZlciwgIGNvbnN0IFZlY3RvcjxWaXJ0dWFsQXV0aGVudGljYXRvckNvbmZp
Z3VyYXRpb24+JiBjb25maWdzKQorVW5pcXVlUmVmPEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2
aWNlPiBWaXJ0dWFsU2VydmljZTo6Y3JlYXRlVmlydHVhbChXZWJDb3JlOjpBdXRoZW50aWNhdG9y
VHJhbnNwb3J0IHRyYW5zcG9ydCwgT2JzZXJ2ZXImIG9ic2VydmVyLCBWZWN0b3I8c3RkOjpwYWly
PFN0cmluZywgVmlydHVhbEF1dGhlbnRpY2F0b3JDb25maWd1cmF0aW9uPj4mIGF1dGhlbnRpY2F0
b3JzKQogewotICAgIHJldHVybiBtYWtlVW5pcXVlUmVmPFZpcnR1YWxTZXJ2aWNlPihvYnNlcnZl
ciwgY29uZmlncyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWVSZWY8VmlydHVhbFNlcnZpY2U+KG9i
c2VydmVyLCBhdXRoZW50aWNhdG9ycyk7Cit9CisKK3N0YXRpYyBBdXRoZW50aWNhdG9yR2V0SW5m
b1Jlc3BvbnNlIGF1dGhlbnRpY2F0b3JJbmZvRm9yQ29uZmlnKGNvbnN0IFZpcnR1YWxBdXRoZW50
aWNhdG9yQ29uZmlndXJhdGlvbiYgY29uZmlnKQoreworICAgIEF1dGhlbnRpY2F0b3JHZXRJbmZv
UmVzcG9uc2UgaW5mb1Jlc3BvbnNlKHsgUHJvdG9jb2xWZXJzaW9uOjprQ3RhcCB9LCBWZWN0b3I8
dWludDhfdD4oYWFndWlkTGVuZ3RoLCAwdSkpOworICAgIEF1dGhlbnRpY2F0b3JTdXBwb3J0ZWRP
cHRpb25zIG9wdGlvbnM7CisgICAgaW5mb1Jlc3BvbnNlLnNldE9wdGlvbnMoV1RGTW92ZShvcHRp
b25zKSk7CisgICAgcmV0dXJuIGluZm9SZXNwb25zZTsKIH0KIAogdm9pZCBWaXJ0dWFsU2Vydmlj
ZTo6c3RhcnREaXNjb3ZlcnlJbnRlcm5hbCgpCiB7CiAKLSAgICBmb3IgKGF1dG8mIGNvbmZpZyA6
IG1fY29uZmlndXJhdGlvbnMpIHsKKyAgICBmb3IgKGF1dG8mIGF1dGhlbnRpY2F0b3IgOiBtX2F1
dGhlbnRpY2F0b3JzKSB7CiAgICAgICAgIGlmICghb2JzZXJ2ZXIoKSkKICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgYXV0byBjb25maWcgPSBhdXRoZW50aWNhdG9yLnNlY29uZDsKKyAgICAg
ICAgYXV0byBhdXRoZW50aWNhdG9ySWQgPSBhdXRoZW50aWNhdG9yLmZpcnN0OwogICAgICAgICBz
d2l0Y2ggKGNvbmZpZy50cmFuc3BvcnQpIHsKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpBdXRoZW50
aWNhdG9yVHJhbnNwb3J0OjpVc2I6CisgICAgICAgICAgICBvYnNlcnZlcigpLT5hdXRoZW50aWNh
dG9yQWRkZWQoQ3RhcEF1dGhlbnRpY2F0b3I6OmNyZWF0ZShXVEY6Om1ha2VVbmlxdWU8Q3RhcEhp
ZERyaXZlcj4obWFrZVVuaXF1ZVJlZjxWaXJ0dWFsSGlkQ29ubmVjdGlvbj4oYXV0aGVudGljYXRv
cklkLCBjb25maWcsIFdlYWtQdHIgeyBzdGF0aWNfY2FzdDxWaXJ0dWFsQXV0aGVudGljYXRvck1h
bmFnZXIgKj4ob2JzZXJ2ZXIoKSkgfSkpLCBhdXRoZW50aWNhdG9ySW5mb0ZvckNvbmZpZyhjb25m
aWcpKSk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXZWJDb3JlOjpBdXRoZW50
aWNhdG9yVHJhbnNwb3J0OjpJbnRlcm5hbDoKICAgICAgICAgICAgIG9ic2VydmVyKCktPmF1dGhl
bnRpY2F0b3JBZGRlZChMb2NhbEF1dGhlbnRpY2F0b3I6OmNyZWF0ZShtYWtlVW5pcXVlUmVmPFZp
cnR1YWxMb2NhbENvbm5lY3Rpb24+KGNvbmZpZykpKTsKLSAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgVU5JTVBM
RU1FTlRFRCgpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCBkMjA3YmE1ODFlYmQzNWE4OWE1MmYxZjY0N2Q5MjI0OWQ5
ZGEyMTBkLi4yOTFkOThjOGJjNWMxZTgwOTEzYjJlMjkzZTIwYTU2MGY5NDM2NWJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwODEs
NiArMTA4MSw4IEBACiAJCTUxRkFFQzNBMUIwNjU3NjMwMDA5QzRFNyAvKiBBdXhpbGlhcnlQcm9j
ZXNzTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxRkFFQzM3MUIwNjU3MzEwMDA5QzRFNyAvKiBBdXhpbGlhcnlQcm9jZXNzTWVzc2FnZXMu
aCAqLzsgfTsKIAkJNTFGQUVDM0IxQjA2NTc2ODAwMDlDNEU3IC8qIEF1eGlsaWFyeVByb2Nlc3NN
ZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTFGQUVDMzYxQjA2NTczMTAwMDlDNEU3IC8qIEF1eGlsaWFyeVByb2Nlc3NNZXNz
YWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQk1MUZEMThCNjE2NTFGQkFEMDBEQkUxQ0UgLyogTmV0
d29ya1Jlc291cmNlTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MUZEMThCNDE2NTFGQkFEMDBEQkUxQ0UgLyogTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmggKi87IH07CisJCTUyNTJBNTE5MjdFMDQ4NzQwMDk0QkVCOSAvKiBWaXJ0dWFsSGlkQ29u
bmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTI1MkE1MTcyN0UwNDg3NDAwOTRCRUI5IC8qIFZpcnR1YWxIaWRDb25uZWN0aW9uLmggKi87IH07
CisJCTUyNTJBNTFBMjdFMDQ4NzQwMDk0QkVCOSAvKiBWaXJ0dWFsSGlkQ29ubmVjdGlvbi5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MjUyQTUxODI3
RTA0ODc0MDA5NEJFQjkgLyogVmlydHVhbEhpZENvbm5lY3Rpb24uY3BwICovOyB9OwogCQk1MjY4
OEFCNDI3RDdDRTQwMDAzNTc3QTIgLyogX1dLUmVzaWRlbnRLZXlSZXF1aXJlbWVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTI2ODhBQjMyN0Q3Q0U0
MDAwMzU3N0EyIC8qIF9XS1Jlc2lkZW50S2V5UmVxdWlyZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MjcyRDRDOTFFNzM1RjA5MDBFQjQy
OTAgLyogV0tQcm90ZWN0aW9uU3BhY2VOUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTI3MkQ0QzcxRTczNUYwOTAwRUI0MjkwIC8qIFdLUHJvdGVjdGlv
blNwYWNlTlMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk1MjhDMzdDMTE5NUNCQjFBMDBEOEI5Q0MgLyogV0tCYWNrRm9yd2FyZExpc3RQcml2YXRl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTlGMjgx
MDE5NThGNDc4MDA4Q0FDNzIgLyogV0tCYWNrRm9yd2FyZExpc3RQcml2YXRlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEwOTMsNiArMTA5NSw5
IEBACiAJCTUyQ0RDNUNBMjczMURBMEQwMEEzRTNFQiAvKiBWaXJ0dWFsQXV0aGVudGljYXRvck1h
bmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUy
Q0RDNUMzMjczMURBMEMwMEEzRTNFQiAvKiBWaXJ0dWFsQXV0aGVudGljYXRvck1hbmFnZXIuaCAq
LzsgfTsKIAkJNTJENUExQjAxQzU3NDk1QTAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTJENUExQUExQzU3NDk0RTAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5o
ICovOyB9OwogCQk1MkYwNjBFMTE2NTQzMTg1MDBGMzI4MUIgLyogTmV0d29ya0NvbnRlbnRSdWxl
TGlzdE1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTJGMDYwREQxNjU0MzE3NTAwRjMyODFCIC8qIE5ldHdvcmtD
b250ZW50UnVsZUxpc3RNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJNTJGNEI0
NjkyN0UxMTk3NzAwRkZEMTI5IC8qIFZpcnR1YWxBdXRoZW50aWNhdG9yVXRpbHMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyRjRCNDY3MjdFMTE5Nzcw
MEZGRDEyOSAvKiBWaXJ0dWFsQXV0aGVudGljYXRvclV0aWxzLmggKi87IH07CisJCTUyRjRCNDZB
MjdFMTE5NzcwMEZGRDEyOSAvKiBWaXJ0dWFsQXV0aGVudGljYXRvclV0aWxzLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJGNEI0NjgyN0UxMTk3NzAw
RkZEMTI5IC8qIFZpcnR1YWxBdXRoZW50aWNhdG9yVXRpbHMubW0gKi87IH07CisJCTUyRjRCNDZE
MjdFMTI1QTgwMEZGRDEyOSAvKiBWaXJ0dWFsQ3JlZGVudGlhbC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJGNEI0NkIyN0UxMjVBODAwRkZEMTI5IC8q
IFZpcnR1YWxDcmVkZW50aWFsLmggKi87IH07CiAJCTUzMjE1OTU1MURCQUU3MjkwMDU0QUEzQyAv
KiBOZXR3b3JrU2Vzc2lvbkNvY29hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MzIxNTk1MDFEQkFFNkQ3MDA1NEFBM0MgLyogTmV0d29ya1Nlc3Npb25D
b2NvYS5oICovOyB9OwogCQk1MzIxNTk1NjFEQkFFNzJEMDA1NEFBM0MgLyogTmV0d29ya0RhdGFU
YXNrQ29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUzMjE1OTRGMURCQUU2RDcwMDU0QUEzQyAvKiBOZXR3b3JrRGF0YVRhc2tDb2NvYS5oICovOyB9
OwogCQk1MzVCQ0I5MjIwNjlDNDlDMDBDQ0NFMDIgLyogTmV0d29ya0FjdGl2aXR5VHJhY2tlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM1QkNCOTAy
MDY5QzQ5QzAwQ0NDRTAyIC8qIE5ldHdvcmtBY3Rpdml0eVRyYWNrZXIuaCAqLzsgfTsKQEAgLTQ2
NDQsNiArNDY0OSw4IEBACiAJCTUxRkIwOTAyMTYzQTNCMUMwMEVDMzI0QSAvKiBOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluOyBwYXRoID0gTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVz
c2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRkQxOEIzMTY1MUZCQUQw
MERCRTFDRSAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTFGRDE4QjQxNjUxRkJBRDAwREJFMUNFIC8qIE5ldHdvcmtSZXNv
dXJjZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrUmVz
b3VyY2VMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTI1MkE1MTcyN0Uw
NDg3NDAwOTRCRUI5IC8qIFZpcnR1YWxIaWRDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZp
cnR1YWxIaWRDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUyNTJB
NTE4MjdFMDQ4NzQwMDk0QkVCOSAvKiBWaXJ0dWFsSGlkQ29ubmVjdGlvbi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBWaXJ0dWFsSGlkQ29ubmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUyNjg4QUIzMjdEN0NFNDAwMDM1NzdBMiAvKiBfV0tSZXNpZGVudEtleVJlcXVp
cmVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IF9XS1Jlc2lkZW50S2V5UmVxdWlyZW1lbnQuaDsgcGF0
aCA9IFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVzaWRlbnRLZXlSZXF1aXJlbWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjcyRDRDNzFFNzM1RjA5MDBFQjQyOTAgLyogV0tQ
cm90ZWN0aW9uU3BhY2VOUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS1By
b3RlY3Rpb25TcGFjZU5TLmg7IHBhdGggPSBtYWMvV0tQcm90ZWN0aW9uU3BhY2VOUy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjcyRDRDODFFNzM1RjA5MDBFQjQyOTAgLyogV0tQ
cm90ZWN0aW9uU3BhY2VOUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFt
ZSA9IFdLUHJvdGVjdGlvblNwYWNlTlMubW07IHBhdGggPSBtYWMvV0tQcm90ZWN0aW9uU3BhY2VO
Uy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ2NjMsNiArNDY3MCw5IEBACiAJ
CTUyRUI2OENCMjc5RTIxNDUwMDVDOThEOSAvKiBBUktpdFNvZnRMaW5rLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEFSS2l0U29mdExpbmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTJFQjY4
Q0MyNzlFMjE0NTAwNUM5OEQ5IC8qIEFSS2l0U29mdExpbmsubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBBUktpdFNvZnRMaW5rLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MkYw
NjBERDE2NTQzMTc1MDBGMzI4MUIgLyogTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXJNZXNz
YWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya0NvbnRlbnRSdWxlTGlz
dE1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0
L05ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNl
VHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJNTJGNEI0NjcyN0UxMTk3NzAwRkZEMTI5
IC8qIFZpcnR1YWxBdXRoZW50aWNhdG9yVXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlydHVhbEF1
dGhlbnRpY2F0b3JVdGlscy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MkY0QjQ2
ODI3RTExOTc3MDBGRkQxMjkgLyogVmlydHVhbEF1dGhlbnRpY2F0b3JVdGlscy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFZpcnR1YWxBdXRoZW50aWNhdG9yVXRpbHMubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTUyRjRCNDZCMjdFMTI1QTgwMEZGRDEyOSAvKiBWaXJ0dWFsQ3Jl
ZGVudGlhbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaXJ0dWFsQ3JlZGVudGlhbC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MzE1ODc2QjIwNzZCNzEzMDA0QkY5RjMgLyogTmV0d29ya0Fj
dGl2aXR5VHJhY2tlckNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gTmV0d29ya0FjdGl2aXR5VHJhY2tlckNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MzIxNTk0RjFEQkFFNkQ3MDA1NEFBM0MgLyogTmV0d29ya0RhdGFUYXNrQ29j
b2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0RhdGFUYXNrQ29j
b2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMyMTU5NTAxREJBRTZENzAwNTRB
QTNDIC8qIE5ldHdvcmtTZXNzaW9uQ29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTmV0d29ya1Nlc3Npb25Db2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtOTg1OCw2ICs5ODY4LDExIEBACiAJCQkJNTJDREM1QkQyNzMxREEwQzAwQTNFM0VCIC8qIFZp
cnR1YWxBdXRoZW50aWNhdG9yQ29uZmlndXJhdGlvbi5oICovLAogCQkJCTUyQ0RDNUJGMjczMURB
MEMwMEEzRTNFQiAvKiBWaXJ0dWFsQXV0aGVudGljYXRvck1hbmFnZXIuY3BwICovLAogCQkJCTUy
Q0RDNUMzMjczMURBMEMwMEEzRTNFQiAvKiBWaXJ0dWFsQXV0aGVudGljYXRvck1hbmFnZXIuaCAq
LywKKwkJCQk1MkY0QjQ2NzI3RTExOTc3MDBGRkQxMjkgLyogVmlydHVhbEF1dGhlbnRpY2F0b3JV
dGlscy5oICovLAorCQkJCTUyRjRCNDY4MjdFMTE5NzcwMEZGRDEyOSAvKiBWaXJ0dWFsQXV0aGVu
dGljYXRvclV0aWxzLm1tICovLAorCQkJCTUyRjRCNDZCMjdFMTI1QTgwMEZGRDEyOSAvKiBWaXJ0
dWFsQ3JlZGVudGlhbC5oICovLAorCQkJCTUyNTJBNTE4MjdFMDQ4NzQwMDk0QkVCOSAvKiBWaXJ0
dWFsSGlkQ29ubmVjdGlvbi5jcHAgKi8sCisJCQkJNTI1MkE1MTcyN0UwNDg3NDAwOTRCRUI5IC8q
IFZpcnR1YWxIaWRDb25uZWN0aW9uLmggKi8sCiAJCQkJNTJDREM1QzAyNzMxREEwQzAwQTNFM0VC
IC8qIFZpcnR1YWxMb2NhbENvbm5lY3Rpb24uaCAqLywKIAkJCQk1MkNEQzVDMjI3MzFEQTBDMDBB
M0UzRUIgLyogVmlydHVhbExvY2FsQ29ubmVjdGlvbi5tbSAqLywKIAkJCQk1MkNEQzVDMTI3MzFE
QTBDMDBBM0UzRUIgLyogVmlydHVhbFNlcnZpY2UuaCAqLywKQEAgLTEzNjU2LDYgKzEzNjcxLDkg
QEAKIAkJCQkyNjg0MDU1MzE4Qjg2RUQ2MDAyMkMzOEIgLyogVmlld1VwZGF0ZURpc3BhdGNoZXJN
ZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTJDREM1QzQyNzMxREEwRDAwQTNFM0VCIC8q
IFZpcnR1YWxBdXRoZW50aWNhdG9yQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTJDREM1Q0EyNzMxREEwRDAwQTNFM0VCIC8qIFZpcnR1YWxBdXRoZW50aWNhdG9yTWFuYWdlci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNTJGNEI0NjkyN0UxMTk3NzAwRkZEMTI5IC8qIFZpcnR1YWxB
dXRoZW50aWNhdG9yVXRpbHMuaCBpbiBIZWFkZXJzICovLAorCQkJCTUyRjRCNDZEMjdFMTI1QTgw
MEZGRDEyOSAvKiBWaXJ0dWFsQ3JlZGVudGlhbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTI1MkE1
MTkyN0UwNDg3NDAwOTRCRUI5IC8qIFZpcnR1YWxIaWRDb25uZWN0aW9uLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1MkNEQzVDNzI3MzFEQTBEMDBBM0UzRUIgLyogVmlydHVhbExvY2FsQ29ubmVjdGlv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTJDREM1QzgyNzMxREEwRDAwQTNFM0VCIC8qIFZpcnR1
YWxTZXJ2aWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyNjg0MDU0NDE4Qjg1QTYzMDAyMkMzOEIg
LyogVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mby5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNjE1
Miw2ICsxNjE3MCw4IEBACiAJCQkJMkQ4MTlCQTExODYyODAwRTAwMUYwM0QxIC8qIFZpZXdHZXN0
dXJlR2VvbWV0cnlDb2xsZWN0b3JNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMjY4NDA1NTIxOEI4NkVENjAwMjJDMzhCIC8qIFZpZXdVcGRhdGVEaXNwYXRjaGVyTWVzc2Fn
ZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUyQ0RDNUM2MjczMURBMEQwMEEzRTNF
QiAvKiBWaXJ0dWFsQXV0aGVudGljYXRvck1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
NTJGNEI0NkEyN0UxMTk3NzAwRkZEMTI5IC8qIFZpcnR1YWxBdXRoZW50aWNhdG9yVXRpbHMubW0g
aW4gU291cmNlcyAqLywKKwkJCQk1MjUyQTUxQTI3RTA0ODc0MDA5NEJFQjkgLyogVmlydHVhbEhp
ZENvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTJDREM1QzkyNzMxREEwRDAwQTNF
M0VCIC8qIFZpcnR1YWxMb2NhbENvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MkNE
QzVDNTI3MzFEQTBEMDBBM0UzRUIgLyogVmlydHVhbFNlcnZpY2UubW0gaW4gU291cmNlcyAqLywK
IAkJCQkxQTYwMjI0QzE4QzE2QjlGMDBDM0U4QzkgLyogVmlzaXRlZExpbmtTdG9yZU1lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywK
</data>

          </attachment>
      

    </bug>

</bugzilla>