<?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>189289</bug_id>
          
          <creation_ts>2018-09-04 17:31:55 -0700</creation_ts>
          <short_desc>[WebAuthN] Import CTAP HID message and packet structure from Chromium</short_desc>
          <delta_ts>2018-10-21 18:15:29 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>181943</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jiewen Tan">jiewen_tan</reporter>
          <assigned_to name="Jiewen Tan">jiewen_tan</assigned_to>
          <cc>alex.gaynor</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1456553</commentid>
    <comment_count>0</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2018-09-04 17:31:55 -0700</bug_when>
    <thetext>This task aims to import CTAP message coder from Chromium including but not limited to:
1. Commands: CtapMakeCredentialRequest, CtapGetAssertionRequest.
2. Responses: device_response_converter.
3. CTAP to U2F: u2f_command_constructor, AuthenticatorMakeCredentialResponse::CreateFromU2fRegisterResponse, AuthenticatorGetAssertionResponse::CreateFromU2fSignResponse.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456555</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-09-04 17:33:26 -0700</bug_when>
    <thetext>&lt;rdar://problem/44120310&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467362</commentid>
    <comment_count>2</comment_count>
      <attachid>351870</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2018-10-09 00:55:32 -0700</bug_when>
    <thetext>Created attachment 351870
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467363</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-10-09 00:58:40 -0700</bug_when>
    <thetext>Attachment 351870 did not pass style-queue:


ERROR: Source/WebCore/Modules/webauthn/fido/FidoHidMessage.h:65:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/Modules/webauthn/fido/FidoHidMessage.h:66:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/Modules/webauthn/fido/FidoHidMessage.h:67:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/Modules/webauthn/fido/FidoHidPacket.h:53:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/Modules/webauthn/fido/FidoHidPacket.h:54:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/Modules/webauthn/fido/FidoHidPacket.h:80:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/Modules/webauthn/fido/FidoHidPacket.h:81:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/Modules/webauthn/fido/FidoHidPacket.h:104:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
Total errors found: 8 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467416</commentid>
    <comment_count>4</comment_count>
      <attachid>351870</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-10-09 09:23:08 -0700</bug_when>
    <thetext>Comment on attachment 351870
Patch

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

&gt; Source/WebCore/Modules/webauthn/fido/FidoHidMessage.cpp:89
&gt; +    if (initPacket == nullptr)

if (!initPacket)

&gt; Source/WebKit/UIProcess/WebAuthentication/AuthenticatorManager.cpp:-194
&gt; -

Please remove this whitespace change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467418</commentid>
    <comment_count>5</comment_count>
      <attachid>351870</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-10-09 09:26:12 -0700</bug_when>
    <thetext>Comment on attachment 351870
Patch

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

&gt; Source/WebCore/Modules/webauthn/fido/FidoHidMessage.h:67
&gt; +    const Deque&lt;std::unique_ptr&lt;FidoHidPacket&gt;&gt;&amp; getPacketsForTesting() const { return m_packets; }

Since this is a WEBCORE_EXPORT class, you should move these inlines to the implementation file to avoid the compiler getting angry:

&quot;Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]&quot;

&gt; Source/WebCore/Modules/webauthn/fido/FidoHidPacket.h:54
&gt; +    uint32_t channelId() const { return m_channelId; }

Since this is a WEBCORE_EXPORT class, you should move these inlines to the implementation file to avoid the compiler getting angry:

&quot;Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]&quot;

&gt; Source/WebCore/Modules/webauthn/fido/FidoHidPacket.h:81
&gt; +    uint16_t payloadLength() const { return m_payloadLength; }

Since this is a WEBCORE_EXPORT class, you should move these inlines to the implementation file to avoid the compiler getting angry:

&quot;Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]&quot;

&gt; Source/WebCore/Modules/webauthn/fido/FidoHidPacket.h:104
&gt; +    uint8_t sequence() const { return m_sequence; }

Since this is a WEBCORE_EXPORT class, you should move these inlines to the implementation file to avoid the compiler getting angry:

&quot;Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467499</commentid>
    <comment_count>6</comment_count>
      <attachid>351870</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2018-10-09 11:41:37 -0700</bug_when>
    <thetext>Comment on attachment 351870
Patch

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

Thanks Brent for r+ this patch.

&gt;&gt; Source/WebCore/Modules/webauthn/fido/FidoHidMessage.cpp:89
&gt;&gt; +    if (initPacket == nullptr)
&gt; 
&gt; if (!initPacket)

Fixed.

&gt;&gt; Source/WebCore/Modules/webauthn/fido/FidoHidMessage.h:67
&gt;&gt; +    const Deque&lt;std::unique_ptr&lt;FidoHidPacket&gt;&gt;&amp; getPacketsForTesting() const { return m_packets; }
&gt; 
&gt; Since this is a WEBCORE_EXPORT class, you should move these inlines to the implementation file to avoid the compiler getting angry:
&gt; 
&gt; &quot;Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]&quot;

Fixed.

&gt;&gt; Source/WebCore/Modules/webauthn/fido/FidoHidPacket.h:54
&gt;&gt; +    uint32_t channelId() const { return m_channelId; }
&gt; 
&gt; Since this is a WEBCORE_EXPORT class, you should move these inlines to the implementation file to avoid the compiler getting angry:
&gt; 
&gt; &quot;Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]&quot;

Fixed.

&gt;&gt; Source/WebCore/Modules/webauthn/fido/FidoHidPacket.h:81
&gt;&gt; +    uint16_t payloadLength() const { return m_payloadLength; }
&gt; 
&gt; Since this is a WEBCORE_EXPORT class, you should move these inlines to the implementation file to avoid the compiler getting angry:
&gt; 
&gt; &quot;Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]&quot;

Fixed.

&gt;&gt; Source/WebCore/Modules/webauthn/fido/FidoHidPacket.h:104
&gt;&gt; +    uint8_t sequence() const { return m_sequence; }
&gt; 
&gt; Since this is a WEBCORE_EXPORT class, you should move these inlines to the implementation file to avoid the compiler getting angry:
&gt; 
&gt; &quot;Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]&quot;

Fixed.

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/AuthenticatorManager.cpp:-194
&gt;&gt; -
&gt; 
&gt; Please remove this whitespace change.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467502</commentid>
    <comment_count>7</comment_count>
      <attachid>351870</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2018-10-09 11:47:46 -0700</bug_when>
    <thetext>Comment on attachment 351870
Patch

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

&gt;&gt;&gt; Source/WebCore/Modules/webauthn/fido/FidoHidMessage.h:67
&gt;&gt;&gt; +    const Deque&lt;std::unique_ptr&lt;FidoHidPacket&gt;&gt;&amp; getPacketsForTesting() const { return m_packets; }
&gt;&gt; 
&gt;&gt; Since this is a WEBCORE_EXPORT class, you should move these inlines to the implementation file to avoid the compiler getting angry:
&gt;&gt; 
&gt;&gt; &quot;Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]&quot;
&gt; 
&gt; Fixed.

Just confirmed with Alex that inline methods are allowed in classes that are marked as WEBCORE_EXPORT and it is the style checker bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467503</commentid>
    <comment_count>8</comment_count>
      <attachid>351900</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2018-10-09 11:52:23 -0700</bug_when>
    <thetext>Created attachment 351900
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467518</commentid>
    <comment_count>9</comment_count>
      <attachid>351900</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-10-09 12:32:51 -0700</bug_when>
    <thetext>Comment on attachment 351900
Patch for landing

Clearing flags on attachment: 351900

Committed r236976: &lt;https://trac.webkit.org/changeset/236976&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351870</attachid>
            <date>2018-10-09 00:55:32 -0700</date>
            <delta_ts>2018-10-09 09:23:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189289-20181009005531.patch</filename>
            <type>text/plain</type>
            <size>61757</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2ODc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmI3NmMxNjBlMzBiYmYz
ZjdhZGE2NWI0ODVkYWZjNGZhMTQ3MmZhOS4uMzNjNmQ3NTcwYzcyOTBmZGQxYTgzMGUwZmFkMjNm
MzMzNjg1MzNiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDE4LTEwLTA5ICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhOXSBJbXBv
cnQgQ1RBUCBISUQgbWVzc2FnZSBhbmQgcGFja2V0IHN0cnVjdHVyZSBmcm9tIENocm9taXVtCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkyODkKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ0MTIwMzEwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wb3J0cyBDVEFQIEhJRCBtZXNz
YWdlIGFuZCBwYWNrZXQgc3RydWN0dXJlOgorICAgICAgICBodHRwczovL2ZpZG9hbGxpYW5jZS5v
cmcvc3BlY3MvZmlkby12Mi4wLXBzLTIwMTcwOTI3L2ZpZG8tY2xpZW50LXRvLWF1dGhlbnRpY2F0
b3ItcHJvdG9jb2wtdjIuMC1wcy0yMDE3MDkyNy5odG1sI21lc3NhZ2UtYW5kLXBhY2tldC1zdHJ1
Y3R1cmUKKyAgICAgICAgZnJvbSBDaHJvbWl1bS4gV2l0aCB0aGlzIGxpYnJhcnksIFdlYktpdCBj
YW4gbm93IHR1cm4gYmluYXJpZXMgaW50byBtZXNzYWdlcyB0aGF0IENUQVAgZGV2aWNlcyBjb3Vs
ZCB1bmRlcnN0YW5kLgorICAgICAgICBUaGlzIHBhdGNoIGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcg
Q2hyb21pdW0gZmlsZXMgYW5kIG1vZGlmaWVzIHRoZW0gdG8gZml0IGludG8gV2ViS2l0OgorICAg
ICAgICBodHRwczovL2NzLmNocm9taXVtLm9yZy9jaHJvbWl1bS9zcmMvZGV2aWNlL2ZpZG8vZmlk
b19jb25zdGFudHMuY2M/bD0xJnJjbD0xZWZjZmJlYWY0ZTRjZWRmNTg3MTZlMTk4MmI1NzAyNzcw
NTcxYTc1CisgICAgICAgIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9kZXZp
Y2UvZmlkby9maWRvX2NvbnN0YW50cy5oP2w9MSZyY2w9MWVmY2ZiZWFmNGU0Y2VkZjU4NzE2ZTE5
ODJiNTcwMjc3MDU3MWE3NQorICAgICAgICBodHRwczovL2NzLmNocm9taXVtLm9yZy9jaHJvbWl1
bS9zcmMvZGV2aWNlL2ZpZG8vaGlkL2ZpZG9faGlkX21lc3NhZ2UuY2M/bD0xJnJjbD0zODdmMzcy
NWRlMjg0MmUwZTZiNzE3NWE5YjJlZDQ3MmIwY2Y3ODFhCisgICAgICAgIGh0dHBzOi8vY3MuY2hy
b21pdW0ub3JnL2Nocm9taXVtL3NyYy9kZXZpY2UvZmlkby9oaWQvZmlkb19oaWRfbWVzc2FnZS5o
P3JjbD0xZWZjZmJlYWY0ZTRjZWRmNTg3MTZlMTk4MmI1NzAyNzcwNTcxYTc1CisgICAgICAgIGh0
dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9kZXZpY2UvZmlkby9oaWQvZmlkb19o
aWRfcGFja2V0LmNjP3JjbD0xZWZjZmJlYWY0ZTRjZWRmNTg3MTZlMTk4MmI1NzAyNzcwNTcxYTc1
CisgICAgICAgIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9kZXZpY2UvZmlk
by9oaWQvZmlkb19oaWRfcGFja2V0Lmg/cmNsPTFlZmNmYmVhZjRlNGNlZGY1ODcxNmUxOTgyYjU3
MDI3NzA1NzFhNzUKKyAgICAgICAgaHR0cHM6Ly9jcy5jaHJvbWl1bS5vcmcvY2hyb21pdW0vc3Jj
L2RldmljZS9maWRvL2hpZC9maWRvX2hpZF9tZXNzYWdlX3VuaXR0ZXN0LmNjP3JjbD0xZWZjZmJl
YWY0ZTRjZWRmNTg3MTZlMTk4MmI1NzAyNzcwNTcxYTc1CisKKyAgICAgICAgQ292ZXJlZCBieSBB
UEkgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0NvbnN0YW50
cy5jcHA6IEFkZGVkLgorICAgICAgICAoZmlkbzo6aXNGaWRvSGlkRGV2aWNlQ29tbWFuZCk6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9Db25zdGFudHMuaDogQWRkZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRNZXNzYWdlLmNwcDogQWRkZWQu
CisgICAgICAgIChmaWRvOjpGaWRvSGlkTWVzc2FnZTo6Y3JlYXRlKToKKyAgICAgICAgKGZpZG86
OkZpZG9IaWRNZXNzYWdlOjpjcmVhdGVGcm9tU2VyaWFsaXplZERhdGEpOgorICAgICAgICAoZmlk
bzo6Rmlkb0hpZE1lc3NhZ2U6Om1lc3NhZ2VDb21wbGV0ZSBjb25zdCk6CisgICAgICAgIChmaWRv
OjpGaWRvSGlkTWVzc2FnZTo6Z2V0TWVzc2FnZVBheWxvYWQgY29uc3QpOgorICAgICAgICAoZmlk
bzo6Rmlkb0hpZE1lc3NhZ2U6OnBvcE5leHRQYWNrZXQpOgorICAgICAgICAoZmlkbzo6Rmlkb0hp
ZE1lc3NhZ2U6OmFkZENvbnRpbnVhdGlvblBhY2tldCk6CisgICAgICAgIChmaWRvOjpGaWRvSGlk
TWVzc2FnZTo6bnVtUGFja2V0cyBjb25zdCk6CisgICAgICAgIChmaWRvOjpGaWRvSGlkTWVzc2Fn
ZTo6Rmlkb0hpZE1lc3NhZ2UpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRv
SGlkTWVzc2FnZS5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlk
b0hpZFBhY2tldC5jcHA6IEFkZGVkLgorICAgICAgICAoZmlkbzo6Rmlkb0hpZFBhY2tldDo6Rmlk
b0hpZFBhY2tldCk6CisgICAgICAgIChmaWRvOjpGaWRvSGlkSW5pdFBhY2tldDo6Y3JlYXRlRnJv
bVNlcmlhbGl6ZWREYXRhKToKKyAgICAgICAgKGZpZG86OkZpZG9IaWRJbml0UGFja2V0OjpGaWRv
SGlkSW5pdFBhY2tldCk6CisgICAgICAgIChmaWRvOjpGaWRvSGlkSW5pdFBhY2tldDo6Z2V0U2Vy
aWFsaXplZERhdGEgY29uc3QpOgorICAgICAgICAoZmlkbzo6Rmlkb0hpZENvbnRpbnVhdGlvblBh
Y2tldDo6Y3JlYXRlRnJvbVNlcmlhbGl6ZWREYXRhKToKKyAgICAgICAgKGZpZG86OkZpZG9IaWRD
b250aW51YXRpb25QYWNrZXQ6OkZpZG9IaWRDb250aW51YXRpb25QYWNrZXQpOgorICAgICAgICAo
Zmlkbzo6Rmlkb0hpZENvbnRpbnVhdGlvblBhY2tldDo6Z2V0U2VyaWFsaXplZERhdGEgY29uc3Qp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkUGFja2V0Lmg6IEFkZGVk
LgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvUGFyc2luZ1V0aWxzLmNwcDog
QWRkZWQuCisgICAgICAgIChmaWRvOjpnZXRJbml0UGFja2V0RGF0YSk6CisgICAgICAgIChmaWRv
OjpnZXRDb250aW51YXRpb25QYWNrZXREYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhu
L2ZpZG8vRmlkb1BhcnNpbmdVdGlscy5oOiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDoK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTgtMTAt
MDUgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgW01l
ZGlhU3RyZWFtXSBSZWFsdGltZU1lZGlhU291cmNlIHNob3VsZCBiZSBhYmxlIHRvIHZlbmQgaGFz
aGVkIElEcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCBlOGIzMzc2MGY1YzdlMTI4ZmIzZTc4NWEwMjdhMDBiMzIwNzRi
NDEzLi42NDJlMWY5MWE4Y2JiMzRkYWQ5ZmMwOTYxOGM5OTU5OTA3NWUyYjVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE2IEBACisyMDE4LTEwLTA5ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhOXSBJbXBvcnQgQ1RBUCBISUQgbWVzc2FnZSBhbmQg
cGFja2V0IHN0cnVjdHVyZSBmcm9tIENocm9taXVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkyODkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ0
MTIwMzEwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IERlbGV0ZXMgYW4gZW1wdHkgbGluZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkF1dGhl
bnRpY2F0b3JNYW5hZ2VyOjppbml0VGltZU91dFRpbWVyKToKKwogMjAxOC0xMC0wNSAgRXJpYyBD
YXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWVkaWFTdHJlYW1d
IFJlYWx0aW1lTWVkaWFTb3VyY2Ugc2hvdWxkIGJlIGFibGUgdG8gdmVuZCBoYXNoZWQgSURzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0NvbnN0
YW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0NvbnN0
YW50cy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMzg4MWZkMmYyNjRlOWYwZWU0ZGEwMzkyNDJlNWFkMTBkNzA0
YTRmMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4v
Zmlkby9GaWRvQ29uc3RhbnRzLmNwcApAQCAtMCwwICsxLDU3IEBACisvLyBDb3B5cmlnaHQgMjAx
OCBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisv
LyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisv
LyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJGaWRvQ29uc3RhbnRzLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCituYW1lc3Bh
Y2UgZmlkbyB7CisKK2Jvb2wgaXNGaWRvSGlkRGV2aWNlQ29tbWFuZChGaWRvSGlkRGV2aWNlQ29t
bWFuZCBjbWQpCit7CisgICAgc3dpdGNoIChjbWQpIHsKKyAgICBjYXNlIEZpZG9IaWREZXZpY2VD
b21tYW5kOjprTXNnOgorICAgIGNhc2UgRmlkb0hpZERldmljZUNvbW1hbmQ6OmtDYm9yOgorICAg
IGNhc2UgRmlkb0hpZERldmljZUNvbW1hbmQ6OmtJbml0OgorICAgIGNhc2UgRmlkb0hpZERldmlj
ZUNvbW1hbmQ6OmtQaW5nOgorICAgIGNhc2UgRmlkb0hpZERldmljZUNvbW1hbmQ6OmtDYW5jZWw6
CisgICAgY2FzZSBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a0Vycm9yOgorICAgIGNhc2UgRmlkb0hp
ZERldmljZUNvbW1hbmQ6OmtLZWVwQWxpdmU6CisgICAgY2FzZSBGaWRvSGlkRGV2aWNlQ29tbWFu
ZDo6a1dpbms6CisgICAgY2FzZSBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a0xvY2s6CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
Cit9CisKK30gLy8gbmFtZXNwYWNlIGZpZG8KKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0Nv
bnN0YW50cy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9Db25z
dGFudHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iODY5MGYwM2RkNDg0ZGZkMzY3NTY3NTBlMDU2YTI3NWM2ZGQz
ZTU2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9m
aWRvL0ZpZG9Db25zdGFudHMuaApAQCAtMCwwICsxLDY4IEBACisvLyBDb3B5cmlnaHQgMjAxOCBU
aGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
Ly8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
Ky8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
Ky8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdF
Ql9BVVRITikKKworbmFtZXNwYWNlIGZpZG8geworCisvLyBDb21tYW5kcyBzdXBwb3J0ZWQgYnkg
Q1RBUEhJRCBkZXZpY2UgYXMgc3BlY2lmaWVkIGluCisvLyBodHRwczovL2ZpZG9hbGxpYW5jZS5v
cmcvc3BlY3MvZmlkby12Mi4wLXBzLTIwMTcwOTI3L2ZpZG8tY2xpZW50LXRvLWF1dGhlbnRpY2F0
b3ItcHJvdG9jb2wtdjIuMC1wcy0yMDE3MDkyNy5odG1sI2N0YXBoaWQtY29tbWFuZHMKK2VudW0g
Y2xhc3MgRmlkb0hpZERldmljZUNvbW1hbmQgOiB1aW50OF90IHsKKyAgICBrTXNnID0gMHgwMywK
KyAgICBrQ2JvciA9IDB4MTAsCisgICAga0luaXQgPSAweDA2LAorICAgIGtQaW5nID0gMHgwMSwK
KyAgICBrQ2FuY2VsID0gMHgxMSwKKyAgICBrRXJyb3IgPSAweDNGLAorICAgIGtLZWVwQWxpdmUg
PSAweDNCLAorICAgIGtXaW5rID0gMHgwOCwKKyAgICBrTG9jayA9IDB4MDQsCit9OworCitib29s
IGlzRmlkb0hpZERldmljZUNvbW1hbmQoRmlkb0hpZERldmljZUNvbW1hbmQgY21kKTsKKworLy8g
SElEIHRyYW5zcG9ydCBzcGVjaWZpYyBjb25zdGFudHMuCitjb25zdCBzaXplX3Qga0hpZFBhY2tl
dFNpemUgPSA2NDsKK2NvbnN0IHVpbnQzMl90IGtIaWRCcm9hZGNhc3RDaGFubmVsID0gMHhmZmZm
ZmZmZjsKK2NvbnN0IHNpemVfdCBrSGlkSW5pdFBhY2tldEhlYWRlclNpemUgPSA3OworY29uc3Qg
c2l6ZV90IGtIaWRDb250aW51YXRpb25QYWNrZXRIZWFkZXIgPSA1OworY29uc3Qgc2l6ZV90IGtI
aWRNYXhQYWNrZXRTaXplID0gNjQ7Citjb25zdCBzaXplX3Qga0hpZEluaXRQYWNrZXREYXRhU2l6
ZSA9IGtIaWRNYXhQYWNrZXRTaXplIC0ga0hpZEluaXRQYWNrZXRIZWFkZXJTaXplOworY29uc3Qg
c2l6ZV90IGtIaWRDb250aW51YXRpb25QYWNrZXREYXRhU2l6ZSA9IGtIaWRNYXhQYWNrZXRTaXpl
IC0ga0hpZENvbnRpbnVhdGlvblBhY2tldEhlYWRlcjsKKworY29uc3QgdWludDhfdCBrSGlkTWF4
TG9ja1NlY29uZHMgPSAxMDsKKworLy8gTWVzc2FnZXMgYXJlIGxpbWl0ZWQgdG8gYW4gaW5pdGlh
dGlvbiBwYWNrZXQgYW5kIDEyOCBjb250aW51YXRpb24gcGFja2V0cy4KK2NvbnN0IHNpemVfdCBr
SGlkTWF4TWVzc2FnZVNpemUgPSA3NjA5OworCit9IC8vIG5hbWVzcGFjZSBmaWRvCisKKyNlbmRp
ZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdXRobi9maWRvL0ZpZG9IaWRNZXNzYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkTWVzc2FnZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjU4NWZiMjhh
NjM2MWRiNGRjODNjYmE0MjRiYzgyYmIzMWFiMDBhMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkTWVzc2FnZS5jcHAKQEAgLTAs
MCArMSwxNjYgQEAKKy8vIENvcHlyaWdodCAyMDE3IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1l
dDoKKy8vCisvLyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
Ky8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLwor
Ly8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkZpZG9IaWRNZXNzYWdlLmgiCisKKyNp
ZiBFTkFCTEUoV0VCX0FVVEhOKQorCisjaW5jbHVkZSAiRmlkb1BhcnNpbmdVdGlscy5oIgorCitu
YW1lc3BhY2UgZmlkbyB7CisKKy8vIHN0YXRpYworc3RkOjpvcHRpb25hbDxGaWRvSGlkTWVzc2Fn
ZT4gRmlkb0hpZE1lc3NhZ2U6OmNyZWF0ZSh1aW50MzJfdCBjaGFubmVsSWQsIEZpZG9IaWREZXZp
Y2VDb21tYW5kIHR5cGUsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKK3sKKyAgICBpZiAo
ZGF0YS5zaXplKCkgPiBrSGlkTWF4TWVzc2FnZVNpemUpCisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIEZpZG9IaWREZXZpY2VDb21t
YW5kOjprUGluZzoKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGaWRvSGlkRGV2aWNlQ29tbWFu
ZDo6a01zZzoKKyAgICBjYXNlIEZpZG9IaWREZXZpY2VDb21tYW5kOjprQ2JvcjogeworICAgICAg
ICBpZiAoZGF0YS5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
ICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIEZpZG9IaWREZXZpY2VDb21tYW5kOjpr
Q2FuY2VsOgorICAgIGNhc2UgRmlkb0hpZERldmljZUNvbW1hbmQ6OmtXaW5rOiB7CisgICAgICAg
IGlmICghZGF0YS5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a0xv
Y2s6IHsKKyAgICAgICAgaWYgKGRhdGEuc2l6ZSgpICE9IDEgfHwgZGF0YVswXSA+IGtIaWRNYXhM
b2NrU2Vjb25kcykKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKyAgICBjYXNlIEZpZG9IaWREZXZpY2VDb21tYW5kOjprSW5pdDogeworICAg
ICAgICBpZiAoZGF0YS5zaXplKCkgIT0gOCkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIEZpZG9IaWREZXZpY2VDb21tYW5k
OjprS2VlcEFsaXZlOgorICAgIGNhc2UgRmlkb0hpZERldmljZUNvbW1hbmQ6OmtFcnJvcjoKKyAg
ICAgICAgaWYgKGRhdGEuc2l6ZSgpICE9IDEpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworICAgIH0KKworICAgIHJldHVybiBGaWRvSGlkTWVzc2FnZShjaGFubmVsSWQsIHR5cGUs
IGRhdGEpOworfQorCisvLyBzdGF0aWMKK3N0ZDo6b3B0aW9uYWw8Rmlkb0hpZE1lc3NhZ2U+IEZp
ZG9IaWRNZXNzYWdlOjpjcmVhdGVGcm9tU2VyaWFsaXplZERhdGEoY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBzZXJpYWxpemVkRGF0YSkKK3sKKyAgICBzaXplX3QgcmVtYWluaW5nU2l6ZSA9IDA7Cisg
ICAgaWYgKHNlcmlhbGl6ZWREYXRhLnNpemUoKSA+IGtIaWRQYWNrZXRTaXplIHx8IHNlcmlhbGl6
ZWREYXRhLnNpemUoKSA8IGtIaWRJbml0UGFja2V0SGVhZGVyU2l6ZSkKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKworICAgIGF1dG8gaW5pdFBhY2tldCA9IEZpZG9IaWRJbml0UGFja2V0
OjpjcmVhdGVGcm9tU2VyaWFsaXplZERhdGEoc2VyaWFsaXplZERhdGEsICZyZW1haW5pbmdTaXpl
KTsKKworICAgIGlmIChpbml0UGFja2V0ID09IG51bGxwdHIpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisKKyAgICByZXR1cm4gRmlkb0hpZE1lc3NhZ2UoV1RGTW92ZShpbml0UGFja2V0
KSwgcmVtYWluaW5nU2l6ZSk7Cit9CisKK2Jvb2wgRmlkb0hpZE1lc3NhZ2U6Om1lc3NhZ2VDb21w
bGV0ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFtX3JlbWFpbmluZ1NpemU7Cit9CisKK1ZlY3Rv
cjx1aW50OF90PiBGaWRvSGlkTWVzc2FnZTo6Z2V0TWVzc2FnZVBheWxvYWQoKSBjb25zdAorewor
ICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOworICAgIHNpemVfdCBkYXRhU2l6ZSA9IDA7CisgICAg
Zm9yIChjb25zdCBhdXRvJiBwYWNrZXQgOiBtX3BhY2tldHMpCisgICAgICAgIGRhdGFTaXplICs9
IHBhY2tldC0+Z2V0UGFja2V0UGF5bG9hZCgpLnNpemUoKTsKKyAgICBkYXRhLnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkoZGF0YVNpemUpOworCisgICAgZm9yIChjb25zdCBhdXRvJiBwYWNrZXQgOiBt
X3BhY2tldHMpIHsKKyAgICAgICAgY29uc3QgYXV0byYgcGFja2V0X2RhdGEgPSBwYWNrZXQtPmdl
dFBhY2tldFBheWxvYWQoKTsKKyAgICAgICAgZGF0YS5hcHBlbmRWZWN0b3IocGFja2V0X2RhdGEp
OworICAgIH0KKworICAgIHJldHVybiBkYXRhOworfQorCitWZWN0b3I8dWludDhfdD4gRmlkb0hp
ZE1lc3NhZ2U6OnBvcE5leHRQYWNrZXQoKQoreworICAgIGlmIChtX3BhY2tldHMuaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm4geyB9OworCisgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEgPSBtX3Bh
Y2tldHMuZmlyc3QoKS0+Z2V0U2VyaWFsaXplZERhdGEoKTsKKyAgICBtX3BhY2tldHMucmVtb3Zl
Rmlyc3QoKTsKKyAgICByZXR1cm4gZGF0YTsKK30KKworYm9vbCBGaWRvSGlkTWVzc2FnZTo6YWRk
Q29udGludWF0aW9uUGFja2V0KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYnVmKQoreworICAgIHNp
emVfdCByZW1haW5pbmdTaXplID0gbV9yZW1haW5pbmdTaXplOworICAgIGF1dG8gY29udFBhY2tl
dCA9IEZpZG9IaWRDb250aW51YXRpb25QYWNrZXQ6OmNyZWF0ZUZyb21TZXJpYWxpemVkRGF0YShi
dWYsICZyZW1haW5pbmdTaXplKTsKKworICAgIC8vIFJlamVjdCBwYWNrZXRzIHdpdGggYSBkaWZm
ZXJlbnQgY2hhbm5lbCBpZC4KKyAgICBpZiAoIWNvbnRQYWNrZXQgfHwgbV9jaGFubmVsSWQgIT0g
Y29udFBhY2tldC0+Y2hhbm5lbElkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1f
cmVtYWluaW5nU2l6ZSA9IHJlbWFpbmluZ1NpemU7CisgICAgbV9wYWNrZXRzLmFwcGVuZChXVEZN
b3ZlKGNvbnRQYWNrZXQpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc2l6ZV90IEZpZG9IaWRN
ZXNzYWdlOjpudW1QYWNrZXRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wYWNrZXRzLnNpemUo
KTsKK30KKworRmlkb0hpZE1lc3NhZ2U6OkZpZG9IaWRNZXNzYWdlKHVpbnQzMl90IGNoYW5uZWxJ
ZCwgRmlkb0hpZERldmljZUNvbW1hbmQgdHlwZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRh
KQorICAgIDogbV9jaGFubmVsSWQoY2hhbm5lbElkKQoreworICAgIHVpbnQ4X3Qgc2VxdWVuY2Ug
PSAwOworCisgICAgc2l6ZV90IHBvcyA9IGRhdGEuc2l6ZSgpID4ga0hpZEluaXRQYWNrZXREYXRh
U2l6ZSA/IGtIaWRJbml0UGFja2V0RGF0YVNpemUgOiBkYXRhLnNpemUoKTsKKyAgICBtX3BhY2tl
dHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Rmlkb0hpZEluaXRQYWNrZXQ+KGNoYW5uZWxJZCwg
dHlwZSwgZ2V0SW5pdFBhY2tldERhdGEoZGF0YSksIGRhdGEuc2l6ZSgpKSk7CisgICAgZm9yICg7
IHBvcyA8IGRhdGEuc2l6ZSgpOyBwb3MgKz0ga0hpZENvbnRpbnVhdGlvblBhY2tldERhdGFTaXpl
KQorICAgICAgICBtX3BhY2tldHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Rmlkb0hpZENvbnRp
bnVhdGlvblBhY2tldD4oY2hhbm5lbElkLCBzZXF1ZW5jZSsrLCBnZXRDb250aW51YXRpb25QYWNr
ZXREYXRhKGRhdGEsIHBvcykpKTsKK30KKworRmlkb0hpZE1lc3NhZ2U6OkZpZG9IaWRNZXNzYWdl
KHN0ZDo6dW5pcXVlX3B0cjxGaWRvSGlkSW5pdFBhY2tldD4gaW5pdFBhY2tldCwgc2l6ZV90IHJl
bWFpbmluZ1NpemUpCisgICAgOiBtX3JlbWFpbmluZ1NpemUocmVtYWluaW5nU2l6ZSkKK3sKKyAg
ICBtX2NoYW5uZWxJZCA9IGluaXRQYWNrZXQtPmNoYW5uZWxJZCgpOworICAgIG1fY21kID0gaW5p
dFBhY2tldC0+Y29tbWFuZCgpOworICAgIG1fcGFja2V0cy5hcHBlbmQoV1RGTW92ZShpbml0UGFj
a2V0KSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIGZpZG8KKworI2VuZGlmIC8vIEVOQUJMRShXRUJf
QVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8v
Rmlkb0hpZE1lc3NhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9G
aWRvSGlkTWVzc2FnZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBkOWQzZmM5M2JhOGQwYjY3YTc4M2Q3ZTkxMmU5
ZGUyOWJiZWU4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1dGhuL2ZpZG8vRmlkb0hpZE1lc3NhZ2UuaApAQCAtMCwwICsxLDgxIEBACisvLyBDb3B5cmln
aHQgMjAxNyBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8g
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
Ly8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRp
b24uCisvLyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8v
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKFdFQl9BVVRITikKKworI2luY2x1ZGUgIkZpZG9Db25zdGFudHMuaCIKKyNpbmNsdWRl
ICJGaWRvSGlkUGFja2V0LmgiCisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVkZSA8d3Rm
L09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgZmlkbyB7
CisKKy8vIFJlcHJlc2VudHMgSElEIG1lc3NhZ2UgZm9ybWF0IGRlZmluZWQgYnkgdGhlIHNwZWNp
ZmljYXRpb24gYXQKKy8vIGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9zcGVjcy9maWRvLXYyLjAt
cHMtMjAxNzA5MjcvZmlkby1jbGllbnQtdG8tYXV0aGVudGljYXRvci1wcm90b2NvbC12Mi4wLXBz
LTIwMTcwOTI3Lmh0bWwjbWVzc2FnZS1hbmQtcGFja2V0LXN0cnVjdHVyZQorY2xhc3MgV0VCQ09S
RV9FWFBPUlQgRmlkb0hpZE1lc3NhZ2UgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZpZG9I
aWRNZXNzYWdlKTsKK3B1YmxpYzoKKyAgICAvLyBTdGF0aWMgZnVuY3Rpb25zIHRvIGNyZWF0ZSBD
VEFQL1UyRiBISUQgY29tbWFuZHMuCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Rmlkb0hpZE1l
c3NhZ2U+IGNyZWF0ZSh1aW50MzJfdCBjaGFubmVsSWQsIEZpZG9IaWREZXZpY2VDb21tYW5kLCBj
b25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpOworCisgICAgLy8gUmVjb25zdHJ1Y3QgYSBtZXNz
YWdlIGZyb20gc2VyaWFsaXplZCBtZXNzYWdlIGRhdGEuCisgICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8Rmlkb0hpZE1lc3NhZ2U+IGNyZWF0ZUZyb21TZXJpYWxpemVkRGF0YShjb25zdCBWZWN0b3I8
dWludDhfdD4mKTsKKworICAgIEZpZG9IaWRNZXNzYWdlKEZpZG9IaWRNZXNzYWdlJiYgdGhhdCkg
PSBkZWZhdWx0OworICAgIEZpZG9IaWRNZXNzYWdlJiBvcGVyYXRvcj0oRmlkb0hpZE1lc3NhZ2Um
JiBvdGhlcikgPSBkZWZhdWx0OworCisgICAgYm9vbCBtZXNzYWdlQ29tcGxldGUoKSBjb25zdDsK
KyAgICBWZWN0b3I8dWludDhfdD4gZ2V0TWVzc2FnZVBheWxvYWQoKSBjb25zdDsKKyAgICAvLyBQ
b3AgZnJvbnQgb2YgcXVldWUgd2l0aCBuZXh0IHBhY2tldC4KKyAgICBWZWN0b3I8dWludDhfdD4g
cG9wTmV4dFBhY2tldCgpOworICAgIC8vIEFkZHMgYSBjb250aW51YXRpb24gcGFja2V0IHRvIHRo
ZSBwYWNrZXQgbGlzdCwgZnJvbSB0aGUgc2VyaWFsaXplZAorICAgIC8vIHJlc3BvbnNlIHZhbHVl
LgorICAgIGJvb2wgYWRkQ29udGludWF0aW9uUGFja2V0KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYp
OworCisgICAgc2l6ZV90IG51bVBhY2tldHMoKSBjb25zdDsKKyAgICB1aW50MzJfdCBjaGFubmVs
SWQoKSBjb25zdCB7IHJldHVybiBtX2NoYW5uZWxJZDsgfQorICAgIEZpZG9IaWREZXZpY2VDb21t
YW5kIGNtZCgpIGNvbnN0IHsgcmV0dXJuIG1fY21kOyB9CisgICAgY29uc3QgRGVxdWU8c3RkOjp1
bmlxdWVfcHRyPEZpZG9IaWRQYWNrZXQ+PiYgZ2V0UGFja2V0c0ZvclRlc3RpbmcoKSBjb25zdCB7
IHJldHVybiBtX3BhY2tldHM7IH0KKworcHJpdmF0ZToKKyAgICBGaWRvSGlkTWVzc2FnZSh1aW50
MzJfdCBjaGFubmVsSWQsIEZpZG9IaWREZXZpY2VDb21tYW5kLCBjb25zdCBWZWN0b3I8dWludDhf
dD4mIGRhdGEpOworICAgIEZpZG9IaWRNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxGaWRvSGlkSW5p
dFBhY2tldD4sIHNpemVfdCByZW1haW5pbmdTaXplKTsKKworICAgIHVpbnQzMl90IG1fY2hhbm5l
bElkID0ga0hpZEJyb2FkY2FzdENoYW5uZWw7CisgICAgRmlkb0hpZERldmljZUNvbW1hbmQgbV9j
bWQgPSBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a01zZzsKKyAgICBEZXF1ZTxzdGQ6OnVuaXF1ZV9w
dHI8Rmlkb0hpZFBhY2tldD4+IG1fcGFja2V0czsKKyAgICBzaXplX3QgbV9yZW1haW5pbmdTaXpl
ID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIGZpZG8KKworI2VuZGlmIC8vIEVOQUJMRShXRUJf
QVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8v
Rmlkb0hpZFBhY2tldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8v
Rmlkb0hpZFBhY2tldC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTViN2IyZDcxNTM2YTIzNTQ5MTNhZTM2ZTlm
YjkxZWYwMGE4ZjA4MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXV0aG4vZmlkby9GaWRvSGlkUGFja2V0LmNwcApAQCAtMCwwICsxLDE1NyBAQAorLy8gQ29w
eXJpZ2h0IDIwMTcgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LyBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8K
Ky8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKy8vICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJp
YnV0aW9uLgorLy8gICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiRmlkb0hpZFBhY2tldC5oIgorCisjaWYgRU5BQkxFKFdFQl9BVVRITikK
KworI2luY2x1ZGUgPGFsZ29yaXRobT4KKworbmFtZXNwYWNlIGZpZG8geworCitGaWRvSGlkUGFj
a2V0OjpGaWRvSGlkUGFja2V0KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIHVpbnQzMl90IGNoYW5u
ZWxJZCkKKyAgICA6IG1fZGF0YShXVEZNb3ZlKGRhdGEpKQorICAgICwgbV9jaGFubmVsSWQoY2hh
bm5lbElkKQoreworfQorCisvLyBzdGF0aWMKK3N0ZDo6dW5pcXVlX3B0cjxGaWRvSGlkSW5pdFBh
Y2tldD4gRmlkb0hpZEluaXRQYWNrZXQ6OmNyZWF0ZUZyb21TZXJpYWxpemVkRGF0YShjb25zdCBW
ZWN0b3I8dWludDhfdD4mIHNlcmlhbGl6ZWQsIHNpemVfdCogcmVtYWluaW5nU2l6ZSkKK3sKKyAg
ICBpZiAoIXJlbWFpbmluZ1NpemUgfHwgc2VyaWFsaXplZC5zaXplKCkgIT0ga0hpZFBhY2tldFNp
emUpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgc2l6ZV90IGluZGV4ID0gMDsKKyAg
ICBhdXRvIGNoYW5uZWxJZCA9IChzZXJpYWxpemVkW2luZGV4KytdICYgMHhmZikgPDwgMjQ7Cisg
ICAgY2hhbm5lbElkIHw9IChzZXJpYWxpemVkW2luZGV4KytdICYgMHhmZikgPDwgMTY7CisgICAg
Y2hhbm5lbElkIHw9IChzZXJpYWxpemVkW2luZGV4KytdICYgMHhmZikgPDwgODsKKyAgICBjaGFu
bmVsSWQgfD0gc2VyaWFsaXplZFtpbmRleCsrXSAmIDB4ZmY7CisKKyAgICBhdXRvIGNvbW1hbmQg
PSBzdGF0aWNfY2FzdDxGaWRvSGlkRGV2aWNlQ29tbWFuZD4oc2VyaWFsaXplZFtpbmRleCsrXSAm
IDB4N2YpOworICAgIGlmICghaXNGaWRvSGlkRGV2aWNlQ29tbWFuZChjb21tYW5kKSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICB1aW50MTZfdCBwYXlsb2FkU2l6ZSA9IHNlcmlhbGl6
ZWRbaW5kZXgrK10gPDwgODsKKyAgICBwYXlsb2FkU2l6ZSB8PSBzZXJpYWxpemVkW2luZGV4Kytd
OworCisgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHBheWxvYWQgaXMgbGVzcyB0aGFuIG1heGltdW0g
c2l6ZSBhbmQgcGFkZGVkIHdpdGggMHMuCisgICAgdWludDE2X3QgZGF0YVNpemUgPSBzdGQ6Om1p
bihwYXlsb2FkU2l6ZSwgc3RhdGljX2Nhc3Q8dWludDE2X3Q+KGtIaWRQYWNrZXRTaXplIC0gaW5k
ZXgpKTsKKworICAgIC8vIFVwZGF0ZSByZW1haW5pbmcgc2l6ZSB0byBkZXRlcm1pbmUgdGhlIHBh
eWxvYWQgc2l6ZSBvZiBmb2xsb3cgb24gcGFja2V0cy4KKyAgICAqcmVtYWluaW5nU2l6ZSA9IHBh
eWxvYWRTaXplIC0gZGF0YVNpemU7CisKKyAgICBhdXRvIGRhdGEgPSBWZWN0b3I8dWludDhfdD4o
KTsKKyAgICBkYXRhLmFwcGVuZChzZXJpYWxpemVkLmJlZ2luKCkgKyBpbmRleCwgZGF0YVNpemUp
OworCisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Rmlkb0hpZEluaXRQYWNrZXQ+KGNoYW5u
ZWxJZCwgY29tbWFuZCwgV1RGTW92ZShkYXRhKSwgcGF5bG9hZFNpemUpOworfQorCisvLyBVMkYg
SW5pdGlhbGl6YXRpb24gcGFja2V0IGlzIGRlZmluZWQgYXM6CisvLyBPZmZzZXQgTGVuZ3RoCisv
LyAwICAgICAgNCAgICAgICBDaGFubmVsIElECisvLyA0ICAgICAgMSAgICAgICBDb21tYW5kIElE
CisvLyA1ICAgICAgMSAgICAgICBIaWdoIG9yZGVyIHBhY2tldCBwYXlsb2FkIHNpemUKKy8vIDYg
ICAgICAxICAgICAgIExvdyBvcmRlciBwYWNrZXQgcGF5bG9hZCBzaXplCisvLyA3ICAgICAgKHMt
NykgICBQYXlsb2FkIGRhdGEKK0ZpZG9IaWRJbml0UGFja2V0OjpGaWRvSGlkSW5pdFBhY2tldCh1
aW50MzJfdCBjaGFubmVsSWQsIEZpZG9IaWREZXZpY2VDb21tYW5kIGNtZCwgVmVjdG9yPHVpbnQ4
X3Q+JiYgZGF0YSwgdWludDE2X3QgcGF5bG9hZExlbmd0aCkKKyAgICA6IEZpZG9IaWRQYWNrZXQo
V1RGTW92ZShkYXRhKSwgY2hhbm5lbElkKQorICAgICwgbV9jb21tYW5kKGNtZCkKKyAgICAsIG1f
cGF5bG9hZExlbmd0aChwYXlsb2FkTGVuZ3RoKQoreworfQorCitWZWN0b3I8dWludDhfdD4gRmlk
b0hpZEluaXRQYWNrZXQ6OmdldFNlcmlhbGl6ZWREYXRhKCkgY29uc3QKK3sKKyAgICBWZWN0b3I8
dWludDhfdD4gc2VyaWFsaXplZDsKKyAgICBzZXJpYWxpemVkLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkoa0hpZFBhY2tldFNpemUpOworICAgIHNlcmlhbGl6ZWQuYXBwZW5kKChtX2NoYW5uZWxJZCA+
PiAyNCkgJiAweGZmKTsKKyAgICBzZXJpYWxpemVkLmFwcGVuZCgobV9jaGFubmVsSWQgPj4gMTYp
ICYgMHhmZik7CisgICAgc2VyaWFsaXplZC5hcHBlbmQoKG1fY2hhbm5lbElkID4+IDgpICYgMHhm
Zik7CisgICAgc2VyaWFsaXplZC5hcHBlbmQobV9jaGFubmVsSWQgJiAweGZmKTsKKyAgICBzZXJp
YWxpemVkLmFwcGVuZChzdGF0aWNfY2FzdDx1aW50OF90PihtX2NvbW1hbmQpIHwgMHg4MCk7Cisg
ICAgc2VyaWFsaXplZC5hcHBlbmQoKG1fcGF5bG9hZExlbmd0aCA+PiA4KSAmIDB4ZmYpOworICAg
IHNlcmlhbGl6ZWQuYXBwZW5kKG1fcGF5bG9hZExlbmd0aCAmIDB4ZmYpOworICAgIHNlcmlhbGl6
ZWQuYXBwZW5kKG1fZGF0YS5iZWdpbigpLCBtX2RhdGEuc2l6ZSgpKTsKKyAgICBzZXJpYWxpemVk
Lmdyb3coa0hpZFBhY2tldFNpemUpOworCisgICAgcmV0dXJuIHNlcmlhbGl6ZWQ7Cit9CisKKy8v
IHN0YXRpYworc3RkOjp1bmlxdWVfcHRyPEZpZG9IaWRDb250aW51YXRpb25QYWNrZXQ+IEZpZG9I
aWRDb250aW51YXRpb25QYWNrZXQ6OmNyZWF0ZUZyb21TZXJpYWxpemVkRGF0YShjb25zdCBWZWN0
b3I8dWludDhfdD4mIHNlcmlhbGl6ZWQsIHNpemVfdCogcmVtYWluaW5nU2l6ZSkKK3sKKyAgICBp
ZiAoIXJlbWFpbmluZ1NpemUgfHwgc2VyaWFsaXplZC5zaXplKCkgIT0ga0hpZFBhY2tldFNpemUp
CisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgc2l6ZV90IGluZGV4ID0gMDsKKyAgICBh
dXRvIGNoYW5uZWxJZCA9IChzZXJpYWxpemVkW2luZGV4KytdICYgMHhmZikgPDwgMjQ7CisgICAg
Y2hhbm5lbElkIHw9IChzZXJpYWxpemVkW2luZGV4KytdICYgMHhmZikgPDwgMTY7CisgICAgY2hh
bm5lbElkIHw9IChzZXJpYWxpemVkW2luZGV4KytdICYgMHhmZikgPDwgODsKKyAgICBjaGFubmVs
SWQgfD0gc2VyaWFsaXplZFtpbmRleCsrXSAmIDB4ZmY7CisgICAgYXV0byBzZXF1ZW5jZSA9IHNl
cmlhbGl6ZWRbaW5kZXgrK107CisKKyAgICAvLyBDaGVjayB0byBzZWUgaWYgcGFja2V0IHBheWxv
YWQgaXMgbGVzcyB0aGFuIG1heGltdW0gc2l6ZSBhbmQgcGFkZGVkIHdpdGggMHMuCisgICAgc2l6
ZV90IGRhdGFTaXplID0gc3RkOjptaW4oKnJlbWFpbmluZ1NpemUsIGtIaWRQYWNrZXRTaXplIC0g
aW5kZXgpOworICAgICpyZW1haW5pbmdTaXplIC09IGRhdGFTaXplOworICAgIGF1dG8gZGF0YSA9
IFZlY3Rvcjx1aW50OF90PigpOworICAgIGRhdGEuYXBwZW5kKHNlcmlhbGl6ZWQuYmVnaW4oKSAr
IGluZGV4LCBkYXRhU2l6ZSk7CisKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGaWRvSGlk
Q29udGludWF0aW9uUGFja2V0PihjaGFubmVsSWQsIHNlcXVlbmNlLCBXVEZNb3ZlKGRhdGEpKTsK
K30KKworLy8gVTJGIENvbnRpbnVhdGlvbiBwYWNrZXQgaXMgZGVmaW5lZCBhczoKKy8vIE9mZnNl
dCBMZW5ndGgKKy8vIDAgICAgICA0ICAgICAgIENoYW5uZWwgSUQKKy8vIDQgICAgICAxICAgICAg
IFBhY2tldCBzZXF1ZW5jZSAweDAwLi4weDdmCisvLyA1ICAgICAgKHMtNSkgICBQYXlsb2FkIGRh
dGEKK0ZpZG9IaWRDb250aW51YXRpb25QYWNrZXQ6OkZpZG9IaWRDb250aW51YXRpb25QYWNrZXQo
Y29uc3QgdWludDMyX3QgY2hhbm5lbElkLCBjb25zdCB1aW50OF90IHNlcXVlbmNlLCBWZWN0b3I8
dWludDhfdD4mJiBkYXRhKQorICAgIDogRmlkb0hpZFBhY2tldChXVEZNb3ZlKGRhdGEpLCBjaGFu
bmVsSWQpCisgICAgLCBtX3NlcXVlbmNlKHNlcXVlbmNlKQoreworfQorCitWZWN0b3I8dWludDhf
dD4gRmlkb0hpZENvbnRpbnVhdGlvblBhY2tldDo6Z2V0U2VyaWFsaXplZERhdGEoKSBjb25zdAor
eworICAgIFZlY3Rvcjx1aW50OF90PiBzZXJpYWxpemVkOworICAgIHNlcmlhbGl6ZWQucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShrSGlkUGFja2V0U2l6ZSk7CisgICAgc2VyaWFsaXplZC5hcHBlbmQo
KG1fY2hhbm5lbElkID4+IDI0KSAmIDB4ZmYpOworICAgIHNlcmlhbGl6ZWQuYXBwZW5kKChtX2No
YW5uZWxJZCA+PiAxNikgJiAweGZmKTsKKyAgICBzZXJpYWxpemVkLmFwcGVuZCgobV9jaGFubmVs
SWQgPj4gOCkgJiAweGZmKTsKKyAgICBzZXJpYWxpemVkLmFwcGVuZChtX2NoYW5uZWxJZCAmIDB4
ZmYpOworICAgIHNlcmlhbGl6ZWQuYXBwZW5kKG1fc2VxdWVuY2UpOworICAgIHNlcmlhbGl6ZWQu
YXBwZW5kKG1fZGF0YS5iZWdpbigpLCBtX2RhdGEuc2l6ZSgpKTsKKyAgICBzZXJpYWxpemVkLmdy
b3coa0hpZFBhY2tldFNpemUpOworCisgICAgcmV0dXJuIHNlcmlhbGl6ZWQ7Cit9CisKK30gLy8g
bmFtZXNwYWNlIGZpZG8KKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hpZFBhY2tldC5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRQYWNrZXQuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xOGZjYWRlY2U5NjRkMmNlZWYwZTgyMDZhNmRkMjAzZTgzNTVkYzRmCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRQ
YWNrZXQuaApAQCAtMCwwICsxLDExMiBAQAorLy8gQ29weXJpZ2h0IDIwMTcgVGhlIENocm9taXVt
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKEMpIDIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8g
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisv
LyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJfQVVUSE4pCisK
KyNpbmNsdWRlICJGaWRvQ29uc3RhbnRzLmgiCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+
CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgZmlkbyB7CisKKy8vIEhJRCBQ
YWNrZXRzIGFyZSBkZWZpbmVkIGJ5IHRoZSBzcGVjaWZpY2F0aW9uIGF0CisvLyBodHRwczovL2Zp
ZG9hbGxpYW5jZS5vcmcvc3BlY3MvZmlkby12Mi4wLXBzLTIwMTcwOTI3L2ZpZG8tY2xpZW50LXRv
LWF1dGhlbnRpY2F0b3ItcHJvdG9jb2wtdjIuMC1wcy0yMDE3MDkyNy5odG1sI21lc3NhZ2UtYW5k
LXBhY2tldC1zdHJ1Y3R1cmUKKy8vIFBhY2tldHMgYXJlIG9uZSBvZiB0d28gdHlwZXMsIGluaXRp
YWxpemF0aW9uIHBhY2tldHMgYW5kIGNvbnRpbnVhdGlvbgorLy8gcGFja2V0cy4gSElEIFBhY2tl
dHMgaGF2ZSBoZWFkZXIgaW5mb3JtYXRpb24gYW5kIGEgcGF5bG9hZC4gSWYgYQorLy8gRmlkb0hp
ZEluaXRQYWNrZXQgY2Fubm90IHN0b3JlIHRoZSBlbnRpcmUgcGF5bG9hZCwgZnVydGhlciBwYXls
b2FkCisvLyBpbmZvcm1hdGlvbiBpcyBzdG9yZWQgaW4gSGlkQ29udGludWF0aW9uUGFja2V0cy4K
K2NsYXNzIFdFQkNPUkVfRVhQT1JUIEZpZG9IaWRQYWNrZXQgeworICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKEZpZG9IaWRQYWNrZXQpOworcHVibGljOgorICAgIEZpZG9IaWRQYWNrZXQoVmVjdG9y
PHVpbnQ4X3Q+JiYgZGF0YSwgdWludDMyX3QgY2hhbm5lbElkKTsKKyAgICB2aXJ0dWFsIH5GaWRv
SGlkUGFja2V0KCkgPSBkZWZhdWx0OworCisgICAgdmlydHVhbCBWZWN0b3I8dWludDhfdD4gZ2V0
U2VyaWFsaXplZERhdGEoKSBjb25zdCA9IDA7CisgICAgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBn
ZXRQYWNrZXRQYXlsb2FkKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CisgICAgdWludDMyX3Qg
Y2hhbm5lbElkKCkgY29uc3QgeyByZXR1cm4gbV9jaGFubmVsSWQ7IH0KKworcHJvdGVjdGVkOgor
ICAgIEZpZG9IaWRQYWNrZXQoKTsKKworICAgIFZlY3Rvcjx1aW50OF90PiBtX2RhdGE7CisgICAg
dWludDMyX3QgbV9jaGFubmVsSWQgPSBrSGlkQnJvYWRjYXN0Q2hhbm5lbDsKK307CisKKy8vIEZp
ZG9IaWRJbml0UGFja2V0LCBiYXNlZCBvbiB0aGUgQ1RBUCBzcGVjaWZpY2F0aW9uIGNvbnNpc3Rz
IG9mIGEgaGVhZGVyIHdpdGgKKy8vIGRhdGEgdGhhdCBpcyBzZXJpYWxpemVkIGludG8gYSBJT0J1
ZmZlci4gQSBjaGFubmVsIGlkZW50aWZpZXIgaXMgYWxsb2NhdGVkIGJ5CisvLyB0aGUgQ1RBUCBk
ZXZpY2UgdG8gZW5zdXJlIGl0cyBzeXN0ZW0td2lkZSB1bmlxdWVuZXNzLiBDb21tYW5kIGlkZW50
aWZpZXJzCisvLyBkZXRlcm1pbmUgdGhlIHR5cGUgb2YgbWVzc2FnZSB0aGUgcGFja2V0IGNvcnJl
c3BvbmRzIHRvLiBQYXlsb2FkIGxlbmd0aAorLy8gaXMgdGhlIGxlbmd0aCBvZiB0aGUgZW50aXJl
IG1lc3NhZ2UgcGF5bG9hZCwgYW5kIHRoZSBkYXRhIGlzIG9ubHkgdGhlIHBvcnRpb24KKy8vIG9m
IHRoZSBwYXlsb2FkIHRoYXQgd2lsbCBmaXQgaW50byB0aGUgSGlkSW5pdFBhY2tldC4KK2NsYXNz
IFdFQkNPUkVfRVhQT1JUIEZpZG9IaWRJbml0UGFja2V0IDogcHVibGljIEZpZG9IaWRQYWNrZXQg
eworcHVibGljOgorICAgIC8vIENyZWF0ZXMgYSBwYWNrZXQgZnJvbSB0aGUgc2VyaWFsaXplZCBk
YXRhIG9mIGFuIGluaXRpYWxpemF0aW9uIHBhY2tldC4gQXMKKyAgICAvLyB0aGlzIGlzIHRoZSBm
aXJzdCBwYWNrZXQsIHRoZSBwYXlsb2FkIGxlbmd0aCBvZiB0aGUgZW50aXJlIG1lc3NhZ2Ugd2ls
bCBiZQorICAgIC8vIGluY2x1ZGVkIHdpdGhpbiB0aGUgc2VyaWFsaXplZCBkYXRhLiBSZW1haW5p
bmcgc2l6ZSB3aWxsIGJlIHJldHVybmVkIHRvCisgICAgLy8gaW5mb3JtIHRoZSBjYWxsZWUgaG93
IG1hbnkgYWRkaXRpb25hbCBwYWNrZXRzIHRvIGV4cGVjdC4KKyAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPEZpZG9IaWRJbml0UGFja2V0PiBjcmVhdGVGcm9tU2VyaWFsaXplZERhdGEoY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+Jiwgc2l6ZV90KiByZW1haW5pbmdTaXplKTsKKworICAgIEZpZG9IaWRJ
bml0UGFja2V0KHVpbnQzMl90IGNoYW5uZWxJZCwgRmlkb0hpZERldmljZUNvbW1hbmQsIFZlY3Rv
cjx1aW50OF90PiYmIGRhdGEsIHVpbnQxNl90IHBheWxvYWRMZW5ndGgpOworCisgICAgVmVjdG9y
PHVpbnQ4X3Q+IGdldFNlcmlhbGl6ZWREYXRhKCkgY29uc3QgZmluYWw7CisgICAgRmlkb0hpZERl
dmljZUNvbW1hbmQgY29tbWFuZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29tbWFuZDsgfQorICAgIHVp
bnQxNl90IHBheWxvYWRMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX3BheWxvYWRMZW5ndGg7IH0K
KworcHJpdmF0ZToKKyAgICBGaWRvSGlkRGV2aWNlQ29tbWFuZCBtX2NvbW1hbmQ7CisgICAgdWlu
dDE2X3QgbV9wYXlsb2FkTGVuZ3RoOworfTsKKworLy8gRmlkb0hpZENvbnRpbnVhdGlvblBhY2tl
dCwgYmFzZWQgb24gdGhlIENUQVAgU3BlY2lmaWNhdGlvbiBjb25zaXN0cyBvZiBhCisvLyBoZWFk
ZXIgd2l0aCBkYXRhIHRoYXQgaXMgc2VyaWFsaXplZCBpbnRvIGFuIElPQnVmZmVyLiBUaGUgY2hh
bm5lbCBpZGVudGlmaWVyCisvLyB3aWxsIGJlIGlkZW50aWNhbCB0byB0aGUgaWRlbnRpZmllciBp
biBhbGwgb3RoZXIgcGFja2V0cyBvZiB0aGUgbWVzc2FnZS4gVGhlCisvLyBwYWNrZXQgc2VxdWVu
Y2Ugd2lsbCBiZSB0aGUgc2VxdWVuY2UgbnVtYmVyIG9mIHRoaXMgcGFydGljdWxhciBwYWNrZXQs
IGZyb20KKy8vIDB4MDAgdG8gMHg3Zi4KK2NsYXNzIFdFQkNPUkVfRVhQT1JUIEZpZG9IaWRDb250
aW51YXRpb25QYWNrZXQgOiBwdWJsaWMgRmlkb0hpZFBhY2tldCB7CitwdWJsaWM6CisgICAgLy8g
Q3JlYXRlcyBhIHBhY2tldCBmcm9tIHRoZSBzZXJpYWxpemVkIGRhdGEgb2YgYSBjb250aW51YXRp
b24gcGFja2V0LiBBcyBhbgorICAgIC8vIEhpZEluaXRQYWNrZXQgd291bGQgaGF2ZSBhcnJpdmVk
IGVhcmxpZXIgd2l0aCB0aGUgdG90YWwgcGF5bG9hZCBzaXplLAorICAgIC8vIHRoZSByZW1haW5p
bmcgc2l6ZSBzaG91bGQgYmUgcGFzc2VkIHRvIGluZm9ybSB0aGUgcGFja2V0IG9mIGhvdyBtdWNo
IGRhdGEKKyAgICAvLyB0byBleHBlY3QuCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxGaWRv
SGlkQ29udGludWF0aW9uUGFja2V0PiBjcmVhdGVGcm9tU2VyaWFsaXplZERhdGEoY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+Jiwgc2l6ZV90KiByZW1haW5pbmdTaXplKTsKKworICAgIEZpZG9IaWRDb250
aW51YXRpb25QYWNrZXQodWludDMyX3QgY2hhbm5lbElkLCB1aW50OF90IHNlcXVlbmNlLCBWZWN0
b3I8dWludDhfdD4mJiBkYXRhKTsKKworICAgIFZlY3Rvcjx1aW50OF90PiBnZXRTZXJpYWxpemVk
RGF0YSgpIGNvbnN0IGZpbmFsOworICAgIHVpbnQ4X3Qgc2VxdWVuY2UoKSBjb25zdCB7IHJldHVy
biBtX3NlcXVlbmNlOyB9CisKK3ByaXZhdGU6CisgICAgdWludDhfdCBtX3NlcXVlbmNlOworfTsK
KworfSAvLyBuYW1lc3BhY2UgZmlkbworCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvUGFyc2lu
Z1V0aWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvUGFy
c2luZ1V0aWxzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNzc0YTE1NTAzYjgxNmQ4NzNkOWY1ZDZkYWJkM2U2
YWM1NjkzOWUzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dXRobi9maWRvL0ZpZG9QYXJzaW5nVXRpbHMuY3BwCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRmlkb1BhcnNpbmdVdGlscy5oIgor
CisjaWYgRU5BQkxFKFdFQl9BVVRITikKKworI2luY2x1ZGUgIkZpZG9Db25zdGFudHMuaCIKKwor
bmFtZXNwYWNlIGZpZG8geworCitWZWN0b3I8dWludDhfdD4gZ2V0SW5pdFBhY2tldERhdGEoY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKQoreworICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQ7
CisgICAgcmVzdWx0LmFwcGVuZChkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkgPiBrSGlkSW5pdFBh
Y2tldERhdGFTaXplID8ga0hpZEluaXRQYWNrZXREYXRhU2l6ZSA6IGRhdGEuc2l6ZSgpKTsKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCitWZWN0b3I8dWludDhfdD4gZ2V0Q29udGludWF0aW9uUGFj
a2V0RGF0YShjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEsIHNpemVfdCBiZWdpblBvc2l0aW9u
KQoreworICAgIGlmIChiZWdpblBvc2l0aW9uID4gZGF0YS5zaXplKCkpCisgICAgICAgIHJldHVy
biB7IH07CisKKyAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0OworICAgIHJlc3VsdC5hcHBlbmQo
ZGF0YS5kYXRhKCkgKyBiZWdpblBvc2l0aW9uLCBkYXRhLnNpemUoKSA+IGtIaWRDb250aW51YXRp
b25QYWNrZXREYXRhU2l6ZSArIGJlZ2luUG9zaXRpb24gPyBrSGlkQ29udGludWF0aW9uUGFja2V0
RGF0YVNpemUgOiBkYXRhLnNpemUoKSAtIGJlZ2luUG9zaXRpb24pOworICAgIHJldHVybiByZXN1
bHQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIGZpZG8KKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVU
SE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlk
b1BhcnNpbmdVdGlscy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0Zp
ZG9QYXJzaW5nVXRpbHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNDFmMjBmMWViMDA2NzYxYmUxNjBlMGUyMTY1
MGIyMGI3NDFhNDZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdXRobi9maWRvL0ZpZG9QYXJzaW5nVXRpbHMuaApAQCAtMCwwICsxLDM5IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgZmlkbyB7CisKK1ZlY3Rvcjx1aW50OF90PiBnZXRJ
bml0UGFja2V0RGF0YShjb25zdCBWZWN0b3I8dWludDhfdD4mKTsKK1ZlY3Rvcjx1aW50OF90PiBn
ZXRDb250aW51YXRpb25QYWNrZXREYXRhKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIHNpemVfdCBi
ZWdpblBvc2l0aW9uKTsKKworfSAvLyBuYW1lc3BhY2UgZmlkbworCisjZW5kaWYgLy8gRU5BQkxF
KFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggMjE1OWI1ZTFhZGViZTI0MDVjNjFmNDI1Yzk1
YWYzMTM0M2E5YTNkZi4uZTA4MDY1YjBjZDZhMGMwNjNiZWUxOTAxMjkzODNmNDU5NWE3YzNiNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKQEAgLTI1NCw2ICsyNTQsMTAgQEAgTW9kdWxlcy93ZWJhdXRobi9QdWJs
aWNLZXlDcmVkZW50aWFsLmNwcAogTW9kdWxlcy93ZWJhdXRobi9jYm9yL0NCT1JSZWFkZXIuY3Bw
CiBNb2R1bGVzL3dlYmF1dGhuL2Nib3IvQ0JPUlZhbHVlLmNwcAogTW9kdWxlcy93ZWJhdXRobi9j
Ym9yL0NCT1JXcml0ZXIuY3BwCitNb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0NvbnN0YW50cy5j
cHAKK01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkTWVzc2FnZS5jcHAKK01vZHVsZXMvd2Vi
YXV0aG4vZmlkby9GaWRvSGlkUGFja2V0LmNwcAorTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9Q
YXJzaW5nVXRpbHMuY3BwCiAKIE1vZHVsZXMvd2ViZGF0YWJhc2UvQ2hhbmdlVmVyc2lvbldyYXBw
ZXIuY3BwCiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RPTVdpbmRvd1dlYkRhdGFiYXNlLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IGE1ZjMyNmU3MWQ1M2M1MzA2ZGM4YWM3YmY3ZDdiMTBlY2M3MzQ5ZDAuLmNmNjZkNjMzNjJkZGU0
MjQzMmVhZjQ2ZTkwZWJjZjgwNWY1YWMzNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE3NjUsNiArMTc2NSw4IEBACiAJCTU3
MzAzQzQ2MjAxMDVEMkYwMDM1NTk2NSAvKiBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MzAzQzQzMjAxMDVC
M0QwMDM1NTk2NSAvKiBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NzM0ODkzOTFEQUM2QjZFMDBEQzA2
NjcgLyogQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTczNDg5MzgxREFDNkI2RDAwREMwNjY3IC8qIENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnMuaCAqLzsgfTsKIAkJNTczOUUxMkYxREFDN0Y3ODAwRTE0Mzgz
IC8qIEpTQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTczOUUxMkUxREFDN0Y3ODAwRTE0MzgzIC8qIEpTQ3J5
cHRvQWxnb3JpdGhtUGFyYW1ldGVycy5oICovOyB9OworCQk1NzNGNTMzMjIxNjgwNkUxMDA0NTU4
N0EgLyogRmlkb0hpZE1lc3NhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDU3QkFGMjhBMjE2N0QzMDMwMDhFOTU0RSAvKiBGaWRvSGlkTWVzc2FnZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTU3M0Y1
MzM3MjE2ODBEMTUwMDQ1NTg3QSAvKiBGaWRvUGFyc2luZ1V0aWxzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzNGNTMzNTIxNjgwRDE0MDA0NTU4N0Eg
LyogRmlkb1BhcnNpbmdVdGlscy5oICovOyB9OwogCQk1NzRGNTVFMTIwNEYzQjIzMDAyOTQ4QzYg
LyogQ09TRUNvbnN0YW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTc0RjU1REMyMDRGMzczMjAwMjk0OEM2IC8qIENPU0VDb25zdGFudHMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NzUwQTk3NTFF
NjhEMDAwMDA3MDVDNEEgLyogQ3J5cHRvS2V5RUMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NTBBOTczMUU2OEQwMDAwMDcwNUM0QSAvKiBDcnlwdG9L
ZXlFQy5oICovOyB9OwogCQk1NzUwQTk3RTFFNkExM0VGMDA3MDVDNEEgLyogQ3J5cHRvQWxnb3Jp
dGhtRWNLZXlQYXJhbXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU3NTBBOTdEMUU2QTEzRUYwMDcwNUM0QSAvKiBDcnlwdG9BbGdvcml0aG1FY0tleVBh
cmFtcy5oICovOyB9OwpAQCAtMTc4Nyw2ICsxNzg5LDggQEAKIAkJNTdCNUY3RjkxRTVCRTg0MDAw
RjM0RjkwIC8qIENyeXB0b0FsZ29yaXRobUFFU19HQ00uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3QjVGN0Y3MUU1QkU4NDAwMEYzNEY5MCAvKiBDcnlw
dG9BbGdvcml0aG1BRVNfR0NNLmggKi87IH07CiAJCTU3QjVGODA5MUU1RDFBOTgwMEYzNEY5MCAv
KiBDcnlwdG9BbGdvcml0aG1BZXNHY21QYXJhbXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3QjVGODA4MUU1RDFBOTgwMEYzNEY5MCAvKiBDcnlwdG9B
bGdvcml0aG1BZXNHY21QYXJhbXMuaCAqLzsgfTsKIAkJNTdCNUY4MTAxRTVFMkE0RTAwRjM0Rjkw
IC8qIEpTQWVzR2NtUGFyYW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1N0I1RjgwQjFFNUQyMkRBMDBGMzRGOTAgLyogSlNBZXNHY21QYXJhbXMuaCAq
LzsgfTsKKwkJNTdCQUYyOEMyMTY3RDMxNjAwOEU5NTRFIC8qIEZpZG9Db25zdGFudHMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3OEE0QzBCMjE2N0Qy
OTYwMEQwOEYzNCAvKiBGaWRvQ29uc3RhbnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTdCQUYyOEUyMTY3RDMzOTAwOEU5NTRFIC8qIEZpZG9I
aWRQYWNrZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDU3OEE0QzBBMjE2N0QyOTYwMEQwOEYzNCAvKiBGaWRvSGlkUGFja2V0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTdDN0E2OEMxRTU2OTY3NTAw
QzY3RDcxIC8qIEJhc2ljQ3JlZGVudGlhbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTdDN0E2OEIxRTU2OTY3NTAwQzY3RDcxIC8qIEJhc2ljQ3JlZGVu
dGlhbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTU3QzdBNjlGMUU1NzkxNzgwMEM2N0Q3MSAvKiBKU0Jhc2ljQ3JlZGVudGlhbC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdDN0E2OUQxRTU3OTEwRDAw
QzY3RDcxIC8qIEpTQmFzaWNDcmVkZW50aWFsLmggKi87IH07CiAJCTU3RDAwMThEMURENTQxMzIw
MEVEMTlEOSAvKiBKU0NyeXB0b0tleVVzYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1N0QwMDE4QzFERDU0MTMyMDBFRDE5RDkgLyogSlNDcnlwdG9L
ZXlVc2FnZS5oICovOyB9OwpAQCAtODU1Myw2ICs4NTU3LDggQEAKIAkJNTczNDg5MzgxREFDNkI2
RDAwREMwNjY3IC8qIENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1NzM5RTEyRTFEQUM3Rjc4MDBFMTQzODMgLyogSlNDcnlwdG9B
bGdvcml0aG1QYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1NzM5RTEzMDFEQUM3RkQxMDBFMTQzODMgLyogSlNDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ3J5cHRvQWxnb3Jp
dGhtUGFyYW1ldGVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3M0Y1MzM1
MjE2ODBEMTQwMDQ1NTg3QSAvKiBGaWRvUGFyc2luZ1V0aWxzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEZpZG9QYXJzaW5nVXRpbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNTczRjUzMzYyMTY4MEQxNTAwNDU1ODdBIC8qIEZpZG9QYXJzaW5nVXRpbHMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmlkb1BhcnNpbmdVdGlscy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3NEFDNzUzMURBQzM2N0QwMEU5NzQ0
QyAvKiBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTc0RDQyNzkxRDU5NEZGNjAwMkNGNTBFIC8qIEdsb2JhbENyeXB0by5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gR2xvYmFsQ3J5cHRvLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTc0RjU1REMyMDRGMzczMjAwMjk0OEM2IC8qIENPU0VDb25zdGFudHMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ09TRUNvbnN0YW50cy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtODU5Miw2ICs4NTk4LDEwIEBACiAJCTU3NzhCRDgwMURBNDcz
M0UwMDlFMzAwOSAvKiBTdWJ0bGVDcnlwdG8uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFN1
YnRsZUNyeXB0by5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3NzhCRDgxMURB
NDgwMkMwMDlFMzAwOSAvKiBTdWJ0bGVDcnlwdG8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU3VidGxlQ3J5cHRvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3
NzhCRDgzMURBNDgxN0IwMDlFMzAwOSAvKiBTdWJ0bGVDcnlwdG8uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3VidGxlQ3J5cHRvLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTc4QTRDMDgyMTY3RDI5NTAwRDA4RjM0IC8qIEZpZG9IaWRNZXNzYWdl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpZG9IaWRNZXNzYWdlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTc4QTRDMDkyMTY3RDI5NjAwRDA4RjM0IC8qIEZpZG9IaWRQYWNr
ZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmlkb0hpZFBhY2tldC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTU3OEE0QzBBMjE2N0QyOTYwMEQwOEYzNCAvKiBGaWRvSGlkUGFj
a2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpZG9IaWRQYWNrZXQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTc4QTRDMEIyMTY3RDI5NjAwRDA4RjM0IC8qIEZpZG9Db25zdGFudHMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRmlkb0NvbnN0YW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1NzkwOTk2QjFFQ0QyM0RBMDBGQzA3NjggLyogQ3J5cHRvQWxnb3JpdGhtUlNBX1BTUy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDcnlwdG9BbGdvcml0aG1SU0FfUFNTLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTU3OTA5OTZDMUVDRDIzREEwMEZDMDc2OCAvKiBDcnlwdG9BbGdvcml0
aG1SU0FfUFNTLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENyeXB0b0FsZ29yaXRobVJTQV9QU1Mu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Nzk1N0NBNjFFOTcxREUwMDA4MDcy
QUIgLyogQ3J5cHRvQWxnb3JpdGhtSEtERi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBDcnlwdG9BbGdvcml0aG1IS0RGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTg2MDgsNiArODYxOCw4IEBACiAJCTU3QjVGODBBMUU1RDIyREEwMEYzNEY5MCAv
KiBKU0Flc0djbVBhcmFtcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU0Flc0djbVBhcmFtcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3QjVG
ODBCMUU1RDIyREEwMEYzNEY5MCAvKiBKU0Flc0djbVBhcmFtcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU0Flc0djbVBhcmFtcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1N0I1RjgwRDFFNUQyRjJEMDBGMzRGOTAgLyogQ3J5cHRvQWxnb3JpdGhtQUVTX0dD
TU1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDcnlwdG9BbGdv
cml0aG1BRVNfR0NNTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTdCQUYy
ODcyMTY3RDJGNzAwOEU5NTRFIC8qIEZpZG9Db25zdGFudHMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRmlkb0NvbnN0YW50cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTU3QkFGMjhBMjE2N0QzMDMwMDhFOTU0RSAvKiBGaWRvSGlkTWVzc2FnZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaWRvSGlkTWVzc2FnZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1N0M3QTY4OTFFNTY5NDZEMDBDNjdENzEgLyogQmFz
aWNDcmVkZW50aWFsLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBCYXNpY0NyZWRlbnRpYWwu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1N0M3QTY4QjFFNTY5Njc1MDBDNjdE
NzEgLyogQmFzaWNDcmVkZW50aWFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEJhc2ljQ3JlZGVudGlhbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1N0M3QTY5
MzFFNTc4QUNBMDBDNjdENzEgLyogQmFzaWNDcmVkZW50aWFsLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJhc2ljQ3JlZGVudGlhbC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xODgyMCw2ICsxODgzMiwyMSBAQAogCQkJcGF0aCA9IGNib3I7CiAJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQk1NzhBNEJGQTIxNjZBRTAwMDBEMDhG
MzQgLyogZmlkbyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJ
CQkJNTdCQUYyODcyMTY3RDJGNzAwOEU5NTRFIC8qIEZpZG9Db25zdGFudHMuY3BwICovLAorCQkJ
CTU3OEE0QzBCMjE2N0QyOTYwMEQwOEYzNCAvKiBGaWRvQ29uc3RhbnRzLmggKi8sCisJCQkJNTc4
QTRDMDgyMTY3RDI5NTAwRDA4RjM0IC8qIEZpZG9IaWRNZXNzYWdlLmNwcCAqLywKKwkJCQk1N0JB
RjI4QTIxNjdEMzAzMDA4RTk1NEUgLyogRmlkb0hpZE1lc3NhZ2UuaCAqLywKKwkJCQk1NzhBNEMw
OTIxNjdEMjk2MDBEMDhGMzQgLyogRmlkb0hpZFBhY2tldC5jcHAgKi8sCisJCQkJNTc4QTRDMEEy
MTY3RDI5NjAwRDA4RjM0IC8qIEZpZG9IaWRQYWNrZXQuaCAqLywKKwkJCQk1NzNGNTMzNjIxNjgw
RDE1MDA0NTU4N0EgLyogRmlkb1BhcnNpbmdVdGlscy5jcHAgKi8sCisJCQkJNTczRjUzMzUyMTY4
MEQxNDAwNDU1ODdBIC8qIEZpZG9QYXJzaW5nVXRpbHMuaCAqLywKKwkJCSk7CisJCQlwYXRoID0g
ZmlkbzsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTU3QzdBNjg4MUU1Njk0
NkQwMEM2N0Q3MSAvKiBjcmVkZW50aWFsbWFuYWdlbWVudCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0xODg2MSw2ICsxODg4OCw3IEBACiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTU3MzAzQkIzMjAwNkM2RUQwMDM1NTk2NSAv
KiBjYm9yICovLAorCQkJCTU3OEE0QkZBMjE2NkFFMDAwMEQwOEYzNCAvKiBmaWRvICovLAogCQkJ
CTU3MzAzQzI3MjAwOUIyRkMwMDM1NTk2NSAvKiBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9u
c2UuaCAqLywKIAkJCQk1NzMwM0MyOTIwMDlCMkZDMDAzNTU5NjUgLyogQXV0aGVudGljYXRvckFz
c2VydGlvblJlc3BvbnNlLmlkbCAqLywKIAkJCQk1NzMwM0MxQjIwMDlBOTg2MDAzNTU5NjUgLyog
QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuaCAqLywKQEAgLTI4MDY4LDYgKzI4MDk2
LDEwIEBACiAJCQkJODQ3MzBEOEQxMjQ4RjBCMzAwRDNBOUM5IC8qIEZFVHVyYnVsZW5jZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwOTUxMkIwMjZGNzAwQzFBMzU5IC8qIEZGVENvbnZvbHZl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwOTcxMkIwMjZGNzAwQzFBMzU5IC8qIEZGVEZy
YW1lLmggaW4gSGVhZGVycyAqLywKKwkJCQk1N0JBRjI4QzIxNjdEMzE2MDA4RTk1NEUgLyogRmlk
b0NvbnN0YW50cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTczRjUzMzIyMTY4MDZFMTAwNDU1ODdB
IC8qIEZpZG9IaWRNZXNzYWdlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1N0JBRjI4RTIxNjdEMzM5
MDA4RTk1NEUgLyogRmlkb0hpZFBhY2tldC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTczRjUzMzcy
MTY4MEQxNTAwNDU1ODdBIC8qIEZpZG9QYXJzaW5nVXRpbHMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTk3NkQ2QzgxMTIyQjhBM0QwMDFGRDFGNyAvKiBGaWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4
MzhGODZEQTFGNTA5RTc0MDBFOENGQzUgLyogRmlsZUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwNjZDNzcyQjBBQjYwM0I3MDAyMzhDQzQgLyogRmlsZUNob29zZXIuaCBpbiBIZWFkZXJz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwCmluZGV4IGFjOWJhOTc2MjAz
N2I4ZTNkODYwZDhhNjkzOTVmM2I4OGQ3YjQ2ZjAuLjE5MmFkM2YyNzZhZDYwMmY1ZjVkZTFmOThk
YmUxZGIwZDYyZDYwM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAKQEAg
LTE5MSw3ICsxOTEsNiBAQCB2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjppbml0VGltZU91dFRp
bWVyKGNvbnN0IHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+JiB0aW1lTwogICAgIHVzaW5nIG5hbWVz
cGFjZSBBdXRoZW50aWNhdG9yTWFuYWdlckludGVybmFsOwogCiAgICAgdW5zaWduZWQgdGltZU91
dEluTXNWYWx1ZSA9IHN0ZDo6bWluKG1heFRpbWVPdXRWYWx1ZSwgdGltZU91dEluTXMudmFsdWVf
b3IobWF4VGltZU91dFZhbHVlKSk7Ci0KICAgICBtX3JlcXVlc3RUaW1lT3V0VGltZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPFRpbWVyPihbY29udGV4dCA9IHRoaXNdKCkgbXV0YWJsZSB7CiAgICAgICAg
IGNvbnRleHQtPm1fcGVuZGluZ0NvbXBsZXRpb25IYW5kbGVyKChFeGNlcHRpb25EYXRhIHsgTm90
QWxsb3dlZEVycm9yLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iX3MgfSkpOwogICAgICAgICBjb250
ZXh0LT5jbGVhclN0YXRlKCk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggNjkwMDhlODQ0YjUwMGQ0Yjk3MTIxYWI0MjcxNzBkNDc1YjVhZTFiZS4u
NzNlZGU2MWEyODI4ODZjOGVlNmUwNGNlMjc0OTRhN2ZkMGU2NmRkOCAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE4
LTEwLTA5ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dl
YkF1dGhOXSBJbXBvcnQgQ1RBUCBISUQgbWVzc2FnZSBhbmQgcGFja2V0IHN0cnVjdHVyZSBmcm9t
IENocm9taXVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xODkyODkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ0MTIwMzEwPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL0ZpZG9IaWRNZXNzYWdlVGVzdC5jcHA6IEFkZGVkLgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMTgtMTAtMDMgIEplciBOb2JsZSAgPGplci5u
b2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHJlcG9ydGluZyAiZGlz
cGxheSBjb21wb3NpdGVkIHZpZGVvIGZyYW1lcyIgdGhyb3VnaCB0aGUgVmlkZW9QbGF5YmFja1F1
YWxpdHkgb2JqZWN0LgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiODY2YzIwNjA0NTc3MzM3
OGYxMmFjYzBiZmI1MDNhZGZjMmI0NDAyLi5mMDIzZTdhM2ZmY2RmM2VlYjZiYjQwMTZiY2EwZDIz
Njc5Y2NjNjJhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjU2LDYgKzI1Niw3IEBACiAJ
CTU3NjlDNTBCMUQ5QjAwMDIwMDA4NDdGQiAvKiBTZXJpYWxpemVkQ3J5cHRvS2V5V3JhcC5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NjlDNTBBMUQ5
QjAwMDEwMDA4NDdGQiAvKiBTZXJpYWxpemVkQ3J5cHRvS2V5V3JhcC5tbSAqLzsgfTsKIAkJNTc4
Q0JENjcyMDRGQjJDODAwODNCOUYyIC8qIExvY2FsQXV0aGVudGljYXRpb24uZnJhbWV3b3JrIGlu
IEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc4Q0JENjYy
MDRGQjJDNzAwODNCOUYyIC8qIExvY2FsQXV0aGVudGljYXRpb24uZnJhbWV3b3JrICovOyB9Owog
CQk1NzkwMUZCMTFDQUYxNDJEMDBFRDY0RjkgLyogTG9hZEludmFsaWRVUkxSZXF1ZXN0Lmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc5
MDFGQjAxQ0FGMTQxQzAwRUQ2NEY5IC8qIExvYWRJbnZhbGlkVVJMUmVxdWVzdC5odG1sICovOyB9
OworCQk1Nzk2NTFFNzIxNkJGREVEMDA2RUJGRTUgLyogRmlkb0hpZE1lc3NhZ2VUZXN0LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3OTY1MUU2MjE2
QkZENTMwMDZFQkZFNSAvKiBGaWRvSGlkTWVzc2FnZVRlc3QuY3BwICovOyB9OwogCQk1Nzk3RkUz
MTFFQjE1QTY4MDBCMkY0QTAgLyogTmF2aWdhdGlvbkNsaWVudERlZmF1bHRDcnlwdG8uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc5N0ZFMkYxRUIx
NUE1RjAwQjJGNEEwIC8qIE5hdmlnYXRpb25DbGllbnREZWZhdWx0Q3J5cHRvLmNwcCAqLzsgfTsK
IAkJNTc5N0ZFMzMxRUIxNUFCMTAwQjJGNEEwIC8qIG5hdmlnYXRpb24tY2xpZW50LWRlZmF1bHQt
Y3J5cHRvLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTc5N0ZFMzIxRUIxNUE4OTAwQjJGNEEwIC8qIG5hdmlnYXRpb24tY2xpZW50LWRl
ZmF1bHQtY3J5cHRvLmh0bWwgKi87IH07CiAJCTU3QzNGQTY2MUY3QzI0OEYwMDlENEI4MCAvKiBX
ZWFrUHRyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFDQjlCQzM3MUE2NzQ4MjMwMEZFNTY3OCAvKiBXZWFrUHRyLmNwcCAqLzsgfTsKQEAgLTE1NjEs
NiArMTU2Miw3IEBACiAJCTU3OTAxRkFDMUNBRjEyQzIwMEVENjRGOSAvKiBMb2FkSW52YWxpZFVS
TFJlcXVlc3QubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBMb2Fk
SW52YWxpZFVSTFJlcXVlc3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3OTAx
RkFFMUNBRjEzNzEwMEVENjRGOSAvKiBMb2FkSW52YWxpZFVSTFJlcXVlc3QubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBMb2FkSW52YWxpZFVSTFJlcXVlc3QubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3OTAxRkIwMUNBRjE0MUMwMEVENjRGOSAv
KiBMb2FkSW52YWxpZFVSTFJlcXVlc3QuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9
IExvYWRJbnZhbGlkVVJMUmVxdWVzdC5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1Nzk2NTFFNjIxNkJGRDUzMDA2RUJGRTUgLyogRmlkb0hpZE1lc3NhZ2VUZXN0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpZG9IaWRNZXNzYWdlVGVzdC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3OTdGRTJGMUVCMTVBNUYwMEIyRjRBMCAv
KiBOYXZpZ2F0aW9uQ2xpZW50RGVmYXVsdENyeXB0by5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBOYXZpZ2F0aW9uQ2xpZW50RGVmYXVsdENyeXB0by5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3OTdGRTMyMUVCMTVBODkwMEIyRjRBMCAvKiBuYXZp
Z2F0aW9uLWNsaWVudC1kZWZhdWx0LWNyeXB0by5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBw
YXRoID0gIm5hdmlnYXRpb24tY2xpZW50LWRlZmF1bHQtY3J5cHRvLmh0bWwiOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1Nzk4RTJBRjFDQUY1QzI4MDBDNUNCQTAgLyogUHJvdmlzaW9u
YWxVUkxOb3RDaGFuZ2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBQcm92aXNpb25hbFVSTE5vdENoYW5nZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTI1MjcsNiArMjUyOSw3IEBACiAJCQkJMjYwQkE1N0ExQjFEMkVFMjAwNEZBMDdDIC8qIERG
QUhlbHBlcnMuaCAqLywKIAkJCQkyNkY2RTFFRjFBREM3NDlCMDBERTY5NkIgLyogREZBTWluaW1p
emVyLmNwcCAqLywKIAkJCQkzMTUxMTgwRjFEQjFBREQ1MDAxNzYzMDQgLyogRXh0ZW5kZWRDb2xv
ci5jcHAgKi8sCisJCQkJNTc5NjUxRTYyMTZCRkQ1MzAwNkVCRkU1IC8qIEZpZG9IaWRNZXNzYWdl
VGVzdC5jcHAgKi8sCiAJCQkJN0EzMkQ3NDkxRjAyMTUxNTAwMTYyQzQ0IC8qIEZpbGVNb25pdG9y
LmNwcCAqLywKIAkJCQk0MTk3M0I1QTFBRjIyODZBMDA2QzdCMzYgLyogRmlsZVN5c3RlbS5jcHAg
Ki8sCiAJCQkJN0E5MDlBNzAxRDg3NzQ3NTAwN0UxMEY4IC8qIEZsb2F0UG9pbnQuY3BwICovLApA
QCAtMzgwNCw2ICszODA3LDcgQEAKIAkJCQlDREEyOUIyOTIwRkQyQTk5MDBGMTVDRUQgLyogRXhp
dEZ1bGxzY3JlZW5PbkVudGVyUGlQLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE1MTE4MTAxREIx
QUU0MDAwMTc2MzA0IC8qIEV4dGVuZGVkQ29sb3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0ND
RTdFRjExQTQxMUFFNjAwNDQ3QzRDIC8qIEZhaWxlZExvYWQuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJNTc5NjUxRTcyMTZCRkRFRDAwNkVCRkU1IC8qIEZpZG9IaWRNZXNzYWdlVGVzdC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk3QTMyRDc0QTFGMDIxNTE1MDAxNjJDNDQgLyogRmlsZU1vbml0b3Iu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0UwNEYxRDBBNjQxODAwRkVCQ0YzIC8qIEZpbGVT
eXN0ZW0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFRjMxQTQxMUFFNjAwNDQ3QzRDIC8q
IEZpbmQuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvRmlkb0hpZE1lc3NhZ2VUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9GaWRvSGlkTWVzc2FnZVRlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjczOGRl
NDQ0YmQ2MDViMjZjYjZhYTYwNWE0YWM4OTg0MWEwNzBjODIKLS0tIC9kZXYvbnVsbAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlkb0hpZE1lc3NhZ2VUZXN0LmNwcApA
QCAtMCwwICsxLDIxMyBAQAorLy8gQ29weXJpZ2h0IDIwMTcgVGhlIENocm9taXVtIEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
Ly8gbWV0OgorLy8KKy8vICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
Ky8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8v
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisj
aW5jbHVkZSA8V2ViQ29yZS9GaWRvQ29uc3RhbnRzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9GaWRv
SGlkTWVzc2FnZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRmlkb0hpZFBhY2tldC5oPgorI2luY2x1
ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkgeworCit1c2luZyBuYW1lc3BhY2UgZmlkbzsKKworLy8gUGFja2V0cyBzaG91
bGQgYmUgNjQgYnl0ZXMgKyAxIHJlcG9ydCBJRCBieXRlLgorVEVTVChGaWRvSGlkTWVzc2FnZVRl
c3QsIFRlc3RQYWNrZXRTaXplKQoreworICAgIHVpbnQzMl90IGNoYW5uZWxJZCA9IDB4MDUwNjA3
MDg7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CisKKyAgICBhdXRvIGluaXRQYWNrZXQgPSBz
dGQ6Om1ha2VfdW5pcXVlPEZpZG9IaWRJbml0UGFja2V0PihjaGFubmVsSWQsIEZpZG9IaWREZXZp
Y2VDb21tYW5kOjprSW5pdCwgVmVjdG9yPHVpbnQ4X3Q+KGRhdGEpLCBkYXRhLnNpemUoKSk7Cisg
ICAgRVhQRUNUX0VRKDY0dSwgaW5pdFBhY2tldC0+Z2V0U2VyaWFsaXplZERhdGEoKS5zaXplKCkp
OworCisgICAgYXV0byBjb250aW51YXRpb25QYWNrZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpZG9I
aWRDb250aW51YXRpb25QYWNrZXQ+KGNoYW5uZWxJZCwgMCwgV1RGTW92ZShkYXRhKSk7CisgICAg
RVhQRUNUX0VRKDY0dSwgY29udGludWF0aW9uUGFja2V0LT5nZXRTZXJpYWxpemVkRGF0YSgpLnNp
emUoKSk7Cit9CisKKy8qCisgKiBVMmYgSW5pdCBQYWNrZXRzIGFyZSBvZiB0aGUgZm9ybWF0Ogor
ICogQnl0ZSAwOiAgICAwCisgKiBCeXRlIDEtNDogIENoYW5uZWwgSUQKKyAqIEJ5dGUgNTogICAg
Q29tbWFuZCBieXRlCisgKiBCeXRlIDYtNzogIEJpZyBFbmRpYW4gc2l6ZSBvZiBkYXRhCisgKiBC
eXRlIDgtbjogIERhdGEgYmxvY2sKKyAqCisgKiBSZW1haW5pbmcgYnVmZmVyIGlzIHBhZGRlZCB3
aXRoIDAKKyAqLworVEVTVChGaWRvSGlkTWVzc2FnZVRlc3QsIFRlc3RQYWNrZXREYXRhKQorewor
ICAgIHVpbnQzMl90IGNoYW5uZWxJZCA9IDB4RjUwNjA3MDg7CisgICAgVmVjdG9yPHVpbnQ4X3Q+
IGRhdGEgezEwLCAxMX07CisgICAgRmlkb0hpZERldmljZUNvbW1hbmQgY21kID0gRmlkb0hpZERl
dmljZUNvbW1hbmQ6OmtXaW5rOworICAgIGF1dG8gaW5pdFBhY2tldCA9IHN0ZDo6bWFrZV91bmlx
dWU8Rmlkb0hpZEluaXRQYWNrZXQ+KGNoYW5uZWxJZCwgY21kLCBWZWN0b3I8dWludDhfdD4oZGF0
YSksIGRhdGEuc2l6ZSgpKTsKKyAgICBzaXplX3QgaW5kZXggPSAwOworCisgICAgVmVjdG9yPHVp
bnQ4X3Q+IHNlcmlhbGl6ZWQgPSBpbml0UGFja2V0LT5nZXRTZXJpYWxpemVkRGF0YSgpOworICAg
IEVYUEVDVF9FUSgoY2hhbm5lbElkID4+IDI0KSAmIDB4ZmYsIHNlcmlhbGl6ZWRbaW5kZXgrK10p
OworICAgIEVYUEVDVF9FUSgoY2hhbm5lbElkID4+IDE2KSAmIDB4ZmYsIHNlcmlhbGl6ZWRbaW5k
ZXgrK10pOworICAgIEVYUEVDVF9FUSgoY2hhbm5lbElkID4+IDgpICYgMHhmZiwgc2VyaWFsaXpl
ZFtpbmRleCsrXSk7CisgICAgRVhQRUNUX0VRKGNoYW5uZWxJZCAmIDB4ZmYsIHNlcmlhbGl6ZWRb
aW5kZXgrK10pOworICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDx1aW50OF90PihjbWQpLCBzZXJp
YWxpemVkW2luZGV4KytdICYgMHg3Zik7CisKKyAgICBFWFBFQ1RfRVEoZGF0YS5zaXplKCkgPj4g
OCwgc2VyaWFsaXplZFtpbmRleCsrXSk7CisgICAgRVhQRUNUX0VRKGRhdGEuc2l6ZSgpICYgMHhm
Ziwgc2VyaWFsaXplZFtpbmRleCsrXSk7CisgICAgRVhQRUNUX0VRKGRhdGFbMF0sIHNlcmlhbGl6
ZWRbaW5kZXgrK10pOworICAgIEVYUEVDVF9FUShkYXRhWzFdLCBzZXJpYWxpemVkW2luZGV4Kytd
KTsKKyAgICBmb3IgKDsgaW5kZXggPCBzZXJpYWxpemVkLnNpemUoKTsgaW5kZXgrKykKKyAgICAg
ICAgRVhQRUNUX0VRKDAsIHNlcmlhbGl6ZWRbaW5kZXhdKSA8PCAibWlzbWF0Y2ggYXQgaW5kZXgg
IiA8PCBpbmRleDsKK30KKworVEVTVChGaWRvSGlkTWVzc2FnZVRlc3QsIFRlc3RQYWNrZXRDb25z
dHJ1Y3RvcnMpCit7CisgICAgdWludDMyX3QgY2hhbm5lbElkID0gMHgwNTA2MDcwODsKKyAgICBW
ZWN0b3I8dWludDhfdD4gZGF0YSB7MTAsIDExfTsKKyAgICBGaWRvSGlkRGV2aWNlQ29tbWFuZCBj
bWQgPSBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a1dpbms7CisgICAgc2l6ZV90IGxlbmd0aCA9IGRh
dGEuc2l6ZSgpOworICAgIGF1dG8gb3JpZ1BhY2tldCA9IHN0ZDo6bWFrZV91bmlxdWU8Rmlkb0hp
ZEluaXRQYWNrZXQ+KGNoYW5uZWxJZCwgY21kLCBXVEZNb3ZlKGRhdGEpLCBsZW5ndGgpOworCisg
ICAgc2l6ZV90IHBheWxvYWRMZW5ndGggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KG9yaWdQYWNrZXQt
PnBheWxvYWRMZW5ndGgoKSk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IG9yaWdEYXRhID0gb3JpZ1Bh
Y2tldC0+Z2V0U2VyaWFsaXplZERhdGEoKTsKKworICAgIGF1dG8gcmVjb25zdHJ1Y3RlZFBhY2tl
dCA9IEZpZG9IaWRJbml0UGFja2V0OjpjcmVhdGVGcm9tU2VyaWFsaXplZERhdGEob3JpZ0RhdGEs
ICZwYXlsb2FkTGVuZ3RoKTsKKyAgICBFWFBFQ1RfRVEob3JpZ1BhY2tldC0+Y29tbWFuZCgpLCBy
ZWNvbnN0cnVjdGVkUGFja2V0LT5jb21tYW5kKCkpOworICAgIEVYUEVDVF9FUShvcmlnUGFja2V0
LT5wYXlsb2FkTGVuZ3RoKCksIHJlY29uc3RydWN0ZWRQYWNrZXQtPnBheWxvYWRMZW5ndGgoKSk7
CisgICAgRVhQRUNUX0VRKG9yaWdQYWNrZXQtPmdldFBhY2tldFBheWxvYWQoKSwgcmVjb25zdHJ1
Y3RlZFBhY2tldC0+Z2V0UGFja2V0UGF5bG9hZCgpKTsKKworICAgIEVYUEVDVF9FUShjaGFubmVs
SWQsIHJlY29uc3RydWN0ZWRQYWNrZXQtPmNoYW5uZWxJZCgpKTsKKworICAgIEFTU0VSVF9FUShv
cmlnUGFja2V0LT5nZXRTZXJpYWxpemVkRGF0YSgpLnNpemUoKSwgcmVjb25zdHJ1Y3RlZFBhY2tl
dC0+Z2V0U2VyaWFsaXplZERhdGEoKS5zaXplKCkpOworICAgIGZvciAoc2l6ZV90IGluZGV4ID0g
MDsgaW5kZXggPCBvcmlnUGFja2V0LT5nZXRTZXJpYWxpemVkRGF0YSgpLnNpemUoKTsgKytpbmRl
eCkKKyAgICAgICAgRVhQRUNUX0VRKG9yaWdQYWNrZXQtPmdldFNlcmlhbGl6ZWREYXRhKClbaW5k
ZXhdLCByZWNvbnN0cnVjdGVkUGFja2V0LT5nZXRTZXJpYWxpemVkRGF0YSgpW2luZGV4XSkgPDwg
Im1pc21hdGNoIGF0IGluZGV4ICIgPDwgaW5kZXg7Cit9CisKK1RFU1QoRmlkb0hpZE1lc3NhZ2VU
ZXN0LCBUZXN0TWF4TGVuZ3RoUGFja2V0Q29uc3RydWN0b3JzKQoreworICAgIHVpbnQzMl90IGNo
YW5uZWxJZCA9IDB4QUFBQkFDQUQ7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBrSGlkTWF4TWVzc2FnZVNpemU7ICsraSkKKyAgICAgICAgZGF0
YS5hcHBlbmQoc3RhdGljX2Nhc3Q8dWludDhfdD4oaSAlIDB4ZmYpKTsKKworICAgIGF1dG8gb3Jp
Z01zZyA9IEZpZG9IaWRNZXNzYWdlOjpjcmVhdGUoY2hhbm5lbElkLCBGaWRvSGlkRGV2aWNlQ29t
bWFuZDo6a01zZywgZGF0YSk7CisgICAgQVNTRVJUX1RSVUUob3JpZ01zZyk7CisKKyAgICBjb25z
dCBhdXRvJiBvcmlnaW5hbE1zZ1BhY2tldHMgPSBvcmlnTXNnLT5nZXRQYWNrZXRzRm9yVGVzdGlu
ZygpOworICAgIGF1dG8gaXQgPSBvcmlnaW5hbE1zZ1BhY2tldHMuYmVnaW4oKTsKKyAgICBhdXRv
IG1zZ0RhdGEgPSAoKml0KS0+Z2V0U2VyaWFsaXplZERhdGEoKTsKKyAgICBhdXRvIG5ld01zZyA9
IEZpZG9IaWRNZXNzYWdlOjpjcmVhdGVGcm9tU2VyaWFsaXplZERhdGEobXNnRGF0YSk7CisgICAg
KytpdDsKKworICAgIGZvciAoOyBpdCAhPSBvcmlnaW5hbE1zZ1BhY2tldHMuZW5kKCk7ICsraXQp
IHsKKyAgICAgICAgbXNnRGF0YSA9ICgqaXQpLT5nZXRTZXJpYWxpemVkRGF0YSgpOworICAgICAg
ICBFWFBFQ1RfVFJVRShuZXdNc2ctPmFkZENvbnRpbnVhdGlvblBhY2tldChtc2dEYXRhKSk7Cisg
ICAgfQorCisgICAgYXV0byBvcmlnSXQgPSBvcmlnaW5hbE1zZ1BhY2tldHMuYmVnaW4oKTsKKyAg
ICBjb25zdCBhdXRvJiBuZXdNc2dQYWNrZXRzID0gbmV3TXNnLT5nZXRQYWNrZXRzRm9yVGVzdGlu
ZygpOworICAgIGF1dG8gbmV3TXNnSXQgPSBuZXdNc2dQYWNrZXRzLmJlZ2luKCk7CisKKyAgICBF
WFBFQ1RfRVEob3JpZ01zZy0+bnVtUGFja2V0cygpLCBuZXdNc2ctPm51bVBhY2tldHMoKSk7Cisg
ICAgZm9yICg7IG9yaWdJdCAhPSBvcmlnaW5hbE1zZ1BhY2tldHMuZW5kKCkgfHwgbmV3TXNnSXQg
IT0gbmV3TXNnUGFja2V0cy5lbmQoKTsgKytvcmlnSXQsICsrbmV3TXNnSXQpIHsKKyAgICAgICAg
RVhQRUNUX0VRKCgqb3JpZ0l0KS0+Z2V0UGFja2V0UGF5bG9hZCgpLCAoKm5ld01zZ0l0KS0+Z2V0
UGFja2V0UGF5bG9hZCgpKTsKKworICAgICAgICBFWFBFQ1RfRVEoKCpvcmlnSXQpLT5jaGFubmVs
SWQoKSwgKCpuZXdNc2dJdCktPmNoYW5uZWxJZCgpKTsKKworICAgICAgICBBU1NFUlRfRVEoKCpv
cmlnSXQpLT5nZXRTZXJpYWxpemVkRGF0YSgpLnNpemUoKSwgKCpuZXdNc2dJdCktPmdldFNlcmlh
bGl6ZWREYXRhKCkuc2l6ZSgpKTsKKyAgICAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRl
eCA8ICgqb3JpZ0l0KS0+Z2V0U2VyaWFsaXplZERhdGEoKS5zaXplKCk7ICsraW5kZXgpCisgICAg
ICAgICAgICBFWFBFQ1RfRVEoKCpvcmlnSXQpLT5nZXRTZXJpYWxpemVkRGF0YSgpW2luZGV4XSwg
KCpuZXdNc2dJdCktPmdldFNlcmlhbGl6ZWREYXRhKClbaW5kZXhdKSA8PCAibWlzbWF0Y2ggYXQg
aW5kZXggIiA8PCBpbmRleDsKKyAgICB9Cit9CisKK1RFU1QoRmlkb0hpZE1lc3NhZ2VUZXN0LCBU
ZXN0TWVzc2FnZVBhcnRpdG9uaW5nKQoreworICAgIHVpbnQzMl90IGNoYW5uZWxJZCA9IDB4MDEw
MTAyMDM7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEoa0hpZEluaXRQYWNrZXREYXRhU2l6ZSAr
IDEpOworICAgIGF1dG8gdHdvUGFja2V0TWVzc2FnZSA9IEZpZG9IaWRNZXNzYWdlOjpjcmVhdGUo
Y2hhbm5lbElkLCBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a1BpbmcsIGRhdGEpOworICAgIEFTU0VS
VF9UUlVFKHR3b1BhY2tldE1lc3NhZ2UpOworICAgIEVYUEVDVF9FUSgyVSwgdHdvUGFja2V0TWVz
c2FnZS0+bnVtUGFja2V0cygpKTsKKworICAgIGRhdGEucmVzaXplKGtIaWRJbml0UGFja2V0RGF0
YVNpemUpOworICAgIGF1dG8gb25lUGFja2V0TWVzc2FnZSA9IEZpZG9IaWRNZXNzYWdlOjpjcmVh
dGUoY2hhbm5lbElkLCBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a1BpbmcsIGRhdGEpOworICAgIEFT
U0VSVF9UUlVFKG9uZVBhY2tldE1lc3NhZ2UpOworICAgIEVYUEVDVF9FUSgxVSwgb25lUGFja2V0
TWVzc2FnZS0+bnVtUGFja2V0cygpKTsKKworICAgIGRhdGEucmVzaXplKGtIaWRJbml0UGFja2V0
RGF0YVNpemUgKyBrSGlkQ29udGludWF0aW9uUGFja2V0RGF0YVNpemUgKyAxKTsKKyAgICBhdXRv
IHRocmVlUGFja2V0TWVzc2FnZSA9IEZpZG9IaWRNZXNzYWdlOjpjcmVhdGUoY2hhbm5lbElkLCBG
aWRvSGlkRGV2aWNlQ29tbWFuZDo6a1BpbmcsIGRhdGEpOworICAgIEFTU0VSVF9UUlVFKHRocmVl
UGFja2V0TWVzc2FnZSk7CisgICAgRVhQRUNUX0VRKDNVLCB0aHJlZVBhY2tldE1lc3NhZ2UtPm51
bVBhY2tldHMoKSk7Cit9CisKK1RFU1QoRmlkb0hpZE1lc3NhZ2VUZXN0LCBUZXN0TWF4U2l6ZSkK
K3sKKyAgICB1aW50MzJfdCBjaGFubmVsSWQgPSAweDAwMDEwMjAzOworICAgIFZlY3Rvcjx1aW50
OF90PiBkYXRhKGtIaWRNYXhNZXNzYWdlU2l6ZSArIDEpOworICAgIGF1dG8gb3ZlcnNpemVNZXNz
YWdlID0gRmlkb0hpZE1lc3NhZ2U6OmNyZWF0ZShjaGFubmVsSWQsIEZpZG9IaWREZXZpY2VDb21t
YW5kOjprUGluZywgZGF0YSk7CisgICAgRVhQRUNUX0ZBTFNFKG92ZXJzaXplTWVzc2FnZSk7Cit9
CisKK1RFU1QoRmlkb0hpZE1lc3NhZ2VUZXN0LCBUZXN0RGVjb25zdHJ1Y3QpCit7CisgICAgdWlu
dDMyX3QgY2hhbm5lbElkID0gMHgwQTBCMEMwRDsKKyAgICBWZWN0b3I8dWludDhfdD4gZGF0YShr
SGlkTWF4TWVzc2FnZVNpemUsIDB4N0YpOworICAgIGF1dG8gZmlsbGVkTWVzc2FnZSA9IEZpZG9I
aWRNZXNzYWdlOjpjcmVhdGUoY2hhbm5lbElkLCBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a1Bpbmcs
IGRhdGEpOworICAgIEFTU0VSVF9UUlVFKGZpbGxlZE1lc3NhZ2UpOworICAgIEVYUEVDVF9FUShk
YXRhLCBmaWxsZWRNZXNzYWdlLT5nZXRNZXNzYWdlUGF5bG9hZCgpKTsKK30KKworVEVTVChGaWRv
SGlkTWVzc2FnZVRlc3QsIFRlc3REZXNlcmlhbGl6ZSkKK3sKKyAgICB1aW50MzJfdCBjaGFubmVs
SWQgPSAweDBBMEIwQzBEOworICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhKGtIaWRNYXhNZXNzYWdl
U2l6ZSk7CisKKyAgICBhdXRvIG9yaWdNZXNzYWdlID0gRmlkb0hpZE1lc3NhZ2U6OmNyZWF0ZShj
aGFubmVsSWQsIEZpZG9IaWREZXZpY2VDb21tYW5kOjprUGluZywgZGF0YSk7CisgICAgQVNTRVJU
X1RSVUUob3JpZ01lc3NhZ2UpOworCisgICAgRGVxdWU8VmVjdG9yPHVpbnQ4X3Q+PiBvcmlnTGlz
dDsKKyAgICBhdXRvIGJ1ZiA9IG9yaWdNZXNzYWdlLT5wb3BOZXh0UGFja2V0KCk7CisgICAgb3Jp
Z0xpc3QuYXBwZW5kKGJ1Zik7CisKKyAgICBhdXRvIG5ld01lc3NhZ2UgPSBGaWRvSGlkTWVzc2Fn
ZTo6Y3JlYXRlRnJvbVNlcmlhbGl6ZWREYXRhKGJ1Zik7CisgICAgd2hpbGUgKCFuZXdNZXNzYWdl
LT5tZXNzYWdlQ29tcGxldGUoKSkgeworICAgICAgICBidWYgPSBvcmlnTWVzc2FnZS0+cG9wTmV4
dFBhY2tldCgpOworICAgICAgICBvcmlnTGlzdC5hcHBlbmQoYnVmKTsKKyAgICAgICAgbmV3TWVz
c2FnZS0+YWRkQ29udGludWF0aW9uUGFja2V0KGJ1Zik7CisgICAgfQorCisgICAgd2hpbGUgKCEo
YnVmID0gbmV3TWVzc2FnZS0+cG9wTmV4dFBhY2tldCgpKS5pc0VtcHR5KCkpIHsKKyAgICAgICAg
RVhQRUNUX0VRKGJ1Ziwgb3JpZ0xpc3QuZmlyc3QoKSk7CisgICAgICAgIG9yaWdMaXN0LnJlbW92
ZUZpcnN0KCk7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCisKKyNl
bmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQo=
</data>
<flag name="review"
          id="369196"
          type_id="1"
          status="+"
          setter="bfulgham"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351900</attachid>
            <date>2018-10-09 11:52:23 -0700</date>
            <delta_ts>2018-10-09 12:32:51 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-189289-20181009115222.patch</filename>
            <type>text/plain</type>
            <size>60088</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2ODc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmI3NmMxNjBlMzBiYmYz
ZjdhZGE2NWI0ODVkYWZjNGZhMTQ3MmZhOS4uY2M1MjIxYjYxYWRmOWRhMmQ5MzZhNjZmNWY5ZWJm
NDUyNjQ5MTQ2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDE4LTEwLTA5ICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhOXSBJbXBv
cnQgQ1RBUCBISUQgbWVzc2FnZSBhbmQgcGFja2V0IHN0cnVjdHVyZSBmcm9tIENocm9taXVtCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkyODkKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ0MTIwMzEwPgorCisgICAgICAgIFJldmlld2VkIGJ5IEJy
ZW50IEZ1bGdoYW0uCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBvcnRzIENUQVAgSElEIG1lc3Nh
Z2UgYW5kIHBhY2tldCBzdHJ1Y3R1cmU6CisgICAgICAgIGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9y
Zy9zcGVjcy9maWRvLXYyLjAtcHMtMjAxNzA5MjcvZmlkby1jbGllbnQtdG8tYXV0aGVudGljYXRv
ci1wcm90b2NvbC12Mi4wLXBzLTIwMTcwOTI3Lmh0bWwjbWVzc2FnZS1hbmQtcGFja2V0LXN0cnVj
dHVyZQorICAgICAgICBmcm9tIENocm9taXVtLiBXaXRoIHRoaXMgbGlicmFyeSwgV2ViS2l0IGNh
biBub3cgdHVybiBiaW5hcmllcyBpbnRvIG1lc3NhZ2VzIHRoYXQgQ1RBUCBkZXZpY2VzIGNvdWxk
IHVuZGVyc3RhbmQuCisgICAgICAgIFRoaXMgcGF0Y2ggY29udGFpbnMgdGhlIGZvbGxvd2luZyBD
aHJvbWl1bSBmaWxlcyBhbmQgbW9kaWZpZXMgdGhlbSB0byBmaXQgaW50byBXZWJLaXQ6CisgICAg
ICAgIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9kZXZpY2UvZmlkby9maWRv
X2NvbnN0YW50cy5jYz9sPTEmcmNsPTFlZmNmYmVhZjRlNGNlZGY1ODcxNmUxOTgyYjU3MDI3NzA1
NzFhNzUKKyAgICAgICAgaHR0cHM6Ly9jcy5jaHJvbWl1bS5vcmcvY2hyb21pdW0vc3JjL2Rldmlj
ZS9maWRvL2ZpZG9fY29uc3RhbnRzLmg/bD0xJnJjbD0xZWZjZmJlYWY0ZTRjZWRmNTg3MTZlMTk4
MmI1NzAyNzcwNTcxYTc1CisgICAgICAgIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVt
L3NyYy9kZXZpY2UvZmlkby9oaWQvZmlkb19oaWRfbWVzc2FnZS5jYz9sPTEmcmNsPTM4N2YzNzI1
ZGUyODQyZTBlNmI3MTc1YTliMmVkNDcyYjBjZjc4MWEKKyAgICAgICAgaHR0cHM6Ly9jcy5jaHJv
bWl1bS5vcmcvY2hyb21pdW0vc3JjL2RldmljZS9maWRvL2hpZC9maWRvX2hpZF9tZXNzYWdlLmg/
cmNsPTFlZmNmYmVhZjRlNGNlZGY1ODcxNmUxOTgyYjU3MDI3NzA1NzFhNzUKKyAgICAgICAgaHR0
cHM6Ly9jcy5jaHJvbWl1bS5vcmcvY2hyb21pdW0vc3JjL2RldmljZS9maWRvL2hpZC9maWRvX2hp
ZF9wYWNrZXQuY2M/cmNsPTFlZmNmYmVhZjRlNGNlZGY1ODcxNmUxOTgyYjU3MDI3NzA1NzFhNzUK
KyAgICAgICAgaHR0cHM6Ly9jcy5jaHJvbWl1bS5vcmcvY2hyb21pdW0vc3JjL2RldmljZS9maWRv
L2hpZC9maWRvX2hpZF9wYWNrZXQuaD9yY2w9MWVmY2ZiZWFmNGU0Y2VkZjU4NzE2ZTE5ODJiNTcw
Mjc3MDU3MWE3NQorICAgICAgICBodHRwczovL2NzLmNocm9taXVtLm9yZy9jaHJvbWl1bS9zcmMv
ZGV2aWNlL2ZpZG8vaGlkL2ZpZG9faGlkX21lc3NhZ2VfdW5pdHRlc3QuY2M/cmNsPTFlZmNmYmVh
ZjRlNGNlZGY1ODcxNmUxOTgyYjU3MDI3NzA1NzFhNzUKKworICAgICAgICBDb3ZlcmVkIGJ5IEFQ
SSB0ZXN0cy4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvQ29uc3RhbnRz
LmNwcDogQWRkZWQuCisgICAgICAgIChmaWRvOjppc0ZpZG9IaWREZXZpY2VDb21tYW5kKToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0NvbnN0YW50cy5oOiBBZGRlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hpZE1lc3NhZ2UuY3BwOiBBZGRlZC4K
KyAgICAgICAgKGZpZG86OkZpZG9IaWRNZXNzYWdlOjpjcmVhdGUpOgorICAgICAgICAoZmlkbzo6
Rmlkb0hpZE1lc3NhZ2U6OmNyZWF0ZUZyb21TZXJpYWxpemVkRGF0YSk6CisgICAgICAgIChmaWRv
OjpGaWRvSGlkTWVzc2FnZTo6bWVzc2FnZUNvbXBsZXRlIGNvbnN0KToKKyAgICAgICAgKGZpZG86
OkZpZG9IaWRNZXNzYWdlOjpnZXRNZXNzYWdlUGF5bG9hZCBjb25zdCk6CisgICAgICAgIChmaWRv
OjpGaWRvSGlkTWVzc2FnZTo6cG9wTmV4dFBhY2tldCk6CisgICAgICAgIChmaWRvOjpGaWRvSGlk
TWVzc2FnZTo6YWRkQ29udGludWF0aW9uUGFja2V0KToKKyAgICAgICAgKGZpZG86OkZpZG9IaWRN
ZXNzYWdlOjpudW1QYWNrZXRzIGNvbnN0KToKKyAgICAgICAgKGZpZG86OkZpZG9IaWRNZXNzYWdl
OjpGaWRvSGlkTWVzc2FnZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9I
aWRNZXNzYWdlLmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRv
SGlkUGFja2V0LmNwcDogQWRkZWQuCisgICAgICAgIChmaWRvOjpGaWRvSGlkUGFja2V0OjpGaWRv
SGlkUGFja2V0KToKKyAgICAgICAgKGZpZG86OkZpZG9IaWRJbml0UGFja2V0OjpjcmVhdGVGcm9t
U2VyaWFsaXplZERhdGEpOgorICAgICAgICAoZmlkbzo6Rmlkb0hpZEluaXRQYWNrZXQ6OkZpZG9I
aWRJbml0UGFja2V0KToKKyAgICAgICAgKGZpZG86OkZpZG9IaWRJbml0UGFja2V0OjpnZXRTZXJp
YWxpemVkRGF0YSBjb25zdCk6CisgICAgICAgIChmaWRvOjpGaWRvSGlkQ29udGludWF0aW9uUGFj
a2V0OjpjcmVhdGVGcm9tU2VyaWFsaXplZERhdGEpOgorICAgICAgICAoZmlkbzo6Rmlkb0hpZENv
bnRpbnVhdGlvblBhY2tldDo6Rmlkb0hpZENvbnRpbnVhdGlvblBhY2tldCk6CisgICAgICAgIChm
aWRvOjpGaWRvSGlkQ29udGludWF0aW9uUGFja2V0OjpnZXRTZXJpYWxpemVkRGF0YSBjb25zdCk6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRQYWNrZXQuaDogQWRkZWQu
CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9QYXJzaW5nVXRpbHMuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKGZpZG86OmdldEluaXRQYWNrZXREYXRhKToKKyAgICAgICAgKGZpZG86
OmdldENvbnRpbnVhdGlvblBhY2tldERhdGEpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4v
Zmlkby9GaWRvUGFyc2luZ1V0aWxzLmg6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZXMudHh0Ogor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOC0xMC0w
NSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWVk
aWFTdHJlYW1dIFJlYWx0aW1lTWVkaWFTb3VyY2Ugc2hvdWxkIGJlIGFibGUgdG8gdmVuZCBoYXNo
ZWQgSURzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8v
Rmlkb0NvbnN0YW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8v
Rmlkb0NvbnN0YW50cy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzg4MWZkMmYyNjRlOWYwZWU0ZGEwMzkyNDJl
NWFkMTBkNzA0YTRmMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXV0aG4vZmlkby9GaWRvQ29uc3RhbnRzLmNwcApAQCAtMCwwICsxLDU3IEBACisvLyBDb3B5
cmlnaHQgMjAxOCBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLwor
Ly8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmli
dXRpb24uCisvLyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
Ky8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJGaWRvQ29uc3RhbnRzLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQor
CituYW1lc3BhY2UgZmlkbyB7CisKK2Jvb2wgaXNGaWRvSGlkRGV2aWNlQ29tbWFuZChGaWRvSGlk
RGV2aWNlQ29tbWFuZCBjbWQpCit7CisgICAgc3dpdGNoIChjbWQpIHsKKyAgICBjYXNlIEZpZG9I
aWREZXZpY2VDb21tYW5kOjprTXNnOgorICAgIGNhc2UgRmlkb0hpZERldmljZUNvbW1hbmQ6OmtD
Ym9yOgorICAgIGNhc2UgRmlkb0hpZERldmljZUNvbW1hbmQ6OmtJbml0OgorICAgIGNhc2UgRmlk
b0hpZERldmljZUNvbW1hbmQ6OmtQaW5nOgorICAgIGNhc2UgRmlkb0hpZERldmljZUNvbW1hbmQ6
OmtDYW5jZWw6CisgICAgY2FzZSBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a0Vycm9yOgorICAgIGNh
c2UgRmlkb0hpZERldmljZUNvbW1hbmQ6OmtLZWVwQWxpdmU6CisgICAgY2FzZSBGaWRvSGlkRGV2
aWNlQ29tbWFuZDo6a1dpbms6CisgICAgY2FzZSBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a0xvY2s6
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIGZpZG8KKworI2VuZGlmIC8vIEVOQUJMRShX
RUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2Zp
ZG8vRmlkb0NvbnN0YW50cy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRv
L0ZpZG9Db25zdGFudHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iODY5MGYwM2RkNDg0ZGZkMzY3NTY3NTBlMDU2
YTI3NWM2ZGQzZTU2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdXRobi9maWRvL0ZpZG9Db25zdGFudHMuaApAQCAtMCwwICsxLDY4IEBACisvLyBDb3B5cmln
aHQgMjAxOCBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8g
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
Ly8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRp
b24uCisvLyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8v
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKFdFQl9BVVRITikKKworbmFtZXNwYWNlIGZpZG8geworCisvLyBDb21tYW5kcyBzdXBw
b3J0ZWQgYnkgQ1RBUEhJRCBkZXZpY2UgYXMgc3BlY2lmaWVkIGluCisvLyBodHRwczovL2ZpZG9h
bGxpYW5jZS5vcmcvc3BlY3MvZmlkby12Mi4wLXBzLTIwMTcwOTI3L2ZpZG8tY2xpZW50LXRvLWF1
dGhlbnRpY2F0b3ItcHJvdG9jb2wtdjIuMC1wcy0yMDE3MDkyNy5odG1sI2N0YXBoaWQtY29tbWFu
ZHMKK2VudW0gY2xhc3MgRmlkb0hpZERldmljZUNvbW1hbmQgOiB1aW50OF90IHsKKyAgICBrTXNn
ID0gMHgwMywKKyAgICBrQ2JvciA9IDB4MTAsCisgICAga0luaXQgPSAweDA2LAorICAgIGtQaW5n
ID0gMHgwMSwKKyAgICBrQ2FuY2VsID0gMHgxMSwKKyAgICBrRXJyb3IgPSAweDNGLAorICAgIGtL
ZWVwQWxpdmUgPSAweDNCLAorICAgIGtXaW5rID0gMHgwOCwKKyAgICBrTG9jayA9IDB4MDQsCit9
OworCitib29sIGlzRmlkb0hpZERldmljZUNvbW1hbmQoRmlkb0hpZERldmljZUNvbW1hbmQgY21k
KTsKKworLy8gSElEIHRyYW5zcG9ydCBzcGVjaWZpYyBjb25zdGFudHMuCitjb25zdCBzaXplX3Qg
a0hpZFBhY2tldFNpemUgPSA2NDsKK2NvbnN0IHVpbnQzMl90IGtIaWRCcm9hZGNhc3RDaGFubmVs
ID0gMHhmZmZmZmZmZjsKK2NvbnN0IHNpemVfdCBrSGlkSW5pdFBhY2tldEhlYWRlclNpemUgPSA3
OworY29uc3Qgc2l6ZV90IGtIaWRDb250aW51YXRpb25QYWNrZXRIZWFkZXIgPSA1OworY29uc3Qg
c2l6ZV90IGtIaWRNYXhQYWNrZXRTaXplID0gNjQ7Citjb25zdCBzaXplX3Qga0hpZEluaXRQYWNr
ZXREYXRhU2l6ZSA9IGtIaWRNYXhQYWNrZXRTaXplIC0ga0hpZEluaXRQYWNrZXRIZWFkZXJTaXpl
OworY29uc3Qgc2l6ZV90IGtIaWRDb250aW51YXRpb25QYWNrZXREYXRhU2l6ZSA9IGtIaWRNYXhQ
YWNrZXRTaXplIC0ga0hpZENvbnRpbnVhdGlvblBhY2tldEhlYWRlcjsKKworY29uc3QgdWludDhf
dCBrSGlkTWF4TG9ja1NlY29uZHMgPSAxMDsKKworLy8gTWVzc2FnZXMgYXJlIGxpbWl0ZWQgdG8g
YW4gaW5pdGlhdGlvbiBwYWNrZXQgYW5kIDEyOCBjb250aW51YXRpb24gcGFja2V0cy4KK2NvbnN0
IHNpemVfdCBrSGlkTWF4TWVzc2FnZVNpemUgPSA3NjA5OworCit9IC8vIG5hbWVzcGFjZSBmaWRv
CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRNZXNzYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkTWVzc2FnZS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Mzk1ZTVlY2VkODg0OWYyYjZjM2EzODI5YTI2MGE5N2EwYzZlMDFlYwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkTWVzc2FnZS5j
cHAKQEAgLTAsMCArMSwxNjYgQEAKKy8vIENvcHlyaWdodCAyMDE3IFRoZSBDaHJvbWl1bSBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKy8vIG1ldDoKKy8vCisvLyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
Ky8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8g
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkZpZG9IaWRNZXNzYWdl
LmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisjaW5jbHVkZSAiRmlkb1BhcnNpbmdVdGls
cy5oIgorCituYW1lc3BhY2UgZmlkbyB7CisKKy8vIHN0YXRpYworc3RkOjpvcHRpb25hbDxGaWRv
SGlkTWVzc2FnZT4gRmlkb0hpZE1lc3NhZ2U6OmNyZWF0ZSh1aW50MzJfdCBjaGFubmVsSWQsIEZp
ZG9IaWREZXZpY2VDb21tYW5kIHR5cGUsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKK3sK
KyAgICBpZiAoZGF0YS5zaXplKCkgPiBrSGlkTWF4TWVzc2FnZVNpemUpCisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIEZpZG9IaWRE
ZXZpY2VDb21tYW5kOjprUGluZzoKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGaWRvSGlkRGV2
aWNlQ29tbWFuZDo6a01zZzoKKyAgICBjYXNlIEZpZG9IaWREZXZpY2VDb21tYW5kOjprQ2Jvcjog
eworICAgICAgICBpZiAoZGF0YS5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIEZpZG9IaWREZXZpY2VD
b21tYW5kOjprQ2FuY2VsOgorICAgIGNhc2UgRmlkb0hpZERldmljZUNvbW1hbmQ6OmtXaW5rOiB7
CisgICAgICAgIGlmICghZGF0YS5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBGaWRvSGlkRGV2aWNlQ29t
bWFuZDo6a0xvY2s6IHsKKyAgICAgICAgaWYgKGRhdGEuc2l6ZSgpICE9IDEgfHwgZGF0YVswXSA+
IGtIaWRNYXhMb2NrU2Vjb25kcykKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIEZpZG9IaWREZXZpY2VDb21tYW5kOjprSW5p
dDogeworICAgICAgICBpZiAoZGF0YS5zaXplKCkgIT0gOCkKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIEZpZG9IaWREZXZp
Y2VDb21tYW5kOjprS2VlcEFsaXZlOgorICAgIGNhc2UgRmlkb0hpZERldmljZUNvbW1hbmQ6OmtF
cnJvcjoKKyAgICAgICAgaWYgKGRhdGEuc2l6ZSgpICE9IDEpCisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworICAgIH0KKworICAgIHJldHVybiBGaWRvSGlkTWVzc2FnZShjaGFubmVs
SWQsIHR5cGUsIGRhdGEpOworfQorCisvLyBzdGF0aWMKK3N0ZDo6b3B0aW9uYWw8Rmlkb0hpZE1l
c3NhZ2U+IEZpZG9IaWRNZXNzYWdlOjpjcmVhdGVGcm9tU2VyaWFsaXplZERhdGEoY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBzZXJpYWxpemVkRGF0YSkKK3sKKyAgICBzaXplX3QgcmVtYWluaW5nU2l6
ZSA9IDA7CisgICAgaWYgKHNlcmlhbGl6ZWREYXRhLnNpemUoKSA+IGtIaWRQYWNrZXRTaXplIHx8
IHNlcmlhbGl6ZWREYXRhLnNpemUoKSA8IGtIaWRJbml0UGFja2V0SGVhZGVyU2l6ZSkKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGF1dG8gaW5pdFBhY2tldCA9IEZpZG9IaWRJ
bml0UGFja2V0OjpjcmVhdGVGcm9tU2VyaWFsaXplZERhdGEoc2VyaWFsaXplZERhdGEsICZyZW1h
aW5pbmdTaXplKTsKKworICAgIGlmICghaW5pdFBhY2tldCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKworICAgIHJldHVybiBGaWRvSGlkTWVzc2FnZShXVEZNb3ZlKGluaXRQYWNrZXQp
LCByZW1haW5pbmdTaXplKTsKK30KKworYm9vbCBGaWRvSGlkTWVzc2FnZTo6bWVzc2FnZUNvbXBs
ZXRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIW1fcmVtYWluaW5nU2l6ZTsKK30KKworVmVjdG9y
PHVpbnQ4X3Q+IEZpZG9IaWRNZXNzYWdlOjpnZXRNZXNzYWdlUGF5bG9hZCgpIGNvbnN0Cit7Cisg
ICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CisgICAgc2l6ZV90IGRhdGFTaXplID0gMDsKKyAgICBm
b3IgKGNvbnN0IGF1dG8mIHBhY2tldCA6IG1fcGFja2V0cykKKyAgICAgICAgZGF0YVNpemUgKz0g
cGFja2V0LT5nZXRQYWNrZXRQYXlsb2FkKCkuc2l6ZSgpOworICAgIGRhdGEucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShkYXRhU2l6ZSk7CisKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHBhY2tldCA6IG1f
cGFja2V0cykgeworICAgICAgICBjb25zdCBhdXRvJiBwYWNrZXRfZGF0YSA9IHBhY2tldC0+Z2V0
UGFja2V0UGF5bG9hZCgpOworICAgICAgICBkYXRhLmFwcGVuZFZlY3RvcihwYWNrZXRfZGF0YSk7
CisgICAgfQorCisgICAgcmV0dXJuIGRhdGE7Cit9CisKK1ZlY3Rvcjx1aW50OF90PiBGaWRvSGlk
TWVzc2FnZTo6cG9wTmV4dFBhY2tldCgpCit7CisgICAgaWYgKG1fcGFja2V0cy5pc0VtcHR5KCkp
CisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBWZWN0b3I8dWludDhfdD4gZGF0YSA9IG1fcGFj
a2V0cy5maXJzdCgpLT5nZXRTZXJpYWxpemVkRGF0YSgpOworICAgIG1fcGFja2V0cy5yZW1vdmVG
aXJzdCgpOworICAgIHJldHVybiBkYXRhOworfQorCitib29sIEZpZG9IaWRNZXNzYWdlOjphZGRD
b250aW51YXRpb25QYWNrZXQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBidWYpCit7CisgICAgc2l6
ZV90IHJlbWFpbmluZ1NpemUgPSBtX3JlbWFpbmluZ1NpemU7CisgICAgYXV0byBjb250UGFja2V0
ID0gRmlkb0hpZENvbnRpbnVhdGlvblBhY2tldDo6Y3JlYXRlRnJvbVNlcmlhbGl6ZWREYXRhKGJ1
ZiwgJnJlbWFpbmluZ1NpemUpOworCisgICAgLy8gUmVqZWN0IHBhY2tldHMgd2l0aCBhIGRpZmZl
cmVudCBjaGFubmVsIGlkLgorICAgIGlmICghY29udFBhY2tldCB8fCBtX2NoYW5uZWxJZCAhPSBj
b250UGFja2V0LT5jaGFubmVsSWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV9y
ZW1haW5pbmdTaXplID0gcmVtYWluaW5nU2l6ZTsKKyAgICBtX3BhY2tldHMuYXBwZW5kKFdURk1v
dmUoY29udFBhY2tldCkpOworICAgIHJldHVybiB0cnVlOworfQorCitzaXplX3QgRmlkb0hpZE1l
c3NhZ2U6Om51bVBhY2tldHMoKSBjb25zdAoreworICAgIHJldHVybiBtX3BhY2tldHMuc2l6ZSgp
OworfQorCitGaWRvSGlkTWVzc2FnZTo6Rmlkb0hpZE1lc3NhZ2UodWludDMyX3QgY2hhbm5lbElk
LCBGaWRvSGlkRGV2aWNlQ29tbWFuZCB0eXBlLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEp
CisgICAgOiBtX2NoYW5uZWxJZChjaGFubmVsSWQpCit7CisgICAgdWludDhfdCBzZXF1ZW5jZSA9
IDA7CisKKyAgICBzaXplX3QgcG9zID0gZGF0YS5zaXplKCkgPiBrSGlkSW5pdFBhY2tldERhdGFT
aXplID8ga0hpZEluaXRQYWNrZXREYXRhU2l6ZSA6IGRhdGEuc2l6ZSgpOworICAgIG1fcGFja2V0
cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGaWRvSGlkSW5pdFBhY2tldD4oY2hhbm5lbElkLCB0
eXBlLCBnZXRJbml0UGFja2V0RGF0YShkYXRhKSwgZGF0YS5zaXplKCkpKTsKKyAgICBmb3IgKDsg
cG9zIDwgZGF0YS5zaXplKCk7IHBvcyArPSBrSGlkQ29udGludWF0aW9uUGFja2V0RGF0YVNpemUp
CisgICAgICAgIG1fcGFja2V0cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGaWRvSGlkQ29udGlu
dWF0aW9uUGFja2V0PihjaGFubmVsSWQsIHNlcXVlbmNlKyssIGdldENvbnRpbnVhdGlvblBhY2tl
dERhdGEoZGF0YSwgcG9zKSkpOworfQorCitGaWRvSGlkTWVzc2FnZTo6Rmlkb0hpZE1lc3NhZ2Uo
c3RkOjp1bmlxdWVfcHRyPEZpZG9IaWRJbml0UGFja2V0PiBpbml0UGFja2V0LCBzaXplX3QgcmVt
YWluaW5nU2l6ZSkKKyAgICA6IG1fcmVtYWluaW5nU2l6ZShyZW1haW5pbmdTaXplKQoreworICAg
IG1fY2hhbm5lbElkID0gaW5pdFBhY2tldC0+Y2hhbm5lbElkKCk7CisgICAgbV9jbWQgPSBpbml0
UGFja2V0LT5jb21tYW5kKCk7CisgICAgbV9wYWNrZXRzLmFwcGVuZChXVEZNb3ZlKGluaXRQYWNr
ZXQpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgZmlkbworCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9B
VVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9G
aWRvSGlkTWVzc2FnZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0Zp
ZG9IaWRNZXNzYWdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGQ5ZDNmYzkzYmE4ZDBiNjdhNzgzZDdlOTEyZTlk
ZTI5YmJlZThjMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vZmlkby9GaWRvSGlkTWVzc2FnZS5oCkBAIC0wLDAgKzEsODEgQEAKKy8vIENvcHlyaWdo
dCAyMDE3IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisv
LyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisvLyAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlv
bi4KKy8vICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8g
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
Ky8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoV0VCX0FVVEhOKQorCisjaW5jbHVkZSAiRmlkb0NvbnN0YW50cy5oIgorI2luY2x1ZGUg
IkZpZG9IaWRQYWNrZXQuaCIKKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYv
T3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBmaWRvIHsK
KworLy8gUmVwcmVzZW50cyBISUQgbWVzc2FnZSBmb3JtYXQgZGVmaW5lZCBieSB0aGUgc3BlY2lm
aWNhdGlvbiBhdAorLy8gaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL3NwZWNzL2ZpZG8tdjIuMC1w
cy0yMDE3MDkyNy9maWRvLWNsaWVudC10by1hdXRoZW50aWNhdG9yLXByb3RvY29sLXYyLjAtcHMt
MjAxNzA5MjcuaHRtbCNtZXNzYWdlLWFuZC1wYWNrZXQtc3RydWN0dXJlCitjbGFzcyBXRUJDT1JF
X0VYUE9SVCBGaWRvSGlkTWVzc2FnZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRmlkb0hp
ZE1lc3NhZ2UpOworcHVibGljOgorICAgIC8vIFN0YXRpYyBmdW5jdGlvbnMgdG8gY3JlYXRlIENU
QVAvVTJGIEhJRCBjb21tYW5kcy4KKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxGaWRvSGlkTWVz
c2FnZT4gY3JlYXRlKHVpbnQzMl90IGNoYW5uZWxJZCwgRmlkb0hpZERldmljZUNvbW1hbmQsIGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSk7CisKKyAgICAvLyBSZWNvbnN0cnVjdCBhIG1lc3Nh
Z2UgZnJvbSBzZXJpYWxpemVkIG1lc3NhZ2UgZGF0YS4KKyAgICBzdGF0aWMgc3RkOjpvcHRpb25h
bDxGaWRvSGlkTWVzc2FnZT4gY3JlYXRlRnJvbVNlcmlhbGl6ZWREYXRhKGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYpOworCisgICAgRmlkb0hpZE1lc3NhZ2UoRmlkb0hpZE1lc3NhZ2UmJiB0aGF0KSA9
IGRlZmF1bHQ7CisgICAgRmlkb0hpZE1lc3NhZ2UmIG9wZXJhdG9yPShGaWRvSGlkTWVzc2FnZSYm
IG90aGVyKSA9IGRlZmF1bHQ7CisKKyAgICBib29sIG1lc3NhZ2VDb21wbGV0ZSgpIGNvbnN0Owor
ICAgIFZlY3Rvcjx1aW50OF90PiBnZXRNZXNzYWdlUGF5bG9hZCgpIGNvbnN0OworICAgIC8vIFBv
cCBmcm9udCBvZiBxdWV1ZSB3aXRoIG5leHQgcGFja2V0LgorICAgIFZlY3Rvcjx1aW50OF90PiBw
b3BOZXh0UGFja2V0KCk7CisgICAgLy8gQWRkcyBhIGNvbnRpbnVhdGlvbiBwYWNrZXQgdG8gdGhl
IHBhY2tldCBsaXN0LCBmcm9tIHRoZSBzZXJpYWxpemVkCisgICAgLy8gcmVzcG9uc2UgdmFsdWUu
CisgICAgYm9vbCBhZGRDb250aW51YXRpb25QYWNrZXQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7
CisKKyAgICBzaXplX3QgbnVtUGFja2V0cygpIGNvbnN0OworICAgIHVpbnQzMl90IGNoYW5uZWxJ
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2hhbm5lbElkOyB9CisgICAgRmlkb0hpZERldmljZUNvbW1h
bmQgY21kKCkgY29uc3QgeyByZXR1cm4gbV9jbWQ7IH0KKyAgICBjb25zdCBEZXF1ZTxzdGQ6OnVu
aXF1ZV9wdHI8Rmlkb0hpZFBhY2tldD4+JiBnZXRQYWNrZXRzRm9yVGVzdGluZygpIGNvbnN0IHsg
cmV0dXJuIG1fcGFja2V0czsgfQorCitwcml2YXRlOgorICAgIEZpZG9IaWRNZXNzYWdlKHVpbnQz
Ml90IGNoYW5uZWxJZCwgRmlkb0hpZERldmljZUNvbW1hbmQsIGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgZGF0YSk7CisgICAgRmlkb0hpZE1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPEZpZG9IaWRJbml0
UGFja2V0Piwgc2l6ZV90IHJlbWFpbmluZ1NpemUpOworCisgICAgdWludDMyX3QgbV9jaGFubmVs
SWQgPSBrSGlkQnJvYWRjYXN0Q2hhbm5lbDsKKyAgICBGaWRvSGlkRGV2aWNlQ29tbWFuZCBtX2Nt
ZCA9IEZpZG9IaWREZXZpY2VDb21tYW5kOjprTXNnOworICAgIERlcXVlPHN0ZDo6dW5pcXVlX3B0
cjxGaWRvSGlkUGFja2V0Pj4gbV9wYWNrZXRzOworICAgIHNpemVfdCBtX3JlbWFpbmluZ1NpemUg
PSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgZmlkbworCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9B
VVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9G
aWRvSGlkUGFja2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9G
aWRvSGlkUGFja2V0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NWI3YjJkNzE1MzZhMjM1NDkxM2FlMzZlOWZi
OTFlZjAwYThmMDgzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdXRobi9maWRvL0ZpZG9IaWRQYWNrZXQuY3BwCkBAIC0wLDAgKzEsMTU3IEBACisvLyBDb3B5
cmlnaHQgMjAxNyBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLwor
Ly8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmli
dXRpb24uCisvLyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
Ky8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJGaWRvSGlkUGFja2V0LmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQor
CisjaW5jbHVkZSA8YWxnb3JpdGhtPgorCituYW1lc3BhY2UgZmlkbyB7CisKK0ZpZG9IaWRQYWNr
ZXQ6OkZpZG9IaWRQYWNrZXQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgdWludDMyX3QgY2hhbm5l
bElkKQorICAgIDogbV9kYXRhKFdURk1vdmUoZGF0YSkpCisgICAgLCBtX2NoYW5uZWxJZChjaGFu
bmVsSWQpCit7Cit9CisKKy8vIHN0YXRpYworc3RkOjp1bmlxdWVfcHRyPEZpZG9IaWRJbml0UGFj
a2V0PiBGaWRvSGlkSW5pdFBhY2tldDo6Y3JlYXRlRnJvbVNlcmlhbGl6ZWREYXRhKGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgc2VyaWFsaXplZCwgc2l6ZV90KiByZW1haW5pbmdTaXplKQoreworICAg
IGlmICghcmVtYWluaW5nU2l6ZSB8fCBzZXJpYWxpemVkLnNpemUoKSAhPSBrSGlkUGFja2V0U2l6
ZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBzaXplX3QgaW5kZXggPSAwOworICAg
IGF1dG8gY2hhbm5lbElkID0gKHNlcmlhbGl6ZWRbaW5kZXgrK10gJiAweGZmKSA8PCAyNDsKKyAg
ICBjaGFubmVsSWQgfD0gKHNlcmlhbGl6ZWRbaW5kZXgrK10gJiAweGZmKSA8PCAxNjsKKyAgICBj
aGFubmVsSWQgfD0gKHNlcmlhbGl6ZWRbaW5kZXgrK10gJiAweGZmKSA8PCA4OworICAgIGNoYW5u
ZWxJZCB8PSBzZXJpYWxpemVkW2luZGV4KytdICYgMHhmZjsKKworICAgIGF1dG8gY29tbWFuZCA9
IHN0YXRpY19jYXN0PEZpZG9IaWREZXZpY2VDb21tYW5kPihzZXJpYWxpemVkW2luZGV4KytdICYg
MHg3Zik7CisgICAgaWYgKCFpc0ZpZG9IaWREZXZpY2VDb21tYW5kKGNvbW1hbmQpKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgIHVpbnQxNl90IHBheWxvYWRTaXplID0gc2VyaWFsaXpl
ZFtpbmRleCsrXSA8PCA4OworICAgIHBheWxvYWRTaXplIHw9IHNlcmlhbGl6ZWRbaW5kZXgrK107
CisKKyAgICAvLyBDaGVjayB0byBzZWUgaWYgcGF5bG9hZCBpcyBsZXNzIHRoYW4gbWF4aW11bSBz
aXplIGFuZCBwYWRkZWQgd2l0aCAwcy4KKyAgICB1aW50MTZfdCBkYXRhU2l6ZSA9IHN0ZDo6bWlu
KHBheWxvYWRTaXplLCBzdGF0aWNfY2FzdDx1aW50MTZfdD4oa0hpZFBhY2tldFNpemUgLSBpbmRl
eCkpOworCisgICAgLy8gVXBkYXRlIHJlbWFpbmluZyBzaXplIHRvIGRldGVybWluZSB0aGUgcGF5
bG9hZCBzaXplIG9mIGZvbGxvdyBvbiBwYWNrZXRzLgorICAgICpyZW1haW5pbmdTaXplID0gcGF5
bG9hZFNpemUgLSBkYXRhU2l6ZTsKKworICAgIGF1dG8gZGF0YSA9IFZlY3Rvcjx1aW50OF90Pigp
OworICAgIGRhdGEuYXBwZW5kKHNlcmlhbGl6ZWQuYmVnaW4oKSArIGluZGV4LCBkYXRhU2l6ZSk7
CisKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGaWRvSGlkSW5pdFBhY2tldD4oY2hhbm5l
bElkLCBjb21tYW5kLCBXVEZNb3ZlKGRhdGEpLCBwYXlsb2FkU2l6ZSk7Cit9CisKKy8vIFUyRiBJ
bml0aWFsaXphdGlvbiBwYWNrZXQgaXMgZGVmaW5lZCBhczoKKy8vIE9mZnNldCBMZW5ndGgKKy8v
IDAgICAgICA0ICAgICAgIENoYW5uZWwgSUQKKy8vIDQgICAgICAxICAgICAgIENvbW1hbmQgSUQK
Ky8vIDUgICAgICAxICAgICAgIEhpZ2ggb3JkZXIgcGFja2V0IHBheWxvYWQgc2l6ZQorLy8gNiAg
ICAgIDEgICAgICAgTG93IG9yZGVyIHBhY2tldCBwYXlsb2FkIHNpemUKKy8vIDcgICAgICAocy03
KSAgIFBheWxvYWQgZGF0YQorRmlkb0hpZEluaXRQYWNrZXQ6OkZpZG9IaWRJbml0UGFja2V0KHVp
bnQzMl90IGNoYW5uZWxJZCwgRmlkb0hpZERldmljZUNvbW1hbmQgY21kLCBWZWN0b3I8dWludDhf
dD4mJiBkYXRhLCB1aW50MTZfdCBwYXlsb2FkTGVuZ3RoKQorICAgIDogRmlkb0hpZFBhY2tldChX
VEZNb3ZlKGRhdGEpLCBjaGFubmVsSWQpCisgICAgLCBtX2NvbW1hbmQoY21kKQorICAgICwgbV9w
YXlsb2FkTGVuZ3RoKHBheWxvYWRMZW5ndGgpCit7Cit9CisKK1ZlY3Rvcjx1aW50OF90PiBGaWRv
SGlkSW5pdFBhY2tldDo6Z2V0U2VyaWFsaXplZERhdGEoKSBjb25zdAoreworICAgIFZlY3Rvcjx1
aW50OF90PiBzZXJpYWxpemVkOworICAgIHNlcmlhbGl6ZWQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShrSGlkUGFja2V0U2l6ZSk7CisgICAgc2VyaWFsaXplZC5hcHBlbmQoKG1fY2hhbm5lbElkID4+
IDI0KSAmIDB4ZmYpOworICAgIHNlcmlhbGl6ZWQuYXBwZW5kKChtX2NoYW5uZWxJZCA+PiAxNikg
JiAweGZmKTsKKyAgICBzZXJpYWxpemVkLmFwcGVuZCgobV9jaGFubmVsSWQgPj4gOCkgJiAweGZm
KTsKKyAgICBzZXJpYWxpemVkLmFwcGVuZChtX2NoYW5uZWxJZCAmIDB4ZmYpOworICAgIHNlcmlh
bGl6ZWQuYXBwZW5kKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KG1fY29tbWFuZCkgfCAweDgwKTsKKyAg
ICBzZXJpYWxpemVkLmFwcGVuZCgobV9wYXlsb2FkTGVuZ3RoID4+IDgpICYgMHhmZik7CisgICAg
c2VyaWFsaXplZC5hcHBlbmQobV9wYXlsb2FkTGVuZ3RoICYgMHhmZik7CisgICAgc2VyaWFsaXpl
ZC5hcHBlbmQobV9kYXRhLmJlZ2luKCksIG1fZGF0YS5zaXplKCkpOworICAgIHNlcmlhbGl6ZWQu
Z3JvdyhrSGlkUGFja2V0U2l6ZSk7CisKKyAgICByZXR1cm4gc2VyaWFsaXplZDsKK30KKworLy8g
c3RhdGljCitzdGQ6OnVuaXF1ZV9wdHI8Rmlkb0hpZENvbnRpbnVhdGlvblBhY2tldD4gRmlkb0hp
ZENvbnRpbnVhdGlvblBhY2tldDo6Y3JlYXRlRnJvbVNlcmlhbGl6ZWREYXRhKGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgc2VyaWFsaXplZCwgc2l6ZV90KiByZW1haW5pbmdTaXplKQoreworICAgIGlm
ICghcmVtYWluaW5nU2l6ZSB8fCBzZXJpYWxpemVkLnNpemUoKSAhPSBrSGlkUGFja2V0U2l6ZSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBzaXplX3QgaW5kZXggPSAwOworICAgIGF1
dG8gY2hhbm5lbElkID0gKHNlcmlhbGl6ZWRbaW5kZXgrK10gJiAweGZmKSA8PCAyNDsKKyAgICBj
aGFubmVsSWQgfD0gKHNlcmlhbGl6ZWRbaW5kZXgrK10gJiAweGZmKSA8PCAxNjsKKyAgICBjaGFu
bmVsSWQgfD0gKHNlcmlhbGl6ZWRbaW5kZXgrK10gJiAweGZmKSA8PCA4OworICAgIGNoYW5uZWxJ
ZCB8PSBzZXJpYWxpemVkW2luZGV4KytdICYgMHhmZjsKKyAgICBhdXRvIHNlcXVlbmNlID0gc2Vy
aWFsaXplZFtpbmRleCsrXTsKKworICAgIC8vIENoZWNrIHRvIHNlZSBpZiBwYWNrZXQgcGF5bG9h
ZCBpcyBsZXNzIHRoYW4gbWF4aW11bSBzaXplIGFuZCBwYWRkZWQgd2l0aCAwcy4KKyAgICBzaXpl
X3QgZGF0YVNpemUgPSBzdGQ6Om1pbigqcmVtYWluaW5nU2l6ZSwga0hpZFBhY2tldFNpemUgLSBp
bmRleCk7CisgICAgKnJlbWFpbmluZ1NpemUgLT0gZGF0YVNpemU7CisgICAgYXV0byBkYXRhID0g
VmVjdG9yPHVpbnQ4X3Q+KCk7CisgICAgZGF0YS5hcHBlbmQoc2VyaWFsaXplZC5iZWdpbigpICsg
aW5kZXgsIGRhdGFTaXplKTsKKworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZpZG9IaWRD
b250aW51YXRpb25QYWNrZXQ+KGNoYW5uZWxJZCwgc2VxdWVuY2UsIFdURk1vdmUoZGF0YSkpOwor
fQorCisvLyBVMkYgQ29udGludWF0aW9uIHBhY2tldCBpcyBkZWZpbmVkIGFzOgorLy8gT2Zmc2V0
IExlbmd0aAorLy8gMCAgICAgIDQgICAgICAgQ2hhbm5lbCBJRAorLy8gNCAgICAgIDEgICAgICAg
UGFja2V0IHNlcXVlbmNlIDB4MDAuLjB4N2YKKy8vIDUgICAgICAocy01KSAgIFBheWxvYWQgZGF0
YQorRmlkb0hpZENvbnRpbnVhdGlvblBhY2tldDo6Rmlkb0hpZENvbnRpbnVhdGlvblBhY2tldChj
b25zdCB1aW50MzJfdCBjaGFubmVsSWQsIGNvbnN0IHVpbnQ4X3Qgc2VxdWVuY2UsIFZlY3Rvcjx1
aW50OF90PiYmIGRhdGEpCisgICAgOiBGaWRvSGlkUGFja2V0KFdURk1vdmUoZGF0YSksIGNoYW5u
ZWxJZCkKKyAgICAsIG1fc2VxdWVuY2Uoc2VxdWVuY2UpCit7Cit9CisKK1ZlY3Rvcjx1aW50OF90
PiBGaWRvSGlkQ29udGludWF0aW9uUGFja2V0OjpnZXRTZXJpYWxpemVkRGF0YSgpIGNvbnN0Cit7
CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHNlcmlhbGl6ZWQ7CisgICAgc2VyaWFsaXplZC5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KGtIaWRQYWNrZXRTaXplKTsKKyAgICBzZXJpYWxpemVkLmFwcGVuZCgo
bV9jaGFubmVsSWQgPj4gMjQpICYgMHhmZik7CisgICAgc2VyaWFsaXplZC5hcHBlbmQoKG1fY2hh
bm5lbElkID4+IDE2KSAmIDB4ZmYpOworICAgIHNlcmlhbGl6ZWQuYXBwZW5kKChtX2NoYW5uZWxJ
ZCA+PiA4KSAmIDB4ZmYpOworICAgIHNlcmlhbGl6ZWQuYXBwZW5kKG1fY2hhbm5lbElkICYgMHhm
Zik7CisgICAgc2VyaWFsaXplZC5hcHBlbmQobV9zZXF1ZW5jZSk7CisgICAgc2VyaWFsaXplZC5h
cHBlbmQobV9kYXRhLmJlZ2luKCksIG1fZGF0YS5zaXplKCkpOworICAgIHNlcmlhbGl6ZWQuZ3Jv
dyhrSGlkUGFja2V0U2l6ZSk7CisKKyAgICByZXR1cm4gc2VyaWFsaXplZDsKK30KKworfSAvLyBu
YW1lc3BhY2UgZmlkbworCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkUGFja2V0LmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hpZFBhY2tldC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjE4ZmNhZGVjZTk2NGQyY2VlZjBlODIwNmE2ZGQyMDNlODM1NWRjNGYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hpZFBh
Y2tldC5oCkBAIC0wLDAgKzEsMTEyIEBACisvLyBDb3B5cmlnaHQgMjAxNyBUaGUgQ2hyb21pdW0g
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
Ky8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8v
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9BVVRITikKKwor
I2luY2x1ZGUgIkZpZG9Db25zdGFudHMuaCIKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4K
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBmaWRvIHsKKworLy8gSElEIFBh
Y2tldHMgYXJlIGRlZmluZWQgYnkgdGhlIHNwZWNpZmljYXRpb24gYXQKKy8vIGh0dHBzOi8vZmlk
b2FsbGlhbmNlLm9yZy9zcGVjcy9maWRvLXYyLjAtcHMtMjAxNzA5MjcvZmlkby1jbGllbnQtdG8t
YXV0aGVudGljYXRvci1wcm90b2NvbC12Mi4wLXBzLTIwMTcwOTI3Lmh0bWwjbWVzc2FnZS1hbmQt
cGFja2V0LXN0cnVjdHVyZQorLy8gUGFja2V0cyBhcmUgb25lIG9mIHR3byB0eXBlcywgaW5pdGlh
bGl6YXRpb24gcGFja2V0cyBhbmQgY29udGludWF0aW9uCisvLyBwYWNrZXRzLiBISUQgUGFja2V0
cyBoYXZlIGhlYWRlciBpbmZvcm1hdGlvbiBhbmQgYSBwYXlsb2FkLiBJZiBhCisvLyBGaWRvSGlk
SW5pdFBhY2tldCBjYW5ub3Qgc3RvcmUgdGhlIGVudGlyZSBwYXlsb2FkLCBmdXJ0aGVyIHBheWxv
YWQKKy8vIGluZm9ybWF0aW9uIGlzIHN0b3JlZCBpbiBIaWRDb250aW51YXRpb25QYWNrZXRzLgor
Y2xhc3MgV0VCQ09SRV9FWFBPUlQgRmlkb0hpZFBhY2tldCB7CisgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoRmlkb0hpZFBhY2tldCk7CitwdWJsaWM6CisgICAgRmlkb0hpZFBhY2tldChWZWN0b3I8
dWludDhfdD4mJiBkYXRhLCB1aW50MzJfdCBjaGFubmVsSWQpOworICAgIHZpcnR1YWwgfkZpZG9I
aWRQYWNrZXQoKSA9IGRlZmF1bHQ7CisKKyAgICB2aXJ0dWFsIFZlY3Rvcjx1aW50OF90PiBnZXRT
ZXJpYWxpemVkRGF0YSgpIGNvbnN0ID0gMDsKKyAgICBjb25zdCBWZWN0b3I8dWludDhfdD4mIGdl
dFBhY2tldFBheWxvYWQoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KKyAgICB1aW50MzJfdCBj
aGFubmVsSWQoKSBjb25zdCB7IHJldHVybiBtX2NoYW5uZWxJZDsgfQorCitwcm90ZWN0ZWQ6Cisg
ICAgRmlkb0hpZFBhY2tldCgpOworCisgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fZGF0YTsKKyAgICB1
aW50MzJfdCBtX2NoYW5uZWxJZCA9IGtIaWRCcm9hZGNhc3RDaGFubmVsOworfTsKKworLy8gRmlk
b0hpZEluaXRQYWNrZXQsIGJhc2VkIG9uIHRoZSBDVEFQIHNwZWNpZmljYXRpb24gY29uc2lzdHMg
b2YgYSBoZWFkZXIgd2l0aAorLy8gZGF0YSB0aGF0IGlzIHNlcmlhbGl6ZWQgaW50byBhIElPQnVm
ZmVyLiBBIGNoYW5uZWwgaWRlbnRpZmllciBpcyBhbGxvY2F0ZWQgYnkKKy8vIHRoZSBDVEFQIGRl
dmljZSB0byBlbnN1cmUgaXRzIHN5c3RlbS13aWRlIHVuaXF1ZW5lc3MuIENvbW1hbmQgaWRlbnRp
ZmllcnMKKy8vIGRldGVybWluZSB0aGUgdHlwZSBvZiBtZXNzYWdlIHRoZSBwYWNrZXQgY29ycmVz
cG9uZHMgdG8uIFBheWxvYWQgbGVuZ3RoCisvLyBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBlbnRpcmUg
bWVzc2FnZSBwYXlsb2FkLCBhbmQgdGhlIGRhdGEgaXMgb25seSB0aGUgcG9ydGlvbgorLy8gb2Yg
dGhlIHBheWxvYWQgdGhhdCB3aWxsIGZpdCBpbnRvIHRoZSBIaWRJbml0UGFja2V0LgorY2xhc3Mg
V0VCQ09SRV9FWFBPUlQgRmlkb0hpZEluaXRQYWNrZXQgOiBwdWJsaWMgRmlkb0hpZFBhY2tldCB7
CitwdWJsaWM6CisgICAgLy8gQ3JlYXRlcyBhIHBhY2tldCBmcm9tIHRoZSBzZXJpYWxpemVkIGRh
dGEgb2YgYW4gaW5pdGlhbGl6YXRpb24gcGFja2V0LiBBcworICAgIC8vIHRoaXMgaXMgdGhlIGZp
cnN0IHBhY2tldCwgdGhlIHBheWxvYWQgbGVuZ3RoIG9mIHRoZSBlbnRpcmUgbWVzc2FnZSB3aWxs
IGJlCisgICAgLy8gaW5jbHVkZWQgd2l0aGluIHRoZSBzZXJpYWxpemVkIGRhdGEuIFJlbWFpbmlu
ZyBzaXplIHdpbGwgYmUgcmV0dXJuZWQgdG8KKyAgICAvLyBpbmZvcm0gdGhlIGNhbGxlZSBob3cg
bWFueSBhZGRpdGlvbmFsIHBhY2tldHMgdG8gZXhwZWN0LgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8Rmlkb0hpZEluaXRQYWNrZXQ+IGNyZWF0ZUZyb21TZXJpYWxpemVkRGF0YShjb25zdCBW
ZWN0b3I8dWludDhfdD4mLCBzaXplX3QqIHJlbWFpbmluZ1NpemUpOworCisgICAgRmlkb0hpZElu
aXRQYWNrZXQodWludDMyX3QgY2hhbm5lbElkLCBGaWRvSGlkRGV2aWNlQ29tbWFuZCwgVmVjdG9y
PHVpbnQ4X3Q+JiYgZGF0YSwgdWludDE2X3QgcGF5bG9hZExlbmd0aCk7CisKKyAgICBWZWN0b3I8
dWludDhfdD4gZ2V0U2VyaWFsaXplZERhdGEoKSBjb25zdCBmaW5hbDsKKyAgICBGaWRvSGlkRGV2
aWNlQ29tbWFuZCBjb21tYW5kKCkgY29uc3QgeyByZXR1cm4gbV9jb21tYW5kOyB9CisgICAgdWlu
dDE2X3QgcGF5bG9hZExlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF5bG9hZExlbmd0aDsgfQor
Citwcml2YXRlOgorICAgIEZpZG9IaWREZXZpY2VDb21tYW5kIG1fY29tbWFuZDsKKyAgICB1aW50
MTZfdCBtX3BheWxvYWRMZW5ndGg7Cit9OworCisvLyBGaWRvSGlkQ29udGludWF0aW9uUGFja2V0
LCBiYXNlZCBvbiB0aGUgQ1RBUCBTcGVjaWZpY2F0aW9uIGNvbnNpc3RzIG9mIGEKKy8vIGhlYWRl
ciB3aXRoIGRhdGEgdGhhdCBpcyBzZXJpYWxpemVkIGludG8gYW4gSU9CdWZmZXIuIFRoZSBjaGFu
bmVsIGlkZW50aWZpZXIKKy8vIHdpbGwgYmUgaWRlbnRpY2FsIHRvIHRoZSBpZGVudGlmaWVyIGlu
IGFsbCBvdGhlciBwYWNrZXRzIG9mIHRoZSBtZXNzYWdlLiBUaGUKKy8vIHBhY2tldCBzZXF1ZW5j
ZSB3aWxsIGJlIHRoZSBzZXF1ZW5jZSBudW1iZXIgb2YgdGhpcyBwYXJ0aWN1bGFyIHBhY2tldCwg
ZnJvbQorLy8gMHgwMCB0byAweDdmLgorY2xhc3MgV0VCQ09SRV9FWFBPUlQgRmlkb0hpZENvbnRp
bnVhdGlvblBhY2tldCA6IHB1YmxpYyBGaWRvSGlkUGFja2V0IHsKK3B1YmxpYzoKKyAgICAvLyBD
cmVhdGVzIGEgcGFja2V0IGZyb20gdGhlIHNlcmlhbGl6ZWQgZGF0YSBvZiBhIGNvbnRpbnVhdGlv
biBwYWNrZXQuIEFzIGFuCisgICAgLy8gSGlkSW5pdFBhY2tldCB3b3VsZCBoYXZlIGFycml2ZWQg
ZWFybGllciB3aXRoIHRoZSB0b3RhbCBwYXlsb2FkIHNpemUsCisgICAgLy8gdGhlIHJlbWFpbmlu
ZyBzaXplIHNob3VsZCBiZSBwYXNzZWQgdG8gaW5mb3JtIHRoZSBwYWNrZXQgb2YgaG93IG11Y2gg
ZGF0YQorICAgIC8vIHRvIGV4cGVjdC4KKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZpZG9I
aWRDb250aW51YXRpb25QYWNrZXQ+IGNyZWF0ZUZyb21TZXJpYWxpemVkRGF0YShjb25zdCBWZWN0
b3I8dWludDhfdD4mLCBzaXplX3QqIHJlbWFpbmluZ1NpemUpOworCisgICAgRmlkb0hpZENvbnRp
bnVhdGlvblBhY2tldCh1aW50MzJfdCBjaGFubmVsSWQsIHVpbnQ4X3Qgc2VxdWVuY2UsIFZlY3Rv
cjx1aW50OF90PiYmIGRhdGEpOworCisgICAgVmVjdG9yPHVpbnQ4X3Q+IGdldFNlcmlhbGl6ZWRE
YXRhKCkgY29uc3QgZmluYWw7CisgICAgdWludDhfdCBzZXF1ZW5jZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc2VxdWVuY2U7IH0KKworcHJpdmF0ZToKKyAgICB1aW50OF90IG1fc2VxdWVuY2U7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBmaWRvCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9QYXJzaW5n
VXRpbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9QYXJz
aW5nVXRpbHMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3NzRhMTU1MDNiODE2ZDg3M2Q5ZjVkNmRhYmQzZTZh
YzU2OTM5ZTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
dGhuL2ZpZG8vRmlkb1BhcnNpbmdVdGlscy5jcHAKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJGaWRvUGFyc2luZ1V0aWxzLmgiCisK
KyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisjaW5jbHVkZSAiRmlkb0NvbnN0YW50cy5oIgorCitu
YW1lc3BhY2UgZmlkbyB7CisKK1ZlY3Rvcjx1aW50OF90PiBnZXRJbml0UGFja2V0RGF0YShjb25z
dCBWZWN0b3I8dWludDhfdD4mIGRhdGEpCit7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdDsK
KyAgICByZXN1bHQuYXBwZW5kKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSA+IGtIaWRJbml0UGFj
a2V0RGF0YVNpemUgPyBrSGlkSW5pdFBhY2tldERhdGFTaXplIDogZGF0YS5zaXplKCkpOworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK1ZlY3Rvcjx1aW50OF90PiBnZXRDb250aW51YXRpb25QYWNr
ZXREYXRhKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSwgc2l6ZV90IGJlZ2luUG9zaXRpb24p
Cit7CisgICAgaWYgKGJlZ2luUG9zaXRpb24gPiBkYXRhLnNpemUoKSkKKyAgICAgICAgcmV0dXJu
IHsgfTsKKworICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQ7CisgICAgcmVzdWx0LmFwcGVuZChk
YXRhLmRhdGEoKSArIGJlZ2luUG9zaXRpb24sIGRhdGEuc2l6ZSgpID4ga0hpZENvbnRpbnVhdGlv
blBhY2tldERhdGFTaXplICsgYmVnaW5Qb3NpdGlvbiA/IGtIaWRDb250aW51YXRpb25QYWNrZXRE
YXRhU2l6ZSA6IGRhdGEuc2l6ZSgpIC0gYmVnaW5Qb3NpdGlvbik7CisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKworfSAvLyBuYW1lc3BhY2UgZmlkbworCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRI
TikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRv
UGFyc2luZ1V0aWxzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlk
b1BhcnNpbmdVdGlscy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0MWYyMGYxZWIwMDY3NjFiZTE2MGUwZTIxNjUw
YjIwYjc0MWE0NmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1dGhuL2ZpZG8vRmlkb1BhcnNpbmdVdGlscy5oCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJfQVVUSE4pCisKKyNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBmaWRvIHsKKworVmVjdG9yPHVpbnQ4X3Q+IGdldElu
aXRQYWNrZXREYXRhKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpOworVmVjdG9yPHVpbnQ4X3Q+IGdl
dENvbnRpbnVhdGlvblBhY2tldERhdGEoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jiwgc2l6ZV90IGJl
Z2luUG9zaXRpb24pOworCit9IC8vIG5hbWVzcGFjZSBmaWRvCisKKyNlbmRpZiAvLyBFTkFCTEUo
V0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCAyMTU5YjVlMWFkZWJlMjQwNWM2MWY0MjVjOTVh
ZjMxMzQzYTlhM2RmLi5lMDgwNjViMGNkNmEwYzA2M2JlZTE5MDEyOTM4M2Y0NTk1YTdjM2I0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dApAQCAtMjU0LDYgKzI1NCwxMCBAQCBNb2R1bGVzL3dlYmF1dGhuL1B1Ymxp
Y0tleUNyZWRlbnRpYWwuY3BwCiBNb2R1bGVzL3dlYmF1dGhuL2Nib3IvQ0JPUlJlYWRlci5jcHAK
IE1vZHVsZXMvd2ViYXV0aG4vY2Jvci9DQk9SVmFsdWUuY3BwCiBNb2R1bGVzL3dlYmF1dGhuL2Ni
b3IvQ0JPUldyaXRlci5jcHAKK01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvQ29uc3RhbnRzLmNw
cAorTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRNZXNzYWdlLmNwcAorTW9kdWxlcy93ZWJh
dXRobi9maWRvL0ZpZG9IaWRQYWNrZXQuY3BwCitNb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb1Bh
cnNpbmdVdGlscy5jcHAKIAogTW9kdWxlcy93ZWJkYXRhYmFzZS9DaGFuZ2VWZXJzaW9uV3JhcHBl
ci5jcHAKIE1vZHVsZXMvd2ViZGF0YWJhc2UvRE9NV2luZG93V2ViRGF0YWJhc2UuY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
YTVmMzI2ZTcxZDUzYzUzMDZkYzhhYzdiZjdkN2IxMGVjYzczNDlkMC4uY2Y2NmQ2MzM2MmRkZTQy
NDMyZWFmNDZlOTBlYmNmODA1ZjVhYzM2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTc2NSw2ICsxNzY1LDggQEAKIAkJNTcz
MDNDNDYyMDEwNUQyRjAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTczMDNDNDMyMDEwNUIz
RDAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTU3MzQ4OTM5MURBQzZCNkUwMERDMDY2
NyAvKiBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzM0ODkzODFEQUM2QjZEMDBEQzA2NjcgLyogQ3J5cHRv
QWxnb3JpdGhtUGFyYW1ldGVycy5oICovOyB9OwogCQk1NzM5RTEyRjFEQUM3Rjc4MDBFMTQzODMg
LyogSlNDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzM5RTEyRTFEQUM3Rjc4MDBFMTQzODMgLyogSlNDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzLmggKi87IH07CisJCTU3M0Y1MzMyMjE2ODA2RTEwMDQ1NTg3
QSAvKiBGaWRvSGlkTWVzc2FnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTdCQUYyOEEyMTY3RDMwMzAwOEU5NTRFIC8qIEZpZG9IaWRNZXNzYWdlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTczRjUz
MzcyMTY4MEQxNTAwNDU1ODdBIC8qIEZpZG9QYXJzaW5nVXRpbHMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3M0Y1MzM1MjE2ODBEMTQwMDQ1NTg3QSAv
KiBGaWRvUGFyc2luZ1V0aWxzLmggKi87IH07CiAJCTU3NEY1NUUxMjA0RjNCMjMwMDI5NDhDNiAv
KiBDT1NFQ29uc3RhbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1NzRGNTVEQzIwNEYzNzMyMDAyOTQ4QzYgLyogQ09TRUNvbnN0YW50cy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTU3NTBBOTc1MUU2
OEQwMDAwMDcwNUM0QSAvKiBDcnlwdG9LZXlFQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTc1MEE5NzMxRTY4RDAwMDAwNzA1QzRBIC8qIENyeXB0b0tl
eUVDLmggKi87IH07CiAJCTU3NTBBOTdFMUU2QTEzRUYwMDcwNUM0QSAvKiBDcnlwdG9BbGdvcml0
aG1FY0tleVBhcmFtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTc1MEE5N0QxRTZBMTNFRjAwNzA1QzRBIC8qIENyeXB0b0FsZ29yaXRobUVjS2V5UGFy
YW1zLmggKi87IH07CkBAIC0xNzg3LDYgKzE3ODksOCBAQAogCQk1N0I1RjdGOTFFNUJFODQwMDBG
MzRGOTAgLyogQ3J5cHRvQWxnb3JpdGhtQUVTX0dDTS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdCNUY3RjcxRTVCRTg0MDAwRjM0RjkwIC8qIENyeXB0
b0FsZ29yaXRobUFFU19HQ00uaCAqLzsgfTsKIAkJNTdCNUY4MDkxRTVEMUE5ODAwRjM0RjkwIC8q
IENyeXB0b0FsZ29yaXRobUFlc0djbVBhcmFtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTdCNUY4MDgxRTVEMUE5ODAwRjM0RjkwIC8qIENyeXB0b0Fs
Z29yaXRobUFlc0djbVBhcmFtcy5oICovOyB9OwogCQk1N0I1RjgxMDFFNUUyQTRFMDBGMzRGOTAg
LyogSlNBZXNHY21QYXJhbXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDU3QjVGODBCMUU1RDIyREEwMEYzNEY5MCAvKiBKU0Flc0djbVBhcmFtcy5oICov
OyB9OworCQk1N0JBRjI4QzIxNjdEMzE2MDA4RTk1NEUgLyogRmlkb0NvbnN0YW50cy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc4QTRDMEIyMTY3RDI5
NjAwRDA4RjM0IC8qIEZpZG9Db25zdGFudHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQk1N0JBRjI4RTIxNjdEMzM5MDA4RTk1NEUgLyogRmlkb0hp
ZFBhY2tldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTc4QTRDMEEyMTY3RDI5NjAwRDA4RjM0IC8qIEZpZG9IaWRQYWNrZXQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1N0M3QTY4QzFFNTY5Njc1MDBD
NjdENzEgLyogQmFzaWNDcmVkZW50aWFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1N0M3QTY4QjFFNTY5Njc1MDBDNjdENzEgLyogQmFzaWNDcmVkZW50
aWFsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NTdDN0E2OUYxRTU3OTE3ODAwQzY3RDcxIC8qIEpTQmFzaWNDcmVkZW50aWFsLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0M3QTY5RDFFNTc5MTBEMDBD
NjdENzEgLyogSlNCYXNpY0NyZWRlbnRpYWwuaCAqLzsgfTsKIAkJNTdEMDAxOEQxREQ1NDEzMjAw
RUQxOUQ5IC8qIEpTQ3J5cHRvS2V5VXNhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU3RDAwMThDMURENTQxMzIwMEVEMTlEOSAvKiBKU0NyeXB0b0tl
eVVzYWdlLmggKi87IH07CkBAIC04NTUzLDYgKzg1NTcsOCBAQAogCQk1NzM0ODkzODFEQUM2QjZE
MDBEQzA2NjcgLyogQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTU3MzlFMTJFMURBQzdGNzgwMEUxNDM4MyAvKiBKU0NyeXB0b0Fs
Z29yaXRobVBhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlND
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTU3MzlFMTMwMURBQzdGRDEwMEUxNDM4MyAvKiBKU0NyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTczRjUzMzUy
MTY4MEQxNDAwNDU1ODdBIC8qIEZpZG9QYXJzaW5nVXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRmlkb1BhcnNpbmdVdGlscy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1NzNGNTMzNjIxNjgwRDE1MDA0NTU4N0EgLyogRmlkb1BhcnNpbmdVdGlscy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWRvUGFyc2luZ1V0aWxzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTc0QUM3NTMxREFDMzY3RDAwRTk3NDRD
IC8qIENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1NzRENDI3OTFENTk0RkY2MDAyQ0Y1MEUgLyogR2xvYmFsQ3J5cHRvLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBHbG9iYWxDcnlwdG8uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1NzRGNTVEQzIwNEYzNzMyMDAyOTQ4QzYgLyogQ09TRUNvbnN0YW50cy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDT1NFQ29uc3RhbnRzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC04NTkyLDYgKzg1OTgsMTAgQEAKIAkJNTc3OEJEODAxREE0NzMz
RTAwOUUzMDA5IC8qIFN1YnRsZUNyeXB0by5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU3Vi
dGxlQ3J5cHRvLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTc3OEJEODExREE0
ODAyQzAwOUUzMDA5IC8qIFN1YnRsZUNyeXB0by5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTdWJ0bGVDcnlwdG8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTc3
OEJEODMxREE0ODE3QjAwOUUzMDA5IC8qIFN1YnRsZUNyeXB0by5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdWJ0bGVDcnlwdG8uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1NzhBNEMwODIxNjdEMjk1MDBEMDhGMzQgLyogRmlkb0hpZE1lc3NhZ2Uu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmlkb0hpZE1lc3NhZ2UuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1NzhBNEMwOTIxNjdEMjk2MDBEMDhGMzQgLyogRmlkb0hpZFBhY2tl
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWRvSGlkUGFja2V0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTc4QTRDMEEyMTY3RDI5NjAwRDA4RjM0IC8qIEZpZG9IaWRQYWNr
ZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRmlkb0hpZFBhY2tldC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1NzhBNEMwQjIxNjdEMjk2MDBEMDhGMzQgLyogRmlkb0NvbnN0YW50cy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBGaWRvQ29uc3RhbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTU3OTA5OTZCMUVDRDIzREEwMEZDMDc2OCAvKiBDcnlwdG9BbGdvcml0aG1SU0FfUFNTLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENyeXB0b0FsZ29yaXRobVJTQV9QU1MuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTc5MDk5NkMxRUNEMjNEQTAwRkMwNzY4IC8qIENyeXB0b0FsZ29yaXRo
bVJTQV9QU1MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3J5cHRvQWxnb3JpdGhtUlNBX1BTUy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3OTU3Q0E2MUU5NzFERTAwMDgwNzJB
QiAvKiBDcnlwdG9BbGdvcml0aG1IS0RGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IENyeXB0b0FsZ29yaXRobUhLREYuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtODYwOCw2ICs4NjE4LDggQEAKIAkJNTdCNUY4MEExRTVEMjJEQTAwRjM0RjkwIC8q
IEpTQWVzR2NtUGFyYW1zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTQWVzR2NtUGFyYW1zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdCNUY4
MEIxRTVEMjJEQTAwRjM0RjkwIC8qIEpTQWVzR2NtUGFyYW1zLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTQWVzR2NtUGFyYW1zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTU3QjVGODBEMUU1RDJGMkQwMEYzNEY5MCAvKiBDcnlwdG9BbGdvcml0aG1BRVNfR0NN
TWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENyeXB0b0FsZ29y
aXRobUFFU19HQ01NYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1N0JBRjI4
NzIxNjdEMkY3MDA4RTk1NEUgLyogRmlkb0NvbnN0YW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBGaWRvQ29uc3RhbnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTdCQUYyOEEyMTY3RDMwMzAwOEU5NTRFIC8qIEZpZG9IaWRNZXNzYWdlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpZG9IaWRNZXNzYWdlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3QzdBNjg5MUU1Njk0NkQwMEM2N0Q3MSAvKiBCYXNp
Y0NyZWRlbnRpYWwuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEJhc2ljQ3JlZGVudGlhbC5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3QzdBNjhCMUU1Njk2NzUwMEM2N0Q3
MSAvKiBCYXNpY0NyZWRlbnRpYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QmFzaWNDcmVkZW50aWFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3QzdBNjkz
MUU1NzhBQ0EwMEM2N0Q3MSAvKiBCYXNpY0NyZWRlbnRpYWwuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQmFzaWNDcmVkZW50aWFsLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE4ODIwLDYgKzE4ODMyLDIxIEBACiAJCQlwYXRoID0gY2JvcjsKIAkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTU3OEE0QkZBMjE2NkFFMDAwMEQwOEYz
NCAvKiBmaWRvICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJ
CQk1N0JBRjI4NzIxNjdEMkY3MDA4RTk1NEUgLyogRmlkb0NvbnN0YW50cy5jcHAgKi8sCisJCQkJ
NTc4QTRDMEIyMTY3RDI5NjAwRDA4RjM0IC8qIEZpZG9Db25zdGFudHMuaCAqLywKKwkJCQk1NzhB
NEMwODIxNjdEMjk1MDBEMDhGMzQgLyogRmlkb0hpZE1lc3NhZ2UuY3BwICovLAorCQkJCTU3QkFG
MjhBMjE2N0QzMDMwMDhFOTU0RSAvKiBGaWRvSGlkTWVzc2FnZS5oICovLAorCQkJCTU3OEE0QzA5
MjE2N0QyOTYwMEQwOEYzNCAvKiBGaWRvSGlkUGFja2V0LmNwcCAqLywKKwkJCQk1NzhBNEMwQTIx
NjdEMjk2MDBEMDhGMzQgLyogRmlkb0hpZFBhY2tldC5oICovLAorCQkJCTU3M0Y1MzM2MjE2ODBE
MTUwMDQ1NTg3QSAvKiBGaWRvUGFyc2luZ1V0aWxzLmNwcCAqLywKKwkJCQk1NzNGNTMzNTIxNjgw
RDE0MDA0NTU4N0EgLyogRmlkb1BhcnNpbmdVdGlscy5oICovLAorCQkJKTsKKwkJCXBhdGggPSBm
aWRvOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJNTdDN0E2ODgxRTU2OTQ2
RDAwQzY3RDcxIC8qIGNyZWRlbnRpYWxtYW5hZ2VtZW50ICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTE4ODYxLDYgKzE4ODg4LDcgQEAKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNTczMDNCQjMyMDA2QzZFRDAwMzU1OTY1IC8q
IGNib3IgKi8sCisJCQkJNTc4QTRCRkEyMTY2QUUwMDAwRDA4RjM0IC8qIGZpZG8gKi8sCiAJCQkJ
NTczMDNDMjcyMDA5QjJGQzAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25z
ZS5oICovLAogCQkJCTU3MzAzQzI5MjAwOUIyRkMwMDM1NTk2NSAvKiBBdXRoZW50aWNhdG9yQXNz
ZXJ0aW9uUmVzcG9uc2UuaWRsICovLAogCQkJCTU3MzAzQzFCMjAwOUE5ODYwMDM1NTk2NSAvKiBB
dXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5oICovLApAQCAtMjgwNjgsNiArMjgwOTYs
MTAgQEAKIAkJCQk4NDczMEQ4RDEyNDhGMEIzMDBEM0E5QzkgLyogRkVUdXJidWxlbmNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGRDMxNjA5NTEyQjAyNkY3MDBDMUEzNTkgLyogRkZUQ29udm9sdmVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjA5NzEyQjAyNkY3MDBDMUEzNTkgLyogRkZURnJh
bWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTU3QkFGMjhDMjE2N0QzMTYwMDhFOTU0RSAvKiBGaWRv
Q29uc3RhbnRzLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NzNGNTMzMjIxNjgwNkUxMDA0NTU4N0Eg
LyogRmlkb0hpZE1lc3NhZ2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTU3QkFGMjhFMjE2N0QzMzkw
MDhFOTU0RSAvKiBGaWRvSGlkUGFja2V0LmggaW4gSGVhZGVycyAqLywKKwkJCQk1NzNGNTMzNzIx
NjgwRDE1MDA0NTU4N0EgLyogRmlkb1BhcnNpbmdVdGlscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTc2RDZDODExMjJCOEEzRDAwMUZEMUY3IC8qIEZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTgz
OEY4NkRBMUY1MDlFNzQwMEU4Q0ZDNSAvKiBGaWxlQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAog
CQkJCTA2NkM3NzJCMEFCNjAzQjcwMDIzOENDNCAvKiBGaWxlQ2hvb3Nlci5oIGluIEhlYWRlcnMg
Ki8sCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
NjkwMDhlODQ0YjUwMGQ0Yjk3MTIxYWI0MjcxNzBkNDc1YjVhZTFiZS4uNWNkYWJiYzk5NzY2MWZk
MzUzYjA0NzVlMTJlZjNmZmM5NjUzN2E1NiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE4LTEwLTA5ICBKaWV3ZW4g
VGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhOXSBJbXBvcnQg
Q1RBUCBISUQgbWVzc2FnZSBhbmQgcGFja2V0IHN0cnVjdHVyZSBmcm9tIENocm9taXVtCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkyODkKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzQ0MTIwMzEwPgorCisgICAgICAgIFJldmlld2VkIGJ5IEJyZW50
IEZ1bGdoYW0uCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvRmlkb0hpZE1lc3NhZ2VUZXN0LmNwcDogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpURVNUKToKKwogMjAxOC0xMC0wMyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4K
IAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgcmVwb3J0aW5nICJkaXNwbGF5IGNvbXBvc2l0ZWQg
dmlkZW8gZnJhbWVzIiB0aHJvdWdoIHRoZSBWaWRlb1BsYXliYWNrUXVhbGl0eSBvYmplY3QuCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGI4NjZjMjA2MDQ1NzczMzc4ZjEyYWNjMGJmYjUwM2Fk
ZmMyYjQ0MDIuLmYwMjNlN2EzZmZjZGYzZWViNmJiNDAxNmJjYTBkMjM2NzljY2M2MmEgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNTYsNiArMjU2LDcgQEAKIAkJNTc2OUM1MEIxRDlCMDAw
MjAwMDg0N0ZCIC8qIFNlcmlhbGl6ZWRDcnlwdG9LZXlXcmFwLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc2OUM1MEExRDlCMDAwMTAwMDg0N0ZCIC8q
IFNlcmlhbGl6ZWRDcnlwdG9LZXlXcmFwLm1tICovOyB9OwogCQk1NzhDQkQ2NzIwNEZCMkM4MDA4
M0I5RjIgLyogTG9jYWxBdXRoZW50aWNhdGlvbi5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzhDQkQ2NjIwNEZCMkM3MDA4M0I5RjIg
LyogTG9jYWxBdXRoZW50aWNhdGlvbi5mcmFtZXdvcmsgKi87IH07CiAJCTU3OTAxRkIxMUNBRjE0
MkQwMEVENjRGOSAvKiBMb2FkSW52YWxpZFVSTFJlcXVlc3QuaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzkwMUZCMDFDQUYxNDFDMDBF
RDY0RjkgLyogTG9hZEludmFsaWRVUkxSZXF1ZXN0Lmh0bWwgKi87IH07CisJCTU3OTY1MUU3MjE2
QkZERUQwMDZFQkZFNSAvKiBGaWRvSGlkTWVzc2FnZVRlc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc5NjUxRTYyMTZCRkQ1MzAwNkVCRkU1IC8q
IEZpZG9IaWRNZXNzYWdlVGVzdC5jcHAgKi87IH07CiAJCTU3OTdGRTMxMUVCMTVBNjgwMEIyRjRB
MCAvKiBOYXZpZ2F0aW9uQ2xpZW50RGVmYXVsdENyeXB0by5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Nzk3RkUyRjFFQjE1QTVGMDBCMkY0QTAgLyog
TmF2aWdhdGlvbkNsaWVudERlZmF1bHRDcnlwdG8uY3BwICovOyB9OwogCQk1Nzk3RkUzMzFFQjE1
QUIxMDBCMkY0QTAgLyogbmF2aWdhdGlvbi1jbGllbnQtZGVmYXVsdC1jcnlwdG8uaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Nzk3RkUz
MjFFQjE1QTg5MDBCMkY0QTAgLyogbmF2aWdhdGlvbi1jbGllbnQtZGVmYXVsdC1jcnlwdG8uaHRt
bCAqLzsgfTsKIAkJNTdDM0ZBNjYxRjdDMjQ4RjAwOUQ0QjgwIC8qIFdlYWtQdHIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNCOUJDMzcxQTY3NDgy
MzAwRkU1Njc4IC8qIFdlYWtQdHIuY3BwICovOyB9OwpAQCAtMTU2MSw2ICsxNTYyLDcgQEAKIAkJ
NTc5MDFGQUMxQ0FGMTJDMjAwRUQ2NEY5IC8qIExvYWRJbnZhbGlkVVJMUmVxdWVzdC5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExvYWRJbnZhbGlkVVJMUmVxdWVz
dC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTc5MDFGQUUxQ0FGMTM3MTAwRUQ2
NEY5IC8qIExvYWRJbnZhbGlkVVJMUmVxdWVzdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IExvYWRJbnZhbGlkVVJMUmVxdWVzdC5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTc5MDFGQjAxQ0FGMTQxQzAwRUQ2NEY5IC8qIExvYWRJbnZhbGlkVVJM
UmVxdWVzdC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gTG9hZEludmFsaWRVUkxS
ZXF1ZXN0Lmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3OTY1MUU2MjE2QkZE
NTMwMDZFQkZFNSAvKiBGaWRvSGlkTWVzc2FnZVRlc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRmlkb0hpZE1lc3NhZ2VUZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTc5N0ZFMkYxRUIxNUE1RjAwQjJGNEEwIC8qIE5hdmlnYXRpb25DbGll
bnREZWZhdWx0Q3J5cHRvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IE5hdmlnYXRpb25DbGllbnREZWZhdWx0Q3J5cHRvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTc5N0ZFMzIxRUIxNUE4OTAwQjJGNEEwIC8qIG5hdmlnYXRpb24tY2xpZW50LWRl
ZmF1bHQtY3J5cHRvLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibmF2aWdhdGlv
bi1jbGllbnQtZGVmYXVsdC1jcnlwdG8uaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTU3OThFMkFGMUNBRjVDMjgwMEM1Q0JBMCAvKiBQcm92aXNpb25hbFVSTE5vdENoYW5nZS5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFByb3Zpc2lvbmFsVVJM
Tm90Q2hhbmdlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjUyNyw2ICsyNTI5
LDcgQEAKIAkJCQkyNjBCQTU3QTFCMUQyRUUyMDA0RkEwN0MgLyogREZBSGVscGVycy5oICovLAog
CQkJCTI2RjZFMUVGMUFEQzc0OUIwMERFNjk2QiAvKiBERkFNaW5pbWl6ZXIuY3BwICovLAogCQkJ
CTMxNTExODBGMURCMUFERDUwMDE3NjMwNCAvKiBFeHRlbmRlZENvbG9yLmNwcCAqLywKKwkJCQk1
Nzk2NTFFNjIxNkJGRDUzMDA2RUJGRTUgLyogRmlkb0hpZE1lc3NhZ2VUZXN0LmNwcCAqLywKIAkJ
CQk3QTMyRDc0OTFGMDIxNTE1MDAxNjJDNDQgLyogRmlsZU1vbml0b3IuY3BwICovLAogCQkJCTQx
OTczQjVBMUFGMjI4NkEwMDZDN0IzNiAvKiBGaWxlU3lzdGVtLmNwcCAqLywKIAkJCQk3QTkwOUE3
MDFEODc3NDc1MDA3RTEwRjggLyogRmxvYXRQb2ludC5jcHAgKi8sCkBAIC0zODA0LDYgKzM4MDcs
NyBAQAogCQkJCUNEQTI5QjI5MjBGRDJBOTkwMEYxNUNFRCAvKiBFeGl0RnVsbHNjcmVlbk9uRW50
ZXJQaVAubW0gaW4gU291cmNlcyAqLywKIAkJCQkzMTUxMTgxMDFEQjFBRTQwMDAxNzYzMDQgLyog
RXh0ZW5kZWRDb2xvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VGMTFBNDExQUU2MDA0
NDdDNEMgLyogRmFpbGVkTG9hZC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1Nzk2NTFFNzIxNkJG
REVEMDA2RUJGRTUgLyogRmlkb0hpZE1lc3NhZ2VUZXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTdBMzJENzRBMUYwMjE1MTUwMDE2MkM0NCAvKiBGaWxlTW9uaXRvci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk3QzgzRTA0RjFEMEE2NDE4MDBGRUJDRjMgLyogRmlsZVN5c3RlbS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk3Q0NFN0VGMzFBNDExQUU2MDA0NDdDNEMgLyogRmluZC5jcHAgaW4gU291
cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9G
aWRvSGlkTWVzc2FnZVRlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L0ZpZG9IaWRNZXNzYWdlVGVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzM4ZGU0NDRiZDYwNWIyNmNiNmFh
NjA1YTRhYzg5ODQxYTA3MGM4MgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9GaWRvSGlkTWVzc2FnZVRlc3QuY3BwCkBAIC0wLDAgKzEsMjEzIEBA
CisvLyBDb3B5cmlnaHQgMjAxNyBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8g
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisv
LyBkaXN0cmlidXRpb24uCisvLyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisv
LyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2lmIEVOQUJMRShXRUJfQVVUSE4pCisKKyNpbmNsdWRlIDxXZWJDb3Jl
L0ZpZG9Db25zdGFudHMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ZpZG9IaWRNZXNzYWdlLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9GaWRvSGlkUGFja2V0Lmg+CisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+
CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisK
K3VzaW5nIG5hbWVzcGFjZSBmaWRvOworCisvLyBQYWNrZXRzIHNob3VsZCBiZSA2NCBieXRlcyAr
IDEgcmVwb3J0IElEIGJ5dGUuCitURVNUKEZpZG9IaWRNZXNzYWdlVGVzdCwgVGVzdFBhY2tldFNp
emUpCit7CisgICAgdWludDMyX3QgY2hhbm5lbElkID0gMHgwNTA2MDcwODsKKyAgICBWZWN0b3I8
dWludDhfdD4gZGF0YTsKKworICAgIGF1dG8gaW5pdFBhY2tldCA9IHN0ZDo6bWFrZV91bmlxdWU8
Rmlkb0hpZEluaXRQYWNrZXQ+KGNoYW5uZWxJZCwgRmlkb0hpZERldmljZUNvbW1hbmQ6OmtJbml0
LCBWZWN0b3I8dWludDhfdD4oZGF0YSksIGRhdGEuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoNjR1
LCBpbml0UGFja2V0LT5nZXRTZXJpYWxpemVkRGF0YSgpLnNpemUoKSk7CisKKyAgICBhdXRvIGNv
bnRpbnVhdGlvblBhY2tldCA9IHN0ZDo6bWFrZV91bmlxdWU8Rmlkb0hpZENvbnRpbnVhdGlvblBh
Y2tldD4oY2hhbm5lbElkLCAwLCBXVEZNb3ZlKGRhdGEpKTsKKyAgICBFWFBFQ1RfRVEoNjR1LCBj
b250aW51YXRpb25QYWNrZXQtPmdldFNlcmlhbGl6ZWREYXRhKCkuc2l6ZSgpKTsKK30KKworLyoK
KyAqIFUyZiBJbml0IFBhY2tldHMgYXJlIG9mIHRoZSBmb3JtYXQ6CisgKiBCeXRlIDA6ICAgIDAK
KyAqIEJ5dGUgMS00OiAgQ2hhbm5lbCBJRAorICogQnl0ZSA1OiAgICBDb21tYW5kIGJ5dGUKKyAq
IEJ5dGUgNi03OiAgQmlnIEVuZGlhbiBzaXplIG9mIGRhdGEKKyAqIEJ5dGUgOC1uOiAgRGF0YSBi
bG9jaworICoKKyAqIFJlbWFpbmluZyBidWZmZXIgaXMgcGFkZGVkIHdpdGggMAorICovCitURVNU
KEZpZG9IaWRNZXNzYWdlVGVzdCwgVGVzdFBhY2tldERhdGEpCit7CisgICAgdWludDMyX3QgY2hh
bm5lbElkID0gMHhGNTA2MDcwODsKKyAgICBWZWN0b3I8dWludDhfdD4gZGF0YSB7MTAsIDExfTsK
KyAgICBGaWRvSGlkRGV2aWNlQ29tbWFuZCBjbWQgPSBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a1dp
bms7CisgICAgYXV0byBpbml0UGFja2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxGaWRvSGlkSW5pdFBh
Y2tldD4oY2hhbm5lbElkLCBjbWQsIFZlY3Rvcjx1aW50OF90PihkYXRhKSwgZGF0YS5zaXplKCkp
OworICAgIHNpemVfdCBpbmRleCA9IDA7CisKKyAgICBWZWN0b3I8dWludDhfdD4gc2VyaWFsaXpl
ZCA9IGluaXRQYWNrZXQtPmdldFNlcmlhbGl6ZWREYXRhKCk7CisgICAgRVhQRUNUX0VRKChjaGFu
bmVsSWQgPj4gMjQpICYgMHhmZiwgc2VyaWFsaXplZFtpbmRleCsrXSk7CisgICAgRVhQRUNUX0VR
KChjaGFubmVsSWQgPj4gMTYpICYgMHhmZiwgc2VyaWFsaXplZFtpbmRleCsrXSk7CisgICAgRVhQ
RUNUX0VRKChjaGFubmVsSWQgPj4gOCkgJiAweGZmLCBzZXJpYWxpemVkW2luZGV4KytdKTsKKyAg
ICBFWFBFQ1RfRVEoY2hhbm5lbElkICYgMHhmZiwgc2VyaWFsaXplZFtpbmRleCsrXSk7CisgICAg
RVhQRUNUX0VRKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGNtZCksIHNlcmlhbGl6ZWRbaW5kZXgrK10g
JiAweDdmKTsKKworICAgIEVYUEVDVF9FUShkYXRhLnNpemUoKSA+PiA4LCBzZXJpYWxpemVkW2lu
ZGV4KytdKTsKKyAgICBFWFBFQ1RfRVEoZGF0YS5zaXplKCkgJiAweGZmLCBzZXJpYWxpemVkW2lu
ZGV4KytdKTsKKyAgICBFWFBFQ1RfRVEoZGF0YVswXSwgc2VyaWFsaXplZFtpbmRleCsrXSk7Cisg
ICAgRVhQRUNUX0VRKGRhdGFbMV0sIHNlcmlhbGl6ZWRbaW5kZXgrK10pOworICAgIGZvciAoOyBp
bmRleCA8IHNlcmlhbGl6ZWQuc2l6ZSgpOyBpbmRleCsrKQorICAgICAgICBFWFBFQ1RfRVEoMCwg
c2VyaWFsaXplZFtpbmRleF0pIDw8ICJtaXNtYXRjaCBhdCBpbmRleCAiIDw8IGluZGV4OworfQor
CitURVNUKEZpZG9IaWRNZXNzYWdlVGVzdCwgVGVzdFBhY2tldENvbnN0cnVjdG9ycykKK3sKKyAg
ICB1aW50MzJfdCBjaGFubmVsSWQgPSAweDA1MDYwNzA4OworICAgIFZlY3Rvcjx1aW50OF90PiBk
YXRhIHsxMCwgMTF9OworICAgIEZpZG9IaWREZXZpY2VDb21tYW5kIGNtZCA9IEZpZG9IaWREZXZp
Y2VDb21tYW5kOjprV2luazsKKyAgICBzaXplX3QgbGVuZ3RoID0gZGF0YS5zaXplKCk7CisgICAg
YXV0byBvcmlnUGFja2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxGaWRvSGlkSW5pdFBhY2tldD4oY2hh
bm5lbElkLCBjbWQsIFdURk1vdmUoZGF0YSksIGxlbmd0aCk7CisKKyAgICBzaXplX3QgcGF5bG9h
ZExlbmd0aCA9IHN0YXRpY19jYXN0PHNpemVfdD4ob3JpZ1BhY2tldC0+cGF5bG9hZExlbmd0aCgp
KTsKKyAgICBWZWN0b3I8dWludDhfdD4gb3JpZ0RhdGEgPSBvcmlnUGFja2V0LT5nZXRTZXJpYWxp
emVkRGF0YSgpOworCisgICAgYXV0byByZWNvbnN0cnVjdGVkUGFja2V0ID0gRmlkb0hpZEluaXRQ
YWNrZXQ6OmNyZWF0ZUZyb21TZXJpYWxpemVkRGF0YShvcmlnRGF0YSwgJnBheWxvYWRMZW5ndGgp
OworICAgIEVYUEVDVF9FUShvcmlnUGFja2V0LT5jb21tYW5kKCksIHJlY29uc3RydWN0ZWRQYWNr
ZXQtPmNvbW1hbmQoKSk7CisgICAgRVhQRUNUX0VRKG9yaWdQYWNrZXQtPnBheWxvYWRMZW5ndGgo
KSwgcmVjb25zdHJ1Y3RlZFBhY2tldC0+cGF5bG9hZExlbmd0aCgpKTsKKyAgICBFWFBFQ1RfRVEo
b3JpZ1BhY2tldC0+Z2V0UGFja2V0UGF5bG9hZCgpLCByZWNvbnN0cnVjdGVkUGFja2V0LT5nZXRQ
YWNrZXRQYXlsb2FkKCkpOworCisgICAgRVhQRUNUX0VRKGNoYW5uZWxJZCwgcmVjb25zdHJ1Y3Rl
ZFBhY2tldC0+Y2hhbm5lbElkKCkpOworCisgICAgQVNTRVJUX0VRKG9yaWdQYWNrZXQtPmdldFNl
cmlhbGl6ZWREYXRhKCkuc2l6ZSgpLCByZWNvbnN0cnVjdGVkUGFja2V0LT5nZXRTZXJpYWxpemVk
RGF0YSgpLnNpemUoKSk7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG9yaWdQ
YWNrZXQtPmdldFNlcmlhbGl6ZWREYXRhKCkuc2l6ZSgpOyArK2luZGV4KQorICAgICAgICBFWFBF
Q1RfRVEob3JpZ1BhY2tldC0+Z2V0U2VyaWFsaXplZERhdGEoKVtpbmRleF0sIHJlY29uc3RydWN0
ZWRQYWNrZXQtPmdldFNlcmlhbGl6ZWREYXRhKClbaW5kZXhdKSA8PCAibWlzbWF0Y2ggYXQgaW5k
ZXggIiA8PCBpbmRleDsKK30KKworVEVTVChGaWRvSGlkTWVzc2FnZVRlc3QsIFRlc3RNYXhMZW5n
dGhQYWNrZXRDb25zdHJ1Y3RvcnMpCit7CisgICAgdWludDMyX3QgY2hhbm5lbElkID0gMHhBQUFC
QUNBRDsKKyAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGtIaWRNYXhNZXNzYWdlU2l6ZTsgKytpKQorICAgICAgICBkYXRhLmFwcGVuZChzdGF0aWNf
Y2FzdDx1aW50OF90PihpICUgMHhmZikpOworCisgICAgYXV0byBvcmlnTXNnID0gRmlkb0hpZE1l
c3NhZ2U6OmNyZWF0ZShjaGFubmVsSWQsIEZpZG9IaWREZXZpY2VDb21tYW5kOjprTXNnLCBkYXRh
KTsKKyAgICBBU1NFUlRfVFJVRShvcmlnTXNnKTsKKworICAgIGNvbnN0IGF1dG8mIG9yaWdpbmFs
TXNnUGFja2V0cyA9IG9yaWdNc2ctPmdldFBhY2tldHNGb3JUZXN0aW5nKCk7CisgICAgYXV0byBp
dCA9IG9yaWdpbmFsTXNnUGFja2V0cy5iZWdpbigpOworICAgIGF1dG8gbXNnRGF0YSA9ICgqaXQp
LT5nZXRTZXJpYWxpemVkRGF0YSgpOworICAgIGF1dG8gbmV3TXNnID0gRmlkb0hpZE1lc3NhZ2U6
OmNyZWF0ZUZyb21TZXJpYWxpemVkRGF0YShtc2dEYXRhKTsKKyAgICArK2l0OworCisgICAgZm9y
ICg7IGl0ICE9IG9yaWdpbmFsTXNnUGFja2V0cy5lbmQoKTsgKytpdCkgeworICAgICAgICBtc2dE
YXRhID0gKCppdCktPmdldFNlcmlhbGl6ZWREYXRhKCk7CisgICAgICAgIEVYUEVDVF9UUlVFKG5l
d01zZy0+YWRkQ29udGludWF0aW9uUGFja2V0KG1zZ0RhdGEpKTsKKyAgICB9CisKKyAgICBhdXRv
IG9yaWdJdCA9IG9yaWdpbmFsTXNnUGFja2V0cy5iZWdpbigpOworICAgIGNvbnN0IGF1dG8mIG5l
d01zZ1BhY2tldHMgPSBuZXdNc2ctPmdldFBhY2tldHNGb3JUZXN0aW5nKCk7CisgICAgYXV0byBu
ZXdNc2dJdCA9IG5ld01zZ1BhY2tldHMuYmVnaW4oKTsKKworICAgIEVYUEVDVF9FUShvcmlnTXNn
LT5udW1QYWNrZXRzKCksIG5ld01zZy0+bnVtUGFja2V0cygpKTsKKyAgICBmb3IgKDsgb3JpZ0l0
ICE9IG9yaWdpbmFsTXNnUGFja2V0cy5lbmQoKSB8fCBuZXdNc2dJdCAhPSBuZXdNc2dQYWNrZXRz
LmVuZCgpOyArK29yaWdJdCwgKytuZXdNc2dJdCkgeworICAgICAgICBFWFBFQ1RfRVEoKCpvcmln
SXQpLT5nZXRQYWNrZXRQYXlsb2FkKCksICgqbmV3TXNnSXQpLT5nZXRQYWNrZXRQYXlsb2FkKCkp
OworCisgICAgICAgIEVYUEVDVF9FUSgoKm9yaWdJdCktPmNoYW5uZWxJZCgpLCAoKm5ld01zZ0l0
KS0+Y2hhbm5lbElkKCkpOworCisgICAgICAgIEFTU0VSVF9FUSgoKm9yaWdJdCktPmdldFNlcmlh
bGl6ZWREYXRhKCkuc2l6ZSgpLCAoKm5ld01zZ0l0KS0+Z2V0U2VyaWFsaXplZERhdGEoKS5zaXpl
KCkpOworICAgICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgKCpvcmlnSXQpLT5n
ZXRTZXJpYWxpemVkRGF0YSgpLnNpemUoKTsgKytpbmRleCkKKyAgICAgICAgICAgIEVYUEVDVF9F
USgoKm9yaWdJdCktPmdldFNlcmlhbGl6ZWREYXRhKClbaW5kZXhdLCAoKm5ld01zZ0l0KS0+Z2V0
U2VyaWFsaXplZERhdGEoKVtpbmRleF0pIDw8ICJtaXNtYXRjaCBhdCBpbmRleCAiIDw8IGluZGV4
OworICAgIH0KK30KKworVEVTVChGaWRvSGlkTWVzc2FnZVRlc3QsIFRlc3RNZXNzYWdlUGFydGl0
b25pbmcpCit7CisgICAgdWludDMyX3QgY2hhbm5lbElkID0gMHgwMTAxMDIwMzsKKyAgICBWZWN0
b3I8dWludDhfdD4gZGF0YShrSGlkSW5pdFBhY2tldERhdGFTaXplICsgMSk7CisgICAgYXV0byB0
d29QYWNrZXRNZXNzYWdlID0gRmlkb0hpZE1lc3NhZ2U6OmNyZWF0ZShjaGFubmVsSWQsIEZpZG9I
aWREZXZpY2VDb21tYW5kOjprUGluZywgZGF0YSk7CisgICAgQVNTRVJUX1RSVUUodHdvUGFja2V0
TWVzc2FnZSk7CisgICAgRVhQRUNUX0VRKDJVLCB0d29QYWNrZXRNZXNzYWdlLT5udW1QYWNrZXRz
KCkpOworCisgICAgZGF0YS5yZXNpemUoa0hpZEluaXRQYWNrZXREYXRhU2l6ZSk7CisgICAgYXV0
byBvbmVQYWNrZXRNZXNzYWdlID0gRmlkb0hpZE1lc3NhZ2U6OmNyZWF0ZShjaGFubmVsSWQsIEZp
ZG9IaWREZXZpY2VDb21tYW5kOjprUGluZywgZGF0YSk7CisgICAgQVNTRVJUX1RSVUUob25lUGFj
a2V0TWVzc2FnZSk7CisgICAgRVhQRUNUX0VRKDFVLCBvbmVQYWNrZXRNZXNzYWdlLT5udW1QYWNr
ZXRzKCkpOworCisgICAgZGF0YS5yZXNpemUoa0hpZEluaXRQYWNrZXREYXRhU2l6ZSArIGtIaWRD
b250aW51YXRpb25QYWNrZXREYXRhU2l6ZSArIDEpOworICAgIGF1dG8gdGhyZWVQYWNrZXRNZXNz
YWdlID0gRmlkb0hpZE1lc3NhZ2U6OmNyZWF0ZShjaGFubmVsSWQsIEZpZG9IaWREZXZpY2VDb21t
YW5kOjprUGluZywgZGF0YSk7CisgICAgQVNTRVJUX1RSVUUodGhyZWVQYWNrZXRNZXNzYWdlKTsK
KyAgICBFWFBFQ1RfRVEoM1UsIHRocmVlUGFja2V0TWVzc2FnZS0+bnVtUGFja2V0cygpKTsKK30K
KworVEVTVChGaWRvSGlkTWVzc2FnZVRlc3QsIFRlc3RNYXhTaXplKQoreworICAgIHVpbnQzMl90
IGNoYW5uZWxJZCA9IDB4MDAwMTAyMDM7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEoa0hpZE1h
eE1lc3NhZ2VTaXplICsgMSk7CisgICAgYXV0byBvdmVyc2l6ZU1lc3NhZ2UgPSBGaWRvSGlkTWVz
c2FnZTo6Y3JlYXRlKGNoYW5uZWxJZCwgRmlkb0hpZERldmljZUNvbW1hbmQ6OmtQaW5nLCBkYXRh
KTsKKyAgICBFWFBFQ1RfRkFMU0Uob3ZlcnNpemVNZXNzYWdlKTsKK30KKworVEVTVChGaWRvSGlk
TWVzc2FnZVRlc3QsIFRlc3REZWNvbnN0cnVjdCkKK3sKKyAgICB1aW50MzJfdCBjaGFubmVsSWQg
PSAweDBBMEIwQzBEOworICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhKGtIaWRNYXhNZXNzYWdlU2l6
ZSwgMHg3Rik7CisgICAgYXV0byBmaWxsZWRNZXNzYWdlID0gRmlkb0hpZE1lc3NhZ2U6OmNyZWF0
ZShjaGFubmVsSWQsIEZpZG9IaWREZXZpY2VDb21tYW5kOjprUGluZywgZGF0YSk7CisgICAgQVNT
RVJUX1RSVUUoZmlsbGVkTWVzc2FnZSk7CisgICAgRVhQRUNUX0VRKGRhdGEsIGZpbGxlZE1lc3Nh
Z2UtPmdldE1lc3NhZ2VQYXlsb2FkKCkpOworfQorCitURVNUKEZpZG9IaWRNZXNzYWdlVGVzdCwg
VGVzdERlc2VyaWFsaXplKQoreworICAgIHVpbnQzMl90IGNoYW5uZWxJZCA9IDB4MEEwQjBDMEQ7
CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEoa0hpZE1heE1lc3NhZ2VTaXplKTsKKworICAgIGF1
dG8gb3JpZ01lc3NhZ2UgPSBGaWRvSGlkTWVzc2FnZTo6Y3JlYXRlKGNoYW5uZWxJZCwgRmlkb0hp
ZERldmljZUNvbW1hbmQ6OmtQaW5nLCBkYXRhKTsKKyAgICBBU1NFUlRfVFJVRShvcmlnTWVzc2Fn
ZSk7CisKKyAgICBEZXF1ZTxWZWN0b3I8dWludDhfdD4+IG9yaWdMaXN0OworICAgIGF1dG8gYnVm
ID0gb3JpZ01lc3NhZ2UtPnBvcE5leHRQYWNrZXQoKTsKKyAgICBvcmlnTGlzdC5hcHBlbmQoYnVm
KTsKKworICAgIGF1dG8gbmV3TWVzc2FnZSA9IEZpZG9IaWRNZXNzYWdlOjpjcmVhdGVGcm9tU2Vy
aWFsaXplZERhdGEoYnVmKTsKKyAgICB3aGlsZSAoIW5ld01lc3NhZ2UtPm1lc3NhZ2VDb21wbGV0
ZSgpKSB7CisgICAgICAgIGJ1ZiA9IG9yaWdNZXNzYWdlLT5wb3BOZXh0UGFja2V0KCk7CisgICAg
ICAgIG9yaWdMaXN0LmFwcGVuZChidWYpOworICAgICAgICBuZXdNZXNzYWdlLT5hZGRDb250aW51
YXRpb25QYWNrZXQoYnVmKTsKKyAgICB9CisKKyAgICB3aGlsZSAoIShidWYgPSBuZXdNZXNzYWdl
LT5wb3BOZXh0UGFja2V0KCkpLmlzRW1wdHkoKSkgeworICAgICAgICBFWFBFQ1RfRVEoYnVmLCBv
cmlnTGlzdC5maXJzdCgpKTsKKyAgICAgICAgb3JpZ0xpc3QucmVtb3ZlRmlyc3QoKTsKKyAgICB9
Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKKworI2VuZGlmIC8vIEVOQUJMRShX
RUJfQVVUSE4pCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>