<?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>143571</bug_id>
          
          <creation_ts>2015-04-09 12:40:19 -0700</creation_ts>
          <short_desc>[Mac] Refactor MediaPlaybackTarget</short_desc>
          <delta_ts>2015-04-10 07:34: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>Media</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1084019</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-04-09 12:40:19 -0700</bug_when>
    <thetext>MediaPlaybackTarget should be refcounted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084059</commentid>
    <comment_count>1</comment_count>
      <attachid>250468</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-04-09 14:41:40 -0700</bug_when>
    <thetext>Created attachment 250468
Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084064</commentid>
    <comment_count>2</comment_count>
      <attachid>250470</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-04-09 14:51:17 -0700</bug_when>
    <thetext>Created attachment 250470
Updated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084065</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-09 14:53:57 -0700</bug_when>
    <thetext>Attachment 250470 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/avfoundation/MediaPlaybackTargetContextMac.mm:58:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/graphics/avfoundation/MediaPlaybackTargetContextMac.mm:58:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 2 in 39 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>1084091</commentid>
    <comment_count>4</comment_count>
      <attachid>250470</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2015-04-09 15:51:33 -0700</bug_when>
    <thetext>Comment on attachment 250470
Updated patch.

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

r=me with nit:

&gt; Source/WebCore/platform/graphics/MediaPlaybackTargetContext.h:45
&gt; +#if PLATFORM(COCOA)
&gt; +    WEBCORE_EXPORT void encode(NSKeyedArchiver *) const;
&gt; +    WEBCORE_EXPORT static bool decode(NSKeyedUnarchiver *, MediaPlaybackTargetContext&amp;);
&gt; +#endif

nit: Maybe move these into WebCoreArgumentCodersMac.mm?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084156</commentid>
    <comment_count>5</comment_count>
      <attachid>250490</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-04-09 18:05:49 -0700</bug_when>
    <thetext>Created attachment 250490
Patch for the bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084157</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-09 18:07:58 -0700</bug_when>
    <thetext>Attachment 250490 did not pass style-queue:


ERROR: Source/WebKit2/Shared/mac/WebCoreArgumentCodersMac.mm:486:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/Shared/mac/WebCoreArgumentCodersMac.mm:486:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 2 in 39 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>1084302</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-04-10 07:33:43 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 250470 [details]
&gt; Updated patch.
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=250470&amp;action=review
&gt; 
&gt; r=me with nit:
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/MediaPlaybackTargetContext.h:45
&gt; &gt; +#if PLATFORM(COCOA)
&gt; &gt; +    WEBCORE_EXPORT void encode(NSKeyedArchiver *) const;
&gt; &gt; +    WEBCORE_EXPORT static bool decode(NSKeyedUnarchiver *, MediaPlaybackTargetContext&amp;);
&gt; &gt; +#endif
&gt; 
&gt; nit: Maybe move these into WebCoreArgumentCodersMac.mm?

Good idea, done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084303</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-04-10 07:34:07 -0700</bug_when>
    <thetext>Committed r182630: https://trac.webkit.org/r182630</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250468</attachid>
            <date>2015-04-09 14:41:40 -0700</date>
            <delta_ts>2015-04-09 14:51:17 -0700</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>use_ref_ptr_patch_4.txt</filename>
            <type>text/plain</type>
            <size>63579</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MjYwNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkxIEBACisyMDE1LTA0LTA5ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIFJlZmFjdG9y
IE1lZGlhUGxheWJhY2tUYXJnZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0MzU3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YWRkUGxh
eWJhY2tUYXJnZXRQaWNrZXJDbGllbnQpOiBEb24ndCBjYWxsIGNsaWVudCBpZiBwYWdlIHBsYXli
YWNrIHRhcmdldAorICAgICAgICAgICAgaXMgTlVMTC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpkaWRDaG9vc2VQbGF5YmFja1RhcmdldCk6IE1lZGlhUGxheWJhY2tUYXJnZXQgaXMgcGFz
c2VkIGFzIGEgUmVmPD4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKworICAgICAgICAqIGh0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjpzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KTogTWVkaWFQbGF5YmFja1RhcmdldCBpcyBw
YXNzZWQgYXMgYSBSZWY8PgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorCisg
ICAgICAgICogaHRtbC9IVE1MTWVkaWFTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYVNlc3Npb246OkhUTUxNZWRpYVNlc3Npb24pOiBEb24ndCBpbml0aWFsaXplIG1fcGxh
eWJhY2tUYXJnZXQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFTZXNzaW9uOjpkaWRDaG9v
c2VQbGF5YmFja1RhcmdldCk6IE1lZGlhUGxheWJhY2tUYXJnZXQgaXMgcGFzc2VkIGFzIGEgUmVm
PD4KKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYVNlc3Npb24uaDoKKworICAgICAgICAqIHBhZ2Uv
UGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpQYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OlBhZ2U6OnBsYXliYWNrVGFyZ2V0KTogbV9wbGF5YmFja1RhcmdldCBpcyBhIFJlZlB0cjxN
ZWRpYVBsYXliYWNrVGFyZ2V0PgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6ZGlkQ2hvb3NlUGxh
eWJhY2tUYXJnZXQpOiBEaXR0by4KKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKworICAgICAgICAq
IHBsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbi5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
ZXNzaW9uQ2xpZW50OjpzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KTogVGFrZSBhIFJlZjxNZWRp
YVBsYXliYWNrVGFyZ2V0PiYmLgorCisgICAgICAgIE1ha2UgTWVkaWFQbGF5YmFja1RhcmdldCBS
ZWZDb3VudGVkLCBhbmQgZG9uJ3QgcmVxdWlyZSBpdCB0byBiZSBzZXJpYWxpemFibGUgc28gaXQg
Y2FuIGJlCisgICAgICAgIHN1YmNsYXNzZWQgdG8ga2VlcCBwb3J0LXNwZWNpZmljIGlmb3JtYXRp
b24gb3V0IG9mIHRoZSBiYXNlIGNsYXNzLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWJhY2tUYXJnZXQuaDogCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFy
Z2V0Ojp0YXJnZXRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXQ6
OnRhcmdldENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldDo6
aGFzQWN0aXZlUm91dGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldDo6
TWVkaWFQbGF5YmFja1RhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFy
Z2V0OjpzZXREZXZpY2VQaWNrZXJDb250ZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWJhY2tUYXJnZXQ6OmRldmljZVBpY2tlckNvbnRleHQpOiBEZWxldGVkLgorCisg
ICAgICAgIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0IGlzIHRoZSBzdHJ1Y3QgdGhhdCBpcyBz
ZXJpYWxpemVkIHRvIHBhc3MgYWNyb3NzIHRoZSBwcm9jZXNzIGJvdWRhcnkuCisgICAgICAgIEl0
IGhhcyB1bmlvbiB0byBob2xkIHBvcnQtc3BlY2lmaWMgZGF0YS4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oOiBBZGRlZC4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaDogZGlkQ2hv
b3NlUGxheWJhY2tUYXJnZXQgdGFrZXMgYSBSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQu
aDogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQp
OiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmg6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U6OnNldFdpcmVsZXNzUGxheWJh
Y2tUYXJnZXQpOgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0TWFjLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjplbmNvZGUpOiBFbmNvZGUgdGhlIGF2T3V0cHV0
Q29udGV4dC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Ojpk
ZWNvZGUpOiBEZWNvZGUgdGhlIGF2T3V0cHV0Q29udGV4dC4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXliYWNrVGFyZ2V0TWFjLmg6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldE1hYzo6dGFyZ2V0VHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0TWFjOjpvdXRwdXRDb250ZXh0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5YmFja1Rh
cmdldE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRNYWM6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0TWFjOjpNZWRpYVBs
YXliYWNrVGFyZ2V0TWFjKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRN
YWM6On5NZWRpYVBsYXliYWNrVGFyZ2V0TWFjKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWJhY2tUYXJnZXRNYWM6OnRhcmdldENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5YmFja1RhcmdldE1hYzo6aGFzQWN0aXZlUm91dGUpOgorICAgICAgICAoV2ViQ29yZTo6dG9N
ZWRpYVBsYXliYWNrVGFyZ2V0TWFjKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tU
YXJnZXQ6OmVuY29kZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNr
VGFyZ2V0OjpkZWNvZGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFj
a1RhcmdldDo6aGFzQWN0aXZlUm91dGUpOiBEZWxldGVkLgorCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNYWM6OmN1cnJl
bnREZXZpY2VEaWRDaGFuZ2UpOiBBbGxvY2F0ZSBhbmQgcGFzcyBhIE1lZGlhUGxheWJhY2tUYXJn
ZXRNYWMKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmg6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6c2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldCk6IFRha2UgYSBSZWY8TWVkaWFQbGF5YmFj
a1RhcmdldCYmCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakM6OnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQpOiBEaXR0by4KKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5t
bToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpzZXRXaXJlbGVz
c1BsYXliYWNrVGFyZ2V0KTogRGl0dG8uCisKIDIwMTUtMDQtMDkgIFNpbW9uIEZyYXNlciAgPHNp
bW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2ZXJ0IHBhcnQgb2YgMTgyNTE2OiBp
dCBicm9rZSB0ZXN0cwpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTgyNTQxKQorKysgU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEs
NiArMTIxLDggQEAKIAkJMDcxMTU4OTExN0RGNkY2NjAwRURGRTJCIC8qIE1lZGlhU3RyZWFtUHJp
dmF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
NzExNTg4RjE3REY2MzM3MDBFREZFMkIgLyogTWVkaWFTdHJlYW1Qcml2YXRlLmNwcCAqLzsgfTsK
IAkJMDcxQTlFQzIxNjhGQkM0MzAwMjYyOUY5IC8qIFRleHRUcmFja0N1ZUdlbmVyaWMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcxQTlFQzAxNjhG
QjU2QzAwMjYyOUY5IC8qIFRleHRUcmFja0N1ZUdlbmVyaWMuY3BwICovOyB9OwogCQkwNzFBOUVD
MzE2OEZCQzU1MDAyNjI5RjkgLyogVGV4dFRyYWNrQ3VlR2VuZXJpYy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcxQTlFQzExNjhGQjU2QzAwMjYyOUY5
IC8qIFRleHRUcmFja0N1ZUdlbmVyaWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQkwNzFFNDk2RTFBRDVBQTBEMDA4QTUwQjQgLyogTWVkaWFQbGF5
YmFja1RhcmdldE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA3MUU0OTZEMUFENUFBMEQwMDhBNTBCNCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0TWFj
Lm1tICovOyB9OworCQkwNzFFNDk3MDFBRDVBQjVFMDA4QTUwQjQgLyogTWVkaWFQbGF5YmFja1Rh
cmdldE1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDcxRTQ5NkYxQUQ1QUI1RTAwOEE1MEI0IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRNYWMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwNzIwQjBBMDE0
RDMzMjM1MDA2NDI5NTUgLyogR2VuZXJpY0V2ZW50UXVldWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcyMEIwOUUxNEQzMzIzNTAwNjQyOTU1IC8q
IEdlbmVyaWNFdmVudFF1ZXVlLmNwcCAqLzsgfTsKIAkJMDcyMEIwQTExNEQzMzIzNTAwNjQyOTU1
IC8qIEdlbmVyaWNFdmVudFF1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwNzIwQjA5RjE0RDMzMjM1MDA2NDI5NTUgLyogR2VuZXJpY0V2ZW50UXVl
dWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
NzI3N0U0QzE3RDAxOENDMDAxNTUzNEQgLyogSlNNZWRpYVN0cmVhbS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzI3N0U0MDE3RDAxOENDMDAxNTUz
NEQgLyogSlNNZWRpYVN0cmVhbS5jcHAgKi87IH07CkBAIC0xNzUsNyArMTc3LDcgQEAKIAkJMDc0
RTgyQkIxOEE2OUYwRTAwN0VGNTRDIC8qIFBsYXRmb3JtVGltZVJhbmdlcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc0RTgyQjkxOEE2OUYwRTAwN0VG
NTRDIC8qIFBsYXRmb3JtVGltZVJhbmdlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTA3NTM4NjAyMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRU
ZXh0VHJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDc1Mzg2MDAxNDQ4OUU5ODAwQjc4NDUyIC8qIENhY2hlZFRleHRUcmFjay5jcHAgKi87IH07
CiAJCTA3NTM4NjAzMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRUZXh0VHJhY2suaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NTM4NjAxMTQ0ODlFOTgw
MEI3ODQ1MiAvKiBDYWNoZWRUZXh0VHJhY2suaCAqLzsgfTsKLQkJMDc2MEMxN0ExQUE4RkM3RDAw
OUVEN0I4IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0UzREZEMjFBOUU3OEE1MDA3NjRDQTggLyogTWVk
aWFQbGF5YmFja1RhcmdldE1hYy5tbSAqLzsgfTsKKwkJMDc2MEMxN0ExQUE4RkM3RDAwOUVEN0I4
IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdFM0RGRDIxQTlFNzhBNTAwNzY0Q0E4IC8qIE1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0TWFjLm1tICovOyB9OwogCQkwNzYzMDZEMDE3RTE0NzhE
MDA1QTdDNEUgLyogTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNDYWxsYmFjay5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2MzA2Q0MxN0UxNDc4RDAwNUE3
QzRFIC8qIE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzQ2FsbGJhY2suaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwNzYzMDZEMjE3RTE0NzhEMDA1QTdD
NEUgLyogTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NjMwNkNFMTdFMTQ3OEQwMDVBN0M0RSAv
KiBNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3QuY3BwICovOyB9OwogCQkwNzYzMDZEMzE3
RTE0NzhEMDA1QTdDNEUgLyogTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzYzMDZDRjE3RTE0NzhE
MDA1QTdDNEUgLyogTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM1MCw2ICszNTIsNyBAQAog
CQkwN0VEQzNFRTFBQUNCNzVEMDA5ODNFQjUgLyogTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0VEQzNFRDFB
QUNCNzVEMDA5ODNFQjUgLyogTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAgKi87IH07CiAJCTA3
RjBCOTdBMUFDNURCMzMwMEU1MzVEOSAvKiBBVktpdFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdGMEI5NzkxQUM1REIzMzAwRTUzNUQ5IC8qIEFW
S2l0U1BJLmggKi87IH07CiAJCTA3RjBCOTdDMUFDNURCNDYwMEU1MzVEOSAvKiBBVkZvdW5kYXRp
b25TUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3
RjBCOTdCMUFDNURCNDYwMEU1MzVEOSAvKiBBVkZvdW5kYXRpb25TUEkuaCAqLzsgfTsKKwkJMDdG
ODc2ODQxQUQ1ODBGOTAwOTA1ODQ5IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0Y4NzY4MzFBRDRB
OTQ1MDA5MDU4NDkgLyogTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwN0Y5NDQxNjE4NjREMDQ2MDA1
RDMxQ0IgLyogTWVkaWFTZXNzaW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBRThDMDgxNzQ2Qjk1NzAwNTMyRDc4IC8qIE1lZGlhU2Vz
c2lvbk1hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwN0ZCREUyQzE4RkVEMTc4MDAxQTdDRkYgLyogSlNEYXRhQ3VlQ3VzdG9tLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RkJERTJCMThG
RUQxNzgwMDFBN0NGRiAvKiBKU0RhdGFDdWVDdXN0b20uY3BwICovOyB9OwogCQkwN0ZFOTlEQzE4
ODA3QTdEMDAyNTY2NDggLyogSFRNTE1lZGlhU2Vzc2lvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0ZFOTlEQTE4ODA3QTdEMDAyNTY2NDggLyog
SFRNTE1lZGlhU2Vzc2lvbi5jcHAgKi87IH07CkBAIC03MTIwLDYgKzcxMjMsOCBAQAogCQkwNzEx
NTg4RjE3REY2MzM3MDBFREZFMkIgLyogTWVkaWFTdHJlYW1Qcml2YXRlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhU3RyZWFtUHJpdmF0ZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MUE5RUMwMTY4RkI1NkMwMDI2MjlGOSAvKiBUZXh0
VHJhY2tDdWVHZW5lcmljLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFRleHRUcmFja0N1ZUdlbmVyaWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
NzFBOUVDMTE2OEZCNTZDMDAyNjI5RjkgLyogVGV4dFRyYWNrQ3VlR2VuZXJpYy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0VHJhY2tDdWVHZW5lcmljLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MUU0OTZEMUFENUFBMEQwMDhBNTBCNCAvKiBNZWRpYVBs
YXliYWNrVGFyZ2V0TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gTWVkaWFQbGF5YmFja1RhcmdldE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMDcxRTQ5NkYxQUQ1QUI1RTAwOEE1MEI0IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRNYWMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFQbGF5YmFja1RhcmdldE1hYy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzIwQjA5RTE0RDMzMjM1MDA2NDI5NTUg
LyogR2VuZXJpY0V2ZW50UXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gR2VuZXJpY0V2ZW50UXVldWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwNzIwQjA5RjE0RDMzMjM1MDA2NDI5NTUgLyogR2VuZXJpY0V2ZW50UXVldWUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJpY0V2ZW50UXVldWUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcyMjFCNEExN0NFQzMyNzAwODQ4RTUxIC8qIE1lZGlhQ29u
c3RyYWludHNJbXBsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1l
ZGlhQ29uc3RyYWludHNJbXBsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcz
ODMsMTIgKzczODgsMTMgQEAKIAkJMDdFMTE2QjAxNDg5QzlBMTAwRUM1QUNFIC8qIEpTVGV4dFRy
YWNrQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVGV4
dFRyYWNrQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdFMTE3MDYx
NDg5RUJFQjAwRUM1QUNFIC8qIEpTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdFM0RGRDAxQTlFNzg2NTAwNzY0Q0E4IC8qIE1lZGlh
UGxheWJhY2tUYXJnZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFQ
bGF5YmFja1RhcmdldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwN0UzREZEMjFB
OUU3OEE1MDA3NjRDQTggLyogTWVkaWFQbGF5YmFja1RhcmdldE1hYy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IE1lZGlhUGxheWJhY2tUYXJnZXRNYWMubW07IHBh
dGggPSBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5YmFja1RhcmdldE1h
Yy5tbTsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQkwN0UzREZEMjFBOUU3OEE1MDA3
NjRDQTggLyogTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHRNYWMubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dE1hYy5t
bTsgcGF0aCA9IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dE1hYy5tbTsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQkwN0U5RTEy
RDE4RjVFMjc2MDAxMUEzQTQgLyogSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluYmFuZE1ldGFkYXRhVGV4dFRyYWNr
UHJpdmF0ZUFWRi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0U5RTEyRjE4RjYy
QjM3MDAxMUEzQTQgLyogSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluYmFuZE1ldGFkYXRhVGV4dFRyYWNr
UHJpdmF0ZUFWRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3RURDM0VEMUFB
Q0I3NUQwMDk4M0VCNSAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0YwQjk3OTFBQzVEQjMzMDBFNTM1RDkgLyogQVZL
aXRTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVZLaXRTUEkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdGMEI5N0IxQUM1REI0NjAwRTUzNUQ5IC8qIEFW
Rm91bmRhdGlvblNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBVkZvdW5k
YXRpb25TUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDdGODc2ODMxQUQ0QTk0
NTAwOTA1ODQ5IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3RkJERTJCMThGRUQxNzgwMDFBN0NGRiAvKiBKU0RhdGFD
dWVDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEYXRh
Q3VlQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdGRTk5REExODgw
N0E3RDAwMjU2NjQ4IC8qIEhUTUxNZWRpYVNlc3Npb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSFRNTE1lZGlhU2Vzc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTA3RkU5OURCMTg4MDdBN0QwMDI1NjY0OCAvKiBIVE1MTWVkaWFTZXNzaW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxNZWRpYVNlc3Npb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0NzQ4LDYgKzE0NzU0LDggQEAKIAkJMDc2
RjBEMDgxMkI4MTkyNzAwQzI2QUE0IC8qIGF2Zm91bmRhdGlvbiAqLyA9IHsKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMDcxRTQ5NkYxQUQ1QUI1RTAwOEE1MEI0IC8q
IE1lZGlhUGxheWJhY2tUYXJnZXRNYWMuaCAqLywKKwkJCQkwNzFFNDk2RDFBRDVBQTBEMDA4QTUw
QjQgLyogTWVkaWFQbGF5YmFja1RhcmdldE1hYy5tbSAqLywKIAkJCQlERjlBRkQ2RjEzRkMzMUIw
MDAxNUZFQjcgLyogb2JqYyAqLywKIAkJCQlDREUzQTg1MjE3RjVGQ0U2MDBDNUJFMjAgLyogQXVk
aW9UcmFja1ByaXZhdGVBVkYuaCAqLywKIAkJCQkwN0U5RTEyRjE4RjYyQjM3MDAxMUEzQTQgLyog
SW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmNwcCAqLywKQEAgLTE0NzU2LDcgKzE0
NzY0LDcgQEAKIAkJCQkwN0I0NDJENTE2NkM3MEIwMDA1NTZDQUQgLyogSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUFWRi5oICovLAogCQkJCTA3OEU0M0RCMUFCQjZGNkYwMDFDMkZBNiAvKiBNZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyTWFjLmggKi8sCiAJCQkJMDc4RTQzREMxQUJCNkY2RjAwMUMyRkE2
IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNYWMubW0gKi8sCi0JCQkJMDdFM0RGRDIxQTlF
NzhBNTAwNzY0Q0E4IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRNYWMubW0gKi8sCisJCQkJMDdFM0RG
RDIxQTlFNzhBNTAwNzY0Q0E4IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0TWFjLm1tICov
LAogCQkJCTA3NkYwRDA5MTJCODE5MjcwMEMyNkFBNCAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb24uY3BwICovLAogCQkJCTA3NkYwRDBBMTJCODE5MjcwMEMyNkFBNCAvKiBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb24uaCAqLywKIAkJCQlDRDY0MUVCRDE4MTlCMzU5MDBFRTRD
NDEgLyogTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmNwcCAqLywKQEAgLTIwODE2LDYgKzIwODI0LDcg
QEAKIAkJCQkxNDFEQzA0RTE2NDgzNEI5MDAzNzFFNUEgLyogTGF5b3V0U2l6ZS5oICovLAogCQkJ
CTZDNTY4Q0FFMTlEQUZFQTAwMDQzMENBMiAvKiBNYXNrSW1hZ2VPcGVyYXRpb24uY3BwICovLAog
CQkJCTZDNTY4Q0FGMTlEQUZFQTAwMDQzMENBMiAvKiBNYXNrSW1hZ2VPcGVyYXRpb24uaCAqLywK
KwkJCQkwN0Y4NzY4MzFBRDRBOTQ1MDA5MDU4NDkgLyogTWVkaWFQbGF5YmFja1RhcmdldENvbnRl
eHQuaCAqLywKIAkJCQkwNzhFNDNENzFBQkI2QzdFMDAxQzJGQTYgLyogTWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlci5jcHAgKi8sCiAJCQkJMDc4RTQzRDgxQUJCNkM3RTAwMUMyRkE2IC8qIE1lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXIuaCAqLywKIAkJCQkwNzkyMTY1MzFBQTU2MEFBMDBBM0MwNDkg
LyogTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudC5oICovLApAQCAtMjU0NzAsNiArMjU0
NzksNyBAQAogCQkJCUIyRkEzRDlEMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR0dyYWRpZW50RWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0JFNzQyNzM4MUZBOTA2RkJCNEYwRjJDIC8qIEpT
U1ZHR3JhcGhpY3NFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NDg1MjI3QzExOTAxNjJD
MDA2RURDN0YgLyogSlNTVkdIS2VybkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3Rjg3
Njg0MUFENTgwRjkwMDkwNTg0OSAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQjJGQTNEOUYwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHSW1hZ2VFbGVt
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0RBMTBBQjc1QTZGMDAwRTVBQzQgLyogSlNT
VkdMZW5ndGguaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzREEzMEFCNzVBNkYwMDBFNUFDNCAv
KiBKU1NWR0xlbmd0aExpc3QuaCBpbiBIZWFkZXJzICovLApAQCAtMjU3MjAsNiArMjU3MzAsNyBA
QAogCQkJCUNEQzhCNUEzMTgwNDYzNDcwMDE2RTY4NSAvKiBNZWRpYVBsYXllclByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakMuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0NDYxM0U2MENENjgxQTkwMEZB
REE3NSAvKiBNZWRpYVBsYXllclByaXZhdGVRVEtpdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEUx
OTU5MkEwQTM5REFDQzAwMjIwRkU1IC8qIE1lZGlhUXVlcnkuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTA3MUU0OTcwMUFENUFCNUUwMDhBNTBCNCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0TWFjLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0RTE5NTkyQzBBMzlEQUNDMDAyMjBGRTUgLyogTWVkaWFRdWVyeUV2
YWx1YXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEUxOTU5MkUwQTM5REFDQzAwMjIwRkU1IC8q
IE1lZGlhUXVlcnlFeHAuaCBpbiBIZWFkZXJzICovLAogCQkJCUQzQTk0QTM5MTIyREFCQUMwMEEz
N0JCQyAvKiBNZWRpYVF1ZXJ5TGlzdC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODA3NSw3ICsyODA4
Niw3IEBACiAJCQkJOUJBQjZDNkQxMjU1MDYzMTAwMTYyNkQ0IC8qIEVkaXRpbmdTdHlsZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk0QjMwNDNDQzBBRTAzNzNCMDBBODI2NDcgLyogRWRpdG9yLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTkzQTM4QjRCMEQwRTU4MDgwMDY4NzJDMiAvKiBFZGl0b3JD
b21tYW5kLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTA3NjBDMTdBMUFBOEZDN0QwMDlFRDdCOCAv
KiBNZWRpYVBsYXliYWNrVGFyZ2V0TWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMDc2MEMxN0Ex
QUE4RkM3RDAwOUVEN0I4IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0TWFjLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJRkVEMTNEM0EwQ0VBOTM0NjAwRDg5NDY2IC8qIEVkaXRvcklPUy5tbSBp
biBTb3VyY2VzICovLAogCQkJCUVENTAxREM2MEIyNDlGMjkwMEFFMThEOSAvKiBFZGl0b3JNYWMu
bW0gaW4gU291cmNlcyAqLywKIAkJCQlBOEM0QTgwODA5RDU2MzI3MDAwM0FDOEQgLyogRWxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMwMzkxLDYgKzMwNDAyLDcgQEAKIAkJCQlBN0Q2QjM0
QTBGNjExMDQ1MDBCNzlGRDEgLyogV29ya2VyU2NyaXB0TG9hZGVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTJFNDM0NjU0MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJUaHJlYWQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEI5MDU2RjgwRjI2ODVGMzAwOTVGRjZBIC8qIFdvcmtlclRocmVhZGFi
bGVMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDcxRTQ5NkUxQUQ1QUEwRDAwOEE1MEI0
IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk5N0FBQkQy
QzE0RkEwOUQ1MDA3NDU3QUUgLyogV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzMDlFMjMwOTlFNjQ5MjAwNTZFNTgxIC8qIFdyYXBDb250
ZW50c0luRHVtbXlTcGFuQ29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUI0NUQyMDFB
QjhEMUUyMDAxMTdDRDIgLyogQ29udGVudEV4dGVuc2lvbi5jcHAgaW4gU291cmNlcyAqLywKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMTgyNTQxKQorKysgU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUyNyw3ICs2NTI3LDkg
QEAgdm9pZCBEb2N1bWVudDo6YWRkUGxheWJhY2tUYXJnZXRQaWNrZXJDbAogCiAgICAgbV9wbGF5
YmFja1RhcmdldENsaWVudHMuYWRkKCZjbGllbnQpOwogCi0gICAgY2xpZW50LmRpZENob29zZVBs
YXliYWNrVGFyZ2V0KHBhZ2UtPnBsYXliYWNrVGFyZ2V0KCkpOworICAgIFJlZlB0cjxNZWRpYVBs
YXliYWNrVGFyZ2V0PiB0YXJnZXQgPSBwYWdlLT5wbGF5YmFja1RhcmdldCgpOworICAgIGlmICh0
YXJnZXQpCisgICAgICAgIGNsaWVudC5kaWRDaG9vc2VQbGF5YmFja1RhcmdldCgqdGFyZ2V0KTsK
ICAgICBjbGllbnQuZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UocGFnZS0+
aGFzV2lyZWxlc3NQbGF5YmFja1RhcmdldCgpKTsKIH0KIApAQCAtNjU2OCwxMCArNjU3MCwxMCBA
QCB2b2lkIERvY3VtZW50OjpwbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0CiAgICAgICAgIGNsaWVu
dC0+ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoYXZhaWxhYmxlKTsKIH0K
IAotdm9pZCBEb2N1bWVudDo6ZGlkQ2hvb3NlUGxheWJhY2tUYXJnZXQoY29uc3QgTWVkaWFQbGF5
YmFja1RhcmdldCYgZGV2aWNlKQordm9pZCBEb2N1bWVudDo6ZGlkQ2hvb3NlUGxheWJhY2tUYXJn
ZXQoUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYgZGV2aWNlKQogewogICAgIGZvciAoYXV0byog
Y2xpZW50IDogbV9wbGF5YmFja1RhcmdldENsaWVudHMpCi0gICAgICAgIGNsaWVudC0+ZGlkQ2hv
b3NlUGxheWJhY2tUYXJnZXQoZGV2aWNlKTsKKyAgICAgICAgY2xpZW50LT5kaWRDaG9vc2VQbGF5
YmFja1RhcmdldChkZXZpY2UuY29weVJlZigpKTsKIH0KIAogI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaAkocmV2aXNpb24gMTgyNTQxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMzAsNyArMTIzMCw3IEBAIHB1YmxpYzoKIAogI2lm
IEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAgICAgdm9pZCBzaG93UGxheWJhY2tU
YXJnZXRQaWNrZXIoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYpOwotICAgIHZvaWQgZGlkQ2hvb3Nl
UGxheWJhY2tUYXJnZXQoY29uc3QgTWVkaWFQbGF5YmFja1RhcmdldCYpOworICAgIHZvaWQgZGlk
Q2hvb3NlUGxheWJhY2tUYXJnZXQoUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYpOwogICAgIHZv
aWQgYWRkUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQoTWVkaWFQbGF5YmFja1RhcmdldFBpY2tl
ckNsaWVudCYpOwogICAgIHZvaWQgcmVtb3ZlUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQoTWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudCYpOwogICAgIGJvb2wgcmVxdWlyZXNQbGF5YmFj
a1RhcmdldFJvdXRlTW9uaXRvcmluZygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxODI1NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00ODc4LDExICs0ODc4LDEx
IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZW5xdWV1ZVBsYXliYWNrVGEKICAgICBtX2FzeW5j
RXZlbnRRdWV1ZS5lbnF1ZXVlRXZlbnQoZXZlbnQucmVsZWFzZSgpKTsKIH0KIAotdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjpzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KGNvbnN0IE1lZGlhUGxheWJh
Y2tUYXJnZXQmIGRldmljZSkKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0V2lyZWxlc3NQbGF5
YmFja1RhcmdldChSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJiBkZXZpY2UpCiB7CiAgICAgTE9H
KE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6c2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldCglcCki
LCB0aGlzKTsKICAgICBpZiAobV9wbGF5ZXIpCi0gICAgICAgIG1fcGxheWVyLT5zZXRXaXJlbGVz
c1BsYXliYWNrVGFyZ2V0KGRldmljZSk7CisgICAgICAgIG1fcGxheWVyLT5zZXRXaXJlbGVzc1Bs
YXliYWNrVGFyZ2V0KFdURjo6bW92ZShkZXZpY2UpKTsKIH0KIAogYm9vbCBIVE1MTWVkaWFFbGVt
ZW50OjpjYW5QbGF5VG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0KCkgY29uc3QKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCShyZXZpc2lvbiAxODI1NDEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzYz
LDcgKzM2Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2lyZWxlc3NSb3V0ZXNBdmFp
bGFibGVEaWRDaGFuZ2UoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgY2FuUGxheVRvV2ly
ZWxlc3NQbGF5YmFja1RhcmdldCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBp
c1BsYXlpbmdUb1dpcmVsZXNzUGxheWJhY2tUYXJnZXQoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgc2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChjb25zdCBNZWRpYVBsYXliYWNr
VGFyZ2V0Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNldFdpcmVsZXNzUGxheWJhY2tU
YXJnZXQoUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
dm9pZCBzdGFydFBsYXlpbmdUb1BsYXliYWNrVGFyZ2V0KCkgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCB2b2lkIHN0b3BQbGF5aW5nVG9QbGF5YmFja1RhcmdldCgpIG92ZXJyaWRlOwogI2VuZGlmCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYVNlc3Npb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhU2Vzc2lvbi5jcHAJKHJldmlzaW9uIDE4
MjU0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhU2Vzc2lvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTc2LDcgKzc2LDYgQEAgSFRNTE1lZGlhU2Vzc2lvbjo6SFRNTE1lZGlhU2Vz
c2lvbihNZWRpYQogICAgICwgbV9yZXN0cmljdGlvbnMoTm9SZXN0cmljdGlvbnMpCiAjaWYgRU5B
QkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICAsIG1fdGFyZ2V0QXZhaWxhYmlsaXR5
Q2hhbmdlZFRpbWVyKCp0aGlzLCAmSFRNTE1lZGlhU2Vzc2lvbjo6dGFyZ2V0QXZhaWxhYmlsaXR5
Q2hhbmdlZFRpbWVyRmlyZWQpCi0gICAgLCBtX3BsYXliYWNrVGFyZ2V0KHN0ZDo6bWFrZV91bmlx
dWU8TWVkaWFQbGF5YmFja1RhcmdldD4oKSkKICNlbmRpZgogewogfQpAQCAtMjg2LDExICsyODUs
MTEgQEAgdm9pZCBIVE1MTWVkaWFTZXNzaW9uOjpzZXRIYXNQbGF5YmFja1RhcgogI2VuZGlmCiB9
CiAKLXZvaWQgSFRNTE1lZGlhU2Vzc2lvbjo6ZGlkQ2hvb3NlUGxheWJhY2tUYXJnZXQoY29uc3Qg
TWVkaWFQbGF5YmFja1RhcmdldCYgZGV2aWNlKQordm9pZCBIVE1MTWVkaWFTZXNzaW9uOjpkaWRD
aG9vc2VQbGF5YmFja1RhcmdldChSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJiBkZXZpY2UpCiB7
Ci0gICAgbV9wbGF5YmFja1RhcmdldC0+c2V0RGV2aWNlUGlja2VyQ29udGV4dChkZXZpY2UuZGV2
aWNlUGlja2VyQ29udGV4dCgpKTsKLSAgICBjbGllbnQoKS5zZXRXaXJlbGVzc1BsYXliYWNrVGFy
Z2V0KCptX3BsYXliYWNrVGFyZ2V0LmdldCgpKTsKLSAgICBpZiAoZGV2aWNlLmhhc0FjdGl2ZVJv
dXRlKCkgJiYgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmN1cnJlbnRTZXNz
aW9uKCkgPT0gdGhpcykKKyAgICBtX3BsYXliYWNrVGFyZ2V0ID0gV1RGOjptb3ZlKGRldmljZSk7
CisgICAgY2xpZW50KCkuc2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldCgqbV9wbGF5YmFja1Rhcmdl
dC5jb3B5UmVmKCkpOworICAgIGlmIChtX3BsYXliYWNrVGFyZ2V0LT5oYXNBY3RpdmVSb3V0ZSgp
ICYmIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5jdXJyZW50U2Vzc2lvbigp
ID09IHRoaXMpCiAgICAgICAgIHN0YXJ0UGxheWluZ1RvUGxheWJhY2tUYXJnZXQoKTsKICAgICBl
bHNlCiAgICAgICAgIHN0b3BQbGF5aW5nVG9QbGF5YmFja1RhcmdldCgpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFTZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFTZXNzaW9uLmgJKHJldmlzaW9uIDE4MjU0MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhU2Vzc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQs
NyArMTA0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHRhcmdldEF2YWlsYWJpbGl0eUNoYW5nZWRU
aW1lckZpcmVkKCk7CiAKICAgICAvLyBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50Ci0g
ICAgdmlydHVhbCB2b2lkIGRpZENob29zZVBsYXliYWNrVGFyZ2V0KGNvbnN0IE1lZGlhUGxheWJh
Y2tUYXJnZXQmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hvb3NlUGxheWJhY2tU
YXJnZXQoUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
dm9pZCBleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShib29sKSBjb25zdCBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNQbGF5YmFja1RhcmdldFJvdXRlTW9u
aXRvcmluZygpIGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCkBAIC0xMTMsNyArMTEzLDcgQEAgcHJp
dmF0ZToKIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAgICAgbXV0YWJs
ZSBUaW1lciBtX3RhcmdldEF2YWlsYWJpbGl0eUNoYW5nZWRUaW1lcjsKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8TWVkaWFQbGF5YmFja1RhcmdldD4gbV9wbGF5YmFja1RhcmdldDsKKyAgICBSZWZQdHI8
TWVkaWFQbGF5YmFja1RhcmdldD4gbV9wbGF5YmFja1RhcmdldDsKICAgICBib29sIG1faGFzUGxh
eWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlMaXN0ZW5lcnMgeyBmYWxzZSB9OwogICAgIG11dGFibGUg
Ym9vbCBtX2hhc1BsYXliYWNrVGFyZ2V0cyB7IGZhbHNlIH07CiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcAkocmV2aXNpb24gMTgyNTQxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE0LDkgKzIxNCw2IEBAIFBhZ2U6OlBhZ2UoUGFnZUNv
bmZpZ3VyYXRpb24mIHBhZ2VDb25maWcKICAgICAsIG1fdXNlckNvbnRlbnRDb250cm9sbGVyKFdU
Rjo6bW92ZShwYWdlQ29uZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIpKQogICAgICwg
bV92aXNpdGVkTGlua1N0b3JlKCpXVEY6Om1vdmUocGFnZUNvbmZpZ3VyYXRpb24udmlzaXRlZExp
bmtTdG9yZSkpCiAgICAgLCBtX3Nlc3Npb25JRChTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQo
KSkKLSNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQotICAgICwgbV9wbGF5YmFj
a1RhcmdldChzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUGxheWJhY2tUYXJnZXQ+KCkpCi0jZW5kaWYK
ICAgICAsIG1faXNDbG9zaW5nKGZhbHNlKQogICAgICwgbV9pc1BsYXlpbmdBdWRpbyhmYWxzZSkK
IHsKQEAgLTE2ODYsNiArMTY4MywxNCBAQCB2b2lkIFBhZ2U6OnNldFNlc3Npb25JRChTZXNzaW9u
SUQgc2Vzc2lvCiB9CiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorUmVm
UHRyPE1lZGlhUGxheWJhY2tUYXJnZXQ+IFBhZ2U6OnBsYXliYWNrVGFyZ2V0KCkgY29uc3QKK3sK
KyAgICBpZiAoIW1fcGxheWJhY2tUYXJnZXQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgcmV0dXJuIG1fcGxheWJhY2tUYXJnZXQuY29weVJlZigpOworfQorCiB2b2lkIFBhZ2U6OnNo
b3dQbGF5YmFja1RhcmdldFBpY2tlcihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbG9jYXRpb24s
IGJvb2wgaXNWaWRlbykKIHsKICNpZiBQTEFURk9STShJT1MpCkBAIC0xNjk3LDExICsxNzAyLDEx
IEBAIHZvaWQgUGFnZTo6c2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGNvbnMKICNlbmRpZgogfQog
Ci12b2lkIFBhZ2U6OmRpZENob29zZVBsYXliYWNrVGFyZ2V0KGNvbnN0IE1lZGlhUGxheWJhY2tU
YXJnZXQmIHRhcmdldCkKK3ZvaWQgUGFnZTo6ZGlkQ2hvb3NlUGxheWJhY2tUYXJnZXQoUmVmPE1l
ZGlhUGxheWJhY2tUYXJnZXQ+JiYgdGFyZ2V0KQogewotICAgIG1fcGxheWJhY2tUYXJnZXQtPnNl
dERldmljZVBpY2tlckNvbnRleHQodGFyZ2V0LmRldmljZVBpY2tlckNvbnRleHQoKSk7CisgICAg
bV9wbGF5YmFja1RhcmdldCA9IFdURjo6bW92ZSh0YXJnZXQpOwogICAgIGZvciAoRnJhbWUqIGZy
YW1lID0gJm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNl
TmV4dCgpKQotICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+ZGlkQ2hvb3NlUGxheWJhY2tUYXJn
ZXQodGFyZ2V0KTsKKyAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPmRpZENob29zZVBsYXliYWNr
VGFyZ2V0KCptX3BsYXliYWNrVGFyZ2V0LmNvcHlSZWYoKSk7CiB9CiAKIHZvaWQgUGFnZTo6cGxh
eWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlEaWRDaGFuZ2UoYm9vbCBhdmFpbGFibGUpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuaAkocmV2aXNpb24gMTgyNTQxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQzMCwxMCArNDMwLDEwIEBAIHB1YmxpYzoKICNpZiBFTkFC
TEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAgIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0
UGlja2VyKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgYm9vbCk7CiAgICAgYm9vbCBoYXNXaXJl
bGVzc1BsYXliYWNrVGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9oYXNXaXJlbGVzc1BsYXliYWNr
VGFyZ2V0OyB9Ci0gICAgTWVkaWFQbGF5YmFja1RhcmdldCYgcGxheWJhY2tUYXJnZXQoKSBjb25z
dCB7IHJldHVybiAqbV9wbGF5YmFja1RhcmdldC5nZXQoKTsgfQorICAgIFJlZlB0cjxNZWRpYVBs
YXliYWNrVGFyZ2V0PiBwbGF5YmFja1RhcmdldCgpIGNvbnN0OwogICAgIHZvaWQgY29uZmlndXJl
UGxheWJhY2tUYXJnZXRNb25pdG9yaW5nKCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRp
ZENob29zZVBsYXliYWNrVGFyZ2V0KGNvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXQmKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGRpZENob29zZVBsYXliYWNrVGFyZ2V0KFJlZjxNZWRpYVBsYXli
YWNrVGFyZ2V0PiYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBsYXliYWNrVGFyZ2V0QXZh
aWxhYmlsaXR5RGlkQ2hhbmdlKGJvb2wpOwogI2VuZGlmCiAKQEAgLTU5MCw3ICs1OTAsNyBAQCBw
cml2YXRlOgogICAgIFNlc3Npb25JRCBtX3Nlc3Npb25JRDsKIAogI2lmIEVOQUJMRShXSVJFTEVT
U19QTEFZQkFDS19UQVJHRVQpCi0gICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWJhY2tUYXJn
ZXQ+IG1fcGxheWJhY2tUYXJnZXQ7CisgICAgUmVmUHRyPE1lZGlhUGxheWJhY2tUYXJnZXQ+IG1f
cGxheWJhY2tUYXJnZXQ7CiAgICAgYm9vbCBtX2hhc1dpcmVsZXNzUGxheWJhY2tUYXJnZXQgeyBm
YWxzZSB9OwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01l
ZGlhU2Vzc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L01lZGlhU2Vzc2lvbi5oCShyZXZpc2lvbiAxODI1NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9NZWRpYVNlc3Npb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDcgKzEyNCw3
IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAgICAg
Ly8gTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudAotICAgIHZpcnR1YWwgdm9pZCBkaWRD
aG9vc2VQbGF5YmFja1RhcmdldChjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0Jikgb3ZlcnJpZGUg
eyB9CisgICAgdmlydHVhbCB2b2lkIGRpZENob29zZVBsYXliYWNrVGFyZ2V0KFJlZjxNZWRpYVBs
YXliYWNrVGFyZ2V0PiYmKSBvdmVycmlkZSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZXh0ZXJuYWxP
dXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoYm9vbCkgY29uc3Qgb3ZlcnJpZGUgeyB9CiAg
ICAgdmlydHVhbCBib29sIHJlcXVpcmVzUGxheWJhY2tUYXJnZXRSb3V0ZU1vbml0b3JpbmcoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCkBAIC0xNjksNyArMTY5LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBvdmVycmlkZUJhY2tncm91bmRQbGF5YmFja1Jl
c3RyaWN0aW9uKCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHdpcmVsZXNzUm91dGVz
QXZhaWxhYmxlRGlkQ2hhbmdlKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldFdpcmVsZXNzUGxh
eWJhY2tUYXJnZXQoY29uc3QgTWVkaWFQbGF5YmFja1RhcmdldCYpIHsgfQorICAgIHZpcnR1YWwg
dm9pZCBzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiYm
KSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgY2FuUGxheVRvV2lyZWxlc3NQbGF5YmFja1RhcmdldCgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzUGxheWluZ1RvV2ly
ZWxlc3NQbGF5YmFja1RhcmdldCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVh
bCB2b2lkIHN0YXJ0UGxheWluZ1RvUGxheWJhY2tUYXJnZXQoKSB7IH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWJhY2tUYXJnZXQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXliYWNrVGFyZ2V0
LmgJKHJldmlzaW9uIDE4MjU0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWJhY2tUYXJnZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNDUgKzI4LDI2IEBA
CiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogCi0jaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgotCi0jaWYgUExBVEZPUk0oQ09DT0EpCi1PQkpDX0NMQVNTIE5TS2V5ZWRB
cmNoaXZlcjsKLU9CSkNfQ0xBU1MgTlNLZXllZFVuYXJjaGl2ZXI7Ci1PQkpDX0NMQVNTIEFWT3V0
cHV0Q29udGV4dDsKLSNlbmRpZgorI2luY2x1ZGUgIk1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
LmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0IHsKK2NsYXNzIE1lZGlhUGxheWJhY2tUYXJnZXQg
OiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVBsYXliYWNrVGFyZ2V0PiB7CiBwdWJsaWM6CiAgICAg
dmlydHVhbCB+TWVkaWFQbGF5YmFja1RhcmdldCgpIHsgfQogCi0jaWYgUExBVEZPUk0oQ09DT0Ep
Ci0gICAgV0VCQ09SRV9FWFBPUlQgTWVkaWFQbGF5YmFja1RhcmdldChBVk91dHB1dENvbnRleHQg
KmNvbnRleHQgPSBuaWwpIHsgbV9kZXZpY2VQaWNrZXJDb250ZXh0ID0gY29udGV4dDsgfQotCi0g
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbmNvZGUoTlNLZXllZEFyY2hpdmVyICopIGNvbnN0Owot
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGRlY29kZShOU0tleWVkVW5hcmNoaXZlciAq
LCBNZWRpYVBsYXliYWNrVGFyZ2V0Jik7Ci0KLSAgICB2b2lkIHNldERldmljZVBpY2tlckNvbnRl
eHQoQVZPdXRwdXRDb250ZXh0ICpjb250ZXh0KSB7IG1fZGV2aWNlUGlja2VyQ29udGV4dCA9IGNv
bnRleHQ7IH0KLSAgICBBVk91dHB1dENvbnRleHQgKmRldmljZVBpY2tlckNvbnRleHQoKSBjb25z
dCB7IHJldHVybiBtX2RldmljZVBpY2tlckNvbnRleHQuZ2V0KCk7IH0KKyAgICBlbnVtIFRhcmdl
dFR5cGUgeworICAgICAgICBOb25lLAorICAgICAgICBBVkZvdW5kYXRpb24sCisgICAgfTsKKyAg
ICB2aXJ0dWFsIFRhcmdldFR5cGUgdGFyZ2V0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIE5vbmU7IH0K
IAotI2lmIFBMQVRGT1JNKElPUykKLSAgICBib29sIGhhc0FjdGl2ZVJvdXRlKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KLSNlbHNlCi0gICAgYm9vbCBoYXNBY3RpdmVSb3V0ZSgpIGNvbnN0Owot
I2VuZGlmCi0KLSNlbHNlCi0gICAgdm9pZCBzZXREZXZpY2VQaWNrZXJDb250ZXh0KEFWT3V0cHV0
Q29udGV4dCAqKSB7IH0KLSAgICBBVk91dHB1dENvbnRleHQgKmRldmljZVBpY2tlckNvbnRleHQo
KSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgYm9vbCBoYXNBY3RpdmVSb3V0ZSgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0jZW5kaWYKKyAgICB2aXJ0dWFsIGNvbnN0IE1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0JiB0YXJnZXRDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gTm9NZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dDsgfQorICAgIHZpcnR1YWwgYm9vbCBoYXNBY3RpdmVSb3V0
ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKIHByb3RlY3RlZDoKLSNpZiBQTEFURk9STShD
T0NPQSkKLSAgICBSZXRhaW5QdHI8QVZPdXRwdXRDb250ZXh0PiBtX2RldmljZVBpY2tlckNvbnRl
eHQ7Ci0jZW5kaWYKKyAgICBNZWRpYVBsYXliYWNrVGFyZ2V0KCkgeyB9CiB9OwogCiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2lmbmRlZiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dF9oCisjZGVm
aW5lIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0X2gKKworI2lmIEVOQUJMRShXSVJFTEVTU19Q
TEFZQkFDS19UQVJHRVQpCisKK09CSkNfQ0xBU1MgQVZPdXRwdXRDb250ZXh0OworCisjaWYgUExB
VEZPUk0oQ09DT0EpCitPQkpDX0NMQVNTIE5TS2V5ZWRBcmNoaXZlcjsKK09CSkNfQ0xBU1MgTlNL
ZXllZFVuYXJjaGl2ZXI7CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3Qg
TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQgeworCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBlbmNvZGUoTlNLZXllZEFyY2hpdmVyICopIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGRlY29kZShOU0tleWVkVW5hcmNoaXZlciAqLCBN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYpOworI2VuZGlmCisKKyAgICBlbnVtIENvbnRleHRU
eXBlIHsKKyAgICAgICAgTm9uZSwKKyAgICAgICAgQVZPdXRwdXRDb250ZXh0VHlwZSwKKyAgICB9
IHR5cGU7CisKKyAgICB1bmlvbiB7CisgICAgICAgIEFWT3V0cHV0Q29udGV4dCogYXZPdXRwdXRD
b250ZXh0OworICAgIH0gY29udGV4dDsKK307CisKK2NvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0IE5vTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQgPSB7IE1lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0OjpOb25lLCB7bnVsbHB0cn0gfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKFdJ
UkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKKworI2VuZGlmIC8vIE1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0IApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
YmFja1RhcmdldFBpY2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaAkocmV2aXNpb24gMTgyNTQxKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw4IEBACiAKICNpZiBFTkFCTEUoV0lS
RUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogCisjaW5jbHVkZSA8d3RmL1JlZi5oPgorCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZsb2F0UmVjdDsKQEAgLTQwLDcgKzQyLDcgQEAgcHVibGlj
OgogICAgICAgICB2aXJ0dWFsIH5DbGllbnQoKSB7IH0KIAogICAgIHB1YmxpYzoKLSAgICAgICAg
dmlydHVhbCB2b2lkIGRpZENob29zZVBsYXliYWNrVGFyZ2V0KGNvbnN0IE1lZGlhUGxheWJhY2tU
YXJnZXQmKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDaG9vc2VQbGF5YmFja1Rhcmdl
dChSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoYm9vbCkgPSAwOwogCiAgICAg
ICAgIHZvaWQgaW52YWxpZGF0ZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJD
bGllbnQuaAkocmV2aXNpb24gMTgyNTQxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zOCw3ICszOCw3IEBAIGNsYXNzIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQgewog
cHVibGljOgogICAgIHZpcnR1YWwgfk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQoKSB7
IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDaG9vc2VQbGF5YmFja1RhcmdldChjb25zdCBNZWRp
YVBsYXliYWNrVGFyZ2V0JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRDaG9vc2VQbGF5YmFj
a1RhcmdldChSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShib29sKSBjb25zdCA9IDA7
CiAKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNQbGF5YmFja1RhcmdldFJvdXRlTW9uaXRvcmlu
ZygpIGNvbnN0ID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5jcHAJKHJldmlzaW9uIDE4MjU0MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODgz
LDkgKzg4Myw5IEBAIGJvb2wgTWVkaWFQbGF5ZXI6OmlzUGxheWluZ1RvV2lyZWxlc3NQbGEKICAg
ICByZXR1cm4gbV9wcml2YXRlLT5pc1BsYXlpbmdUb1dpcmVsZXNzUGxheWJhY2tUYXJnZXQoKTsK
IH0KIAotdm9pZCBNZWRpYVBsYXllcjo6c2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChjb25zdCBN
ZWRpYVBsYXliYWNrVGFyZ2V0JiBkZXZpY2UpCit2b2lkIE1lZGlhUGxheWVyOjpzZXRXaXJlbGVz
c1BsYXliYWNrVGFyZ2V0KFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiYmIGRldmljZSkKIHsKLSAg
ICBtX3ByaXZhdGUtPnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoZGV2aWNlKTsKKyAgICBtX3By
aXZhdGUtPnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoV1RGOjptb3ZlKGRldmljZSkpOwogfQog
CiB2b2lkIE1lZGlhUGxheWVyOjpzdGFydFBsYXlpbmdUb1BsYXliYWNrVGFyZ2V0KCkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAkocmV2
aXNpb24gMTgyNTQxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDgxLDcgKzQ4MSw3IEBAIHB1YmxpYzoKIAogICAg
IGJvb2wgY2FuUGxheVRvV2lyZWxlc3NQbGF5YmFja1RhcmdldCgpIGNvbnN0OwogICAgIGJvb2wg
aXNQbGF5aW5nVG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0KCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRX
aXJlbGVzc1BsYXliYWNrVGFyZ2V0KGNvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXQmKTsKKyAgICB2
b2lkIHNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYp
OwogCiAgICAgdm9pZCBzdGFydFBsYXlpbmdUb1BsYXliYWNrVGFyZ2V0KCk7CiAgICAgdm9pZCBz
dG9wUGxheWluZ1RvUGxheWJhY2tUYXJnZXQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCShyZXZpc2lvbiAx
ODI1NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclBy
aXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTcxLDcgKzE3MSw3IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgYm9vbCBjYW5QbGF5VG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0KCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNQbGF5aW5nVG9XaXJlbGVzc1BsYXli
YWNrVGFyZ2V0KCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0V2lyZWxl
c3NQbGF5YmFja1RhcmdldChjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0JikgeyB9CisgICAgdmly
dHVhbCB2b2lkIHNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoUmVmPE1lZGlhUGxheWJhY2tUYXJn
ZXQ+JiYpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0UGxheWluZ1RvUGxheWJhY2tUYXJn
ZXQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc3RvcFBsYXlpbmdUb1BsYXliYWNrVGFyZ2V0KCkg
eyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHRNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0TWFjLm1tCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0TWFjLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dC5oIgorCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdF
VCkgJiYgIVBMQVRGT1JNKElPUykKKworI2ltcG9ydCA8V2ViQ29yZS9BVkZvdW5kYXRpb25TUEku
aD4KKyNpbXBvcnQgPFdlYkNvcmUvU29mdExpbmtpbmcuaD4KKyNpbXBvcnQgPG9iamMvcnVudGlt
ZS5oPgorCitTT0ZUX0xJTktfRlJBTUVXT1JLX09QVElPTkFMKEFWRm91bmRhdGlvbikKK1NPRlRf
TElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWT3V0cHV0Q29udGV4dCkKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBkZXZpY2VDb250ZXh0S2V5ID0gQCJk
ZXZpY2VDb250ZXh0IjsKKwordm9pZCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6ZW5jb2Rl
KE5TS2V5ZWRBcmNoaXZlciAqYXJjaGl2ZXIpIGNvbnN0Cit7CisgICAgQVNTRVJUKHR5cGUgPT0g
QVZPdXRwdXRDb250ZXh0VHlwZSk7CisKKyAgICBpZiAoW2dldEFWT3V0cHV0Q29udGV4dENsYXNz
KCkgY29uZm9ybXNUb1Byb3RvY29sOkBwcm90b2NvbChOU1NlY3VyZUNvZGluZyldKQorICAgICAg
ICBbYXJjaGl2ZXIgZW5jb2RlT2JqZWN0OmNvbnRleHQuYXZPdXRwdXRDb250ZXh0IGZvcktleTpk
ZXZpY2VDb250ZXh0S2V5XTsKK30KKworYm9vbCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6
ZGVjb2RlKE5TS2V5ZWRVbmFyY2hpdmVyICp1bmFyY2hpdmVyLCBNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dCYgcGxheWJhY2tUYXJnZXQpCit7CisgICAgaWYgKCFbZ2V0QVZPdXRwdXRDb250ZXh0
Q2xhc3MoKSBjb25mb3Jtc1RvUHJvdG9jb2w6QHByb3RvY29sKE5TU2VjdXJlQ29kaW5nKV0pCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEFWT3V0cHV0Q29udGV4dCAqY29udGV4dCA9IG5p
bDsKKyAgICBAdHJ5IHsKKyAgICAgICAgY29udGV4dCA9IFt1bmFyY2hpdmVyIGRlY29kZU9iamVj
dE9mQ2xhc3M6Z2V0QVZPdXRwdXRDb250ZXh0Q2xhc3MoKSBmb3JLZXk6ZGV2aWNlQ29udGV4dEtl
eV07CisgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsKKyAgICAgICAgTE9H
X0VSUk9SKCJUaGUgdGFyZ2V0IHBpY2tlciBiZWluZyBkZWNvZGVkIGlzIG5vdCBhIEFWT3V0cHV0
Q29udGV4dC4iKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHBsYXliYWNr
VGFyZ2V0LnR5cGUgPSBBVk91dHB1dENvbnRleHRUeXBlOworICAgIHBsYXliYWNrVGFyZ2V0LmNv
bnRleHQuYXZPdXRwdXRDb250ZXh0ID0gY29udGV4dDsKKworICAgIHJldHVybiB0cnVlOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0lSRUxFU1NfUExB
WUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWJhY2tUYXJnZXRNYWMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
TWVkaWFQbGF5YmFja1RhcmdldE1hYy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWJhY2tUYXJnZXRNYWMuaAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTWVkaWFQbGF5YmFja1RhcmdldE1hY19oCisj
ZGVmaW5lIE1lZGlhUGxheWJhY2tUYXJnZXRNYWNfaAorCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BM
QVlCQUNLX1RBUkdFVCkKKworI2luY2x1ZGUgIk1lZGlhUGxheWJhY2tUYXJnZXQuaCIKKyNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVk
aWFQbGF5YmFja1RhcmdldE1hYyA6IHB1YmxpYyBNZWRpYVBsYXliYWNrVGFyZ2V0IHsKK3B1Ymxp
YzoKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+IGNy
ZWF0ZShBVk91dHB1dENvbnRleHQgKik7CisKKyAgICB2aXJ0dWFsIH5NZWRpYVBsYXliYWNrVGFy
Z2V0TWFjKCk7CisKKyAgICB2aXJ0dWFsIFRhcmdldFR5cGUgdGFyZ2V0VHlwZSgpIGNvbnN0IHsg
cmV0dXJuIEFWRm91bmRhdGlvbjsgfQorCisgICAgdmlydHVhbCBjb25zdCBNZWRpYVBsYXliYWNr
VGFyZ2V0Q29udGV4dCYgdGFyZ2V0Q29udGV4dCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBo
YXNBY3RpdmVSb3V0ZSgpIGNvbnN0OworCisgICAgQVZPdXRwdXRDb250ZXh0ICpvdXRwdXRDb250
ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9vdXRwdXRDb250ZXh0LmdldCgpOyB9CisKK3Byb3RlY3Rl
ZDoKKyAgICBNZWRpYVBsYXliYWNrVGFyZ2V0TWFjKEFWT3V0cHV0Q29udGV4dCAqKTsKKworICAg
IFJldGFpblB0cjxBVk91dHB1dENvbnRleHQ+IG1fb3V0cHV0Q29udGV4dDsKKyAgICBtdXRhYmxl
IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0IG1fY29udGV4dDsKK307CisKK01lZGlhUGxheWJh
Y2tUYXJnZXRNYWMqIHRvTWVkaWFQbGF5YmFja1RhcmdldE1hYyhNZWRpYVBsYXliYWNrVGFyZ2V0
Kik7Citjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0TWFjKiB0b01lZGlhUGxheWJhY2tUYXJnZXRN
YWMoY29uc3QgTWVkaWFQbGF5YmFja1RhcmdldCopOworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUo
V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXliYWNrVGFyZ2V0TWFjLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9NZWRpYVBsYXliYWNrVGFyZ2V0TWFjLm1tCShyZXZpc2lvbiAxODI1NDEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5YmFja1Rh
cmdldE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKICNpbXBv
cnQgImNvbmZpZy5oIgotI2ltcG9ydCAiTWVkaWFQbGF5YmFja1RhcmdldC5oIgorI2ltcG9ydCAi
TWVkaWFQbGF5YmFja1RhcmdldE1hYy5oIgogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNL
X1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPUykKIApAQCAtMzcsMzcgKzM3LDQ1IEBAIFNPRlRfTElO
S19DTEFTUyhBVkZvdW5kYXRpb24sIEFWT3V0cHV0Q28KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1zdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBkZXZpY2VDb250ZXh0S2V5ID0gQCJkZXZpY2VDb250
ZXh0IjsKK1JlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiBNZWRpYVBsYXliYWNrVGFyZ2V0TWFjOjpj
cmVhdGUoQVZPdXRwdXRDb250ZXh0ICpjb250ZXh0KQoreworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IE1lZGlhUGxheWJhY2tUYXJnZXRNYWMoY29udGV4dCkpOworfQogCi12b2lkIE1lZGlhUGxh
eWJhY2tUYXJnZXQ6OmVuY29kZShOU0tleWVkQXJjaGl2ZXIgKmFyY2hpdmVyKSBjb25zdAorTWVk
aWFQbGF5YmFja1RhcmdldE1hYzo6TWVkaWFQbGF5YmFja1RhcmdldE1hYyhBVk91dHB1dENvbnRl
eHQgKmNvbnRleHQpCisgICAgOiBNZWRpYVBsYXliYWNrVGFyZ2V0KCkKKyAgICAsIG1fb3V0cHV0
Q29udGV4dChjb250ZXh0KQogewotICAgIGlmIChbZ2V0QVZPdXRwdXRDb250ZXh0Q2xhc3MoKSBj
b25mb3Jtc1RvUHJvdG9jb2w6QHByb3RvY29sKE5TU2VjdXJlQ29kaW5nKV0pCi0gICAgICAgIFth
cmNoaXZlciBlbmNvZGVPYmplY3Q6bV9kZXZpY2VQaWNrZXJDb250ZXh0LmdldCgpIGZvcktleTpk
ZXZpY2VDb250ZXh0S2V5XTsKIH0KIAotYm9vbCBNZWRpYVBsYXliYWNrVGFyZ2V0OjpkZWNvZGUo
TlNLZXllZFVuYXJjaGl2ZXIgKnVuYXJjaGl2ZXIsIE1lZGlhUGxheWJhY2tUYXJnZXQmIHBsYXli
YWNrVGFyZ2V0KQorTWVkaWFQbGF5YmFja1RhcmdldE1hYzo6fk1lZGlhUGxheWJhY2tUYXJnZXRN
YWMoKQogewotICAgIGlmICghW2dldEFWT3V0cHV0Q29udGV4dENsYXNzKCkgY29uZm9ybXNUb1By
b3RvY29sOkBwcm90b2NvbChOU1NlY3VyZUNvZGluZyldKQotICAgICAgICByZXR1cm4gZmFsc2U7
Cit9CiAKLSAgICBBVk91dHB1dENvbnRleHQgKmNvbnRleHQgPSBuaWw7Ci0gICAgQHRyeSB7Ci0g
ICAgICAgIGNvbnRleHQgPSBbdW5hcmNoaXZlciBkZWNvZGVPYmplY3RPZkNsYXNzOmdldEFWT3V0
cHV0Q29udGV4dENsYXNzKCkgZm9yS2V5OmRldmljZUNvbnRleHRLZXldOwotICAgIH0gQGNhdGNo
IChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7Ci0gICAgICAgIExPR19FUlJPUigiVGhlIHRhcmdl
dCBwaWNrZXIgYmVpbmcgZGVjb2RlZCBpcyBub3QgYSBBVk91dHB1dENvbnRleHQuIik7Ci0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9Citjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dCYgTWVkaWFQbGF5YmFja1RhcmdldE1hYzo6dGFyZ2V0Q29udGV4dCgpIGNvbnN0Cit7CisgICAg
bV9jb250ZXh0LnR5cGUgPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6QVZPdXRwdXRDb250
ZXh0VHlwZTsKKyAgICBtX2NvbnRleHQuY29udGV4dC5hdk91dHB1dENvbnRleHQgPSBtX291dHB1
dENvbnRleHQuZ2V0KCk7CiAKLSAgICBwbGF5YmFja1RhcmdldC5tX2RldmljZVBpY2tlckNvbnRl
eHQgPSBjb250ZXh0OworICAgIHJldHVybiBtX2NvbnRleHQ7Cit9CiAKLSAgICByZXR1cm4gdHJ1
ZTsKK2Jvb2wgTWVkaWFQbGF5YmFja1RhcmdldE1hYzo6aGFzQWN0aXZlUm91dGUoKSBjb25zdAor
eworICAgIHJldHVybiBtX291dHB1dENvbnRleHQgJiYgbV9vdXRwdXRDb250ZXh0LmdldCgpLmRl
dmljZU5hbWU7CiB9CiAKLWJvb2wgTWVkaWFQbGF5YmFja1RhcmdldDo6aGFzQWN0aXZlUm91dGUo
KSBjb25zdAorCitNZWRpYVBsYXliYWNrVGFyZ2V0TWFjKiB0b01lZGlhUGxheWJhY2tUYXJnZXRN
YWMoTWVkaWFQbGF5YmFja1RhcmdldCogcmVwKQogewotICAgIHJldHVybiBtX2RldmljZVBpY2tl
ckNvbnRleHQgJiYgbV9kZXZpY2VQaWNrZXJDb250ZXh0LmdldCgpLmRldmljZU5hbWU7CisgICAg
cmV0dXJuIGNvbnN0X2Nhc3Q8TWVkaWFQbGF5YmFja1RhcmdldE1hYyo+KHRvTWVkaWFQbGF5YmFj
a1RhcmdldE1hYyhjb25zdF9jYXN0PGNvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXQqPihyZXApKSk7
CiB9CiAKK2NvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXRNYWMqIHRvTWVkaWFQbGF5YmFja1Rhcmdl
dE1hYyhjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0KiByZXApCit7CisgICAgQVNTRVJUX1dJVEhf
U0VDVVJJVFlfSU1QTElDQVRJT04ocmVwLT50YXJnZXRUeXBlKCkgPT0gTWVkaWFQbGF5YmFja1Rh
cmdldDo6QVZGb3VuZGF0aW9uKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgTWVkaWFQ
bGF5YmFja1RhcmdldE1hYyo+KHJlcCk7Cit9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyTWFjLm1tCShyZXZpc2lvbiAxODI1NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAjaW1wb3J0IDxXZWJDb3Jl
L0FWRm91bmRhdGlvblNQSS5oPgogI2ltcG9ydCA8V2ViQ29yZS9BVktpdFNQSS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KLSNpbXBvcnQgPFdlYkNvcmUvTWVkaWFQbGF5YmFja1Rh
cmdldC5oPgorI2ltcG9ydCA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0TWFjLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1NvZnRMaW5raW5nLmg+CiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KICNp
bXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CkBAIC0xMzMsMTAgKzEzMyw3IEBAIHZvaWQgTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlck1hYzo6Y3VycmUKICAgICBpZiAoIWRldmljZVBpY2tlcikKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGRldmljZVBpY2tlci5pc0V4dGVybmFsT3V0cHV0RGV2
aWNlUGlja2VkKQotICAgICAgICBtX2NsaWVudC0+ZGlkQ2hvb3NlUGxheWJhY2tUYXJnZXQoV2Vi
Q29yZTo6TWVkaWFQbGF5YmFja1RhcmdldChbZGV2aWNlUGlja2VyIG91dHB1dENvbnRleHRdKSk7
Ci0gICAgZWxzZQotICAgICAgICBtX2NsaWVudC0+ZGlkQ2hvb3NlUGxheWJhY2tUYXJnZXQoV2Vi
Q29yZTo6TWVkaWFQbGF5YmFja1RhcmdldChuaWwpKTsKKyAgICBtX2NsaWVudC0+ZGlkQ2hvb3Nl
UGxheWJhY2tUYXJnZXQoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldE1hYzo6Y3JlYXRlKFtk
ZXZpY2VQaWNrZXIgb3V0cHV0Q29udGV4dF0pKTsKIH0KIAogdm9pZCBNZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyTWFjOjpzdGFydGluZ01vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMuaAkocmV2aXNpb24gMTgyNTQxKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yODIsNyArMjgyLDcgQEAgcHJpdmF0
ZToKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBM
QVRGT1JNKElPUykKLSAgICB2aXJ0dWFsIHZvaWQgc2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChj
b25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNl
dFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYpIG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgdm9pZCBzdGFydFBsYXlpbmdUb1BsYXliYWNrVGFyZ2V0KCkgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHN0b3BQbGF5aW5nVG9QbGF5YmFja1RhcmdldCgpIG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBpc1BsYXlpbmdUb1dpcmVsZXNzUGxheWJhY2tUYXJn
ZXQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQkocmV2aXNpb24gMTgyNTQxKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDcsNyAr
NDcsNyBAQAogI2ltcG9ydCAiT3V0T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oIgogI2ltcG9y
dCAiVVJMLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0ICJNZWRpYVBsYXliYWNrVGFy
Z2V0LmgiCisjaW1wb3J0ICJNZWRpYVBsYXliYWNrVGFyZ2V0TWFjLmgiCiAjaW1wb3J0ICJNZWRp
YVNlbGVjdGlvbkdyb3VwQVZGT2JqQy5oIgogI2ltcG9ydCAiTWVkaWFUaW1lQVZGb3VuZGF0aW9u
LmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVRpbWVSYW5nZXMuaCIKQEAgLTI3NjQsOSArMjc2NCwxMSBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6CiB9CiAKICNpZiAhUExB
VEZPUk0oSU9TKQotdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRX
aXJlbGVzc1BsYXliYWNrVGFyZ2V0KGNvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXQmIHRhcmdldCkK
K3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0V2lyZWxlc3NQbGF5
YmFja1RhcmdldChSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJiB0YXJnZXQpCiB7Ci0gICAgbV9v
dXRwdXRDb250ZXh0ID0gdGFyZ2V0LmRldmljZVBpY2tlckNvbnRleHQoKTsKKyAgICBNZWRpYVBs
YXliYWNrVGFyZ2V0TWFjKiBtYWNUYXJnZXQgPSB0b01lZGlhUGxheWJhY2tUYXJnZXRNYWMoJnRh
cmdldC5nZXQoKSk7CisKKyAgICBtX291dHB1dENvbnRleHQgPSBtYWNUYXJnZXQtPm91dHB1dENv
bnRleHQoKTsKICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjpzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KCVwKSAtIHRhcmdldCA9ICVwIiwgdGhpcywg
bV9vdXRwdXRDb250ZXh0LmdldCgpKTsKIAogICAgIGlmICghbV9vdXRwdXRDb250ZXh0IHx8ICFt
X291dHB1dENvbnRleHQuZ2V0KCkuZGV2aWNlTmFtZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5oCShyZXZpc2lvbiAxODI1NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akMuaAkod29ya2luZyBjb3B5KQpAQCAtMTczLDcgKzE3Myw3IEBAIHByaXZhdGU6CiAKICNpZiBF
TkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAgIHZpcnR1YWwgYm9vbCBpc0N1cnJl
bnRQbGF5YmFja1RhcmdldFN1cHBvcnRlZCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KGNvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXQm
KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChSZWY8TWVkaWFQ
bGF5YmFja1RhcmdldD4mJik7CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0UGxheWluZ1RvUGxheWJh
Y2tUYXJnZXQoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcFBsYXlpbmdUb1BsYXli
YWNrVGFyZ2V0KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB0b2dnbGVQbGF5aW5nVG9QbGF5YmFja1Rh
cmdldCgpOwpAQCAtMjIxLDcgKzIyMSw3IEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBib29sIG1f
bG9hZGluZ1Byb2dyZXNzZWQ7CiAgICAgYm9vbCBtX2hhc0F2YWlsYWJsZVZpZGVvRnJhbWU7CiAj
aWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
TWVkaWFQbGF5YmFja1RhcmdldD4gbV9wbGF5YmFja1RhcmdldDsKKyAgICBSZWZQdHI8TWVkaWFQ
bGF5YmFja1RhcmdldD4gbV9wbGF5YmFja1RhcmdldDsKICAgICBib29sIG1fY3VycmVudFBsYXli
YWNrVGFyZ2V0SXNTdXBwb3J0ZWQgeyB0cnVlIH07CiAjZW5kaWYKIH07CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLm1tCShyZXZpc2lvbiAxODI1NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakMubW0JKHdvcmtpbmcgY29weSkKQEAgLTgxNSwxMSArODE1LDkgQEAgYm9v
bCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iagogICAgIHJldHVybiAhbV9wbGF5
YmFja1RhcmdldC0+aGFzQWN0aXZlUm91dGUoKTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM6OnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoY29uc3QgTWVk
aWFQbGF5YmFja1RhcmdldCYgdGFyZ2V0KQordm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakM6OnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoUmVmPE1lZGlhUGxheWJhY2tU
YXJnZXQ+JiYgdGFyZ2V0KQogewotICAgIGlmICghbV9wbGF5YmFja1RhcmdldCkKLSAgICAgICAg
bV9wbGF5YmFja1RhcmdldCA9IHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5YmFja1RhcmdldD4o
KTsKLSAgICBtX3BsYXliYWNrVGFyZ2V0LT5zZXREZXZpY2VQaWNrZXJDb250ZXh0KHRhcmdldC5k
ZXZpY2VQaWNrZXJDb250ZXh0KCkpOworICAgIG1fcGxheWJhY2tUYXJnZXQgPSBXVEY6Om1vdmUo
dGFyZ2V0KTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6
OnRvZ2dsZVBsYXlpbmdUb1BsYXliYWNrVGFyZ2V0KCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYXNjYWRlQ29jb2EubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhc2NhZGVDb2NvYS5t
bQkocmV2aXNpb24gMTgyNTQxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvRm9udENhc2NhZGVDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjg0LDcgKzI4NCw5
IEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb24KICAgICBpZiAoYW50
aWFsaWFzZWRGb250RGlsYXRpb25FbmFibGVkKCkgJiYgIUNHQ29udGV4dEdldFNob3VsZFNtb290
aEZvbnRzKGNnQ29udGV4dCkgJiYgbWF0Y2hBbnRpYWxpYXNlZEFuZFNtb290aGVkRm9udHMpIHsK
ICAgICAgICAgcmVzZXRBbnRpYWxpYXNpbmdTdHlsZSA9IHRydWU7CiAgICAgICAgIG9sZEFudGlh
bGlhc2luZ1N0eWxlID0gQ0dDb250ZXh0R2V0Rm9udEFudGlhbGlhc2luZ1N0eWxlKGNnQ29udGV4
dCk7Ci0gICAgICAgIENHQ29udGV4dFNldEZvbnRBbnRpYWxpYXNpbmdTdHlsZShjZ0NvbnRleHQs
IGtDR0ZvbnRBbnRpYWxpYXNpbmdTdHlsZUN1c3RvbURpbGF0aW9uKTsKKy8vQEBAQEAKKyAgICAg
ICAgQ0dDb250ZXh0U2V0Rm9udEFudGlhbGlhc2luZ1N0eWxlKGNnQ29udGV4dCwgKDggPDwgNykp
OworLy9AQEBAQCAgICAgICAgQ0dDb250ZXh0U2V0Rm9udEFudGlhbGlhc2luZ1N0eWxlKGNnQ29u
dGV4dCwga0NHRm9udEFudGlhbGlhc2luZ1N0eWxlQ3VzdG9tRGlsYXRpb24pOwogICAgICAgICBD
R0NvbnRleHRTZXRGb250RGlsYXRpb24oY2dDb250ZXh0LCBkaWxhdGlvblNpemVGb3JUZXh0Q29s
b3IoY29udGV4dC0+ZmlsbENvbG9yKCkpKTsKICAgICB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBs
YXllclByaXZhdGVRVEtpdC5oCShyZXZpc2lvbiAxODI1NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQuaAkod29ya2luZyBj
b3B5KQpAQCAtMTgxLDcgKzE4MSw3IEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoV0lSRUxFU1Nf
UExBWUJBQ0tfVEFSR0VUKQogICAgIHZpcnR1YWwgYm9vbCBpc0N1cnJlbnRQbGF5YmFja1Rhcmdl
dFN1cHBvcnRlZCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRXaXJlbGVz
c1BsYXliYWNrVGFyZ2V0KGNvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXQmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4m
Jik7CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0UGxheWluZ1RvUGxheWJhY2tUYXJnZXQoKSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcFBsYXlpbmdUb1BsYXliYWNrVGFyZ2V0KCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCB0b2dnbGVQbGF5aW5nVG9QbGF5YmFja1RhcmdldCgpOwpAQCAtMjE1
LDcgKzIxNSw3IEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBNZWRpYVRpbWUgbV9tYXhUaW1lTG9h
ZGVkQXRMYXN0RGlkTG9hZGluZ1Byb2dyZXNzOwogICAgIG11dGFibGUgRmxvYXRTaXplIG1fY2Fj
aGVkTmF0dXJhbFNpemU7CiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5YmFja1RhcmdldD4gbV9wbGF5YmFja1RhcmdldDsK
KyAgICBSZWZQdHI8TWVkaWFQbGF5YmFja1RhcmdldD4gbV9wbGF5YmFja1RhcmdldDsKICAgICBi
b29sIG1fY3VycmVudFBsYXliYWNrVGFyZ2V0SXNTdXBwb3J0ZWQgeyB0cnVlIH07CiAjZW5kaWYK
IH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5
ZXJQcml2YXRlUVRLaXQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCShyZXZpc2lvbiAxODI1NDEp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2
YXRlUVRLaXQubW0JKHdvcmtpbmcgY29weSkKQEAgLTE1NDksMTEgKzE1NDksOSBAQCBib29sIE1l
ZGlhUGxheWVyUHJpdmF0ZVFUS2l0Ojppc0N1cnJlbnRQCiAgICAgcmV0dXJuICFtX3BsYXliYWNr
VGFyZ2V0LT5oYXNBY3RpdmVSb3V0ZSgpOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFU
S2l0OjpzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KGNvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXQm
IHRhcmdldCkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnNldFdpcmVsZXNzUGxheWJh
Y2tUYXJnZXQoUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYgdGFyZ2V0KQogewotICAgIGlmICgh
bV9wbGF5YmFja1RhcmdldCkKLSAgICAgICAgbV9wbGF5YmFja1RhcmdldCA9IHN0ZDo6bWFrZV91
bmlxdWU8TWVkaWFQbGF5YmFja1RhcmdldD4oKTsKLSAgICBtX3BsYXliYWNrVGFyZ2V0LT5zZXRE
ZXZpY2VQaWNrZXJDb250ZXh0KHRhcmdldC5kZXZpY2VQaWNrZXJDb250ZXh0KCkpOworICAgIG1f
cGxheWJhY2tUYXJnZXQgPSBXVEY6Om1vdmUodGFyZ2V0KTsKIH0KIAogdm9pZCBNZWRpYVBsYXll
clByaXZhdGVRVEtpdDo6dG9nZ2xlUGxheWluZ1RvUGxheWJhY2tUYXJnZXQoKQpJbmRleDogU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkocmV2aXNpb24gMTgyNjA1KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTUtMDQtMDkgIEVyaWMgQ2FybHNvbiAgPGVy
aWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW01hY10gUmVmYWN0b3IgTWVkaWFQbGF5
YmFja1RhcmdldAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQzNTcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgUGFzcyBhIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0IGFjcm9zcyBwcm9jZXNzIGJvdW5k
YXJ5IGluc3RlYWQgb2YgYSBNZWRpYVBsYXliYWNrVGFyZ2V0LgorICAgICAgICAqIFNoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvbWFjL1dlYkNvcmVBcmd1
bWVudENvZGVyc01hYy5tbToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dD46OmVuY29kZSk6IE5ldy4KKyAgICAgICAgKElQQzo6QXJndW1lbnRD
b2RlcjxNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD46OmRlY29kZSk6IE5ldy4KKyAgICAgICAg
KElQQzo6QXJndW1lbnRDb2RlcjxNZWRpYVBsYXliYWNrVGFyZ2V0Pjo6ZW5jb2RlKTogRGVsZXRl
ZC4KKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxNZWRpYVBsYXliYWNrVGFyZ2V0Pjo6ZGVj
b2RlKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDaG9vc2VQbGF5YmFja1RhcmdldCk6IFRh
a2UgYSBSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJi4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OnBsYXliYWNrVGFyZ2V0U2VsZWN0ZWQpOiBUYWtlIGEgUmVmPE1lZGlhUGxheWJh
Y2tUYXJnZXQ+JiYuCisKIDIwMTUtMDQtMDkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBbV0syXVtpT1NdIGVkaXRvclN0YXRlKCkgc2hvdWxkIG5vdCBjYXVzZSBh
IHN5bmNocm9ub3VzIGxheW91dApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaAkocmV2aXNpb24gMTgyNTQxKQorKysgU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNyAr
MTE3LDcgQEAgY2xhc3MgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOwogCiAjaWYgRU5BQkxF
KFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIE1l
ZGlhUGxheWJhY2tUYXJnZXQ7CitzdHJ1Y3QgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ7CiB9
CiAjZW5kaWYKIApAQCAtNDYxLDkgKzQ2MSw5IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50
Q29kZXI8V2ViQ29yZToKIH07CiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VU
KQotdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpNZWRpYVBsYXliYWNr
VGFyZ2V0PiB7Ci0gICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYsIGNvbnN0
IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXQmKTsKLSAgICBzdGF0aWMgYm9vbCBkZWNvZGUo
QXJndW1lbnREZWNvZGVyJiwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldCYpOwordGVtcGxh
dGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dD4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXImLCBjb25zdCBX
ZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYpOworICAgIHN0YXRpYyBib29sIGRl
Y29kZShBcmd1bWVudERlY29kZXImLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dCYpOwogfTsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1dlYkNv
cmVBcmd1bWVudENvZGVyc01hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQkocmV2aXNpb24gMTgyNTQxKQorKysg
U291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdJUkVM
RVNTX1BMQVlCQUNLX1RBUkdFVCkKLSNpbXBvcnQgPFdlYkNvcmUvTWVkaWFQbGF5YmFja1Rhcmdl
dC5oPgorI2ltcG9ydCA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oPgogI2Vu
ZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNDM3LDcgKzQzNyw3IEBAIGJvb2wg
QXJndW1lbnRDb2RlcjxDb250ZW50RmlsdGVyVW5ibG9ja0gKIH0KIAogI2lmIEVOQUJMRShXSVJF
TEVTU19QTEFZQkFDS19UQVJHRVQpCi12b2lkIEFyZ3VtZW50Q29kZXI8TWVkaWFQbGF5YmFja1Rh
cmdldD46OmVuY29kZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIsIGNvbnN0IE1lZGlhUGxheWJh
Y2tUYXJnZXQmIHRhcmdldCkKK3ZvaWQgQXJndW1lbnRDb2RlcjxNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dD46OmVuY29kZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIsIGNvbnN0IE1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0JiB0YXJnZXQpCiB7CiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZURh
dGE+IGRhdGEgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGF0YSBhbGxvY10gaW5pdF0pOwogICAgIFJl
dGFpblB0cjxOU0tleWVkQXJjaGl2ZXI+IGFyY2hpdmVyID0gYWRvcHROUyhbW05TS2V5ZWRBcmNo
aXZlciBhbGxvY10gaW5pdEZvcldyaXRpbmdXaXRoTXV0YWJsZURhdGE6ZGF0YS5nZXQoKV0pOwpA
QCAtNDQ3LDcgKzQ0Nyw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxNZWRpYVBsYXliYWNrVGFyZ2V0
PjoKICAgICBJUEM6OmVuY29kZShlbmNvZGVyLCByZWludGVycHJldF9jYXN0PENGRGF0YVJlZj4o
ZGF0YS5nZXQoKSkpOwogfQogCi1ib29sIEFyZ3VtZW50Q29kZXI8TWVkaWFQbGF5YmFja1Rhcmdl
dD46OmRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIE1lZGlhUGxheWJhY2tUYXJnZXQm
IHRhcmdldCkKK2Jvb2wgQXJndW1lbnRDb2RlcjxNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD46
OmRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250
ZXh0JiB0YXJnZXQpCiB7CiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gZGF0YTsKICAgICBpZiAo
IUlQQzo6ZGVjb2RlKGRlY29kZXIsIGRhdGEpKQpAQCAtNDU1LDcgKzQ1NSw3IEBAIGJvb2wgQXJn
dW1lbnRDb2RlcjxNZWRpYVBsYXliYWNrVGFyZ2V0PjoKIAogICAgIFJldGFpblB0cjxOU0tleWVk
VW5hcmNoaXZlcj4gdW5hcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tleWVkVW5hcmNoaXZlciBhbGxv
Y10gaW5pdEZvclJlYWRpbmdXaXRoRGF0YTooTlNEYXRhICopZGF0YS5nZXQoKV0pOwogICAgIFt1
bmFyY2hpdmVyIHNldFJlcXVpcmVzU2VjdXJlQ29kaW5nOllFU107Ci0gICAgaWYgKCFNZWRpYVBs
YXliYWNrVGFyZ2V0OjpkZWNvZGUodW5hcmNoaXZlci5nZXQoKSwgdGFyZ2V0KSkKKyAgICBpZiAo
IU1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpkZWNvZGUodW5hcmNoaXZlci5nZXQoKSwgdGFy
Z2V0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIFt1bmFyY2hpdmVyIGZpbmlz
aERlY29kaW5nXTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCShyZXZpc2lvbiAxODI1NDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUxLDYgKzE1MSwxMCBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvQ2Fpcm9VdGlsaXRpZXMuaD4KICNlbmRpZgogCisjaWYgRU5BQkxFKFdJUkVMRVNT
X1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPUykKKyNpbmNsdWRlIDxXZWJDb3JlL01l
ZGlhUGxheWJhY2tUYXJnZXQuaD4KKyNlbmRpZgorCiAvLyBUaGlzIGNvbnRyb2xzIHdoYXQgc3Ry
YXRlZ3kgd2UgdXNlIGZvciBtb3VzZSB3aGVlbCBjb2FsZXNjaW5nLgogI2RlZmluZSBNRVJHRV9X
SEVFTF9FVkVOVFMgMQogCkBAIC01NzAyLDEyICs1NzA2LDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpzdG9wTW9uaXRvcmluZ1BsYXliYWMKICAgICBkZXZpY2VQaWNrZXJQcm94eSgpLnN0b3BNb25p
dG9yaW5nUGxheWJhY2tUYXJnZXRzKCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaG9v
c2VQbGF5YmFja1RhcmdldChjb25zdCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0JiB0YXJn
ZXQpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hvb3NlUGxheWJhY2tUYXJnZXQoUmVmPE1lZGlh
UGxheWJhY2tUYXJnZXQ+JiYgdGFyZ2V0KQogewogICAgIGlmICghaXNWYWxpZCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBsYXli
YWNrVGFyZ2V0U2VsZWN0ZWQodGFyZ2V0KSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6UGxheWJhY2tUYXJnZXRTZWxlY3RlZCh0YXJnZXQtPnRhcmdl
dENvbnRleHQoKSksIG1fcGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmV4dGVybmFs
T3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKGJvb2wgYXZhaWxhYmxlKQpJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMTgyNTQxKQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDI0LDcgKzEwMjQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdG9wTW9uaXRvcmluZ1BsYXli
YWNrVGFyZ2V0cygpOwogCiAgICAgLy8gV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldFBpY2tl
cjo6Q2xpZW50Ci0gICAgdmlydHVhbCB2b2lkIGRpZENob29zZVBsYXliYWNrVGFyZ2V0KGNvbnN0
IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXQmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkQ2hvb3NlUGxheWJhY2tUYXJnZXQoUmVmPFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJn
ZXQ+JiYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBleHRlcm5hbE91dHB1dERldmljZUF2
YWlsYWJsZURpZENoYW5nZShib29sKSBvdmVycmlkZTsKICNlbmRpZgogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDE4MjU0MSkK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEyNiw3ICsxMjYsNiBAQCBjbGFzcyBIVE1MUGx1Z0luRWxlbWVudDsKIGNsYXNz
IEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ7CiBjbGFzcyBJbnRQb2ludDsKIGNsYXNzIEtleWJvYXJk
RXZlbnQ7Ci1jbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0OwogY2xhc3MgUGFnZTsKIGNsYXNzIFBy
aW50Q29udGV4dDsKIGNsYXNzIFJhbmdlOwpAQCAtMTM5LDYgKzEzOCw3IEBAIGNsYXNzIFVSTDsK
IGNsYXNzIFZpc2libGVTZWxlY3Rpb247CiBzdHJ1Y3QgSGlnaGxpZ2h0Owogc3RydWN0IEtleXBy
ZXNzQ29tbWFuZDsKK3N0cnVjdCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDsKIHN0cnVjdCBU
ZXh0Q2hlY2tpbmdSZXN1bHQ7CiB9CiAKQEAgLTExMDMsNyArMTEwMyw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBzZXRTaG91bGREaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudHMoYm9vbCBkaXNwYXRj
aCkgeyBtX3Nob3VsZERpc3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50cyA9IGRpc3BhdGNoOyB9CiAK
ICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TKQot
ICAgIHZvaWQgcGxheWJhY2tUYXJnZXRTZWxlY3RlZChjb25zdCBXZWJDb3JlOjpNZWRpYVBsYXli
YWNrVGFyZ2V0JiBvdXRwdXREZXZpY2UpIGNvbnN0OworICAgIHZvaWQgcGxheWJhY2tUYXJnZXRT
ZWxlY3RlZChjb25zdCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYgb3V0cHV0
RGV2aWNlKSBjb25zdDsKICAgICB2b2lkIHBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RGlkQ2hh
bmdlKGJvb2wpOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxODI1NDEpCisr
KyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgko
d29ya2luZyBjb3B5KQpAQCAtNDE4LDcgKzQxOCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVn
YWN5UmVjZWl2ZXIgewogICAgIFNldFNob3VsZERpc3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50cyhi
b29sIHNob3VsZERpc3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50cykKIAogI2lmIEVOQUJMRShXSVJF
TEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1MpCi0gICAgUGxheWJhY2tUYXJn
ZXRTZWxlY3RlZChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0IHRhcmdldCkKKyAgICBQbGF5
YmFja1RhcmdldFNlbGVjdGVkKHN0cnVjdCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dCB0YXJnZXQpCiAgICAgUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlEaWRDaGFuZ2UoYm9v
bCBhdmFpbGFibGUpCiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQkocmV2aXNpb24gMTgyNTQxKQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC04OCw3ICs4OCw3IEBACiAjaW1wb3J0IDxXZWJLaXRTeXN0ZW1JbnRlcmZh
Y2UuaD4KIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCi0jaW5jbHVkZSA8
V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBs
YXliYWNrVGFyZ2V0TWFjLmg+CiAjZW5kaWYKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBA
IC0xMjQ3LDkgKzEyNDcsMTEgQEAgdm9pZCBXZWJQYWdlOjpzZXRGb250KGNvbnN0IFN0cmluZyYg
Zm9udAogfQogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRG
T1JNKElPUykKLXZvaWQgV2ViUGFnZTo6cGxheWJhY2tUYXJnZXRTZWxlY3RlZChjb25zdCBXZWJD
b3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0JiBwbGF5YmFja1RhcmdldCkgY29uc3QKK3ZvaWQgV2Vi
UGFnZTo6cGxheWJhY2tUYXJnZXRTZWxlY3RlZChjb25zdCBXZWJDb3JlOjpNZWRpYVBsYXliYWNr
VGFyZ2V0Q29udGV4dCYgdGFyZ2V0Q29udGV4dCkgY29uc3QKIHsKLSAgICBtX3BhZ2UtPmRpZENo
b29zZVBsYXliYWNrVGFyZ2V0KHBsYXliYWNrVGFyZ2V0KTsKKyAgICBBU1NFUlQodGFyZ2V0Q29u
dGV4dC50eXBlID09IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpBVk91dHB1dENvbnRleHRU
eXBlKTsKKworICAgIG1fcGFnZS0+ZGlkQ2hvb3NlUGxheWJhY2tUYXJnZXQoV2ViQ29yZTo6TWVk
aWFQbGF5YmFja1RhcmdldE1hYzo6Y3JlYXRlKHRhcmdldENvbnRleHQuY29udGV4dC5hdk91dHB1
dENvbnRleHQpKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpwbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0
eURpZENoYW5nZShib29sIGNoYW5nZWQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAx
ODI2MDUpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNCBAQAorMjAxNS0wNC0wOSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFw
cGxlLmNvbT4KKworICAgICAgICBbTWFjXSBSZWZhY3RvciBNZWRpYVBsYXliYWNrVGFyZ2V0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDM1NzEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcv
V2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViTWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlci5tbToKKyAgICAgICAgKFdlYk1lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXI6OmRpZENob29zZVBsYXliYWNrVGFyZ2V0KTogVGFrZSBhIFJlZjxNZWRpYVBsYXli
YWNrVGFyZ2V0PiYmLgorCiAyMDE1LTA0LTA5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgW1dLMl1baU9TXSBlZGl0b3JTdGF0ZSgpIHNob3VsZCBub3QgY2F1c2Ug
YSBzeW5jaHJvbm91cyBsYXlvdXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5oCShyZXZpc2lvbiAxODI1
NDEpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzdG9wTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cygpOwogCiAgICAgLy8gV2ViQ29yZTo6TWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlcjo6Q2xpZW50Ci0gICAgdmlydHVhbCB2b2lkIGRpZENob29z
ZVBsYXliYWNrVGFyZ2V0KGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXQmKSBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hvb3NlUGxheWJhY2tUYXJnZXQoUmVmPFdlYkNv
cmU6Ok1lZGlhUGxheWJhY2tUYXJnZXQ+JiYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBl
eHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShib29sKSBvdmVycmlkZTsKIAog
ICAgIHZvaWQgaW52YWxpZGF0ZSgpOwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5tbQkocmV2aXNpb24g
MTgyNTQxKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01NSwxMiArNTUsMTIgQEAgdm9pZCBXZWJN
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyOjpzdG9wTQogICAgIHRhcmdldFBpY2tlcigpLnN0b3BN
b25pdG9yaW5nUGxheWJhY2tUYXJnZXRzKCk7CiB9CiAKLXZvaWQgV2ViTWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlcjo6ZGlkQ2hvb3NlUGxheWJhY2tUYXJnZXQoY29uc3QgV2ViQ29yZTo6TWVkaWFQ
bGF5YmFja1RhcmdldCYgdGFyZ2V0KQordm9pZCBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
OjpkaWRDaG9vc2VQbGF5YmFja1RhcmdldChSZWY8V2ViQ29yZTo6TWVkaWFQbGF5YmFja1Rhcmdl
dD4mJiB0YXJnZXQpCiB7CiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAg
IG1fcGFnZS0+ZGlkQ2hvb3NlUGxheWJhY2tUYXJnZXQodGFyZ2V0KTsKKyAgICBtX3BhZ2UtPmRp
ZENob29zZVBsYXliYWNrVGFyZ2V0KFdURjo6bW92ZSh0YXJnZXQpKTsKIH0KIAogdm9pZCBXZWJN
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyOjpleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURp
ZENoYW5nZShib29sIGF2YWlsYWJsZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250470</attachid>
            <date>2015-04-09 14:51:17 -0700</date>
            <delta_ts>2015-04-10 07:34:29 -0700</delta_ts>
            <desc>Updated patch.</desc>
            <filename>use_ref_ptr_patch_5.txt</filename>
            <type>text/plain</type>
            <size>62630</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MjYwNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkxIEBACisyMDE1LTA0LTA5ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIFJlZmFjdG9y
IE1lZGlhUGxheWJhY2tUYXJnZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0MzU3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YWRkUGxh
eWJhY2tUYXJnZXRQaWNrZXJDbGllbnQpOiBEb24ndCBjYWxsIGNsaWVudCBpZiBwYWdlIHBsYXli
YWNrIHRhcmdldAorICAgICAgICAgICAgaXMgTlVMTC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpkaWRDaG9vc2VQbGF5YmFja1RhcmdldCk6IE1lZGlhUGxheWJhY2tUYXJnZXQgaXMgcGFz
c2VkIGFzIGEgUmVmPD4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKworICAgICAgICAqIGh0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjpzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KTogTWVkaWFQbGF5YmFja1RhcmdldCBpcyBw
YXNzZWQgYXMgYSBSZWY8PgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorCisg
ICAgICAgICogaHRtbC9IVE1MTWVkaWFTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYVNlc3Npb246OkhUTUxNZWRpYVNlc3Npb24pOiBEb24ndCBpbml0aWFsaXplIG1fcGxh
eWJhY2tUYXJnZXQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFTZXNzaW9uOjpkaWRDaG9v
c2VQbGF5YmFja1RhcmdldCk6IE1lZGlhUGxheWJhY2tUYXJnZXQgaXMgcGFzc2VkIGFzIGEgUmVm
PD4KKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYVNlc3Npb24uaDoKKworICAgICAgICAqIHBhZ2Uv
UGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpQYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OlBhZ2U6OnBsYXliYWNrVGFyZ2V0KTogbV9wbGF5YmFja1RhcmdldCBpcyBhIFJlZlB0cjxN
ZWRpYVBsYXliYWNrVGFyZ2V0PgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6ZGlkQ2hvb3NlUGxh
eWJhY2tUYXJnZXQpOiBEaXR0by4KKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKworICAgICAgICAq
IHBsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbi5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
ZXNzaW9uQ2xpZW50OjpzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KTogVGFrZSBhIFJlZjxNZWRp
YVBsYXliYWNrVGFyZ2V0PiYmLgorCisgICAgICAgIE1ha2UgTWVkaWFQbGF5YmFja1RhcmdldCBS
ZWZDb3VudGVkLCBhbmQgZG9uJ3QgcmVxdWlyZSBpdCB0byBiZSBzZXJpYWxpemFibGUgc28gaXQg
Y2FuIGJlCisgICAgICAgIHN1YmNsYXNzZWQgdG8ga2VlcCBwb3J0LXNwZWNpZmljIGlmb3JtYXRp
b24gb3V0IG9mIHRoZSBiYXNlIGNsYXNzLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWJhY2tUYXJnZXQuaDogCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFy
Z2V0Ojp0YXJnZXRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXQ6
OnRhcmdldENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldDo6
aGFzQWN0aXZlUm91dGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldDo6
TWVkaWFQbGF5YmFja1RhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFy
Z2V0OjpzZXREZXZpY2VQaWNrZXJDb250ZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWJhY2tUYXJnZXQ6OmRldmljZVBpY2tlckNvbnRleHQpOiBEZWxldGVkLgorCisg
ICAgICAgIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0IGlzIHRoZSBzdHJ1Y3QgdGhhdCBpcyBz
ZXJpYWxpemVkIHRvIHBhc3MgYWNyb3NzIHRoZSBwcm9jZXNzIGJvdWRhcnkuCisgICAgICAgIEl0
IGhhcyB1bmlvbiB0byBob2xkIHBvcnQtc3BlY2lmaWMgZGF0YS4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oOiBBZGRlZC4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaDogZGlkQ2hv
b3NlUGxheWJhY2tUYXJnZXQgdGFrZXMgYSBSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQu
aDogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQp
OiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmg6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U6OnNldFdpcmVsZXNzUGxheWJh
Y2tUYXJnZXQpOgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0TWFjLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjplbmNvZGUpOiBFbmNvZGUgdGhlIGF2T3V0cHV0
Q29udGV4dC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Ojpk
ZWNvZGUpOiBEZWNvZGUgdGhlIGF2T3V0cHV0Q29udGV4dC4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXliYWNrVGFyZ2V0TWFjLmg6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldE1hYzo6dGFyZ2V0VHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0TWFjOjpvdXRwdXRDb250ZXh0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5YmFja1Rh
cmdldE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRNYWM6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0TWFjOjpNZWRpYVBs
YXliYWNrVGFyZ2V0TWFjKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRN
YWM6On5NZWRpYVBsYXliYWNrVGFyZ2V0TWFjKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWJhY2tUYXJnZXRNYWM6OnRhcmdldENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5YmFja1RhcmdldE1hYzo6aGFzQWN0aXZlUm91dGUpOgorICAgICAgICAoV2ViQ29yZTo6dG9N
ZWRpYVBsYXliYWNrVGFyZ2V0TWFjKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tU
YXJnZXQ6OmVuY29kZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNr
VGFyZ2V0OjpkZWNvZGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFj
a1RhcmdldDo6aGFzQWN0aXZlUm91dGUpOiBEZWxldGVkLgorCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNYWM6OmN1cnJl
bnREZXZpY2VEaWRDaGFuZ2UpOiBBbGxvY2F0ZSBhbmQgcGFzcyBhIE1lZGlhUGxheWJhY2tUYXJn
ZXRNYWMKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmg6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6c2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldCk6IFRha2UgYSBSZWY8TWVkaWFQbGF5YmFj
a1RhcmdldCYmCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakM6OnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQpOiBEaXR0by4KKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5t
bToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpzZXRXaXJlbGVz
c1BsYXliYWNrVGFyZ2V0KTogRGl0dG8uCisKIDIwMTUtMDQtMDkgIFNpbW9uIEZyYXNlciAgPHNp
bW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2ZXJ0IHBhcnQgb2YgMTgyNTE2OiBp
dCBicm9rZSB0ZXN0cwpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTgyNjA3KQorKysgU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEs
NiArMTIxLDggQEAKIAkJMDcxMTU4OTExN0RGNkY2NjAwRURGRTJCIC8qIE1lZGlhU3RyZWFtUHJp
dmF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
NzExNTg4RjE3REY2MzM3MDBFREZFMkIgLyogTWVkaWFTdHJlYW1Qcml2YXRlLmNwcCAqLzsgfTsK
IAkJMDcxQTlFQzIxNjhGQkM0MzAwMjYyOUY5IC8qIFRleHRUcmFja0N1ZUdlbmVyaWMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcxQTlFQzAxNjhG
QjU2QzAwMjYyOUY5IC8qIFRleHRUcmFja0N1ZUdlbmVyaWMuY3BwICovOyB9OwogCQkwNzFBOUVD
MzE2OEZCQzU1MDAyNjI5RjkgLyogVGV4dFRyYWNrQ3VlR2VuZXJpYy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcxQTlFQzExNjhGQjU2QzAwMjYyOUY5
IC8qIFRleHRUcmFja0N1ZUdlbmVyaWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQkwNzFFNDk2RTFBRDVBQTBEMDA4QTUwQjQgLyogTWVkaWFQbGF5
YmFja1RhcmdldE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA3MUU0OTZEMUFENUFBMEQwMDhBNTBCNCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0TWFj
Lm1tICovOyB9OworCQkwNzFFNDk3MDFBRDVBQjVFMDA4QTUwQjQgLyogTWVkaWFQbGF5YmFja1Rh
cmdldE1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDcxRTQ5NkYxQUQ1QUI1RTAwOEE1MEI0IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRNYWMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwNzIwQjBBMDE0
RDMzMjM1MDA2NDI5NTUgLyogR2VuZXJpY0V2ZW50UXVldWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcyMEIwOUUxNEQzMzIzNTAwNjQyOTU1IC8q
IEdlbmVyaWNFdmVudFF1ZXVlLmNwcCAqLzsgfTsKIAkJMDcyMEIwQTExNEQzMzIzNTAwNjQyOTU1
IC8qIEdlbmVyaWNFdmVudFF1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwNzIwQjA5RjE0RDMzMjM1MDA2NDI5NTUgLyogR2VuZXJpY0V2ZW50UXVl
dWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
NzI3N0U0QzE3RDAxOENDMDAxNTUzNEQgLyogSlNNZWRpYVN0cmVhbS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzI3N0U0MDE3RDAxOENDMDAxNTUz
NEQgLyogSlNNZWRpYVN0cmVhbS5jcHAgKi87IH07CkBAIC0xNzUsNyArMTc3LDcgQEAKIAkJMDc0
RTgyQkIxOEE2OUYwRTAwN0VGNTRDIC8qIFBsYXRmb3JtVGltZVJhbmdlcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc0RTgyQjkxOEE2OUYwRTAwN0VG
NTRDIC8qIFBsYXRmb3JtVGltZVJhbmdlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTA3NTM4NjAyMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRU
ZXh0VHJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDc1Mzg2MDAxNDQ4OUU5ODAwQjc4NDUyIC8qIENhY2hlZFRleHRUcmFjay5jcHAgKi87IH07
CiAJCTA3NTM4NjAzMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRUZXh0VHJhY2suaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NTM4NjAxMTQ0ODlFOTgw
MEI3ODQ1MiAvKiBDYWNoZWRUZXh0VHJhY2suaCAqLzsgfTsKLQkJMDc2MEMxN0ExQUE4RkM3RDAw
OUVEN0I4IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0UzREZEMjFBOUU3OEE1MDA3NjRDQTggLyogTWVk
aWFQbGF5YmFja1RhcmdldE1hYy5tbSAqLzsgfTsKKwkJMDc2MEMxN0ExQUE4RkM3RDAwOUVEN0I4
IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdFM0RGRDIxQTlFNzhBNTAwNzY0Q0E4IC8qIE1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0TWFjLm1tICovOyB9OwogCQkwNzYzMDZEMDE3RTE0NzhE
MDA1QTdDNEUgLyogTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNDYWxsYmFjay5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2MzA2Q0MxN0UxNDc4RDAwNUE3
QzRFIC8qIE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzQ2FsbGJhY2suaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwNzYzMDZEMjE3RTE0NzhEMDA1QTdD
NEUgLyogTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NjMwNkNFMTdFMTQ3OEQwMDVBN0M0RSAv
KiBNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3QuY3BwICovOyB9OwogCQkwNzYzMDZEMzE3
RTE0NzhEMDA1QTdDNEUgLyogTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzYzMDZDRjE3RTE0NzhE
MDA1QTdDNEUgLyogTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM1MCw2ICszNTIsNyBAQAog
CQkwN0VEQzNFRTFBQUNCNzVEMDA5ODNFQjUgLyogTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0VEQzNFRDFB
QUNCNzVEMDA5ODNFQjUgLyogTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAgKi87IH07CiAJCTA3
RjBCOTdBMUFDNURCMzMwMEU1MzVEOSAvKiBBVktpdFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdGMEI5NzkxQUM1REIzMzAwRTUzNUQ5IC8qIEFW
S2l0U1BJLmggKi87IH07CiAJCTA3RjBCOTdDMUFDNURCNDYwMEU1MzVEOSAvKiBBVkZvdW5kYXRp
b25TUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3
RjBCOTdCMUFDNURCNDYwMEU1MzVEOSAvKiBBVkZvdW5kYXRpb25TUEkuaCAqLzsgfTsKKwkJMDdG
ODc2ODQxQUQ1ODBGOTAwOTA1ODQ5IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0Y4NzY4MzFBRDRB
OTQ1MDA5MDU4NDkgLyogTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwN0Y5NDQxNjE4NjREMDQ2MDA1
RDMxQ0IgLyogTWVkaWFTZXNzaW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBRThDMDgxNzQ2Qjk1NzAwNTMyRDc4IC8qIE1lZGlhU2Vz
c2lvbk1hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwN0ZCREUyQzE4RkVEMTc4MDAxQTdDRkYgLyogSlNEYXRhQ3VlQ3VzdG9tLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RkJERTJCMThG
RUQxNzgwMDFBN0NGRiAvKiBKU0RhdGFDdWVDdXN0b20uY3BwICovOyB9OwogCQkwN0ZFOTlEQzE4
ODA3QTdEMDAyNTY2NDggLyogSFRNTE1lZGlhU2Vzc2lvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0ZFOTlEQTE4ODA3QTdEMDAyNTY2NDggLyog
SFRNTE1lZGlhU2Vzc2lvbi5jcHAgKi87IH07CkBAIC03MTIwLDYgKzcxMjMsOCBAQAogCQkwNzEx
NTg4RjE3REY2MzM3MDBFREZFMkIgLyogTWVkaWFTdHJlYW1Qcml2YXRlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhU3RyZWFtUHJpdmF0ZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MUE5RUMwMTY4RkI1NkMwMDI2MjlGOSAvKiBUZXh0
VHJhY2tDdWVHZW5lcmljLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFRleHRUcmFja0N1ZUdlbmVyaWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
NzFBOUVDMTE2OEZCNTZDMDAyNjI5RjkgLyogVGV4dFRyYWNrQ3VlR2VuZXJpYy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0VHJhY2tDdWVHZW5lcmljLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MUU0OTZEMUFENUFBMEQwMDhBNTBCNCAvKiBNZWRpYVBs
YXliYWNrVGFyZ2V0TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gTWVkaWFQbGF5YmFja1RhcmdldE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMDcxRTQ5NkYxQUQ1QUI1RTAwOEE1MEI0IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRNYWMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFQbGF5YmFja1RhcmdldE1hYy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzIwQjA5RTE0RDMzMjM1MDA2NDI5NTUg
LyogR2VuZXJpY0V2ZW50UXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gR2VuZXJpY0V2ZW50UXVldWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwNzIwQjA5RjE0RDMzMjM1MDA2NDI5NTUgLyogR2VuZXJpY0V2ZW50UXVldWUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJpY0V2ZW50UXVldWUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcyMjFCNEExN0NFQzMyNzAwODQ4RTUxIC8qIE1lZGlhQ29u
c3RyYWludHNJbXBsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1l
ZGlhQ29uc3RyYWludHNJbXBsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcz
ODMsMTIgKzczODgsMTMgQEAKIAkJMDdFMTE2QjAxNDg5QzlBMTAwRUM1QUNFIC8qIEpTVGV4dFRy
YWNrQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVGV4
dFRyYWNrQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdFMTE3MDYx
NDg5RUJFQjAwRUM1QUNFIC8qIEpTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdFM0RGRDAxQTlFNzg2NTAwNzY0Q0E4IC8qIE1lZGlh
UGxheWJhY2tUYXJnZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFQ
bGF5YmFja1RhcmdldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwN0UzREZEMjFB
OUU3OEE1MDA3NjRDQTggLyogTWVkaWFQbGF5YmFja1RhcmdldE1hYy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IE1lZGlhUGxheWJhY2tUYXJnZXRNYWMubW07IHBh
dGggPSBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5YmFja1RhcmdldE1h
Yy5tbTsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQkwN0UzREZEMjFBOUU3OEE1MDA3
NjRDQTggLyogTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHRNYWMubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dE1hYy5t
bTsgcGF0aCA9IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dE1hYy5tbTsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQkwN0U5RTEy
RDE4RjVFMjc2MDAxMUEzQTQgLyogSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluYmFuZE1ldGFkYXRhVGV4dFRyYWNr
UHJpdmF0ZUFWRi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0U5RTEyRjE4RjYy
QjM3MDAxMUEzQTQgLyogSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluYmFuZE1ldGFkYXRhVGV4dFRyYWNr
UHJpdmF0ZUFWRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3RURDM0VEMUFB
Q0I3NUQwMDk4M0VCNSAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0YwQjk3OTFBQzVEQjMzMDBFNTM1RDkgLyogQVZL
aXRTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVZLaXRTUEkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdGMEI5N0IxQUM1REI0NjAwRTUzNUQ5IC8qIEFW
Rm91bmRhdGlvblNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBVkZvdW5k
YXRpb25TUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDdGODc2ODMxQUQ0QTk0
NTAwOTA1ODQ5IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3RkJERTJCMThGRUQxNzgwMDFBN0NGRiAvKiBKU0RhdGFD
dWVDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEYXRh
Q3VlQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdGRTk5REExODgw
N0E3RDAwMjU2NjQ4IC8qIEhUTUxNZWRpYVNlc3Npb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSFRNTE1lZGlhU2Vzc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTA3RkU5OURCMTg4MDdBN0QwMDI1NjY0OCAvKiBIVE1MTWVkaWFTZXNzaW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxNZWRpYVNlc3Npb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0NzQ4LDYgKzE0NzU0LDggQEAKIAkJMDc2
RjBEMDgxMkI4MTkyNzAwQzI2QUE0IC8qIGF2Zm91bmRhdGlvbiAqLyA9IHsKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMDcxRTQ5NkYxQUQ1QUI1RTAwOEE1MEI0IC8q
IE1lZGlhUGxheWJhY2tUYXJnZXRNYWMuaCAqLywKKwkJCQkwNzFFNDk2RDFBRDVBQTBEMDA4QTUw
QjQgLyogTWVkaWFQbGF5YmFja1RhcmdldE1hYy5tbSAqLywKIAkJCQlERjlBRkQ2RjEzRkMzMUIw
MDAxNUZFQjcgLyogb2JqYyAqLywKIAkJCQlDREUzQTg1MjE3RjVGQ0U2MDBDNUJFMjAgLyogQXVk
aW9UcmFja1ByaXZhdGVBVkYuaCAqLywKIAkJCQkwN0U5RTEyRjE4RjYyQjM3MDAxMUEzQTQgLyog
SW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmNwcCAqLywKQEAgLTE0NzU2LDcgKzE0
NzY0LDcgQEAKIAkJCQkwN0I0NDJENTE2NkM3MEIwMDA1NTZDQUQgLyogSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUFWRi5oICovLAogCQkJCTA3OEU0M0RCMUFCQjZGNkYwMDFDMkZBNiAvKiBNZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyTWFjLmggKi8sCiAJCQkJMDc4RTQzREMxQUJCNkY2RjAwMUMyRkE2
IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNYWMubW0gKi8sCi0JCQkJMDdFM0RGRDIxQTlF
NzhBNTAwNzY0Q0E4IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRNYWMubW0gKi8sCisJCQkJMDdFM0RG
RDIxQTlFNzhBNTAwNzY0Q0E4IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0TWFjLm1tICov
LAogCQkJCTA3NkYwRDA5MTJCODE5MjcwMEMyNkFBNCAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb24uY3BwICovLAogCQkJCTA3NkYwRDBBMTJCODE5MjcwMEMyNkFBNCAvKiBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb24uaCAqLywKIAkJCQlDRDY0MUVCRDE4MTlCMzU5MDBFRTRD
NDEgLyogTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmNwcCAqLywKQEAgLTIwODE2LDYgKzIwODI0LDcg
QEAKIAkJCQkxNDFEQzA0RTE2NDgzNEI5MDAzNzFFNUEgLyogTGF5b3V0U2l6ZS5oICovLAogCQkJ
CTZDNTY4Q0FFMTlEQUZFQTAwMDQzMENBMiAvKiBNYXNrSW1hZ2VPcGVyYXRpb24uY3BwICovLAog
CQkJCTZDNTY4Q0FGMTlEQUZFQTAwMDQzMENBMiAvKiBNYXNrSW1hZ2VPcGVyYXRpb24uaCAqLywK
KwkJCQkwN0Y4NzY4MzFBRDRBOTQ1MDA5MDU4NDkgLyogTWVkaWFQbGF5YmFja1RhcmdldENvbnRl
eHQuaCAqLywKIAkJCQkwNzhFNDNENzFBQkI2QzdFMDAxQzJGQTYgLyogTWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlci5jcHAgKi8sCiAJCQkJMDc4RTQzRDgxQUJCNkM3RTAwMUMyRkE2IC8qIE1lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXIuaCAqLywKIAkJCQkwNzkyMTY1MzFBQTU2MEFBMDBBM0MwNDkg
LyogTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudC5oICovLApAQCAtMjU0NzAsNiArMjU0
NzksNyBAQAogCQkJCUIyRkEzRDlEMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR0dyYWRpZW50RWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0JFNzQyNzM4MUZBOTA2RkJCNEYwRjJDIC8qIEpT
U1ZHR3JhcGhpY3NFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NDg1MjI3QzExOTAxNjJD
MDA2RURDN0YgLyogSlNTVkdIS2VybkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3Rjg3
Njg0MUFENTgwRjkwMDkwNTg0OSAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQjJGQTNEOUYwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHSW1hZ2VFbGVt
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0RBMTBBQjc1QTZGMDAwRTVBQzQgLyogSlNT
VkdMZW5ndGguaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzREEzMEFCNzVBNkYwMDBFNUFDNCAv
KiBKU1NWR0xlbmd0aExpc3QuaCBpbiBIZWFkZXJzICovLApAQCAtMjU3MjAsNiArMjU3MzAsNyBA
QAogCQkJCUNEQzhCNUEzMTgwNDYzNDcwMDE2RTY4NSAvKiBNZWRpYVBsYXllclByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakMuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0NDYxM0U2MENENjgxQTkwMEZB
REE3NSAvKiBNZWRpYVBsYXllclByaXZhdGVRVEtpdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEUx
OTU5MkEwQTM5REFDQzAwMjIwRkU1IC8qIE1lZGlhUXVlcnkuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTA3MUU0OTcwMUFENUFCNUUwMDhBNTBCNCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0TWFjLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0RTE5NTkyQzBBMzlEQUNDMDAyMjBGRTUgLyogTWVkaWFRdWVyeUV2
YWx1YXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEUxOTU5MkUwQTM5REFDQzAwMjIwRkU1IC8q
IE1lZGlhUXVlcnlFeHAuaCBpbiBIZWFkZXJzICovLAogCQkJCUQzQTk0QTM5MTIyREFCQUMwMEEz
N0JCQyAvKiBNZWRpYVF1ZXJ5TGlzdC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODA3NSw3ICsyODA4
Niw3IEBACiAJCQkJOUJBQjZDNkQxMjU1MDYzMTAwMTYyNkQ0IC8qIEVkaXRpbmdTdHlsZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk0QjMwNDNDQzBBRTAzNzNCMDBBODI2NDcgLyogRWRpdG9yLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTkzQTM4QjRCMEQwRTU4MDgwMDY4NzJDMiAvKiBFZGl0b3JD
b21tYW5kLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTA3NjBDMTdBMUFBOEZDN0QwMDlFRDdCOCAv
KiBNZWRpYVBsYXliYWNrVGFyZ2V0TWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMDc2MEMxN0Ex
QUE4RkM3RDAwOUVEN0I4IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0TWFjLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJRkVEMTNEM0EwQ0VBOTM0NjAwRDg5NDY2IC8qIEVkaXRvcklPUy5tbSBp
biBTb3VyY2VzICovLAogCQkJCUVENTAxREM2MEIyNDlGMjkwMEFFMThEOSAvKiBFZGl0b3JNYWMu
bW0gaW4gU291cmNlcyAqLywKIAkJCQlBOEM0QTgwODA5RDU2MzI3MDAwM0FDOEQgLyogRWxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMwMzkxLDYgKzMwNDAyLDcgQEAKIAkJCQlBN0Q2QjM0
QTBGNjExMDQ1MDBCNzlGRDEgLyogV29ya2VyU2NyaXB0TG9hZGVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTJFNDM0NjU0MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJUaHJlYWQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEI5MDU2RjgwRjI2ODVGMzAwOTVGRjZBIC8qIFdvcmtlclRocmVhZGFi
bGVMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDcxRTQ5NkUxQUQ1QUEwRDAwOEE1MEI0
IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk5N0FBQkQy
QzE0RkEwOUQ1MDA3NDU3QUUgLyogV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzMDlFMjMwOTlFNjQ5MjAwNTZFNTgxIC8qIFdyYXBDb250
ZW50c0luRHVtbXlTcGFuQ29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUI0NUQyMDFB
QjhEMUUyMDAxMTdDRDIgLyogQ29udGVudEV4dGVuc2lvbi5jcHAgaW4gU291cmNlcyAqLywKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMTgyNjA3KQorKysgU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUzOSw3ICs2NTM5LDkg
QEAgdm9pZCBEb2N1bWVudDo6YWRkUGxheWJhY2tUYXJnZXRQaWNrZXJDbAogCiAgICAgbV9wbGF5
YmFja1RhcmdldENsaWVudHMuYWRkKCZjbGllbnQpOwogCi0gICAgY2xpZW50LmRpZENob29zZVBs
YXliYWNrVGFyZ2V0KHBhZ2UtPnBsYXliYWNrVGFyZ2V0KCkpOworICAgIFJlZlB0cjxNZWRpYVBs
YXliYWNrVGFyZ2V0PiB0YXJnZXQgPSBwYWdlLT5wbGF5YmFja1RhcmdldCgpOworICAgIGlmICh0
YXJnZXQpCisgICAgICAgIGNsaWVudC5kaWRDaG9vc2VQbGF5YmFja1RhcmdldCgqdGFyZ2V0KTsK
ICAgICBjbGllbnQuZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UocGFnZS0+
aGFzV2lyZWxlc3NQbGF5YmFja1RhcmdldCgpKTsKIH0KIApAQCAtNjU4MCwxMCArNjU4MiwxMCBA
QCB2b2lkIERvY3VtZW50OjpwbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0CiAgICAgICAgIGNsaWVu
dC0+ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoYXZhaWxhYmxlKTsKIH0K
IAotdm9pZCBEb2N1bWVudDo6ZGlkQ2hvb3NlUGxheWJhY2tUYXJnZXQoY29uc3QgTWVkaWFQbGF5
YmFja1RhcmdldCYgZGV2aWNlKQordm9pZCBEb2N1bWVudDo6ZGlkQ2hvb3NlUGxheWJhY2tUYXJn
ZXQoUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYgZGV2aWNlKQogewogICAgIGZvciAoYXV0byog
Y2xpZW50IDogbV9wbGF5YmFja1RhcmdldENsaWVudHMpCi0gICAgICAgIGNsaWVudC0+ZGlkQ2hv
b3NlUGxheWJhY2tUYXJnZXQoZGV2aWNlKTsKKyAgICAgICAgY2xpZW50LT5kaWRDaG9vc2VQbGF5
YmFja1RhcmdldChkZXZpY2UuY29weVJlZigpKTsKIH0KIAogI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaAkocmV2aXNpb24gMTgyNjA3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMzUsNyArMTIzNSw3IEBAIHB1YmxpYzoKIAogI2lm
IEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAgICAgdm9pZCBzaG93UGxheWJhY2tU
YXJnZXRQaWNrZXIoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYpOwotICAgIHZvaWQgZGlkQ2hvb3Nl
UGxheWJhY2tUYXJnZXQoY29uc3QgTWVkaWFQbGF5YmFja1RhcmdldCYpOworICAgIHZvaWQgZGlk
Q2hvb3NlUGxheWJhY2tUYXJnZXQoUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYpOwogICAgIHZv
aWQgYWRkUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQoTWVkaWFQbGF5YmFja1RhcmdldFBpY2tl
ckNsaWVudCYpOwogICAgIHZvaWQgcmVtb3ZlUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQoTWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudCYpOwogICAgIGJvb2wgcmVxdWlyZXNQbGF5YmFj
a1RhcmdldFJvdXRlTW9uaXRvcmluZygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxODI2MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00ODg2LDExICs0ODg2LDEx
IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZW5xdWV1ZVBsYXliYWNrVGEKICAgICBtX2FzeW5j
RXZlbnRRdWV1ZS5lbnF1ZXVlRXZlbnQoZXZlbnQucmVsZWFzZSgpKTsKIH0KIAotdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjpzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KGNvbnN0IE1lZGlhUGxheWJh
Y2tUYXJnZXQmIGRldmljZSkKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0V2lyZWxlc3NQbGF5
YmFja1RhcmdldChSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJiBkZXZpY2UpCiB7CiAgICAgTE9H
KE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6c2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldCglcCki
LCB0aGlzKTsKICAgICBpZiAobV9wbGF5ZXIpCi0gICAgICAgIG1fcGxheWVyLT5zZXRXaXJlbGVz
c1BsYXliYWNrVGFyZ2V0KGRldmljZSk7CisgICAgICAgIG1fcGxheWVyLT5zZXRXaXJlbGVzc1Bs
YXliYWNrVGFyZ2V0KFdURjo6bW92ZShkZXZpY2UpKTsKIH0KIAogYm9vbCBIVE1MTWVkaWFFbGVt
ZW50OjpjYW5QbGF5VG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0KCkgY29uc3QKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCShyZXZpc2lvbiAxODI2MDcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzYz
LDcgKzM2Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2lyZWxlc3NSb3V0ZXNBdmFp
bGFibGVEaWRDaGFuZ2UoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgY2FuUGxheVRvV2ly
ZWxlc3NQbGF5YmFja1RhcmdldCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBp
c1BsYXlpbmdUb1dpcmVsZXNzUGxheWJhY2tUYXJnZXQoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgc2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChjb25zdCBNZWRpYVBsYXliYWNr
VGFyZ2V0Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNldFdpcmVsZXNzUGxheWJhY2tU
YXJnZXQoUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
dm9pZCBzdGFydFBsYXlpbmdUb1BsYXliYWNrVGFyZ2V0KCkgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCB2b2lkIHN0b3BQbGF5aW5nVG9QbGF5YmFja1RhcmdldCgpIG92ZXJyaWRlOwogI2VuZGlmCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYVNlc3Npb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhU2Vzc2lvbi5jcHAJKHJldmlzaW9uIDE4
MjYwNykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhU2Vzc2lvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTc2LDcgKzc2LDYgQEAgSFRNTE1lZGlhU2Vzc2lvbjo6SFRNTE1lZGlhU2Vz
c2lvbihNZWRpYQogICAgICwgbV9yZXN0cmljdGlvbnMoTm9SZXN0cmljdGlvbnMpCiAjaWYgRU5B
QkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICAsIG1fdGFyZ2V0QXZhaWxhYmlsaXR5
Q2hhbmdlZFRpbWVyKCp0aGlzLCAmSFRNTE1lZGlhU2Vzc2lvbjo6dGFyZ2V0QXZhaWxhYmlsaXR5
Q2hhbmdlZFRpbWVyRmlyZWQpCi0gICAgLCBtX3BsYXliYWNrVGFyZ2V0KHN0ZDo6bWFrZV91bmlx
dWU8TWVkaWFQbGF5YmFja1RhcmdldD4oKSkKICNlbmRpZgogewogfQpAQCAtMjg2LDExICsyODUs
MTEgQEAgdm9pZCBIVE1MTWVkaWFTZXNzaW9uOjpzZXRIYXNQbGF5YmFja1RhcgogI2VuZGlmCiB9
CiAKLXZvaWQgSFRNTE1lZGlhU2Vzc2lvbjo6ZGlkQ2hvb3NlUGxheWJhY2tUYXJnZXQoY29uc3Qg
TWVkaWFQbGF5YmFja1RhcmdldCYgZGV2aWNlKQordm9pZCBIVE1MTWVkaWFTZXNzaW9uOjpkaWRD
aG9vc2VQbGF5YmFja1RhcmdldChSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJiBkZXZpY2UpCiB7
Ci0gICAgbV9wbGF5YmFja1RhcmdldC0+c2V0RGV2aWNlUGlja2VyQ29udGV4dChkZXZpY2UuZGV2
aWNlUGlja2VyQ29udGV4dCgpKTsKLSAgICBjbGllbnQoKS5zZXRXaXJlbGVzc1BsYXliYWNrVGFy
Z2V0KCptX3BsYXliYWNrVGFyZ2V0LmdldCgpKTsKLSAgICBpZiAoZGV2aWNlLmhhc0FjdGl2ZVJv
dXRlKCkgJiYgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmN1cnJlbnRTZXNz
aW9uKCkgPT0gdGhpcykKKyAgICBtX3BsYXliYWNrVGFyZ2V0ID0gV1RGOjptb3ZlKGRldmljZSk7
CisgICAgY2xpZW50KCkuc2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldCgqbV9wbGF5YmFja1Rhcmdl
dC5jb3B5UmVmKCkpOworICAgIGlmIChtX3BsYXliYWNrVGFyZ2V0LT5oYXNBY3RpdmVSb3V0ZSgp
ICYmIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5jdXJyZW50U2Vzc2lvbigp
ID09IHRoaXMpCiAgICAgICAgIHN0YXJ0UGxheWluZ1RvUGxheWJhY2tUYXJnZXQoKTsKICAgICBl
bHNlCiAgICAgICAgIHN0b3BQbGF5aW5nVG9QbGF5YmFja1RhcmdldCgpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFTZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFTZXNzaW9uLmgJKHJldmlzaW9uIDE4MjYwNykKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhU2Vzc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQs
NyArMTA0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHRhcmdldEF2YWlsYWJpbGl0eUNoYW5nZWRU
aW1lckZpcmVkKCk7CiAKICAgICAvLyBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50Ci0g
ICAgdmlydHVhbCB2b2lkIGRpZENob29zZVBsYXliYWNrVGFyZ2V0KGNvbnN0IE1lZGlhUGxheWJh
Y2tUYXJnZXQmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hvb3NlUGxheWJhY2tU
YXJnZXQoUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
dm9pZCBleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShib29sKSBjb25zdCBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNQbGF5YmFja1RhcmdldFJvdXRlTW9u
aXRvcmluZygpIGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCkBAIC0xMTMsNyArMTEzLDcgQEAgcHJp
dmF0ZToKIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAgICAgbXV0YWJs
ZSBUaW1lciBtX3RhcmdldEF2YWlsYWJpbGl0eUNoYW5nZWRUaW1lcjsKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8TWVkaWFQbGF5YmFja1RhcmdldD4gbV9wbGF5YmFja1RhcmdldDsKKyAgICBSZWZQdHI8
TWVkaWFQbGF5YmFja1RhcmdldD4gbV9wbGF5YmFja1RhcmdldDsKICAgICBib29sIG1faGFzUGxh
eWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlMaXN0ZW5lcnMgeyBmYWxzZSB9OwogICAgIG11dGFibGUg
Ym9vbCBtX2hhc1BsYXliYWNrVGFyZ2V0cyB7IGZhbHNlIH07CiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcAkocmV2aXNpb24gMTgyNjA3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE0LDkgKzIxNCw2IEBAIFBhZ2U6OlBhZ2UoUGFnZUNv
bmZpZ3VyYXRpb24mIHBhZ2VDb25maWcKICAgICAsIG1fdXNlckNvbnRlbnRDb250cm9sbGVyKFdU
Rjo6bW92ZShwYWdlQ29uZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIpKQogICAgICwg
bV92aXNpdGVkTGlua1N0b3JlKCpXVEY6Om1vdmUocGFnZUNvbmZpZ3VyYXRpb24udmlzaXRlZExp
bmtTdG9yZSkpCiAgICAgLCBtX3Nlc3Npb25JRChTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQo
KSkKLSNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQotICAgICwgbV9wbGF5YmFj
a1RhcmdldChzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUGxheWJhY2tUYXJnZXQ+KCkpCi0jZW5kaWYK
ICAgICAsIG1faXNDbG9zaW5nKGZhbHNlKQogICAgICwgbV9pc1BsYXlpbmdBdWRpbyhmYWxzZSkK
IHsKQEAgLTE2ODYsNiArMTY4MywxNCBAQCB2b2lkIFBhZ2U6OnNldFNlc3Npb25JRChTZXNzaW9u
SUQgc2Vzc2lvCiB9CiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorUmVm
UHRyPE1lZGlhUGxheWJhY2tUYXJnZXQ+IFBhZ2U6OnBsYXliYWNrVGFyZ2V0KCkgY29uc3QKK3sK
KyAgICBpZiAoIW1fcGxheWJhY2tUYXJnZXQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgcmV0dXJuIG1fcGxheWJhY2tUYXJnZXQuY29weVJlZigpOworfQorCiB2b2lkIFBhZ2U6OnNo
b3dQbGF5YmFja1RhcmdldFBpY2tlcihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbG9jYXRpb24s
IGJvb2wgaXNWaWRlbykKIHsKICNpZiBQTEFURk9STShJT1MpCkBAIC0xNjk3LDExICsxNzAyLDEx
IEBAIHZvaWQgUGFnZTo6c2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGNvbnMKICNlbmRpZgogfQog
Ci12b2lkIFBhZ2U6OmRpZENob29zZVBsYXliYWNrVGFyZ2V0KGNvbnN0IE1lZGlhUGxheWJhY2tU
YXJnZXQmIHRhcmdldCkKK3ZvaWQgUGFnZTo6ZGlkQ2hvb3NlUGxheWJhY2tUYXJnZXQoUmVmPE1l
ZGlhUGxheWJhY2tUYXJnZXQ+JiYgdGFyZ2V0KQogewotICAgIG1fcGxheWJhY2tUYXJnZXQtPnNl
dERldmljZVBpY2tlckNvbnRleHQodGFyZ2V0LmRldmljZVBpY2tlckNvbnRleHQoKSk7CisgICAg
bV9wbGF5YmFja1RhcmdldCA9IFdURjo6bW92ZSh0YXJnZXQpOwogICAgIGZvciAoRnJhbWUqIGZy
YW1lID0gJm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNl
TmV4dCgpKQotICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+ZGlkQ2hvb3NlUGxheWJhY2tUYXJn
ZXQodGFyZ2V0KTsKKyAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPmRpZENob29zZVBsYXliYWNr
VGFyZ2V0KCptX3BsYXliYWNrVGFyZ2V0LmNvcHlSZWYoKSk7CiB9CiAKIHZvaWQgUGFnZTo6cGxh
eWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlEaWRDaGFuZ2UoYm9vbCBhdmFpbGFibGUpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuaAkocmV2aXNpb24gMTgyNjA3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQzMCwxMCArNDMwLDEwIEBAIHB1YmxpYzoKICNpZiBFTkFC
TEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAgIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0
UGlja2VyKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgYm9vbCk7CiAgICAgYm9vbCBoYXNXaXJl
bGVzc1BsYXliYWNrVGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9oYXNXaXJlbGVzc1BsYXliYWNr
VGFyZ2V0OyB9Ci0gICAgTWVkaWFQbGF5YmFja1RhcmdldCYgcGxheWJhY2tUYXJnZXQoKSBjb25z
dCB7IHJldHVybiAqbV9wbGF5YmFja1RhcmdldC5nZXQoKTsgfQorICAgIFJlZlB0cjxNZWRpYVBs
YXliYWNrVGFyZ2V0PiBwbGF5YmFja1RhcmdldCgpIGNvbnN0OwogICAgIHZvaWQgY29uZmlndXJl
UGxheWJhY2tUYXJnZXRNb25pdG9yaW5nKCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRp
ZENob29zZVBsYXliYWNrVGFyZ2V0KGNvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXQmKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGRpZENob29zZVBsYXliYWNrVGFyZ2V0KFJlZjxNZWRpYVBsYXli
YWNrVGFyZ2V0PiYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBsYXliYWNrVGFyZ2V0QXZh
aWxhYmlsaXR5RGlkQ2hhbmdlKGJvb2wpOwogI2VuZGlmCiAKQEAgLTU5MCw3ICs1OTAsNyBAQCBw
cml2YXRlOgogICAgIFNlc3Npb25JRCBtX3Nlc3Npb25JRDsKIAogI2lmIEVOQUJMRShXSVJFTEVT
U19QTEFZQkFDS19UQVJHRVQpCi0gICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWJhY2tUYXJn
ZXQ+IG1fcGxheWJhY2tUYXJnZXQ7CisgICAgUmVmUHRyPE1lZGlhUGxheWJhY2tUYXJnZXQ+IG1f
cGxheWJhY2tUYXJnZXQ7CiAgICAgYm9vbCBtX2hhc1dpcmVsZXNzUGxheWJhY2tUYXJnZXQgeyBm
YWxzZSB9OwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01l
ZGlhU2Vzc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L01lZGlhU2Vzc2lvbi5oCShyZXZpc2lvbiAxODI2MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9NZWRpYVNlc3Npb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDcgKzEyNCw3
IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAgICAg
Ly8gTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudAotICAgIHZpcnR1YWwgdm9pZCBkaWRD
aG9vc2VQbGF5YmFja1RhcmdldChjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0Jikgb3ZlcnJpZGUg
eyB9CisgICAgdmlydHVhbCB2b2lkIGRpZENob29zZVBsYXliYWNrVGFyZ2V0KFJlZjxNZWRpYVBs
YXliYWNrVGFyZ2V0PiYmKSBvdmVycmlkZSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZXh0ZXJuYWxP
dXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoYm9vbCkgY29uc3Qgb3ZlcnJpZGUgeyB9CiAg
ICAgdmlydHVhbCBib29sIHJlcXVpcmVzUGxheWJhY2tUYXJnZXRSb3V0ZU1vbml0b3JpbmcoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCkBAIC0xNjksNyArMTY5LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBvdmVycmlkZUJhY2tncm91bmRQbGF5YmFja1Jl
c3RyaWN0aW9uKCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHdpcmVsZXNzUm91dGVz
QXZhaWxhYmxlRGlkQ2hhbmdlKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldFdpcmVsZXNzUGxh
eWJhY2tUYXJnZXQoY29uc3QgTWVkaWFQbGF5YmFja1RhcmdldCYpIHsgfQorICAgIHZpcnR1YWwg
dm9pZCBzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiYm
KSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgY2FuUGxheVRvV2lyZWxlc3NQbGF5YmFja1RhcmdldCgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzUGxheWluZ1RvV2ly
ZWxlc3NQbGF5YmFja1RhcmdldCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVh
bCB2b2lkIHN0YXJ0UGxheWluZ1RvUGxheWJhY2tUYXJnZXQoKSB7IH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWJhY2tUYXJnZXQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXliYWNrVGFyZ2V0
LmgJKHJldmlzaW9uIDE4MjYwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWJhY2tUYXJnZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNDUgKzI4LDI2IEBA
CiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogCi0jaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgotCi0jaWYgUExBVEZPUk0oQ09DT0EpCi1PQkpDX0NMQVNTIE5TS2V5ZWRB
cmNoaXZlcjsKLU9CSkNfQ0xBU1MgTlNLZXllZFVuYXJjaGl2ZXI7Ci1PQkpDX0NMQVNTIEFWT3V0
cHV0Q29udGV4dDsKLSNlbmRpZgorI2luY2x1ZGUgIk1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
LmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0IHsKK2NsYXNzIE1lZGlhUGxheWJhY2tUYXJnZXQg
OiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVBsYXliYWNrVGFyZ2V0PiB7CiBwdWJsaWM6CiAgICAg
dmlydHVhbCB+TWVkaWFQbGF5YmFja1RhcmdldCgpIHsgfQogCi0jaWYgUExBVEZPUk0oQ09DT0Ep
Ci0gICAgV0VCQ09SRV9FWFBPUlQgTWVkaWFQbGF5YmFja1RhcmdldChBVk91dHB1dENvbnRleHQg
KmNvbnRleHQgPSBuaWwpIHsgbV9kZXZpY2VQaWNrZXJDb250ZXh0ID0gY29udGV4dDsgfQotCi0g
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbmNvZGUoTlNLZXllZEFyY2hpdmVyICopIGNvbnN0Owot
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGRlY29kZShOU0tleWVkVW5hcmNoaXZlciAq
LCBNZWRpYVBsYXliYWNrVGFyZ2V0Jik7Ci0KLSAgICB2b2lkIHNldERldmljZVBpY2tlckNvbnRl
eHQoQVZPdXRwdXRDb250ZXh0ICpjb250ZXh0KSB7IG1fZGV2aWNlUGlja2VyQ29udGV4dCA9IGNv
bnRleHQ7IH0KLSAgICBBVk91dHB1dENvbnRleHQgKmRldmljZVBpY2tlckNvbnRleHQoKSBjb25z
dCB7IHJldHVybiBtX2RldmljZVBpY2tlckNvbnRleHQuZ2V0KCk7IH0KKyAgICBlbnVtIFRhcmdl
dFR5cGUgeworICAgICAgICBOb25lLAorICAgICAgICBBVkZvdW5kYXRpb24sCisgICAgfTsKKyAg
ICB2aXJ0dWFsIFRhcmdldFR5cGUgdGFyZ2V0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIE5vbmU7IH0K
IAotI2lmIFBMQVRGT1JNKElPUykKLSAgICBib29sIGhhc0FjdGl2ZVJvdXRlKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KLSNlbHNlCi0gICAgYm9vbCBoYXNBY3RpdmVSb3V0ZSgpIGNvbnN0Owot
I2VuZGlmCi0KLSNlbHNlCi0gICAgdm9pZCBzZXREZXZpY2VQaWNrZXJDb250ZXh0KEFWT3V0cHV0
Q29udGV4dCAqKSB7IH0KLSAgICBBVk91dHB1dENvbnRleHQgKmRldmljZVBpY2tlckNvbnRleHQo
KSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgYm9vbCBoYXNBY3RpdmVSb3V0ZSgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0jZW5kaWYKKyAgICB2aXJ0dWFsIGNvbnN0IE1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0JiB0YXJnZXRDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gTm9NZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dDsgfQorICAgIHZpcnR1YWwgYm9vbCBoYXNBY3RpdmVSb3V0
ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKIHByb3RlY3RlZDoKLSNpZiBQTEFURk9STShD
T0NPQSkKLSAgICBSZXRhaW5QdHI8QVZPdXRwdXRDb250ZXh0PiBtX2RldmljZVBpY2tlckNvbnRl
eHQ7Ci0jZW5kaWYKKyAgICBNZWRpYVBsYXliYWNrVGFyZ2V0KCkgeyB9CiB9OwogCiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2lmbmRlZiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dF9oCisjZGVm
aW5lIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0X2gKKworI2lmIEVOQUJMRShXSVJFTEVTU19Q
TEFZQkFDS19UQVJHRVQpCisKK09CSkNfQ0xBU1MgQVZPdXRwdXRDb250ZXh0OworCisjaWYgUExB
VEZPUk0oQ09DT0EpCitPQkpDX0NMQVNTIE5TS2V5ZWRBcmNoaXZlcjsKK09CSkNfQ0xBU1MgTlNL
ZXllZFVuYXJjaGl2ZXI7CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3Qg
TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQgeworCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBlbmNvZGUoTlNLZXllZEFyY2hpdmVyICopIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGRlY29kZShOU0tleWVkVW5hcmNoaXZlciAqLCBN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYpOworI2VuZGlmCisKKyAgICBlbnVtIENvbnRleHRU
eXBlIHsKKyAgICAgICAgTm9uZSwKKyAgICAgICAgQVZPdXRwdXRDb250ZXh0VHlwZSwKKyAgICB9
IHR5cGU7CisKKyAgICB1bmlvbiB7CisgICAgICAgIEFWT3V0cHV0Q29udGV4dCogYXZPdXRwdXRD
b250ZXh0OworICAgIH0gY29udGV4dDsKK307CisKK2NvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0IE5vTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQgPSB7IE1lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0OjpOb25lLCB7bnVsbHB0cn0gfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKFdJ
UkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKKworI2VuZGlmIC8vIE1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0IApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
YmFja1RhcmdldFBpY2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaAkocmV2aXNpb24gMTgyNjA3KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw4IEBACiAKICNpZiBFTkFCTEUoV0lS
RUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogCisjaW5jbHVkZSA8d3RmL1JlZi5oPgorCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZsb2F0UmVjdDsKQEAgLTQwLDcgKzQyLDcgQEAgcHVibGlj
OgogICAgICAgICB2aXJ0dWFsIH5DbGllbnQoKSB7IH0KIAogICAgIHB1YmxpYzoKLSAgICAgICAg
dmlydHVhbCB2b2lkIGRpZENob29zZVBsYXliYWNrVGFyZ2V0KGNvbnN0IE1lZGlhUGxheWJhY2tU
YXJnZXQmKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDaG9vc2VQbGF5YmFja1Rhcmdl
dChSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoYm9vbCkgPSAwOwogCiAgICAg
ICAgIHZvaWQgaW52YWxpZGF0ZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJD
bGllbnQuaAkocmV2aXNpb24gMTgyNjA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zOCw3ICszOCw3IEBAIGNsYXNzIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQgewog
cHVibGljOgogICAgIHZpcnR1YWwgfk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQoKSB7
IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDaG9vc2VQbGF5YmFja1RhcmdldChjb25zdCBNZWRp
YVBsYXliYWNrVGFyZ2V0JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRDaG9vc2VQbGF5YmFj
a1RhcmdldChSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShib29sKSBjb25zdCA9IDA7
CiAKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNQbGF5YmFja1RhcmdldFJvdXRlTW9uaXRvcmlu
ZygpIGNvbnN0ID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5jcHAJKHJldmlzaW9uIDE4MjYwNykKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODgz
LDkgKzg4Myw5IEBAIGJvb2wgTWVkaWFQbGF5ZXI6OmlzUGxheWluZ1RvV2lyZWxlc3NQbGEKICAg
ICByZXR1cm4gbV9wcml2YXRlLT5pc1BsYXlpbmdUb1dpcmVsZXNzUGxheWJhY2tUYXJnZXQoKTsK
IH0KIAotdm9pZCBNZWRpYVBsYXllcjo6c2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChjb25zdCBN
ZWRpYVBsYXliYWNrVGFyZ2V0JiBkZXZpY2UpCit2b2lkIE1lZGlhUGxheWVyOjpzZXRXaXJlbGVz
c1BsYXliYWNrVGFyZ2V0KFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiYmIGRldmljZSkKIHsKLSAg
ICBtX3ByaXZhdGUtPnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoZGV2aWNlKTsKKyAgICBtX3By
aXZhdGUtPnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoV1RGOjptb3ZlKGRldmljZSkpOwogfQog
CiB2b2lkIE1lZGlhUGxheWVyOjpzdGFydFBsYXlpbmdUb1BsYXliYWNrVGFyZ2V0KCkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAkocmV2
aXNpb24gMTgyNjA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDgxLDcgKzQ4MSw3IEBAIHB1YmxpYzoKIAogICAg
IGJvb2wgY2FuUGxheVRvV2lyZWxlc3NQbGF5YmFja1RhcmdldCgpIGNvbnN0OwogICAgIGJvb2wg
aXNQbGF5aW5nVG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0KCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRX
aXJlbGVzc1BsYXliYWNrVGFyZ2V0KGNvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXQmKTsKKyAgICB2
b2lkIHNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYp
OwogCiAgICAgdm9pZCBzdGFydFBsYXlpbmdUb1BsYXliYWNrVGFyZ2V0KCk7CiAgICAgdm9pZCBz
dG9wUGxheWluZ1RvUGxheWJhY2tUYXJnZXQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCShyZXZpc2lvbiAx
ODI2MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclBy
aXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTcxLDcgKzE3MSw3IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgYm9vbCBjYW5QbGF5VG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0KCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNQbGF5aW5nVG9XaXJlbGVzc1BsYXli
YWNrVGFyZ2V0KCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0V2lyZWxl
c3NQbGF5YmFja1RhcmdldChjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0JikgeyB9CisgICAgdmly
dHVhbCB2b2lkIHNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoUmVmPE1lZGlhUGxheWJhY2tUYXJn
ZXQ+JiYpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0UGxheWluZ1RvUGxheWJhY2tUYXJn
ZXQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc3RvcFBsYXlpbmdUb1BsYXliYWNrVGFyZ2V0KCkg
eyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHRNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0TWFjLm1tCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0TWFjLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dC5oIgorCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdF
VCkgJiYgIVBMQVRGT1JNKElPUykKKworI2ltcG9ydCA8V2ViQ29yZS9BVkZvdW5kYXRpb25TUEku
aD4KKyNpbXBvcnQgPFdlYkNvcmUvU29mdExpbmtpbmcuaD4KKyNpbXBvcnQgPG9iamMvcnVudGlt
ZS5oPgorCitTT0ZUX0xJTktfRlJBTUVXT1JLX09QVElPTkFMKEFWRm91bmRhdGlvbikKK1NPRlRf
TElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWT3V0cHV0Q29udGV4dCkKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBkZXZpY2VDb250ZXh0S2V5ID0gQCJk
ZXZpY2VDb250ZXh0IjsKKwordm9pZCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6ZW5jb2Rl
KE5TS2V5ZWRBcmNoaXZlciAqYXJjaGl2ZXIpIGNvbnN0Cit7CisgICAgQVNTRVJUKHR5cGUgPT0g
QVZPdXRwdXRDb250ZXh0VHlwZSk7CisKKyAgICBpZiAoW2dldEFWT3V0cHV0Q29udGV4dENsYXNz
KCkgY29uZm9ybXNUb1Byb3RvY29sOkBwcm90b2NvbChOU1NlY3VyZUNvZGluZyldKQorICAgICAg
ICBbYXJjaGl2ZXIgZW5jb2RlT2JqZWN0OmNvbnRleHQuYXZPdXRwdXRDb250ZXh0IGZvcktleTpk
ZXZpY2VDb250ZXh0S2V5XTsKK30KKworYm9vbCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6
ZGVjb2RlKE5TS2V5ZWRVbmFyY2hpdmVyICp1bmFyY2hpdmVyLCBNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dCYgcGxheWJhY2tUYXJnZXQpCit7CisgICAgaWYgKCFbZ2V0QVZPdXRwdXRDb250ZXh0
Q2xhc3MoKSBjb25mb3Jtc1RvUHJvdG9jb2w6QHByb3RvY29sKE5TU2VjdXJlQ29kaW5nKV0pCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEFWT3V0cHV0Q29udGV4dCAqY29udGV4dCA9IG5p
bDsKKyAgICBAdHJ5IHsKKyAgICAgICAgY29udGV4dCA9IFt1bmFyY2hpdmVyIGRlY29kZU9iamVj
dE9mQ2xhc3M6Z2V0QVZPdXRwdXRDb250ZXh0Q2xhc3MoKSBmb3JLZXk6ZGV2aWNlQ29udGV4dEtl
eV07CisgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsKKyAgICAgICAgTE9H
X0VSUk9SKCJUaGUgdGFyZ2V0IHBpY2tlciBiZWluZyBkZWNvZGVkIGlzIG5vdCBhIEFWT3V0cHV0
Q29udGV4dC4iKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHBsYXliYWNr
VGFyZ2V0LnR5cGUgPSBBVk91dHB1dENvbnRleHRUeXBlOworICAgIHBsYXliYWNrVGFyZ2V0LmNv
bnRleHQuYXZPdXRwdXRDb250ZXh0ID0gY29udGV4dDsKKworICAgIHJldHVybiB0cnVlOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0lSRUxFU1NfUExB
WUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWJhY2tUYXJnZXRNYWMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
TWVkaWFQbGF5YmFja1RhcmdldE1hYy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWJhY2tUYXJnZXRNYWMuaAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTWVkaWFQbGF5YmFja1RhcmdldE1hY19oCisj
ZGVmaW5lIE1lZGlhUGxheWJhY2tUYXJnZXRNYWNfaAorCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BM
QVlCQUNLX1RBUkdFVCkKKworI2luY2x1ZGUgIk1lZGlhUGxheWJhY2tUYXJnZXQuaCIKKyNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVk
aWFQbGF5YmFja1RhcmdldE1hYyA6IHB1YmxpYyBNZWRpYVBsYXliYWNrVGFyZ2V0IHsKK3B1Ymxp
YzoKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+IGNy
ZWF0ZShBVk91dHB1dENvbnRleHQgKik7CisKKyAgICB2aXJ0dWFsIH5NZWRpYVBsYXliYWNrVGFy
Z2V0TWFjKCk7CisKKyAgICB2aXJ0dWFsIFRhcmdldFR5cGUgdGFyZ2V0VHlwZSgpIGNvbnN0IHsg
cmV0dXJuIEFWRm91bmRhdGlvbjsgfQorCisgICAgdmlydHVhbCBjb25zdCBNZWRpYVBsYXliYWNr
VGFyZ2V0Q29udGV4dCYgdGFyZ2V0Q29udGV4dCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBo
YXNBY3RpdmVSb3V0ZSgpIGNvbnN0OworCisgICAgQVZPdXRwdXRDb250ZXh0ICpvdXRwdXRDb250
ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9vdXRwdXRDb250ZXh0LmdldCgpOyB9CisKK3Byb3RlY3Rl
ZDoKKyAgICBNZWRpYVBsYXliYWNrVGFyZ2V0TWFjKEFWT3V0cHV0Q29udGV4dCAqKTsKKworICAg
IFJldGFpblB0cjxBVk91dHB1dENvbnRleHQ+IG1fb3V0cHV0Q29udGV4dDsKKyAgICBtdXRhYmxl
IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0IG1fY29udGV4dDsKK307CisKK01lZGlhUGxheWJh
Y2tUYXJnZXRNYWMqIHRvTWVkaWFQbGF5YmFja1RhcmdldE1hYyhNZWRpYVBsYXliYWNrVGFyZ2V0
Kik7Citjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0TWFjKiB0b01lZGlhUGxheWJhY2tUYXJnZXRN
YWMoY29uc3QgTWVkaWFQbGF5YmFja1RhcmdldCopOworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUo
V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXliYWNrVGFyZ2V0TWFjLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9NZWRpYVBsYXliYWNrVGFyZ2V0TWFjLm1tCShyZXZpc2lvbiAxODI2MDcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5YmFja1Rh
cmdldE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKICNpbXBv
cnQgImNvbmZpZy5oIgotI2ltcG9ydCAiTWVkaWFQbGF5YmFja1RhcmdldC5oIgorI2ltcG9ydCAi
TWVkaWFQbGF5YmFja1RhcmdldE1hYy5oIgogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNL
X1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPUykKIApAQCAtMzcsMzcgKzM3LDQ1IEBAIFNPRlRfTElO
S19DTEFTUyhBVkZvdW5kYXRpb24sIEFWT3V0cHV0Q28KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1zdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBkZXZpY2VDb250ZXh0S2V5ID0gQCJkZXZpY2VDb250
ZXh0IjsKK1JlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiBNZWRpYVBsYXliYWNrVGFyZ2V0TWFjOjpj
cmVhdGUoQVZPdXRwdXRDb250ZXh0ICpjb250ZXh0KQoreworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IE1lZGlhUGxheWJhY2tUYXJnZXRNYWMoY29udGV4dCkpOworfQogCi12b2lkIE1lZGlhUGxh
eWJhY2tUYXJnZXQ6OmVuY29kZShOU0tleWVkQXJjaGl2ZXIgKmFyY2hpdmVyKSBjb25zdAorTWVk
aWFQbGF5YmFja1RhcmdldE1hYzo6TWVkaWFQbGF5YmFja1RhcmdldE1hYyhBVk91dHB1dENvbnRl
eHQgKmNvbnRleHQpCisgICAgOiBNZWRpYVBsYXliYWNrVGFyZ2V0KCkKKyAgICAsIG1fb3V0cHV0
Q29udGV4dChjb250ZXh0KQogewotICAgIGlmIChbZ2V0QVZPdXRwdXRDb250ZXh0Q2xhc3MoKSBj
b25mb3Jtc1RvUHJvdG9jb2w6QHByb3RvY29sKE5TU2VjdXJlQ29kaW5nKV0pCi0gICAgICAgIFth
cmNoaXZlciBlbmNvZGVPYmplY3Q6bV9kZXZpY2VQaWNrZXJDb250ZXh0LmdldCgpIGZvcktleTpk
ZXZpY2VDb250ZXh0S2V5XTsKIH0KIAotYm9vbCBNZWRpYVBsYXliYWNrVGFyZ2V0OjpkZWNvZGUo
TlNLZXllZFVuYXJjaGl2ZXIgKnVuYXJjaGl2ZXIsIE1lZGlhUGxheWJhY2tUYXJnZXQmIHBsYXli
YWNrVGFyZ2V0KQorTWVkaWFQbGF5YmFja1RhcmdldE1hYzo6fk1lZGlhUGxheWJhY2tUYXJnZXRN
YWMoKQogewotICAgIGlmICghW2dldEFWT3V0cHV0Q29udGV4dENsYXNzKCkgY29uZm9ybXNUb1By
b3RvY29sOkBwcm90b2NvbChOU1NlY3VyZUNvZGluZyldKQotICAgICAgICByZXR1cm4gZmFsc2U7
Cit9CiAKLSAgICBBVk91dHB1dENvbnRleHQgKmNvbnRleHQgPSBuaWw7Ci0gICAgQHRyeSB7Ci0g
ICAgICAgIGNvbnRleHQgPSBbdW5hcmNoaXZlciBkZWNvZGVPYmplY3RPZkNsYXNzOmdldEFWT3V0
cHV0Q29udGV4dENsYXNzKCkgZm9yS2V5OmRldmljZUNvbnRleHRLZXldOwotICAgIH0gQGNhdGNo
IChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7Ci0gICAgICAgIExPR19FUlJPUigiVGhlIHRhcmdl
dCBwaWNrZXIgYmVpbmcgZGVjb2RlZCBpcyBub3QgYSBBVk91dHB1dENvbnRleHQuIik7Ci0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9Citjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dCYgTWVkaWFQbGF5YmFja1RhcmdldE1hYzo6dGFyZ2V0Q29udGV4dCgpIGNvbnN0Cit7CisgICAg
bV9jb250ZXh0LnR5cGUgPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6QVZPdXRwdXRDb250
ZXh0VHlwZTsKKyAgICBtX2NvbnRleHQuY29udGV4dC5hdk91dHB1dENvbnRleHQgPSBtX291dHB1
dENvbnRleHQuZ2V0KCk7CiAKLSAgICBwbGF5YmFja1RhcmdldC5tX2RldmljZVBpY2tlckNvbnRl
eHQgPSBjb250ZXh0OworICAgIHJldHVybiBtX2NvbnRleHQ7Cit9CiAKLSAgICByZXR1cm4gdHJ1
ZTsKK2Jvb2wgTWVkaWFQbGF5YmFja1RhcmdldE1hYzo6aGFzQWN0aXZlUm91dGUoKSBjb25zdAor
eworICAgIHJldHVybiBtX291dHB1dENvbnRleHQgJiYgbV9vdXRwdXRDb250ZXh0LmdldCgpLmRl
dmljZU5hbWU7CiB9CiAKLWJvb2wgTWVkaWFQbGF5YmFja1RhcmdldDo6aGFzQWN0aXZlUm91dGUo
KSBjb25zdAorCitNZWRpYVBsYXliYWNrVGFyZ2V0TWFjKiB0b01lZGlhUGxheWJhY2tUYXJnZXRN
YWMoTWVkaWFQbGF5YmFja1RhcmdldCogcmVwKQogewotICAgIHJldHVybiBtX2RldmljZVBpY2tl
ckNvbnRleHQgJiYgbV9kZXZpY2VQaWNrZXJDb250ZXh0LmdldCgpLmRldmljZU5hbWU7CisgICAg
cmV0dXJuIGNvbnN0X2Nhc3Q8TWVkaWFQbGF5YmFja1RhcmdldE1hYyo+KHRvTWVkaWFQbGF5YmFj
a1RhcmdldE1hYyhjb25zdF9jYXN0PGNvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXQqPihyZXApKSk7
CiB9CiAKK2NvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXRNYWMqIHRvTWVkaWFQbGF5YmFja1Rhcmdl
dE1hYyhjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0KiByZXApCit7CisgICAgQVNTRVJUX1dJVEhf
U0VDVVJJVFlfSU1QTElDQVRJT04ocmVwLT50YXJnZXRUeXBlKCkgPT0gTWVkaWFQbGF5YmFja1Rh
cmdldDo6QVZGb3VuZGF0aW9uKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgTWVkaWFQ
bGF5YmFja1RhcmdldE1hYyo+KHJlcCk7Cit9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyTWFjLm1tCShyZXZpc2lvbiAxODI2MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAjaW1wb3J0IDxXZWJDb3Jl
L0FWRm91bmRhdGlvblNQSS5oPgogI2ltcG9ydCA8V2ViQ29yZS9BVktpdFNQSS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KLSNpbXBvcnQgPFdlYkNvcmUvTWVkaWFQbGF5YmFja1Rh
cmdldC5oPgorI2ltcG9ydCA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0TWFjLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1NvZnRMaW5raW5nLmg+CiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KICNp
bXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CkBAIC0xMzMsMTAgKzEzMyw3IEBAIHZvaWQgTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlck1hYzo6Y3VycmUKICAgICBpZiAoIWRldmljZVBpY2tlcikKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGRldmljZVBpY2tlci5pc0V4dGVybmFsT3V0cHV0RGV2
aWNlUGlja2VkKQotICAgICAgICBtX2NsaWVudC0+ZGlkQ2hvb3NlUGxheWJhY2tUYXJnZXQoV2Vi
Q29yZTo6TWVkaWFQbGF5YmFja1RhcmdldChbZGV2aWNlUGlja2VyIG91dHB1dENvbnRleHRdKSk7
Ci0gICAgZWxzZQotICAgICAgICBtX2NsaWVudC0+ZGlkQ2hvb3NlUGxheWJhY2tUYXJnZXQoV2Vi
Q29yZTo6TWVkaWFQbGF5YmFja1RhcmdldChuaWwpKTsKKyAgICBtX2NsaWVudC0+ZGlkQ2hvb3Nl
UGxheWJhY2tUYXJnZXQoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldE1hYzo6Y3JlYXRlKFtk
ZXZpY2VQaWNrZXIgb3V0cHV0Q29udGV4dF0pKTsKIH0KIAogdm9pZCBNZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyTWFjOjpzdGFydGluZ01vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMuaAkocmV2aXNpb24gMTgyNjA3KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yODIsNyArMjgyLDcgQEAgcHJpdmF0
ZToKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBM
QVRGT1JNKElPUykKLSAgICB2aXJ0dWFsIHZvaWQgc2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChj
b25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNl
dFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYpIG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgdm9pZCBzdGFydFBsYXlpbmdUb1BsYXliYWNrVGFyZ2V0KCkgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHN0b3BQbGF5aW5nVG9QbGF5YmFja1RhcmdldCgpIG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBpc1BsYXlpbmdUb1dpcmVsZXNzUGxheWJhY2tUYXJn
ZXQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQkocmV2aXNpb24gMTgyNjA3KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDcsNyAr
NDcsNyBAQAogI2ltcG9ydCAiT3V0T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oIgogI2ltcG9y
dCAiVVJMLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0ICJNZWRpYVBsYXliYWNrVGFy
Z2V0LmgiCisjaW1wb3J0ICJNZWRpYVBsYXliYWNrVGFyZ2V0TWFjLmgiCiAjaW1wb3J0ICJNZWRp
YVNlbGVjdGlvbkdyb3VwQVZGT2JqQy5oIgogI2ltcG9ydCAiTWVkaWFUaW1lQVZGb3VuZGF0aW9u
LmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVRpbWVSYW5nZXMuaCIKQEAgLTI3NzcsOSArMjc3NywxMSBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6CiB9CiAKICNpZiAhUExB
VEZPUk0oSU9TKQotdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRX
aXJlbGVzc1BsYXliYWNrVGFyZ2V0KGNvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXQmIHRhcmdldCkK
K3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0V2lyZWxlc3NQbGF5
YmFja1RhcmdldChSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJiB0YXJnZXQpCiB7Ci0gICAgbV9v
dXRwdXRDb250ZXh0ID0gdGFyZ2V0LmRldmljZVBpY2tlckNvbnRleHQoKTsKKyAgICBNZWRpYVBs
YXliYWNrVGFyZ2V0TWFjKiBtYWNUYXJnZXQgPSB0b01lZGlhUGxheWJhY2tUYXJnZXRNYWMoJnRh
cmdldC5nZXQoKSk7CisKKyAgICBtX291dHB1dENvbnRleHQgPSBtYWNUYXJnZXQtPm91dHB1dENv
bnRleHQoKTsKICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjpzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KCVwKSAtIHRhcmdldCA9ICVwIiwgdGhpcywg
bV9vdXRwdXRDb250ZXh0LmdldCgpKTsKIAogICAgIGlmICghbV9vdXRwdXRDb250ZXh0IHx8ICFt
X291dHB1dENvbnRleHQuZ2V0KCkuZGV2aWNlTmFtZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5oCShyZXZpc2lvbiAxODI2MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akMuaAkod29ya2luZyBjb3B5KQpAQCAtMTczLDcgKzE3Myw3IEBAIHByaXZhdGU6CiAKICNpZiBF
TkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAgIHZpcnR1YWwgYm9vbCBpc0N1cnJl
bnRQbGF5YmFja1RhcmdldFN1cHBvcnRlZCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KGNvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXQm
KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChSZWY8TWVkaWFQ
bGF5YmFja1RhcmdldD4mJik7CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0UGxheWluZ1RvUGxheWJh
Y2tUYXJnZXQoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcFBsYXlpbmdUb1BsYXli
YWNrVGFyZ2V0KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB0b2dnbGVQbGF5aW5nVG9QbGF5YmFja1Rh
cmdldCgpOwpAQCAtMjIxLDcgKzIyMSw3IEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBib29sIG1f
bG9hZGluZ1Byb2dyZXNzZWQ7CiAgICAgYm9vbCBtX2hhc0F2YWlsYWJsZVZpZGVvRnJhbWU7CiAj
aWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
TWVkaWFQbGF5YmFja1RhcmdldD4gbV9wbGF5YmFja1RhcmdldDsKKyAgICBSZWZQdHI8TWVkaWFQ
bGF5YmFja1RhcmdldD4gbV9wbGF5YmFja1RhcmdldDsKICAgICBib29sIG1fY3VycmVudFBsYXli
YWNrVGFyZ2V0SXNTdXBwb3J0ZWQgeyB0cnVlIH07CiAjZW5kaWYKIH07CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLm1tCShyZXZpc2lvbiAxODI2MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakMubW0JKHdvcmtpbmcgY29weSkKQEAgLTgxNSwxMSArODE1LDkgQEAgYm9v
bCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iagogICAgIHJldHVybiAhbV9wbGF5
YmFja1RhcmdldC0+aGFzQWN0aXZlUm91dGUoKTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM6OnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoY29uc3QgTWVk
aWFQbGF5YmFja1RhcmdldCYgdGFyZ2V0KQordm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakM6OnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoUmVmPE1lZGlhUGxheWJhY2tU
YXJnZXQ+JiYgdGFyZ2V0KQogewotICAgIGlmICghbV9wbGF5YmFja1RhcmdldCkKLSAgICAgICAg
bV9wbGF5YmFja1RhcmdldCA9IHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5YmFja1RhcmdldD4o
KTsKLSAgICBtX3BsYXliYWNrVGFyZ2V0LT5zZXREZXZpY2VQaWNrZXJDb250ZXh0KHRhcmdldC5k
ZXZpY2VQaWNrZXJDb250ZXh0KCkpOworICAgIG1fcGxheWJhY2tUYXJnZXQgPSBXVEY6Om1vdmUo
dGFyZ2V0KTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6
OnRvZ2dsZVBsYXlpbmdUb1BsYXliYWNrVGFyZ2V0KCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZh
dGVRVEtpdC5oCShyZXZpc2lvbiAxODI2MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQuaAkod29ya2luZyBjb3B5KQpAQCAt
MTgxLDcgKzE4MSw3IEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tf
VEFSR0VUKQogICAgIHZpcnR1YWwgYm9vbCBpc0N1cnJlbnRQbGF5YmFja1RhcmdldFN1cHBvcnRl
ZCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRXaXJlbGVzc1BsYXliYWNr
VGFyZ2V0KGNvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXQmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
V2lyZWxlc3NQbGF5YmFja1RhcmdldChSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJik7CiAgICAg
dmlydHVhbCB2b2lkIHN0YXJ0UGxheWluZ1RvUGxheWJhY2tUYXJnZXQoKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgc3RvcFBsYXlpbmdUb1BsYXliYWNrVGFyZ2V0KCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCB0b2dnbGVQbGF5aW5nVG9QbGF5YmFja1RhcmdldCgpOwpAQCAtMjE1LDcgKzIxNSw3
IEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBNZWRpYVRpbWUgbV9tYXhUaW1lTG9hZGVkQXRMYXN0
RGlkTG9hZGluZ1Byb2dyZXNzOwogICAgIG11dGFibGUgRmxvYXRTaXplIG1fY2FjaGVkTmF0dXJh
bFNpemU7CiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8TWVkaWFQbGF5YmFja1RhcmdldD4gbV9wbGF5YmFja1RhcmdldDsKKyAgICBSZWZQ
dHI8TWVkaWFQbGF5YmFja1RhcmdldD4gbV9wbGF5YmFja1RhcmdldDsKICAgICBib29sIG1fY3Vy
cmVudFBsYXliYWNrVGFyZ2V0SXNTdXBwb3J0ZWQgeyB0cnVlIH07CiAjZW5kaWYKIH07CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRl
UVRLaXQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCShyZXZpc2lvbiAxODI2MDcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTE1NDksMTEgKzE1NDksOSBAQCBib29sIE1lZGlhUGxheWVy
UHJpdmF0ZVFUS2l0Ojppc0N1cnJlbnRQCiAgICAgcmV0dXJuICFtX3BsYXliYWNrVGFyZ2V0LT5o
YXNBY3RpdmVSb3V0ZSgpOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpzZXRX
aXJlbGVzc1BsYXliYWNrVGFyZ2V0KGNvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXQmIHRhcmdldCkK
K3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQo
UmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYgdGFyZ2V0KQogewotICAgIGlmICghbV9wbGF5YmFj
a1RhcmdldCkKLSAgICAgICAgbV9wbGF5YmFja1RhcmdldCA9IHN0ZDo6bWFrZV91bmlxdWU8TWVk
aWFQbGF5YmFja1RhcmdldD4oKTsKLSAgICBtX3BsYXliYWNrVGFyZ2V0LT5zZXREZXZpY2VQaWNr
ZXJDb250ZXh0KHRhcmdldC5kZXZpY2VQaWNrZXJDb250ZXh0KCkpOworICAgIG1fcGxheWJhY2tU
YXJnZXQgPSBXVEY6Om1vdmUodGFyZ2V0KTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVR
VEtpdDo6dG9nZ2xlUGxheWluZ1RvUGxheWJhY2tUYXJnZXQoKQpJbmRleDogU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2
aXNpb24gMTgyNjA3KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMjUgQEAKKzIwMTUtMDQtMDkgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNv
bkBhcHBsZS5jb20+CisKKyAgICAgICAgW01hY10gUmVmYWN0b3IgTWVkaWFQbGF5YmFja1Rhcmdl
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzNTcx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGFzcyBh
IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0IGFjcm9zcyBwcm9jZXNzIGJvdW5kYXJ5IGluc3Rl
YWQgb2YgYSBNZWRpYVBsYXliYWNrVGFyZ2V0LgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVy
c01hYy5tbToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dD46OmVuY29kZSk6IE5ldy4KKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxNZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dD46OmRlY29kZSk6IE5ldy4KKyAgICAgICAgKElQQzo6QXJn
dW1lbnRDb2RlcjxNZWRpYVBsYXliYWNrVGFyZ2V0Pjo6ZW5jb2RlKTogRGVsZXRlZC4KKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxNZWRpYVBsYXliYWNrVGFyZ2V0Pjo6ZGVjb2RlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpkaWRDaG9vc2VQbGF5YmFja1RhcmdldCk6IFRha2UgYSBSZWY8
TWVkaWFQbGF5YmFja1RhcmdldD4mJi4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OnBsYXliYWNrVGFyZ2V0U2VsZWN0ZWQpOiBUYWtlIGEgUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+
JiYuCisKIDIwMTUtMDQtMDkgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAg
ICAgICAgIFJFR1JFU1NJT04gKHIxODI1NzMpOiBBY3Rpb24gTWVudXMgbm8gbG9uZ2VyIGFwcGVh
ciBmb3IgV2ViS2l0MiB2aWV3cyBkaXNwbGF5aW5nIGFuIGltYWdlCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCShyZXZpc2lvbiAxODI2MDcp
CisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTExNyw3ICsxMTcsNyBAQCBjbGFzcyBDb250ZW50RmlsdGVyVW5ibG9ja0hh
bmRsZXI7CiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogbmFtZXNwYWNl
IFdlYkNvcmUgewotY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldDsKK3N0cnVjdCBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dDsKIH0KICNlbmRpZgogCkBAIC00NjEsOSArNDYxLDkgQEAgdGVtcGxh
dGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOgogfTsKIAogI2lmIEVOQUJMRShXSVJF
TEVTU19QTEFZQkFDS19UQVJHRVQpCi10ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdl
YkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXQ+IHsKLSAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJn
dW1lbnRFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldCYpOwotICAg
IHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXImLCBXZWJDb3JlOjpNZWRpYVBsYXli
YWNrVGFyZ2V0Jik7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6Ok1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3Vt
ZW50RW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Jik7
CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYsIFdlYkNvcmU6Ok1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0Jik7CiB9OwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tCShy
ZXZpc2lvbiAxODI2MDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1
bWVudENvZGVyc01hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQAogI2VuZGlm
CiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQotI2ltcG9ydCA8V2ViQ29y
ZS9NZWRpYVBsYXliYWNrVGFyZ2V0Lmg+CisjaW1wb3J0IDxXZWJDb3JlL01lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0Lmg+CiAjZW5kaWYKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC00
MzcsNyArNDM3LDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPENvbnRlbnRGaWx0ZXJVbmJsb2NrSAog
fQogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKLXZvaWQgQXJndW1lbnRD
b2RlcjxNZWRpYVBsYXliYWNrVGFyZ2V0Pjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2Rl
ciwgY29uc3QgTWVkaWFQbGF5YmFja1RhcmdldCYgdGFyZ2V0KQordm9pZCBBcmd1bWVudENvZGVy
PE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5j
b2RlciwgY29uc3QgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmIHRhcmdldCkKIHsKICAgICBS
ZXRhaW5QdHI8TlNNdXRhYmxlRGF0YT4gZGF0YSA9IGFkb3B0TlMoW1tOU011dGFibGVEYXRhIGFs
bG9jXSBpbml0XSk7CiAgICAgUmV0YWluUHRyPE5TS2V5ZWRBcmNoaXZlcj4gYXJjaGl2ZXIgPSBh
ZG9wdE5TKFtbTlNLZXllZEFyY2hpdmVyIGFsbG9jXSBpbml0Rm9yV3JpdGluZ1dpdGhNdXRhYmxl
RGF0YTpkYXRhLmdldCgpXSk7CkBAIC00NDcsNyArNDQ3LDcgQEAgdm9pZCBBcmd1bWVudENvZGVy
PE1lZGlhUGxheWJhY2tUYXJnZXQ+OgogICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIHJlaW50ZXJw
cmV0X2Nhc3Q8Q0ZEYXRhUmVmPihkYXRhLmdldCgpKSk7CiB9CiAKLWJvb2wgQXJndW1lbnRDb2Rl
cjxNZWRpYVBsYXliYWNrVGFyZ2V0Pjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2Rlciwg
TWVkaWFQbGF5YmFja1RhcmdldCYgdGFyZ2V0KQorYm9vbCBBcmd1bWVudENvZGVyPE1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0Pjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgTWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQmIHRhcmdldCkKIHsKICAgICBSZXRhaW5QdHI8Q0ZEYXRh
UmVmPiBkYXRhOwogICAgIGlmICghSVBDOjpkZWNvZGUoZGVjb2RlciwgZGF0YSkpCkBAIC00NTUs
NyArNDU1LDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPE1lZGlhUGxheWJhY2tUYXJnZXQ+OgogCiAg
ICAgUmV0YWluUHRyPE5TS2V5ZWRVbmFyY2hpdmVyPiB1bmFyY2hpdmVyID0gYWRvcHROUyhbW05T
S2V5ZWRVbmFyY2hpdmVyIGFsbG9jXSBpbml0Rm9yUmVhZGluZ1dpdGhEYXRhOihOU0RhdGEgKilk
YXRhLmdldCgpXSk7CiAgICAgW3VuYXJjaGl2ZXIgc2V0UmVxdWlyZXNTZWN1cmVDb2Rpbmc6WUVT
XTsKLSAgICBpZiAoIU1lZGlhUGxheWJhY2tUYXJnZXQ6OmRlY29kZSh1bmFyY2hpdmVyLmdldCgp
LCB0YXJnZXQpKQorICAgIGlmICghTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OmRlY29kZSh1
bmFyY2hpdmVyLmdldCgpLCB0YXJnZXQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAg
ICAgW3VuYXJjaGl2ZXIgZmluaXNoRGVjb2RpbmddOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDE4MjYwNykKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTIsNiAr
MTUyLDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9DYWlyb1V0aWxpdGllcy5oPgogI2VuZGlmCiAK
KyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TKQor
I2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5YmFja1RhcmdldC5oPgorI2VuZGlmCisKIC8vIFRo
aXMgY29udHJvbHMgd2hhdCBzdHJhdGVneSB3ZSB1c2UgZm9yIG1vdXNlIHdoZWVsIGNvYWxlc2Np
bmcuCiAjZGVmaW5lIE1FUkdFX1dIRUVMX0VWRU5UUyAxCiAKQEAgLTU3MTksMTIgKzU3MjMsMTIg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnN0b3BNb25pdG9yaW5nUGxheWJhYwogICAgIGRldmljZVBp
Y2tlclByb3h5KCkuc3RvcE1vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKTsKIH0KIAotdm9pZCBX
ZWJQYWdlUHJveHk6OmRpZENob29zZVBsYXliYWNrVGFyZ2V0KGNvbnN0IFdlYkNvcmU6Ok1lZGlh
UGxheWJhY2tUYXJnZXQmIHRhcmdldCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaG9vc2VQbGF5
YmFja1RhcmdldChSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJiB0YXJnZXQpCiB7CiAgICAgaWYg
KCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6UGxheWJhY2tUYXJnZXRTZWxlY3RlZCh0YXJnZXQpLCBtX3BhZ2VJRCk7
CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQbGF5YmFja1RhcmdldFNl
bGVjdGVkKHRhcmdldC0+dGFyZ2V0Q29udGV4dCgpKSwgbV9wYWdlSUQpOwogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoYm9vbCBh
dmFpbGFibGUpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShy
ZXZpc2lvbiAxODI2MDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMjQsNyArMTAyNCw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHN0b3BNb25pdG9yaW5nUGxheWJhY2tUYXJnZXRzKCk7CiAKICAgICAvLyBXZWJDb3JlOjpNZWRp
YVBsYXliYWNrVGFyZ2V0UGlja2VyOjpDbGllbnQKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hvb3Nl
UGxheWJhY2tUYXJnZXQoY29uc3QgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldCYpIG92ZXJy
aWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRDaG9vc2VQbGF5YmFja1RhcmdldChSZWY8V2ViQ29y
ZTo6TWVkaWFQbGF5YmFja1RhcmdldD4mJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGV4
dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKGJvb2wpIG92ZXJyaWRlOwogI2Vu
ZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAkocmV2aXNpb24gMTgyNjA3KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDcgKzEyNiw2IEBAIGNsYXNzIEhUTUxQ
bHVnSW5FbGVtZW50OwogY2xhc3MgSFRNTFBsdWdJbkltYWdlRWxlbWVudDsKIGNsYXNzIEludFBv
aW50OwogY2xhc3MgS2V5Ym9hcmRFdmVudDsKLWNsYXNzIE1lZGlhUGxheWJhY2tUYXJnZXQ7CiBj
bGFzcyBQYWdlOwogY2xhc3MgUHJpbnRDb250ZXh0OwogY2xhc3MgUmFuZ2U7CkBAIC0xMzksNiAr
MTM4LDcgQEAgY2xhc3MgVVJMOwogY2xhc3MgVmlzaWJsZVNlbGVjdGlvbjsKIHN0cnVjdCBIaWdo
bGlnaHQ7CiBzdHJ1Y3QgS2V5cHJlc3NDb21tYW5kOworc3RydWN0IE1lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0Owogc3RydWN0IFRleHRDaGVja2luZ1Jlc3VsdDsKIH0KIApAQCAtMTEwNSw3ICsx
MTA1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldFNob3VsZERpc3BhdGNoRmFrZU1vdXNlTW92
ZUV2ZW50cyhib29sIGRpc3BhdGNoKSB7IG1fc2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZl
bnRzID0gZGlzcGF0Y2g7IH0KIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQp
ICYmICFQTEFURk9STShJT1MpCi0gICAgdm9pZCBwbGF5YmFja1RhcmdldFNlbGVjdGVkKGNvbnN0
IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXQmIG91dHB1dERldmljZSkgY29uc3Q7CisgICAg
dm9pZCBwbGF5YmFja1RhcmdldFNlbGVjdGVkKGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0JiBvdXRwdXREZXZpY2UpIGNvbnN0OwogICAgIHZvaWQgcGxheWJhY2tUYXJn
ZXRBdmFpbGFiaWxpdHlEaWRDaGFuZ2UoYm9vbCk7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4J
KHJldmlzaW9uIDE4MjYwNykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC00MTgsNyArNDE4LDcgQEAgbWVz
c2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0U2hvdWxkRGlzcGF0Y2hG
YWtlTW91c2VNb3ZlRXZlbnRzKGJvb2wgc2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRz
KQogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElP
UykKLSAgICBQbGF5YmFja1RhcmdldFNlbGVjdGVkKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJn
ZXQgdGFyZ2V0KQorICAgIFBsYXliYWNrVGFyZ2V0U2VsZWN0ZWQoc3RydWN0IFdlYkNvcmU6Ok1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0IHRhcmdldCkKICAgICBQbGF5YmFja1RhcmdldEF2YWls
YWJpbGl0eURpZENoYW5nZShib29sIGF2YWlsYWJsZSkKICNlbmRpZgogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCShy
ZXZpc2lvbiAxODI2MDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1dlYlBhZ2VNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTg4LDcgKzg4LDcgQEAKICNpbXBvcnQg
PFdlYktpdFN5c3RlbUludGVyZmFjZS5oPgogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNL
X1RBUkdFVCkKLSNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWJhY2tUYXJnZXQuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL01lZGlhUGxheWJhY2tUYXJnZXRNYWMuaD4KICNlbmRpZgogCiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKQEAgLTEyMjgsOSArMTIyOCwxMSBAQCB2b2lkIFdlYlBhZ2U6OnNl
dEZvbnQoY29uc3QgU3RyaW5nJiBmb250CiB9CiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJB
Q0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TKQotdm9pZCBXZWJQYWdlOjpwbGF5YmFja1Rhcmdl
dFNlbGVjdGVkKGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXQmIHBsYXliYWNrVGFy
Z2V0KSBjb25zdAordm9pZCBXZWJQYWdlOjpwbGF5YmFja1RhcmdldFNlbGVjdGVkKGNvbnN0IFdl
YkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiB0YXJnZXRDb250ZXh0KSBjb25zdAog
ewotICAgIG1fcGFnZS0+ZGlkQ2hvb3NlUGxheWJhY2tUYXJnZXQocGxheWJhY2tUYXJnZXQpOwor
ICAgIEFTU0VSVCh0YXJnZXRDb250ZXh0LnR5cGUgPT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRl
eHQ6OkFWT3V0cHV0Q29udGV4dFR5cGUpOworCisgICAgbV9wYWdlLT5kaWRDaG9vc2VQbGF5YmFj
a1RhcmdldChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0TWFjOjpjcmVhdGUodGFyZ2V0Q29u
dGV4dC5jb250ZXh0LmF2T3V0cHV0Q29udGV4dCkpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnBsYXli
YWNrVGFyZ2V0QXZhaWxhYmlsaXR5RGlkQ2hhbmdlKGJvb2wgY2hhbmdlZCkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE4MjYwNykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDE1LTA0LTA5ICBFcmljIENhcmxz
b24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIFJlZmFjdG9yIE1l
ZGlhUGxheWJhY2tUYXJnZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE0MzU3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLmg6CisgICAg
ICAgICogV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLm1tOgorICAgICAgICAo
V2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcjo6ZGlkQ2hvb3NlUGxheWJhY2tUYXJnZXQpOiBU
YWtlIGEgUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYuCisKIDIwMTUtMDQtMDkgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBbV0syXVtpT1NdIGVkaXRvclN0YXRl
KCkgc2hvdWxkIG5vdCBjYXVzZSBhIHN5bmNocm9ub3VzIGxheW91dApJbmRleDogU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlj
a2VyLmgJKHJldmlzaW9uIDE4MjYwNykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0b3BNb25pdG9yaW5nUGxheWJhY2tUYXJnZXRzKCk7CiAK
ICAgICAvLyBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyOjpDbGllbnQKLSAgICB2
aXJ0dWFsIHZvaWQgZGlkQ2hvb3NlUGxheWJhY2tUYXJnZXQoY29uc3QgV2ViQ29yZTo6TWVkaWFQ
bGF5YmFja1RhcmdldCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRDaG9vc2VQbGF5
YmFja1RhcmdldChSZWY8V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldD4mJikgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCB2b2lkIGV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdl
KGJvb2wpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0
UGlja2VyLm1tCShyZXZpc2lvbiAxODI2MDcpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTU1LDEy
ICs1NSwxMiBAQCB2b2lkIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXI6OnN0b3BNCiAgICAg
dGFyZ2V0UGlja2VyKCkuc3RvcE1vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKTsKIH0KIAotdm9p
ZCBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyOjpkaWRDaG9vc2VQbGF5YmFja1RhcmdldChj
b25zdCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0JiB0YXJnZXQpCit2b2lkIFdlYk1lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXI6OmRpZENob29zZVBsYXliYWNrVGFyZ2V0KFJlZjxXZWJDb3Jl
OjpNZWRpYVBsYXliYWNrVGFyZ2V0PiYmIHRhcmdldCkKIHsKICAgICBpZiAoIW1fcGFnZSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgbV9wYWdlLT5kaWRDaG9vc2VQbGF5YmFja1RhcmdldCh0YXJn
ZXQpOworICAgIG1fcGFnZS0+ZGlkQ2hvb3NlUGxheWJhY2tUYXJnZXQoV1RGOjptb3ZlKHRhcmdl
dCkpOwogfQogCiB2b2lkIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXI6OmV4dGVybmFsT3V0
cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKGJvb2wgYXZhaWxhYmxlKQo=
</data>
<flag name="review"
          id="275258"
          type_id="1"
          status="+"
          setter="jer.noble"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250490</attachid>
            <date>2015-04-09 18:05:49 -0700</date>
            <delta_ts>2015-04-09 18:05:49 -0700</delta_ts>
            <desc>Patch for the bots.</desc>
            <filename>use_ref_ptr_patch_6.txt</filename>
            <type>text/plain</type>
            <size>61953</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MjYwNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkxIEBACisyMDE1LTA0LTA5ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIFJlZmFjdG9y
IE1lZGlhUGxheWJhY2tUYXJnZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0MzU3MQorCisgICAgICAgIFJldmlld2VkIGJ5IEplciBOb2JsZS4KKwor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmFkZFBsYXliYWNr
VGFyZ2V0UGlja2VyQ2xpZW50KTogRG9uJ3QgY2FsbCBjbGllbnQgaWYgcGFnZSBwbGF5YmFjayB0
YXJnZXQKKyAgICAgICAgICAgIGlzIE5VTEwuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
ZGlkQ2hvb3NlUGxheWJhY2tUYXJnZXQpOiBNZWRpYVBsYXliYWNrVGFyZ2V0IGlzIHBhc3NlZCBh
cyBhIFJlZjw+CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisKKyAgICAgICAgKiBodG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6
c2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldCk6IE1lZGlhUGxheWJhY2tUYXJnZXQgaXMgcGFzc2Vk
IGFzIGEgUmVmPD4KKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKworICAgICAg
ICAqIGh0bWwvSFRNTE1lZGlhU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFTZXNzaW9uOjpIVE1MTWVkaWFTZXNzaW9uKTogRG9uJ3QgaW5pdGlhbGl6ZSBtX3BsYXliYWNr
VGFyZ2V0LgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhU2Vzc2lvbjo6ZGlkQ2hvb3NlUGxh
eWJhY2tUYXJnZXQpOiBNZWRpYVBsYXliYWNrVGFyZ2V0IGlzIHBhc3NlZCBhcyBhIFJlZjw+Cisg
ICAgICAgICogaHRtbC9IVE1MTWVkaWFTZXNzaW9uLmg6CisKKyAgICAgICAgKiBwYWdlL1BhZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6UGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlOjpwbGF5YmFja1RhcmdldCk6IG1fcGxheWJhY2tUYXJnZXQgaXMgYSBSZWZQdHI8TWVkaWFQ
bGF5YmFja1RhcmdldD4KKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmRpZENob29zZVBsYXliYWNr
VGFyZ2V0KTogRGl0dG8uCisgICAgICAgICogcGFnZS9QYWdlLmg6CisKKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9NZWRpYVNlc3Npb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lv
bkNsaWVudDo6c2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldCk6IFRha2UgYSBSZWY8TWVkaWFQbGF5
YmFja1RhcmdldD4mJi4KKworICAgICAgICBNYWtlIE1lZGlhUGxheWJhY2tUYXJnZXQgUmVmQ291
bnRlZCwgYW5kIGRvbid0IHJlcXVpcmUgaXQgdG8gYmUgc2VyaWFsaXphYmxlIHNvIGl0IGNhbiBi
ZQorICAgICAgICBzdWJjbGFzc2VkIHRvIGtlZXAgcG9ydC1zcGVjaWZpYyBpZm9ybWF0aW9uIG91
dCBvZiB0aGUgYmFzZSBjbGFzcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXliYWNrVGFyZ2V0Lmg6IAorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldDo6
dGFyZ2V0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Ojp0YXJn
ZXRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXQ6Omhhc0Fj
dGl2ZVJvdXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXQ6Ok1lZGlh
UGxheWJhY2tUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldDo6
c2V0RGV2aWNlUGlja2VyQ29udGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXliYWNrVGFyZ2V0OjpkZXZpY2VQaWNrZXJDb250ZXh0KTogRGVsZXRlZC4KKworICAgICAg
ICBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCBpcyB0aGUgc3RydWN0IHRoYXQgaXMgc2VyaWFs
aXplZCB0byBwYXNzIGFjcm9zcyB0aGUgcHJvY2VzcyBib3VkYXJ5LgorICAgICAgICBJdCBoYXMg
dW5pb24gdG8gaG9sZCBwb3J0LXNwZWNpZmljIGRhdGEuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaDogQWRkZWQuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLmg6IGRpZENob29zZVBs
YXliYWNrVGFyZ2V0IHRha2VzIGEgUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50Lmg6IERp
dHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KTogRGl0
dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlOjpzZXRXaXJlbGVzc1BsYXliYWNrVGFy
Z2V0KToKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBs
YXliYWNrVGFyZ2V0Q29udGV4dE1hYy5tbTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6ZW5jb2RlKTogRW5jb2RlIHRoZSBhdk91dHB1dENvbnRl
eHQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6ZGVjb2Rl
KTogRGVjb2RlIHRoZSBhdk91dHB1dENvbnRleHQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5YmFja1RhcmdldE1hYy5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRNYWM6OnRhcmdldFR5cGUpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldE1hYzo6b3V0cHV0Q29udGV4dCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWJhY2tUYXJnZXRN
YWMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0TWFjOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldE1hYzo6TWVkaWFQbGF5YmFj
a1RhcmdldE1hYyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0TWFjOjp+
TWVkaWFQbGF5YmFja1RhcmdldE1hYyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNr
VGFyZ2V0TWFjOjp0YXJnZXRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJh
Y2tUYXJnZXRNYWM6Omhhc0FjdGl2ZVJvdXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvTWVkaWFQ
bGF5YmFja1RhcmdldE1hYyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0
OjplbmNvZGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1Rhcmdl
dDo6ZGVjb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJn
ZXQ6Omhhc0FjdGl2ZVJvdXRlKTogRGVsZXRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTWFjOjpjdXJyZW50RGV2
aWNlRGlkQ2hhbmdlKTogQWxsb2NhdGUgYW5kIHBhc3MgYSBNZWRpYVBsYXliYWNrVGFyZ2V0TWFj
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oOgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5t
bToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQpOiBUYWtlIGEgUmVmPE1lZGlhUGxheWJhY2tUYXJn
ZXQmJgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDOjpzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KTogRGl0dG8uCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW06Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6c2V0V2lyZWxlc3NQbGF5
YmFja1RhcmdldCk6IERpdHRvLgorCiAyMDE1LTA0LTA5ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5m
cmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmVydCBwYXJ0IG9mIDE4MjUxNjogaXQgYnJv
a2UgdGVzdHMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE4MjYwNykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTIxLDYgKzEy
MSw4IEBACiAJCTA3MTE1ODkxMTdERjZGNjYwMEVERkUyQiAvKiBNZWRpYVN0cmVhbVByaXZhdGUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcxMTU4
OEYxN0RGNjMzNzAwRURGRTJCIC8qIE1lZGlhU3RyZWFtUHJpdmF0ZS5jcHAgKi87IH07CiAJCTA3
MUE5RUMyMTY4RkJDNDMwMDI2MjlGOSAvKiBUZXh0VHJhY2tDdWVHZW5lcmljLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MUE5RUMwMTY4RkI1NkMw
MDI2MjlGOSAvKiBUZXh0VHJhY2tDdWVHZW5lcmljLmNwcCAqLzsgfTsKIAkJMDcxQTlFQzMxNjhG
QkM1NTAwMjYyOUY5IC8qIFRleHRUcmFja0N1ZUdlbmVyaWMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MUE5RUMxMTY4RkI1NkMwMDI2MjlGOSAvKiBU
ZXh0VHJhY2tDdWVHZW5lcmljLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJMDcxRTQ5NkUxQUQ1QUEwRDAwOEE1MEI0IC8qIE1lZGlhUGxheWJhY2tU
YXJnZXRNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwNzFFNDk2RDFBRDVBQTBEMDA4QTUwQjQgLyogTWVkaWFQbGF5YmFja1RhcmdldE1hYy5tbSAq
LzsgfTsKKwkJMDcxRTQ5NzAxQUQ1QUI1RTAwOEE1MEI0IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRN
YWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MUU0
OTZGMUFENUFCNUUwMDhBNTBCNCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0TWFjLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDcyMEIwQTAxNEQzMzIz
NTAwNjQyOTU1IC8qIEdlbmVyaWNFdmVudFF1ZXVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MjBCMDlFMTREMzMyMzUwMDY0Mjk1NSAvKiBHZW5l
cmljRXZlbnRRdWV1ZS5jcHAgKi87IH07CiAJCTA3MjBCMEExMTREMzMyMzUwMDY0Mjk1NSAvKiBH
ZW5lcmljRXZlbnRRdWV1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDcyMEIwOUYxNEQzMzIzNTAwNjQyOTU1IC8qIEdlbmVyaWNFdmVudFF1ZXVlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDcyNzdF
NEMxN0QwMThDQzAwMTU1MzREIC8qIEpTTWVkaWFTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcyNzdFNDAxN0QwMThDQzAwMTU1MzREIC8q
IEpTTWVkaWFTdHJlYW0uY3BwICovOyB9OwpAQCAtMTc1LDcgKzE3Nyw2IEBACiAJCTA3NEU4MkJC
MThBNjlGMEUwMDdFRjU0QyAvKiBQbGF0Zm9ybVRpbWVSYW5nZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NEU4MkI5MThBNjlGMEUwMDdFRjU0QyAv
KiBQbGF0Zm9ybVRpbWVSYW5nZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwNzUzODYwMjE0NDg5RTk4MDBCNzg0NTIgLyogQ2FjaGVkVGV4dFRy
YWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3
NTM4NjAwMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRUZXh0VHJhY2suY3BwICovOyB9OwogCQkw
NzUzODYwMzE0NDg5RTk4MDBCNzg0NTIgLyogQ2FjaGVkVGV4dFRyYWNrLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzUzODYwMTE0NDg5RTk4MDBCNzg0
NTIgLyogQ2FjaGVkVGV4dFRyYWNrLmggKi87IH07Ci0JCTA3NjBDMTdBMUFBOEZDN0QwMDlFRDdC
OCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDdFM0RGRDIxQTlFNzhBNTAwNzY0Q0E4IC8qIE1lZGlhUGxh
eWJhY2tUYXJnZXRNYWMubW0gKi87IH07CiAJCTA3NjMwNkQwMTdFMTQ3OEQwMDVBN0M0RSAvKiBN
ZWRpYVN0cmVhbVRyYWNrU291cmNlc0NhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzYzMDZDQzE3RTE0NzhEMDA1QTdDNEUgLyogTWVkaWFT
dHJlYW1UcmFja1NvdXJjZXNDYWxsYmFjay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTA3NjMwNkQyMTdFMTQ3OEQwMDVBN0M0RSAvKiBNZWRpYVN0
cmVhbVRyYWNrU291cmNlc1JlcXVlc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDc2MzA2Q0UxN0UxNDc4RDAwNUE3QzRFIC8qIE1lZGlhU3RyZWFt
VHJhY2tTb3VyY2VzUmVxdWVzdC5jcHAgKi87IH07CiAJCTA3NjMwNkQzMTdFMTQ3OEQwMDVBN0M0
RSAvKiBNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NjMwNkNGMTdFMTQ3OEQwMDVBN0M0RSAvKiBN
ZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzQ5LDcgKzM1MCw4IEBACiAJCTA3RTlFMTMwMThG
NjJCMzcwMDExQTNBNCAvKiBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdFOUUxMkYxOEY2
MkIzNzAwMTFBM0E0IC8qIEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAgKi87
IH07CiAJCTA3RURDM0VFMUFBQ0I3NUQwMDk4M0VCNSAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyTWFj
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RURD
M0VEMUFBQ0I3NUQwMDk4M0VCNSAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNwcCAqLzsgfTsK
IAkJMDdGMEI5N0ExQUM1REIzMzAwRTUzNUQ5IC8qIEFWS2l0U1BJLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0YwQjk3OTFBQzVEQjMzMDBFNTM1RDkg
LyogQVZLaXRTUEkuaCAqLzsgfTsKLQkJMDdGMEI5N0MxQUM1REI0NjAwRTUzNUQ5IC8qIEFWRm91
bmRhdGlvblNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDdGMEI5N0IxQUM1REI0NjAwRTUzNUQ5IC8qIEFWRm91bmRhdGlvblNQSS5oICovOyB9Owor
CQkwN0YwQjk3QzFBQzVEQjQ2MDBFNTM1RDkgLyogQVZGb3VuZGF0aW9uU1BJLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0YwQjk3QjFBQzVEQjQ2MDBF
NTM1RDkgLyogQVZGb3VuZGF0aW9uU1BJLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJMDdGODc2ODQxQUQ1ODBGOTAwOTA1ODQ5IC8qIE1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwN0Y4NzY4MzFBRDRBOTQ1MDA5MDU4NDkgLyogTWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkwN0Y5NDQxNjE4NjREMDQ2MDA1RDMxQ0IgLyogTWVkaWFTZXNzaW9uTWFuYWdlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBRThDMDgxNzQ2
Qjk1NzAwNTMyRDc4IC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwN0ZCREUyQzE4RkVEMTc4MDAxQTdDRkYg
LyogSlNEYXRhQ3VlQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDA3RkJERTJCMThGRUQxNzgwMDFBN0NGRiAvKiBKU0RhdGFDdWVDdXN0b20u
Y3BwICovOyB9OwogCQkwN0ZFOTlEQzE4ODA3QTdEMDAyNTY2NDggLyogSFRNTE1lZGlhU2Vzc2lv
bi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0ZF
OTlEQTE4ODA3QTdEMDAyNTY2NDggLyogSFRNTE1lZGlhU2Vzc2lvbi5jcHAgKi87IH07CkBAIC03
MTIwLDYgKzcxMjIsOCBAQAogCQkwNzExNTg4RjE3REY2MzM3MDBFREZFMkIgLyogTWVkaWFTdHJl
YW1Qcml2YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlh
U3RyZWFtUHJpdmF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MUE5RUMw
MTY4RkI1NkMwMDI2MjlGOSAvKiBUZXh0VHJhY2tDdWVHZW5lcmljLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRUcmFja0N1ZUdlbmVyaWMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwNzFBOUVDMTE2OEZCNTZDMDAyNjI5RjkgLyogVGV4dFRy
YWNrQ3VlR2VuZXJpYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0VHJh
Y2tDdWVHZW5lcmljLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MUU0OTZEMUFE
NUFBMEQwMDhBNTBCNCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0TWFjLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVkaWFQbGF5YmFja1RhcmdldE1hYy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcxRTQ5NkYxQUQ1QUI1RTAwOEE1MEI0IC8qIE1l
ZGlhUGxheWJhY2tUYXJnZXRNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TWVkaWFQbGF5YmFja1RhcmdldE1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
NzIwQjA5RTE0RDMzMjM1MDA2NDI5NTUgLyogR2VuZXJpY0V2ZW50UXVldWUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VuZXJpY0V2ZW50UXVldWUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzIwQjA5RjE0RDMzMjM1MDA2NDI5NTUgLyogR2Vu
ZXJpY0V2ZW50UXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJp
Y0V2ZW50UXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcyMjFCNEExN0NF
QzMyNzAwODQ4RTUxIC8qIE1lZGlhQ29uc3RyYWludHNJbXBsLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhQ29uc3RyYWludHNJbXBsLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTczODMsMTIgKzczODcsMTIgQEAKIAkJMDdFMTE2QjAxNDg5
QzlBMTAwRUM1QUNFIC8qIEpTVGV4dFRyYWNrQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTVGV4dFRyYWNrQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMDdFMTE3MDYxNDg5RUJFQjAwRUM1QUNFIC8qIEpTVGV4dFRyYWNrQ3Vl
Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVGV4dFRy
YWNrQ3VlQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdFM0RGRDAx
QTlFNzg2NTAwNzY0Q0E4IC8qIE1lZGlhUGxheWJhY2tUYXJnZXQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFQbGF5YmFja1RhcmdldC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQkwN0UzREZEMjFBOUU3OEE1MDA3NjRDQTggLyogTWVkaWFQbGF5YmFja1Rh
cmdldE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IE1lZGlh
UGxheWJhY2tUYXJnZXRNYWMubW07IHBhdGggPSBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vTWVkaWFQbGF5YmFja1RhcmdldE1hYy5tbTsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9
OwogCQkwN0U5RTEyRDE4RjVFMjc2MDAxMUEzQTQgLyogSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQ
cml2YXRlQVZGLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluYmFuZE1ldGFk
YXRhVGV4dFRyYWNrUHJpdmF0ZUFWRi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
N0U5RTEyRjE4RjYyQjM3MDAxMUEzQTQgLyogSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRl
QVZGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluYmFuZE1ldGFk
YXRhVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTA3RURDM0VEMUFBQ0I3NUQwMDk4M0VCNSAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhU2Vzc2lvbk1hbmFnZXJN
YWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0YwQjk3OTFBQzVEQjMzMDBF
NTM1RDkgLyogQVZLaXRTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVZL
aXRTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdGMEI5N0IxQUM1REI0NjAw
RTUzNUQ5IC8qIEFWRm91bmRhdGlvblNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBVkZvdW5kYXRpb25TUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDdG
ODc2ODMxQUQ0QTk0NTAwOTA1ODQ5IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3RkJERTJCMThGRUQxNzgwMDFBN0NG
RiAvKiBKU0RhdGFDdWVDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNEYXRhQ3VlQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MDdGRTk5REExODgwN0E3RDAwMjU2NjQ4IC8qIEhUTUxNZWRpYVNlc3Npb24uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTE1lZGlhU2Vzc2lvbi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3RkU5OURCMTg4MDdBN0QwMDI1NjY0OCAvKiBIVE1M
TWVkaWFTZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxNZWRp
YVNlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0NzQ4LDYgKzE0NzUy
LDggQEAKIAkJMDc2RjBEMDgxMkI4MTkyNzAwQzI2QUE0IC8qIGF2Zm91bmRhdGlvbiAqLyA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMDcxRTQ5NkYxQUQ1QUI1
RTAwOEE1MEI0IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRNYWMuaCAqLywKKwkJCQkwNzFFNDk2RDFB
RDVBQTBEMDA4QTUwQjQgLyogTWVkaWFQbGF5YmFja1RhcmdldE1hYy5tbSAqLywKIAkJCQlERjlB
RkQ2RjEzRkMzMUIwMDAxNUZFQjcgLyogb2JqYyAqLywKIAkJCQlDREUzQTg1MjE3RjVGQ0U2MDBD
NUJFMjAgLyogQXVkaW9UcmFja1ByaXZhdGVBVkYuaCAqLywKIAkJCQkwN0U5RTEyRjE4RjYyQjM3
MDAxMUEzQTQgLyogSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmNwcCAqLywKQEAg
LTE0NzU2LDcgKzE0NzYyLDYgQEAKIAkJCQkwN0I0NDJENTE2NkM3MEIwMDA1NTZDQUQgLyogSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oICovLAogCQkJCTA3OEU0M0RCMUFCQjZGNkYwMDFDMkZB
NiAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTWFjLmggKi8sCiAJCQkJMDc4RTQzREMxQUJC
NkY2RjAwMUMyRkE2IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNYWMubW0gKi8sCi0JCQkJ
MDdFM0RGRDIxQTlFNzhBNTAwNzY0Q0E4IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRNYWMubW0gKi8s
CiAJCQkJMDc2RjBEMDkxMkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbi5jcHAgKi8sCiAJCQkJMDc2RjBEMEExMkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oICovLAogCQkJCUNENjQxRUJEMTgxOUIzNTkwMEVFNEM0
MSAvKiBNZWRpYVRpbWVBVkZvdW5kYXRpb24uY3BwICovLApAQCAtMjA4MTYsNiArMjA4MjEsNyBA
QAogCQkJCTE0MURDMDRFMTY0ODM0QjkwMDM3MUU1QSAvKiBMYXlvdXRTaXplLmggKi8sCiAJCQkJ
NkM1NjhDQUUxOURBRkVBMDAwNDMwQ0EyIC8qIE1hc2tJbWFnZU9wZXJhdGlvbi5jcHAgKi8sCiAJ
CQkJNkM1NjhDQUYxOURBRkVBMDAwNDMwQ0EyIC8qIE1hc2tJbWFnZU9wZXJhdGlvbi5oICovLAor
CQkJCTA3Rjg3NjgzMUFENEE5NDUwMDkwNTg0OSAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dC5oICovLAogCQkJCTA3OEU0M0Q3MUFCQjZDN0UwMDFDMkZBNiAvKiBNZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyLmNwcCAqLywKIAkJCQkwNzhFNDNEODFBQkI2QzdFMDAxQzJGQTYgLyogTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlci5oICovLAogCQkJCTA3OTIxNjUzMUFBNTYwQUEwMEEzQzA0OSAv
KiBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50LmggKi8sCkBAIC0yNTQ3MCw2ICsyNTQ3
Niw3IEBACiAJCQkJQjJGQTNEOUQwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHR3JhZGllbnRFbGVt
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QkU3NDI3MzgxRkE5MDZGQkI0RjBGMkMgLyogSlNT
VkdHcmFwaGljc0VsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0ODUyMjdDMTE5MDE2MkMw
MDZFREM3RiAvKiBKU1NWR0hLZXJuRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDdGODc2
ODQxQUQ1ODBGOTAwOTA1ODQ5IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCMkZBM0Q5RjBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdJbWFnZUVsZW1l
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzREExMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NW
R0xlbmd0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNEQTMwQUI3NUE2RjAwMEU1QUM0IC8q
IEpTU1ZHTGVuZ3RoTGlzdC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTcyMCw2ICsyNTcyNyw3IEBA
CiAJCQkJQ0RDOEI1QTMxODA0NjM0NzAwMTZFNjg1IC8qIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ0NjEzRTYwQ0Q2ODFBOTAwRkFE
QTc1IC8qIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0RTE5
NTkyQTBBMzlEQUNDMDAyMjBGRTUgLyogTWVkaWFRdWVyeS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MDcxRTQ5NzAxQUQ1QUI1RTAwOEE1MEI0IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRNYWMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTRFMTk1OTJDMEEzOURBQ0MwMDIyMEZFNSAvKiBNZWRpYVF1ZXJ5RXZh
bHVhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk0RTE5NTkyRTBBMzlEQUNDMDAyMjBGRTUgLyog
TWVkaWFRdWVyeUV4cC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRDNBOTRBMzkxMjJEQUJBQzAwQTM3
QkJDIC8qIE1lZGlhUXVlcnlMaXN0LmggaW4gSGVhZGVycyAqLywKQEAgLTI4MDc1LDcgKzI4MDgz
LDYgQEAKIAkJCQk5QkFCNkM2RDEyNTUwNjMxMDAxNjI2RDQgLyogRWRpdGluZ1N0eWxlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTRCMzA0M0NDMEFFMDM3M0IwMEE4MjY0NyAvKiBFZGl0b3IuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJOTNBMzhCNEIwRDBFNTgwODAwNjg3MkMyIC8qIEVkaXRvckNv
bW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMDc2MEMxN0ExQUE4RkM3RDAwOUVEN0I4IC8q
IE1lZGlhUGxheWJhY2tUYXJnZXRNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlGRUQxM0QzQTBD
RUE5MzQ2MDBEODk0NjYgLyogRWRpdG9ySU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRUQ1MDFE
QzYwQjI0OUYyOTAwQUUxOEQ5IC8qIEVkaXRvck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE4
QzRBODA4MDlENTYzMjcwMDAzQUM4RCAvKiBFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAt
MzAzOTEsNiArMzAzOTgsNyBAQAogCQkJCUE3RDZCMzRBMEY2MTEwNDUwMEI3OUZEMSAvKiBXb3Jr
ZXJTY3JpcHRMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkU0MzQ2NTQwRjU0NkE4MjAw
QjBGMUJBIC8qIFdvcmtlclRocmVhZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwQjkwNTZGODBG
MjY4NUYzMDA5NUZGNkEgLyogV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQkwNzFFNDk2RTFBRDVBQTBEMDA4QTUwQjQgLyogTWVkaWFQbGF5YmFja1RhcmdldE1h
Yy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTk3QUFCRDJDMTRGQTA5RDUwMDc0NTdBRSAvKiBXb3Jr
ZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzMw
OUUyMzA5OUU2NDkyMDA1NkU1ODEgLyogV3JhcENvbnRlbnRzSW5EdW1teVNwYW5Db21tYW5kLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTUxQjQ1RDIwMUFCOEQxRTIwMDExN0NEMiAvKiBDb250ZW50
RXh0ZW5zaW9uLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CShyZXZpc2lvbiAxODI2MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02NTM5LDcgKzY1MzksOSBAQCB2b2lkIERvY3VtZW50OjphZGRQbGF5
YmFja1RhcmdldFBpY2tlckNsCiAKICAgICBtX3BsYXliYWNrVGFyZ2V0Q2xpZW50cy5hZGQoJmNs
aWVudCk7CiAKLSAgICBjbGllbnQuZGlkQ2hvb3NlUGxheWJhY2tUYXJnZXQocGFnZS0+cGxheWJh
Y2tUYXJnZXQoKSk7CisgICAgUmVmUHRyPE1lZGlhUGxheWJhY2tUYXJnZXQ+IHRhcmdldCA9IHBh
Z2UtPnBsYXliYWNrVGFyZ2V0KCk7CisgICAgaWYgKHRhcmdldCkKKyAgICAgICAgY2xpZW50LmRp
ZENob29zZVBsYXliYWNrVGFyZ2V0KCp0YXJnZXQpOwogICAgIGNsaWVudC5leHRlcm5hbE91dHB1
dERldmljZUF2YWlsYWJsZURpZENoYW5nZShwYWdlLT5oYXNXaXJlbGVzc1BsYXliYWNrVGFyZ2V0
KCkpOwogfQogCkBAIC02NTgwLDEwICs2NTgyLDEwIEBAIHZvaWQgRG9jdW1lbnQ6OnBsYXliYWNr
VGFyZ2V0QXZhaWxhYmlsaXQKICAgICAgICAgY2xpZW50LT5leHRlcm5hbE91dHB1dERldmljZUF2
YWlsYWJsZURpZENoYW5nZShhdmFpbGFibGUpOwogfQogCi12b2lkIERvY3VtZW50OjpkaWRDaG9v
c2VQbGF5YmFja1RhcmdldChjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0JiBkZXZpY2UpCit2b2lk
IERvY3VtZW50OjpkaWRDaG9vc2VQbGF5YmFja1RhcmdldChSZWY8TWVkaWFQbGF5YmFja1Rhcmdl
dD4mJiBkZXZpY2UpCiB7CiAgICAgZm9yIChhdXRvKiBjbGllbnQgOiBtX3BsYXliYWNrVGFyZ2V0
Q2xpZW50cykKLSAgICAgICAgY2xpZW50LT5kaWRDaG9vc2VQbGF5YmFja1RhcmdldChkZXZpY2Up
OworICAgICAgICBjbGllbnQtPmRpZENob29zZVBsYXliYWNrVGFyZ2V0KGRldmljZS5jb3B5UmVm
KCkpOwogfQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiAxODI2
MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MTIzNSw3ICsxMjM1LDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNL
X1RBUkdFVCkKICAgICB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihjb25zdCBIVE1MTWVk
aWFFbGVtZW50Jik7Ci0gICAgdm9pZCBkaWRDaG9vc2VQbGF5YmFja1RhcmdldChjb25zdCBNZWRp
YVBsYXliYWNrVGFyZ2V0Jik7CisgICAgdm9pZCBkaWRDaG9vc2VQbGF5YmFja1RhcmdldChSZWY8
TWVkaWFQbGF5YmFja1RhcmdldD4mJik7CiAgICAgdm9pZCBhZGRQbGF5YmFja1RhcmdldFBpY2tl
ckNsaWVudChNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50Jik7CiAgICAgdm9pZCByZW1v
dmVQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudChNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyQ2xp
ZW50Jik7CiAgICAgYm9vbCByZXF1aXJlc1BsYXliYWNrVGFyZ2V0Um91dGVNb25pdG9yaW5nKCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHJldmlzaW9u
IDE4MjYwNykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ4ODYsMTEgKzQ4ODYsMTEgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjplbnF1ZXVlUGxheWJhY2tUYQogICAgIG1fYXN5bmNFdmVudFF1ZXVlLmVucXVldWVFdmVudChl
dmVudC5yZWxlYXNlKCkpOwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFdpcmVsZXNz
UGxheWJhY2tUYXJnZXQoY29uc3QgTWVkaWFQbGF5YmFja1RhcmdldCYgZGV2aWNlKQordm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KFJlZjxNZWRpYVBsYXli
YWNrVGFyZ2V0PiYmIGRldmljZSkKIHsKICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50
OjpzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KCVwKSIsIHRoaXMpOwogICAgIGlmIChtX3BsYXll
cikKLSAgICAgICAgbV9wbGF5ZXItPnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoZGV2aWNlKTsK
KyAgICAgICAgbV9wbGF5ZXItPnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoV1RGOjptb3ZlKGRl
dmljZSkpOwogfQogCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmNhblBsYXlUb1dpcmVsZXNzUGxh
eWJhY2tUYXJnZXQoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmgJKHJldmlzaW9uIDE4MjYwNykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNjMsNyArMzYzLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCB3aXJlbGVzc1JvdXRlc0F2YWlsYWJsZURpZENoYW5nZSgpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgYm9vbCBjYW5QbGF5VG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0KCkgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGlzUGxheWluZ1RvV2lyZWxlc3NQbGF5YmFj
a1RhcmdldCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRXaXJlbGVzc1Bs
YXliYWNrVGFyZ2V0KGNvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXQmKSBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChSZWY8TWVkaWFQbGF5YmFja1Rh
cmdldD4mJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0UGxheWluZ1RvUGxheWJh
Y2tUYXJnZXQoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcFBsYXlpbmdUb1BsYXli
YWNrVGFyZ2V0KCkgb3ZlcnJpZGU7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhU2Vzc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFTZXNzaW9uLmNwcAkocmV2aXNpb24gMTgyNjA3KQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFTZXNzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYsNyArNzYsNiBA
QCBIVE1MTWVkaWFTZXNzaW9uOjpIVE1MTWVkaWFTZXNzaW9uKE1lZGlhCiAgICAgLCBtX3Jlc3Ry
aWN0aW9ucyhOb1Jlc3RyaWN0aW9ucykKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFS
R0VUKQogICAgICwgbV90YXJnZXRBdmFpbGFiaWxpdHlDaGFuZ2VkVGltZXIoKnRoaXMsICZIVE1M
TWVkaWFTZXNzaW9uOjp0YXJnZXRBdmFpbGFiaWxpdHlDaGFuZ2VkVGltZXJGaXJlZCkKLSAgICAs
IG1fcGxheWJhY2tUYXJnZXQoc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXliYWNrVGFyZ2V0Pigp
KQogI2VuZGlmCiB7CiB9CkBAIC0yODYsMTEgKzI4NSwxMSBAQCB2b2lkIEhUTUxNZWRpYVNlc3Np
b246OnNldEhhc1BsYXliYWNrVGFyCiAjZW5kaWYKIH0KIAotdm9pZCBIVE1MTWVkaWFTZXNzaW9u
OjpkaWRDaG9vc2VQbGF5YmFja1RhcmdldChjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0JiBkZXZp
Y2UpCit2b2lkIEhUTUxNZWRpYVNlc3Npb246OmRpZENob29zZVBsYXliYWNrVGFyZ2V0KFJlZjxN
ZWRpYVBsYXliYWNrVGFyZ2V0PiYmIGRldmljZSkKIHsKLSAgICBtX3BsYXliYWNrVGFyZ2V0LT5z
ZXREZXZpY2VQaWNrZXJDb250ZXh0KGRldmljZS5kZXZpY2VQaWNrZXJDb250ZXh0KCkpOwotICAg
IGNsaWVudCgpLnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoKm1fcGxheWJhY2tUYXJnZXQuZ2V0
KCkpOwotICAgIGlmIChkZXZpY2UuaGFzQWN0aXZlUm91dGUoKSAmJiBNZWRpYVNlc3Npb25NYW5h
Z2VyOjpzaGFyZWRNYW5hZ2VyKCkuY3VycmVudFNlc3Npb24oKSA9PSB0aGlzKQorICAgIG1fcGxh
eWJhY2tUYXJnZXQgPSBXVEY6Om1vdmUoZGV2aWNlKTsKKyAgICBjbGllbnQoKS5zZXRXaXJlbGVz
c1BsYXliYWNrVGFyZ2V0KCptX3BsYXliYWNrVGFyZ2V0LmNvcHlSZWYoKSk7CisgICAgaWYgKG1f
cGxheWJhY2tUYXJnZXQtPmhhc0FjdGl2ZVJvdXRlKCkgJiYgTWVkaWFTZXNzaW9uTWFuYWdlcjo6
c2hhcmVkTWFuYWdlcigpLmN1cnJlbnRTZXNzaW9uKCkgPT0gdGhpcykKICAgICAgICAgc3RhcnRQ
bGF5aW5nVG9QbGF5YmFja1RhcmdldCgpOwogICAgIGVsc2UKICAgICAgICAgc3RvcFBsYXlpbmdU
b1BsYXliYWNrVGFyZ2V0KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYVNl
c3Npb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYVNlc3Np
b24uaAkocmV2aXNpb24gMTgyNjA3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFT
ZXNzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw3ICsxMDQsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgdGFyZ2V0QXZhaWxhYmlsaXR5Q2hhbmdlZFRpbWVyRmlyZWQoKTsKIAogICAgIC8vIE1l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hvb3Nl
UGxheWJhY2tUYXJnZXQoY29uc3QgTWVkaWFQbGF5YmFja1RhcmdldCYpIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgdm9pZCBkaWRDaG9vc2VQbGF5YmFja1RhcmdldChSZWY8TWVkaWFQbGF5YmFja1Rh
cmdldD4mJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGV4dGVybmFsT3V0cHV0RGV2aWNl
QXZhaWxhYmxlRGlkQ2hhbmdlKGJvb2wpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9v
bCByZXF1aXJlc1BsYXliYWNrVGFyZ2V0Um91dGVNb25pdG9yaW5nKCkgY29uc3Qgb3ZlcnJpZGU7
CiAjZW5kaWYKQEAgLTExMyw3ICsxMTMsNyBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKFdJUkVM
RVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICBtdXRhYmxlIFRpbWVyIG1fdGFyZ2V0QXZhaWxhYmls
aXR5Q2hhbmdlZFRpbWVyOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXliYWNrVGFyZ2V0
PiBtX3BsYXliYWNrVGFyZ2V0OworICAgIFJlZlB0cjxNZWRpYVBsYXliYWNrVGFyZ2V0PiBtX3Bs
YXliYWNrVGFyZ2V0OwogICAgIGJvb2wgbV9oYXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUxp
c3RlbmVycyB7IGZhbHNlIH07CiAgICAgbXV0YWJsZSBib29sIG1faGFzUGxheWJhY2tUYXJnZXRz
IHsgZmFsc2UgfTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShyZXZpc2lvbiAxODI2
MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MTQsOSArMjE0LDYgQEAgUGFnZTo6UGFnZShQYWdlQ29uZmlndXJhdGlvbiYgcGFnZUNvbmZpZwog
ICAgICwgbV91c2VyQ29udGVudENvbnRyb2xsZXIoV1RGOjptb3ZlKHBhZ2VDb25maWd1cmF0aW9u
LnVzZXJDb250ZW50Q29udHJvbGxlcikpCiAgICAgLCBtX3Zpc2l0ZWRMaW5rU3RvcmUoKldURjo6
bW92ZShwYWdlQ29uZmlndXJhdGlvbi52aXNpdGVkTGlua1N0b3JlKSkKICAgICAsIG1fc2Vzc2lv
bklEKFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKQotI2lmIEVOQUJMRShXSVJFTEVTU19Q
TEFZQkFDS19UQVJHRVQpCi0gICAgLCBtX3BsYXliYWNrVGFyZ2V0KHN0ZDo6bWFrZV91bmlxdWU8
TWVkaWFQbGF5YmFja1RhcmdldD4oKSkKLSNlbmRpZgogICAgICwgbV9pc0Nsb3NpbmcoZmFsc2Up
CiAgICAgLCBtX2lzUGxheWluZ0F1ZGlvKGZhbHNlKQogewpAQCAtMTY4Niw2ICsxNjgzLDE0IEBA
IHZvaWQgUGFnZTo6c2V0U2Vzc2lvbklEKFNlc3Npb25JRCBzZXNzaW8KIH0KIAogI2lmIEVOQUJM
RShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCitSZWZQdHI8TWVkaWFQbGF5YmFja1RhcmdldD4g
UGFnZTo6cGxheWJhY2tUYXJnZXQoKSBjb25zdAoreworICAgIGlmICghbV9wbGF5YmFja1Rhcmdl
dCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gbV9wbGF5YmFja1Rhcmdl
dC5jb3B5UmVmKCk7Cit9CisKIHZvaWQgUGFnZTo6c2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiBsb2NhdGlvbiwgYm9vbCBpc1ZpZGVvKQogewogI2lmIFBM
QVRGT1JNKElPUykKQEAgLTE2OTcsMTEgKzE3MDIsMTEgQEAgdm9pZCBQYWdlOjpzaG93UGxheWJh
Y2tUYXJnZXRQaWNrZXIoY29ucwogI2VuZGlmCiB9CiAKLXZvaWQgUGFnZTo6ZGlkQ2hvb3NlUGxh
eWJhY2tUYXJnZXQoY29uc3QgTWVkaWFQbGF5YmFja1RhcmdldCYgdGFyZ2V0KQordm9pZCBQYWdl
OjpkaWRDaG9vc2VQbGF5YmFja1RhcmdldChSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJiB0YXJn
ZXQpCiB7Ci0gICAgbV9wbGF5YmFja1RhcmdldC0+c2V0RGV2aWNlUGlja2VyQ29udGV4dCh0YXJn
ZXQuZGV2aWNlUGlja2VyQ29udGV4dCgpKTsKKyAgICBtX3BsYXliYWNrVGFyZ2V0ID0gV1RGOjpt
b3ZlKHRhcmdldCk7CiAgICAgZm9yIChGcmFtZSogZnJhbWUgPSAmbWFpbkZyYW1lKCk7IGZyYW1l
OyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpCi0gICAgICAgIGZyYW1lLT5k
b2N1bWVudCgpLT5kaWRDaG9vc2VQbGF5YmFja1RhcmdldCh0YXJnZXQpOworICAgICAgICBmcmFt
ZS0+ZG9jdW1lbnQoKS0+ZGlkQ2hvb3NlUGxheWJhY2tUYXJnZXQoKm1fcGxheWJhY2tUYXJnZXQu
Y29weVJlZigpKTsKIH0KIAogdm9pZCBQYWdlOjpwbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eURp
ZENoYW5nZShib29sIGF2YWlsYWJsZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCShyZXZpc2lvbiAxODI2
MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDMw
LDEwICs0MzAsMTAgQEAgcHVibGljOgogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJH
RVQpCiAgICAgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmLCBib29sKTsKICAgICBib29sIGhhc1dpcmVsZXNzUGxheWJhY2tUYXJnZXQoKSBjb25z
dCB7IHJldHVybiBtX2hhc1dpcmVsZXNzUGxheWJhY2tUYXJnZXQ7IH0KLSAgICBNZWRpYVBsYXli
YWNrVGFyZ2V0JiBwbGF5YmFja1RhcmdldCgpIGNvbnN0IHsgcmV0dXJuICptX3BsYXliYWNrVGFy
Z2V0LmdldCgpOyB9CisgICAgUmVmUHRyPE1lZGlhUGxheWJhY2tUYXJnZXQ+IHBsYXliYWNrVGFy
Z2V0KCkgY29uc3Q7CiAgICAgdm9pZCBjb25maWd1cmVQbGF5YmFja1RhcmdldE1vbml0b3Jpbmco
KTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkQ2hvb3NlUGxheWJhY2tUYXJnZXQoY29u
c3QgTWVkaWFQbGF5YmFja1RhcmdldCYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkQ2hv
b3NlUGxheWJhY2tUYXJnZXQoUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlEaWRDaGFuZ2UoYm9vbCk7
CiAjZW5kaWYKIApAQCAtNTkwLDcgKzU5MCw3IEBAIHByaXZhdGU6CiAgICAgU2Vzc2lvbklEIG1f
c2Vzc2lvbklEOwogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5YmFja1RhcmdldD4gbV9wbGF5YmFja1RhcmdldDsKKyAg
ICBSZWZQdHI8TWVkaWFQbGF5YmFja1RhcmdldD4gbV9wbGF5YmFja1RhcmdldDsKICAgICBib29s
IG1faGFzV2lyZWxlc3NQbGF5YmFja1RhcmdldCB7IGZhbHNlIH07CiAjZW5kaWYKIApJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uLmgJKHJldmlzaW9u
IDE4MjYwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbi5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjQsNyArMTI0LDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxF
KFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICAvLyBNZWRpYVBsYXliYWNrVGFyZ2V0UGlj
a2VyQ2xpZW50Ci0gICAgdmlydHVhbCB2b2lkIGRpZENob29zZVBsYXliYWNrVGFyZ2V0KGNvbnN0
IE1lZGlhUGxheWJhY2tUYXJnZXQmKSBvdmVycmlkZSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlk
Q2hvb3NlUGxheWJhY2tUYXJnZXQoUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYpIG92ZXJyaWRl
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENo
YW5nZShib29sKSBjb25zdCBvdmVycmlkZSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNQ
bGF5YmFja1RhcmdldFJvdXRlTW9uaXRvcmluZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9CiAjZW5kaWYKQEAgLTE2OSw3ICsxNjksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBi
b29sIG92ZXJyaWRlQmFja2dyb3VuZFBsYXliYWNrUmVzdHJpY3Rpb24oKSBjb25zdCA9IDA7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgd2lyZWxlc3NSb3V0ZXNBdmFpbGFibGVEaWRDaGFuZ2UoKSB7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgc2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChjb25zdCBNZWRpYVBs
YXliYWNrVGFyZ2V0JikgeyB9CisgICAgdmlydHVhbCB2b2lkIHNldFdpcmVsZXNzUGxheWJhY2tU
YXJnZXQoUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBj
YW5QbGF5VG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICB2aXJ0dWFsIGJvb2wgaXNQbGF5aW5nVG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0KCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRQbGF5aW5nVG9QbGF5
YmFja1RhcmdldCgpIHsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5YmFja1RhcmdldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWJhY2tUYXJnZXQuaAkocmV2aXNpb24gMTgyNjA3KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5YmFja1RhcmdldC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yOCw0NSArMjgsMjYgQEAKIAogI2lmIEVOQUJMRShXSVJFTEVTU19Q
TEFZQkFDS19UQVJHRVQpCiAKLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0KLSNpZiBQTEFU
Rk9STShDT0NPQSkKLU9CSkNfQ0xBU1MgTlNLZXllZEFyY2hpdmVyOwotT0JKQ19DTEFTUyBOU0tl
eWVkVW5hcmNoaXZlcjsKLU9CSkNfQ0xBU1MgQVZPdXRwdXRDb250ZXh0OwotI2VuZGlmCisjaW5j
bHVkZSAiTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIE1lZGlhUGxheWJhY2tUYXJn
ZXQgeworY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlh
UGxheWJhY2tUYXJnZXQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5NZWRpYVBsYXliYWNrVGFy
Z2V0KCkgeyB9CiAKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBXRUJDT1JFX0VYUE9SVCBNZWRp
YVBsYXliYWNrVGFyZ2V0KEFWT3V0cHV0Q29udGV4dCAqY29udGV4dCA9IG5pbCkgeyBtX2Rldmlj
ZVBpY2tlckNvbnRleHQgPSBjb250ZXh0OyB9Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVu
Y29kZShOU0tleWVkQXJjaGl2ZXIgKikgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IGJvb2wgZGVjb2RlKE5TS2V5ZWRVbmFyY2hpdmVyICosIE1lZGlhUGxheWJhY2tUYXJnZXQmKTsK
LQotICAgIHZvaWQgc2V0RGV2aWNlUGlja2VyQ29udGV4dChBVk91dHB1dENvbnRleHQgKmNvbnRl
eHQpIHsgbV9kZXZpY2VQaWNrZXJDb250ZXh0ID0gY29udGV4dDsgfQotICAgIEFWT3V0cHV0Q29u
dGV4dCAqZGV2aWNlUGlja2VyQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fZGV2aWNlUGlja2Vy
Q29udGV4dC5nZXQoKTsgfQorICAgIGVudW0gVGFyZ2V0VHlwZSB7CisgICAgICAgIE5vbmUsCisg
ICAgICAgIEFWRm91bmRhdGlvbiwKKyAgICB9OworICAgIHZpcnR1YWwgVGFyZ2V0VHlwZSB0YXJn
ZXRUeXBlKCkgY29uc3QgeyByZXR1cm4gTm9uZTsgfQogCi0jaWYgUExBVEZPUk0oSU9TKQotICAg
IGJvb2wgaGFzQWN0aXZlUm91dGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotI2Vsc2UKLSAg
ICBib29sIGhhc0FjdGl2ZVJvdXRlKCkgY29uc3Q7Ci0jZW5kaWYKLQotI2Vsc2UKLSAgICB2b2lk
IHNldERldmljZVBpY2tlckNvbnRleHQoQVZPdXRwdXRDb250ZXh0ICopIHsgfQotICAgIEFWT3V0
cHV0Q29udGV4dCAqZGV2aWNlUGlja2VyQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7
IH0KLSAgICBib29sIGhhc0FjdGl2ZVJvdXRlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSNl
bmRpZgorICAgIHZpcnR1YWwgY29uc3QgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmIHRhcmdl
dENvbnRleHQoKSBjb25zdCB7IHJldHVybiBOb01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OyB9
CisgICAgdmlydHVhbCBib29sIGhhc0FjdGl2ZVJvdXRlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KIAogcHJvdGVjdGVkOgotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFJldGFpblB0cjxBVk91
dHB1dENvbnRleHQ+IG1fZGV2aWNlUGlja2VyQ29udGV4dDsKLSNlbmRpZgorICAgIE1lZGlhUGxh
eWJhY2tUYXJnZXQoKSB7IH0KIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQu
aAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIE1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0X2gKKyNkZWZpbmUgTWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHRfaAorCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKKworT0JKQ19D
TEFTUyBBVk91dHB1dENvbnRleHQ7CisKKyNpZiBQTEFURk9STShDT0NPQSkKK09CSkNfQ0xBU1Mg
TlNLZXllZEFyY2hpdmVyOworT0JKQ19DTEFTUyBOU0tleWVkVW5hcmNoaXZlcjsKKyNlbmRpZgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dCB7CisKKyAgICBlbnVtIENvbnRleHRUeXBlIDogaW50MzJfdCB7CisgICAgICAgIE5vbmUsCisg
ICAgICAgIEFWT3V0cHV0Q29udGV4dFR5cGUsCisgICAgfSB0eXBlOworCisgICAgdW5pb24gewor
ICAgICAgICBBVk91dHB1dENvbnRleHQqIGF2T3V0cHV0Q29udGV4dDsKKyAgICB9IGNvbnRleHQ7
CisKKyAgICBib29sIGVuY29kaW5nUmVxdWlyZXNQbGF0Zm9ybURhdGEoKSBjb25zdCB7IHJldHVy
biB0eXBlID09IEFWT3V0cHV0Q29udGV4dFR5cGU7IH0KK307CisKK2NvbnN0IE1lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0IE5vTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQgPSB7IE1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0OjpOb25lLCB7bnVsbHB0cn0gfTsKKworfQorCisjZW5kaWYgLy8g
RU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKKworI2VuZGlmIC8vIE1lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0IApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaAkocmV2aXNpb24g
MTgyNjA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5YmFj
a1RhcmdldFBpY2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw4IEBACiAKICNpZiBF
TkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogCisjaW5jbHVkZSA8d3RmL1JlZi5oPgor
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZsb2F0UmVjdDsKQEAgLTQwLDcgKzQyLDcg
QEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5DbGllbnQoKSB7IH0KIAogICAgIHB1YmxpYzoK
LSAgICAgICAgdmlydHVhbCB2b2lkIGRpZENob29zZVBsYXliYWNrVGFyZ2V0KGNvbnN0IE1lZGlh
UGxheWJhY2tUYXJnZXQmKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDaG9vc2VQbGF5
YmFja1RhcmdldChSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJikgPSAwOwogICAgICAgICB2aXJ0
dWFsIHZvaWQgZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoYm9vbCkgPSAw
OwogCiAgICAgICAgIHZvaWQgaW52YWxpZGF0ZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXJDbGllbnQuaAkocmV2aXNpb24gMTgyNjA3KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIGNsYXNzIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJD
bGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgfk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJD
bGllbnQoKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDaG9vc2VQbGF5YmFja1RhcmdldChj
b25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRDaG9v
c2VQbGF5YmFja1RhcmdldChSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShib29sKSBj
b25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNQbGF5YmFja1RhcmdldFJvdXRl
TW9uaXRvcmluZygpIGNvbnN0ID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAJKHJldmlzaW9uIDE4MjYwNykKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODgzLDkgKzg4Myw5IEBAIGJvb2wgTWVkaWFQbGF5ZXI6OmlzUGxheWluZ1RvV2lyZWxl
c3NQbGEKICAgICByZXR1cm4gbV9wcml2YXRlLT5pc1BsYXlpbmdUb1dpcmVsZXNzUGxheWJhY2tU
YXJnZXQoKTsKIH0KIAotdm9pZCBNZWRpYVBsYXllcjo6c2V0V2lyZWxlc3NQbGF5YmFja1Rhcmdl
dChjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0JiBkZXZpY2UpCit2b2lkIE1lZGlhUGxheWVyOjpz
ZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiYmIGRldmlj
ZSkKIHsKLSAgICBtX3ByaXZhdGUtPnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoZGV2aWNlKTsK
KyAgICBtX3ByaXZhdGUtPnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoV1RGOjptb3ZlKGRldmlj
ZSkpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyOjpzdGFydFBsYXlpbmdUb1BsYXliYWNrVGFyZ2V0
KCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuaAkocmV2aXNpb24gMTgyNjA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDgxLDcgKzQ4MSw3IEBAIHB1Ymxp
YzoKIAogICAgIGJvb2wgY2FuUGxheVRvV2lyZWxlc3NQbGF5YmFja1RhcmdldCgpIGNvbnN0Owog
ICAgIGJvb2wgaXNQbGF5aW5nVG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0KCkgY29uc3Q7Ci0gICAg
dm9pZCBzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KGNvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXQm
KTsKKyAgICB2b2lkIHNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoUmVmPE1lZGlhUGxheWJhY2tU
YXJnZXQ+JiYpOwogCiAgICAgdm9pZCBzdGFydFBsYXlpbmdUb1BsYXliYWNrVGFyZ2V0KCk7CiAg
ICAgdm9pZCBzdG9wUGxheWluZ1RvUGxheWJhY2tUYXJnZXQoKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCShy
ZXZpc2lvbiAxODI2MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllclByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTcxLDcgKzE3MSw3IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgYm9vbCBjYW5QbGF5VG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0KCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNQbGF5aW5nVG9XaXJl
bGVzc1BsYXliYWNrVGFyZ2V0KCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
c2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0JikgeyB9
CisgICAgdmlydHVhbCB2b2lkIHNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoUmVmPE1lZGlhUGxh
eWJhY2tUYXJnZXQ+JiYpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0UGxheWluZ1RvUGxh
eWJhY2tUYXJnZXQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc3RvcFBsYXlpbmdUb1BsYXliYWNr
VGFyZ2V0KCkgeyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vTWVkaWFQbGF5YmFja1RhcmdldE1hYy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXliYWNrVGFyZ2V0
TWFjLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vTWVkaWFQbGF5YmFja1RhcmdldE1hYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2lmbmRlZiBNZWRpYVBsYXliYWNrVGFyZ2V0TWFjX2gKKyNkZWZpbmUgTWVkaWFQbGF5YmFj
a1RhcmdldE1hY19oCisKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorCisj
aW5jbHVkZSAiTWVkaWFQbGF5YmFja1RhcmdldC5oIgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0TWFj
IDogcHVibGljIE1lZGlhUGxheWJhY2tUYXJnZXQgeworcHVibGljOgorICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4gY3JlYXRlKEFWT3V0cHV0Q29udGV4
dCAqKTsKKworICAgIHZpcnR1YWwgfk1lZGlhUGxheWJhY2tUYXJnZXRNYWMoKTsKKworICAgIHZp
cnR1YWwgVGFyZ2V0VHlwZSB0YXJnZXRUeXBlKCkgY29uc3QgeyByZXR1cm4gQVZGb3VuZGF0aW9u
OyB9CisKKyAgICB2aXJ0dWFsIGNvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiB0YXJn
ZXRDb250ZXh0KCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGhhc0FjdGl2ZVJvdXRlKCkgY29u
c3Q7CisKKyAgICBBVk91dHB1dENvbnRleHQgKm91dHB1dENvbnRleHQoKSBjb25zdCB7IHJldHVy
biBtX291dHB1dENvbnRleHQuZ2V0KCk7IH0KKworcHJvdGVjdGVkOgorICAgIE1lZGlhUGxheWJh
Y2tUYXJnZXRNYWMoQVZPdXRwdXRDb250ZXh0ICopOworCisgICAgUmV0YWluUHRyPEFWT3V0cHV0
Q29udGV4dD4gbV9vdXRwdXRDb250ZXh0OworICAgIG11dGFibGUgTWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQgbV9jb250ZXh0OworfTsKKworTWVkaWFQbGF5YmFja1RhcmdldE1hYyogdG9NZWRp
YVBsYXliYWNrVGFyZ2V0TWFjKE1lZGlhUGxheWJhY2tUYXJnZXQqKTsKK2NvbnN0IE1lZGlhUGxh
eWJhY2tUYXJnZXRNYWMqIHRvTWVkaWFQbGF5YmFja1RhcmdldE1hYyhjb25zdCBNZWRpYVBsYXli
YWNrVGFyZ2V0Kik7CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19U
QVJHRVQpCisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL01lZGlhUGxheWJhY2tUYXJnZXRNYWMubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWJhY2tU
YXJnZXRNYWMubW0JKHJldmlzaW9uIDE4MjYwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXliYWNrVGFyZ2V0TWFjLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAogI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1w
b3J0ICJNZWRpYVBsYXliYWNrVGFyZ2V0LmgiCisjaW1wb3J0ICJNZWRpYVBsYXliYWNrVGFyZ2V0
TWFjLmgiCiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZP
Uk0oSU9TKQogCkBAIC0zNywzNyArMzcsNDUgQEAgU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlv
biwgQVZPdXRwdXRDbwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBOU1N0cmluZyAq
IGNvbnN0IGRldmljZUNvbnRleHRLZXkgPSBAImRldmljZUNvbnRleHQiOworUmVmPE1lZGlhUGxh
eWJhY2tUYXJnZXQ+IE1lZGlhUGxheWJhY2tUYXJnZXRNYWM6OmNyZWF0ZShBVk91dHB1dENvbnRl
eHQgKmNvbnRleHQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFQbGF5YmFja1Rh
cmdldE1hYyhjb250ZXh0KSk7Cit9CiAKLXZvaWQgTWVkaWFQbGF5YmFja1RhcmdldDo6ZW5jb2Rl
KE5TS2V5ZWRBcmNoaXZlciAqYXJjaGl2ZXIpIGNvbnN0CitNZWRpYVBsYXliYWNrVGFyZ2V0TWFj
OjpNZWRpYVBsYXliYWNrVGFyZ2V0TWFjKEFWT3V0cHV0Q29udGV4dCAqY29udGV4dCkKKyAgICA6
IE1lZGlhUGxheWJhY2tUYXJnZXQoKQorICAgICwgbV9vdXRwdXRDb250ZXh0KGNvbnRleHQpCiB7
Ci0gICAgaWYgKFtnZXRBVk91dHB1dENvbnRleHRDbGFzcygpIGNvbmZvcm1zVG9Qcm90b2NvbDpA
cHJvdG9jb2woTlNTZWN1cmVDb2RpbmcpXSkKLSAgICAgICAgW2FyY2hpdmVyIGVuY29kZU9iamVj
dDptX2RldmljZVBpY2tlckNvbnRleHQuZ2V0KCkgZm9yS2V5OmRldmljZUNvbnRleHRLZXldOwog
fQogCi1ib29sIE1lZGlhUGxheWJhY2tUYXJnZXQ6OmRlY29kZShOU0tleWVkVW5hcmNoaXZlciAq
dW5hcmNoaXZlciwgTWVkaWFQbGF5YmFja1RhcmdldCYgcGxheWJhY2tUYXJnZXQpCitNZWRpYVBs
YXliYWNrVGFyZ2V0TWFjOjp+TWVkaWFQbGF5YmFja1RhcmdldE1hYygpCiB7Ci0gICAgaWYgKCFb
Z2V0QVZPdXRwdXRDb250ZXh0Q2xhc3MoKSBjb25mb3Jtc1RvUHJvdG9jb2w6QHByb3RvY29sKE5T
U2VjdXJlQ29kaW5nKV0pCi0gICAgICAgIHJldHVybiBmYWxzZTsKK30KIAotICAgIEFWT3V0cHV0
Q29udGV4dCAqY29udGV4dCA9IG5pbDsKLSAgICBAdHJ5IHsKLSAgICAgICAgY29udGV4dCA9IFt1
bmFyY2hpdmVyIGRlY29kZU9iamVjdE9mQ2xhc3M6Z2V0QVZPdXRwdXRDb250ZXh0Q2xhc3MoKSBm
b3JLZXk6ZGV2aWNlQ29udGV4dEtleV07Ci0gICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNl
cHRpb24pIHsKLSAgICAgICAgTE9HX0VSUk9SKCJUaGUgdGFyZ2V0IHBpY2tlciBiZWluZyBkZWNv
ZGVkIGlzIG5vdCBhIEFWT3V0cHV0Q29udGV4dC4iKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KK2NvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiBNZWRpYVBsYXliYWNrVGFy
Z2V0TWFjOjp0YXJnZXRDb250ZXh0KCkgY29uc3QKK3sKKyAgICBtX2NvbnRleHQudHlwZSA9IE1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpBVk91dHB1dENvbnRleHRUeXBlOworICAgIG1fY29u
dGV4dC5jb250ZXh0LmF2T3V0cHV0Q29udGV4dCA9IG1fb3V0cHV0Q29udGV4dC5nZXQoKTsKIAot
ICAgIHBsYXliYWNrVGFyZ2V0Lm1fZGV2aWNlUGlja2VyQ29udGV4dCA9IGNvbnRleHQ7CisgICAg
cmV0dXJuIG1fY29udGV4dDsKK30KIAotICAgIHJldHVybiB0cnVlOworYm9vbCBNZWRpYVBsYXli
YWNrVGFyZ2V0TWFjOjpoYXNBY3RpdmVSb3V0ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fb3V0
cHV0Q29udGV4dCAmJiBtX291dHB1dENvbnRleHQuZ2V0KCkuZGV2aWNlTmFtZTsKIH0KIAotYm9v
bCBNZWRpYVBsYXliYWNrVGFyZ2V0OjpoYXNBY3RpdmVSb3V0ZSgpIGNvbnN0CisKK01lZGlhUGxh
eWJhY2tUYXJnZXRNYWMqIHRvTWVkaWFQbGF5YmFja1RhcmdldE1hYyhNZWRpYVBsYXliYWNrVGFy
Z2V0KiByZXApCiB7Ci0gICAgcmV0dXJuIG1fZGV2aWNlUGlja2VyQ29udGV4dCAmJiBtX2Rldmlj
ZVBpY2tlckNvbnRleHQuZ2V0KCkuZGV2aWNlTmFtZTsKKyAgICByZXR1cm4gY29uc3RfY2FzdDxN
ZWRpYVBsYXliYWNrVGFyZ2V0TWFjKj4odG9NZWRpYVBsYXliYWNrVGFyZ2V0TWFjKGNvbnN0X2Nh
c3Q8Y29uc3QgTWVkaWFQbGF5YmFja1RhcmdldCo+KHJlcCkpKTsKIH0KIAorY29uc3QgTWVkaWFQ
bGF5YmFja1RhcmdldE1hYyogdG9NZWRpYVBsYXliYWNrVGFyZ2V0TWFjKGNvbnN0IE1lZGlhUGxh
eWJhY2tUYXJnZXQqIHJlcCkKK3sKKyAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElP
TihyZXAtPnRhcmdldFR5cGUoKSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0OjpBVkZvdW5kYXRpb24p
OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0TWFjKj4o
cmVwKTsKK30KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXliYWNrVGFyZ2V0
UGlja2VyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNYWMubW0JKHJl
dmlzaW9uIDE4MjYwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNYWMubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTMxLDcgKzMxLDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvQVZGb3VuZGF0aW9uU1BJLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0FWS2l0U1BJLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Zsb2F0UmVj
dC5oPgotI2ltcG9ydCA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0Lmg+CisjaW1wb3J0IDxX
ZWJDb3JlL01lZGlhUGxheWJhY2tUYXJnZXRNYWMuaD4KICNpbXBvcnQgPFdlYkNvcmUvU29mdExp
bmtpbmcuaD4KICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJl
YWQuaD4KQEAgLTEzMywxMCArMTMzLDcgQEAgdm9pZCBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
TWFjOjpjdXJyZQogICAgIGlmICghZGV2aWNlUGlja2VyKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBpZiAoZGV2aWNlUGlja2VyLmlzRXh0ZXJuYWxPdXRwdXREZXZpY2VQaWNrZWQpCi0gICAgICAg
IG1fY2xpZW50LT5kaWRDaG9vc2VQbGF5YmFja1RhcmdldChXZWJDb3JlOjpNZWRpYVBsYXliYWNr
VGFyZ2V0KFtkZXZpY2VQaWNrZXIgb3V0cHV0Q29udGV4dF0pKTsKLSAgICBlbHNlCi0gICAgICAg
IG1fY2xpZW50LT5kaWRDaG9vc2VQbGF5YmFja1RhcmdldChXZWJDb3JlOjpNZWRpYVBsYXliYWNr
VGFyZ2V0KG5pbCkpOworICAgIG1fY2xpZW50LT5kaWRDaG9vc2VQbGF5YmFja1RhcmdldChXZWJD
b3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0TWFjOjpjcmVhdGUoW2RldmljZVBpY2tlciBvdXRwdXRD
b250ZXh0XSkpOwogfQogCiB2b2lkIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNYWM6OnN0YXJ0
aW5nTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cygpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5o
CShyZXZpc2lvbiAxODI2MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI4Miw3ICsyODIsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBF
TkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TKQotICAgIHZp
cnR1YWwgdm9pZCBzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KGNvbnN0IE1lZGlhUGxheWJhY2tU
YXJnZXQmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0V2lyZWxlc3NQbGF5YmFja1Rh
cmdldChSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2
b2lkIHN0YXJ0UGxheWluZ1RvUGxheWJhY2tUYXJnZXQoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgc3RvcFBsYXlpbmdUb1BsYXliYWNrVGFyZ2V0KCkgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCBib29sIGlzUGxheWluZ1RvV2lyZWxlc3NQbGF5YmFja1RhcmdldCgpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLm1tCShyZXZpc2lvbiAxODI2MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBACiAjaW1wb3J0ICJP
dXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmgiCiAjaW1wb3J0ICJVUkwuaCIKICNpbXBvcnQg
IkxvZ2dpbmcuaCIKLSNpbXBvcnQgIk1lZGlhUGxheWJhY2tUYXJnZXQuaCIKKyNpbXBvcnQgIk1l
ZGlhUGxheWJhY2tUYXJnZXRNYWMuaCIKICNpbXBvcnQgIk1lZGlhU2VsZWN0aW9uR3JvdXBBVkZP
YmpDLmgiCiAjaW1wb3J0ICJNZWRpYVRpbWVBVkZvdW5kYXRpb24uaCIKICNpbXBvcnQgIlBsYXRm
b3JtVGltZVJhbmdlcy5oIgpAQCAtMjc3Nyw5ICsyNzc3LDExIEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzoKIH0KIAogI2lmICFQTEFURk9STShJT1MpCi12b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFdpcmVsZXNzUGxheWJhY2tUYXJn
ZXQoY29uc3QgTWVkaWFQbGF5YmFja1RhcmdldCYgdGFyZ2V0KQordm9pZCBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KFJlZjxNZWRp
YVBsYXliYWNrVGFyZ2V0PiYmIHRhcmdldCkKIHsKLSAgICBtX291dHB1dENvbnRleHQgPSB0YXJn
ZXQuZGV2aWNlUGlja2VyQ29udGV4dCgpOworICAgIE1lZGlhUGxheWJhY2tUYXJnZXRNYWMqIG1h
Y1RhcmdldCA9IHRvTWVkaWFQbGF5YmFja1RhcmdldE1hYygmdGFyZ2V0LmdldCgpKTsKKworICAg
IG1fb3V0cHV0Q29udGV4dCA9IG1hY1RhcmdldC0+b3V0cHV0Q29udGV4dCgpOwogICAgIExPRyhN
ZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFdpcmVsZXNzUGxh
eWJhY2tUYXJnZXQoJXApIC0gdGFyZ2V0ID0gJXAiLCB0aGlzLCBtX291dHB1dENvbnRleHQuZ2V0
KCkpOwogCiAgICAgaWYgKCFtX291dHB1dENvbnRleHQgfHwgIW1fb3V0cHV0Q29udGV4dC5nZXQo
KS5kZXZpY2VOYW1lKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgJKHJldmlzaW9uIDE4
MjYwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNzMsNyArMTczLDcgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZ
QkFDS19UQVJHRVQpCiAgICAgdmlydHVhbCBib29sIGlzQ3VycmVudFBsYXliYWNrVGFyZ2V0U3Vw
cG9ydGVkKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFdpcmVsZXNzUGxh
eWJhY2tUYXJnZXQoY29uc3QgTWVkaWFQbGF5YmFja1RhcmdldCYpOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiYmKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRQbGF5aW5nVG9QbGF5YmFja1RhcmdldCgpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgdm9pZCBzdG9wUGxheWluZ1RvUGxheWJhY2tUYXJnZXQoKSBvdmVycmlk
ZTsKICAgICB2b2lkIHRvZ2dsZVBsYXlpbmdUb1BsYXliYWNrVGFyZ2V0KCk7CkBAIC0yMjEsNyAr
MjIxLDcgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIGJvb2wgbV9sb2FkaW5nUHJvZ3Jlc3NlZDsK
ICAgICBib29sIG1faGFzQXZhaWxhYmxlVmlkZW9GcmFtZTsKICNpZiBFTkFCTEUoV0lSRUxFU1Nf
UExBWUJBQ0tfVEFSR0VUKQotICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXliYWNrVGFyZ2V0
PiBtX3BsYXliYWNrVGFyZ2V0OworICAgIFJlZlB0cjxNZWRpYVBsYXliYWNrVGFyZ2V0PiBtX3Bs
YXliYWNrVGFyZ2V0OwogICAgIGJvb2wgbV9jdXJyZW50UGxheWJhY2tUYXJnZXRJc1N1cHBvcnRl
ZCB7IHRydWUgfTsKICNlbmRpZgogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0J
KHJldmlzaW9uIDE4MjYwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQko
d29ya2luZyBjb3B5KQpAQCAtODE1LDExICs4MTUsOSBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqCiAgICAgcmV0dXJuICFtX3BsYXliYWNrVGFyZ2V0LT5oYXNBY3Rp
dmVSb3V0ZSgpOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qzo6c2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0JiB0
YXJnZXQpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0V2ly
ZWxlc3NQbGF5YmFja1RhcmdldChSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJiB0YXJnZXQpCiB7
Ci0gICAgaWYgKCFtX3BsYXliYWNrVGFyZ2V0KQotICAgICAgICBtX3BsYXliYWNrVGFyZ2V0ID0g
c3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXliYWNrVGFyZ2V0PigpOwotICAgIG1fcGxheWJhY2tU
YXJnZXQtPnNldERldmljZVBpY2tlckNvbnRleHQodGFyZ2V0LmRldmljZVBpY2tlckNvbnRleHQo
KSk7CisgICAgbV9wbGF5YmFja1RhcmdldCA9IFdURjo6bW92ZSh0YXJnZXQpOwogfQogCiB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6dG9nZ2xlUGxheWluZ1RvUGxh
eWJhY2tUYXJnZXQoKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0LmgJKHJldmlzaW9u
IDE4MjYwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBs
YXllclByaXZhdGVRVEtpdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODEsNyArMTgxLDcgQEAgcHJp
dmF0ZToKIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAgICAgdmlydHVh
bCBib29sIGlzQ3VycmVudFBsYXliYWNrVGFyZ2V0U3VwcG9ydGVkKCkgY29uc3Qgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIHNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoY29uc3QgTWVkaWFQ
bGF5YmFja1RhcmdldCYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRXaXJlbGVzc1BsYXliYWNrVGFy
Z2V0KFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiYmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRQ
bGF5aW5nVG9QbGF5YmFja1RhcmdldCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzdG9w
UGxheWluZ1RvUGxheWJhY2tUYXJnZXQoKSBvdmVycmlkZTsKICAgICB2b2lkIHRvZ2dsZVBsYXlp
bmdUb1BsYXliYWNrVGFyZ2V0KCk7CkBAIC0yMTUsNyArMjE1LDcgQEAgcHJpdmF0ZToKICAgICBt
dXRhYmxlIE1lZGlhVGltZSBtX21heFRpbWVMb2FkZWRBdExhc3REaWRMb2FkaW5nUHJvZ3Jlc3M7
CiAgICAgbXV0YWJsZSBGbG9hdFNpemUgbV9jYWNoZWROYXR1cmFsU2l6ZTsKICNpZiBFTkFCTEUo
V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQotICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXli
YWNrVGFyZ2V0PiBtX3BsYXliYWNrVGFyZ2V0OworICAgIFJlZlB0cjxNZWRpYVBsYXliYWNrVGFy
Z2V0PiBtX3BsYXliYWNrVGFyZ2V0OwogICAgIGJvb2wgbV9jdXJyZW50UGxheWJhY2tUYXJnZXRJ
c1N1cHBvcnRlZCB7IHRydWUgfTsKICNlbmRpZgogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2
YXRlUVRLaXQubW0JKHJldmlzaW9uIDE4MjYwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQkod29ya2luZyBjb3B5KQpA
QCAtMTU0OSwxMSArMTU0OSw5IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmlzQ3Vy
cmVudFAKICAgICByZXR1cm4gIW1fcGxheWJhY2tUYXJnZXQtPmhhc0FjdGl2ZVJvdXRlKCk7CiB9
CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnNldFdpcmVsZXNzUGxheWJhY2tUYXJn
ZXQoY29uc3QgTWVkaWFQbGF5YmFja1RhcmdldCYgdGFyZ2V0KQordm9pZCBNZWRpYVBsYXllclBy
aXZhdGVRVEtpdDo6c2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChSZWY8TWVkaWFQbGF5YmFja1Rh
cmdldD4mJiB0YXJnZXQpCiB7Ci0gICAgaWYgKCFtX3BsYXliYWNrVGFyZ2V0KQotICAgICAgICBt
X3BsYXliYWNrVGFyZ2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXliYWNrVGFyZ2V0Pigp
OwotICAgIG1fcGxheWJhY2tUYXJnZXQtPnNldERldmljZVBpY2tlckNvbnRleHQodGFyZ2V0LmRl
dmljZVBpY2tlckNvbnRleHQoKSk7CisgICAgbV9wbGF5YmFja1RhcmdldCA9IFdURjo6bW92ZSh0
YXJnZXQpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Ojp0b2dnbGVQbGF5aW5n
VG9QbGF5YmFja1RhcmdldCgpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODI2MDcpCisrKyBT
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyOCBAQAor
MjAxNS0wNC0wOSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAg
ICAgICBbTWFjXSBSZWZhY3RvciBNZWRpYVBsYXliYWNrVGFyZ2V0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDM1NzEKKworICAgICAgICBSZXZpZXdl
ZCBieSBKZXIgTm9ibGUuCisKKyAgICAgICAgUGFzcyBhIE1lZGlhUGxheWJhY2tUYXJnZXRDb250
ZXh0IGFjcm9zcyBwcm9jZXNzIGJvdW5kYXJ5IGluc3RlYWQgb2YgYSBNZWRpYVBsYXliYWNrVGFy
Z2V0LgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAg
KiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgIChJUEM6OkFyZ3VtZW50
Q29kZXI8TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ+OjplbmNvZGUpOiBOZXcuCisgICAgICAg
IChJUEM6OkFyZ3VtZW50Q29kZXI8TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ+OjpkZWNvZGUp
OiBOZXcuCisgICAgICAgICogU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgor
ICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6
ZW5jb2RlKTogTmV3LgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPE1lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0Pjo6ZGVjb2RlKTogTmV3LgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PE1lZGlhUGxheWJhY2tUYXJnZXQ+OjplbmNvZGUpOiBEZWxldGVkLgorICAgICAgICAoSVBDOjpB
cmd1bWVudENvZGVyPE1lZGlhUGxheWJhY2tUYXJnZXQ+OjpkZWNvZGUpOiBEZWxldGVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmRpZENob29zZVBsYXliYWNrVGFyZ2V0KTogVGFrZSBhIFJlZjxNZWRpYVBsYXli
YWNrVGFyZ2V0PiYmLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGxheWJhY2tU
YXJnZXRTZWxlY3RlZCk6IFRha2UgYSBSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJi4KKwogMjAx
NS0wNC0wOSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUkVH
UkVTU0lPTiAocjE4MjU3Myk6IEFjdGlvbiBNZW51cyBubyBsb25nZXIgYXBwZWFyIGZvciBXZWJL
aXQyIHZpZXdzIGRpc3BsYXlpbmcgYW4gaW1hZ2UKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCShyZXZpc2lvbiAxODI2MDcpCisrKyBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODMsNiArODMsMTAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5o
PgogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKIAorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFD
S19UQVJHRVQpCisjaW1wb3J0IDxXZWJDb3JlL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lmg+
CisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgV2Vi
S2l0OwogCkBAIC0yMTMyLDQgKzIxMzYsMzAgQEAgYm9vbCBBcmd1bWVudENvZGVyPFRleHRJbmRp
Y2F0b3JEYXRhPjo6ZAogICAgIHJldHVybiB0cnVlOwogfQogCisjaWYgRU5BQkxFKFdJUkVMRVNT
X1BMQVlCQUNLX1RBUkdFVCkKK3ZvaWQgQXJndW1lbnRDb2RlcjxNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dD46OmVuY29kZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIsIGNvbnN0IE1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0JiB0YXJnZXQpCit7CisgICAgaW50MzJfdCB0YXJnZXRUeXBlID0g
dGFyZ2V0LnR5cGU7CisgICAgZW5jb2RlciA8PCB0YXJnZXRUeXBlOworCisgICAgaWYgKCF0YXJn
ZXQuZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3JtRGF0YSgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBlbmNvZGVQbGF0Zm9ybURhdGEoZW5jb2RlciwgdGFyZ2V0KTsKK30KKworYm9vbCBBcmd1bWVu
dENvZGVyPE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2Rl
ciYgZGVjb2RlciwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmIHRhcmdldCkKK3sKKyAgICBp
bnQzMl90IHRhcmdldFR5cGU7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0YXJnZXRUeXBlKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgdGFyZ2V0LnR5cGUgPSBzdGF0aWNfY2FzdDxN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6Q29udGV4dFR5cGU+KHRhcmdldFR5cGUpOworICAg
IGlmICghdGFyZ2V0LmVuY29kaW5nUmVxdWlyZXNQbGF0Zm9ybURhdGEoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGRlY29kZVBsYXRmb3JtRGF0YShkZWNvZGVyLCB0YXJn
ZXQpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIElQQwpJbmRleDogU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAkocmV2aXNpb24gMTgyNjA3KQor
KysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTcsNyArMTE3LDcgQEAgY2xhc3MgQ29udGVudEZpbHRlclVuYmxvY2tIYW5k
bGVyOwogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKLWNsYXNzIE1lZGlhUGxheWJhY2tUYXJnZXQ7CitzdHJ1Y3QgTWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHQ7CiB9CiAjZW5kaWYKIApAQCAtNDYxLDkgKzQ2MSwxMSBAQCB0ZW1wbGF0
ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6CiB9OwogCiAjaWYgRU5BQkxFKFdJUkVM
RVNTX1BMQVlCQUNLX1RBUkdFVCkKLXRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2Vi
Q29yZTo6TWVkaWFQbGF5YmFja1RhcmdldD4gewotICAgIHN0YXRpYyB2b2lkIGVuY29kZShBcmd1
bWVudEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Jik7Ci0gICAg
c3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYsIFdlYkNvcmU6Ok1lZGlhUGxheWJh
Y2tUYXJnZXQmKTsKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6TWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQ+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1l
bnRFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmKTsK
KyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyJiwgV2ViQ29yZTo6TWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQmKTsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGVQbGF0Zm9ybURh
dGEoQXJndW1lbnRFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQmKTsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGVQbGF0Zm9ybURhdGEoQXJndW1lbnREZWNv
ZGVyJiwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmKTsKIH07CiAjZW5kaWYK
IApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNN
YWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9XZWJDb3JlQXJn
dW1lbnRDb2RlcnNNYWMubW0JKHJldmlzaW9uIDE4MjYwNykKKysrIFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00
NCw3ICs0NCwxMyBAQAogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFS
R0VUKQotI2ltcG9ydCA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0Lmg+CisjaW1wb3J0IDxX
ZWJDb3JlL0FWRm91bmRhdGlvblNQSS5oPgorI2ltcG9ydCA8V2ViQ29yZS9NZWRpYVBsYXliYWNr
VGFyZ2V0Q29udGV4dC5oPgorI2ltcG9ydCA8V2ViQ29yZS9Tb2Z0TGlua2luZy5oPgorI2ltcG9y
dCA8b2JqYy9ydW50aW1lLmg+CisKK1NPRlRfTElOS19GUkFNRVdPUktfT1BUSU9OQUwoQVZGb3Vu
ZGF0aW9uKQorU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZPdXRwdXRDb250ZXh0KQog
I2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNDM3LDI2ICs0NDMsNTIgQEAg
Ym9vbCBBcmd1bWVudENvZGVyPENvbnRlbnRGaWx0ZXJVbmJsb2NrSAogfQogCiAjaWYgRU5BQkxF
KFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKLXZvaWQgQXJndW1lbnRDb2RlcjxNZWRpYVBsYXli
YWNrVGFyZ2V0Pjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgY29uc3QgTWVkaWFQ
bGF5YmFja1RhcmdldCYgdGFyZ2V0KQorCitzdGF0aWMgTlNTdHJpbmcgKmRldmljZUNvbnRleHRL
ZXkoKQoreworICAgIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IGtleSA9IEAiZGV2aWNlQ29udGV4
dCI7CisgICAgcmV0dXJuIGtleTsKK30KKwordm9pZCBBcmd1bWVudENvZGVyPE1lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50RW5jb2RlciYgZW5j
b2RlciwgY29uc3QgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmIHRhcmdldCkKIHsKKyAgICBB
U1NFUlQodGFyZ2V0LnR5cGUgPT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OkFWT3V0cHV0
Q29udGV4dFR5cGUpOworCiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZURhdGE+IGRhdGEgPSBhZG9w
dE5TKFtbTlNNdXRhYmxlRGF0YSBhbGxvY10gaW5pdF0pOwogICAgIFJldGFpblB0cjxOU0tleWVk
QXJjaGl2ZXI+IGFyY2hpdmVyID0gYWRvcHROUyhbW05TS2V5ZWRBcmNoaXZlciBhbGxvY10gaW5p
dEZvcldyaXRpbmdXaXRoTXV0YWJsZURhdGE6ZGF0YS5nZXQoKV0pOwogICAgIFthcmNoaXZlciBz
ZXRSZXF1aXJlc1NlY3VyZUNvZGluZzpZRVNdOwotICAgIHRhcmdldC5lbmNvZGUoYXJjaGl2ZXIu
Z2V0KCkpOworCisgICAgaWYgKFtnZXRBVk91dHB1dENvbnRleHRDbGFzcygpIGNvbmZvcm1zVG9Q
cm90b2NvbDpAcHJvdG9jb2woTlNTZWN1cmVDb2RpbmcpXSkKKyAgICAgICAgW2FyY2hpdmVyIGVu
Y29kZU9iamVjdDp0YXJnZXQuY29udGV4dC5hdk91dHB1dENvbnRleHQgZm9yS2V5OmRldmljZUNv
bnRleHRLZXkoKV07CisKICAgICBbYXJjaGl2ZXIgZmluaXNoRW5jb2RpbmddOwogICAgIElQQzo6
ZW5jb2RlKGVuY29kZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZEYXRhUmVmPihkYXRhLmdldCgpKSk7
CisKIH0KIAotYm9vbCBBcmd1bWVudENvZGVyPE1lZGlhUGxheWJhY2tUYXJnZXQ+OjpkZWNvZGUo
QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBNZWRpYVBsYXliYWNrVGFyZ2V0JiB0YXJnZXQpCiti
b29sIEFyZ3VtZW50Q29kZXI8TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ+OjpkZWNvZGVQbGF0
Zm9ybURhdGEoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dCYgdGFyZ2V0KQogeworICAgIEFTU0VSVCh0YXJnZXQudHlwZSA9PSBNZWRpYVBsYXliYWNr
VGFyZ2V0Q29udGV4dDo6QVZPdXRwdXRDb250ZXh0VHlwZSk7CisKKyAgICBpZiAoIVtnZXRBVk91
dHB1dENvbnRleHRDbGFzcygpIGNvbmZvcm1zVG9Qcm90b2NvbDpAcHJvdG9jb2woTlNTZWN1cmVD
b2RpbmcpXSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgUmV0YWluUHRyPENGRGF0YVJl
Zj4gZGF0YTsKICAgICBpZiAoIUlQQzo6ZGVjb2RlKGRlY29kZXIsIGRhdGEpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICBSZXRhaW5QdHI8TlNLZXllZFVuYXJjaGl2ZXI+IHVuYXJjaGl2
ZXIgPSBhZG9wdE5TKFtbTlNLZXllZFVuYXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JSZWFkaW5nV2l0
aERhdGE6KE5TRGF0YSAqKWRhdGEuZ2V0KCldKTsKICAgICBbdW5hcmNoaXZlciBzZXRSZXF1aXJl
c1NlY3VyZUNvZGluZzpZRVNdOwotICAgIGlmICghTWVkaWFQbGF5YmFja1RhcmdldDo6ZGVjb2Rl
KHVuYXJjaGl2ZXIuZ2V0KCksIHRhcmdldCkpCisKKyAgICBBVk91dHB1dENvbnRleHQgKmNvbnRl
eHQgPSBuaWw7CisgICAgQHRyeSB7CisgICAgICAgIGNvbnRleHQgPSBbdW5hcmNoaXZlciBkZWNv
ZGVPYmplY3RPZkNsYXNzOmdldEFWT3V0cHV0Q29udGV4dENsYXNzKCkgZm9yS2V5OmRldmljZUNv
bnRleHRLZXkoKV07CisgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsKKyAg
ICAgICAgTE9HX0VSUk9SKCJUaGUgdGFyZ2V0IHBpY2tlciBiZWluZyBkZWNvZGVkIGlzIG5vdCBh
IEFWT3V0cHV0Q29udGV4dC4iKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAg
IHRhcmdldC5jb250ZXh0LmF2T3V0cHV0Q29udGV4dCA9IGNvbnRleHQ7CiAgICAgCiAgICAgW3Vu
YXJjaGl2ZXIgZmluaXNoRGVjb2RpbmddOwogICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDE4MjYwNykKKysr
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNTIsNiArMTUyLDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9DYWlyb1V0aWxpdGllcy5o
PgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExB
VEZPUk0oSU9TKQorI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5YmFja1RhcmdldC5oPgorI2Vu
ZGlmCisKIC8vIFRoaXMgY29udHJvbHMgd2hhdCBzdHJhdGVneSB3ZSB1c2UgZm9yIG1vdXNlIHdo
ZWVsIGNvYWxlc2NpbmcuCiAjZGVmaW5lIE1FUkdFX1dIRUVMX0VWRU5UUyAxCiAKQEAgLTU3MTks
MTIgKzU3MjMsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnN0b3BNb25pdG9yaW5nUGxheWJhYwog
ICAgIGRldmljZVBpY2tlclByb3h5KCkuc3RvcE1vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKTsK
IH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZENob29zZVBsYXliYWNrVGFyZ2V0KGNvbnN0IFdl
YkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXQmIHRhcmdldCkKK3ZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRDaG9vc2VQbGF5YmFja1RhcmdldChSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJiB0YXJnZXQp
CiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGxheWJhY2tUYXJnZXRTZWxlY3RlZCh0YXJnZXQp
LCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQbGF5
YmFja1RhcmdldFNlbGVjdGVkKHRhcmdldC0+dGFyZ2V0Q29udGV4dCgpKSwgbV9wYWdlSUQpOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRD
aGFuZ2UoYm9vbCBhdmFpbGFibGUpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCShyZXZpc2lvbiAxODI2MDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMjQsNyArMTAyNCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHN0b3BNb25pdG9yaW5nUGxheWJhY2tUYXJnZXRzKCk7CiAKICAgICAvLyBX
ZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyOjpDbGllbnQKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkQ2hvb3NlUGxheWJhY2tUYXJnZXQoY29uc3QgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1Rh
cmdldCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRDaG9vc2VQbGF5YmFja1Rhcmdl
dChSZWY8V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldD4mJikgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCB2b2lkIGV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKGJvb2wpIG92
ZXJyaWRlOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gMTgyNjA3KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDcgKzEyNiw2IEBA
IGNsYXNzIEhUTUxQbHVnSW5FbGVtZW50OwogY2xhc3MgSFRNTFBsdWdJbkltYWdlRWxlbWVudDsK
IGNsYXNzIEludFBvaW50OwogY2xhc3MgS2V5Ym9hcmRFdmVudDsKLWNsYXNzIE1lZGlhUGxheWJh
Y2tUYXJnZXQ7CiBjbGFzcyBQYWdlOwogY2xhc3MgUHJpbnRDb250ZXh0OwogY2xhc3MgUmFuZ2U7
CkBAIC0xMzksNiArMTM4LDcgQEAgY2xhc3MgVVJMOwogY2xhc3MgVmlzaWJsZVNlbGVjdGlvbjsK
IHN0cnVjdCBIaWdobGlnaHQ7CiBzdHJ1Y3QgS2V5cHJlc3NDb21tYW5kOworc3RydWN0IE1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0Owogc3RydWN0IFRleHRDaGVja2luZ1Jlc3VsdDsKIH0KIApA
QCAtMTEwNSw3ICsxMTA1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldFNob3VsZERpc3BhdGNo
RmFrZU1vdXNlTW92ZUV2ZW50cyhib29sIGRpc3BhdGNoKSB7IG1fc2hvdWxkRGlzcGF0Y2hGYWtl
TW91c2VNb3ZlRXZlbnRzID0gZGlzcGF0Y2g7IH0KIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZ
QkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1MpCi0gICAgdm9pZCBwbGF5YmFja1RhcmdldFNl
bGVjdGVkKGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXQmIG91dHB1dERldmljZSkg
Y29uc3Q7CisgICAgdm9pZCBwbGF5YmFja1RhcmdldFNlbGVjdGVkKGNvbnN0IFdlYkNvcmU6Ok1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiBvdXRwdXREZXZpY2UpIGNvbnN0OwogICAgIHZvaWQg
cGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlEaWRDaGFuZ2UoYm9vbCk7CiAjZW5kaWYKIApJbmRl
eDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4JKHJldmlzaW9uIDE4MjYwNykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC00MTgsNyAr
NDE4LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0U2hv
dWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRzKGJvb2wgc2hvdWxkRGlzcGF0Y2hGYWtlTW91
c2VNb3ZlRXZlbnRzKQogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYg
IVBMQVRGT1JNKElPUykKLSAgICBQbGF5YmFja1RhcmdldFNlbGVjdGVkKFdlYkNvcmU6Ok1lZGlh
UGxheWJhY2tUYXJnZXQgdGFyZ2V0KQorICAgIFBsYXliYWNrVGFyZ2V0U2VsZWN0ZWQoc3RydWN0
IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0IHRhcmdldCkKICAgICBQbGF5YmFj
a1RhcmdldEF2YWlsYWJpbGl0eURpZENoYW5nZShib29sIGF2YWlsYWJsZSkKICNlbmRpZgogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQ
YWdlTWFjLm1tCShyZXZpc2lvbiAxODI2MDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTg4LDcgKzg4LDcg
QEAKICNpbXBvcnQgPFdlYktpdFN5c3RlbUludGVyZmFjZS5oPgogCiAjaWYgRU5BQkxFKFdJUkVM
RVNTX1BMQVlCQUNLX1RBUkdFVCkKLSNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWJhY2tUYXJn
ZXQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWJhY2tUYXJnZXRNYWMuaD4KICNlbmRp
ZgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTEyMjgsOSArMTIyOCwxMSBAQCB2b2lk
IFdlYlBhZ2U6OnNldEZvbnQoY29uc3QgU3RyaW5nJiBmb250CiB9CiAKICNpZiBFTkFCTEUoV0lS
RUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TKQotdm9pZCBXZWJQYWdlOjpw
bGF5YmFja1RhcmdldFNlbGVjdGVkKGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXQm
IHBsYXliYWNrVGFyZ2V0KSBjb25zdAordm9pZCBXZWJQYWdlOjpwbGF5YmFja1RhcmdldFNlbGVj
dGVkKGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiB0YXJnZXRDb250
ZXh0KSBjb25zdAogewotICAgIG1fcGFnZS0+ZGlkQ2hvb3NlUGxheWJhY2tUYXJnZXQocGxheWJh
Y2tUYXJnZXQpOworICAgIEFTU0VSVCh0YXJnZXRDb250ZXh0LnR5cGUgPT0gTWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHQ6OkFWT3V0cHV0Q29udGV4dFR5cGUpOworCisgICAgbV9wYWdlLT5kaWRD
aG9vc2VQbGF5YmFja1RhcmdldChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0TWFjOjpjcmVh
dGUodGFyZ2V0Q29udGV4dC5jb250ZXh0LmF2T3V0cHV0Q29udGV4dCkpOwogfQogCiB2b2lkIFdl
YlBhZ2U6OnBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RGlkQ2hhbmdlKGJvb2wgY2hhbmdlZCkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MjYwNykKKysrIFNvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDE1LTA0LTA5
ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNd
IFJlZmFjdG9yIE1lZGlhUGxheWJhY2tUYXJnZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzU3MQorCisgICAgICAgIFJldmlld2VkIGJ5IEplciBO
b2JsZS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5o
OgorICAgICAgICAqIFdlYlZpZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5tbToKKyAg
ICAgICAgKFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXI6OmRpZENob29zZVBsYXliYWNrVGFy
Z2V0KTogVGFrZSBhIFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiYmLgorCiAyMDE1LTA0LTA5ICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgW1dLMl1baU9TXSBlZGl0
b3JTdGF0ZSgpIHNob3VsZCBub3QgY2F1c2UgYSBzeW5jaHJvbm91cyBsYXlvdXQKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViTWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlci5oCShyZXZpc2lvbiAxODI2MDcpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDQs
NyArNDQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdG9wTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0
cygpOwogCiAgICAgLy8gV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcjo6Q2xpZW50
Ci0gICAgdmlydHVhbCB2b2lkIGRpZENob29zZVBsYXliYWNrVGFyZ2V0KGNvbnN0IFdlYkNvcmU6
Ok1lZGlhUGxheWJhY2tUYXJnZXQmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hv
b3NlUGxheWJhY2tUYXJnZXQoUmVmPFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXQ+JiYpIG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURp
ZENoYW5nZShib29sKSBvdmVycmlkZTsKIAogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwpJbmRleDog
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViTWVkaWFQbGF5YmFj
a1RhcmdldFBpY2tlci5tbQkocmV2aXNpb24gMTgyNjA3KQorKysgU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC01NSwxMiArNTUsMTIgQEAgdm9pZCBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyOjpzdG9w
TQogICAgIHRhcmdldFBpY2tlcigpLnN0b3BNb25pdG9yaW5nUGxheWJhY2tUYXJnZXRzKCk7CiB9
CiAKLXZvaWQgV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcjo6ZGlkQ2hvb3NlUGxheWJhY2tU
YXJnZXQoY29uc3QgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldCYgdGFyZ2V0KQordm9pZCBX
ZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyOjpkaWRDaG9vc2VQbGF5YmFja1RhcmdldChSZWY8
V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldD4mJiB0YXJnZXQpCiB7CiAgICAgaWYgKCFtX3Bh
Z2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcGFnZS0+ZGlkQ2hvb3NlUGxheWJhY2tUYXJn
ZXQodGFyZ2V0KTsKKyAgICBtX3BhZ2UtPmRpZENob29zZVBsYXliYWNrVGFyZ2V0KFdURjo6bW92
ZSh0YXJnZXQpKTsKIH0KIAogdm9pZCBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyOjpleHRl
cm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShib29sIGF2YWlsYWJsZSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>