<?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>107327</bug_id>
          
          <creation_ts>2013-01-18 14:35:09 -0800</creation_ts>
          <short_desc>Objective-C API: Rename JSValue.h/APIJSValue.h to JSCJSValue.h/JSValue.h</short_desc>
          <delta_ts>2013-01-31 14:12:17 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</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="Mark Hahnenberg">mhahnenberg</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenberg</assigned_to>
          <cc>buildbot</cc>
    
    <cc>ggaren</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mifenton</cc>
    
    <cc>philn</cc>
    
    <cc>rakuco</cc>
    
    <cc>rniwa</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>yong.li.webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>811053</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-01-18 14:35:09 -0800</bug_when>
    <thetext>We should rename these files to provide the best/least confusing/most consistent external interface for our clients.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811105</commentid>
    <comment_count>1</comment_count>
      <attachid>183560</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-01-18 15:35:56 -0800</bug_when>
    <thetext>Created attachment 183560
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811145</commentid>
    <comment_count>2</comment_count>
      <attachid>183570</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-01-18 16:29:01 -0800</bug_when>
    <thetext>Created attachment 183570
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811146</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-18 16:30:50 -0800</bug_when>
    <thetext>Attachment 183570 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/API/APICast.h&apos;, u&apos;So...&quot; exit_code: 1
Source/JavaScriptCore/runtime/JSCJSValue.cpp:32:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/JSCJSValue.cpp:260:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/JavaScriptCore/runtime/JSCJSValue.cpp:263:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/JavaScriptCore/runtime/JSCJSValue.cpp:271:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/JavaScriptCore/runtime/JSCJSValueInlines.h:26:  #ifndef header guard has wrong style, please use: JSCJSValueInlines_h  [build/header_guard] [5]
Source/JavaScriptCore/runtime/JSCJSValue.h:363:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSCJSValue.h:366:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSCJSValue.h:369:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSCJSValue.h:370:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSCJSValue.h:371:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSCJSValue.h:373:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSCJSValue.h:374:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSCJSValue.h:375:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSCJSValue.h:376:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSCJSValue.h:379:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSCJSValue.h:386:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSCJSValue.h:387:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
Total errors found: 17 in 92 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>811156</commentid>
    <comment_count>4</comment_count>
      <attachid>183570</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-01-18 16:42:07 -0800</bug_when>
    <thetext>Comment on attachment 183570
Patch

Attachment 183570 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/15946654</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811164</commentid>
    <comment_count>5</comment_count>
      <attachid>183570</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-01-18 16:51:01 -0800</bug_when>
    <thetext>Comment on attachment 183570
Patch

Attachment 183570 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/15946656</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811181</commentid>
    <comment_count>6</comment_count>
      <attachid>183570</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-18 17:05:30 -0800</bug_when>
    <thetext>Comment on attachment 183570
Patch

Attachment 183570 did not pass mac-wk2-ews (mac-wk2):
Output: http://queues.webkit.org/results/15937955

New failing tests:
canvas/philip/tests/2d.path.arc.scale.2.html
canvas/philip/tests/2d.path.stroke.skew.html
fast/canvas/webgl/read-pixels-test.html
canvas/philip/tests/2d.path.arcTo.scale.html
editing/selection/move-by-word-visually-multi-line.html
canvas/philip/tests/2d.path.stroke.scale1.html
canvas/philip/tests/2d.path.arcTo.transformation.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811259</commentid>
    <comment_count>7</comment_count>
      <attachid>183570</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-18 19:04:40 -0800</bug_when>
    <thetext>Comment on attachment 183570
Patch

Attachment 183570 did not pass win-ews (win):
Output: http://queues.webkit.org/results/15944844</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811264</commentid>
    <comment_count>8</comment_count>
      <attachid>183570</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-01-18 19:45:35 -0800</bug_when>
    <thetext>Comment on attachment 183570
Patch

Attachment 183570 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/15964025</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811267</commentid>
    <comment_count>9</comment_count>
      <attachid>183570</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-01-18 19:51:49 -0800</bug_when>
    <thetext>Comment on attachment 183570
Patch

Attachment 183570 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/15969011</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>812291</commentid>
    <comment_count>10</comment_count>
      <attachid>183809</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-01-21 11:36:49 -0800</bug_when>
    <thetext>Created attachment 183809
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>812293</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-21 11:40:23 -0800</bug_when>
    <thetext>Attachment 183809 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/API/APICast.h&apos;, u&apos;So...&quot; exit_code: 1
Source/JavaScriptCore/runtime/JSCJSValue.cpp:260:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/JavaScriptCore/runtime/JSCJSValue.cpp:263:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/JavaScriptCore/runtime/JSCJSValue.cpp:271:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/JavaScriptCore/runtime/JSCJSValueInlines.h:26:  #ifndef header guard has wrong style, please use: JSCJSValueInlines_h  [build/header_guard] [5]
Source/JavaScriptCore/runtime/JSCJSValue.h:363:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSCJSValue.h:366:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSCJSValue.h:369:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSCJSValue.h:370:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSCJSValue.h:371:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSCJSValue.h:373:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSCJSValue.h:374:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSCJSValue.h:375:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSCJSValue.h:376:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSCJSValue.h:379:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSCJSValue.h:386:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSCJSValue.h:387:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
Total errors found: 16 in 96 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>812295</commentid>
    <comment_count>12</comment_count>
      <attachid>183809</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-01-21 11:45:19 -0800</bug_when>
    <thetext>Comment on attachment 183809
Patch

Attachment 183809 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/16037177</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>812304</commentid>
    <comment_count>13</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-01-21 11:52:36 -0800</bug_when>
    <thetext>General approach looks good, but EWS says you missed some cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>812314</commentid>
    <comment_count>14</comment_count>
      <attachid>183815</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-01-21 12:03:53 -0800</bug_when>
    <thetext>Created attachment 183815
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>812316</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-21 12:08:31 -0800</bug_when>
    <thetext>Attachment 183815 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/API/APICast.h&apos;, u&apos;So...&quot; exit_code: 1
Source/JavaScriptCore/runtime/JSCJSValue.cpp:260:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/JavaScriptCore/runtime/JSCJSValue.cpp:263:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/JavaScriptCore/runtime/JSCJSValue.cpp:271:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/JavaScriptCore/runtime/JSCJSValueInlines.h:26:  #ifndef header guard has wrong style, please use: JSCJSValueInlines_h  [build/header_guard] [5]
Source/JavaScriptCore/runtime/JSCJSValue.h:363:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSCJSValue.h:366:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSCJSValue.h:369:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSCJSValue.h:370:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSCJSValue.h:371:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSCJSValue.h:373:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSCJSValue.h:374:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSCJSValue.h:375:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSCJSValue.h:376:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSCJSValue.h:379:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSCJSValue.h:386:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSCJSValue.h:387:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
Total errors found: 16 in 115 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>813383</commentid>
    <comment_count>16</comment_count>
      <attachid>183815</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-22 13:53:12 -0800</bug_when>
    <thetext>Comment on attachment 183815
Patch

Attachment 183815 did not pass mac-wk2-ews (mac-wk2):
Output: http://queues.webkit.org/results/16045771

New failing tests:
canvas/philip/tests/2d.path.arc.scale.2.html
canvas/philip/tests/2d.path.stroke.skew.html
fast/canvas/webgl/read-pixels-test.html
canvas/philip/tests/2d.path.arcTo.scale.html
canvas/philip/tests/2d.path.stroke.scale1.html
canvas/philip/tests/2d.path.arcTo.transformation.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815768</commentid>
    <comment_count>17</comment_count>
      <attachid>183815</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-01-24 13:21:53 -0800</bug_when>
    <thetext>Comment on attachment 183815
Patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815793</commentid>
    <comment_count>18</comment_count>
      <attachid>183815</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-24 13:41:29 -0800</bug_when>
    <thetext>Comment on attachment 183815
Patch

Clearing flags on attachment: 183815

Committed r140718: &lt;http://trac.webkit.org/changeset/140718&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815794</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-24 13:41:35 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821939</commentid>
    <comment_count>20</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-01-31 14:12:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/12954274&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183560</attachid>
            <date>2013-01-18 15:35:56 -0800</date>
            <delta_ts>2013-01-18 16:28:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107327-20130118153255.patch</filename>
            <type>text/plain</type>
            <size>196100</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQwMjExKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkxIEBA
CisyMDEzLTAxLTE4ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgT2JqZWN0aXZlLUMgQVBJOiBSZW5hbWUgSlNWYWx1ZS5oL0FQSUpTVmFsdWUuaCB0
byBKU0NKU1ZhbHVlLmgvSlNWYWx1ZS5oCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDczMjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBXZSdyZSByZW5hbWluZyB0aGVzZSB0d28gZmlsZXMsIHNvIHdlIGhh
dmUgdG8gcmVwbGFjZSB0aGUgbmFtZXMgZXZlcnl3aGVyZS4KKworICAgICAgICAqIEFQSS9BUElD
YXN0Lmg6CisgICAgICAgICogQVBJL0FQSUpTVmFsdWUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBB
UEkvSlNCbG9ja0FkYXB0b3IubW06CisgICAgICAgICogQVBJL0pTU3RyaW5nUmVmQ0YuY3BwOgor
ICAgICAgICAqIEFQSS9KU1ZhbHVlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvQVBJSlNWYWx1ZS5oLgorICAgICAgICAqIEFQSS9KU1ZhbHVlLm1tOgorICAgICAgICAq
IEFQSS9KU1ZhbHVlSW50ZXJuYWwuaDoKKyAgICAgICAgKiBBUEkvSlNWYWx1ZVJlZi5jcHA6Cisg
ICAgICAgICogQVBJL0pTV2Vha09iamVjdE1hcFJlZlByaXZhdGUuY3BwOgorICAgICAgICAqIEFQ
SS9KU1dyYXBwZXJNYXAubW06CisgICAgICAgICgtW0pTV3JhcHBlck1hcCB3cmFwcGVyRm9yT2Jq
ZWN0Ol0pOgorICAgICAgICAqIEFQSS9KYXZhU2NyaXB0Q29yZS5oOgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnl0ZWNvZGUv
Q2FsbExpbmtTdGF0dXMuaDoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAg
ICAgICAqIGJ5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaDoKKyAgICAgICAg
KiBieXRlY29kZS9SZXNvbHZlR2xvYmFsU3RhdHVzLmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9S
ZXNvbHZlR2xvYmFsU3RhdHVzLmg6CisgICAgICAgICogYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUu
aDoKKyAgICAgICAgKiBieXRlY29kZS9WYWx1ZVJlY292ZXJ5Lmg6CisgICAgICAgICogZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuY3BwOgor
ICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgICog
aGVhcC9Db3BpZWRCbG9jay5oOgorICAgICAgICAqIGhlYXAvSGFuZGxlU3RhY2suY3BwOgorICAg
ICAgICAqIGhlYXAvSGFuZGxlVHlwZXMuaDoKKyAgICAgICAgKiBoZWFwL1dlYWtJbXBsLmg6Cisg
ICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKiBpbnRlcnByZXRl
ci9SZWdpc3Rlci5oOgorICAgICAgICAqIGludGVycHJldGVyL1ZNSW5zcGVjdG9yLmg6CisgICAg
ICAgICogaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwOgorICAgICAgICAqIGppdC9Ib3N0Q2Fs
bFJldHVyblZhbHVlLmg6CisgICAgICAgICogaml0L0pJVENvZGUuaDoKKyAgICAgICAgKiBqaXQv
SklURXhjZXB0aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVEV4Y2VwdGlvbnMuaDoKKyAgICAg
ICAgKiBqaXQvSlNJbnRlcmZhY2VKSVQuaDoKKyAgICAgICAgKiBsbGludC9MTEludENMb29wLmg6
CisgICAgICAgICogbGxpbnQvTExJbnREYXRhLmg6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVyQnl0ZWNvZGUuaDoKKyAgICAg
ICAgKiBwcm9maWxlci9Qcm9maWxlckJ5dGVjb2RlU2VxdWVuY2UuaDoKKyAgICAgICAgKiBwcm9m
aWxlci9Qcm9maWxlckJ5dGVjb2Rlcy5oOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVyQ29t
cGlsYXRpb24uaDoKKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxlckNvbXBpbGVkQnl0ZWNvZGUu
aDoKKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxlckRhdGFiYXNlLmg6CisgICAgICAgICogcHJv
ZmlsZXIvUHJvZmlsZXJPU1JFeGl0Lmg6CisgICAgICAgICogcHJvZmlsZXIvUHJvZmlsZXJPU1JF
eGl0U2l0ZS5oOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVyT3JpZ2luLmg6CisgICAgICAg
ICogcHJvZmlsZXIvUHJvZmlsZXJPcmlnaW5TdGFjay5oOgorICAgICAgICAqIHJ1bnRpbWUvQXJn
TGlzdC5jcHA6CisgICAgICAgICogcnVudGltZS9DYWNoZWRUcmFuc2NlbmRlbnRhbEZ1bmN0aW9u
Lmg6CisgICAgICAgICogcnVudGltZS9DYWxsRGF0YS5oOgorICAgICAgICAqIHJ1bnRpbWUvQ29t
cGxldGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvQ29uc3RydWN0RGF0YS5oOgorICAgICAgICAq
IHJ1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0RhdGVJbnN0
YW5jZS5jcHA6CisgICAgICAgICogcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcDoKKyAgICAgICAg
KiBydW50aW1lL0pTQVBJVmFsdWVXcmFwcGVyLmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1Zh
bHVlLmNwcDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1
ZS5jcHAuCisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmg6IENvcGllZCBmcm9tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaC4KKyAgICAgICAgKEpTVmFsdWUpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaDogQ29waWVkIGZyb20gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZUlubGluZXMuaC4KKyAgICAgICAgKiBydW50
aW1lL0pTR2xvYmFsRGF0YS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTU3RyaW5nSm9pbmVyLmg6CisgICAgICAgICogcnVudGltZS9KU1ZhbHVlLmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBydW50aW1lL0pTVmFsdWUuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBydW50aW1lL0pTVmFsdWVJbmxpbmVzLmg6IFJlbW92ZWQuCisgICAgICAgICogcnVudGlt
ZS9MaXRlcmFsUGFyc2VyLmg6CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmg6CisgICAg
ICAgICogcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL1By
b3BlcnR5U2xvdC5oOgorICAgICAgICAqIHJ1bnRpbWUvUHJvdGVjdC5oOgorICAgICAgICAqIHJ1
bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5o
OgorCiAyMDEzLTAxLTE4ICBWaWF0Y2hlc2xhdiBPc3RhcGVua28gIDxzbC5vc3RhcGVua29Ac2Ft
c3VuZy5jb20+CiAKICAgICAgICAgV2VhayBHQyBtYXBzIHNob3VsZCBiZSBlYXNpZXIgdG8gdXNl
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhc3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhc3QuaAkocmV2aXNpb24gMTQwMTk2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElDYXN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDggKzI3LDggQEAKICNkZWZpbmUgQVBJQ2FzdF9oCiAKICNpbmNsdWRlICJKU0FQSVZhbHVl
V3JhcHBlci5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9i
amVjdC5oIgotI2luY2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0u
aD4KIAogbmFtZXNwYWNlIEpTQyB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQ
SUpTVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUpT
VmFsdWUuaAkocmV2aXNpb24gMTQwMTk3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9B
UElKU1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMjkzICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmIEpTX09CSkNfQVBJX0VOQUJM
RUQKLQotQGNsYXNzIEpTQ29udGV4dDsKLQotLy8gQSBKU1ZhbHVlIGlzIGEgcmVmZXJlbmNlIHRv
IGEgdmFsdWUgd2l0aGluIHRoZSBKYXZhU2NyaXB0IG9iamVjdCBzcGFjZSBvZiBhCi0vLyBKU1Zp
cnR1YWxNYWNoaW5lLiBBbGwgaW5zdGFuY2VzIG9mIEpTVmFsdWUgb3JpZ2luYXRlIGZyb20gYSBK
U0NvbnRleHQgYW5kCi0vLyBob2xkIGEgc3Ryb25nIHJlZmVyZW5jZSB0byB0aGlzIEpTQ29udGV4
dC4gQXMgbG9uZyBhcyBhbnkgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIAotLy8gYSBwYXJ0aWN1bGFy
IEpTQ29udGV4dCBpcyByZXRhaW5lZCwgdGhhdCBKU0NvbnRleHQgd2lsbCByZW1haW4gYWxpdmUu
IAotLy8gV2hlcmUgYW4gaW5zdGFuY2UgbWV0aG9kIGlzIGludm9rZWQgdXBvbiBhIEpTVmFsdWUs
IGFuZCB0aGlzIHJldHVybnMgYW5vdGhlciAKLS8vIEpTVmFsdWUsIHRoZSByZXR1cm5lZCBKU1Zh
bHVlIHdpbGwgb3JpZ2luYXRlIGZyb20gdGhlIHNhbWUgSlNDb250ZXh0IGFzIHRoZSAKLS8vIEpT
VmFsdWUgb24gd2hpY2ggdGhlIG1ldGhvZCB3YXMgaW52b2tlZC4KLS8vCi0vLyBGb3IgYWxsIG1l
dGhvZHMgdGFraW5nIGFyZ3VtZW50cyBvZiB0eXBlIGlkLCBhcmd1bWVudHMgd2lsbCBiZSBjb252
ZXJ0ZWQKLS8vIGludG8gYSBKYXZhU2NyaXB0IHZhbHVlIGFjY29yZGluZyB0byB0aGUgY29udmVy
c2lvbiBzcGVjaWZpZWQgYmVsb3cuCi0vLyBBbGwgSmF2YVNjcmlwdCB2YWx1ZXMgYXJlIGFzc29j
aWF0ZWQgd2l0aCBhIHBhcnRpY3VsYXIgSlNWaXJ0dWFsTWFjaGluZQotLy8gKHRoZSBhc3NvY2lh
dGVkIEpTVmlydHVhbE1hY2hpbmUgaXMgYXZhaWxhYmxlIGluZGlyZWN0bHkgdmlhIHRoZSBjb250
ZXh0Ci0vLyBwcm9wZXJ0eSkuIEFuIGluc3RhbmNlIG9mIEpTVmFsdWUgbWF5IG9ubHkgYmUgcGFz
c2VkIGFzIGFuIGFyZ3VtZW50IHRvCi0vLyBtZXRob2RzIG9uIGluc3RhbmNlcyBvZiBKU1ZhbHVl
IGFuZCBKU0NvbnRleHQgdGhhdCBiZWxvbmcgdG8gdGhlIHNhbWUKLS8vIEpTVmlydHVhbE1hY2hp
bmUgLSBwYXNzaW5nIGEgSlNWYWx1ZSB0byBhIG1ldGhvZCBvbiBhbiBvYmplY3Qgb3JpZ2luYXRp
bmcKLS8vIGZyb20gYSBkaWZmZXJlbnQgSlNWaXJ0dWFsTWFjaGluZSB3aWxsIHJlc3VsdCBpbiBh
biBPYmplY3RpdmUtQyBleGNlcHRpb24KLS8vIGJlaW5nIHJhaXNlZC4KLS8vCi0vLyBDb252ZXJz
aW9uIGJldHdlZW4gT2JqZWN0aXZlLUMgYW5kIEphdmFTY3JpcHQgdHlwZXMuCi0vLwotLy8gV2hl
biBjb252ZXJ0aW5nIGJldHdlZW4gSmF2YVNjcmlwdCB2YWx1ZXMgYW5kIE9iamVjdGl2ZS1DIG9i
amVjdHMgYSBjb3B5IGlzCi0vLyBwZXJmb3JtZWQuIFZhbHVlcyBvZiB0eXBlcyBsaXN0ZWQgYmVs
b3cgYXJlIGNvcGllZCB0byB0aGUgY29ycmVzcG9uZGluZwotLy8gdHlwZXMgb24gY29udmVyc2lv
biBpbiBlYWNoIGRpcmVjdGlvbi4gRm9yIE5TRGljdGlvbmFyaWVzLCBlbnRyaWVzIGluIHRoZQot
Ly8gZGljdGlvbmFyeSB0aGF0IGFyZSBrZXllZCBieSBzdHJpbmdzIGFyZSBjb3BpZWQgb250byBh
IEphdmFTY3JpcHQgb2JqZWN0LgotLy8gRm9yIGRpY3Rpb25hcmllcyBhbmQgYXJyYXlzLCBjb252
ZXJzaW9uIGlzIHJlY3Vyc2l2ZSwgd2l0aCB0aGUgc2FtZSBvYmplY3QKLS8vIGNvbnZlcnNpb24g
YmVpbmcgYXBwbGllZCB0byBhbGwgZW50cmllcyBpbiB0aGUgY29sbGVjdGlvbi4KLS8vCi0vLyAg
IE9iamVjdGl2ZS1DIHR5cGUgIHwgICBKYXZhU2NyaXB0IHR5cGUKLS8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gICAgICAgICBuaWwgICAgICAgICB8ICAg
ICB1bmRlZmluZWQKLS8vICAgICAgICBOU051bGwgICAgICAgfCAgICAgICAgbnVsbAotLy8gICAg
ICAgTlNTdHJpbmcgICAgICB8ICAgICAgIHN0cmluZwotLy8gICAgICAgTlNOdW1iZXIgICAgICB8
ICAgbnVtYmVyLCBib29sZWFuCi0vLyAgICAgTlNEaWN0aW9uYXJ5ICAgIHwgICBPYmplY3Qgb2Jq
ZWN0Ci0vLyAgICAgICBOU0FycmF5ICAgICAgIHwgICAgQXJyYXkgb2JqZWN0Ci0vLyAgICAgICAg
TlNEYXRlICAgICAgIHwgICAgIERhdGUgb2JqZWN0Ci0vLyAgICAgICBOU0Jsb2NrICogICAgIHwg
ICBGdW5jdGlvbiBvYmplY3QgKgotLy8gICAgICAgICAgaWQgKiogICAgICB8ICAgV3JhcHBlciBv
YmplY3QgKioKLS8vICAgICAgICBDbGFzcyAqKiogICAgfCBDb25zdHJ1Y3RvciBvYmplY3QgKioq
Ci0vLwotLy8gKiBJbnN0YW5jZXMgb2YgTlNCbG9jayB3aXRoIHN1cHBvcnRlZCBhcmd1bWVudHMg
dHlwZXMgd2lsbCBiZSBwcmVzZW50ZWQgdG8KLS8vIEphdmFTY3JpcHQgYXMgYSBjYWxsYWJsZSBG
dW5jdGlvbiBvYmplY3QuIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHN1cHBvcnRlZAotLy8gYXJn
dW1lbnQgdHlwZXMgc2VlIEpTRXhwb3J0LmguIElmIGEgSmF2YVNjcmlwdCBGdW5jdGlvbiBvcmln
aW5hdGluZyBmcm9tIGFuCi0vLyBPYmplY3RpdmUtQyBibG9jayBpcyBjb252ZXJ0ZWQgYmFjayB0
byBhbiBPYmplY3RpdmUtQyBvYmplY3QgdGhlIGJsb2NrIHdpbGwKLS8vIGJlIHJldHVybmVkLiBB
bGwgb3RoZXIgSmF2YVNjcmlwdCBmdW5jdGlvbnMgd2lsbCBiZSBjb252ZXJ0ZWQgaW4gdGhlIHNh
bWUKLS8vIG1hbm5lciBhcyBhIEphdmFTY3JpcHQgb2JqZWN0IG9mIHR5cGUgT2JqZWN0LgotLy8K
LS8vICoqIEZvciBPYmplY3RpdmUtQyBpbnN0YW5jZXMgdGhhdCBkbyBub3QgZGVyaXZlIGZyb20g
dGhlIHNldCBvZiB0eXBlcyBsaXN0ZWQKLS8vIGFib3ZlLCBhIHdyYXBwZXIgb2JqZWN0IHRvIHBy
b3ZpZGUgYSByZXRhaW5pbmcgaGFuZGxlIHRvIHRoZSBPYmplY3RpdmUtQwotLy8gaW5zdGFuY2Ug
ZnJvbSBKYXZhU2NyaXB0LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGVzZSB3cmFwcGVyIG9i
amVjdHMsIHNlZQotLy8gSlNFeHBvcnQuaC4gV2hlbiBhIEphdmFTY3JpcHQgd3JhcHBlciBvYmpl
Y3QgaXMgY29udmVydGVkIGJhY2sgdG8gT2JqZWN0aXZlLUMKLS8vIHRoZSBPYmplY3RpdmUtQyBp
bnN0YW5jZSBiZWluZyByZXRhaW5lZCBieSB0aGUgd3JhcHBlciBpcyByZXR1cm5lZC4KLS8vCi0v
LyAqKiogRm9yIE9iamVjdGl2ZS1DIENsYXNzIG9iamVjdHMgYSBjb25zdHJ1Y3RvciBvYmplY3Qg
Y29udGFpbmluZyBleHBvcnRlZAotLy8gY2xhc3MgbWV0aG9kcyB3aWxsIGJlIHJldHVybmVkLiBT
ZWUgSlNFeHBvcnQuaCBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbgotLy8gY29uc3RydWN0b3Igb2Jq
ZWN0cy4KLQotTlNfQ0xBU1NfQVZBSUxBQkxFKDEwXzksIE5BKQotQGludGVyZmFjZSBKU1ZhbHVl
IDogTlNPYmplY3QKLQotLy8gQ3JlYXRlIGEgSlNWYWx1ZSBieSBjb252ZXJ0aW5nIGFuIE9iamVj
dGl2ZS1DIG9iamVjdC4KLSsgKEpTVmFsdWUgKil2YWx1ZVdpdGhPYmplY3Q6KGlkKXZhbHVlIGlu
Q29udGV4dDooSlNDb250ZXh0ICopY29udGV4dDsKLS8vIENyZWF0ZSBhIEphdmFTY3JpcHQgdmFs
dWUgZnJvbSBhbiBPYmplY3RpdmUtQyBwcmltaXRpdmUgdHlwZS4KLSsgKEpTVmFsdWUgKil2YWx1
ZVdpdGhCb29sOihCT09MKXZhbHVlIGluQ29udGV4dDooSlNDb250ZXh0ICopY29udGV4dDsKLSsg
KEpTVmFsdWUgKil2YWx1ZVdpdGhEb3VibGU6KGRvdWJsZSl2YWx1ZSBpbkNvbnRleHQ6KEpTQ29u
dGV4dCAqKWNvbnRleHQ7Ci0rIChKU1ZhbHVlICopdmFsdWVXaXRoSW50MzI6KGludDMyX3QpdmFs
dWUgaW5Db250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0OwotKyAoSlNWYWx1ZSAqKXZhbHVlV2l0
aFVJbnQzMjoodWludDMyX3QpdmFsdWUgaW5Db250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0Owot
Ly8gQ3JlYXRlIGEgSmF2YVNjcmlwdCB2YWx1ZSBpbiB0aGlzIGNvbnRleHQuCi0rIChKU1ZhbHVl
ICopdmFsdWVXaXRoTmV3T2JqZWN0SW5Db250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0OwotKyAo
SlNWYWx1ZSAqKXZhbHVlV2l0aE5ld0FycmF5SW5Db250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0
OwotKyAoSlNWYWx1ZSAqKXZhbHVlV2l0aE5ld1JlZ3VsYXJFeHByZXNzaW9uRnJvbVBhdHRlcm46
KE5TU3RyaW5nICopcGF0dGVybiBmbGFnczooTlNTdHJpbmcgKilmbGFncyBpbkNvbnRleHQ6KEpT
Q29udGV4dCAqKWNvbnRleHQ7Ci0rIChKU1ZhbHVlICopdmFsdWVXaXRoTmV3RXJyb3JGcm9tTWVz
c2FnZTooTlNTdHJpbmcgKiltZXNzYWdlIGluQ29udGV4dDooSlNDb250ZXh0ICopY29udGV4dDsK
LSsgKEpTVmFsdWUgKil2YWx1ZVdpdGhOdWxsSW5Db250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0
OwotKyAoSlNWYWx1ZSAqKXZhbHVlV2l0aFVuZGVmaW5lZEluQ29udGV4dDooSlNDb250ZXh0ICop
Y29udGV4dDsKLQotLy8gQ29udmVydCB0aGlzIHZhbHVlIHRvIGEgY29ycmVzcG9uZGluZyBPYmpl
Y3RpdmUtQyBvYmplY3QsIGFjY29yZGluZyB0byB0aGUKLS8vIGNvbnZlcnNpb24gc3BlY2lmaWVk
IGFib3ZlLgotLSAoaWQpdG9PYmplY3Q7Ci0vLyBDb252ZXJ0IHRoaXMgdmFsdWUgdG8gYSBjb3Jy
ZXNwb25kaW5nIE9iamVjdGl2ZS1DIG9iamVjdCwgaWYgdGhlIHJlc3VsdCBpcwotLy8gbm90IG9m
IHRoZSBzcGVjaWZpZWQgY2xhc3MgdGhlbiBuaWwgd2lsbCBiZSByZXR1cm5lZC4KLS0gKGlkKXRv
T2JqZWN0T2ZDbGFzczooQ2xhc3MpZXhwZWN0ZWRDbGFzczsKLS8vIFRoZSB2YWx1ZSBpcyBjb3Bp
ZWQgdG8gYSBib29sZWFuIGFjY29yZGluZyB0byB0aGUgY29udmVyc2lvbiBzcGVjaWZpZWQgYnkg
dGhlCi0vLyBKYXZhU2NyaXB0IGxhbmd1YWdlLgotLSAoQk9PTCl0b0Jvb2w7Ci0vLyBUaGUgdmFs
dWUgaXMgY29waWVkIHRvIGEgbnVtYmVyIGFjY29yZGluZyB0byB0aGUgY29udmVyc2lvbiBzcGVj
aWZpZWQgYnkgdGhlCi0vLyBKYXZhU2NyaXB0IGxhbmd1YWdlLgotLSAoZG91YmxlKXRvRG91Ymxl
OwotLy8gVGhlIHZhbHVlIGlzIGNvcGllZCB0byBhbiBpbnRlZ2VyIGFjY29yZGluZyB0byB0aGUg
Y29udmVyc2lvbiBzcGVjaWZpZWQgYnkKLS8vIHRoZSBKYXZhU2NyaXB0IGxhbmd1YWdlLgotLSAo
aW50MzJfdCl0b0ludDMyOwotLy8gVGhlIHZhbHVlIGlzIGNvcGllZCB0byBhbiBpbnRlZ2VyIGFj
Y29yZGluZyB0byB0aGUgY29udmVyc2lvbiBzcGVjaWZpZWQgYnkKLS8vIHRoZSBKYXZhU2NyaXB0
IGxhbmd1YWdlLgotLSAodWludDMyX3QpdG9VSW50MzI7Ci0vLyBJZiB0aGUgdmFsdWUgaXMgYSBi
b29sZWFuLCBhIE5TTnVtYmVyIHZhbHVlIG9mIEBZRVMgb3IgQE5PIHdpbGwgYmUgcmV0dXJuZWQu
Ci0vLyBGb3IgYWxsIG90aGVyIHR5cGVzIHRoZSB2YWx1ZSB3aWxsIGJlIGNvcGllZCB0byBhIG51
bWJlciBhY2NvcmRpbmcgdG8gdGhlCi0vLyBjb252ZXJzaW9uIHNwZWNpZmllZCBieSB0aGUgSmF2
YVNjcmlwdCBsYW5ndWFnZS4KLS0gKE5TTnVtYmVyICopdG9OdW1iZXI7Ci0vLyBUaGUgdmFsdWUg
aXMgY29waWVkIHRvIGEgc3RyaW5nIGFjY29yZGluZyB0byB0aGUgY29udmVyc2lvbiBzcGVjaWZp
ZWQgYnkgdGhlCi0vLyBKYXZhU2NyaXB0IGxhbmd1YWdlLgotLSAoTlNTdHJpbmcgKil0b1N0cmlu
ZzsKLS8vIFRoZSB2YWx1ZSBpcyBjb252ZXJ0ZWQgdG8gYSBudW1iZXIgcmVwcmVzZW50aW5nIGEg
dGltZSBpbnRlcnZhbCBzaW5jZSAxOTcwLAotLy8gYW5kIGEgbmV3IE5TRGF0ZSBpbnN0YW5jZSBp
cyByZXR1cm5lZC4KLS0gKE5TRGF0ZSAqKXRvRGF0ZTsKLS8vIElmIHRoZSB2YWx1ZSBpcyBudWxs
IG9yIHVuZGVmaW5lZCB0aGVuIG5pbCBpcyByZXR1cm5lZC4KLS8vIElmIHRoZSB2YWx1ZSBpcyBu
b3QgYW4gb2JqZWN0IHRoZW4gYSBKYXZhU2NyaXB0IFR5cGVFcnJvciB3aWxsIGJlIHRocm93bi4K
LS8vIFRoZSBwcm9wZXJ0eSAibGVuZ3RoIiBpcyByZWFkIGZyb20gdGhlIG9iamVjdCwgY29udmVy
dGVkIHRvIGFuIHVuc2lnbmVkCi0vLyBpbnRlZ2VyLCBhbmQgYW4gTlNBcnJheSBvZiB0aGlzIHNp
emUgaXMgYWxsb2NhdGVkLiBQcm9wZXJ0aWVzIGNvcnJlc3BvbmRpbmcKLS8vIHRvIGluZGljaWVz
IHdpdGhpbiB0aGUgYXJyYXkgYm91bmRzIHdpbGwgYmUgY29waWVkIHRvIHRoZSBhcnJheSwgd2l0
aAotLy8gT2JqZWN0aXZlLUMgb2JqZWN0cyBjb252ZXJ0ZWQgdG8gZXF1aXZhbGVudCBKU1ZhbHVl
cyBhcyBzcGVjaWZpZWQuCi0tIChOU0FycmF5ICopdG9BcnJheTsKLS8vIElmIHRoZSB2YWx1ZSBp
cyBudWxsIG9yIHVuZGVmaW5lZCB0aGVuIG5pbCBpcyByZXR1cm5lZC4KLS8vIElmIHRoZSB2YWx1
ZSBpcyBub3QgYW4gb2JqZWN0IHRoZW4gYSBKYXZhU2NyaXB0IFR5cGVFcnJvciB3aWxsIGJlIHRo
cm93bi4KLS8vIEFsbCBlbnVtZXJhYmxlIHByb3BlcnRpZXMgb2YgdGhlIG9iamVjdCBhcmUgY29w
aWVkIHRvIHRoZSBkaWN0aW9uYXJ5LCB3aXRoCi0vLyBPYmplY3RpdmUtQyBvYmplY3RzIGNvbnZl
cnRlZCB0byBlcXVpdmFsZW50IEpTVmFsdWVzIGFzIHNwZWNpZmllZC4KLS0gKE5TRGljdGlvbmFy
eSAqKXRvRGljdGlvbmFyeTsKLQotLy8gQWNjZXNzIGEgcHJvcGVydHkgZnJvbSB0aGUgdmFsdWUu
IFRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuIHRoZSBKYXZhU2NyaXB0IHZhbHVlCi0vLyAndW5kZWZp
bmVkJyBpZiB0aGUgcHJvcGVydHkgZG9lcyBub3QgZXhpc3QuCi0tIChKU1ZhbHVlICopdmFsdWVG
b3JQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eTsKLS8vIFNldCBhIHByb3BlcnR5IG9uIHRo
ZSB2YWx1ZS4KLS0gKHZvaWQpc2V0VmFsdWU6KGlkKXZhbHVlIGZvclByb3BlcnR5OihOU1N0cmlu
ZyAqKXByb3BlcnR5OwotLy8gRGVsZXRlIGEgcHJvcGVydHkgZnJvbSB0aGUgdmFsdWUsIHJldHVy
bnMgWUVTIGlmIGRlbGV0aW9uIGlzIHN1Y2Nlc3NmdWwuCi0tIChCT09MKWRlbGV0ZVByb3BlcnR5
OihOU1N0cmluZyAqKXByb3BlcnR5OwotLy8gUmV0dXJucyBZRVMgaWYgcHJvcGVydHkgaXMgcHJl
c2VudCBvbiB0aGUgdmFsdWUuCi0vLyBUaGlzIG1ldGhvZCBoYXMgdGhlIHNhbWUgZnVuY3Rpb24g
YXMgdGhlIEphdmFTY3JpcHQgb3BlcmF0b3IgImluIi4KLS0gKEJPT0wpaGFzUHJvcGVydHk6KE5T
U3RyaW5nICopcHJvcGVydHk7Ci0vLyBUaGlzIG1ldGhvZCBtYXkgYmUgdXNlZCB0byBjcmVhdGUg
YSBkYXRhIG9yIGFjY2Vzc29yIHByb3BlcnR5IG9uIGFuIG9iamVjdDsKLS8vIHRoaXMgbWV0aG9k
IG9wZXJhdGVzIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgT2JqZWN0LmRlZmluZVByb3BlcnR5IG1l
dGhvZCBpbgotLy8gdGhlIEphdmFTY3JpcHQgbGFuZ2F1YWdlLgotLSAodm9pZClkZWZpbmVQcm9w
ZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eSBkZXNjcmlwdG9yOihpZClkZXNjcmlwdG9yOwotCi0v
LyBBY2Nlc3MgYW4gaW5kZXhlZCBwcm9wZXJ0eSBmcm9tIHRoZSB2YWx1ZS4gVGhpcyBtZXRob2Qg
d2lsbCByZXR1cm4gdGhlCi0vLyBKYXZhU2NyaXB0IHZhbHVlICd1bmRlZmluZWQnIGlmIG5vIHBy
b3BlcnR5IGV4aXN0cyBhdCB0aGF0IGluZGV4LgotLSAoSlNWYWx1ZSAqKXZhbHVlQXRJbmRleDoo
TlNVSW50ZWdlcilpbmRleDsKLS8vIFNldCBhbiBpbmRleGVkIHByb3BlcnR5IG9uIHRoZSB2YWx1
ZS4KLS0gKHZvaWQpc2V0VmFsdWU6KGlkKXZhbHVlIGF0SW5kZXg6KE5TVUludGVnZXIpaW5kZXg7
Ci0KLS8vIEFsbCBKYXZhU2NyaXB0IHZhbHVlcyBhcmUgcHJlY2lzZWx5IG9uZSBvZiB0aGVzZSB0
eXBlcy4KLS0gKEJPT0wpaXNVbmRlZmluZWQ7Ci0tIChCT09MKWlzTnVsbDsKLS0gKEJPT0wpaXNC
b29sZWFuOwotLSAoQk9PTClpc051bWJlcjsKLS0gKEJPT0wpaXNTdHJpbmc7Ci0tIChCT09MKWlz
T2JqZWN0OwotCi0vLyBUaGlzIG1ldGhvZCBoYXMgdGhlIHNhbWUgZnVuY3Rpb24gYXMgdGhlIEph
dmFTY3JpcHQgb3BlcmF0b3IgIj09PSIuCi0tIChCT09MKWlzRXF1YWxUb09iamVjdDooaWQpdmFs
dWU7Ci0vLyBUaGlzIG1ldGhvZCBoYXMgdGhlIHNhbWUgZnVuY3Rpb24gYXMgdGhlIEphdmFTY3Jp
cHQgb3BlcmF0b3IgIj09Ii4KLS0gKEJPT0wpaXNFcXVhbFdpdGhUeXBlQ29lcmNpb25Ub09iamVj
dDooaWQpdmFsdWU7Ci0vLyBUaGlzIG1ldGhvZCBoYXMgdGhlIHNhbWUgZnVuY3Rpb24gYXMgdGhl
IEphdmFTY3JpcHQgb3BlcmF0b3IgImluc3RhbmNlb2YiLgotLSAoQk9PTClpc0luc3RhbmNlT2Y6
KGlkKXZhbHVlOwotCi0vLyBDYWxsIHRoaXMgdmFsdWUgYXMgYSBmdW5jdGlvbiBwYXNzaW5nIHRo
ZSBzcGVjaWZpZWQgInRoaXMiIHZhbHVlIGFuZCBhcmd1bWVudHMuCi0tIChKU1ZhbHVlICopY2Fs
bFdpdGhBcmd1bWVudHM6KE5TQXJyYXkgKilhcmd1bWVudHM7Ci0vLyBDYWxsIHRoaXMgdmFsdWUg
YXMgYSBjb25zdHJ1Y3RvciBwYXNzaW5nIHRoZSBzcGVjaWZpZWQgYXJndW1lbnRzLgotLSAoSlNW
YWx1ZSAqKWNvbnN0cnVjdFdpdGhBcmd1bWVudHM6KE5TQXJyYXkgKilhcmd1bWVudHM7Ci0vLyBB
Y2Nlc3MgdGhlIHByb3BlcnR5IG5hbWVkICJtZXRob2QiIGZyb20gdGhpcyB2YWx1ZTsgY2FsbCB0
aGUgdmFsdWUgcmVzdWx0aW5nCi0vLyBmcm9tIHRoZSBwcm9wZXJ0eSBhY2Nlc3MgYXMgYSBmdW5j
dGlvbiwgcGFzc2luZyB0aGlzIHZhbHVlIGFzIHRoZSAidGhpcyIKLS8vIHZhbHVlLCBhbmQgdGhl
IHNwZWNpZmllZCBhZ3J1bWVudHMuCi0tIChKU1ZhbHVlICopaW52b2tlTWV0aG9kOihOU1N0cmlu
ZyAqKW1ldGhvZCB3aXRoQXJndW1lbnRzOihOU0FycmF5ICopYXJndW1lbnRzOwotCi0vLyBUaGUg
SlNDb250ZXh0IHRoYXQgdGhpcyB2YWx1ZSBvcmlnaW5hdGVzIGZyb20uCi1AcHJvcGVydHkocmVh
ZG9ubHksIHJldGFpbikgSlNDb250ZXh0ICpjb250ZXh0OwotCi1AZW5kCi0KLS8vIE9iamVjdGl2
ZS1DIG1ldGhvZHMgZXhwb3J0ZWQgdG8gSmF2YVNjcmlwdCBtYXkgaGF2ZSBhcmd1bWVudCBhbmQv
b3IgcmV0dXJuCi0vLyB2YWx1ZXMgb2Ygc3RydWN0IHR5cGVzIGlmIHRoZSBzdHJ1Y3QgaWYgY29u
dmVyc2lvbiB0byBhbmQgZnJvbSB0aGUgc3RydWN0Ci0vLyBpcyBzdXBwb3J0ZWQgYnkgSlNWYWx1
ZS4gU3VwcG9ydCBpcyBwcm92aWRlZCBmb3IgYW55IHR5cGVzIHdoZXJlIEpTVmFsdWUKLS8vIGNv
bnRhaW5zIGJvdGggYSBjbGFzcyBtZXRob2QgInZhbHVlV2l0aDxUeXBlPjppbkNvbnRleHQ6Iiwg
YW5kIGFuZCBpbnN0YW5jZQotLy8gbWV0aG9kICJ0bzxUeXBlPiIgLSB3aGVyZSB0aGUgc3RyaW5n
ICI8VHlwZT4iIGluIHRoZXNlIHNlbGVjdG9yIG5hbWVzIG1hdGNoLAotLy8gd2l0aCB0aGUgZmly
c3QgYXJndW1lbnQgdG8gdGhlIGZvcm1lciBiZWluZyBvZiB0aGUgc2FtZSBzdHJ1Y3QgdHlwZSBh
cyB0aGUKLS8vIHJldHVybiB0eXBlIG9mIHRoZSBsYXR0ZXIuCi0vLyBTdXBwb3J0IGlzIHByb3Zp
ZGVkIGZvciBzdHJ1Y3RzIG9mIHR5cGUgQ0dQb2ludCwgTlNSYW5nZSwgQ0dSZWN0IGFuZCBDR1Np
emUuCi1AaW50ZXJmYWNlIEpTVmFsdWUoU3RydWN0U3VwcG9ydCkKLQotLy8gVGhpcyBtZXRob2Qg
cmV0dXJucyBhIG5ld2x5IGFsbG9jYXRlZCBKYXZhU2NyaXB0IG9iamVjdCBjb250YWluaW5nIHBy
b3BlcnRpZXMKLS8vIG5hbWVkICJ4IiBhbmQgInkiLCB3aXRoIHZhbHVlcyBmcm9tIHRoZSBDR1Bv
aW50LgotKyAoSlNWYWx1ZSAqKXZhbHVlV2l0aFBvaW50OihDR1BvaW50KXBvaW50IGluQ29udGV4
dDooSlNDb250ZXh0ICopY29udGV4dDsKLS8vIFRoaXMgbWV0aG9kIHJldHVybnMgYSBuZXdseSBh
bGxvY2F0ZWQgSmF2YVNjcmlwdCBvYmplY3QgY29udGFpbmluZyBwcm9wZXJ0aWVzCi0vLyBuYW1l
ZCAibG9jYXRpb24iIGFuZCAibGVuZ3RoIiwgd2l0aCB2YWx1ZXMgZnJvbSB0aGUgTlNSYW5nZS4K
LSsgKEpTVmFsdWUgKil2YWx1ZVdpdGhSYW5nZTooTlNSYW5nZSlyYW5nZSBpbkNvbnRleHQ6KEpT
Q29udGV4dCAqKWNvbnRleHQ7Ci0vLyBUaGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3bHkgYWxsb2Nh
dGVkIEphdmFTY3JpcHQgb2JqZWN0IGNvbnRhaW5pbmcgcHJvcGVydGllcwotLy8gbmFtZWQgIngi
LCAieSIsICJ3aWR0aCIsIGFuZCAiaGVpZ2h0Iiwgd2l0aCB2YWx1ZXMgZnJvbSB0aGUgQ0dSZWN0
LgotKyAoSlNWYWx1ZSAqKXZhbHVlV2l0aFJlY3Q6KENHUmVjdClyZWN0IGluQ29udGV4dDooSlND
b250ZXh0ICopY29udGV4dDsKLS8vIFRoaXMgbWV0aG9kIHJldHVybnMgYSBuZXdseSBhbGxvY2F0
ZWQgSmF2YVNjcmlwdCBvYmplY3QgY29udGFpbmluZyBwcm9wZXJ0aWVzCi0vLyBuYW1lZCAid2lk
dGgiIGFuZCAiaGVpZ2h0Iiwgd2l0aCB2YWx1ZXMgZnJvbSB0aGUgQ0dTaXplLgotKyAoSlNWYWx1
ZSAqKXZhbHVlV2l0aFNpemU6KENHU2l6ZSlzaXplIGluQ29udGV4dDooSlNDb250ZXh0ICopY29u
dGV4dDsKLQotLy8gQ29udmVydCBhIHZhbHVlIHRvIHR5cGUgQ0dQb2ludCBieSByZWFkaW5nIHBy
b3BlcnRpZXMgbmFtZWQgIngiIGFuZCAieSIgZnJvbQotLy8gdGhpcyB2YWx1ZSwgYW5kIGNvbnZl
cnRpbmcgdGhlIHJlc3VsdHMgdG8gZG91YmxlLgotLSAoQ0dQb2ludCl0b1BvaW50OwotLy8gQ29u
dmVydCBhIHZhbHVlIHRvIHR5cGUgTlNSYW5nZSBieSBhY2Nlc3NpbmcgcHJvcGVydGllcyBuYW1l
ZCAibG9jYXRpb24iIGFuZAotLy8gImxlbmd0aCIgZnJvbSB0aGlzIHZhbHVlIGNvbnZlcnRpbmcg
dGhlIHJlc3VsdHMgdG8gZG91YmxlLgotLSAoTlNSYW5nZSl0b1JhbmdlOwotLy8gQ29udmVydCBh
IHZhbHVlIHRvIHR5cGUgQ0dSZWN0IGJ5IHJlYWRpbmcgcHJvcGVydGllcyBuYW1lZCAieCIsICJ5
IiwgIndpZHRoIiwKLS8vIGFuZCAiaGVpZ2h0IiBmcm9tIHRoaXMgdmFsdWUsIGFuZCBjb252ZXJ0
aW5nIHRoZSByZXN1bHRzIHRvIGRvdWJsZS4KLS0gKENHUmVjdCl0b1JlY3Q7Ci0vLyBDb252ZXJ0
IGEgdmFsdWUgdG8gdHlwZSBDR1JhbmdlIGJ5IGFjY2Vzc2luZyBwcm9wZXJ0aWVzIG5hbWVkICJ3
aWR0aCIgYW5kCi0vLyAiaGVpZ2h0IiBmcm9tIHRoaXMgdmFsdWUgY29udmVydGluZyB0aGUgcmVz
dWx0cyB0byBkb3VibGUuCi0tIChDR1NpemUpdG9TaXplOwotCi1AZW5kCi0KLS8vIEluc3RhbmNl
cyBvZiBKU1ZhbHVlIGltcGxlbWVudCB0aGUgZm9sbG93aW5nIG1ldGhvZHMgaW4gb3JkZXIgdG8g
ZW5hYmxlCi0vLyBzdXBwb3J0IGZvciBzdWJzY3JpcHQgYWNjZXNzIGJ5IGtleSBhbmQgaW5kZXgs
IGZvciBleGFtcGxlOgotLy8KLS8vICAgIEpTVmFsdWUgKm9iamVjdEEsICpvYmplY3RCOwotLy8g
ICAgSlNWYWx1ZSAqdjEgPSBvYmplY3RbQCJYIl07IC8vIEdldCB2YWx1ZSBmb3IgcHJvcGVydHkg
IlgiIGZyb20gJ29iamVjdCcuCi0vLyAgICBKU1ZhbHVlICp2MiA9IG9iamVjdFs0Ml07ICAgLy8g
R2V0IHZhbHVlIGZvciBpbmRleCA0MiBmcm9tICdvYmplY3QnLgotLy8gICAgb2JqZWN0W0AiWSJd
ID0gdjE7ICAgICAgICAgIC8vIEFzc2lnbiAndjEnIHRvIHByb3BlcnR5ICJZIiBvZiAnb2JqZWN0
Jy4KLS8vICAgIG9iamVjdFsxMDFdID0gdjI7ICAgICAgICAgICAvLyBBc3NpZ24gJ3YyJyB0byBp
bmRleCAxMDEgb2YgJ29iamVjdCcuCi0vLwotLy8gQW4gb2JqZWN0IGtleSBwYXNzZWQgYXMgYSBz
dWJzY3JpcHQgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gYSBKYXZhU2NpcHQgdmFsdWUsCi0vLyBhbmQg
dGhlbiB0aGUgdmFsdWUgY29udmVydGVkIHRvIGEgc3RyaW5nIHVzZWQgYXMgYSBwcm9wZXJ0eSBu
YW1lLgotQGludGVyZmFjZSBKU1ZhbHVlKFN1YnNjcmlwdFN1cHBvcnQpCi0KLS0gKEpTVmFsdWUg
KilvYmplY3RGb3JLZXllZFN1YnNjcmlwdDooaWQpa2V5OwotLSAoSlNWYWx1ZSAqKW9iamVjdEF0
SW5kZXhlZFN1YnNjcmlwdDooTlNVSW50ZWdlcilpbmRleDsKLS0gKHZvaWQpc2V0T2JqZWN0Oihp
ZClvYmplY3QgZm9yS2V5ZWRTdWJzY3JpcHQ6KE5TT2JqZWN0IDxOU0NvcHlpbmc+ICopa2V5Owot
LSAodm9pZClzZXRPYmplY3Q6KGlkKW9iamVjdCBhdEluZGV4ZWRTdWJzY3JpcHQ6KE5TVUludGVn
ZXIpaW5kZXg7Ci0KLUBlbmQKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLSNl
bmRpZgotCi0vLyBUaGVzZSBrZXlzIG1heSBhc3Npc3QgaW4gY3JlYXRpbmcgYSBwcm9wZXJ0eSBk
ZXNjcmlwdG9yIGZvciB1c2Ugd2l0aCB0aGUKLS8vIGRlZmluZVByb3BlcnR5IG1ldGhvZCBvbiBK
U1ZhbHVlLgotLy8gUHJvcGVydHkgZGVzY3JpcHRvcnMgbXVzdCBmaXQgb25lIG9mIHRocmVlIGRl
c2NyaXB0aW9uczoKLS8vIERhdGEgRGVzY3JpcHRvcjoKLS8vICAtIEEgZGVzY3JpcHRvciBjb250
YWluaW5nIG9uZSBvciBib3RoIG9mIHRoZSBrZXlzICJ2YWx1ZSIgYW5kICJ3cml0YWJsZSIsCi0v
LyAgICBhbmQgb3B0aW9uYWxseSBjb250YWluaW5nIG9uZSBvciBib3RoIG9mIHRoZSBrZXlzICJl
bnVtZXJhYmxlIiBhbmQKLS8vICAgICJjb25maWd1cmFibGUiLiBBIGRhdGEgZGVzY3JpcHRvciBt
YXkgbm90IGNvbnRhaW4gZWl0aGVyIHRoZSAiZ2V0IiBvcgotLy8gICAgInNldCIga2V5LgotLy8g
ICAgQSBkYXRhIGRlc2NyaXB0b3IgbWF5IGJlIHVzZWQgdG8gY3JlYXRlIG9yIG1vZGlmeSB0aGUg
YXR0cmlidXRlcyBvZiBhCi0vLyAgICBkYXRhIHByb3BlcnR5IG9uIGFuIG9iamVjdCAocmVwbGFj
aW5nIGFueSBleGlzdGluZyBhY2Nlc3NvciBwcm9wZXJ0eSkuCi0vLyBBY2Nlc3NvciBEZXNjcmlw
dG9yOgotLy8gIC0gQSBkZXNjcmlwdG9yIGNvbnRhaW5pbmcgb25lIG9yIGJvdGggb2YgdGhlIGtl
eXMgImdldCIgYW5kICJzZXQiLCBhbmQKLS8vICAgIG9wdGlvbmFsbHkgY29udGFpbmluZyBvbmUg
b3IgYm90aCBvZiB0aGUga2V5cyAiZW51bWVyYWJsZSIgYW5kCi0vLyAgICAiY29uZmlndXJhYmxl
Ii4gQW4gYWNjZXNzb3IgZGVzY3JpcHRvciBtYXkgbm90IGNvbnRhaW4gZWl0aGVyIHRoZSAidmFs
dWUiCi0vLyAgICBvciAid3JpdGFibGUiIGtleS4KLS8vICAgIEFuIGFjY2Vzc29yIGRlc2NyaXB0
b3IgbWF5IGJlIHVzZWQgdG8gY3JlYXRlIG9yIG1vZGlmeSB0aGUgYXR0cmlidXRlcyBvZgotLy8g
ICAgYW4gYWNjZXNzb3IgcHJvcGVydHkgb24gYW4gb2JqZWN0IChyZXBsYWNpbmcgYW55IGV4aXN0
aW5nIGRhdGEgcHJvcGVydHkpLgotLy8gR2VuZXJpYyBEZXNjcmlwdG9yOgotLy8gIC0gQSBkZXNj
cmlwdG9yIGNvbnRhaW5pbmcgb25lIG9yIGJvdGggb2YgdGhlIGtleXMgImVudW1lcmFibGUiIGFu
ZAotLy8gICAgImNvbmZpZ3VyYWJsZSIuIEEgZ2VuZXJpYyBkZXNjcmlwdG9yIG1heSBub3QgY29u
dGFpbiBhbnkgb2YgdGhlIGtleXMKLS8vICAgICJ2YWx1ZSIsICIgd3JpdGFibGUiLCAiZ2V0Iiwg
b3IgInNldCIuCi0vLyAgICBBIGdlbmVyaWMgZGVzY3JpcHRvciBtYXkgYmUgdXNlZCB0byBtb2Rp
ZnkgdGhlIGF0dHJpYnV0ZXMgb2YgYW4gZXhpc3RpbmcKLS8vICAgIGRhdGEgb3IgYWNjZXNzb3Ig
cHJvcGVydHksIG9yIHRvIGNyZWF0ZSBhIG5ldyBkYXRhIHByb3BlcnR5LgotSlNfRVhQT1JUIGV4
dGVybiBOU1N0cmluZyAqIGNvbnN0IEpTUHJvcGVydHlEZXNjcmlwdG9yV3JpdGFibGVLZXk7Ci1K
U19FWFBPUlQgZXh0ZXJuIE5TU3RyaW5nICogY29uc3QgSlNQcm9wZXJ0eURlc2NyaXB0b3JFbnVt
ZXJhYmxlS2V5OwotSlNfRVhQT1JUIGV4dGVybiBOU1N0cmluZyAqIGNvbnN0IEpTUHJvcGVydHlE
ZXNjcmlwdG9yQ29uZmlndXJhYmxlS2V5OwotSlNfRVhQT1JUIGV4dGVybiBOU1N0cmluZyAqIGNv
bnN0IEpTUHJvcGVydHlEZXNjcmlwdG9yVmFsdWVLZXk7Ci1KU19FWFBPUlQgZXh0ZXJuIE5TU3Ry
aW5nICogY29uc3QgSlNQcm9wZXJ0eURlc2NyaXB0b3JHZXRLZXk7Ci1KU19FWFBPUlQgZXh0ZXJu
IE5TU3RyaW5nICogY29uc3QgSlNQcm9wZXJ0eURlc2NyaXB0b3JTZXRLZXk7Ci0KLSNpZmRlZiBf
X2NwbHVzcGx1cwotfSAvLyBleHRlcm4gIkMiCi0jZW5kaWYKLQotI2VuZGlmCi0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCbG9ja0FkYXB0b3IubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jsb2NrQWRhcHRvci5tbQkocmV2aXNpb24gMTQw
MTk2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jsb2NrQWRhcHRvci5tbQkod29y
a2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogI2ltcG9ydCAiSlNCbG9ja0FkYXB0b3IuaCIK
ICNpbXBvcnQgIkpTQ29udGV4dEludGVybmFsLmgiCiAjaW1wb3J0ICJKU1dyYXBwZXJNYXAuaCIK
LSNpbXBvcnQgIkpTVmFsdWUuaCIKKyNpbXBvcnQgIkpTQ0pTVmFsdWUuaCIKICNpbXBvcnQgIkpT
VmFsdWVJbnRlcm5hbC5oIgogI2ltcG9ydCAiT2JqY1J1bnRpbWVFeHRyYXMuaCIKICNpbXBvcnQg
Ik9wZXJhdGlvbnMuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTdHJpbmdS
ZWZDRi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1N0cmlu
Z1JlZkNGLmNwcAkocmV2aXNpb24gMTQwMTk2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU1N0cmluZ1JlZkNGLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogI2lu
Y2x1ZGUgIkluaXRpYWxpemVUaHJlYWRpbmcuaCIKICNpbmNsdWRlICJKU1N0cmluZ1JlZi5oIgog
I2luY2x1ZGUgIk9wYXF1ZUpTU3RyaW5nLmgiCi0jaW5jbHVkZSA8cnVudGltZS9KU1ZhbHVlLmg+
CisjaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlLmg+CiAjaW5jbHVkZSA8d3RmL093bkFycmF5
UHRyLmg+CiAKIEpTU3RyaW5nUmVmIEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKENGU3RyaW5n
UmVmIHN0cmluZykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5oCShyZXZpc2lv
biAxNDAxOTcpCShmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJSlNWYWx1ZS5oOjE0
MDE5NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMjkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpZiBKU19PQkpDX0FQSV9FTkFCTEVECisKK0BjbGFzcyBKU0NvbnRleHQ7
CisKKy8vIEEgSlNWYWx1ZSBpcyBhIHJlZmVyZW5jZSB0byBhIHZhbHVlIHdpdGhpbiB0aGUgSmF2
YVNjcmlwdCBvYmplY3Qgc3BhY2Ugb2YgYQorLy8gSlNWaXJ0dWFsTWFjaGluZS4gQWxsIGluc3Rh
bmNlcyBvZiBKU1ZhbHVlIG9yaWdpbmF0ZSBmcm9tIGEgSlNDb250ZXh0IGFuZAorLy8gaG9sZCBh
IHN0cm9uZyByZWZlcmVuY2UgdG8gdGhpcyBKU0NvbnRleHQuIEFzIGxvbmcgYXMgYW55IHZhbHVl
IGFzc29jaWF0ZWQgd2l0aCAKKy8vIGEgcGFydGljdWxhciBKU0NvbnRleHQgaXMgcmV0YWluZWQs
IHRoYXQgSlNDb250ZXh0IHdpbGwgcmVtYWluIGFsaXZlLiAKKy8vIFdoZXJlIGFuIGluc3RhbmNl
IG1ldGhvZCBpcyBpbnZva2VkIHVwb24gYSBKU1ZhbHVlLCBhbmQgdGhpcyByZXR1cm5zIGFub3Ro
ZXIgCisvLyBKU1ZhbHVlLCB0aGUgcmV0dXJuZWQgSlNWYWx1ZSB3aWxsIG9yaWdpbmF0ZSBmcm9t
IHRoZSBzYW1lIEpTQ29udGV4dCBhcyB0aGUgCisvLyBKU1ZhbHVlIG9uIHdoaWNoIHRoZSBtZXRo
b2Qgd2FzIGludm9rZWQuCisvLworLy8gRm9yIGFsbCBtZXRob2RzIHRha2luZyBhcmd1bWVudHMg
b2YgdHlwZSBpZCwgYXJndW1lbnRzIHdpbGwgYmUgY29udmVydGVkCisvLyBpbnRvIGEgSmF2YVNj
cmlwdCB2YWx1ZSBhY2NvcmRpbmcgdG8gdGhlIGNvbnZlcnNpb24gc3BlY2lmaWVkIGJlbG93Lgor
Ly8gQWxsIEphdmFTY3JpcHQgdmFsdWVzIGFyZSBhc3NvY2lhdGVkIHdpdGggYSBwYXJ0aWN1bGFy
IEpTVmlydHVhbE1hY2hpbmUKKy8vICh0aGUgYXNzb2NpYXRlZCBKU1ZpcnR1YWxNYWNoaW5lIGlz
IGF2YWlsYWJsZSBpbmRpcmVjdGx5IHZpYSB0aGUgY29udGV4dAorLy8gcHJvcGVydHkpLiBBbiBp
bnN0YW5jZSBvZiBKU1ZhbHVlIG1heSBvbmx5IGJlIHBhc3NlZCBhcyBhbiBhcmd1bWVudCB0bwor
Ly8gbWV0aG9kcyBvbiBpbnN0YW5jZXMgb2YgSlNWYWx1ZSBhbmQgSlNDb250ZXh0IHRoYXQgYmVs
b25nIHRvIHRoZSBzYW1lCisvLyBKU1ZpcnR1YWxNYWNoaW5lIC0gcGFzc2luZyBhIEpTVmFsdWUg
dG8gYSBtZXRob2Qgb24gYW4gb2JqZWN0IG9yaWdpbmF0aW5nCisvLyBmcm9tIGEgZGlmZmVyZW50
IEpTVmlydHVhbE1hY2hpbmUgd2lsbCByZXN1bHQgaW4gYW4gT2JqZWN0aXZlLUMgZXhjZXB0aW9u
CisvLyBiZWluZyByYWlzZWQuCisvLworLy8gQ29udmVyc2lvbiBiZXR3ZWVuIE9iamVjdGl2ZS1D
IGFuZCBKYXZhU2NyaXB0IHR5cGVzLgorLy8KKy8vIFdoZW4gY29udmVydGluZyBiZXR3ZWVuIEph
dmFTY3JpcHQgdmFsdWVzIGFuZCBPYmplY3RpdmUtQyBvYmplY3RzIGEgY29weSBpcworLy8gcGVy
Zm9ybWVkLiBWYWx1ZXMgb2YgdHlwZXMgbGlzdGVkIGJlbG93IGFyZSBjb3BpZWQgdG8gdGhlIGNv
cnJlc3BvbmRpbmcKKy8vIHR5cGVzIG9uIGNvbnZlcnNpb24gaW4gZWFjaCBkaXJlY3Rpb24uIEZv
ciBOU0RpY3Rpb25hcmllcywgZW50cmllcyBpbiB0aGUKKy8vIGRpY3Rpb25hcnkgdGhhdCBhcmUg
a2V5ZWQgYnkgc3RyaW5ncyBhcmUgY29waWVkIG9udG8gYSBKYXZhU2NyaXB0IG9iamVjdC4KKy8v
IEZvciBkaWN0aW9uYXJpZXMgYW5kIGFycmF5cywgY29udmVyc2lvbiBpcyByZWN1cnNpdmUsIHdp
dGggdGhlIHNhbWUgb2JqZWN0CisvLyBjb252ZXJzaW9uIGJlaW5nIGFwcGxpZWQgdG8gYWxsIGVu
dHJpZXMgaW4gdGhlIGNvbGxlY3Rpb24uCisvLworLy8gICBPYmplY3RpdmUtQyB0eXBlICB8ICAg
SmF2YVNjcmlwdCB0eXBlCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKy8vICAgICAgICAgbmlsICAgICAgICAgfCAgICAgdW5kZWZpbmVkCisvLyAgICAgICAg
TlNOdWxsICAgICAgIHwgICAgICAgIG51bGwKKy8vICAgICAgIE5TU3RyaW5nICAgICAgfCAgICAg
ICBzdHJpbmcKKy8vICAgICAgIE5TTnVtYmVyICAgICAgfCAgIG51bWJlciwgYm9vbGVhbgorLy8g
ICAgIE5TRGljdGlvbmFyeSAgICB8ICAgT2JqZWN0IG9iamVjdAorLy8gICAgICAgTlNBcnJheSAg
ICAgICB8ICAgIEFycmF5IG9iamVjdAorLy8gICAgICAgIE5TRGF0ZSAgICAgICB8ICAgICBEYXRl
IG9iamVjdAorLy8gICAgICAgTlNCbG9jayAqICAgICB8ICAgRnVuY3Rpb24gb2JqZWN0ICoKKy8v
ICAgICAgICAgIGlkICoqICAgICAgfCAgIFdyYXBwZXIgb2JqZWN0ICoqCisvLyAgICAgICAgQ2xh
c3MgKioqICAgIHwgQ29uc3RydWN0b3Igb2JqZWN0ICoqKgorLy8KKy8vICogSW5zdGFuY2VzIG9m
IE5TQmxvY2sgd2l0aCBzdXBwb3J0ZWQgYXJndW1lbnRzIHR5cGVzIHdpbGwgYmUgcHJlc2VudGVk
IHRvCisvLyBKYXZhU2NyaXB0IGFzIGEgY2FsbGFibGUgRnVuY3Rpb24gb2JqZWN0LiBGb3IgbW9y
ZSBpbmZvcm1hdGlvbiBvbiBzdXBwb3J0ZWQKKy8vIGFyZ3VtZW50IHR5cGVzIHNlZSBKU0V4cG9y
dC5oLiBJZiBhIEphdmFTY3JpcHQgRnVuY3Rpb24gb3JpZ2luYXRpbmcgZnJvbSBhbgorLy8gT2Jq
ZWN0aXZlLUMgYmxvY2sgaXMgY29udmVydGVkIGJhY2sgdG8gYW4gT2JqZWN0aXZlLUMgb2JqZWN0
IHRoZSBibG9jayB3aWxsCisvLyBiZSByZXR1cm5lZC4gQWxsIG90aGVyIEphdmFTY3JpcHQgZnVu
Y3Rpb25zIHdpbGwgYmUgY29udmVydGVkIGluIHRoZSBzYW1lCisvLyBtYW5uZXIgYXMgYSBKYXZh
U2NyaXB0IG9iamVjdCBvZiB0eXBlIE9iamVjdC4KKy8vCisvLyAqKiBGb3IgT2JqZWN0aXZlLUMg
aW5zdGFuY2VzIHRoYXQgZG8gbm90IGRlcml2ZSBmcm9tIHRoZSBzZXQgb2YgdHlwZXMgbGlzdGVk
CisvLyBhYm92ZSwgYSB3cmFwcGVyIG9iamVjdCB0byBwcm92aWRlIGEgcmV0YWluaW5nIGhhbmRs
ZSB0byB0aGUgT2JqZWN0aXZlLUMKKy8vIGluc3RhbmNlIGZyb20gSmF2YVNjcmlwdC4gRm9yIG1v
cmUgaW5mb3JtYXRpb24gb24gdGhlc2Ugd3JhcHBlciBvYmplY3RzLCBzZWUKKy8vIEpTRXhwb3J0
LmguIFdoZW4gYSBKYXZhU2NyaXB0IHdyYXBwZXIgb2JqZWN0IGlzIGNvbnZlcnRlZCBiYWNrIHRv
IE9iamVjdGl2ZS1DCisvLyB0aGUgT2JqZWN0aXZlLUMgaW5zdGFuY2UgYmVpbmcgcmV0YWluZWQg
YnkgdGhlIHdyYXBwZXIgaXMgcmV0dXJuZWQuCisvLworLy8gKioqIEZvciBPYmplY3RpdmUtQyBD
bGFzcyBvYmplY3RzIGEgY29uc3RydWN0b3Igb2JqZWN0IGNvbnRhaW5pbmcgZXhwb3J0ZWQKKy8v
IGNsYXNzIG1ldGhvZHMgd2lsbCBiZSByZXR1cm5lZC4gU2VlIEpTRXhwb3J0LmggZm9yIG1vcmUg
aW5mb3JtYXRpb24gb24KKy8vIGNvbnN0cnVjdG9yIG9iamVjdHMuCisKK05TX0NMQVNTX0FWQUlM
QUJMRSgxMF85LCBOQSkKK0BpbnRlcmZhY2UgSlNWYWx1ZSA6IE5TT2JqZWN0CisKKy8vIENyZWF0
ZSBhIEpTVmFsdWUgYnkgY29udmVydGluZyBhbiBPYmplY3RpdmUtQyBvYmplY3QuCisrIChKU1Zh
bHVlICopdmFsdWVXaXRoT2JqZWN0OihpZCl2YWx1ZSBpbkNvbnRleHQ6KEpTQ29udGV4dCAqKWNv
bnRleHQ7CisvLyBDcmVhdGUgYSBKYXZhU2NyaXB0IHZhbHVlIGZyb20gYW4gT2JqZWN0aXZlLUMg
cHJpbWl0aXZlIHR5cGUuCisrIChKU1ZhbHVlICopdmFsdWVXaXRoQm9vbDooQk9PTCl2YWx1ZSBp
bkNvbnRleHQ6KEpTQ29udGV4dCAqKWNvbnRleHQ7CisrIChKU1ZhbHVlICopdmFsdWVXaXRoRG91
YmxlOihkb3VibGUpdmFsdWUgaW5Db250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0OworKyAoSlNW
YWx1ZSAqKXZhbHVlV2l0aEludDMyOihpbnQzMl90KXZhbHVlIGluQ29udGV4dDooSlNDb250ZXh0
ICopY29udGV4dDsKKysgKEpTVmFsdWUgKil2YWx1ZVdpdGhVSW50MzI6KHVpbnQzMl90KXZhbHVl
IGluQ29udGV4dDooSlNDb250ZXh0ICopY29udGV4dDsKKy8vIENyZWF0ZSBhIEphdmFTY3JpcHQg
dmFsdWUgaW4gdGhpcyBjb250ZXh0LgorKyAoSlNWYWx1ZSAqKXZhbHVlV2l0aE5ld09iamVjdElu
Q29udGV4dDooSlNDb250ZXh0ICopY29udGV4dDsKKysgKEpTVmFsdWUgKil2YWx1ZVdpdGhOZXdB
cnJheUluQ29udGV4dDooSlNDb250ZXh0ICopY29udGV4dDsKKysgKEpTVmFsdWUgKil2YWx1ZVdp
dGhOZXdSZWd1bGFyRXhwcmVzc2lvbkZyb21QYXR0ZXJuOihOU1N0cmluZyAqKXBhdHRlcm4gZmxh
Z3M6KE5TU3RyaW5nICopZmxhZ3MgaW5Db250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0OworKyAo
SlNWYWx1ZSAqKXZhbHVlV2l0aE5ld0Vycm9yRnJvbU1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2Fn
ZSBpbkNvbnRleHQ6KEpTQ29udGV4dCAqKWNvbnRleHQ7CisrIChKU1ZhbHVlICopdmFsdWVXaXRo
TnVsbEluQ29udGV4dDooSlNDb250ZXh0ICopY29udGV4dDsKKysgKEpTVmFsdWUgKil2YWx1ZVdp
dGhVbmRlZmluZWRJbkNvbnRleHQ6KEpTQ29udGV4dCAqKWNvbnRleHQ7CisKKy8vIENvbnZlcnQg
dGhpcyB2YWx1ZSB0byBhIGNvcnJlc3BvbmRpbmcgT2JqZWN0aXZlLUMgb2JqZWN0LCBhY2NvcmRp
bmcgdG8gdGhlCisvLyBjb252ZXJzaW9uIHNwZWNpZmllZCBhYm92ZS4KKy0gKGlkKXRvT2JqZWN0
OworLy8gQ29udmVydCB0aGlzIHZhbHVlIHRvIGEgY29ycmVzcG9uZGluZyBPYmplY3RpdmUtQyBv
YmplY3QsIGlmIHRoZSByZXN1bHQgaXMKKy8vIG5vdCBvZiB0aGUgc3BlY2lmaWVkIGNsYXNzIHRo
ZW4gbmlsIHdpbGwgYmUgcmV0dXJuZWQuCistIChpZCl0b09iamVjdE9mQ2xhc3M6KENsYXNzKWV4
cGVjdGVkQ2xhc3M7CisvLyBUaGUgdmFsdWUgaXMgY29waWVkIHRvIGEgYm9vbGVhbiBhY2NvcmRp
bmcgdG8gdGhlIGNvbnZlcnNpb24gc3BlY2lmaWVkIGJ5IHRoZQorLy8gSmF2YVNjcmlwdCBsYW5n
dWFnZS4KKy0gKEJPT0wpdG9Cb29sOworLy8gVGhlIHZhbHVlIGlzIGNvcGllZCB0byBhIG51bWJl
ciBhY2NvcmRpbmcgdG8gdGhlIGNvbnZlcnNpb24gc3BlY2lmaWVkIGJ5IHRoZQorLy8gSmF2YVNj
cmlwdCBsYW5ndWFnZS4KKy0gKGRvdWJsZSl0b0RvdWJsZTsKKy8vIFRoZSB2YWx1ZSBpcyBjb3Bp
ZWQgdG8gYW4gaW50ZWdlciBhY2NvcmRpbmcgdG8gdGhlIGNvbnZlcnNpb24gc3BlY2lmaWVkIGJ5
CisvLyB0aGUgSmF2YVNjcmlwdCBsYW5ndWFnZS4KKy0gKGludDMyX3QpdG9JbnQzMjsKKy8vIFRo
ZSB2YWx1ZSBpcyBjb3BpZWQgdG8gYW4gaW50ZWdlciBhY2NvcmRpbmcgdG8gdGhlIGNvbnZlcnNp
b24gc3BlY2lmaWVkIGJ5CisvLyB0aGUgSmF2YVNjcmlwdCBsYW5ndWFnZS4KKy0gKHVpbnQzMl90
KXRvVUludDMyOworLy8gSWYgdGhlIHZhbHVlIGlzIGEgYm9vbGVhbiwgYSBOU051bWJlciB2YWx1
ZSBvZiBAWUVTIG9yIEBOTyB3aWxsIGJlIHJldHVybmVkLgorLy8gRm9yIGFsbCBvdGhlciB0eXBl
cyB0aGUgdmFsdWUgd2lsbCBiZSBjb3BpZWQgdG8gYSBudW1iZXIgYWNjb3JkaW5nIHRvIHRoZQor
Ly8gY29udmVyc2lvbiBzcGVjaWZpZWQgYnkgdGhlIEphdmFTY3JpcHQgbGFuZ3VhZ2UuCistIChO
U051bWJlciAqKXRvTnVtYmVyOworLy8gVGhlIHZhbHVlIGlzIGNvcGllZCB0byBhIHN0cmluZyBh
Y2NvcmRpbmcgdG8gdGhlIGNvbnZlcnNpb24gc3BlY2lmaWVkIGJ5IHRoZQorLy8gSmF2YVNjcmlw
dCBsYW5ndWFnZS4KKy0gKE5TU3RyaW5nICopdG9TdHJpbmc7CisvLyBUaGUgdmFsdWUgaXMgY29u
dmVydGVkIHRvIGEgbnVtYmVyIHJlcHJlc2VudGluZyBhIHRpbWUgaW50ZXJ2YWwgc2luY2UgMTk3
MCwKKy8vIGFuZCBhIG5ldyBOU0RhdGUgaW5zdGFuY2UgaXMgcmV0dXJuZWQuCistIChOU0RhdGUg
Kil0b0RhdGU7CisvLyBJZiB0aGUgdmFsdWUgaXMgbnVsbCBvciB1bmRlZmluZWQgdGhlbiBuaWwg
aXMgcmV0dXJuZWQuCisvLyBJZiB0aGUgdmFsdWUgaXMgbm90IGFuIG9iamVjdCB0aGVuIGEgSmF2
YVNjcmlwdCBUeXBlRXJyb3Igd2lsbCBiZSB0aHJvd24uCisvLyBUaGUgcHJvcGVydHkgImxlbmd0
aCIgaXMgcmVhZCBmcm9tIHRoZSBvYmplY3QsIGNvbnZlcnRlZCB0byBhbiB1bnNpZ25lZAorLy8g
aW50ZWdlciwgYW5kIGFuIE5TQXJyYXkgb2YgdGhpcyBzaXplIGlzIGFsbG9jYXRlZC4gUHJvcGVy
dGllcyBjb3JyZXNwb25kaW5nCisvLyB0byBpbmRpY2llcyB3aXRoaW4gdGhlIGFycmF5IGJvdW5k
cyB3aWxsIGJlIGNvcGllZCB0byB0aGUgYXJyYXksIHdpdGgKKy8vIE9iamVjdGl2ZS1DIG9iamVj
dHMgY29udmVydGVkIHRvIGVxdWl2YWxlbnQgSlNWYWx1ZXMgYXMgc3BlY2lmaWVkLgorLSAoTlNB
cnJheSAqKXRvQXJyYXk7CisvLyBJZiB0aGUgdmFsdWUgaXMgbnVsbCBvciB1bmRlZmluZWQgdGhl
biBuaWwgaXMgcmV0dXJuZWQuCisvLyBJZiB0aGUgdmFsdWUgaXMgbm90IGFuIG9iamVjdCB0aGVu
IGEgSmF2YVNjcmlwdCBUeXBlRXJyb3Igd2lsbCBiZSB0aHJvd24uCisvLyBBbGwgZW51bWVyYWJs
ZSBwcm9wZXJ0aWVzIG9mIHRoZSBvYmplY3QgYXJlIGNvcGllZCB0byB0aGUgZGljdGlvbmFyeSwg
d2l0aAorLy8gT2JqZWN0aXZlLUMgb2JqZWN0cyBjb252ZXJ0ZWQgdG8gZXF1aXZhbGVudCBKU1Zh
bHVlcyBhcyBzcGVjaWZpZWQuCistIChOU0RpY3Rpb25hcnkgKil0b0RpY3Rpb25hcnk7CisKKy8v
IEFjY2VzcyBhIHByb3BlcnR5IGZyb20gdGhlIHZhbHVlLiBUaGlzIG1ldGhvZCB3aWxsIHJldHVy
biB0aGUgSmF2YVNjcmlwdCB2YWx1ZQorLy8gJ3VuZGVmaW5lZCcgaWYgdGhlIHByb3BlcnR5IGRv
ZXMgbm90IGV4aXN0LgorLSAoSlNWYWx1ZSAqKXZhbHVlRm9yUHJvcGVydHk6KE5TU3RyaW5nICop
cHJvcGVydHk7CisvLyBTZXQgYSBwcm9wZXJ0eSBvbiB0aGUgdmFsdWUuCistICh2b2lkKXNldFZh
bHVlOihpZCl2YWx1ZSBmb3JQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eTsKKy8vIERlbGV0
ZSBhIHByb3BlcnR5IGZyb20gdGhlIHZhbHVlLCByZXR1cm5zIFlFUyBpZiBkZWxldGlvbiBpcyBz
dWNjZXNzZnVsLgorLSAoQk9PTClkZWxldGVQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eTsK
Ky8vIFJldHVybnMgWUVTIGlmIHByb3BlcnR5IGlzIHByZXNlbnQgb24gdGhlIHZhbHVlLgorLy8g
VGhpcyBtZXRob2QgaGFzIHRoZSBzYW1lIGZ1bmN0aW9uIGFzIHRoZSBKYXZhU2NyaXB0IG9wZXJh
dG9yICJpbiIuCistIChCT09MKWhhc1Byb3BlcnR5OihOU1N0cmluZyAqKXByb3BlcnR5OworLy8g
VGhpcyBtZXRob2QgbWF5IGJlIHVzZWQgdG8gY3JlYXRlIGEgZGF0YSBvciBhY2Nlc3NvciBwcm9w
ZXJ0eSBvbiBhbiBvYmplY3Q7CisvLyB0aGlzIG1ldGhvZCBvcGVyYXRlcyBpbiBhY2NvcmRhbmNl
IHdpdGggdGhlIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSBtZXRob2QgaW4KKy8vIHRoZSBKYXZhU2Ny
aXB0IGxhbmdhdWFnZS4KKy0gKHZvaWQpZGVmaW5lUHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVy
dHkgZGVzY3JpcHRvcjooaWQpZGVzY3JpcHRvcjsKKworLy8gQWNjZXNzIGFuIGluZGV4ZWQgcHJv
cGVydHkgZnJvbSB0aGUgdmFsdWUuIFRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuIHRoZQorLy8gSmF2
YVNjcmlwdCB2YWx1ZSAndW5kZWZpbmVkJyBpZiBubyBwcm9wZXJ0eSBleGlzdHMgYXQgdGhhdCBp
bmRleC4KKy0gKEpTVmFsdWUgKil2YWx1ZUF0SW5kZXg6KE5TVUludGVnZXIpaW5kZXg7CisvLyBT
ZXQgYW4gaW5kZXhlZCBwcm9wZXJ0eSBvbiB0aGUgdmFsdWUuCistICh2b2lkKXNldFZhbHVlOihp
ZCl2YWx1ZSBhdEluZGV4OihOU1VJbnRlZ2VyKWluZGV4OworCisvLyBBbGwgSmF2YVNjcmlwdCB2
YWx1ZXMgYXJlIHByZWNpc2VseSBvbmUgb2YgdGhlc2UgdHlwZXMuCistIChCT09MKWlzVW5kZWZp
bmVkOworLSAoQk9PTClpc051bGw7CistIChCT09MKWlzQm9vbGVhbjsKKy0gKEJPT0wpaXNOdW1i
ZXI7CistIChCT09MKWlzU3RyaW5nOworLSAoQk9PTClpc09iamVjdDsKKworLy8gVGhpcyBtZXRo
b2QgaGFzIHRoZSBzYW1lIGZ1bmN0aW9uIGFzIHRoZSBKYXZhU2NyaXB0IG9wZXJhdG9yICI9PT0i
LgorLSAoQk9PTClpc0VxdWFsVG9PYmplY3Q6KGlkKXZhbHVlOworLy8gVGhpcyBtZXRob2QgaGFz
IHRoZSBzYW1lIGZ1bmN0aW9uIGFzIHRoZSBKYXZhU2NyaXB0IG9wZXJhdG9yICI9PSIuCistIChC
T09MKWlzRXF1YWxXaXRoVHlwZUNvZXJjaW9uVG9PYmplY3Q6KGlkKXZhbHVlOworLy8gVGhpcyBt
ZXRob2QgaGFzIHRoZSBzYW1lIGZ1bmN0aW9uIGFzIHRoZSBKYXZhU2NyaXB0IG9wZXJhdG9yICJp
bnN0YW5jZW9mIi4KKy0gKEJPT0wpaXNJbnN0YW5jZU9mOihpZCl2YWx1ZTsKKworLy8gQ2FsbCB0
aGlzIHZhbHVlIGFzIGEgZnVuY3Rpb24gcGFzc2luZyB0aGUgc3BlY2lmaWVkICJ0aGlzIiB2YWx1
ZSBhbmQgYXJndW1lbnRzLgorLSAoSlNWYWx1ZSAqKWNhbGxXaXRoQXJndW1lbnRzOihOU0FycmF5
ICopYXJndW1lbnRzOworLy8gQ2FsbCB0aGlzIHZhbHVlIGFzIGEgY29uc3RydWN0b3IgcGFzc2lu
ZyB0aGUgc3BlY2lmaWVkIGFyZ3VtZW50cy4KKy0gKEpTVmFsdWUgKiljb25zdHJ1Y3RXaXRoQXJn
dW1lbnRzOihOU0FycmF5ICopYXJndW1lbnRzOworLy8gQWNjZXNzIHRoZSBwcm9wZXJ0eSBuYW1l
ZCAibWV0aG9kIiBmcm9tIHRoaXMgdmFsdWU7IGNhbGwgdGhlIHZhbHVlIHJlc3VsdGluZworLy8g
ZnJvbSB0aGUgcHJvcGVydHkgYWNjZXNzIGFzIGEgZnVuY3Rpb24sIHBhc3NpbmcgdGhpcyB2YWx1
ZSBhcyB0aGUgInRoaXMiCisvLyB2YWx1ZSwgYW5kIHRoZSBzcGVjaWZpZWQgYWdydW1lbnRzLgor
LSAoSlNWYWx1ZSAqKWludm9rZU1ldGhvZDooTlNTdHJpbmcgKiltZXRob2Qgd2l0aEFyZ3VtZW50
czooTlNBcnJheSAqKWFyZ3VtZW50czsKKworLy8gVGhlIEpTQ29udGV4dCB0aGF0IHRoaXMgdmFs
dWUgb3JpZ2luYXRlcyBmcm9tLgorQHByb3BlcnR5KHJlYWRvbmx5LCByZXRhaW4pIEpTQ29udGV4
dCAqY29udGV4dDsKKworQGVuZAorCisvLyBPYmplY3RpdmUtQyBtZXRob2RzIGV4cG9ydGVkIHRv
IEphdmFTY3JpcHQgbWF5IGhhdmUgYXJndW1lbnQgYW5kL29yIHJldHVybgorLy8gdmFsdWVzIG9m
IHN0cnVjdCB0eXBlcyBpZiB0aGUgc3RydWN0IGlmIGNvbnZlcnNpb24gdG8gYW5kIGZyb20gdGhl
IHN0cnVjdAorLy8gaXMgc3VwcG9ydGVkIGJ5IEpTVmFsdWUuIFN1cHBvcnQgaXMgcHJvdmlkZWQg
Zm9yIGFueSB0eXBlcyB3aGVyZSBKU1ZhbHVlCisvLyBjb250YWlucyBib3RoIGEgY2xhc3MgbWV0
aG9kICJ2YWx1ZVdpdGg8VHlwZT46aW5Db250ZXh0OiIsIGFuZCBhbmQgaW5zdGFuY2UKKy8vIG1l
dGhvZCAidG88VHlwZT4iIC0gd2hlcmUgdGhlIHN0cmluZyAiPFR5cGU+IiBpbiB0aGVzZSBzZWxl
Y3RvciBuYW1lcyBtYXRjaCwKKy8vIHdpdGggdGhlIGZpcnN0IGFyZ3VtZW50IHRvIHRoZSBmb3Jt
ZXIgYmVpbmcgb2YgdGhlIHNhbWUgc3RydWN0IHR5cGUgYXMgdGhlCisvLyByZXR1cm4gdHlwZSBv
ZiB0aGUgbGF0dGVyLgorLy8gU3VwcG9ydCBpcyBwcm92aWRlZCBmb3Igc3RydWN0cyBvZiB0eXBl
IENHUG9pbnQsIE5TUmFuZ2UsIENHUmVjdCBhbmQgQ0dTaXplLgorQGludGVyZmFjZSBKU1ZhbHVl
KFN0cnVjdFN1cHBvcnQpCisKKy8vIFRoaXMgbWV0aG9kIHJldHVybnMgYSBuZXdseSBhbGxvY2F0
ZWQgSmF2YVNjcmlwdCBvYmplY3QgY29udGFpbmluZyBwcm9wZXJ0aWVzCisvLyBuYW1lZCAieCIg
YW5kICJ5Iiwgd2l0aCB2YWx1ZXMgZnJvbSB0aGUgQ0dQb2ludC4KKysgKEpTVmFsdWUgKil2YWx1
ZVdpdGhQb2ludDooQ0dQb2ludClwb2ludCBpbkNvbnRleHQ6KEpTQ29udGV4dCAqKWNvbnRleHQ7
CisvLyBUaGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3bHkgYWxsb2NhdGVkIEphdmFTY3JpcHQgb2Jq
ZWN0IGNvbnRhaW5pbmcgcHJvcGVydGllcworLy8gbmFtZWQgImxvY2F0aW9uIiBhbmQgImxlbmd0
aCIsIHdpdGggdmFsdWVzIGZyb20gdGhlIE5TUmFuZ2UuCisrIChKU1ZhbHVlICopdmFsdWVXaXRo
UmFuZ2U6KE5TUmFuZ2UpcmFuZ2UgaW5Db250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0OworLy8g
VGhpcyBtZXRob2QgcmV0dXJucyBhIG5ld2x5IGFsbG9jYXRlZCBKYXZhU2NyaXB0IG9iamVjdCBj
b250YWluaW5nIHByb3BlcnRpZXMKKy8vIG5hbWVkICJ4IiwgInkiLCAid2lkdGgiLCBhbmQgImhl
aWdodCIsIHdpdGggdmFsdWVzIGZyb20gdGhlIENHUmVjdC4KKysgKEpTVmFsdWUgKil2YWx1ZVdp
dGhSZWN0OihDR1JlY3QpcmVjdCBpbkNvbnRleHQ6KEpTQ29udGV4dCAqKWNvbnRleHQ7CisvLyBU
aGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3bHkgYWxsb2NhdGVkIEphdmFTY3JpcHQgb2JqZWN0IGNv
bnRhaW5pbmcgcHJvcGVydGllcworLy8gbmFtZWQgIndpZHRoIiBhbmQgImhlaWdodCIsIHdpdGgg
dmFsdWVzIGZyb20gdGhlIENHU2l6ZS4KKysgKEpTVmFsdWUgKil2YWx1ZVdpdGhTaXplOihDR1Np
emUpc2l6ZSBpbkNvbnRleHQ6KEpTQ29udGV4dCAqKWNvbnRleHQ7CisKKy8vIENvbnZlcnQgYSB2
YWx1ZSB0byB0eXBlIENHUG9pbnQgYnkgcmVhZGluZyBwcm9wZXJ0aWVzIG5hbWVkICJ4IiBhbmQg
InkiIGZyb20KKy8vIHRoaXMgdmFsdWUsIGFuZCBjb252ZXJ0aW5nIHRoZSByZXN1bHRzIHRvIGRv
dWJsZS4KKy0gKENHUG9pbnQpdG9Qb2ludDsKKy8vIENvbnZlcnQgYSB2YWx1ZSB0byB0eXBlIE5T
UmFuZ2UgYnkgYWNjZXNzaW5nIHByb3BlcnRpZXMgbmFtZWQgImxvY2F0aW9uIiBhbmQKKy8vICJs
ZW5ndGgiIGZyb20gdGhpcyB2YWx1ZSBjb252ZXJ0aW5nIHRoZSByZXN1bHRzIHRvIGRvdWJsZS4K
Ky0gKE5TUmFuZ2UpdG9SYW5nZTsKKy8vIENvbnZlcnQgYSB2YWx1ZSB0byB0eXBlIENHUmVjdCBi
eSByZWFkaW5nIHByb3BlcnRpZXMgbmFtZWQgIngiLCAieSIsICJ3aWR0aCIsCisvLyBhbmQgImhl
aWdodCIgZnJvbSB0aGlzIHZhbHVlLCBhbmQgY29udmVydGluZyB0aGUgcmVzdWx0cyB0byBkb3Vi
bGUuCistIChDR1JlY3QpdG9SZWN0OworLy8gQ29udmVydCBhIHZhbHVlIHRvIHR5cGUgQ0dSYW5n
ZSBieSBhY2Nlc3NpbmcgcHJvcGVydGllcyBuYW1lZCAid2lkdGgiIGFuZAorLy8gImhlaWdodCIg
ZnJvbSB0aGlzIHZhbHVlIGNvbnZlcnRpbmcgdGhlIHJlc3VsdHMgdG8gZG91YmxlLgorLSAoQ0dT
aXplKXRvU2l6ZTsKKworQGVuZAorCisvLyBJbnN0YW5jZXMgb2YgSlNWYWx1ZSBpbXBsZW1lbnQg
dGhlIGZvbGxvd2luZyBtZXRob2RzIGluIG9yZGVyIHRvIGVuYWJsZQorLy8gc3VwcG9ydCBmb3Ig
c3Vic2NyaXB0IGFjY2VzcyBieSBrZXkgYW5kIGluZGV4LCBmb3IgZXhhbXBsZToKKy8vCisvLyAg
ICBKU1ZhbHVlICpvYmplY3RBLCAqb2JqZWN0QjsKKy8vICAgIEpTVmFsdWUgKnYxID0gb2JqZWN0
W0AiWCJdOyAvLyBHZXQgdmFsdWUgZm9yIHByb3BlcnR5ICJYIiBmcm9tICdvYmplY3QnLgorLy8g
ICAgSlNWYWx1ZSAqdjIgPSBvYmplY3RbNDJdOyAgIC8vIEdldCB2YWx1ZSBmb3IgaW5kZXggNDIg
ZnJvbSAnb2JqZWN0Jy4KKy8vICAgIG9iamVjdFtAIlkiXSA9IHYxOyAgICAgICAgICAvLyBBc3Np
Z24gJ3YxJyB0byBwcm9wZXJ0eSAiWSIgb2YgJ29iamVjdCcuCisvLyAgICBvYmplY3RbMTAxXSA9
IHYyOyAgICAgICAgICAgLy8gQXNzaWduICd2MicgdG8gaW5kZXggMTAxIG9mICdvYmplY3QnLgor
Ly8KKy8vIEFuIG9iamVjdCBrZXkgcGFzc2VkIGFzIGEgc3Vic2NyaXB0IHdpbGwgYmUgY29udmVy
dGVkIHRvIGEgSmF2YVNjaXB0IHZhbHVlLAorLy8gYW5kIHRoZW4gdGhlIHZhbHVlIGNvbnZlcnRl
ZCB0byBhIHN0cmluZyB1c2VkIGFzIGEgcHJvcGVydHkgbmFtZS4KK0BpbnRlcmZhY2UgSlNWYWx1
ZShTdWJzY3JpcHRTdXBwb3J0KQorCistIChKU1ZhbHVlICopb2JqZWN0Rm9yS2V5ZWRTdWJzY3Jp
cHQ6KGlkKWtleTsKKy0gKEpTVmFsdWUgKilvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHQ6KE5TVUlu
dGVnZXIpaW5kZXg7CistICh2b2lkKXNldE9iamVjdDooaWQpb2JqZWN0IGZvcktleWVkU3Vic2Ny
aXB0OihOU09iamVjdCA8TlNDb3B5aW5nPiAqKWtleTsKKy0gKHZvaWQpc2V0T2JqZWN0OihpZClv
YmplY3QgYXRJbmRleGVkU3Vic2NyaXB0OihOU1VJbnRlZ2VyKWluZGV4OworCitAZW5kCisKKyNp
ZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLy8gVGhlc2Uga2V5cyBt
YXkgYXNzaXN0IGluIGNyZWF0aW5nIGEgcHJvcGVydHkgZGVzY3JpcHRvciBmb3IgdXNlIHdpdGgg
dGhlCisvLyBkZWZpbmVQcm9wZXJ0eSBtZXRob2Qgb24gSlNWYWx1ZS4KKy8vIFByb3BlcnR5IGRl
c2NyaXB0b3JzIG11c3QgZml0IG9uZSBvZiB0aHJlZSBkZXNjcmlwdGlvbnM6CisvLyBEYXRhIERl
c2NyaXB0b3I6CisvLyAgLSBBIGRlc2NyaXB0b3IgY29udGFpbmluZyBvbmUgb3IgYm90aCBvZiB0
aGUga2V5cyAidmFsdWUiIGFuZCAid3JpdGFibGUiLAorLy8gICAgYW5kIG9wdGlvbmFsbHkgY29u
dGFpbmluZyBvbmUgb3IgYm90aCBvZiB0aGUga2V5cyAiZW51bWVyYWJsZSIgYW5kCisvLyAgICAi
Y29uZmlndXJhYmxlIi4gQSBkYXRhIGRlc2NyaXB0b3IgbWF5IG5vdCBjb250YWluIGVpdGhlciB0
aGUgImdldCIgb3IKKy8vICAgICJzZXQiIGtleS4KKy8vICAgIEEgZGF0YSBkZXNjcmlwdG9yIG1h
eSBiZSB1c2VkIHRvIGNyZWF0ZSBvciBtb2RpZnkgdGhlIGF0dHJpYnV0ZXMgb2YgYQorLy8gICAg
ZGF0YSBwcm9wZXJ0eSBvbiBhbiBvYmplY3QgKHJlcGxhY2luZyBhbnkgZXhpc3RpbmcgYWNjZXNz
b3IgcHJvcGVydHkpLgorLy8gQWNjZXNzb3IgRGVzY3JpcHRvcjoKKy8vICAtIEEgZGVzY3JpcHRv
ciBjb250YWluaW5nIG9uZSBvciBib3RoIG9mIHRoZSBrZXlzICJnZXQiIGFuZCAic2V0IiwgYW5k
CisvLyAgICBvcHRpb25hbGx5IGNvbnRhaW5pbmcgb25lIG9yIGJvdGggb2YgdGhlIGtleXMgImVu
dW1lcmFibGUiIGFuZAorLy8gICAgImNvbmZpZ3VyYWJsZSIuIEFuIGFjY2Vzc29yIGRlc2NyaXB0
b3IgbWF5IG5vdCBjb250YWluIGVpdGhlciB0aGUgInZhbHVlIgorLy8gICAgb3IgIndyaXRhYmxl
IiBrZXkuCisvLyAgICBBbiBhY2Nlc3NvciBkZXNjcmlwdG9yIG1heSBiZSB1c2VkIHRvIGNyZWF0
ZSBvciBtb2RpZnkgdGhlIGF0dHJpYnV0ZXMgb2YKKy8vICAgIGFuIGFjY2Vzc29yIHByb3BlcnR5
IG9uIGFuIG9iamVjdCAocmVwbGFjaW5nIGFueSBleGlzdGluZyBkYXRhIHByb3BlcnR5KS4KKy8v
IEdlbmVyaWMgRGVzY3JpcHRvcjoKKy8vICAtIEEgZGVzY3JpcHRvciBjb250YWluaW5nIG9uZSBv
ciBib3RoIG9mIHRoZSBrZXlzICJlbnVtZXJhYmxlIiBhbmQKKy8vICAgICJjb25maWd1cmFibGUi
LiBBIGdlbmVyaWMgZGVzY3JpcHRvciBtYXkgbm90IGNvbnRhaW4gYW55IG9mIHRoZSBrZXlzCisv
LyAgICAidmFsdWUiLCAiIHdyaXRhYmxlIiwgImdldCIsIG9yICJzZXQiLgorLy8gICAgQSBnZW5l
cmljIGRlc2NyaXB0b3IgbWF5IGJlIHVzZWQgdG8gbW9kaWZ5IHRoZSBhdHRyaWJ1dGVzIG9mIGFu
IGV4aXN0aW5nCisvLyAgICBkYXRhIG9yIGFjY2Vzc29yIHByb3BlcnR5LCBvciB0byBjcmVhdGUg
YSBuZXcgZGF0YSBwcm9wZXJ0eS4KK0pTX0VYUE9SVCBleHRlcm4gTlNTdHJpbmcgKiBjb25zdCBK
U1Byb3BlcnR5RGVzY3JpcHRvcldyaXRhYmxlS2V5OworSlNfRVhQT1JUIGV4dGVybiBOU1N0cmlu
ZyAqIGNvbnN0IEpTUHJvcGVydHlEZXNjcmlwdG9yRW51bWVyYWJsZUtleTsKK0pTX0VYUE9SVCBl
eHRlcm4gTlNTdHJpbmcgKiBjb25zdCBKU1Byb3BlcnR5RGVzY3JpcHRvckNvbmZpZ3VyYWJsZUtl
eTsKK0pTX0VYUE9SVCBleHRlcm4gTlNTdHJpbmcgKiBjb25zdCBKU1Byb3BlcnR5RGVzY3JpcHRv
clZhbHVlS2V5OworSlNfRVhQT1JUIGV4dGVybiBOU1N0cmluZyAqIGNvbnN0IEpTUHJvcGVydHlE
ZXNjcmlwdG9yR2V0S2V5OworSlNfRVhQT1JUIGV4dGVybiBOU1N0cmluZyAqIGNvbnN0IEpTUHJv
cGVydHlEZXNjcmlwdG9yU2V0S2V5OworCisjaWZkZWYgX19jcGx1c3BsdXMKK30gLy8gZXh0ZXJu
ICJDIgorI2VuZGlmCisKKyNlbmRpZgorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTVmFsdWUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1Zh
bHVlLm1tCShyZXZpc2lvbiAxNDAxOTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
VmFsdWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAKICNpbXBvcnQgIkpTV3Jh
cHBlck1hcC5oIgogI2ltcG9ydCAiT2JqY1J1bnRpbWVFeHRyYXMuaCIKICNpbXBvcnQgIk9wZXJh
dGlvbnMuaCIKLSNpbXBvcnQgIkpTVmFsdWUuaCIKKyNpbXBvcnQgIkpTQ0pTVmFsdWUuaCIKICNp
bXBvcnQgInd0Zi9IYXNoTWFwLmgiCiAjaW1wb3J0ICJ3dGYvSGFzaFNldC5oIgogI2ltcG9ydCAi
d3RmL1ZlY3Rvci5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlSW50
ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVJ
bnRlcm5hbC5oCShyZXZpc2lvbiAxNDAxOTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTVmFsdWVJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8K
IAogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuaD4KLSNpbXBvcnQgIkFQ
SUpTVmFsdWUuaCIKKyNpbXBvcnQgIkpTVmFsdWUuaCIKIAogI2lmIEpTX09CSkNfQVBJX0VOQUJM
RUQKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCShyZXZp
c2lvbiAxNDAxOTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMyArMzAsMTMgQEAKICNpbmNsdWRlICJBUElTaGltcy5o
IgogI2luY2x1ZGUgIkpTQ2FsbGJhY2tPYmplY3QuaCIKIAorI2luY2x1ZGUgPHJ1bnRpbWUvSlND
SlNWYWx1ZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaD4KICNpbmNsdWRl
IDxydW50aW1lL0pTT05PYmplY3QuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTU3RyaW5nLmg+CiAj
aW5jbHVkZSA8cnVudGltZS9MaXRlcmFsUGFyc2VyLmg+CiAjaW5jbHVkZSA8cnVudGltZS9PcGVy
YXRpb25zLmg+CiAjaW5jbHVkZSA8cnVudGltZS9Qcm90ZWN0Lmg+Ci0jaW5jbHVkZSA8cnVudGlt
ZS9KU1ZhbHVlLmg+CiAKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0hhc2guaD4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNX
ZWFrT2JqZWN0TWFwUmVmUHJpdmF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU1dlYWtPYmplY3RNYXBSZWZQcml2YXRlLmNwcAkocmV2aXNpb24gMTQwMTk2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dlYWtPYmplY3RNYXBSZWZQcml2YXRl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsOCArMjgsOCBAQAogCiAjaW5jbHVkZSAiQVBJQ2Fz
dC5oIgogI2luY2x1ZGUgIkFQSVNoaW1zLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2lu
Y2x1ZGUgIkpTQ2FsbGJhY2tPYmplY3QuaCIKLSNpbmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVk
ZSAiSlNXZWFrT2JqZWN0TWFwUmVmSW50ZXJuYWwuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgi
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNXcmFwcGVyTWFwLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNXcmFwcGVyTWFwLm1tCShyZXZpc2lvbiAxNDAxOTYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTV3JhcHBlck1hcC5tbQkod29ya2luZyBjb3B5KQpAQCAtNDM2LDcgKzQzNiw3
IEBAIC0gKEpTVmFsdWUgKil3cmFwcGVyRm9yT2JqZWN0OihpZClvYmplY3QKICAgICAvLyAgICAg
YnV0IHN0aWxsLCB3b3VsZCBwcm9iYWJseSBuaWNlciBpZiB3ZSBtYWRlIGl0IHNvIHRoYXQgb25s
eSBvbmUgYXNzb2NpYXRlZCBvYmplY3Qgd2FzIHJlcXVpcmVkLCBicm9hZGNhc3Rpbmcgb2JqZWN0
IGRlYWxsb2MuCiAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGNvbnRleHRJbnRlcm5h
bENvbnRleHQobV9jb250ZXh0KSk7CiAgICAganNXcmFwcGVyID0gdG9KUyhleGVjLCB2YWx1ZUlu
dGVybmFsVmFsdWUod3JhcHBlcikpLnRvT2JqZWN0KGV4ZWMpOwotICAgIG1fY2FjaGVkV3JhcHBl
cnMuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgb2JqZWN0LCBqc1dyYXBwZXIpOworICAgIG1fY2Fj
aGVkV3JhcHBlcnMuc2V0KG9iamVjdCwganNXcmFwcGVyKTsKICAgICByZXR1cm4gd3JhcHBlcjsK
IH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KYXZhU2NyaXB0Q29yZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSmF2YVNjcmlwdENvcmUuaAko
cmV2aXNpb24gMTQwMTk2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KYXZhU2NyaXB0
Q29yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAjaWYgZGVmaW5lZChfX09C
SkNfXykgJiYgSlNfT0JKQ19BUElfRU5BQkxFRAogCiAjaW1wb3J0ICJKU0NvbnRleHQuaCIKLSNp
bXBvcnQgIkFQSUpTVmFsdWUuaCIKKyNpbXBvcnQgIkpTVmFsdWUuaCIKICNpbXBvcnQgIkpTVmly
dHVhbE1hY2hpbmUuaCIKICNpbXBvcnQgIkpTRXhwb3J0LmgiCiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNDAxOTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtNDI0LDcgKzQyNCw3IEBACiAJCTE0N0YzOUQyMTA3RUMzNzYwMDQyN0E0OCAvKiBKU0ds
b2JhbE9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxNERFMEQ2ODBEMDI0MzE0MDBBQUNDQTIgLyogSlNHbG9iYWxPYmplY3QuY3BwICovOyB9
OwogCQkxNDdGMzlENDEwN0VDMzc2MDA0MjdBNDggLyogSlNPYmplY3QuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyMkEzOTgwRTE2RTE0ODAwQUYy
MUM4IC8qIEpTT2JqZWN0LmNwcCAqLzsgfTsKIAkJMTQ3RjM5RDUxMDdFQzM3NjAwNDI3QTQ4IC8q
IEpTU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDMDJFOUI2MEUxODQyRkEwMDBGOTI5NyAvKiBKU1N0cmluZy5jcHAgKi87IH07Ci0JCTE0
N0YzOUQ2MTA3RUMzNzYwMDQyN0E0OCAvKiBKU1ZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2OTJBODg3MDI1NTU5N0QwMUZGNjBGNyAvKiBK
U1ZhbHVlLmNwcCAqLzsgfTsKKwkJMTQ3RjM5RDYxMDdFQzM3NjAwNDI3QTQ4IC8qIEpTQ0pTVmFs
dWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjY5
MkE4ODcwMjU1NTk3RDAxRkY2MEY3IC8qIEpTQ0pTVmFsdWUuY3BwICovOyB9OwogCQkxNDdGMzlE
NzEwN0VDMzc2MDA0MjdBNDggLyogSlNWYXJpYWJsZU9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzIyQTM5QTBFMTZFMTQ4MDBBRjIxQzgg
LyogSlNWYXJpYWJsZU9iamVjdC5jcHAgKi87IH07CiAJCTE0ODE2RTFCMTU0Q0M1NkMwMEI4MDU0
QyAvKiBCbG9ja0FsbG9jYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxNDgxNkUxOTE1NENDNTZDMDBCODA1NEMgLyogQmxvY2tBbGxvY2F0b3Iu
Y3BwICovOyB9OwogCQkxNDgxNkUxQzE1NENDNTZDMDBCODA1NEMgLyogQmxvY2tBbGxvY2F0b3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0ODE2RTFB
MTU0Q0M1NkMwMEI4MDU0QyAvKiBCbG9ja0FsbG9jYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC01MDAsNyArNTAwLDcgQEAKIAkJODYzQzZE
OUMxNTIxMTExQTAwNTg1RTRFIC8qIFlhcnJDYW5vbmljYWxpemVVQ1MyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2M0M2RDk4MTUyMTExMTIwMDU4
NUU0RSAvKiBZYXJyQ2Fub25pY2FsaXplVUNTMi5jcHAgKi87IH07CiAJCTg2NDJDNTEwMTUxQzA2
QTkwMDQ2RDRFRiAvKiBSZWdFeHBDYWNoZWRSZXN1bHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZGNzVFRkIxNTFDMDYyRjAwN0M5QkEzIC8qIFJl
Z0V4cENhY2hlZFJlc3VsdC5jcHAgKi87IH07CiAJCTg2NDJDNTEyMTUxQzA4M0QwMDQ2RDRFRiAv
KiBSZWdFeHBNYXRjaGVzQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODZGNzVFRkQxNTFDMDYyRjAwN0M5QkEzIC8qIFJlZ0V4cE1hdGNoZXNB
cnJheS5jcHAgKi87IH07Ci0JCTg2NUEzMEYxMTM1MDA3RTEwMENEQjQ5RSAvKiBKU1ZhbHVlSW5s
aW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY1
QTMwRjAxMzUwMDdFMTAwQ0RCNDlFIC8qIEpTVmFsdWVJbmxpbmVzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODY1QTMwRjExMzUwMDdFMTAwQ0RC
NDlFIC8qIEpTQ0pTVmFsdWVJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NjVBMzBGMDEzNTAwN0UxMDBDREI0OUUgLyogSlNDSlNWYWx1ZUlu
bGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk4NjVGNDA4ODEwRTdENTYzMDA5NDczNjEgLyogQVBJU2hpbXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NUY0MDg3MTBFN0Q1NjMwMDk0NzM2MSAv
KiBBUElTaGltcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTg2NjczOUQyMTNCRkRFNzEwMDIzRDg3QyAvKiBCaWdJbnRlZ2VyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjY3MzlEMDEzQkZERTcxMDAy
M0Q4N0MgLyogQmlnSW50ZWdlci5oICovOyB9OwogCQk4NjY3MzlEMzEzQkZERTcxMDAyM0Q4N0Mg
LyogVWludDE2V2l0aEZyYWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NjY3MzlEMTEzQkZERTcxMDAyM0Q4N0MgLyogVWludDE2V2l0aEZyYWN0
aW9uLmggKi87IH07CkBAIC01NDksNyArNTQ5LDcgQEAKIAkJODZEM0IzQzQxMDE1OUQ3RjAwMjg2
NUU3IC8qIFJlcGF0Y2hCdWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDg2RDNCM0MyMTAxNTlEN0YwMDI4NjVFNyAvKiBSZXBhdGNoQnVmZmVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZEQjY0
NjQwRjk1QzZGQzAwRDdEOTIxIC8qIEV4ZWN1dGFibGVBbGxvY2F0b3JGaXhlZFZNUG9vbC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkRCNjQ2MzBG
OTVDNkZDMDBEN0Q5MjEgLyogRXhlY3V0YWJsZUFsbG9jYXRvckZpeGVkVk1Qb29sLmNwcCAqLzsg
fTsKIAkJODZFMTE2QjEwRkU3NUFDODAwQjUxMkJDIC8qIENvZGVMb2NhdGlvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZFMTE2QjAwRkU3NUFDODAw
QjUxMkJDIC8qIENvZGVMb2NhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07Ci0JCTg2RTNDNjEyMTY3QkFCRDcwMDZENzYwQSAvKiBBUElKU1ZhbHVl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkUzQzYw
NjE2N0JBQjg3MDA2RDc2MEEgLyogQVBJSlNWYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFB1YmxpYywgKTsgfTsgfTsKKwkJODZFM0M2MTIxNjdCQUJENzAwNkQ3NjBBIC8qIEpT
VmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2
RTNDNjA2MTY3QkFCODcwMDZENzYwQSAvKiBKU1ZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQk4NkUzQzYxMzE2N0JBQkQ3MDA2RDc2MEEgLyog
SlNDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4NkUzQzYwNzE2N0JBQjg3MDA2RDc2MEEgLyogSlNDb250ZXh0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQk4NkUzQzYxNDE2N0JBQkQ3MDA2RDc2
MEEgLyogSlNFeHBvcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg2RTNDNjBBMTY3QkFCODcwMDZENzYwQSAvKiBKU0V4cG9ydC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJODZFM0M2MTUxNjdCQUJENzAw
NkQ3NjBBIC8qIEpTVmlydHVhbE1hY2hpbmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg2RTNDNjBGMTY3QkFCODcwMDZENzYwQSAvKiBKU1ZpcnR1YWxN
YWNoaW5lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwpA
QCAtNzE3LDcgKzcxNyw3IEBACiAJCUJDMThDNDI4MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU1N0cmlu
Z1JlZi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ4
MkI3NEIwQTQzMDMyODAwNTE3Q0ZDIC8qIEpTU3RyaW5nUmVmLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQlCQzE4QzQyOTBFMTZGNUNEMDBCMzQ0NjAg
LyogSlNTdHJpbmdSZWZDRi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMTQ2QUFCMkEwQjY2QTg0OTAwRTU1RjE2IC8qIEpTU3RyaW5nUmVmQ0YuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJCUJDMThDNDJBMEUx
NkY1Q0QwMEIzNDQ2MCAvKiBKU1R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDE0QUJCNDU0MDk5QzJBMEYwMEUyQTI0RiAvKiBKU1R5cGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlCQzE4QzQyQjBF
MTZGNUNEMDBCMzQ0NjAgLyogSlNWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMTRBQkIzNkUwOTlDMDc2NDAwRTJBMjRGIC8qIEpTVmFsdWUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCQzE4QzQy
QjBFMTZGNUNEMDBCMzQ0NjAgLyogSlNDSlNWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRBQkIzNkUwOTlDMDc2NDAwRTJBMjRGIC8qIEpTQ0pT
VmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlCQzE4QzQyQzBFMTZGNUNEMDBCMzQ0NjAgLyogSlNWYWx1ZVJlZi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ4MkI2RUEwQTQzMDBCMzAwNTE3Q0ZD
IC8qIEpTVmFsdWVSZWYuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7
IH07IH07CiAJCUJDMThDNDJEMEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU1ZhcmlhYmxlT2JqZWN0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEYyNTI1NjBE
MDhERDhEMDA0RUNGRkYgLyogSlNWYXJpYWJsZU9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDMThDNDJFMEUxNkY1Q0QwMEIzNDQ2MCAv
KiBKU1dyYXBwZXJPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDY1QzdBMTcyMEE4RUFBQ0IwMEZBMzdFQSAvKiBKU1dyYXBwZXJPYmplY3QuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTI1OSw3
ICsxMjU5LDcgQEAKIAkJMTRBNDJFM0QwRjRGNjBFRTAwNTk5MDk5IC8qIFRpbWVvdXRDaGVja2Vy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRpbWVvdXRDaGVja2Vy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTRBNDJFM0UwRjRGNjBFRTAwNTk5
MDk5IC8qIFRpbWVvdXRDaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFRpbWVvdXRDaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0QTY1ODFB
MEY0RTM2RjQwMDAxNTBGRCAvKiBKSVRTdHVicy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKSVRTdHVicy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxNEFCQjM2
RTA5OUMwNzY0MDBFMkEyNEYgLyogSlNWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNEFCQjM2
RTA5OUMwNzY0MDBFMkEyNEYgLyogSlNDSlNWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNDSlNWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
NEFCQjQ1NDA5OUMyQTBGMDBFMkEyNEYgLyogSlNUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNEFC
REY1RDBBNDM3RkVGMDBFQ0NBMDEgLyogSlNDYWxsYmFja09iamVjdC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU0NhbGxiYWNrT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTE0QUJERjVFMEE0MzdGRUYwMEVDQ0EwMSAvKiBKU0NhbGxiYWNrT2JqZWN0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ2FsbGJhY2tPYmpl
Y3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTM1MCw3ICsxMzUwLDcgQEAK
IAkJODYzQzZEOTgxNTIxMTExMjAwNTg1RTRFIC8qIFlhcnJDYW5vbmljYWxpemVVQ1MyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFlhcnJDYW5vbmljYWxpemVVQ1My
LmNwcDsgcGF0aCA9IHlhcnIvWWFyckNhbm9uaWNhbGl6ZVVDUzIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk4NjNDNkQ5OTE1MjExMTEyMDA1ODVFNEUgLyogWWFyckNhbm9uaWNh
bGl6ZVVDUzIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gWWFyckNhbm9uaWNh
bGl6ZVVDUzIuaDsgcGF0aCA9IHlhcnIvWWFyckNhbm9uaWNhbGl6ZVVDUzIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODYzQzZEOUExNTIxMTExMjAwNTg1RTRFIC8qIFlhcnJDYW5v
bmljYWxpemVVQ1MyLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBuYW1lID0g
WWFyckNhbm9uaWNhbGl6ZVVDUzIuanM7IHBhdGggPSB5YXJyL1lhcnJDYW5vbmljYWxpemVVQ1My
LmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4NjVBMzBGMDEzNTAwN0UxMDBDREI0
OUUgLyogSlNWYWx1ZUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNWYWx1ZUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODY1QTMwRjAx
MzUwMDdFMTAwQ0RCNDlFIC8qIEpTQ0pTVmFsdWVJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTQ0pTVmFsdWVJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTg2NUY0MDg3MTBFN0Q1NjMwMDk0NzM2MSAvKiBBUElTaGltcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElTaGltcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4NjY3MzlEMDEzQkZERTcxMDAyM0Q4N0MgLyogQmlnSW50ZWdlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCaWdJbnRlZ2VyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTg2NjczOUQxMTNCRkRFNzEwMDIzRDg3QyAvKiBVaW50MTZXaXRoRnJh
Y3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVWludDE2V2l0aEZyYWN0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDA1LDcgKzE0MDUsNyBAQAog
CQk4NkQzQjNDMjEwMTU5RDdGMDAyODY1RTcgLyogUmVwYXRjaEJ1ZmZlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZXBhdGNoQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTg2REI2NDYzMEY5NUM2RkMwMEQ3RDkyMSAvKiBFeGVjdXRhYmxlQWxsb2Nh
dG9yRml4ZWRWTVBvb2wuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
RXhlY3V0YWJsZUFsbG9jYXRvckZpeGVkVk1Qb29sLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJODZFMTE2QjAwRkU3NUFDODAwQjUxMkJDIC8qIENvZGVMb2NhdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2RlTG9jYXRpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJODZFM0M2MDYxNjdCQUI4NzAwNkQ3NjBBIC8qIEFQSUpTVmFsdWUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJSlNWYWx1ZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk4NkUzQzYwNjE2N0JBQjg3MDA2RDc2MEEgLyogSlNWYWx1
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1ZhbHVlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2RTNDNjA3MTY3QkFCODcwMDZENzYwQSAvKiBKU0NvbnRl
eHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDb250ZXh0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2RTNDNjA4MTY3QkFCODcwMDZENzYwQSAvKiBKU0Nv
bnRleHQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBKU0NvbnRl
eHQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2RTNDNjA5MTY3QkFCODcwMDZE
NzYwQSAvKiBKU0NvbnRleHRJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU0NvbnRleHRJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTcxMiw3ICsxNzEyLDcgQEAKIAkJRjY5MkE4N0MwMjU1NTk3RDAxRkY2MEY3IC8qIFJlZ0V4cE9i
amVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBp
bmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZWdFeHBPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9
OwogCQlGNjkyQTg3RDAyNTU1OTdEMDFGRjYwRjcgLyogUmVnRXhwLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZ0V4cC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKIAkJRjY5MkE4N0UwMjU1NTk3
RDAxRkY2MEY3IC8qIFJlZ0V4cC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZWdFeHAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lk
dGggPSA4OyB9OwotCQlGNjkyQTg4NzAyNTU1OTdEMDFGRjYwRjcgLyogSlNWYWx1ZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRo
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1Zh
bHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9OworCQlGNjky
QTg4NzAyNTU1OTdEMDFGRjYwRjcgLyogSlNDSlNWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NKU1ZhbHVlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9OwogCQlGRTIwQ0U5QjE1RjA0QTk1
MDBERjM0MzAgLyogTExJbnRDTG9vcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBMTEludENMb29wLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50Q0xvb3AuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTIwQ0U5QzE1RjA0QTk1MDBERjM0MzAgLyogTExJ
bnRDTG9vcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludENMb29wLmg7
IHBhdGggPSBsbGludC9MTEludENMb29wLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUZFNEEzMzFEMTVCRDJFMDcwMDZGNTRGMyAvKiBWTUluc3BlY3Rvci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWTUluc3BlY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0yMDgyLDcgKzIwODIsNyBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKIAkJCQkxNDgyQjc4QTBBNDMwNUFCMDA1MTdDRkMgLyogQVBJQ2FzdC5o
ICovLAotCQkJCTg2RTNDNjA2MTY3QkFCODcwMDZENzYwQSAvKiBBUElKU1ZhbHVlLmggKi8sCisJ
CQkJODZFM0M2MDYxNjdCQUI4NzAwNkQ3NjBBIC8qIEpTVmFsdWUuaCAqLywKIAkJCQk4NjVGNDA4
NzEwRTdENTYzMDA5NDczNjEgLyogQVBJU2hpbXMuaCAqLywKIAkJCQkxQ0FBOEI0QTBEMzJDMzlB
MDA0MUJDRkYgLyogSmF2YVNjcmlwdC5oICovLAogCQkJCTFDQUE4QjRCMEQzMkMzOUEwMDQxQkNG
RiAvKiBKYXZhU2NyaXB0Q29yZS5oICovLApAQCAtMjM4NCw5ICsyMzg0LDkgQEAKIAkJCQkwRjkx
OUQwQTE1N0VFMDlEMDA0QTRFN0QgLyogSlNTeW1ib2xUYWJsZU9iamVjdC5oICovLAogCQkJCTE0
QUJCNDU0MDk5QzJBMEYwMEUyQTI0RiAvKiBKU1R5cGUuaCAqLywKIAkJCQk2NTA3RDI5NzBFODcx
RTRBMDBEN0Q4OTYgLyogSlNUeXBlSW5mby5oICovLAotCQkJCUY2OTJBODg3MDI1NTU5N0QwMUZG
NjBGNyAvKiBKU1ZhbHVlLmNwcCAqLywKLQkJCQkxNEFCQjM2RTA5OUMwNzY0MDBFMkEyNEYgLyog
SlNWYWx1ZS5oICovLAotCQkJCTg2NUEzMEYwMTM1MDA3RTEwMENEQjQ5RSAvKiBKU1ZhbHVlSW5s
aW5lcy5oICovLAorCQkJCUY2OTJBODg3MDI1NTU5N0QwMUZGNjBGNyAvKiBKU0NKU1ZhbHVlLmNw
cCAqLywKKwkJCQkxNEFCQjM2RTA5OUMwNzY0MDBFMkEyNEYgLyogSlNDSlNWYWx1ZS5oICovLAor
CQkJCTg2NUEzMEYwMTM1MDA3RTEwMENEQjQ5RSAvKiBKU0NKU1ZhbHVlSW5saW5lcy5oICovLAog
CQkJCUJDMjJBMzlBMEUxNkUxNDgwMEFGMjFDOCAvKiBKU1ZhcmlhYmxlT2JqZWN0LmNwcCAqLywK
IAkJCQkxNEYyNTI1NjBEMDhERDhEMDA0RUNGRkYgLyogSlNWYXJpYWJsZU9iamVjdC5oICovLAog
CQkJCTE0NDI1NjVGMTVFREU5OEQwMDY2QTQ5QiAvKiBKU1dpdGhTY29wZS5jcHAgKi8sCkBAIC0y
ODI4LDcgKzI4MjgsNyBAQAogCQkJCTg2MDE2MUUzMEYzQTgzQzEwMEY4NDcxMCAvKiBBYnN0cmFj
dE1hY3JvQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU1RjBGNTE0RDEwNjNDMDBB
Qzc2NDkgLyogQWJzdHJhY3RQQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEMzRTUwRTE2RjVD
RDAwQjM0NDYwIC8qIEFQSUNhc3QuaCBpbiBIZWFkZXJzICovLAotCQkJCTg2RTNDNjEyMTY3QkFC
RDcwMDZENzYwQSAvKiBBUElKU1ZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NkUzQzYxMjE2
N0JBQkQ3MDA2RDc2MEEgLyogSlNWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODY1RjQwODgx
MEU3RDU2MzAwOTQ3MzYxIC8qIEFQSVNoaW1zLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0Y2MDUx
NDBFMjAzRUY4MDBCOUE2NEQgLyogQXJnTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMyNTdE
RTgwRTFGNTFDNTAwMTZCNkM5IC8qIEFyZ3VtZW50cy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMDY2
LDggKzMwNjYsOCBAQAogCQkJCTBGOTE5RDBEMTU3RUUwQTIwMDRBNEU3RCAvKiBKU1N5bWJvbFRh
YmxlT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQyQTBFMTZGNUNEMDBCMzQ0NjAg
LyogSlNUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTA3RDI5RTBFODcxRTVFMDBEN0Q4OTYg
LyogSlNUeXBlSW5mby5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQkMxOEM0MkIwRTE2RjVDRDAwQjM0
NDYwIC8qIEpTVmFsdWUuaCBpbiBIZWFkZXJzICovLAotCQkJCTg2NUEzMEYxMTM1MDA3RTEwMENE
QjQ5RSAvKiBKU1ZhbHVlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMxOEM0MkIwRTE2
RjVDRDAwQjM0NDYwIC8qIEpTQ0pTVmFsdWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTg2NUEzMEYx
MTM1MDA3RTEwMENEQjQ5RSAvKiBKU0NKU1ZhbHVlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODZFM0M2MUIxNjdCQUJFRTAwNkQ3NjBBIC8qIEpTVmFsdWVJbnRlcm5hbC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkMxOEM0MkMwRTE2RjVDRDAwQjM0NDYwIC8qIEpTVmFsdWVSZWYuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDMThDNDJEMEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU1ZhcmlhYmxlT2Jq
ZWN0LmggaW4gSGVhZGVycyAqLywKQEAgLTM3NzUsNyArMzc3NSw3IEBACiAJCQkJMTQ4MkI3NEUw
QTQzMDMyODAwNTE3Q0ZDIC8qIEpTU3RyaW5nUmVmLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0
NkFBQjM4MEI2NkE5NDQwMEU1NUYxNiAvKiBKU1N0cmluZ1JlZkNGLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGOTE5RDBDMTU3RUUwOUYwMDRBNEU3RCAvKiBKU1N5bWJvbFRhYmxlT2JqZWN0LmNw
cCBpbiBTb3VyY2VzICovLAotCQkJCTE0N0YzOUQ2MTA3RUMzNzYwMDQyN0E0OCAvKiBKU1ZhbHVl
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTE0N0YzOUQ2MTA3RUMzNzYwMDQyN0E0OCAvKiBKU0NK
U1ZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2RTNDNjFBMTY3QkFCRUUwMDZENzYwQSAv
KiBKU1ZhbHVlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMTRCRDVBMzIwQTNFOTFGNjAwQkFGNTlD
IC8qIEpTVmFsdWVSZWYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5RDcxMDdFQzM3NjAw
NDI3QTQ4IC8qIEpTVmFyaWFibGVPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAkocmV2aXNp
b24gMTQwMTk2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3Rh
dHVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkNvZGVT
cGVjaWFsaXphdGlvbktpbmQuaCIKICNpbmNsdWRlICJJbnRyaW5zaWMuaCIKLSNpbmNsdWRlICJK
U1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJl
dmlzaW9uIDE0MDE5NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw5ICs0MSw5IEBACiAjaW5jbHVkZSAiSklULmgi
CiAjaW5jbHVkZSAiSklUU3R1YnMuaCIKICNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIKKyNpbmNs
dWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpT
TmFtZVNjb3BlLmgiCi0jaW5jbHVkZSAiSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkxvd0xldmVsSW50
ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUmVkdWNlV2hp
dGVzcGFjZS5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9m
R2V0dGluZ0FWYWx1ZVByb2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oCShyZXZpc2lvbiAxNDAx
OTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZh
bHVlUHJvZmlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAvLyB0aGVzZSAj
aWYncyB3aWxsIGRpc2FwcGVhci4uLgogI2lmIEVOQUJMRShERkdfSklUKQogCi0jaW5jbHVkZSAi
SlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXNvbHZlR2xvYmFsU3RhdHVz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVzb2x2
ZUdsb2JhbFN0YXR1cy5jcHAJKHJldmlzaW9uIDE0MDE5NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9SZXNvbHZlR2xvYmFsU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjcsNyArMjcsNyBAQAogI2luY2x1ZGUgIlJlc29sdmVHbG9iYWxTdGF0dXMuaCIKIAogI2luY2x1
ZGUgIkNvZGVCbG9jay5oIgotI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0NKU1Zh
bHVlLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVzb2x2ZUdsb2JhbFN0YXR1
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXNvbHZl
R2xvYmFsU3RhdHVzLmgJKHJldmlzaW9uIDE0MDE5NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9SZXNvbHZlR2xvYmFsU3RhdHVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcg
KzI2LDcgQEAKICNpZm5kZWYgUmVzb2x2ZUdsb2JhbFN0YXR1c19oCiAjZGVmaW5lIFJlc29sdmVH
bG9iYWxTdGF0dXNfaAogCi0jaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFs
dWUuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU9mZnNldC5oIgogI2luY2x1ZGUgPHd0Zi9Ob3RGb3Vu
ZC5oPgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5
cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3Vs
YXRlZFR5cGUuaAkocmV2aXNpb24gMTQwMTk2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAK
ICNpZm5kZWYgU3BlY3VsYXRlZFR5cGVfaAogI2RlZmluZSBTcGVjdWxhdGVkVHlwZV9oCiAKLSNp
bmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogCiBuYW1lc3BhY2Ug
SlNDIHsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUmVjb3Zl
cnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVS
ZWNvdmVyeS5oCShyZXZpc2lvbiAxNDAxOTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVmFsdWVSZWNvdmVyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAj
ZGVmaW5lIFZhbHVlUmVjb3ZlcnlfaAogCiAjaW5jbHVkZSAiRGF0YUZvcm1hdC5oIgotI2luY2x1
ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiTWFjcm9B
c3NlbWJsZXIuaCIKICNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKICNpbmNsdWRlIDxzdGRp
by5oPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAJKHJldmlzaW9uIDE0MDE5NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAj
aW5jbHVkZSAiREZHQXJyYXlNb2RlLmgiCiAjaW5jbHVkZSAiREZHQ2FwYWJpbGl0aWVzLmgiCiAj
aW5jbHVkZSAiR2V0QnlJZFN0YXR1cy5oIgotI2luY2x1ZGUgIkpTVmFsdWVJbmxpbmVzLmgiCisj
aW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgi
CiAjaW5jbHVkZSAiUmVzb2x2ZUdsb2JhbFN0YXR1cy5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNw
cAkocmV2aXNpb24gMTQwMTk2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRD
b21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDggKzM1LDggQEAKICNpbmNsdWRlICJE
RkdTbG93UGF0aEdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkRGR1NwZWN1bGF0aXZlSklULmgiCiAj
aW5jbHVkZSAiREZHVGh1bmtzLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNp
bmNsdWRlICJKU0dsb2JhbERhdGEuaCIKLSNpbmNsdWRlICJKU1ZhbHVlSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkxpbmtCdWZmZXIuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDE0MDE5NikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
OSw3ICszOSw3IEBACiAjaW5jbHVkZSAiREZHTm9kZUZsYWdzLmgiCiAjaW5jbHVkZSAiREZHTm9k
ZVR5cGUuaCIKICNpbmNsdWRlICJERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaCIKLSNpbmNsdWRlICJK
U1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIk9wZXJhbmRzLmgi
CiAjaW5jbHVkZSAiU3BlY3VsYXRlZFR5cGUuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVTZXQuaCIK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcAkocmV2aXNpb24gMTQwMTk2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAog
I2luY2x1ZGUgIkFycmF5UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiREZHQ2FsbEFycmF5QWxsb2Nh
dG9yU2xvd1BhdGhHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJERkdTbG93UGF0aEdlbmVyYXRvci5o
IgotI2luY2x1ZGUgIkpTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGlu
ZXMuaCIKICNpbmNsdWRlICJPYmplY3RQcm90b3R5cGUuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDE0MDE5NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICsz
Miw3IEBACiAjaW5jbHVkZSAiREZHQXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvci5oIgogI2luY2x1
ZGUgIkRGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAi
REZHU2xvd1BhdGhHZW5lcmF0b3IuaCIKLSNpbmNsdWRlICJKU1ZhbHVlSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgogCiBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Db3BpZWRCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0NvcGllZEJsb2NrLmgJKHJldmlzaW9uIDE0MDE5NikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0NvcGllZEJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcg
QEAKICNpbmNsdWRlICJCbG9ja0FsbG9jYXRvci5oIgogI2luY2x1ZGUgIkNvcHlXb3JrTGlzdC5o
IgogI2luY2x1ZGUgIkhlYXBCbG9jay5oIgotI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRl
ICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiT3B0aW9ucy5oIgogI2luY2x1ZGUgPHd0Zi9BdG9t
aWNzLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGFuZGxlU3RhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hhbmRsZVN0YWNrLmNwcAkocmV2aXNpb24gMTQwMTk2KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlU3RhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw4
ICsyNyw4IEBACiAjaW5jbHVkZSAiSGFuZGxlU3RhY2suaCIKIAogI2luY2x1ZGUgIkhlYXBSb290
VmlzaXRvci5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNP
YmplY3QuaCIKLSNpbmNsdWRlICJKU1ZhbHVlSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsK
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlVHlwZXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGVUeXBlcy5oCShyZXZpc2lv
biAxNDAxOTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGVUeXBlcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIEhhbmRsZVR5cGVzX2gKICNk
ZWZpbmUgSGFuZGxlVHlwZXNfaAogCi0jaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpT
Q0pTVmFsdWUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL1dlYWtJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvV2Vha0ltcGwuaAkocmV2aXNpb24gMTQwMTk2KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvV2Vha0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2lm
bmRlZiBXZWFrSW1wbF9oCiAjZGVmaW5lIFdlYWtJbXBsX2gKIAotI2luY2x1ZGUgIkpTVmFsdWUu
aCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkocmV2
aXNpb24gMTQwMTk2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDkgKzMxLDkgQEAKICNkZWZpbmUgSW50ZXJw
cmV0ZXJfaAogCiAjaW5jbHVkZSAiQXJnTGlzdC5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIK
ICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCi0jaW5jbHVkZSAi
SlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNTdGFjay5oIgog
I2luY2x1ZGUgIkxMSW50RGF0YS5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL1JlZ2lzdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL1JlZ2lzdGVyLmgJKHJldmlzaW9uIDE0MDE5NikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3Rlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsy
OSw3IEBACiAjaWZuZGVmIFJlZ2lzdGVyX2gKICNkZWZpbmUgUmVnaXN0ZXJfaAogCi0jaW5jbHVk
ZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlIDx3dGYvQXNz
ZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3JUcmFpdHMuaD4KIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1ZNSW5zcGVjdG9yLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1ZNSW5zcGVjdG9yLmgJKHJldmlzaW9u
IDE0MDE5NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9WTUluc3BlY3Rv
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiAjZGVmaW5lIEVOQUJMRV9WTUlO
U1BFQ1RPUiAwCiAKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKLSNpbmNsdWRlICJKU1ZhbHVlLmgi
CisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgPHN0ZGFyZy5oPgogI2luY2x1ZGUg
PHN0ZGlvLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAJKHJldmlz
aW9uIDE0MDE5NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5W
YWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDkgKzI3LDkgQEAKICNpbmNsdWRlICJIb3N0
Q2FsbFJldHVyblZhbHVlLmgiCiAKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKLSNpbmNsdWRlIDx3
dGYvSW5saW5lQVNNLmg+CisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRl
ICJKU09iamVjdC5oIgotI2luY2x1ZGUgIkpTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSA8d3Rm
L0lubGluZUFTTS5oPgogCiAKIG5hbWVzcGFjZSBKU0MgewpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmgJKHJldmlzaW9uIDE0MDE5NikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIEhvc3RDYWxsUmV0dXJuVmFsdWVf
aAogI2RlZmluZSBIb3N0Q2FsbFJldHVyblZhbHVlX2gKIAotI2luY2x1ZGUgIkpTVmFsdWUuaCIK
KyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
LmgiCiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUQ29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUQ29kZS5oCShyZXZpc2lvbiAxNDAxOTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVENvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUg
IkNhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkRpc2Fzc2VtYmxlci5oIgogI2luY2x1ZGUgIkpJVFN0
dWJzLmgiCi0jaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNp
bmNsdWRlICJMZWdhY3lQcm9maWxlci5oIgogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyQ29kZVJl
Zi5oIgogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlv
bnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0
aW9ucy5jcHAJKHJldmlzaW9uIDE0MDE5NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklURXhjZXB0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDggKzI5LDggQEAKICNpbmNs
dWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJJbnRl
cnByZXRlci5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU0dsb2JhbERh
dGEuaCIKLSNpbmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogCiAj
aWYgRU5BQkxFKEpJVCkgfHwgRU5BQkxFKExMSU5UKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRFeGNlcHRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRFeGNlcHRpb25zLmgJKHJldmlzaW9uIDE0MDE5NikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsy
Niw3IEBACiAjaWZuZGVmIEpJVEV4Y2VwdGlvbnNfaAogI2RlZmluZSBKSVRFeGNlcHRpb25zX2gK
IAotI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVk
ZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiCiAKICNpZiBFTkFCTEUoSklUKSB8fCBFTkFCTEUo
TExJTlQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5o
CShyZXZpc2lvbiAxNDAxOTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJm
YWNlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDkgKzI5LDkgQEAKICNpbmNsdWRlICJCeXRl
Y29kZUNvbnZlbnRpb25zLmgiCiAjaW5jbHVkZSAiSklUQ29kZS5oIgogI2luY2x1ZGUgIkpJVFN0
dWJzLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTU3RhY2suaCIKICNp
bmNsdWRlICJKU1N0cmluZy5oIgotI2luY2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNsdWRlICJNYWNy
b0Fzc2VtYmxlci5oIgogI2luY2x1ZGUgPHd0Zi9BbHdheXNJbmxpbmUuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRDTG9v
cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludENMb29w
LmgJKHJldmlzaW9uIDE0MDE5NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dENMb29wLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKICNpZiBFTkFCTEUoTExJ
TlRfQ19MT09QKQogCiAjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgotI2luY2x1
ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiTWFjcm9B
c3NlbWJsZXJDb2RlUmVmLmgiCiAjaW5jbHVkZSAiT3Bjb2RlLmgiCiAjaW5jbHVkZSAiUmVnaXN0
ZXIuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmgJKHJldmlz
aW9uIDE0MDE5NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaAko
d29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBMTEludERhdGFfaAogI2Rl
ZmluZSBMTEludERhdGFfaAogCi0jaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ0pT
VmFsdWUuaCIKICNpbmNsdWRlICJPcGNvZGUuaCIKICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4K
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwCShyZXZpc2lvbiAxNDAxOTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMSArMzgsMTEgQEAKICNpbmNs
dWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVREcml2ZXIuaCIKICNpbmNsdWRlICJKU0FjdGl2YXRp
b24uaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RG
dW5jdGlvbnMuaCIKICNpbmNsdWRlICJKU05hbWVTY29wZS5oIgogI2luY2x1ZGUgIkpTUHJvcGVy
dHlOYW1lSXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgotI2luY2x1ZGUgIkpTVmFs
dWUuaCIKICNpbmNsdWRlICJKU1dpdGhTY29wZS5oIgogI2luY2x1ZGUgIkxMSW50Q29tbW9uLmgi
CiAjaW5jbHVkZSAiTExJbnRFeGNlcHRpb25zLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcHJvZmlsZXIvUHJvZmlsZXJCeXRlY29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckJ5dGVjb2RlLmgJKHJldmlzaW9uIDE0MDE5NikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckJ5dGVjb2RlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgUHJvZmlsZXJCeXRlY29kZV9o
CiAjZGVmaW5lIFByb2ZpbGVyQnl0ZWNvZGVfaAogCi0jaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2lu
Y2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJPcGNvZGUuaCIKICNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Q
cm9maWxlckJ5dGVjb2RlU2VxdWVuY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcHJvZmlsZXIvUHJvZmlsZXJCeXRlY29kZVNlcXVlbmNlLmgJKHJldmlzaW9uIDE0MDE5
NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckJ5dGVjb2RlU2Vx
dWVuY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBQcm9maWxl
ckJ5dGVjb2RlU2VxdWVuY2VfaAogI2RlZmluZSBQcm9maWxlckJ5dGVjb2RlU2VxdWVuY2VfaAog
Ci0jaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRl
ICJQcm9maWxlckJ5dGVjb2RlLmgiCiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVy
L1Byb2ZpbGVyQnl0ZWNvZGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Byb2ZpbGVyL1Byb2ZpbGVyQnl0ZWNvZGVzLmgJKHJldmlzaW9uIDE0MDE5NikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckJ5dGVjb2Rlcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNyw3ICsyNyw3IEBACiAjZGVmaW5lIFByb2ZpbGVyQnl0ZWNvZGVzX2gKIAogI2lu
Y2x1ZGUgIkNvZGVCbG9ja0hhc2guaCIKLSNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAi
SlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIlByb2ZpbGVyQnl0ZWNvZGVTZXF1ZW5jZS5oIgogI2lu
Y2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRp
b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmls
ZXJDb21waWxhdGlvbi5oCShyZXZpc2lvbiAxNDAxOTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcHJvZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3
ICsyNyw3IEBACiAjZGVmaW5lIFByb2ZpbGVyQ29tcGlsYXRpb25faAogCiAjaW5jbHVkZSAiRXhp
dEtpbmQuaCIKLSNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgog
I2luY2x1ZGUgIlByb2ZpbGVyQ29tcGlsYXRpb25LaW5kLmgiCiAjaW5jbHVkZSAiUHJvZmlsZXJD
b21waWxlZEJ5dGVjb2RlLmgiCiAjaW5jbHVkZSAiUHJvZmlsZXJFeGVjdXRpb25Db3VudGVyLmgi
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJDb21waWxlZEJ5
dGVjb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1By
b2ZpbGVyQ29tcGlsZWRCeXRlY29kZS5oCShyZXZpc2lvbiAxNDAxOTYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJDb21waWxlZEJ5dGVjb2RlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgUHJvZmlsZXJDb21waWxlZEJ5dGVjb2Rl
X2gKICNkZWZpbmUgUHJvZmlsZXJDb21waWxlZEJ5dGVjb2RlX2gKIAotI2luY2x1ZGUgIkpTVmFs
dWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiUHJvZmlsZXJPcmlnaW5T
dGFjay5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyRGF0YWJhc2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJEYXRhYmFzZS5oCShyZXZpc2lv
biAxNDAxOTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJEYXRh
YmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIFByb2ZpbGVy
RGF0YWJhc2VfaAogI2RlZmluZSBQcm9maWxlckRhdGFiYXNlX2gKIAotI2luY2x1ZGUgIkpTVmFs
dWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiUHJvZmlsZXJCeXRlY29k
ZXMuaCIKICNpbmNsdWRlICJQcm9maWxlckNvbXBpbGF0aW9uLmgiCiAjaW5jbHVkZSAiUHJvZmls
ZXJDb21waWxhdGlvbktpbmQuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxl
ci9Qcm9maWxlck9TUkV4aXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cHJvZmlsZXIvUHJvZmlsZXJPU1JFeGl0LmgJKHJldmlzaW9uIDE0MDE5NikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlck9TUkV4aXQuaAkod29ya2luZyBjb3B5KQpA
QCAtMjcsNyArMjcsNyBAQAogI2RlZmluZSBQcm9maWxlck9TUkV4aXRfaAogCiAjaW5jbHVkZSAi
RXhpdEtpbmQuaCIKLSNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5o
IgogI2luY2x1ZGUgIlByb2ZpbGVyT3JpZ2luU3RhY2suaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBQcm9maWxlciB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIv
UHJvZmlsZXJPU1JFeGl0U2l0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wcm9maWxlci9Qcm9maWxlck9TUkV4aXRTaXRlLmgJKHJldmlzaW9uIDE0MDE5NikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlck9TUkV4aXRTaXRlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgUHJvZmlsZXJPU1JFeGl0U2l0ZV9o
CiAjZGVmaW5lIFByb2ZpbGVyT1NSRXhpdFNpdGVfaAogCi0jaW5jbHVkZSAiSlNWYWx1ZS5oIgor
I2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgUHJvZmlsZXIgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3Byb2ZpbGVyL1Byb2ZpbGVyT3JpZ2luLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyT3JpZ2luLmgJKHJldmlzaW9uIDE0MDE5NikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlck9yaWdpbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAjZGVmaW5lIFByb2ZpbGVyT3JpZ2luX2gKIAogI2lu
Y2x1ZGUgIkNvZGVCbG9ja0hhc2guaCIKLSNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAi
SlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1By
aW50U3RyZWFtLmg+CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9m
aWxlck9yaWdpblN0YWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3By
b2ZpbGVyL1Byb2ZpbGVyT3JpZ2luU3RhY2suaAkocmV2aXNpb24gMTQwMTk2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyT3JpZ2luU3RhY2suaAkod29ya2luZyBj
b3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBQcm9maWxlck9yaWdpblN0YWNrX2gKICNk
ZWZpbmUgUHJvZmlsZXJPcmlnaW5TdGFja19oCiAKLSNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5j
bHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIlByb2ZpbGVyT3JpZ2luLmgiCiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuY3BwCShyZXZpc2lvbiAxNDAxOTYp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjIsNyArMjIsNyBAQAogI2luY2x1ZGUgIkFyZ0xpc3QuaCIKIAogI2luY2x1ZGUg
IkhlYXBSb290VmlzaXRvci5oIgotI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0NK
U1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgi
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFRyYW5zY2VuZGVu
dGFsRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9DYWNoZWRUcmFuc2NlbmRlbnRhbEZ1bmN0aW9uLmgJKHJldmlzaW9uIDE0MDE5NikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFRyYW5zY2VuZGVudGFsRnVuY3Rpb24u
aAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBDYWNoZWRUcmFuc2Nl
bmRlbnRhbEZ1bmN0aW9uX2gKICNkZWZpbmUgQ2FjaGVkVHJhbnNjZW5kZW50YWxGdW5jdGlvbl9o
CiAKLSNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogCiBuYW1l
c3BhY2UgSlNDIHsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERh
dGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWxsRGF0
YS5oCShyZXZpc2lvbiAxNDAxOTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
YWxsRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiAjaWZuZGVmIENhbGxE
YXRhX2gKICNkZWZpbmUgQ2FsbERhdGFfaAogCi0jaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1
ZGUgIkpTQ0pTVmFsdWUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmgJKHJldmlzaW9uIDE0MDE5NikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uaAkod29ya2luZyBjb3B5KQpA
QCAtMjMsNyArMjMsNyBAQAogI2lmbmRlZiBDb21wbGV0aW9uX2gKICNkZWZpbmUgQ29tcGxldGlv
bl9oCiAKLSNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogCiBu
YW1lc3BhY2UgSlNDIHsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29u
c3RydWN0RGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbnN0cnVjdERhdGEuaAkocmV2aXNpb24gMTQwMTk2KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29uc3RydWN0RGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3
IEBACiAjZGVmaW5lIENvbnN0cnVjdERhdGFfaAogCiAjaW5jbHVkZSAiQ2FsbERhdGEuaCIKLSNp
bmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogCiBuYW1lc3BhY2Ug
SlNDIHsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVj
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRl
Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAxNDAxOTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwxMiAr
MjUsMTIgQEAKICNpbmNsdWRlICJEYXRlQ29udmVyc2lvbi5oIgogI2luY2x1ZGUgIkRhdGVJbnN0
YW5jZS5oIgogI2luY2x1ZGUgIkRhdGVQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVl
SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRGF0ZU1hdGguaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9u
LmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgog
I2luY2x1ZGUgIkpTU3RyaW5nQnVpbGRlci5oIgotI2luY2x1ZGUgIkpTVmFsdWVJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiT2JqZWN0UHJvdG90eXBlLmgiCiAjaW5jbHVkZSA8bWF0aC5oPgogI2luY2x1
ZGUgPHRpbWUuaD4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0
YW5jZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0
ZUluc3RhbmNlLmNwcAkocmV2aXNpb24gMTQwMTk2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRGF0ZUluc3RhbmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIsOSArMjIsOSBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRhdGVJbnN0YW5jZS5oIgogCisjaW5j
bHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0RhdGVNYXRoLmgiCiAjaW5j
bHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKLSNpbmNsdWRlICJKU1ZhbHVlSW5saW5lcy5oIgogI2lu
Y2x1ZGUgPG1hdGguaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAkocmV2aXNp
b24gMTQwMTk2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlw
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDExICsyNywxMSBAQAogI2luY2x1ZGUgIkRhdGVD
b252ZXJzaW9uLmgiCiAjaW5jbHVkZSAiRGF0ZUluc3RhbmNlLmgiCiAjaW5jbHVkZSAiRXJyb3Iu
aCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRGF0ZU1hdGgu
aCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCiAj
aW5jbHVkZSAiSlNTdHJpbmdCdWlsZGVyLmgiCi0jaW5jbHVkZSAiSlNWYWx1ZUlubGluZXMuaCIK
ICNpbmNsdWRlICJMb29rdXAuaCIKICNpbmNsdWRlICJPYmplY3RQcm90b3R5cGUuaCIKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBUElWYWx1ZVdyYXBwZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FQSVZhbHVlV3JhcHBl
ci5oCShyZXZpc2lvbiAxNDAxOTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FQSVZhbHVlV3JhcHBlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw4IEBACiAjaWZu
ZGVmIEpTQVBJVmFsdWVXcmFwcGVyX2gKICNkZWZpbmUgSlNBUElWYWx1ZVdyYXBwZXJfaAogCisj
aW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgotI2luY2x1ZGUgIkpT
VmFsdWUuaCIKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIK
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAJ
KHJldmlzaW9uIDE0MDE5NikJKGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNW
YWx1ZS5jcHA6MTQwMTk2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNW
YWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMjAgQEAKKy8qCisgKiAgQ29weXJp
Z2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKKyAqICBDb3B5
cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKKyAqICBDb3B5cmlnaHQg
KEMpIDIwMDMsIDIwMDcsIDIwMDgsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICog
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTVmFsdWUu
aCIKKworI2luY2x1ZGUgIkJvb2xlYW5Db25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkJvb2xlYW5Q
cm90b3R5cGUuaCIKKyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBl
cnMuaCIKKyNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVj
dC5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU05vdEFuT2JqZWN0Lmgi
CisjaW5jbHVkZSAiSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJOdW1iZXJPYmplY3QuaCIK
KyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMu
aD4KKworbmFtZXNwYWNlIEpTQyB7CisKK3N0YXRpYyBjb25zdCBkb3VibGUgRDMyID0gNDI5NDk2
NzI5Ni4wOworCisvLyBFQ01BIDkuNAorZG91YmxlIEpTVmFsdWU6OnRvSW50ZWdlcihFeGVjU3Rh
dGUqIGV4ZWMpIGNvbnN0Cit7CisgICAgaWYgKGlzSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIGFz
SW50MzIoKTsKKyAgICBkb3VibGUgZCA9IHRvTnVtYmVyKGV4ZWMpOworICAgIHJldHVybiBpc25h
bihkKSA/IDAuMCA6IHRydW5jKGQpOworfQorCitkb3VibGUgSlNWYWx1ZTo6dG9JbnRlZ2VyUHJl
c2VydmVOYU4oRXhlY1N0YXRlKiBleGVjKSBjb25zdAoreworICAgIGlmIChpc0ludDMyKCkpCisg
ICAgICAgIHJldHVybiBhc0ludDMyKCk7CisgICAgcmV0dXJuIHRydW5jKHRvTnVtYmVyKGV4ZWMp
KTsKK30KKworZG91YmxlIEpTVmFsdWU6OnRvTnVtYmVyU2xvd0Nhc2UoRXhlY1N0YXRlKiBleGVj
KSBjb25zdAoreworICAgIEFTU0VSVCghaXNJbnQzMigpICYmICFpc0RvdWJsZSgpKTsKKyAgICBp
ZiAoaXNDZWxsKCkpCisgICAgICAgIHJldHVybiBhc0NlbGwoKS0+dG9OdW1iZXIoZXhlYyk7Cisg
ICAgaWYgKGlzVHJ1ZSgpKQorICAgICAgICByZXR1cm4gMS4wOworICAgIHJldHVybiBpc1VuZGVm
aW5lZCgpID8gUU5hTiA6IDA7IC8vIG51bGwgYW5kIGZhbHNlIGJvdGggY29udmVydCB0byAwLgor
fQorCitKU09iamVjdCogSlNWYWx1ZTo6dG9PYmplY3RTbG93Q2FzZShFeGVjU3RhdGUqIGV4ZWMs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFpc0Nl
bGwoKSk7CisKKyAgICBpZiAoaXNJbnQzMigpIHx8IGlzRG91YmxlKCkpCisgICAgICAgIHJldHVy
biBjb25zdHJ1Y3ROdW1iZXIoZXhlYywgZ2xvYmFsT2JqZWN0LCBhc1ZhbHVlKCkpOworICAgIGlm
IChpc1RydWUoKSB8fCBpc0ZhbHNlKCkpCisgICAgICAgIHJldHVybiBjb25zdHJ1Y3RCb29sZWFu
RnJvbUltbWVkaWF0ZUJvb2xlYW4oZXhlYywgZ2xvYmFsT2JqZWN0LCBhc1ZhbHVlKCkpOworCisg
ICAgQVNTRVJUKGlzVW5kZWZpbmVkT3JOdWxsKCkpOworICAgIHRocm93RXJyb3IoZXhlYywgY3Jl
YXRlTm90QW5PYmplY3RFcnJvcihleGVjLCAqdGhpcykpOworICAgIHJldHVybiBKU05vdEFuT2Jq
ZWN0OjpjcmVhdGUoZXhlYyk7Cit9CisKK0pTT2JqZWN0KiBKU1ZhbHVlOjp0b1RoaXNPYmplY3RT
bG93Q2FzZShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFpc0NlbGwoKSk7
CisKKyAgICBpZiAoaXNJbnQzMigpIHx8IGlzRG91YmxlKCkpCisgICAgICAgIHJldHVybiBjb25z
dHJ1Y3ROdW1iZXIoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBhc1ZhbHVlKCkp
OworICAgIGlmIChpc1RydWUoKSB8fCBpc0ZhbHNlKCkpCisgICAgICAgIHJldHVybiBjb25zdHJ1
Y3RCb29sZWFuRnJvbUltbWVkaWF0ZUJvb2xlYW4oZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLCBhc1ZhbHVlKCkpOworICAgIEFTU0VSVChpc1VuZGVmaW5lZE9yTnVsbCgpKTsKKyAg
ICByZXR1cm4gZXhlYy0+Z2xvYmFsVGhpc1ZhbHVlKCk7Cit9CisKK0pTT2JqZWN0KiBKU1ZhbHVl
OjpzeW50aGVzaXplUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICBpZiAo
aXNDZWxsKCkpIHsKKyAgICAgICAgQVNTRVJUKGlzU3RyaW5nKCkpOworICAgICAgICByZXR1cm4g
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5zdHJpbmdQcm90b3R5cGUoKTsKKyAgICB9CisK
KyAgICBpZiAoaXNOdW1iZXIoKSkKKyAgICAgICAgcmV0dXJuIGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKS0+bnVtYmVyUHJvdG90eXBlKCk7CisgICAgaWYgKGlzQm9vbGVhbigpKQorICAgICAg
ICByZXR1cm4gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5ib29sZWFuUHJvdG90eXBlKCk7
CisKKyAgICBBU1NFUlQoaXNVbmRlZmluZWRPck51bGwoKSk7CisgICAgdGhyb3dFcnJvcihleGVj
LCBjcmVhdGVOb3RBbk9iamVjdEVycm9yKGV4ZWMsICp0aGlzKSk7CisgICAgcmV0dXJuIEpTTm90
QW5PYmplY3Q6OmNyZWF0ZShleGVjKTsKK30KKworLy8gRUNNQSA4LjcuMgordm9pZCBKU1ZhbHVl
OjpwdXRUb1ByaW1pdGl2ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICBKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7CisKKyAgICB1bnNpZ25lZCBp
bmRleCA9IHByb3BlcnR5TmFtZS5hc0luZGV4KCk7CisgICAgaWYgKGluZGV4ICE9IFByb3BlcnR5
TmFtZTo6Tm90QW5JbmRleCkgeworICAgICAgICBwdXRUb1ByaW1pdGl2ZUJ5SW5kZXgoZXhlYywg
aW5kZXgsIHZhbHVlLCBzbG90LmlzU3RyaWN0TW9kZSgpKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIC8vIENoZWNrIGlmIHRoZXJlIGFyZSBhbnkgc2V0dGVycyBvciBnZXR0ZXJzIGlu
IHRoZSBwcm90b3R5cGUgY2hhaW4KKyAgICBKU09iamVjdCogb2JqID0gc3ludGhlc2l6ZVByb3Rv
dHlwZShleGVjKTsKKyAgICBKU1ZhbHVlIHByb3RvdHlwZTsKKyAgICBpZiAocHJvcGVydHlOYW1l
ICE9IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS51bmRlcnNjb3JlUHJvdG8pIHsKKyAgICAgICAgZm9y
ICg7ICFvYmotPnN0cnVjdHVyZSgpLT5oYXNSZWFkT25seU9yR2V0dGVyU2V0dGVyUHJvcGVydGll
c0V4Y2x1ZGluZ1Byb3RvKCk7IG9iaiA9IGFzT2JqZWN0KHByb3RvdHlwZSkpIHsKKyAgICAgICAg
ICAgIHByb3RvdHlwZSA9IG9iai0+cHJvdG90eXBlKCk7CisgICAgICAgICAgICBpZiAocHJvdG90
eXBlLmlzTnVsbCgpKSB7CisgICAgICAgICAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkp
CisgICAgICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFk
b25seVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgZm9yICg7IDsgb2JqID0gYXNPYmplY3Qo
cHJvdG90eXBlKSkgeworICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOworICAgICAgICBKU0Nl
bGwqIHNwZWNpZmljVmFsdWU7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IG9iai0+
c3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNw
ZWNpZmljVmFsdWUpOworICAgICAgICBpZiAob2Zmc2V0ICE9IGludmFsaWRPZmZzZXQpIHsKKyAg
ICAgICAgICAgIGlmIChhdHRyaWJ1dGVzICYgUmVhZE9ubHkpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvcihl
eGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0
ZUVycm9yKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBKU1ZhbHVlIGdzID0gb2JqLT5nZXREaXJlY3Qob2Zmc2V0KTsKKyAgICAgICAgICAg
IGlmIChncy5pc0dldHRlclNldHRlcigpKSB7CisgICAgICAgICAgICAgICAgSlNPYmplY3QqIHNl
dHRlckZ1bmMgPSBhc0dldHRlclNldHRlcihncyktPnNldHRlcigpOyAgICAgICAgCisgICAgICAg
ICAgICAgICAgaWYgKCFzZXR0ZXJGdW5jKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChzbG90
LmlzU3RyaWN0TW9kZSgpKQorICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvcihleGVj
LCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJzZXR0aW5nIGEgcHJvcGVydHkg
dGhhdCBoYXMgb25seSBhIGdldHRlciIpKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgQ2Fs
bERhdGEgY2FsbERhdGE7CisgICAgICAgICAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBzZXR0
ZXJGdW5jLT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YShzZXR0ZXJGdW5jLCBjYWxsRGF0YSk7
CisgICAgICAgICAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKKyAgICAgICAgICAg
ICAgICBhcmdzLmFwcGVuZCh2YWx1ZSk7CisKKyAgICAgICAgICAgICAgICAvLyBJZiB0aGlzIGlz
IFdlYkNvcmUncyBnbG9iYWwgb2JqZWN0IHRoZW4gd2UgbmVlZCB0byBzdWJzdGl0dXRlIHRoZSBz
aGVsbC4KKyAgICAgICAgICAgICAgICBjYWxsKGV4ZWMsIHNldHRlckZ1bmMsIGNhbGxUeXBlLCBj
YWxsRGF0YSwgKnRoaXMsIGFyZ3MpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgLy8gSWYgdGhlcmUncyBhbiBleGlzdGluZyBwcm9wZXJ0eSBv
biB0aGUgb2JqZWN0IG9yIG9uZSBvZiBpdHMgCisgICAgICAgICAgICAvLyBwcm90b3R5cGVzIGl0
IHNob3VsZCBiZSByZXBsYWNlZCwgc28gYnJlYWsgaGVyZS4KKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisKKyAgICAgICAgcHJvdG90eXBlID0gb2JqLT5wcm90b3R5cGUoKTsKKyAgICAg
ICAgaWYgKHByb3RvdHlwZS5pc051bGwoKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAg
ICAKKyAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgdGhyb3dUeXBlRXJyb3Io
ZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKKyAgICByZXR1cm47
Cit9CisKK3ZvaWQgSlNWYWx1ZTo6cHV0VG9QcmltaXRpdmVCeUluZGV4KEV4ZWNTdGF0ZSogZXhl
YywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93
KQoreworICAgIGlmIChwcm9wZXJ0eU5hbWUgPiBNQVhfQVJSQVlfSU5ERVgpIHsKKyAgICAgICAg
UHV0UHJvcGVydHlTbG90IHNsb3Qoc2hvdWxkVGhyb3cpOworICAgICAgICBwdXRUb1ByaW1pdGl2
ZShleGVjLCBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIHByb3BlcnR5TmFtZSksIHZhbHVlLCBzbG90
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBpZiAoc3ludGhlc2l6ZVByb3Rv
dHlwZShleGVjKS0+YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZUZvclByb3RvdHlw
ZShleGVjLCAqdGhpcywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpKQorICAgICAg
ICByZXR1cm47CisgICAgCisgICAgaWYgKHNob3VsZFRocm93KQorICAgICAgICB0aHJvd1R5cGVF
cnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOworfQorCit2
b2lkIEpTVmFsdWU6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBpZiAoISp0
aGlzKQorICAgICAgICBvdXQucHJpbnQoIjxKU1ZhbHVlKCk+Iik7CisgICAgZWxzZSBpZiAoaXNJ
bnQzMigpKQorICAgICAgICBvdXQucHJpbnRmKCJJbnQzMjogJWQiLCBhc0ludDMyKCkpOworICAg
IGVsc2UgaWYgKGlzRG91YmxlKCkpIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBvdXQu
cHJpbnRmKCJEb3VibGU6ICVsbGQsICVsZiIsIChsb25nIGxvbmcpcmVpbnRlcnByZXREb3VibGVU
b0ludDY0KGFzRG91YmxlKCkpLCBhc0RvdWJsZSgpKTsKKyNlbHNlCisgICAgICAgIHVuaW9uIHsK
KyAgICAgICAgICAgIGRvdWJsZSBhc0RvdWJsZTsKKyAgICAgICAgICAgIHVpbnQzMl90IGFzVHdv
SW50MzJzWzJdOworICAgICAgICB9IHU7CisgICAgICAgIHUuYXNEb3VibGUgPSBhc0RvdWJsZSgp
OworICAgICAgICBvdXQucHJpbnRmKCJEb3VibGU6ICUwOHg6JTA4eCwgJWxmIiwgdS5hc1R3b0lu
dDMyc1sxXSwgdS5hc1R3b0ludDMyc1swXSwgYXNEb3VibGUoKSk7CisjZW5kaWYKKyAgICB9IGVs
c2UgaWYgKGlzQ2VsbCgpKSB7CisgICAgICAgIGlmIChhc0NlbGwoKS0+aW5oZXJpdHMoJlN0cnVj
dHVyZTo6c19pbmZvKSkgeworICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBqc0Nh
c3Q8U3RydWN0dXJlKj4oYXNDZWxsKCkpOworICAgICAgICAgICAgb3V0LnByaW50KAorICAgICAg
ICAgICAgICAgICJTdHJ1Y3R1cmU6ICIsIFJhd1BvaW50ZXIoc3RydWN0dXJlKSwgIjogIiwgc3Ry
dWN0dXJlLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lLAorICAgICAgICAgICAgICAgICIsICIsIElu
ZGV4aW5nVHlwZUR1bXAoc3RydWN0dXJlLT5pbmRleGluZ1R5cGVJbmNsdWRpbmdIaXN0b3J5KCkp
KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG91dC5wcmludCgiQ2VsbDogIiwgUmF3
UG9pbnRlcihhc0NlbGwoKSkpOworICAgICAgICAgICAgaWYgKGlzT2JqZWN0KCkgJiYgYXNPYmpl
Y3QoKnRoaXMpLT5idXR0ZXJmbHkoKSkKKyAgICAgICAgICAgICAgICBvdXQucHJpbnQoIi0+Iiwg
UmF3UG9pbnRlcihhc09iamVjdCgqdGhpcyktPmJ1dHRlcmZseSgpKSk7CisgICAgICAgICAgICBv
dXQucHJpbnQoCisgICAgICAgICAgICAgICAgIiAoIiwgUmF3UG9pbnRlcihhc0NlbGwoKS0+c3Ry
dWN0dXJlKCkpLCAiOiAiLCBhc0NlbGwoKS0+c3RydWN0dXJlKCktPmNsYXNzSW5mbygpLT5jbGFz
c05hbWUsCisgICAgICAgICAgICAgICAgIiwgIiwgSW5kZXhpbmdUeXBlRHVtcChhc0NlbGwoKS0+
c3RydWN0dXJlKCktPmluZGV4aW5nVHlwZUluY2x1ZGluZ0hpc3RvcnkoKSksICIpIik7CisgICAg
ICAgIH0KKyAgICB9IGVsc2UgaWYgKGlzVHJ1ZSgpKQorICAgICAgICBvdXQucHJpbnQoIlRydWUi
KTsKKyAgICBlbHNlIGlmIChpc0ZhbHNlKCkpCisgICAgICAgIG91dC5wcmludCgiRmFsc2UiKTsK
KyAgICBlbHNlIGlmIChpc051bGwoKSkKKyAgICAgICAgb3V0LnByaW50KCJOdWxsIik7CisgICAg
ZWxzZSBpZiAoaXNVbmRlZmluZWQoKSkKKyAgICAgICAgb3V0LnByaW50KCJVbmRlZmluZWQiKTsK
KyAgICBlbHNlCisgICAgICAgIG91dC5wcmludCgiSU5WQUxJRCIpOworfQorCisvLyBUaGlzIGlu
IHRoZSBUb0ludDMyIG9wZXJhdGlvbiBpcyBkZWZpbmVkIGluIHNlY3Rpb24gOS41IG9mIHRoZSBF
Q01BLTI2MiBzcGVjLgorLy8gTm90ZSB0aGF0IHRoaXMgb3BlcmF0aW9uIGlzIGlkZW50aWNhbCB0
byBUb1VJbnQzMiBvdGhlciB0aGFuIHRvIGludGVycHJldGF0aW9uCisvLyBvZiB0aGUgcmVzdWx0
aW5nIGJpdC1wYXR0ZXJuIChhcyBzdWNoIHRoaXMgbWV0b2QgaXMgYWxzbyBjYWxsZWQgdG8gaW1w
bGVtZW50CisvLyBUb1VJbnQzMikuCisvLworLy8gVGhlIG9wZXJhdGlvbiBjYW4gYmUgZGVzY2li
ZWQgYXMgcm91bmQgdG93YXJkcyB6ZXJvLCB0aGVuIHNlbGVjdCB0aGUgMzIgbGVhc3QKKy8vIGJp
dHMgb2YgdGhlIHJlc3VsdGluZyB2YWx1ZSBpbiAycy1jb21wbGVtZW50IHJlcHJlc2VudGF0aW9u
LgoraW50MzJfdCB0b0ludDMyKGRvdWJsZSBudW1iZXIpCit7CisgICAgaW50NjRfdCBiaXRzID0g
V1RGOjpiaXR3aXNlX2Nhc3Q8aW50NjRfdD4obnVtYmVyKTsKKyAgICBpbnQzMl90IGV4cCA9IChz
dGF0aWNfY2FzdDxpbnQzMl90PihiaXRzID4+IDUyKSAmIDB4N2ZmKSAtIDB4M2ZmOworCisgICAg
Ly8gSWYgZXhwb25lbnQgPCAwIHRoZXJlIHdpbGwgYmUgbm8gYml0cyB0byB0aGUgbGVmdCBvZiB0
aGUgZGVjaW1hbCBwb2ludAorICAgIC8vIGFmdGVyIHJvdW5kaW5nOyBpZiB0aGUgZXhwb25lbnQg
aXMgPiA4MyB0aGVuIG5vIGJpdHMgb2YgcHJlY2lzaW9uIGNhbiBiZQorICAgIC8vIGxlZnQgaW4g
dGhlIGxvdyAzMi1iaXQgcmFuZ2Ugb2YgdGhlIHJlc3VsdCAoSUVFRS03NTQgZG91YmxlcyBoYXZl
IDUyIGJpdHMKKyAgICAvLyBvZiBmcmFjdGlvbmFsIHByZWNpc2lvbikuCisgICAgLy8gTm90ZSB0
aGlzIGNhc2UgaGFuZGxlcyAwLCAtMCwgYW5kIGFsbCBpbmZpbnRlLCBOYU4sICYgZGVub3JtYWwg
dmFsdWUuIAorICAgIGlmIChleHAgPCAwIHx8IGV4cCA+IDgzKQorICAgICAgICByZXR1cm4gMDsK
KworICAgIC8vIFNlbGVjdCB0aGUgYXBwcm9wcmlhdGUgMzItYml0cyBmcm9tIHRoZSBmbG9hdGlu
ZyBwb2ludCBtYW50aXNzYS4gIElmIHRoZQorICAgIC8vIGV4cG9uZW50IGlzIDUyIHRoZW4gdGhl
IGJpdHMgd2UgbmVlZCB0byBzZWxlY3QgYXJlIGFscmVhZHkgYWxpZ25lZCB0byB0aGUKKyAgICAv
LyBsb3dlc3QgYml0cyBvZiB0aGUgNjQtYml0IGludGVnZXIgcmVwcmVzZW50YXRpb24gb2YgdGdo
ZSBudW1iZXIsIG5vIG5lZWQKKyAgICAvLyB0byBzaGlmdC4gIElmIHRoZSBleHBvbmVudCBpcyBn
cmVhdGVyIHRoYW4gNTIgd2UgbmVlZCB0byBzaGlmdCB0aGUgdmFsdWUKKyAgICAvLyBsZWZ0IGJ5
IChleHAgLSA1MiksIGlmIHRoZSB2YWx1ZSBpcyBsZXNzIHRoYW4gNTIgd2UgbmVlZCB0byBzaGlm
dCByaWdodAorICAgIC8vIGFjY29yZGluZ2x5LgorICAgIGludDMyX3QgcmVzdWx0ID0gKGV4cCA+
IDUyKQorICAgICAgICA/IHN0YXRpY19jYXN0PGludDMyX3Q+KGJpdHMgPDwgKGV4cCAtIDUyKSkK
KyAgICAgICAgOiBzdGF0aWNfY2FzdDxpbnQzMl90PihiaXRzID4+ICg1MiAtIGV4cCkpOworCisg
ICAgLy8gSUVFRS03NTQgZG91YmxlIHByZWNpc2lvbiB2YWx1ZXMgYXJlIHN0b3JlZCBvbWl0dGlu
ZyBhbiBpbXBsaWNpdCAxIGJlZm9yZQorICAgIC8vIHRoZSBkZWNpbWFsIHBvaW50OyB3ZSBuZWVk
IHRvIHJlaW5zZXJ0IHRoaXMgbm93LiAgV2UgbWF5IGFsc28gdGhlIHNoaWZ0ZWQKKyAgICAvLyBp
bnZhbGlkIGJpdHMgaW50byB0aGUgcmVzdWx0IHRoYXQgYXJlIG5vdCBhIHBhcnQgb2YgdGhlIG1h
bnRpc3NhICh0aGUgc2lnbgorICAgIC8vIGFuZCBleHBvbmVudCBiaXRzIGZyb20gdGhlIGZsb2F0
aW5ncG9pbnQgcmVwcmVzZW50YXRpb24pOyBtYXNrIHRoZXNlIG91dC4KKyAgICBpZiAoZXhwIDwg
MzIpIHsKKyAgICAgICAgaW50MzJfdCBtaXNzaW5nT25lID0gMSA8PCBleHA7CisgICAgICAgIHJl
c3VsdCAmPSBtaXNzaW5nT25lIC0gMTsKKyAgICAgICAgcmVzdWx0ICs9IG1pc3NpbmdPbmU7Cisg
ICAgfQorCisgICAgLy8gSWYgdGhlIGlucHV0IHZhbHVlIHdhcyBuZWdhdGl2ZSAod2UgY291bGQg
dGVzdCBlaXRoZXIgJ251bWJlcicgb3IgJ2JpdHMnLAorICAgIC8vIGJ1dCB0ZXN0aW5nICdiaXRz
JyBpcyBsaWtlbHkgZmFzdGVyKSBpbnZlcnQgdGhlIHJlc3VsdCBhcHByb3ByaWF0ZWx5LgorICAg
IHJldHVybiBiaXRzIDwgMCA/IC1yZXN1bHQgOiByZXN1bHQ7Cit9CisKK2Jvb2wgSlNWYWx1ZTo6
aXNWYWxpZENhbGxlZSgpCit7CisgICAgcmV0dXJuIGFzT2JqZWN0KGFzQ2VsbCgpKS0+Z2xvYmFs
T2JqZWN0KCk7Cit9CisKK0pTU3RyaW5nKiBKU1ZhbHVlOjp0b1N0cmluZ1Nsb3dDYXNlKEV4ZWNT
dGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBleGVj
LT5nbG9iYWxEYXRhKCk7CisgICAgQVNTRVJUKCFpc1N0cmluZygpKTsKKyAgICBpZiAoaXNJbnQz
MigpKQorICAgICAgICByZXR1cm4ganNTdHJpbmcoJmdsb2JhbERhdGEsIGdsb2JhbERhdGEubnVt
ZXJpY1N0cmluZ3MuYWRkKGFzSW50MzIoKSkpOworICAgIGlmIChpc0RvdWJsZSgpKQorICAgICAg
ICByZXR1cm4ganNTdHJpbmcoJmdsb2JhbERhdGEsIGdsb2JhbERhdGEubnVtZXJpY1N0cmluZ3Mu
YWRkKGFzRG91YmxlKCkpKTsKKyAgICBpZiAoaXNUcnVlKCkpCisgICAgICAgIHJldHVybiBnbG9i
YWxEYXRhLnNtYWxsU3RyaW5ncy50cnVlU3RyaW5nKCk7CisgICAgaWYgKGlzRmFsc2UoKSkKKyAg
ICAgICAgcmV0dXJuIGdsb2JhbERhdGEuc21hbGxTdHJpbmdzLmZhbHNlU3RyaW5nKCk7CisgICAg
aWYgKGlzTnVsbCgpKQorICAgICAgICByZXR1cm4gZ2xvYmFsRGF0YS5zbWFsbFN0cmluZ3MubnVs
bFN0cmluZygpOworICAgIGlmIChpc1VuZGVmaW5lZCgpKQorICAgICAgICByZXR1cm4gZ2xvYmFs
RGF0YS5zbWFsbFN0cmluZ3MudW5kZWZpbmVkU3RyaW5nKCk7CisKKyAgICBBU1NFUlQoaXNDZWxs
KCkpOworICAgIEpTVmFsdWUgdmFsdWUgPSBhc0NlbGwoKS0+dG9QcmltaXRpdmUoZXhlYywgUHJl
ZmVyU3RyaW5nKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVy
biBqc0VtcHR5U3RyaW5nKGV4ZWMpOworICAgIEFTU0VSVCghdmFsdWUuaXNPYmplY3QoKSk7Cisg
ICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKGV4ZWMpOworfQorCitTdHJpbmcgSlNWYWx1ZTo6dG9X
VEZTdHJpbmdTbG93Q2FzZShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlu
bGluZUpTVmFsdWVOb3RTdHJpbmd0b1N0cmluZygqdGhpcywgZXhlYyk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNW
YWx1ZS5jcHAJKHJldmlzaW9uIDE0MDE5NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0pTVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMSwxNyArMjEsMTcgQEAKICAq
LwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUg
IkpTQ0pTVmFsdWUuaCIKIAogI2luY2x1ZGUgIkJvb2xlYW5Db25zdHJ1Y3Rvci5oIgogI2luY2x1
ZGUgIkJvb2xlYW5Qcm90b3R5cGUuaCIKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkV4
Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRlICJK
U0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTTm90QW5PYmplY3QuaCIKLSNpbmNsdWRlICJK
U1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIk51bWJlck9iamVjdC5oIgogI2luY2x1ZGUgPHd0
Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAkocmV2aXNpb24gMTQwMTk2
KQkoZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmg6MTQwMTk2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNDk3IEBACisvKgorICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhh
cnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCisgKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVy
IEtlbGx5IChwbWtAcG9zdC5jb20pCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1
LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bworICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCisgKgorICovCisKKyNpZm5kZWYgSlNWYWx1ZV9oCisjZGVmaW5lIEpTVmFsdWVfaAorCisj
aW5jbHVkZSA8bWF0aC5oPgorI2luY2x1ZGUgPHN0ZGRlZi5oPiAvLyBmb3Igc2l6ZV90CisjaW5j
bHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8d3RmL0Fsd2F5c0lubGluZS5oPgorI2luY2x1ZGUg
PHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3
dGYvSGFzaFRyYWl0cy5oPgorI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisjaW5jbHVkZSA8
d3RmL1N0ZExpYkV4dHJhcy5oPgorCituYW1lc3BhY2UgSlNDIHsKKworLy8gVGhpcyBpcyB1c2Vk
IGEgbG90IHRocm91Z2hvdXQgSmF2YVNjcmlwdENvcmUgZm9yIGV2ZXJ5dGhpbmcgZnJvbSB2YWx1
ZSBib3hpbmcgdG8gbWFya2luZworLy8gdmFsdWVzIGFzIGJlaW5nIG1pc3NpbmcsIHNvIGl0IGlz
IHVzZWZ1bCB0byBoYXZlIGl0IGFiYnJldmlhdGVkLgorI2RlZmluZSBRTmFOIChzdGQ6Om51bWVy
aWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpKQorCitjbGFzcyBFeGVjU3RhdGU7CitjbGFz
cyBKU0NlbGw7CitjbGFzcyBKU0dsb2JhbERhdGE7CitjbGFzcyBKU0dsb2JhbE9iamVjdDsKK2Ns
YXNzIEpTT2JqZWN0OworY2xhc3MgSlNTdHJpbmc7CitjbGFzcyBQcm9wZXJ0eU5hbWU7CitjbGFz
cyBQcm9wZXJ0eVNsb3Q7CitjbGFzcyBQdXRQcm9wZXJ0eVNsb3Q7CisjaWYgRU5BQkxFKERGR19K
SVQpCituYW1lc3BhY2UgREZHIHsKK2NsYXNzIEFzc2VtYmx5SGVscGVyczsKK2NsYXNzIEpJVENv
bXBpbGVyOworY2xhc3MgSklUQ29kZUdlbmVyYXRvcjsKK2NsYXNzIEpTVmFsdWVTb3VyY2U7Citj
bGFzcyBPU1JFeGl0Q29tcGlsZXI7CitjbGFzcyBTcGVjdWxhdGl2ZUpJVDsKK30KKyNlbmRpZgor
I2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCituYW1lc3BhY2UgTExJbnQgeworY2xhc3MgQ0xvb3A7
Cit9CisjZW5kaWYKKworc3RydWN0IENsYXNzSW5mbzsKK3N0cnVjdCBJbnN0cnVjdGlvbjsKK3N0
cnVjdCBNZXRob2RUYWJsZTsKKwordGVtcGxhdGUgPGNsYXNzIFQ+IGNsYXNzIFdyaXRlQmFycmll
ckJhc2U7CisKK2VudW0gUHJlZmVycmVkUHJpbWl0aXZlVHlwZSB7IE5vUHJlZmVyZW5jZSwgUHJl
ZmVyTnVtYmVyLCBQcmVmZXJTdHJpbmcgfTsKKworCit0eXBlZGVmIGludDY0X3QgRW5jb2RlZEpT
VmFsdWU7CisgICAgCit1bmlvbiBFbmNvZGVkVmFsdWVEZXNjcmlwdG9yIHsKKyAgICBpbnQ2NF90
IGFzSW50NjQ7CisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICBkb3VibGUgYXNEb3VibGU7Cisj
ZWxpZiBVU0UoSlNWQUxVRTY0KQorICAgIEpTQ2VsbCogcHRyOworI2VuZGlmCisgICAgICAgIAor
I2lmIENQVShCSUdfRU5ESUFOKQorICAgIHN0cnVjdCB7CisgICAgICAgIGludDMyX3QgdGFnOwor
ICAgICAgICBpbnQzMl90IHBheWxvYWQ7CisgICAgfSBhc0JpdHM7CisjZWxzZQorICAgIHN0cnVj
dCB7CisgICAgICAgIGludDMyX3QgcGF5bG9hZDsKKyAgICAgICAgaW50MzJfdCB0YWc7CisgICAg
fSBhc0JpdHM7CisjZW5kaWYKK307CisKKy8vIFRoaXMgaW1wbGVtZW50cyBUb0ludDMyLCBkZWZp
bmVkIGluIEVDTUEtMjYyIDkuNS4KK0pTX0VYUE9SVF9QUklWQVRFIGludDMyX3QgdG9JbnQzMihk
b3VibGUpOworCisvLyBUaGlzIGltcGxlbWVudHMgVG9VSW50MzIsIGRlZmluZWQgaW4gRUNNQS0y
NjIgOS42LgoraW5saW5lIHVpbnQzMl90IHRvVUludDMyKGRvdWJsZSBudW1iZXIpCit7CisgICAg
Ly8gQXMgY29tbWVudGVkIGluIHRoZSBzcGVjLCB0aGUgb3BlcmF0aW9uIG9mIFRvSW50MzIgYW5k
IFRvVWludDMyIG9ubHkgZGlmZmVyCisgICAgLy8gaW4gaG93IHRoZSByZXN1bHQgaXMgaW50ZXJw
cmV0ZWQ7IHNlZSBOT1RFcyBpbiBzZWN0aW9ucyA5LjUgYW5kIDkuNi4KKyAgICByZXR1cm4gdG9J
bnQzMihudW1iZXIpOworfQorCitjbGFzcyBKU1ZhbHVlIHsKKyAgICBmcmllbmQgc3RydWN0IEVu
Y29kZWRKU1ZhbHVlSGFzaFRyYWl0czsKKyAgICBmcmllbmQgY2xhc3MgSklUOworICAgIGZyaWVu
ZCBjbGFzcyBKSVRTdHViczsKKyAgICBmcmllbmQgY2xhc3MgSklUU3R1YkNhbGw7CisgICAgZnJp
ZW5kIGNsYXNzIEpTSW50ZXJmYWNlSklUOworICAgIGZyaWVuZCBjbGFzcyBTcGVjaWFsaXplZFRo
dW5rSklUOworI2lmIEVOQUJMRShERkdfSklUKQorICAgIGZyaWVuZCBjbGFzcyBERkc6OkFzc2Vt
Ymx5SGVscGVyczsKKyAgICBmcmllbmQgY2xhc3MgREZHOjpKSVRDb21waWxlcjsKKyAgICBmcmll
bmQgY2xhc3MgREZHOjpKSVRDb2RlR2VuZXJhdG9yOworICAgIGZyaWVuZCBjbGFzcyBERkc6OkpT
VmFsdWVTb3VyY2U7CisgICAgZnJpZW5kIGNsYXNzIERGRzo6T1NSRXhpdENvbXBpbGVyOworICAg
IGZyaWVuZCBjbGFzcyBERkc6OlNwZWN1bGF0aXZlSklUOworI2VuZGlmCisjaWYgRU5BQkxFKExM
SU5UX0NfTE9PUCkKKyAgICBmcmllbmQgY2xhc3MgTExJbnQ6OkNMb29wOworI2VuZGlmCisKK3B1
YmxpYzoKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgIGVudW0geyBJbnQzMlRhZyA9ICAgICAg
ICAweGZmZmZmZmZmIH07CisgICAgZW51bSB7IEJvb2xlYW5UYWcgPSAgICAgIDB4ZmZmZmZmZmUg
fTsKKyAgICBlbnVtIHsgTnVsbFRhZyA9ICAgICAgICAgMHhmZmZmZmZmZCB9OworICAgIGVudW0g
eyBVbmRlZmluZWRUYWcgPSAgICAweGZmZmZmZmZjIH07CisgICAgZW51bSB7IENlbGxUYWcgPSAg
ICAgICAgIDB4ZmZmZmZmZmIgfTsKKyAgICBlbnVtIHsgRW1wdHlWYWx1ZVRhZyA9ICAgMHhmZmZm
ZmZmYSB9OworICAgIGVudW0geyBEZWxldGVkVmFsdWVUYWcgPSAweGZmZmZmZmY5IH07CisKKyAg
ICBlbnVtIHsgTG93ZXN0VGFnID0gIERlbGV0ZWRWYWx1ZVRhZyB9OworI2VuZGlmCisKKyAgICBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgZW5jb2RlKEpTVmFsdWUpOworICAgIHN0YXRpYyBKU1ZhbHVl
IGRlY29kZShFbmNvZGVkSlNWYWx1ZSk7CisKKyAgICBlbnVtIEpTTnVsbFRhZyB7IEpTTnVsbCB9
OworICAgIGVudW0gSlNVbmRlZmluZWRUYWcgeyBKU1VuZGVmaW5lZCB9OworICAgIGVudW0gSlNU
cnVlVGFnIHsgSlNUcnVlIH07CisgICAgZW51bSBKU0ZhbHNlVGFnIHsgSlNGYWxzZSB9OworICAg
IGVudW0gRW5jb2RlQXNEb3VibGVUYWcgeyBFbmNvZGVBc0RvdWJsZSB9OworCisgICAgSlNWYWx1
ZSgpOworICAgIEpTVmFsdWUoSlNOdWxsVGFnKTsKKyAgICBKU1ZhbHVlKEpTVW5kZWZpbmVkVGFn
KTsKKyAgICBKU1ZhbHVlKEpTVHJ1ZVRhZyk7CisgICAgSlNWYWx1ZShKU0ZhbHNlVGFnKTsKKyAg
ICBKU1ZhbHVlKEpTQ2VsbCogcHRyKTsKKyAgICBKU1ZhbHVlKGNvbnN0IEpTQ2VsbCogcHRyKTsK
KworICAgIC8vIE51bWJlcnMKKyAgICBKU1ZhbHVlKEVuY29kZUFzRG91YmxlVGFnLCBkb3VibGUp
OworICAgIGV4cGxpY2l0IEpTVmFsdWUoZG91YmxlKTsKKyAgICBleHBsaWNpdCBKU1ZhbHVlKGNo
YXIpOworICAgIGV4cGxpY2l0IEpTVmFsdWUodW5zaWduZWQgY2hhcik7CisgICAgZXhwbGljaXQg
SlNWYWx1ZShzaG9ydCk7CisgICAgZXhwbGljaXQgSlNWYWx1ZSh1bnNpZ25lZCBzaG9ydCk7Cisg
ICAgZXhwbGljaXQgSlNWYWx1ZShpbnQpOworICAgIGV4cGxpY2l0IEpTVmFsdWUodW5zaWduZWQp
OworICAgIGV4cGxpY2l0IEpTVmFsdWUobG9uZyk7CisgICAgZXhwbGljaXQgSlNWYWx1ZSh1bnNp
Z25lZCBsb25nKTsKKyAgICBleHBsaWNpdCBKU1ZhbHVlKGxvbmcgbG9uZyk7CisgICAgZXhwbGlj
aXQgSlNWYWx1ZSh1bnNpZ25lZCBsb25nIGxvbmcpOworCisgICAgb3BlcmF0b3IgYm9vbCgpIGNv
bnN0OworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBKU1ZhbHVlJiBvdGhlcikgY29uc3Q7Cisg
ICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEpTVmFsdWUmIG90aGVyKSBjb25zdDsKKworICAgIGJv
b2wgaXNJbnQzMigpIGNvbnN0OworICAgIGJvb2wgaXNVSW50MzIoKSBjb25zdDsKKyAgICBib29s
IGlzRG91YmxlKCkgY29uc3Q7CisgICAgYm9vbCBpc1RydWUoKSBjb25zdDsKKyAgICBib29sIGlz
RmFsc2UoKSBjb25zdDsKKworICAgIGludDMyX3QgYXNJbnQzMigpIGNvbnN0OworICAgIHVpbnQz
Ml90IGFzVUludDMyKCkgY29uc3Q7CisgICAgZG91YmxlIGFzRG91YmxlKCkgY29uc3Q7CisgICAg
Ym9vbCBhc0Jvb2xlYW4oKSBjb25zdDsKKyAgICBkb3VibGUgYXNOdW1iZXIoKSBjb25zdDsKKwor
ICAgIC8vIFF1ZXJ5aW5nIHRoZSB0eXBlLgorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OworICAg
IGJvb2wgaXNGdW5jdGlvbigpIGNvbnN0OworICAgIGJvb2wgaXNVbmRlZmluZWQoKSBjb25zdDsK
KyAgICBib29sIGlzTnVsbCgpIGNvbnN0OworICAgIGJvb2wgaXNVbmRlZmluZWRPck51bGwoKSBj
b25zdDsKKyAgICBib29sIGlzQm9vbGVhbigpIGNvbnN0OworICAgIGJvb2wgaXNOdW1iZXIoKSBj
b25zdDsKKyAgICBib29sIGlzU3RyaW5nKCkgY29uc3Q7CisgICAgYm9vbCBpc1ByaW1pdGl2ZSgp
IGNvbnN0OworICAgIGJvb2wgaXNHZXR0ZXJTZXR0ZXIoKSBjb25zdDsKKyAgICBib29sIGlzT2Jq
ZWN0KCkgY29uc3Q7CisgICAgYm9vbCBpbmhlcml0cyhjb25zdCBDbGFzc0luZm8qKSBjb25zdDsK
KyAgICAgICAgCisgICAgLy8gRXh0cmFjdGluZyB0aGUgdmFsdWUuCisgICAgYm9vbCBnZXRTdHJp
bmcoRXhlY1N0YXRlKiwgV1RGOjpTdHJpbmcmKSBjb25zdDsKKyAgICBXVEY6OlN0cmluZyBnZXRT
dHJpbmcoRXhlY1N0YXRlKikgY29uc3Q7IC8vIG51bGwgc3RyaW5nIGlmIG5vdCBhIHN0cmluZwor
ICAgIEpTT2JqZWN0KiBnZXRPYmplY3QoKSBjb25zdDsgLy8gMCBpZiBub3QgYW4gb2JqZWN0CisK
KyAgICAvLyBFeHRyYWN0aW5nIGludGVnZXIgdmFsdWVzLgorICAgIGJvb2wgZ2V0VUludDMyKHVp
bnQzMl90JikgY29uc3Q7CisgICAgICAgIAorICAgIC8vIEJhc2ljIGNvbnZlcnNpb25zLgorICAg
IEpTVmFsdWUgdG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSA9
IE5vUHJlZmVyZW5jZSkgY29uc3Q7CisgICAgYm9vbCBnZXRQcmltaXRpdmVOdW1iZXIoRXhlY1N0
YXRlKiwgZG91YmxlJiBudW1iZXIsIEpTVmFsdWUmKTsKKworICAgIGJvb2wgdG9Cb29sZWFuKEV4
ZWNTdGF0ZSopIGNvbnN0OworCisgICAgLy8gdG9OdW1iZXIgY29udmVyc2lvbiBpcyBleHBlY3Rl
ZCB0byBiZSBzaWRlIGVmZmVjdCBmcmVlIGlmIGFuIGV4Y2VwdGlvbiBoYXMKKyAgICAvLyBiZWVu
IHNldCBpbiB0aGUgRXhlY1N0YXRlIGFscmVhZHkuCisgICAgZG91YmxlIHRvTnVtYmVyKEV4ZWNT
dGF0ZSopIGNvbnN0OworICAgIEpTU3RyaW5nKiB0b1N0cmluZyhFeGVjU3RhdGUqKSBjb25zdDsK
KyAgICBXVEY6OlN0cmluZyB0b1dURlN0cmluZyhFeGVjU3RhdGUqKSBjb25zdDsKKyAgICBXVEY6
OlN0cmluZyB0b1dURlN0cmluZ0lubGluZShFeGVjU3RhdGUqKSBjb25zdDsKKyAgICBKU09iamVj
dCogdG9PYmplY3QoRXhlY1N0YXRlKikgY29uc3Q7CisgICAgSlNPYmplY3QqIHRvT2JqZWN0KEV4
ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CisKKyAgICAvLyBJbnRlZ2VyIGNvbnZl
cnNpb25zLgorICAgIEpTX0VYUE9SVF9QUklWQVRFIGRvdWJsZSB0b0ludGVnZXIoRXhlY1N0YXRl
KikgY29uc3Q7CisgICAgZG91YmxlIHRvSW50ZWdlclByZXNlcnZlTmFOKEV4ZWNTdGF0ZSopIGNv
bnN0OworICAgIGludDMyX3QgdG9JbnQzMihFeGVjU3RhdGUqKSBjb25zdDsKKyAgICB1aW50MzJf
dCB0b1VJbnQzMihFeGVjU3RhdGUqKSBjb25zdDsKKworICAgIC8vIEZsb2F0aW5nIHBvaW50IGNv
bnZlcnNpb25zICh0aGlzIGlzIGEgY29udmVuaWVuY2UgbWV0aG9kIGZvciB3ZWJjb3JlOworICAg
IC8vIHNpZ25sZSBwcmVjaXNpb24gZmxvYXQgaXMgbm90IGEgcmVwcmVzZW50YXRpb24gdXNlZCBp
biBKUyBvciBKU0MpLgorICAgIGZsb2F0IHRvRmxvYXQoRXhlY1N0YXRlKiBleGVjKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4odG9OdW1iZXIoZXhlYykpOyB9CisKKyAgICAvLyBP
YmplY3Qgb3BlcmF0aW9ucywgd2l0aCB0aGUgdG9PYmplY3Qgb3BlcmF0aW9uIGluY2x1ZGVkLgor
ICAgIEpTVmFsdWUgZ2V0KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSkgY29uc3Q7CisgICAgSlNW
YWx1ZSBnZXQoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKSBjb25zdDsK
KyAgICBKU1ZhbHVlIGdldChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpIGNvbnN0
OworICAgIEpTVmFsdWUgZ2V0KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90JikgY29uc3Q7CisgICAgdm9pZCBwdXQoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICB2b2lkIHB1dFRvUHJpbWl0aXZlKEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAg
dm9pZCBwdXRUb1ByaW1pdGl2ZUJ5SW5kZXgoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAgICB2b2lkIHB1dEJ5SW5kZXgoRXhl
Y1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93
KTsKKworICAgIEpTT2JqZWN0KiB0b1RoaXNPYmplY3QoRXhlY1N0YXRlKikgY29uc3Q7CisKKyAg
ICBzdGF0aWMgYm9vbCBlcXVhbChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdjEsIEpTVmFsdWUg
djIpOworICAgIHN0YXRpYyBib29sIGVxdWFsU2xvd0Nhc2UoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIHYxLCBKU1ZhbHVlIHYyKTsKKyAgICBzdGF0aWMgYm9vbCBlcXVhbFNsb3dDYXNlSW5saW5l
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2Mik7CisgICAgc3RhdGljIGJv
b2wgc3RyaWN0RXF1YWwoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKTsK
KyAgICBzdGF0aWMgYm9vbCBzdHJpY3RFcXVhbFNsb3dDYXNlKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSB2MSwgSlNWYWx1ZSB2Mik7CisgICAgc3RhdGljIGJvb2wgc3RyaWN0RXF1YWxTbG93Q2Fz
ZUlubGluZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpOworCisgICAg
Ym9vbCBpc0NlbGwoKSBjb25zdDsKKyAgICBKU0NlbGwqIGFzQ2VsbCgpIGNvbnN0OworICAgIEpT
X0VYUE9SVF9QUklWQVRFIGJvb2wgaXNWYWxpZENhbGxlZSgpOworICAgICAgICAKKyAgICBKU1Zh
bHVlIHN0cnVjdHVyZU9yVW5kZWZpbmVkKCkgY29uc3Q7CisKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKKworICAgIEpTX0VYUE9SVF9QUklWQVRF
IEpTT2JqZWN0KiBzeW50aGVzaXplUHJvdG90eXBlKEV4ZWNTdGF0ZSopIGNvbnN0OworCitwcml2
YXRlOgorICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBKU1ZhbHVlKFdyaXRlQmFycmllckJhc2U8VD4p
OworCisgICAgZW51bSBIYXNoVGFibGVEZWxldGVkVmFsdWVUYWcgeyBIYXNoVGFibGVEZWxldGVk
VmFsdWUgfTsKKyAgICBKU1ZhbHVlKEhhc2hUYWJsZURlbGV0ZWRWYWx1ZVRhZyk7CisKKyAgICBp
bmxpbmUgY29uc3QgSlNWYWx1ZSBhc1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0KKyAg
ICBKU19FWFBPUlRfUFJJVkFURSBkb3VibGUgdG9OdW1iZXJTbG93Q2FzZShFeGVjU3RhdGUqKSBj
b25zdDsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU1N0cmluZyogdG9TdHJpbmdTbG93Q2FzZShF
eGVjU3RhdGUqKSBjb25zdDsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBXVEY6OlN0cmluZyB0b1dU
RlN0cmluZ1Nsb3dDYXNlKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRF
IEpTT2JqZWN0KiB0b09iamVjdFNsb3dDYXNlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0Kikg
Y29uc3Q7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRvVGhpc09iamVjdFNsb3dD
YXNlKEV4ZWNTdGF0ZSopIGNvbnN0OworCisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAvKgor
ICAgICAqIE9uIDMyLWJpdCBwbGF0Zm9ybXMgVVNFKEpTVkFMVUUzMl82NCkgc2hvdWxkIGJlIGRl
ZmluZWQsIGFuZCB3ZSB1c2UgYSBOYU4tZW5jb2RlZAorICAgICAqIGZvcm0gZm9yIGltbWVkaWF0
ZXMuCisgICAgICoKKyAgICAgKiBUaGUgZW5jb2RpbmcgbWFrZXMgdXNlIG9mIHVudXNlZCBOYU4g
c3BhY2UgaW4gdGhlIElFRUU3NTQgcmVwcmVzZW50YXRpb24uICBBbnkgdmFsdWUKKyAgICAgKiB3
aXRoIHRoZSB0b3AgMTMgYml0cyBzZXQgcmVwcmVzZW50cyBhIFFOYU4gKHdpdGggdGhlIHNpZ24g
Yml0IHNldCkuICBRTmFOIHZhbHVlcworICAgICAqIGNhbiBlbmNvZGUgYSA1MS1iaXQgcGF5bG9h
ZC4gIEhhcmR3YXJlIHByb2R1Y2VkIGFuZCBDLWxpYnJhcnkgcGF5bG9hZHMgdHlwaWNhbGx5Cisg
ICAgICogaGF2ZSBhIHBheWxvYWQgb2YgemVyby4gIFdlIGFzc3VtZSB0aGF0IG5vbi16ZXJvIHBh
eWxvYWRzIGFyZSBhdmFpbGFibGUgdG8gZW5jb2RlCisgICAgICogcG9pbnRlciBhbmQgaW50ZWdl
ciB2YWx1ZXMuICBTaW5jZSBhbnkgNjQtYml0IGJpdCBwYXR0ZXJuIHdoZXJlIHRoZSB0b3AgMTUg
Yml0cyBhcmUKKyAgICAgKiBhbGwgc2V0IHJlcHJlc2VudHMgYSBOYU4gd2l0aCBhIG5vbi16ZXJv
IHBheWxvYWQsIHdlIGNhbiB1c2UgdGhpcyBzcGFjZSBpbiB0aGUgTmFOCisgICAgICogcmFuZ2Vz
IHRvIGVuY29kZSBvdGhlciB2YWx1ZXMgKGhvd2V2ZXIgdGhlcmUgYXJlIGFsc28gb3RoZXIgcmFu
Z2VzIG9mIE5hTiBzcGFjZSB0aGF0CisgICAgICogY291bGQgaGF2ZSBiZWVuIHNlbGVjdGVkKS4K
KyAgICAgKgorICAgICAqIEZvciBKU1ZhbHVlcyB0aGF0IGRvIG5vdCBjb250YWluIGEgZG91Ymxl
IHZhbHVlLCB0aGUgaGlnaCAzMiBiaXRzIGNvbnRhaW4gdGhlIHRhZworICAgICAqIHZhbHVlcyBs
aXN0ZWQgaW4gdGhlIGVudW1zIGJlbG93LCB3aGljaCBhbGwgY29ycmVzcG9uZCB0byBOYU4tc3Bh
Y2UuIEluIHRoZSBjYXNlIG9mCisgICAgICogY2VsbCwgaW50ZWdlciBhbmQgYm9vbCB2YWx1ZXMg
dGhlIGxvd2VyIDMyIGJpdHMgKHRoZSAncGF5bG9hZCcpIGNvbnRhaW4gdGhlIHBvaW50ZXIKKyAg
ICAgKiBpbnRlZ2VyIG9yIGJvb2xlYW4gdmFsdWU7IGluIHRoZSBjYXNlIG9mIGFsbCBvdGhlciB0
YWdzIHRoZSBwYXlsb2FkIGlzIDAuCisgICAgICovCisgICAgdWludDMyX3QgdGFnKCkgY29uc3Q7
CisgICAgaW50MzJfdCBwYXlsb2FkKCkgY29uc3Q7CisKKyNpZiBFTkFCTEUoTExJTlRfQ19MT09Q
KQorICAgIC8vIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBieSB0aGUgTExJbnQgQyBMb29wIGlu
dGVycHJldGVyIHdobyBuZWVkcworICAgIC8vIHN5bnRoZXNpemUgSlNWYWx1ZSBmcm9tIGl0cyAi
cmVnaXN0ZXIicyBob2xkaW5nIHRhZyBhbmQgcGF5bG9hZAorICAgIC8vIHZhbHVlcy4KKyAgICBl
eHBsaWNpdCBKU1ZhbHVlKGludDMyX3QgdGFnLCBpbnQzMl90IHBheWxvYWQpOworI2VuZGlmCisK
KyNlbGlmIFVTRShKU1ZBTFVFNjQpCisgICAgLyoKKyAgICAgKiBPbiA2NC1iaXQgcGxhdGZvcm1z
IFVTRShKU1ZBTFVFNjQpIHNob3VsZCBiZSBkZWZpbmVkLCBhbmQgd2UgdXNlIGEgTmFOLWVuY29k
ZWQKKyAgICAgKiBmb3JtIGZvciBpbW1lZGlhdGVzLgorICAgICAqCisgICAgICogVGhlIGVuY29k
aW5nIG1ha2VzIHVzZSBvZiB1bnVzZWQgTmFOIHNwYWNlIGluIHRoZSBJRUVFNzU0IHJlcHJlc2Vu
dGF0aW9uLiAgQW55IHZhbHVlCisgICAgICogd2l0aCB0aGUgdG9wIDEzIGJpdHMgc2V0IHJlcHJl
c2VudHMgYSBRTmFOICh3aXRoIHRoZSBzaWduIGJpdCBzZXQpLiAgUU5hTiB2YWx1ZXMKKyAgICAg
KiBjYW4gZW5jb2RlIGEgNTEtYml0IHBheWxvYWQuICBIYXJkd2FyZSBwcm9kdWNlZCBhbmQgQy1s
aWJyYXJ5IHBheWxvYWRzIHR5cGljYWxseQorICAgICAqIGhhdmUgYSBwYXlsb2FkIG9mIHplcm8u
ICBXZSBhc3N1bWUgdGhhdCBub24temVybyBwYXlsb2FkcyBhcmUgYXZhaWxhYmxlIHRvIGVuY29k
ZQorICAgICAqIHBvaW50ZXIgYW5kIGludGVnZXIgdmFsdWVzLiAgU2luY2UgYW55IDY0LWJpdCBi
aXQgcGF0dGVybiB3aGVyZSB0aGUgdG9wIDE1IGJpdHMgYXJlCisgICAgICogYWxsIHNldCByZXBy
ZXNlbnRzIGEgTmFOIHdpdGggYSBub24temVybyBwYXlsb2FkLCB3ZSBjYW4gdXNlIHRoaXMgc3Bh
Y2UgaW4gdGhlIE5hTgorICAgICAqIHJhbmdlcyB0byBlbmNvZGUgb3RoZXIgdmFsdWVzIChob3dl
dmVyIHRoZXJlIGFyZSBhbHNvIG90aGVyIHJhbmdlcyBvZiBOYU4gc3BhY2UgdGhhdAorICAgICAq
IGNvdWxkIGhhdmUgYmVlbiBzZWxlY3RlZCkuCisgICAgICoKKyAgICAgKiBUaGlzIHJhbmdlIG9m
IE5hTiBzcGFjZSBpcyByZXByZXNlbnRlZCBieSA2NC1iaXQgbnVtYmVycyBiZWdpbmluZyB3aXRo
IHRoZSAxNi1iaXQKKyAgICAgKiBoZXggcGF0dGVybnMgMHhGRkZFIGFuZCAweEZGRkYgLSB3ZSBy
ZWx5IG9uIHRoZSBmYWN0IHRoYXQgbm8gdmFsaWQgZG91YmxlLXByZWNpc2lvbgorICAgICAqIG51
bWJlcnMgd2lsbCBiZWdpbiBmYWxsIGluIHRoZXNlIHJhbmdlcy4KKyAgICAgKgorICAgICAqIFRo
ZSB0b3AgMTYtYml0cyBkZW5vdGUgdGhlIHR5cGUgb2YgdGhlIGVuY29kZWQgSlNWYWx1ZToKKyAg
ICAgKgorICAgICAqICAgICBQb2ludGVyIHsgIDAwMDA6UFBQUDpQUFBQOlBQUFAKKyAgICAgKiAg
ICAgICAgICAgICAgLyAwMDAxOioqKio6KioqKjoqKioqCisgICAgICogICAgIERvdWJsZSAgeyAg
ICAgICAgIC4uLgorICAgICAqICAgICAgICAgICAgICBcIEZGRkU6KioqKjoqKioqOioqKioKKyAg
ICAgKiAgICAgSW50ZWdlciB7ICBGRkZGOjAwMDA6SUlJSTpJSUlJCisgICAgICoKKyAgICAgKiBU
aGUgc2NoZW1lIHdlIGhhdmUgaW1wbGVtZW50ZWQgZW5jb2RlcyBkb3VibGUgcHJlY2lzaW9uIHZh
bHVlcyBieSBwZXJmb3JtaW5nIGEKKyAgICAgKiA2NC1iaXQgaW50ZWdlciBhZGRpdGlvbiBvZiB0
aGUgdmFsdWUgMl40OCB0byB0aGUgbnVtYmVyLiBBZnRlciB0aGlzIG1hbmlwdWxhdGlvbgorICAg
ICAqIG5vIGVuY29kZWQgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSB3aWxsIGJlZ2luIHdpdGggdGhl
IHBhdHRlcm4gMHgwMDAwIG9yIDB4RkZGRi4KKyAgICAgKiBWYWx1ZXMgbXVzdCBiZSBkZWNvZGVk
IGJ5IHJldmVyc2luZyB0aGlzIG9wZXJhdGlvbiBiZWZvcmUgc3Vic2VxdWVudCBmbG9hdGluZyBw
b2ludAorICAgICAqIG9wZXJhdGlvbnMgbXkgYmUgcGVmb3JtZWQuCisgICAgICoKKyAgICAgKiAz
Mi1iaXQgc2lnbmVkIGludGVnZXJzIGFyZSBtYXJrZWQgd2l0aCB0aGUgMTYtYml0IHRhZyAweEZG
RkYuCisgICAgICoKKyAgICAgKiBUaGUgdGFnIDB4MDAwMCBkZW5vdGVzIGEgcG9pbnRlciwgb3Ig
YW5vdGhlciBmb3JtIG9mIHRhZ2dlZCBpbW1lZGlhdGUuIEJvb2xlYW4sCisgICAgICogbnVsbCBh
bmQgdW5kZWZpbmVkIHZhbHVlcyBhcmUgcmVwcmVzZW50ZWQgYnkgc3BlY2lmaWMsIGludmFsaWQg
cG9pbnRlciB2YWx1ZXM6CisgICAgICoKKyAgICAgKiAgICAgRmFsc2U6ICAgICAweDA2CisgICAg
ICogICAgIFRydWU6ICAgICAgMHgwNworICAgICAqICAgICBVbmRlZmluZWQ6IDB4MGEKKyAgICAg
KiAgICAgTnVsbDogICAgICAweDAyCisgICAgICoKKyAgICAgKiBUaGVzZSB2YWx1ZXMgaGF2ZSB0
aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6CisgICAgICogLSBCaXQgMSAoVGFnQml0VHlwZU90aGVy
KSBpcyBzZXQgZm9yIGFsbCBmb3VyIHZhbHVlcywgYWxsb3dpbmcgcmVhbCBwb2ludGVycyB0byBi
ZQorICAgICAqICAgcXVpY2tseSBkaXN0aW5ndWlzaGVkIGZyb20gYWxsIGltbWVkaWF0ZSB2YWx1
ZXMsIGluY2x1ZGluZyB0aGVzZSBpbnZhbGlkIHBvaW50ZXJzLgorICAgICAqIC0gV2l0aCBiaXQg
MyBpcyBtYXNrZWQgb3V0IChUYWdCaXRVbmRlZmluZWQpIFVuZGVmaW5lZCBhbmQgTnVsbCBzaGFy
ZSB0aGUKKyAgICAgKiAgIHNhbWUgdmFsdWUsIGFsbG93aW5nIG51bGwgJiB1bmRlZmluZWQgdG8g
YmUgcXVpY2tseSBkZXRlY3RlZC4KKyAgICAgKgorICAgICAqIE5vIHZhbGlkIEpTVmFsdWUgd2ls
bCBoYXZlIHRoZSBiaXQgcGF0dGVybiAweDAsIHRoaXMgaXMgdXNlZCB0byByZXByZXNlbnQgYXJy
YXkKKyAgICAgKiBob2xlcywgYW5kIGFzIGEgQysrICdubyB2YWx1ZScgcmVzdWx0IChlLmcuIEpT
VmFsdWUoKSBoYXMgYW4gaW50ZXJuYWwgdmFsdWUgb2YgMCkuCisgICAgICovCisKKyAgICAvLyBU
aGVzZSB2YWx1ZXMgYXJlICNkZWZpbmVzIHNpbmNlIHVzaW5nIHN0YXRpYyBjb25zdCBpbnRlZ2Vy
cyBoZXJlIGlzIGEgfjElIHJlZ3Jlc3Npb24hCisKKyAgICAvLyBUaGlzIHZhbHVlIGlzIDJeNDgs
IHVzZWQgdG8gZW5jb2RlIGRvdWJsZXMgc3VjaCB0aGF0IHRoZSBlbmNvZGVkIHZhbHVlIHdpbGwg
YmVnaW4KKyAgICAvLyB3aXRoIGEgMTYtYml0IHBhdHRlcm4gd2l0aGluIHRoZSByYW5nZSAweDAw
MDEuLjB4RkZGRS4KKyAgICAjZGVmaW5lIERvdWJsZUVuY29kZU9mZnNldCAweDEwMDAwMDAwMDAw
MDBsbAorICAgIC8vIElmIGFsbCBiaXRzIGluIHRoZSBtYXNrIGFyZSBzZXQsIHRoaXMgaW5kaWNh
dGVzIGFuIGludGVnZXIgbnVtYmVyLAorICAgIC8vIGlmIGFueSBidXQgbm90IGFsbCBhcmUgc2V0
IHRoaXMgdmFsdWUgaXMgYSBkb3VibGUgcHJlY2lzaW9uIG51bWJlci4KKyAgICAjZGVmaW5lIFRh
Z1R5cGVOdW1iZXIgMHhmZmZmMDAwMDAwMDAwMDAwbGwKKworICAgIC8vIEFsbCBub24tbnVtZXJp
YyAoYm9vbCwgbnVsbCwgdW5kZWZpbmVkKSBpbW1lZGlhdGVzIGhhdmUgYml0IDIgc2V0LgorICAg
ICNkZWZpbmUgVGFnQml0VHlwZU90aGVyIDB4MmxsCisgICAgI2RlZmluZSBUYWdCaXRCb29sICAg
ICAgMHg0bGwKKyAgICAjZGVmaW5lIFRhZ0JpdFVuZGVmaW5lZCAweDhsbAorICAgIC8vIENvbWJp
bmVkIGludGVnZXIgdmFsdWUgZm9yIG5vbi1udW1lcmljIGltbWVkaWF0ZXMuCisgICAgI2RlZmlu
ZSBWYWx1ZUZhbHNlICAgICAoVGFnQml0VHlwZU90aGVyIHwgVGFnQml0Qm9vbCB8IGZhbHNlKQor
ICAgICNkZWZpbmUgVmFsdWVUcnVlICAgICAgKFRhZ0JpdFR5cGVPdGhlciB8IFRhZ0JpdEJvb2wg
fCB0cnVlKQorICAgICNkZWZpbmUgVmFsdWVVbmRlZmluZWQgKFRhZ0JpdFR5cGVPdGhlciB8IFRh
Z0JpdFVuZGVmaW5lZCkKKyAgICAjZGVmaW5lIFZhbHVlTnVsbCAgICAgIChUYWdCaXRUeXBlT3Ro
ZXIpCisKKyAgICAvLyBUYWdNYXNrIGlzIHVzZWQgdG8gY2hlY2sgZm9yIGFsbCB0eXBlcyBvZiBp
bW1lZGlhdGUgdmFsdWVzIChlaXRoZXIgbnVtYmVyIG9yICdvdGhlcicpLgorICAgICNkZWZpbmUg
VGFnTWFzayAoVGFnVHlwZU51bWJlciB8IFRhZ0JpdFR5cGVPdGhlcikKKworICAgIC8vIFRoZXNl
IHNwZWNpYWwgdmFsdWVzIGFyZSBuZXZlciB2aXNpYmxlIHRvIEphdmFTY3JpcHQgY29kZTsgRW1w
dHkgaXMgdXNlZCB0byByZXByZXNlbnQKKyAgICAvLyBBcnJheSBob2xlcywgYW5kIGZvciB1bmlu
aXRpYWxpemVkIEpTVmFsdWVzLiBEZWxldGVkIGlzIHVzZWQgaW4gaGFzaCB0YWJsZSBjb2RlLgor
ICAgIC8vIFRoZXNlIHZhbHVlcyB3b3VsZCBtYXAgdG8gY2VsbCB0eXBlcyBpbiB0aGUgSlNWYWx1
ZSBlbmNvZGluZywgYnV0IG5vdCB2YWxpZCBHQyBjZWxsCisgICAgLy8gcG9pbnRlciBzaG91bGQg
aGF2ZSBlaXRoZXIgb2YgdGhlc2UgdmFsdWVzIChFbXB0eSBpcyBudWxsLCBkZWxldGVkIGlzIGF0
IGFuIGludmFsaWQKKyAgICAvLyBhbGlnbm1lbnQgZm9yIGEgR0MgY2VsbCwgYW5kIGluIHRoZSB6
ZXJvIHBhZ2UpLgorICAgICNkZWZpbmUgVmFsdWVFbXB0eSAgIDB4MGxsCisgICAgI2RlZmluZSBW
YWx1ZURlbGV0ZWQgMHg0bGwKKyNlbmRpZgorCisgICAgRW5jb2RlZFZhbHVlRGVzY3JpcHRvciB1
OworfTsKKwordHlwZWRlZiBJbnRIYXNoPEVuY29kZWRKU1ZhbHVlPiBFbmNvZGVkSlNWYWx1ZUhh
c2g7CisKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQorc3RydWN0IEVuY29kZWRKU1ZhbHVlSGFzaFRy
YWl0cyA6IEhhc2hUcmFpdHM8RW5jb2RlZEpTVmFsdWU+IHsKKyAgICBzdGF0aWMgY29uc3QgYm9v
bCBlbXB0eVZhbHVlSXNaZXJvID0gZmFsc2U7CisgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIGVt
cHR5VmFsdWUoKSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsgfQorICAgIHN0
YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShFbmNvZGVkSlNWYWx1ZSYgc2xvdCkgeyBz
bG90ID0gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoSlNWYWx1ZTo6SGFzaFRhYmxlRGVsZXRlZFZh
bHVlKSk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShFbmNvZGVkSlNWYWx1ZSB2
YWx1ZSkgeyByZXR1cm4gdmFsdWUgPT0gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoSlNWYWx1ZTo6
SGFzaFRhYmxlRGVsZXRlZFZhbHVlKSk7IH0KK307CisjZWxzZQorc3RydWN0IEVuY29kZWRKU1Zh
bHVlSGFzaFRyYWl0cyA6IEhhc2hUcmFpdHM8RW5jb2RlZEpTVmFsdWU+IHsKKyAgICBzdGF0aWMg
dm9pZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoRW5jb2RlZEpTVmFsdWUmIHNsb3QpIHsgc2xvdCA9
IEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKEpTVmFsdWU6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkp
OyB9CisgICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUoRW5jb2RlZEpTVmFsdWUgdmFsdWUp
IHsgcmV0dXJuIHZhbHVlID09IEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKEpTVmFsdWU6Okhhc2hU
YWJsZURlbGV0ZWRWYWx1ZSkpOyB9Cit9OworI2VuZGlmCisKK3R5cGVkZWYgSGFzaE1hcDxFbmNv
ZGVkSlNWYWx1ZSwgdW5zaWduZWQsIEVuY29kZWRKU1ZhbHVlSGFzaCwgRW5jb2RlZEpTVmFsdWVI
YXNoVHJhaXRzPiBKU1ZhbHVlTWFwOworCisvLyBTdGFuZC1hbG9uZSBoZWxwZXIgZnVuY3Rpb25z
LgoraW5saW5lIEpTVmFsdWUganNOdWxsKCkKK3sKKyAgICByZXR1cm4gSlNWYWx1ZShKU1ZhbHVl
OjpKU051bGwpOworfQorCitpbmxpbmUgSlNWYWx1ZSBqc1VuZGVmaW5lZCgpCit7CisgICAgcmV0
dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNVbmRlZmluZWQpOworfQorCitpbmxpbmUgSlNWYWx1ZSBq
c0Jvb2xlYW4oYm9vbCBiKQoreworICAgIHJldHVybiBiID8gSlNWYWx1ZShKU1ZhbHVlOjpKU1Ry
dWUpIDogSlNWYWx1ZShKU1ZhbHVlOjpKU0ZhbHNlKTsKK30KKworQUxXQVlTX0lOTElORSBKU1Zh
bHVlIGpzRG91YmxlTnVtYmVyKGRvdWJsZSBkKQoreworICAgIEFTU0VSVChKU1ZhbHVlKEpTVmFs
dWU6OkVuY29kZUFzRG91YmxlLCBkKS5pc051bWJlcigpKTsKKyAgICByZXR1cm4gSlNWYWx1ZShK
U1ZhbHVlOjpFbmNvZGVBc0RvdWJsZSwgZCk7Cit9CisKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBq
c051bWJlcihkb3VibGUgZCkKK3sKKyAgICBBU1NFUlQoSlNWYWx1ZShkKS5pc051bWJlcigpKTsK
KyAgICByZXR1cm4gSlNWYWx1ZShkKTsKK30KKworQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzTnVt
YmVyKGNoYXIgaSkKK3sKKyAgICByZXR1cm4gSlNWYWx1ZShpKTsKK30KKworQUxXQVlTX0lOTElO
RSBKU1ZhbHVlIGpzTnVtYmVyKHVuc2lnbmVkIGNoYXIgaSkKK3sKKyAgICByZXR1cm4gSlNWYWx1
ZShpKTsKK30KKworQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzTnVtYmVyKHNob3J0IGkpCit7Cisg
ICAgcmV0dXJuIEpTVmFsdWUoaSk7Cit9CisKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc051bWJl
cih1bnNpZ25lZCBzaG9ydCBpKQoreworICAgIHJldHVybiBKU1ZhbHVlKGkpOworfQorCitBTFdB
WVNfSU5MSU5FIEpTVmFsdWUganNOdW1iZXIoaW50IGkpCit7CisgICAgcmV0dXJuIEpTVmFsdWUo
aSk7Cit9CisKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc051bWJlcih1bnNpZ25lZCBpKQorewor
ICAgIHJldHVybiBKU1ZhbHVlKGkpOworfQorCitBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNOdW1i
ZXIobG9uZyBpKQoreworICAgIHJldHVybiBKU1ZhbHVlKGkpOworfQorCitBTFdBWVNfSU5MSU5F
IEpTVmFsdWUganNOdW1iZXIodW5zaWduZWQgbG9uZyBpKQoreworICAgIHJldHVybiBKU1ZhbHVl
KGkpOworfQorCitBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNOdW1iZXIobG9uZyBsb25nIGkpCit7
CisgICAgcmV0dXJuIEpTVmFsdWUoaSk7Cit9CisKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc051
bWJlcih1bnNpZ25lZCBsb25nIGxvbmcgaSkKK3sKKyAgICByZXR1cm4gSlNWYWx1ZShpKTsKK30K
KworaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBKU1ZhbHVlIGEsIGNvbnN0IEpTQ2VsbCog
YikgeyByZXR1cm4gYSA9PSBKU1ZhbHVlKGIpOyB9CitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IEpTQ2VsbCogYSwgY29uc3QgSlNWYWx1ZSBiKSB7IHJldHVybiBKU1ZhbHVlKGEpID09IGI7
IH0KKworaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBKU1ZhbHVlIGEsIGNvbnN0IEpTQ2Vs
bCogYikgeyByZXR1cm4gYSAhPSBKU1ZhbHVlKGIpOyB9CitpbmxpbmUgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IEpTQ2VsbCogYSwgY29uc3QgSlNWYWx1ZSBiKSB7IHJldHVybiBKU1ZhbHVlKGEpICE9
IGI7IH0KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBKU1ZhbHVlX2gKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgJKHJldmlzaW9uIDE0
MDE5NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAkod29y
a2luZyBjb3B5KQpAQCAtMjAsOCArMjAsOCBAQAogICoKICAqLwogCi0jaWZuZGVmIEpTVmFsdWVf
aAotI2RlZmluZSBKU1ZhbHVlX2gKKyNpZm5kZWYgSlNDSlNWYWx1ZV9oCisjZGVmaW5lIEpTQ0pT
VmFsdWVfaAogCiAjaW5jbHVkZSA8bWF0aC5oPgogI2luY2x1ZGUgPHN0ZGRlZi5oPiAvLyBmb3Ig
c2l6ZV90CkBAIC0yNDUsMTIgKzI0NSwxMiBAQCBwdWJsaWM6CiAKICAgICBKU09iamVjdCogdG9U
aGlzT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0OwogCi0gICAgc3RhdGljIGJvb2wgZXF1YWwoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKTsKLSAgICBzdGF0aWMgYm9vbCBl
cXVhbFNsb3dDYXNlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2Mik7Ci0g
ICAgc3RhdGljIGJvb2wgZXF1YWxTbG93Q2FzZUlubGluZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgdjEsIEpTVmFsdWUgdjIpOwotICAgIHN0YXRpYyBib29sIHN0cmljdEVxdWFsKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2Mik7Ci0gICAgc3RhdGljIGJvb2wgc3RyaWN0
RXF1YWxTbG93Q2FzZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpOwot
ICAgIHN0YXRpYyBib29sIHN0cmljdEVxdWFsU2xvd0Nhc2VJbmxpbmUoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKTsKKyAgICBzdGF0aWMgYm9vbCBlcXVhbChFeGVjU3Rh
dGUqLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKTsKKyAgICBzdGF0aWMgYm9vbCBlcXVhbFNsb3dD
YXNlKEV4ZWNTdGF0ZSosIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpOworICAgIHN0YXRpYyBib29s
IGVxdWFsU2xvd0Nhc2VJbmxpbmUoRXhlY1N0YXRlKiwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2Mik7
CisgICAgc3RhdGljIGJvb2wgc3RyaWN0RXF1YWwoRXhlY1N0YXRlKiwgSlNWYWx1ZSB2MSwgSlNW
YWx1ZSB2Mik7CisgICAgc3RhdGljIGJvb2wgc3RyaWN0RXF1YWxTbG93Q2FzZShFeGVjU3RhdGUq
LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKTsKKyAgICBzdGF0aWMgYm9vbCBzdHJpY3RFcXVhbFNs
b3dDYXNlSW5saW5lKEV4ZWNTdGF0ZSosIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpOwogCiAgICAg
Ym9vbCBpc0NlbGwoKSBjb25zdDsKICAgICBKU0NlbGwqIGFzQ2VsbCgpIGNvbnN0OwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5o
CShyZXZpc2lvbiAxNDAxOTYpCShmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
VmFsdWVJbmxpbmVzLmg6MTQwMTk2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDSlNWYWx1ZUlubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc5OSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVm
IEpTVmFsdWVJbmxpbmVzX2gKKyNkZWZpbmUgSlNWYWx1ZUlubGluZXNfaAorCisjaW5jbHVkZSAi
SW50ZXJuYWxGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRl
ICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNWYWx1ZS5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworQUxXQVlTX0lOTElORSBpbnQzMl90IEpTVmFsdWU6OnRvSW50MzIoRXhlY1N0YXRlKiBleGVj
KSBjb25zdAoreworICAgIGlmIChpc0ludDMyKCkpCisgICAgICAgIHJldHVybiBhc0ludDMyKCk7
CisgICAgcmV0dXJuIEpTQzo6dG9JbnQzMih0b051bWJlcihleGVjKSk7Cit9CisKK2lubGluZSB1
aW50MzJfdCBKU1ZhbHVlOjp0b1VJbnQzMihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Cit7CisgICAg
Ly8gU2VlIGNvbW1lbnQgb24gSlNDOjp0b1VJbnQzMiwgYWJvdmUuCisgICAgcmV0dXJuIHRvSW50
MzIoZXhlYyk7Cit9CisKK2lubGluZSBib29sIEpTVmFsdWU6OmlzVUludDMyKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gaXNJbnQzMigpICYmIGFzSW50MzIoKSA+PSAwOworfQorCitpbmxpbmUgdWlu
dDMyX3QgSlNWYWx1ZTo6YXNVSW50MzIoKSBjb25zdAoreworICAgIEFTU0VSVChpc1VJbnQzMigp
KTsKKyAgICByZXR1cm4gYXNJbnQzMigpOworfQorCitpbmxpbmUgZG91YmxlIEpTVmFsdWU6OmFz
TnVtYmVyKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNOdW1iZXIoKSk7CisgICAgcmV0dXJuIGlz
SW50MzIoKSA/IGFzSW50MzIoKSA6IGFzRG91YmxlKCk7Cit9CisKK2lubGluZSBKU1ZhbHVlIGpz
TmFOKCkKK3sKKyAgICByZXR1cm4gSlNWYWx1ZShRTmFOKTsKK30KKworaW5saW5lIEpTVmFsdWU6
OkpTVmFsdWUoY2hhciBpKQoreworICAgICp0aGlzID0gSlNWYWx1ZShzdGF0aWNfY2FzdDxpbnQz
Ml90PihpKSk7Cit9CisKK2lubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKHVuc2lnbmVkIGNoYXIgaSkK
K3sKKyAgICAqdGhpcyA9IEpTVmFsdWUoc3RhdGljX2Nhc3Q8aW50MzJfdD4oaSkpOworfQorCitp
bmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShzaG9ydCBpKQoreworICAgICp0aGlzID0gSlNWYWx1ZShz
dGF0aWNfY2FzdDxpbnQzMl90PihpKSk7Cit9CisKK2lubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKHVu
c2lnbmVkIHNob3J0IGkpCit7CisgICAgKnRoaXMgPSBKU1ZhbHVlKHN0YXRpY19jYXN0PGludDMy
X3Q+KGkpKTsKK30KKworaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUodW5zaWduZWQgaSkKK3sKKyAg
ICBpZiAoc3RhdGljX2Nhc3Q8aW50MzJfdD4oaSkgPCAwKSB7CisgICAgICAgICp0aGlzID0gSlNW
YWx1ZShFbmNvZGVBc0RvdWJsZSwgc3RhdGljX2Nhc3Q8ZG91YmxlPihpKSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgKnRoaXMgPSBKU1ZhbHVlKHN0YXRpY19jYXN0PGludDMyX3Q+KGkp
KTsKK30KKworaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUobG9uZyBpKQoreworICAgIGlmIChzdGF0
aWNfY2FzdDxpbnQzMl90PihpKSAhPSBpKSB7CisgICAgICAgICp0aGlzID0gSlNWYWx1ZShFbmNv
ZGVBc0RvdWJsZSwgc3RhdGljX2Nhc3Q8ZG91YmxlPihpKSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgKnRoaXMgPSBKU1ZhbHVlKHN0YXRpY19jYXN0PGludDMyX3Q+KGkpKTsKK30KKwor
aW5saW5lIEpTVmFsdWU6OkpTVmFsdWUodW5zaWduZWQgbG9uZyBpKQoreworICAgIGlmIChzdGF0
aWNfY2FzdDx1aW50MzJfdD4oaSkgIT0gaSkgeworICAgICAgICAqdGhpcyA9IEpTVmFsdWUoRW5j
b2RlQXNEb3VibGUsIHN0YXRpY19jYXN0PGRvdWJsZT4oaSkpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgICp0aGlzID0gSlNWYWx1ZShzdGF0aWNfY2FzdDx1aW50MzJfdD4oaSkpOworfQor
CitpbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShsb25nIGxvbmcgaSkKK3sKKyAgICBpZiAoc3RhdGlj
X2Nhc3Q8aW50MzJfdD4oaSkgIT0gaSkgeworICAgICAgICAqdGhpcyA9IEpTVmFsdWUoRW5jb2Rl
QXNEb3VibGUsIHN0YXRpY19jYXN0PGRvdWJsZT4oaSkpOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgICp0aGlzID0gSlNWYWx1ZShzdGF0aWNfY2FzdDxpbnQzMl90PihpKSk7Cit9CisKK2lu
bGluZSBKU1ZhbHVlOjpKU1ZhbHVlKHVuc2lnbmVkIGxvbmcgbG9uZyBpKQoreworICAgIGlmIChz
dGF0aWNfY2FzdDx1aW50MzJfdD4oaSkgIT0gaSkgeworICAgICAgICAqdGhpcyA9IEpTVmFsdWUo
RW5jb2RlQXNEb3VibGUsIHN0YXRpY19jYXN0PGRvdWJsZT4oaSkpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgICp0aGlzID0gSlNWYWx1ZShzdGF0aWNfY2FzdDx1aW50MzJfdD4oaSkpOwor
fQorCitpbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShkb3VibGUgZCkKK3sKKyAgICBjb25zdCBpbnQz
Ml90IGFzSW50MzIgPSBzdGF0aWNfY2FzdDxpbnQzMl90PihkKTsKKyAgICBpZiAoYXNJbnQzMiAh
PSBkIHx8ICghYXNJbnQzMiAmJiBzaWduYml0KGQpKSkgeyAvLyB0cnVlIGZvciAtMC4wCisgICAg
ICAgICp0aGlzID0gSlNWYWx1ZShFbmNvZGVBc0RvdWJsZSwgZCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgKnRoaXMgPSBKU1ZhbHVlKHN0YXRpY19jYXN0PGludDMyX3Q+KGQpKTsKK30K
KworaW5saW5lIEVuY29kZWRKU1ZhbHVlIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlIHZhbHVlKQor
eworICAgIHJldHVybiB2YWx1ZS51LmFzSW50NjQ7Cit9CisKK2lubGluZSBKU1ZhbHVlIEpTVmFs
dWU6OmRlY29kZShFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkSlNWYWx1ZSkKK3sKKyAgICBKU1ZhbHVl
IHY7CisgICAgdi51LmFzSW50NjQgPSBlbmNvZGVkSlNWYWx1ZTsKKyAgICByZXR1cm4gdjsKK30K
KworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCitpbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZSgpCit7Cisg
ICAgdS5hc0JpdHMudGFnID0gRW1wdHlWYWx1ZVRhZzsKKyAgICB1LmFzQml0cy5wYXlsb2FkID0g
MDsKK30KKworaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoSlNOdWxsVGFnKQoreworICAgIHUuYXNC
aXRzLnRhZyA9IE51bGxUYWc7CisgICAgdS5hc0JpdHMucGF5bG9hZCA9IDA7Cit9CisgICAgCitp
bmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShKU1VuZGVmaW5lZFRhZykKK3sKKyAgICB1LmFzQml0cy50
YWcgPSBVbmRlZmluZWRUYWc7CisgICAgdS5hc0JpdHMucGF5bG9hZCA9IDA7Cit9CisgICAgCitp
bmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShKU1RydWVUYWcpCit7CisgICAgdS5hc0JpdHMudGFnID0g
Qm9vbGVhblRhZzsKKyAgICB1LmFzQml0cy5wYXlsb2FkID0gMTsKK30KKyAgICAKK2lubGluZSBK
U1ZhbHVlOjpKU1ZhbHVlKEpTRmFsc2VUYWcpCit7CisgICAgdS5hc0JpdHMudGFnID0gQm9vbGVh
blRhZzsKKyAgICB1LmFzQml0cy5wYXlsb2FkID0gMDsKK30KKworaW5saW5lIEpTVmFsdWU6OkpT
VmFsdWUoSGFzaFRhYmxlRGVsZXRlZFZhbHVlVGFnKQoreworICAgIHUuYXNCaXRzLnRhZyA9IERl
bGV0ZWRWYWx1ZVRhZzsKKyAgICB1LmFzQml0cy5wYXlsb2FkID0gMDsKK30KKworaW5saW5lIEpT
VmFsdWU6OkpTVmFsdWUoSlNDZWxsKiBwdHIpCit7CisgICAgaWYgKHB0cikKKyAgICAgICAgdS5h
c0JpdHMudGFnID0gQ2VsbFRhZzsKKyAgICBlbHNlCisgICAgICAgIHUuYXNCaXRzLnRhZyA9IEVt
cHR5VmFsdWVUYWc7CisgICAgdS5hc0JpdHMucGF5bG9hZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50
MzJfdD4ocHRyKTsKK30KKworaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoY29uc3QgSlNDZWxsKiBw
dHIpCit7CisgICAgaWYgKHB0cikKKyAgICAgICAgdS5hc0JpdHMudGFnID0gQ2VsbFRhZzsKKyAg
ICBlbHNlCisgICAgICAgIHUuYXNCaXRzLnRhZyA9IEVtcHR5VmFsdWVUYWc7CisgICAgdS5hc0Jp
dHMucGF5bG9hZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJfdD4oY29uc3RfY2FzdDxKU0NlbGwq
PihwdHIpKTsKK30KKworaW5saW5lIEpTVmFsdWU6Om9wZXJhdG9yIGJvb2woKSBjb25zdAorewor
ICAgIEFTU0VSVCh0YWcoKSAhPSBEZWxldGVkVmFsdWVUYWcpOworICAgIHJldHVybiB0YWcoKSAh
PSBFbXB0eVZhbHVlVGFnOworfQorCitpbmxpbmUgYm9vbCBKU1ZhbHVlOjpvcGVyYXRvcj09KGNv
bnN0IEpTVmFsdWUmIG90aGVyKSBjb25zdAoreworICAgIHJldHVybiB1LmFzSW50NjQgPT0gb3Ro
ZXIudS5hc0ludDY0OworfQorCitpbmxpbmUgYm9vbCBKU1ZhbHVlOjpvcGVyYXRvciE9KGNvbnN0
IEpTVmFsdWUmIG90aGVyKSBjb25zdAoreworICAgIHJldHVybiB1LmFzSW50NjQgIT0gb3RoZXIu
dS5hc0ludDY0OworfQorCitpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0VtcHR5KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gdGFnKCkgPT0gRW1wdHlWYWx1ZVRhZzsKK30KKworaW5saW5lIGJvb2wgSlNW
YWx1ZTo6aXNVbmRlZmluZWQoKSBjb25zdAoreworICAgIHJldHVybiB0YWcoKSA9PSBVbmRlZmlu
ZWRUYWc7Cit9CisKK2lubGluZSBib29sIEpTVmFsdWU6OmlzTnVsbCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIHRhZygpID09IE51bGxUYWc7Cit9CisKK2lubGluZSBib29sIEpTVmFsdWU6OmlzVW5k
ZWZpbmVkT3JOdWxsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaXNVbmRlZmluZWQoKSB8fCBpc051
bGwoKTsKK30KKworaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNDZWxsKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gdGFnKCkgPT0gQ2VsbFRhZzsKK30KKworaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNJbnQz
MigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRhZygpID09IEludDMyVGFnOworfQorCitpbmxpbmUg
Ym9vbCBKU1ZhbHVlOjppc0RvdWJsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRhZygpIDwgTG93
ZXN0VGFnOworfQorCitpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc1RydWUoKSBjb25zdAoreworICAg
IHJldHVybiB0YWcoKSA9PSBCb29sZWFuVGFnICYmIHBheWxvYWQoKTsKK30KKworaW5saW5lIGJv
b2wgSlNWYWx1ZTo6aXNGYWxzZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRhZygpID09IEJvb2xl
YW5UYWcgJiYgIXBheWxvYWQoKTsKK30KKworaW5saW5lIHVpbnQzMl90IEpTVmFsdWU6OnRhZygp
IGNvbnN0Cit7CisgICAgcmV0dXJuIHUuYXNCaXRzLnRhZzsKK30KKyAgICAKK2lubGluZSBpbnQz
Ml90IEpTVmFsdWU6OnBheWxvYWQoKSBjb25zdAoreworICAgIHJldHVybiB1LmFzQml0cy5wYXls
b2FkOworfQorICAgIAoraW5saW5lIGludDMyX3QgSlNWYWx1ZTo6YXNJbnQzMigpIGNvbnN0Cit7
CisgICAgQVNTRVJUKGlzSW50MzIoKSk7CisgICAgcmV0dXJuIHUuYXNCaXRzLnBheWxvYWQ7Cit9
CisgICAgCitpbmxpbmUgZG91YmxlIEpTVmFsdWU6OmFzRG91YmxlKCkgY29uc3QKK3sKKyAgICBB
U1NFUlQoaXNEb3VibGUoKSk7CisgICAgcmV0dXJuIHUuYXNEb3VibGU7Cit9CisgICAgCitBTFdB
WVNfSU5MSU5FIEpTQ2VsbCogSlNWYWx1ZTo6YXNDZWxsKCkgY29uc3QKK3sKKyAgICBBU1NFUlQo
aXNDZWxsKCkpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEpTQ2VsbCo+KHUuYXNCaXRz
LnBheWxvYWQpOworfQorCitBTFdBWVNfSU5MSU5FIEpTVmFsdWU6OkpTVmFsdWUoRW5jb2RlQXNE
b3VibGVUYWcsIGRvdWJsZSBkKQoreworICAgIHUuYXNEb3VibGUgPSBkOworfQorCitpbmxpbmUg
SlNWYWx1ZTo6SlNWYWx1ZShpbnQgaSkKK3sKKyAgICB1LmFzQml0cy50YWcgPSBJbnQzMlRhZzsK
KyAgICB1LmFzQml0cy5wYXlsb2FkID0gaTsKK30KKworI2lmIEVOQUJMRShMTElOVF9DX0xPT1Ap
CitpbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShpbnQzMl90IHRhZywgaW50MzJfdCBwYXlsb2FkKQor
eworICAgIHUuYXNCaXRzLnRhZyA9IHRhZzsKKyAgICB1LmFzQml0cy5wYXlsb2FkID0gcGF5bG9h
ZDsKK30KKyNlbmRpZgorCitpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc051bWJlcigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGlzSW50MzIoKSB8fCBpc0RvdWJsZSgpOworfQorCitpbmxpbmUgYm9vbCBK
U1ZhbHVlOjppc0Jvb2xlYW4oKSBjb25zdAoreworICAgIHJldHVybiBpc1RydWUoKSB8fCBpc0Zh
bHNlKCk7Cit9CisKK2lubGluZSBib29sIEpTVmFsdWU6OmFzQm9vbGVhbigpIGNvbnN0Cit7Cisg
ICAgQVNTRVJUKGlzQm9vbGVhbigpKTsKKyAgICByZXR1cm4gcGF5bG9hZCgpOworfQorCisjZWxz
ZSAvLyAhVVNFKEpTVkFMVUUzMl82NCkgaS5lLiBVU0UoSlNWQUxVRTY0KQorCisvLyAweDAgY2Fu
IG5ldmVyIG9jY3VyIG5hdHVyYWxseSBiZWNhdXNlIGl0IGhhcyBhIHRhZyBvZiAwMCwgaW5kaWNh
dGluZyBhIHBvaW50ZXIgdmFsdWUsIGJ1dCBhIHBheWxvYWQgb2YgMHgwLCB3aGljaCBpcyBpbiB0
aGUgKGludmFsaWQpIHplcm8gcGFnZS4KK2lubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKCkKK3sKKyAg
ICB1LmFzSW50NjQgPSBWYWx1ZUVtcHR5OworfQorCisvLyAweDQgY2FuIG5ldmVyIG9jY3VyIG5h
dHVyYWxseSBiZWNhdXNlIGl0IGhhcyBhIHRhZyBvZiAwMCwgaW5kaWNhdGluZyBhIHBvaW50ZXIg
dmFsdWUsIGJ1dCBhIHBheWxvYWQgb2YgMHg0LCB3aGljaCBpcyBpbiB0aGUgKGludmFsaWQpIHpl
cm8gcGFnZS4KK2lubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKEhhc2hUYWJsZURlbGV0ZWRWYWx1ZVRh
ZykKK3sKKyAgICB1LmFzSW50NjQgPSBWYWx1ZURlbGV0ZWQ7Cit9CisKK2lubGluZSBKU1ZhbHVl
OjpKU1ZhbHVlKEpTQ2VsbCogcHRyKQoreworICAgIHUuYXNJbnQ2NCA9IHJlaW50ZXJwcmV0X2Nh
c3Q8dWludHB0cl90PihwdHIpOworfQorCitpbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShjb25zdCBK
U0NlbGwqIHB0cikKK3sKKyAgICB1LmFzSW50NjQgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJf
dD4oY29uc3RfY2FzdDxKU0NlbGwqPihwdHIpKTsKK30KKworaW5saW5lIEpTVmFsdWU6Om9wZXJh
dG9yIGJvb2woKSBjb25zdAoreworICAgIHJldHVybiB1LmFzSW50NjQ7Cit9CisKK2lubGluZSBi
b29sIEpTVmFsdWU6Om9wZXJhdG9yPT0oY29uc3QgSlNWYWx1ZSYgb3RoZXIpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIHUuYXNJbnQ2NCA9PSBvdGhlci51LmFzSW50NjQ7Cit9CisKK2lubGluZSBib29s
IEpTVmFsdWU6Om9wZXJhdG9yIT0oY29uc3QgSlNWYWx1ZSYgb3RoZXIpIGNvbnN0Cit7CisgICAg
cmV0dXJuIHUuYXNJbnQ2NCAhPSBvdGhlci51LmFzSW50NjQ7Cit9CisKK2lubGluZSBib29sIEpT
VmFsdWU6OmlzRW1wdHkoKSBjb25zdAoreworICAgIHJldHVybiB1LmFzSW50NjQgPT0gVmFsdWVF
bXB0eTsKK30KKworaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNVbmRlZmluZWQoKSBjb25zdAorewor
ICAgIHJldHVybiBhc1ZhbHVlKCkgPT0gSlNWYWx1ZShKU1VuZGVmaW5lZCk7Cit9CisKK2lubGlu
ZSBib29sIEpTVmFsdWU6OmlzTnVsbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGFzVmFsdWUoKSA9
PSBKU1ZhbHVlKEpTTnVsbCk7Cit9CisKK2lubGluZSBib29sIEpTVmFsdWU6OmlzVHJ1ZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIGFzVmFsdWUoKSA9PSBKU1ZhbHVlKEpTVHJ1ZSk7Cit9CisKK2lu
bGluZSBib29sIEpTVmFsdWU6OmlzRmFsc2UoKSBjb25zdAoreworICAgIHJldHVybiBhc1ZhbHVl
KCkgPT0gSlNWYWx1ZShKU0ZhbHNlKTsKK30KKworaW5saW5lIGJvb2wgSlNWYWx1ZTo6YXNCb29s
ZWFuKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNCb29sZWFuKCkpOworICAgIHJldHVybiBhc1Zh
bHVlKCkgPT0gSlNWYWx1ZShKU1RydWUpOworfQorCitpbmxpbmUgaW50MzJfdCBKU1ZhbHVlOjph
c0ludDMyKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNJbnQzMigpKTsKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8aW50MzJfdD4odS5hc0ludDY0KTsKK30KKworaW5saW5lIGJvb2wgSlNWYWx1ZTo6
aXNEb3VibGUoKSBjb25zdAoreworICAgIHJldHVybiBpc051bWJlcigpICYmICFpc0ludDMyKCk7
Cit9CisKK2lubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKEpTTnVsbFRhZykKK3sKKyAgICB1LmFzSW50
NjQgPSBWYWx1ZU51bGw7Cit9CisgICAgCitpbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShKU1VuZGVm
aW5lZFRhZykKK3sKKyAgICB1LmFzSW50NjQgPSBWYWx1ZVVuZGVmaW5lZDsKK30KKworaW5saW5l
IEpTVmFsdWU6OkpTVmFsdWUoSlNUcnVlVGFnKQoreworICAgIHUuYXNJbnQ2NCA9IFZhbHVlVHJ1
ZTsKK30KKworaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoSlNGYWxzZVRhZykKK3sKKyAgICB1LmFz
SW50NjQgPSBWYWx1ZUZhbHNlOworfQorCitpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc1VuZGVmaW5l
ZE9yTnVsbCgpIGNvbnN0Cit7CisgICAgLy8gVW5kZWZpbmVkIGFuZCBudWxsIHNoYXJlIHRoZSBz
YW1lIHZhbHVlLCBiYXIgdGhlICd1bmRlZmluZWQnIGJpdCBpbiB0aGUgZXh0ZW5kZWQgdGFnLgor
ICAgIHJldHVybiAodS5hc0ludDY0ICYgflRhZ0JpdFVuZGVmaW5lZCkgPT0gVmFsdWVOdWxsOwor
fQorCitpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0Jvb2xlYW4oKSBjb25zdAoreworICAgIHJldHVy
biAodS5hc0ludDY0ICYgfjEpID09IFZhbHVlRmFsc2U7Cit9CisKK2lubGluZSBib29sIEpTVmFs
dWU6OmlzQ2VsbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuICEodS5hc0ludDY0ICYgVGFnTWFzayk7
Cit9CisKK2lubGluZSBib29sIEpTVmFsdWU6OmlzSW50MzIoKSBjb25zdAoreworICAgIHJldHVy
biAodS5hc0ludDY0ICYgVGFnVHlwZU51bWJlcikgPT0gVGFnVHlwZU51bWJlcjsKK30KKworaW5s
aW5lIGludDY0X3QgcmVpbnRlcnByZXREb3VibGVUb0ludDY0KGRvdWJsZSB2YWx1ZSkKK3sKKyAg
ICByZXR1cm4gYml0d2lzZV9jYXN0PGludDY0X3Q+KHZhbHVlKTsKK30KK2lubGluZSBkb3VibGUg
cmVpbnRlcnByZXRJbnQ2NFRvRG91YmxlKGludDY0X3QgdmFsdWUpCit7CisgICAgcmV0dXJuIGJp
dHdpc2VfY2FzdDxkb3VibGU+KHZhbHVlKTsKK30KKworQUxXQVlTX0lOTElORSBKU1ZhbHVlOjpK
U1ZhbHVlKEVuY29kZUFzRG91YmxlVGFnLCBkb3VibGUgZCkKK3sKKyAgICB1LmFzSW50NjQgPSBy
ZWludGVycHJldERvdWJsZVRvSW50NjQoZCkgKyBEb3VibGVFbmNvZGVPZmZzZXQ7Cit9CisKK2lu
bGluZSBKU1ZhbHVlOjpKU1ZhbHVlKGludCBpKQoreworICAgIHUuYXNJbnQ2NCA9IFRhZ1R5cGVO
dW1iZXIgfCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oaSk7Cit9CisKK2lubGluZSBkb3VibGUgSlNW
YWx1ZTo6YXNEb3VibGUoKSBjb25zdAoreworICAgIEFTU0VSVChpc0RvdWJsZSgpKTsKKyAgICBy
ZXR1cm4gcmVpbnRlcnByZXRJbnQ2NFRvRG91YmxlKHUuYXNJbnQ2NCAtIERvdWJsZUVuY29kZU9m
ZnNldCk7Cit9CisKK2lubGluZSBib29sIEpTVmFsdWU6OmlzTnVtYmVyKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gdS5hc0ludDY0ICYgVGFnVHlwZU51bWJlcjsKK30KKworQUxXQVlTX0lOTElORSBK
U0NlbGwqIEpTVmFsdWU6OmFzQ2VsbCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzQ2VsbCgpKTsK
KyAgICByZXR1cm4gdS5wdHI7Cit9CisKKyNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQorCitpbmxp
bmUgYm9vbCBKU1ZhbHVlOjppc1N0cmluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzQ2VsbCgp
ICYmIGFzQ2VsbCgpLT5pc1N0cmluZygpOworfQorCitpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc1By
aW1pdGl2ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFpc0NlbGwoKSB8fCBhc0NlbGwoKS0+aXNT
dHJpbmcoKTsKK30KKworaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNHZXR0ZXJTZXR0ZXIoKSBjb25z
dAoreworICAgIHJldHVybiBpc0NlbGwoKSAmJiBhc0NlbGwoKS0+aXNHZXR0ZXJTZXR0ZXIoKTsK
K30KKworaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNPYmplY3QoKSBjb25zdAoreworICAgIHJldHVy
biBpc0NlbGwoKSAmJiBhc0NlbGwoKS0+aXNPYmplY3QoKTsKK30KKworaW5saW5lIGJvb2wgSlNW
YWx1ZTo6Z2V0U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgU3RyaW5nJiBzKSBjb25zdAoreworICAg
IHJldHVybiBpc0NlbGwoKSAmJiBhc0NlbGwoKS0+Z2V0U3RyaW5nKGV4ZWMsIHMpOworfQorCitp
bmxpbmUgU3RyaW5nIEpTVmFsdWU6OmdldFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGlzQ2VsbCgpID8gYXNDZWxsKCktPmdldFN0cmluZyhleGVjKSA6IFN0cmlu
ZygpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQmFzZT4gU3RyaW5nIEhhbmRsZUNvbnZlcnRl
cjxCYXNlLCBVbmtub3duPjo6Z2V0U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAg
ICByZXR1cm4ganNWYWx1ZSgpLmdldFN0cmluZyhleGVjKTsKK30KKworaW5saW5lIEpTT2JqZWN0
KiBKU1ZhbHVlOjpnZXRPYmplY3QoKSBjb25zdAoreworICAgIHJldHVybiBpc0NlbGwoKSA/IGFz
Q2VsbCgpLT5nZXRPYmplY3QoKSA6IDA7Cit9CisKK0FMV0FZU19JTkxJTkUgYm9vbCBKU1ZhbHVl
OjpnZXRVSW50MzIodWludDMyX3QmIHYpIGNvbnN0Cit7CisgICAgaWYgKGlzSW50MzIoKSkgewor
ICAgICAgICBpbnQzMl90IGkgPSBhc0ludDMyKCk7CisgICAgICAgIHYgPSBzdGF0aWNfY2FzdDx1
aW50MzJfdD4oaSk7CisgICAgICAgIHJldHVybiBpID49IDA7CisgICAgfQorICAgIGlmIChpc0Rv
dWJsZSgpKSB7CisgICAgICAgIGRvdWJsZSBkID0gYXNEb3VibGUoKTsKKyAgICAgICAgdiA9IHN0
YXRpY19jYXN0PHVpbnQzMl90PihkKTsKKyAgICAgICAgcmV0dXJuIHYgPT0gZDsKKyAgICB9Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCitpbmxpbmUgSlNWYWx1ZSBKU1ZhbHVlOjp0b1ByaW1pdGl2
ZShFeGVjU3RhdGUqIGV4ZWMsIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUgcHJlZmVycmVkVHlwZSkg
Y29uc3QKK3sKKyAgICByZXR1cm4gaXNDZWxsKCkgPyBhc0NlbGwoKS0+dG9QcmltaXRpdmUoZXhl
YywgcHJlZmVycmVkVHlwZSkgOiBhc1ZhbHVlKCk7Cit9CisKK2lubGluZSBib29sIEpTVmFsdWU6
OmdldFByaW1pdGl2ZU51bWJlcihFeGVjU3RhdGUqIGV4ZWMsIGRvdWJsZSYgbnVtYmVyLCBKU1Zh
bHVlJiB2YWx1ZSkKK3sKKyAgICBpZiAoaXNJbnQzMigpKSB7CisgICAgICAgIG51bWJlciA9IGFz
SW50MzIoKTsKKyAgICAgICAgdmFsdWUgPSAqdGhpczsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorICAgIGlmIChpc0RvdWJsZSgpKSB7CisgICAgICAgIG51bWJlciA9IGFzRG91YmxlKCk7
CisgICAgICAgIHZhbHVlID0gKnRoaXM7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAg
ICBpZiAoaXNDZWxsKCkpCisgICAgICAgIHJldHVybiBhc0NlbGwoKS0+Z2V0UHJpbWl0aXZlTnVt
YmVyKGV4ZWMsIG51bWJlciwgdmFsdWUpOworICAgIGlmIChpc1RydWUoKSkgeworICAgICAgICBu
dW1iZXIgPSAxLjA7CisgICAgICAgIHZhbHVlID0gKnRoaXM7CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKyAgICBpZiAoaXNGYWxzZSgpIHx8IGlzTnVsbCgpKSB7CisgICAgICAgIG51bWJl
ciA9IDAuMDsKKyAgICAgICAgdmFsdWUgPSAqdGhpczsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorICAgIEFTU0VSVChpc1VuZGVmaW5lZCgpKTsKKyAgICBudW1iZXIgPSBRTmFOOworICAg
IHZhbHVlID0gKnRoaXM7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK0FMV0FZU19JTkxJTkUgZG91
YmxlIEpTVmFsdWU6OnRvTnVtYmVyKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICBpZiAo
aXNJbnQzMigpKQorICAgICAgICByZXR1cm4gYXNJbnQzMigpOworICAgIGlmIChpc0RvdWJsZSgp
KQorICAgICAgICByZXR1cm4gYXNEb3VibGUoKTsKKyAgICByZXR1cm4gdG9OdW1iZXJTbG93Q2Fz
ZShleGVjKTsKK30KKworaW5saW5lIEpTT2JqZWN0KiBKU1ZhbHVlOjp0b09iamVjdChFeGVjU3Rh
dGUqIGV4ZWMpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzQ2VsbCgpID8gYXNDZWxsKCktPnRvT2Jq
ZWN0KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSkgOiB0b09iamVjdFNsb3dDYXNl
KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7Cit9CisKK2lubGluZSBKU09iamVj
dCogSlNWYWx1ZTo6dG9PYmplY3QoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KSBjb25zdAoreworICAgIHJldHVybiBpc0NlbGwoKSA/IGFzQ2VsbCgpLT50b09i
amVjdChleGVjLCBnbG9iYWxPYmplY3QpIDogdG9PYmplY3RTbG93Q2FzZShleGVjLCBnbG9iYWxP
YmplY3QpOworfQorCitpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0Z1bmN0aW9uKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gaXNDZWxsKCkgJiYgKGFzQ2VsbCgpLT5pbmhlcml0cygmSlNGdW5jdGlvbjo6
c19pbmZvKSB8fCBhc0NlbGwoKS0+aW5oZXJpdHMoJkludGVybmFsRnVuY3Rpb246OnNfaW5mbykp
OworfQorCisvLyB0aGlzIG1ldGhvZCBpcyBoZXJlIHRvIGJlIGFmdGVyIHRoZSBpbmxpbmUgZGVj
bGFyYXRpb24gb2YgSlNDZWxsOjppbmhlcml0cworaW5saW5lIGJvb2wgSlNWYWx1ZTo6aW5oZXJp
dHMoY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8pIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzQ2Vs
bCgpICYmIGFzQ2VsbCgpLT5pbmhlcml0cyhjbGFzc0luZm8pOworfQorCitpbmxpbmUgSlNPYmpl
Y3QqIEpTVmFsdWU6OnRvVGhpc09iamVjdChFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Cit7CisgICAg
cmV0dXJuIGlzQ2VsbCgpID8gYXNDZWxsKCktPm1ldGhvZFRhYmxlKCktPnRvVGhpc09iamVjdChh
c0NlbGwoKSwgZXhlYykgOiB0b1RoaXNPYmplY3RTbG93Q2FzZShleGVjKTsKK30KKworaW5saW5l
IEpTVmFsdWUgSlNWYWx1ZTo6Z2V0KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSkgY29uc3QKK3sKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChhc1ZhbHVlKCkpOworICAg
IHJldHVybiBnZXQoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKK30KKworaW5saW5lIEpTVmFs
dWUgSlNWYWx1ZTo6Z2V0KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90JiBzbG90KSBjb25zdAoreworICAgIGlmIChVTkxJS0VMWSghaXNDZWxs
KCkpKSB7CisgICAgICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSBzeW50aGVzaXplUHJvdG90eXBl
KGV4ZWMpOworICAgICAgICBpZiAoIXByb3RvdHlwZS0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIHBy
b3BlcnR5TmFtZSwgc2xvdCkpCisgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAg
ICAgICAgcmV0dXJuIHNsb3QuZ2V0VmFsdWUoZXhlYywgcHJvcGVydHlOYW1lKTsKKyAgICB9Cisg
ICAgSlNDZWxsKiBjZWxsID0gYXNDZWxsKCk7CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAg
aWYgKGNlbGwtPmZhc3RHZXRPd25Qcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90
KSkKKyAgICAgICAgICAgIHJldHVybiBzbG90LmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFtZSk7
CisgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gYXNPYmplY3QoY2VsbCktPnByb3RvdHlwZSgp
OworICAgICAgICBpZiAoIXByb3RvdHlwZS5pc09iamVjdCgpKQorICAgICAgICAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7CisgICAgICAgIGNlbGwgPSBhc09iamVjdChwcm90b3R5cGUpOworICAg
IH0KK30KKworaW5saW5lIEpTVmFsdWUgSlNWYWx1ZTo6Z2V0KEV4ZWNTdGF0ZSogZXhlYywgdW5z
aWduZWQgcHJvcGVydHlOYW1lKSBjb25zdAoreworICAgIFByb3BlcnR5U2xvdCBzbG90KGFzVmFs
dWUoKSk7CisgICAgcmV0dXJuIGdldChleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworfQorCitp
bmxpbmUgSlNWYWx1ZSBKU1ZhbHVlOjpnZXQoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkgY29uc3QKK3sKKyAgICBpZiAoVU5MSUtFTFko
IWlzQ2VsbCgpKSkgeworICAgICAgICBKU09iamVjdCogcHJvdG90eXBlID0gc3ludGhlc2l6ZVBy
b3RvdHlwZShleGVjKTsKKyAgICAgICAgaWYgKCFwcm90b3R5cGUtPmdldFByb3BlcnR5U2xvdChl
eGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQorICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7CisgICAgICAgIHJldHVybiBzbG90LmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFtZSk7Cisg
ICAgfQorICAgIEpTQ2VsbCogY2VsbCA9IGNvbnN0X2Nhc3Q8SlNDZWxsKj4oYXNDZWxsKCkpOwor
ICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIGlmIChjZWxsLT5tZXRob2RUYWJsZSgpLT5nZXRP
d25Qcm9wZXJ0eVNsb3RCeUluZGV4KGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCkpCisg
ICAgICAgICAgICByZXR1cm4gc2xvdC5nZXRWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUpOworICAg
ICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IGFzT2JqZWN0KGNlbGwpLT5wcm90b3R5cGUoKTsKKyAg
ICAgICAgaWYgKCFwcm90b3R5cGUuaXNPYmplY3QoKSkKKyAgICAgICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOworICAgICAgICBjZWxsID0gcHJvdG90eXBlLmFzQ2VsbCgpOworICAgIH0KK30K
KworaW5saW5lIHZvaWQgSlNWYWx1ZTo6cHV0KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorewor
ICAgIGlmIChVTkxJS0VMWSghaXNDZWxsKCkpKSB7CisgICAgICAgIHB1dFRvUHJpbWl0aXZlKGV4
ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIGFzQ2VsbCgpLT5tZXRob2RUYWJsZSgpLT5wdXQoYXNDZWxsKCksIGV4ZWMsIHByb3BlcnR5
TmFtZSwgdmFsdWUsIHNsb3QpOworfQorCitpbmxpbmUgdm9pZCBKU1ZhbHVlOjpwdXRCeUluZGV4
KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBi
b29sIHNob3VsZFRocm93KQoreworICAgIGlmIChVTkxJS0VMWSghaXNDZWxsKCkpKSB7CisgICAg
ICAgIHB1dFRvUHJpbWl0aXZlQnlJbmRleChleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91
bGRUaHJvdyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXNDZWxsKCktPm1ldGhvZFRh
YmxlKCktPnB1dEJ5SW5kZXgoYXNDZWxsKCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNo
b3VsZFRocm93KTsKK30KKworaW5saW5lIEpTVmFsdWUgSlNWYWx1ZTo6c3RydWN0dXJlT3JVbmRl
ZmluZWQoKSBjb25zdAoreworICAgIGlmIChpc0NlbGwoKSkKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWUoYXNDZWxsKCktPnN0cnVjdHVyZSgpKTsKKyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKK30K
KworLy8gRUNNQSAxMS45LjMKK2lubGluZSBib29sIEpTVmFsdWU6OmVxdWFsKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKK3sKKyAgICBpZiAodjEuaXNJbnQzMigpICYm
IHYyLmlzSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIHYxID09IHYyOworCisgICAgcmV0dXJuIGVx
dWFsU2xvd0Nhc2UoZXhlYywgdjEsIHYyKTsKK30KKworQUxXQVlTX0lOTElORSBib29sIEpTVmFs
dWU6OmVxdWFsU2xvd0Nhc2VJbmxpbmUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHYxLCBKU1Zh
bHVlIHYyKQoreworICAgIGRvIHsKKyAgICAgICAgaWYgKHYxLmlzTnVtYmVyKCkgJiYgdjIuaXNO
dW1iZXIoKSkKKyAgICAgICAgICAgIHJldHVybiB2MS5hc051bWJlcigpID09IHYyLmFzTnVtYmVy
KCk7CisKKyAgICAgICAgYm9vbCBzMSA9IHYxLmlzU3RyaW5nKCk7CisgICAgICAgIGJvb2wgczIg
PSB2Mi5pc1N0cmluZygpOworICAgICAgICBpZiAoczEgJiYgczIpCisgICAgICAgICAgICByZXR1
cm4gYXNTdHJpbmcodjEpLT52YWx1ZShleGVjKSA9PSBhc1N0cmluZyh2MiktPnZhbHVlKGV4ZWMp
OworCisgICAgICAgIGlmICh2MS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAgICAgICBp
ZiAodjIuaXNVbmRlZmluZWRPck51bGwoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgICAgIGlmICghdjIuaXNDZWxsKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgcmV0dXJuIHYyLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKS0+bWFzcXVl
cmFkZXNBc1VuZGVmaW5lZChleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOworICAgICAgICB9
CisKKyAgICAgICAgaWYgKHYyLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAgICAgIGlm
ICghdjEuaXNDZWxsKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgcmV0dXJuIHYxLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKS0+bWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZChleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOworICAgICAgICB9CisKKyAgICAgICAgaWYg
KHYxLmlzT2JqZWN0KCkpIHsKKyAgICAgICAgICAgIGlmICh2Mi5pc09iamVjdCgpKQorICAgICAg
ICAgICAgICAgIHJldHVybiB2MSA9PSB2MjsKKyAgICAgICAgICAgIEpTVmFsdWUgcDEgPSB2MS50
b1ByaW1pdGl2ZShleGVjKTsKKyAgICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB2MSA9IHAxOworICAg
ICAgICAgICAgaWYgKHYxLmlzSW50MzIoKSAmJiB2Mi5pc0ludDMyKCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIHYxID09IHYyOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAodjIuaXNPYmplY3QoKSkgeworICAgICAgICAgICAgSlNWYWx1ZSBwMiA9IHYy
LnRvUHJpbWl0aXZlKGV4ZWMpOworICAgICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHYyID0gcDI7Cisg
ICAgICAgICAgICBpZiAodjEuaXNJbnQzMigpICYmIHYyLmlzSW50MzIoKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gdjEgPT0gdjI7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQor
CisgICAgICAgIGlmIChzMSB8fCBzMikgeworICAgICAgICAgICAgZG91YmxlIGQxID0gdjEudG9O
dW1iZXIoZXhlYyk7CisgICAgICAgICAgICBkb3VibGUgZDIgPSB2Mi50b051bWJlcihleGVjKTsK
KyAgICAgICAgICAgIHJldHVybiBkMSA9PSBkMjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh2
MS5pc0Jvb2xlYW4oKSkgeworICAgICAgICAgICAgaWYgKHYyLmlzTnVtYmVyKCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4odjEuYXNCb29sZWFuKCkpID09IHYy
LmFzTnVtYmVyKCk7CisgICAgICAgIH0gZWxzZSBpZiAodjIuaXNCb29sZWFuKCkpIHsKKyAgICAg
ICAgICAgIGlmICh2MS5pc051bWJlcigpKQorICAgICAgICAgICAgICAgIHJldHVybiB2MS5hc051
bWJlcigpID09IHN0YXRpY19jYXN0PGRvdWJsZT4odjIuYXNCb29sZWFuKCkpOworICAgICAgICB9
CisKKyAgICAgICAgcmV0dXJuIHYxID09IHYyOworICAgIH0gd2hpbGUgKHRydWUpOworfQorCisv
LyBFQ01BIDExLjkuMworQUxXQVlTX0lOTElORSBib29sIEpTVmFsdWU6OnN0cmljdEVxdWFsU2xv
d0Nhc2VJbmxpbmUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQorewor
ICAgIEFTU0VSVCh2MS5pc0NlbGwoKSAmJiB2Mi5pc0NlbGwoKSk7CisKKyAgICBpZiAodjEuYXND
ZWxsKCktPmlzU3RyaW5nKCkgJiYgdjIuYXNDZWxsKCktPmlzU3RyaW5nKCkpCisgICAgICAgIHJl
dHVybiBhc1N0cmluZyh2MSktPnZhbHVlKGV4ZWMpID09IGFzU3RyaW5nKHYyKS0+dmFsdWUoZXhl
Yyk7CisKKyAgICByZXR1cm4gdjEgPT0gdjI7Cit9CisKK2lubGluZSBib29sIEpTVmFsdWU6OnN0
cmljdEVxdWFsKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKK3sKKyAg
ICBpZiAodjEuaXNJbnQzMigpICYmIHYyLmlzSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIHYxID09
IHYyOworCisgICAgaWYgKHYxLmlzTnVtYmVyKCkgJiYgdjIuaXNOdW1iZXIoKSkKKyAgICAgICAg
cmV0dXJuIHYxLmFzTnVtYmVyKCkgPT0gdjIuYXNOdW1iZXIoKTsKKworICAgIGlmICghdjEuaXND
ZWxsKCkgfHwgIXYyLmlzQ2VsbCgpKQorICAgICAgICByZXR1cm4gdjEgPT0gdjI7CisKKyAgICBy
ZXR1cm4gc3RyaWN0RXF1YWxTbG93Q2FzZUlubGluZShleGVjLCB2MSwgdjIpOworfQorCit9IC8v
IG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEpTVmFsdWVJbmxpbmVzX2gKKwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCShy
ZXZpc2lvbiAxNDAxOTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1Zh
bHVlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw5ICsyNyw5IEBACiAjZGVmaW5lIEpT
VmFsdWVJbmxpbmVzX2gKIAogI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKKyNpbmNsdWRl
ICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgogI2luY2x1ZGUgIkpT
RnVuY3Rpb24uaCIKLSNpbmNsdWRlICJKU1ZhbHVlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAkocmV2
aXNpb24gMTQwMTk2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxE
YXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDggKzM2LDggQEAKICNpbmNsdWRlICJJbnRyaW5z
aWMuaCIKICNpbmNsdWRlICJKSVRUaHVua3MuaCIKICNpbmNsdWRlICJKSVRUaHVua3MuaCIKKyNp
bmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNMb2NrLmgiCi0jaW5jbHVkZSAiSlNW
YWx1ZS5oIgogI2luY2x1ZGUgIkxMSW50RGF0YS5oIgogI2luY2x1ZGUgIk51bWVyaWNTdHJpbmdz
LmgiCiAjaW5jbHVkZSAiUHJvZmlsZXJEYXRhYmFzZS5oIgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMTQwMTk2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIK
ICNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIK
KyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2FsbGJhY2tDb25z
dHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTQ2FsbGJhY2tGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpT
Q2FsbGJhY2tPYmplY3QuaCIKQEAgLTU3LDcgKzU4LDYgQEAKICNpbmNsdWRlICJKU0xvY2suaCIK
ICNpbmNsdWRlICJKU05hbWVTY29wZS5oIgogI2luY2x1ZGUgIkpTT05PYmplY3QuaCIKLSNpbmNs
dWRlICJKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTV2l0aFNjb3BlLmgiCiAjaW5jbHVk
ZSAiTGVnYWN5UHJvZmlsZXIuaCIKICNpbmNsdWRlICJMb29rdXAuaCIKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlv
bnMuaAkocmV2aXNpb24gMTQwMTk2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBA
QAogI2lmbmRlZiBKU0dsb2JhbE9iamVjdEZ1bmN0aW9uc19oCiAjZGVmaW5lIEpTR2xvYmFsT2Jq
ZWN0RnVuY3Rpb25zX2gKIAotI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0NKU1Zh
bHVlLmgiCiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvVW5pY29kZS5oPgogCiBuYW1lc3BhY2UgSlND
IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nSm9pbmVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdKb2lu
ZXIuaAkocmV2aXNpb24gMTQwMTk2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTdHJpbmdKb2luZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRl
ZiBKU1N0cmluZ0pvaW5lcl9oCiAjZGVmaW5lIEpTU3RyaW5nSm9pbmVyX2gKIAotI2luY2x1ZGUg
IkpTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmNwcAkocmV2aXNpb24gMTQwMTk2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsMzIwICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9y
dGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkg
KHBta0Bwb3N0LmNvbSkKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDcsIDIwMDgsIDIwMTIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAq
ICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
LSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKLSAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIkpTVmFsdWUuaCIKLQotI2luY2x1ZGUgIkJvb2xlYW5Db25z
dHJ1Y3Rvci5oIgotI2luY2x1ZGUgIkJvb2xlYW5Qcm90b3R5cGUuaCIKLSNpbmNsdWRlICJFcnJv
ci5oIgotI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKLSNpbmNsdWRlICJHZXR0ZXJTZXR0
ZXIuaCIKLSNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgotI2luY2x1ZGUgIkpTRnVuY3Rpb24u
aCIKLSNpbmNsdWRlICJKU05vdEFuT2JqZWN0LmgiCi0jaW5jbHVkZSAiSlNWYWx1ZUlubGluZXMu
aCIKLSNpbmNsdWRlICJOdW1iZXJPYmplY3QuaCIKLSNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5o
PgotI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci0KLXN0
YXRpYyBjb25zdCBkb3VibGUgRDMyID0gNDI5NDk2NzI5Ni4wOwotCi0vLyBFQ01BIDkuNAotZG91
YmxlIEpTVmFsdWU6OnRvSW50ZWdlcihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Ci17Ci0gICAgaWYg
KGlzSW50MzIoKSkKLSAgICAgICAgcmV0dXJuIGFzSW50MzIoKTsKLSAgICBkb3VibGUgZCA9IHRv
TnVtYmVyKGV4ZWMpOwotICAgIHJldHVybiBpc25hbihkKSA/IDAuMCA6IHRydW5jKGQpOwotfQot
Ci1kb3VibGUgSlNWYWx1ZTo6dG9JbnRlZ2VyUHJlc2VydmVOYU4oRXhlY1N0YXRlKiBleGVjKSBj
b25zdAotewotICAgIGlmIChpc0ludDMyKCkpCi0gICAgICAgIHJldHVybiBhc0ludDMyKCk7Ci0g
ICAgcmV0dXJuIHRydW5jKHRvTnVtYmVyKGV4ZWMpKTsKLX0KLQotZG91YmxlIEpTVmFsdWU6OnRv
TnVtYmVyU2xvd0Nhc2UoRXhlY1N0YXRlKiBleGVjKSBjb25zdAotewotICAgIEFTU0VSVCghaXNJ
bnQzMigpICYmICFpc0RvdWJsZSgpKTsKLSAgICBpZiAoaXNDZWxsKCkpCi0gICAgICAgIHJldHVy
biBhc0NlbGwoKS0+dG9OdW1iZXIoZXhlYyk7Ci0gICAgaWYgKGlzVHJ1ZSgpKQotICAgICAgICBy
ZXR1cm4gMS4wOwotICAgIHJldHVybiBpc1VuZGVmaW5lZCgpID8gUU5hTiA6IDA7IC8vIG51bGwg
YW5kIGZhbHNlIGJvdGggY29udmVydCB0byAwLgotfQotCi1KU09iamVjdCogSlNWYWx1ZTo6dG9P
YmplY3RTbG93Q2FzZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKCFpc0NlbGwoKSk7Ci0KLSAgICBpZiAoaXNJbnQzMigp
IHx8IGlzRG91YmxlKCkpCi0gICAgICAgIHJldHVybiBjb25zdHJ1Y3ROdW1iZXIoZXhlYywgZ2xv
YmFsT2JqZWN0LCBhc1ZhbHVlKCkpOwotICAgIGlmIChpc1RydWUoKSB8fCBpc0ZhbHNlKCkpCi0g
ICAgICAgIHJldHVybiBjb25zdHJ1Y3RCb29sZWFuRnJvbUltbWVkaWF0ZUJvb2xlYW4oZXhlYywg
Z2xvYmFsT2JqZWN0LCBhc1ZhbHVlKCkpOwotCi0gICAgQVNTRVJUKGlzVW5kZWZpbmVkT3JOdWxs
KCkpOwotICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlTm90QW5PYmplY3RFcnJvcihleGVjLCAq
dGhpcykpOwotICAgIHJldHVybiBKU05vdEFuT2JqZWN0OjpjcmVhdGUoZXhlYyk7Ci19Ci0KLUpT
T2JqZWN0KiBKU1ZhbHVlOjp0b1RoaXNPYmplY3RTbG93Q2FzZShFeGVjU3RhdGUqIGV4ZWMpIGNv
bnN0Ci17Ci0gICAgQVNTRVJUKCFpc0NlbGwoKSk7Ci0KLSAgICBpZiAoaXNJbnQzMigpIHx8IGlz
RG91YmxlKCkpCi0gICAgICAgIHJldHVybiBjb25zdHJ1Y3ROdW1iZXIoZXhlYywgZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLCBhc1ZhbHVlKCkpOwotICAgIGlmIChpc1RydWUoKSB8fCBpc0Zh
bHNlKCkpCi0gICAgICAgIHJldHVybiBjb25zdHJ1Y3RCb29sZWFuRnJvbUltbWVkaWF0ZUJvb2xl
YW4oZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBhc1ZhbHVlKCkpOwotICAgIEFT
U0VSVChpc1VuZGVmaW5lZE9yTnVsbCgpKTsKLSAgICByZXR1cm4gZXhlYy0+Z2xvYmFsVGhpc1Zh
bHVlKCk7Ci19Ci0KLUpTT2JqZWN0KiBKU1ZhbHVlOjpzeW50aGVzaXplUHJvdG90eXBlKEV4ZWNT
dGF0ZSogZXhlYykgY29uc3QKLXsKLSAgICBpZiAoaXNDZWxsKCkpIHsKLSAgICAgICAgQVNTRVJU
KGlzU3RyaW5nKCkpOwotICAgICAgICByZXR1cm4gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
LT5zdHJpbmdQcm90b3R5cGUoKTsKLSAgICB9Ci0KLSAgICBpZiAoaXNOdW1iZXIoKSkKLSAgICAg
ICAgcmV0dXJuIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+bnVtYmVyUHJvdG90eXBlKCk7
Ci0gICAgaWYgKGlzQm9vbGVhbigpKQotICAgICAgICByZXR1cm4gZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpLT5ib29sZWFuUHJvdG90eXBlKCk7Ci0KLSAgICBBU1NFUlQoaXNVbmRlZmluZWRP
ck51bGwoKSk7Ci0gICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVOb3RBbk9iamVjdEVycm9yKGV4
ZWMsICp0aGlzKSk7Ci0gICAgcmV0dXJuIEpTTm90QW5PYmplY3Q6OmNyZWF0ZShleGVjKTsKLX0K
LQotLy8gRUNNQSA4LjcuMgotdm9pZCBKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZShFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYgc2xvdCkKLXsKLSAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5n
bG9iYWxEYXRhKCk7Ci0KLSAgICB1bnNpZ25lZCBpbmRleCA9IHByb3BlcnR5TmFtZS5hc0luZGV4
KCk7Ci0gICAgaWYgKGluZGV4ICE9IFByb3BlcnR5TmFtZTo6Tm90QW5JbmRleCkgewotICAgICAg
ICBwdXRUb1ByaW1pdGl2ZUJ5SW5kZXgoZXhlYywgaW5kZXgsIHZhbHVlLCBzbG90LmlzU3RyaWN0
TW9kZSgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIENoZWNrIGlmIHRoZXJl
IGFyZSBhbnkgc2V0dGVycyBvciBnZXR0ZXJzIGluIHRoZSBwcm90b3R5cGUgY2hhaW4KLSAgICBK
U09iamVjdCogb2JqID0gc3ludGhlc2l6ZVByb3RvdHlwZShleGVjKTsKLSAgICBKU1ZhbHVlIHBy
b3RvdHlwZTsKLSAgICBpZiAocHJvcGVydHlOYW1lICE9IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS51
bmRlcnNjb3JlUHJvdG8pIHsKLSAgICAgICAgZm9yICg7ICFvYmotPnN0cnVjdHVyZSgpLT5oYXNS
ZWFkT25seU9yR2V0dGVyU2V0dGVyUHJvcGVydGllc0V4Y2x1ZGluZ1Byb3RvKCk7IG9iaiA9IGFz
T2JqZWN0KHByb3RvdHlwZSkpIHsKLSAgICAgICAgICAgIHByb3RvdHlwZSA9IG9iai0+cHJvdG90
eXBlKCk7Ci0gICAgICAgICAgICBpZiAocHJvdG90eXBlLmlzTnVsbCgpKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCi0gICAgICAgICAgICAgICAgICAgIHRocm93
VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQot
Ci0gICAgZm9yICg7IDsgb2JqID0gYXNPYmplY3QocHJvdG90eXBlKSkgewotICAgICAgICB1bnNp
Z25lZCBhdHRyaWJ1dGVzOwotICAgICAgICBKU0NlbGwqIHNwZWNpZmljVmFsdWU7Ci0gICAgICAg
IFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IG9iai0+c3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRh
LCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpOwotICAgICAgICBpZiAo
b2Zmc2V0ICE9IGludmFsaWRPZmZzZXQpIHsKLSAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVzICYg
UmVhZE9ubHkpIHsKLSAgICAgICAgICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKLSAg
ICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywg
U3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBKU1ZhbHVlIGdzID0gb2JqLT5n
ZXREaXJlY3Qob2Zmc2V0KTsKLSAgICAgICAgICAgIGlmIChncy5pc0dldHRlclNldHRlcigpKSB7
Ci0gICAgICAgICAgICAgICAgSlNPYmplY3QqIHNldHRlckZ1bmMgPSBhc0dldHRlclNldHRlcihn
cyktPnNldHRlcigpOyAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKCFzZXR0ZXJGdW5jKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQotICAgICAgICAg
ICAgICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKCJzZXR0aW5nIGEgcHJvcGVydHkgdGhhdCBoYXMgb25seSBhIGdldHRlciIpKSk7
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgCi0gICAgICAgICAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgICAgICAg
ICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBzZXR0ZXJGdW5jLT5tZXRob2RUYWJsZSgpLT5nZXRD
YWxsRGF0YShzZXR0ZXJGdW5jLCBjYWxsRGF0YSk7Ci0gICAgICAgICAgICAgICAgTWFya2VkQXJn
dW1lbnRCdWZmZXIgYXJnczsKLSAgICAgICAgICAgICAgICBhcmdzLmFwcGVuZCh2YWx1ZSk7Ci0K
LSAgICAgICAgICAgICAgICAvLyBJZiB0aGlzIGlzIFdlYkNvcmUncyBnbG9iYWwgb2JqZWN0IHRo
ZW4gd2UgbmVlZCB0byBzdWJzdGl0dXRlIHRoZSBzaGVsbC4KLSAgICAgICAgICAgICAgICBjYWxs
KGV4ZWMsIHNldHRlckZ1bmMsIGNhbGxUeXBlLCBjYWxsRGF0YSwgKnRoaXMsIGFyZ3MpOwotICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gSWYg
dGhlcmUncyBhbiBleGlzdGluZyBwcm9wZXJ0eSBvbiB0aGUgb2JqZWN0IG9yIG9uZSBvZiBpdHMg
Ci0gICAgICAgICAgICAvLyBwcm90b3R5cGVzIGl0IHNob3VsZCBiZSByZXBsYWNlZCwgc28gYnJl
YWsgaGVyZS4KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAgcHJvdG90
eXBlID0gb2JqLT5wcm90b3R5cGUoKTsKLSAgICAgICAgaWYgKHByb3RvdHlwZS5pc051bGwoKSkK
LSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLSAgICAKLSAgICBpZiAoc2xvdC5pc1N0cmljdE1v
ZGUoKSkKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJv
cGVydHlXcml0ZUVycm9yKTsKLSAgICByZXR1cm47Ci19Ci0KLXZvaWQgSlNWYWx1ZTo6cHV0VG9Q
cmltaXRpdmVCeUluZGV4KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQotewotICAgIGlmIChwcm9wZXJ0eU5hbWUg
PiBNQVhfQVJSQVlfSU5ERVgpIHsKLSAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qoc2hvdWxk
VGhyb3cpOwotICAgICAgICBwdXRUb1ByaW1pdGl2ZShleGVjLCBJZGVudGlmaWVyOjpmcm9tKGV4
ZWMsIHByb3BlcnR5TmFtZSksIHZhbHVlLCBzbG90KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICAKLSAgICBpZiAoc3ludGhlc2l6ZVByb3RvdHlwZShleGVjKS0+YXR0ZW1wdFRvSW50ZXJj
ZXB0UHV0QnlJbmRleE9uSG9sZUZvclByb3RvdHlwZShleGVjLCAqdGhpcywgcHJvcGVydHlOYW1l
LCB2YWx1ZSwgc2hvdWxkVGhyb3cpKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgaWYgKHNo
b3VsZFRocm93KQotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9u
bHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwotfQotCi12b2lkIEpTVmFsdWU6OmR1bXAoUHJpbnRTdHJl
YW0mIG91dCkgY29uc3QKLXsKLSAgICBpZiAoISp0aGlzKQotICAgICAgICBvdXQucHJpbnQoIjxK
U1ZhbHVlKCk+Iik7Ci0gICAgZWxzZSBpZiAoaXNJbnQzMigpKQotICAgICAgICBvdXQucHJpbnRm
KCJJbnQzMjogJWQiLCBhc0ludDMyKCkpOwotICAgIGVsc2UgaWYgKGlzRG91YmxlKCkpIHsKLSNp
ZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBvdXQucHJpbnRmKCJEb3VibGU6ICVsbGQsICVsZiIs
IChsb25nIGxvbmcpcmVpbnRlcnByZXREb3VibGVUb0ludDY0KGFzRG91YmxlKCkpLCBhc0RvdWJs
ZSgpKTsKLSNlbHNlCi0gICAgICAgIHVuaW9uIHsKLSAgICAgICAgICAgIGRvdWJsZSBhc0RvdWJs
ZTsKLSAgICAgICAgICAgIHVpbnQzMl90IGFzVHdvSW50MzJzWzJdOwotICAgICAgICB9IHU7Ci0g
ICAgICAgIHUuYXNEb3VibGUgPSBhc0RvdWJsZSgpOwotICAgICAgICBvdXQucHJpbnRmKCJEb3Vi
bGU6ICUwOHg6JTA4eCwgJWxmIiwgdS5hc1R3b0ludDMyc1sxXSwgdS5hc1R3b0ludDMyc1swXSwg
YXNEb3VibGUoKSk7Ci0jZW5kaWYKLSAgICB9IGVsc2UgaWYgKGlzQ2VsbCgpKSB7Ci0gICAgICAg
IGlmIChhc0NlbGwoKS0+aW5oZXJpdHMoJlN0cnVjdHVyZTo6c19pbmZvKSkgewotICAgICAgICAg
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBqc0Nhc3Q8U3RydWN0dXJlKj4oYXNDZWxsKCkpOwot
ICAgICAgICAgICAgb3V0LnByaW50KAotICAgICAgICAgICAgICAgICJTdHJ1Y3R1cmU6ICIsIFJh
d1BvaW50ZXIoc3RydWN0dXJlKSwgIjogIiwgc3RydWN0dXJlLT5jbGFzc0luZm8oKS0+Y2xhc3NO
YW1lLAotICAgICAgICAgICAgICAgICIsICIsIEluZGV4aW5nVHlwZUR1bXAoc3RydWN0dXJlLT5p
bmRleGluZ1R5cGVJbmNsdWRpbmdIaXN0b3J5KCkpKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIG91dC5wcmludCgiQ2VsbDogIiwgUmF3UG9pbnRlcihhc0NlbGwoKSkpOwotICAgICAg
ICAgICAgaWYgKGlzT2JqZWN0KCkgJiYgYXNPYmplY3QoKnRoaXMpLT5idXR0ZXJmbHkoKSkKLSAg
ICAgICAgICAgICAgICBvdXQucHJpbnQoIi0+IiwgUmF3UG9pbnRlcihhc09iamVjdCgqdGhpcykt
PmJ1dHRlcmZseSgpKSk7Ci0gICAgICAgICAgICBvdXQucHJpbnQoCi0gICAgICAgICAgICAgICAg
IiAoIiwgUmF3UG9pbnRlcihhc0NlbGwoKS0+c3RydWN0dXJlKCkpLCAiOiAiLCBhc0NlbGwoKS0+
c3RydWN0dXJlKCktPmNsYXNzSW5mbygpLT5jbGFzc05hbWUsCi0gICAgICAgICAgICAgICAgIiwg
IiwgSW5kZXhpbmdUeXBlRHVtcChhc0NlbGwoKS0+c3RydWN0dXJlKCktPmluZGV4aW5nVHlwZUlu
Y2x1ZGluZ0hpc3RvcnkoKSksICIpIik7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKGlzVHJ1
ZSgpKQotICAgICAgICBvdXQucHJpbnQoIlRydWUiKTsKLSAgICBlbHNlIGlmIChpc0ZhbHNlKCkp
Ci0gICAgICAgIG91dC5wcmludCgiRmFsc2UiKTsKLSAgICBlbHNlIGlmIChpc051bGwoKSkKLSAg
ICAgICAgb3V0LnByaW50KCJOdWxsIik7Ci0gICAgZWxzZSBpZiAoaXNVbmRlZmluZWQoKSkKLSAg
ICAgICAgb3V0LnByaW50KCJVbmRlZmluZWQiKTsKLSAgICBlbHNlCi0gICAgICAgIG91dC5wcmlu
dCgiSU5WQUxJRCIpOwotfQotCi0vLyBUaGlzIGluIHRoZSBUb0ludDMyIG9wZXJhdGlvbiBpcyBk
ZWZpbmVkIGluIHNlY3Rpb24gOS41IG9mIHRoZSBFQ01BLTI2MiBzcGVjLgotLy8gTm90ZSB0aGF0
IHRoaXMgb3BlcmF0aW9uIGlzIGlkZW50aWNhbCB0byBUb1VJbnQzMiBvdGhlciB0aGFuIHRvIGlu
dGVycHJldGF0aW9uCi0vLyBvZiB0aGUgcmVzdWx0aW5nIGJpdC1wYXR0ZXJuIChhcyBzdWNoIHRo
aXMgbWV0b2QgaXMgYWxzbyBjYWxsZWQgdG8gaW1wbGVtZW50Ci0vLyBUb1VJbnQzMikuCi0vLwot
Ly8gVGhlIG9wZXJhdGlvbiBjYW4gYmUgZGVzY2liZWQgYXMgcm91bmQgdG93YXJkcyB6ZXJvLCB0
aGVuIHNlbGVjdCB0aGUgMzIgbGVhc3QKLS8vIGJpdHMgb2YgdGhlIHJlc3VsdGluZyB2YWx1ZSBp
biAycy1jb21wbGVtZW50IHJlcHJlc2VudGF0aW9uLgotaW50MzJfdCB0b0ludDMyKGRvdWJsZSBu
dW1iZXIpCi17Ci0gICAgaW50NjRfdCBiaXRzID0gV1RGOjpiaXR3aXNlX2Nhc3Q8aW50NjRfdD4o
bnVtYmVyKTsKLSAgICBpbnQzMl90IGV4cCA9IChzdGF0aWNfY2FzdDxpbnQzMl90PihiaXRzID4+
IDUyKSAmIDB4N2ZmKSAtIDB4M2ZmOwotCi0gICAgLy8gSWYgZXhwb25lbnQgPCAwIHRoZXJlIHdp
bGwgYmUgbm8gYml0cyB0byB0aGUgbGVmdCBvZiB0aGUgZGVjaW1hbCBwb2ludAotICAgIC8vIGFm
dGVyIHJvdW5kaW5nOyBpZiB0aGUgZXhwb25lbnQgaXMgPiA4MyB0aGVuIG5vIGJpdHMgb2YgcHJl
Y2lzaW9uIGNhbiBiZQotICAgIC8vIGxlZnQgaW4gdGhlIGxvdyAzMi1iaXQgcmFuZ2Ugb2YgdGhl
IHJlc3VsdCAoSUVFRS03NTQgZG91YmxlcyBoYXZlIDUyIGJpdHMKLSAgICAvLyBvZiBmcmFjdGlv
bmFsIHByZWNpc2lvbikuCi0gICAgLy8gTm90ZSB0aGlzIGNhc2UgaGFuZGxlcyAwLCAtMCwgYW5k
IGFsbCBpbmZpbnRlLCBOYU4sICYgZGVub3JtYWwgdmFsdWUuIAotICAgIGlmIChleHAgPCAwIHx8
IGV4cCA+IDgzKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIC8vIFNlbGVjdCB0aGUgYXBwcm9w
cmlhdGUgMzItYml0cyBmcm9tIHRoZSBmbG9hdGluZyBwb2ludCBtYW50aXNzYS4gIElmIHRoZQot
ICAgIC8vIGV4cG9uZW50IGlzIDUyIHRoZW4gdGhlIGJpdHMgd2UgbmVlZCB0byBzZWxlY3QgYXJl
IGFscmVhZHkgYWxpZ25lZCB0byB0aGUKLSAgICAvLyBsb3dlc3QgYml0cyBvZiB0aGUgNjQtYml0
IGludGVnZXIgcmVwcmVzZW50YXRpb24gb2YgdGdoZSBudW1iZXIsIG5vIG5lZWQKLSAgICAvLyB0
byBzaGlmdC4gIElmIHRoZSBleHBvbmVudCBpcyBncmVhdGVyIHRoYW4gNTIgd2UgbmVlZCB0byBz
aGlmdCB0aGUgdmFsdWUKLSAgICAvLyBsZWZ0IGJ5IChleHAgLSA1MiksIGlmIHRoZSB2YWx1ZSBp
cyBsZXNzIHRoYW4gNTIgd2UgbmVlZCB0byBzaGlmdCByaWdodAotICAgIC8vIGFjY29yZGluZ2x5
LgotICAgIGludDMyX3QgcmVzdWx0ID0gKGV4cCA+IDUyKQotICAgICAgICA/IHN0YXRpY19jYXN0
PGludDMyX3Q+KGJpdHMgPDwgKGV4cCAtIDUyKSkKLSAgICAgICAgOiBzdGF0aWNfY2FzdDxpbnQz
Ml90PihiaXRzID4+ICg1MiAtIGV4cCkpOwotCi0gICAgLy8gSUVFRS03NTQgZG91YmxlIHByZWNp
c2lvbiB2YWx1ZXMgYXJlIHN0b3JlZCBvbWl0dGluZyBhbiBpbXBsaWNpdCAxIGJlZm9yZQotICAg
IC8vIHRoZSBkZWNpbWFsIHBvaW50OyB3ZSBuZWVkIHRvIHJlaW5zZXJ0IHRoaXMgbm93LiAgV2Ug
bWF5IGFsc28gdGhlIHNoaWZ0ZWQKLSAgICAvLyBpbnZhbGlkIGJpdHMgaW50byB0aGUgcmVzdWx0
IHRoYXQgYXJlIG5vdCBhIHBhcnQgb2YgdGhlIG1hbnRpc3NhICh0aGUgc2lnbgotICAgIC8vIGFu
ZCBleHBvbmVudCBiaXRzIGZyb20gdGhlIGZsb2F0aW5ncG9pbnQgcmVwcmVzZW50YXRpb24pOyBt
YXNrIHRoZXNlIG91dC4KLSAgICBpZiAoZXhwIDwgMzIpIHsKLSAgICAgICAgaW50MzJfdCBtaXNz
aW5nT25lID0gMSA8PCBleHA7Ci0gICAgICAgIHJlc3VsdCAmPSBtaXNzaW5nT25lIC0gMTsKLSAg
ICAgICAgcmVzdWx0ICs9IG1pc3NpbmdPbmU7Ci0gICAgfQotCi0gICAgLy8gSWYgdGhlIGlucHV0
IHZhbHVlIHdhcyBuZWdhdGl2ZSAod2UgY291bGQgdGVzdCBlaXRoZXIgJ251bWJlcicgb3IgJ2Jp
dHMnLAotICAgIC8vIGJ1dCB0ZXN0aW5nICdiaXRzJyBpcyBsaWtlbHkgZmFzdGVyKSBpbnZlcnQg
dGhlIHJlc3VsdCBhcHByb3ByaWF0ZWx5LgotICAgIHJldHVybiBiaXRzIDwgMCA/IC1yZXN1bHQg
OiByZXN1bHQ7Ci19Ci0KLWJvb2wgSlNWYWx1ZTo6aXNWYWxpZENhbGxlZSgpCi17Ci0gICAgcmV0
dXJuIGFzT2JqZWN0KGFzQ2VsbCgpKS0+Z2xvYmFsT2JqZWN0KCk7Ci19Ci0KLUpTU3RyaW5nKiBK
U1ZhbHVlOjp0b1N0cmluZ1Nsb3dDYXNlKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKLXsKLSAgICBK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7Ci0gICAgQVNTRVJU
KCFpc1N0cmluZygpKTsKLSAgICBpZiAoaXNJbnQzMigpKQotICAgICAgICByZXR1cm4ganNTdHJp
bmcoJmdsb2JhbERhdGEsIGdsb2JhbERhdGEubnVtZXJpY1N0cmluZ3MuYWRkKGFzSW50MzIoKSkp
OwotICAgIGlmIChpc0RvdWJsZSgpKQotICAgICAgICByZXR1cm4ganNTdHJpbmcoJmdsb2JhbERh
dGEsIGdsb2JhbERhdGEubnVtZXJpY1N0cmluZ3MuYWRkKGFzRG91YmxlKCkpKTsKLSAgICBpZiAo
aXNUcnVlKCkpCi0gICAgICAgIHJldHVybiBnbG9iYWxEYXRhLnNtYWxsU3RyaW5ncy50cnVlU3Ry
aW5nKCk7Ci0gICAgaWYgKGlzRmFsc2UoKSkKLSAgICAgICAgcmV0dXJuIGdsb2JhbERhdGEuc21h
bGxTdHJpbmdzLmZhbHNlU3RyaW5nKCk7Ci0gICAgaWYgKGlzTnVsbCgpKQotICAgICAgICByZXR1
cm4gZ2xvYmFsRGF0YS5zbWFsbFN0cmluZ3MubnVsbFN0cmluZygpOwotICAgIGlmIChpc1VuZGVm
aW5lZCgpKQotICAgICAgICByZXR1cm4gZ2xvYmFsRGF0YS5zbWFsbFN0cmluZ3MudW5kZWZpbmVk
U3RyaW5nKCk7Ci0KLSAgICBBU1NFUlQoaXNDZWxsKCkpOwotICAgIEpTVmFsdWUgdmFsdWUgPSBh
c0NlbGwoKS0+dG9QcmltaXRpdmUoZXhlYywgUHJlZmVyU3RyaW5nKTsKLSAgICBpZiAoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiBqc0VtcHR5U3RyaW5nKGV4ZWMpOwotICAg
IEFTU0VSVCghdmFsdWUuaXNPYmplY3QoKSk7Ci0gICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKGV4
ZWMpOwotfQotCi1TdHJpbmcgSlNWYWx1ZTo6dG9XVEZTdHJpbmdTbG93Q2FzZShFeGVjU3RhdGUq
IGV4ZWMpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGlubGluZUpTVmFsdWVOb3RTdHJpbmd0b1N0cmlu
ZygqdGhpcywgZXhlYyk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAkocmV2aXNpb24gMTQwMTk2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ5
NyArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAo
cG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtA
cG9zdC5jb20pCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA3LCAyMDA4
LCAyMDA5LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwot
ICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKgotICov
Ci0KLSNpZm5kZWYgSlNWYWx1ZV9oCi0jZGVmaW5lIEpTVmFsdWVfaAotCi0jaW5jbHVkZSA8bWF0
aC5oPgotI2luY2x1ZGUgPHN0ZGRlZi5oPiAvLyBmb3Igc2l6ZV90Ci0jaW5jbHVkZSA8c3RkaW50
Lmg+Ci0jaW5jbHVkZSA8d3RmL0Fsd2F5c0lubGluZS5oPgotI2luY2x1ZGUgPHd0Zi9Bc3NlcnRp
b25zLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0
cy5oPgotI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL1N0ZExpYkV4
dHJhcy5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLQotLy8gVGhpcyBpcyB1c2VkIGEgbG90IHRocm91
Z2hvdXQgSmF2YVNjcmlwdENvcmUgZm9yIGV2ZXJ5dGhpbmcgZnJvbSB2YWx1ZSBib3hpbmcgdG8g
bWFya2luZwotLy8gdmFsdWVzIGFzIGJlaW5nIG1pc3NpbmcsIHNvIGl0IGlzIHVzZWZ1bCB0byBo
YXZlIGl0IGFiYnJldmlhdGVkLgotI2RlZmluZSBRTmFOIChzdGQ6Om51bWVyaWNfbGltaXRzPGRv
dWJsZT46OnF1aWV0X05hTigpKQotCi1jbGFzcyBFeGVjU3RhdGU7Ci1jbGFzcyBKU0NlbGw7Ci1j
bGFzcyBKU0dsb2JhbERhdGE7Ci1jbGFzcyBKU0dsb2JhbE9iamVjdDsKLWNsYXNzIEpTT2JqZWN0
OwotY2xhc3MgSlNTdHJpbmc7Ci1jbGFzcyBQcm9wZXJ0eU5hbWU7Ci1jbGFzcyBQcm9wZXJ0eVNs
b3Q7Ci1jbGFzcyBQdXRQcm9wZXJ0eVNsb3Q7Ci0jaWYgRU5BQkxFKERGR19KSVQpCi1uYW1lc3Bh
Y2UgREZHIHsKLWNsYXNzIEFzc2VtYmx5SGVscGVyczsKLWNsYXNzIEpJVENvbXBpbGVyOwotY2xh
c3MgSklUQ29kZUdlbmVyYXRvcjsKLWNsYXNzIEpTVmFsdWVTb3VyY2U7Ci1jbGFzcyBPU1JFeGl0
Q29tcGlsZXI7Ci1jbGFzcyBTcGVjdWxhdGl2ZUpJVDsKLX0KLSNlbmRpZgotI2lmIEVOQUJMRShM
TElOVF9DX0xPT1ApCi1uYW1lc3BhY2UgTExJbnQgewotY2xhc3MgQ0xvb3A7Ci19Ci0jZW5kaWYK
LQotc3RydWN0IENsYXNzSW5mbzsKLXN0cnVjdCBJbnN0cnVjdGlvbjsKLXN0cnVjdCBNZXRob2RU
YWJsZTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+IGNsYXNzIFdyaXRlQmFycmllckJhc2U7Ci0KLWVu
dW0gUHJlZmVycmVkUHJpbWl0aXZlVHlwZSB7IE5vUHJlZmVyZW5jZSwgUHJlZmVyTnVtYmVyLCBQ
cmVmZXJTdHJpbmcgfTsKLQotCi10eXBlZGVmIGludDY0X3QgRW5jb2RlZEpTVmFsdWU7Ci0gICAg
Ci11bmlvbiBFbmNvZGVkVmFsdWVEZXNjcmlwdG9yIHsKLSAgICBpbnQ2NF90IGFzSW50NjQ7Ci0j
aWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICBkb3VibGUgYXNEb3VibGU7Ci0jZWxpZiBVU0UoSlNW
QUxVRTY0KQotICAgIEpTQ2VsbCogcHRyOwotI2VuZGlmCi0gICAgICAgIAotI2lmIENQVShCSUdf
RU5ESUFOKQotICAgIHN0cnVjdCB7Ci0gICAgICAgIGludDMyX3QgdGFnOwotICAgICAgICBpbnQz
Ml90IHBheWxvYWQ7Ci0gICAgfSBhc0JpdHM7Ci0jZWxzZQotICAgIHN0cnVjdCB7Ci0gICAgICAg
IGludDMyX3QgcGF5bG9hZDsKLSAgICAgICAgaW50MzJfdCB0YWc7Ci0gICAgfSBhc0JpdHM7Ci0j
ZW5kaWYKLX07Ci0KLS8vIFRoaXMgaW1wbGVtZW50cyBUb0ludDMyLCBkZWZpbmVkIGluIEVDTUEt
MjYyIDkuNS4KLUpTX0VYUE9SVF9QUklWQVRFIGludDMyX3QgdG9JbnQzMihkb3VibGUpOwotCi0v
LyBUaGlzIGltcGxlbWVudHMgVG9VSW50MzIsIGRlZmluZWQgaW4gRUNNQS0yNjIgOS42LgotaW5s
aW5lIHVpbnQzMl90IHRvVUludDMyKGRvdWJsZSBudW1iZXIpCi17Ci0gICAgLy8gQXMgY29tbWVu
dGVkIGluIHRoZSBzcGVjLCB0aGUgb3BlcmF0aW9uIG9mIFRvSW50MzIgYW5kIFRvVWludDMyIG9u
bHkgZGlmZmVyCi0gICAgLy8gaW4gaG93IHRoZSByZXN1bHQgaXMgaW50ZXJwcmV0ZWQ7IHNlZSBO
T1RFcyBpbiBzZWN0aW9ucyA5LjUgYW5kIDkuNi4KLSAgICByZXR1cm4gdG9JbnQzMihudW1iZXIp
OwotfQotCi1jbGFzcyBKU1ZhbHVlIHsKLSAgICBmcmllbmQgc3RydWN0IEVuY29kZWRKU1ZhbHVl
SGFzaFRyYWl0czsKLSAgICBmcmllbmQgY2xhc3MgSklUOwotICAgIGZyaWVuZCBjbGFzcyBKSVRT
dHViczsKLSAgICBmcmllbmQgY2xhc3MgSklUU3R1YkNhbGw7Ci0gICAgZnJpZW5kIGNsYXNzIEpT
SW50ZXJmYWNlSklUOwotICAgIGZyaWVuZCBjbGFzcyBTcGVjaWFsaXplZFRodW5rSklUOwotI2lm
IEVOQUJMRShERkdfSklUKQotICAgIGZyaWVuZCBjbGFzcyBERkc6OkFzc2VtYmx5SGVscGVyczsK
LSAgICBmcmllbmQgY2xhc3MgREZHOjpKSVRDb21waWxlcjsKLSAgICBmcmllbmQgY2xhc3MgREZH
OjpKSVRDb2RlR2VuZXJhdG9yOwotICAgIGZyaWVuZCBjbGFzcyBERkc6OkpTVmFsdWVTb3VyY2U7
Ci0gICAgZnJpZW5kIGNsYXNzIERGRzo6T1NSRXhpdENvbXBpbGVyOwotICAgIGZyaWVuZCBjbGFz
cyBERkc6OlNwZWN1bGF0aXZlSklUOwotI2VuZGlmCi0jaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkK
LSAgICBmcmllbmQgY2xhc3MgTExJbnQ6OkNMb29wOwotI2VuZGlmCi0KLXB1YmxpYzoKLSNpZiBV
U0UoSlNWQUxVRTMyXzY0KQotICAgIGVudW0geyBJbnQzMlRhZyA9ICAgICAgICAweGZmZmZmZmZm
IH07Ci0gICAgZW51bSB7IEJvb2xlYW5UYWcgPSAgICAgIDB4ZmZmZmZmZmUgfTsKLSAgICBlbnVt
IHsgTnVsbFRhZyA9ICAgICAgICAgMHhmZmZmZmZmZCB9OwotICAgIGVudW0geyBVbmRlZmluZWRU
YWcgPSAgICAweGZmZmZmZmZjIH07Ci0gICAgZW51bSB7IENlbGxUYWcgPSAgICAgICAgIDB4ZmZm
ZmZmZmIgfTsKLSAgICBlbnVtIHsgRW1wdHlWYWx1ZVRhZyA9ICAgMHhmZmZmZmZmYSB9OwotICAg
IGVudW0geyBEZWxldGVkVmFsdWVUYWcgPSAweGZmZmZmZmY5IH07Ci0KLSAgICBlbnVtIHsgTG93
ZXN0VGFnID0gIERlbGV0ZWRWYWx1ZVRhZyB9OwotI2VuZGlmCi0KLSAgICBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlKEpTVmFsdWUpOwotICAgIHN0YXRpYyBKU1ZhbHVlIGRlY29kZShFbmNv
ZGVkSlNWYWx1ZSk7Ci0KLSAgICBlbnVtIEpTTnVsbFRhZyB7IEpTTnVsbCB9OwotICAgIGVudW0g
SlNVbmRlZmluZWRUYWcgeyBKU1VuZGVmaW5lZCB9OwotICAgIGVudW0gSlNUcnVlVGFnIHsgSlNU
cnVlIH07Ci0gICAgZW51bSBKU0ZhbHNlVGFnIHsgSlNGYWxzZSB9OwotICAgIGVudW0gRW5jb2Rl
QXNEb3VibGVUYWcgeyBFbmNvZGVBc0RvdWJsZSB9OwotCi0gICAgSlNWYWx1ZSgpOwotICAgIEpT
VmFsdWUoSlNOdWxsVGFnKTsKLSAgICBKU1ZhbHVlKEpTVW5kZWZpbmVkVGFnKTsKLSAgICBKU1Zh
bHVlKEpTVHJ1ZVRhZyk7Ci0gICAgSlNWYWx1ZShKU0ZhbHNlVGFnKTsKLSAgICBKU1ZhbHVlKEpT
Q2VsbCogcHRyKTsKLSAgICBKU1ZhbHVlKGNvbnN0IEpTQ2VsbCogcHRyKTsKLQotICAgIC8vIE51
bWJlcnMKLSAgICBKU1ZhbHVlKEVuY29kZUFzRG91YmxlVGFnLCBkb3VibGUpOwotICAgIGV4cGxp
Y2l0IEpTVmFsdWUoZG91YmxlKTsKLSAgICBleHBsaWNpdCBKU1ZhbHVlKGNoYXIpOwotICAgIGV4
cGxpY2l0IEpTVmFsdWUodW5zaWduZWQgY2hhcik7Ci0gICAgZXhwbGljaXQgSlNWYWx1ZShzaG9y
dCk7Ci0gICAgZXhwbGljaXQgSlNWYWx1ZSh1bnNpZ25lZCBzaG9ydCk7Ci0gICAgZXhwbGljaXQg
SlNWYWx1ZShpbnQpOwotICAgIGV4cGxpY2l0IEpTVmFsdWUodW5zaWduZWQpOwotICAgIGV4cGxp
Y2l0IEpTVmFsdWUobG9uZyk7Ci0gICAgZXhwbGljaXQgSlNWYWx1ZSh1bnNpZ25lZCBsb25nKTsK
LSAgICBleHBsaWNpdCBKU1ZhbHVlKGxvbmcgbG9uZyk7Ci0gICAgZXhwbGljaXQgSlNWYWx1ZSh1
bnNpZ25lZCBsb25nIGxvbmcpOwotCi0gICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0OwotICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBKU1ZhbHVlJiBvdGhlcikgY29uc3Q7Ci0gICAgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IEpTVmFsdWUmIG90aGVyKSBjb25zdDsKLQotICAgIGJvb2wgaXNJbnQzMigp
IGNvbnN0OwotICAgIGJvb2wgaXNVSW50MzIoKSBjb25zdDsKLSAgICBib29sIGlzRG91YmxlKCkg
Y29uc3Q7Ci0gICAgYm9vbCBpc1RydWUoKSBjb25zdDsKLSAgICBib29sIGlzRmFsc2UoKSBjb25z
dDsKLQotICAgIGludDMyX3QgYXNJbnQzMigpIGNvbnN0OwotICAgIHVpbnQzMl90IGFzVUludDMy
KCkgY29uc3Q7Ci0gICAgZG91YmxlIGFzRG91YmxlKCkgY29uc3Q7Ci0gICAgYm9vbCBhc0Jvb2xl
YW4oKSBjb25zdDsKLSAgICBkb3VibGUgYXNOdW1iZXIoKSBjb25zdDsKLQotICAgIC8vIFF1ZXJ5
aW5nIHRoZSB0eXBlLgotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwotICAgIGJvb2wgaXNGdW5j
dGlvbigpIGNvbnN0OwotICAgIGJvb2wgaXNVbmRlZmluZWQoKSBjb25zdDsKLSAgICBib29sIGlz
TnVsbCgpIGNvbnN0OwotICAgIGJvb2wgaXNVbmRlZmluZWRPck51bGwoKSBjb25zdDsKLSAgICBi
b29sIGlzQm9vbGVhbigpIGNvbnN0OwotICAgIGJvb2wgaXNOdW1iZXIoKSBjb25zdDsKLSAgICBi
b29sIGlzU3RyaW5nKCkgY29uc3Q7Ci0gICAgYm9vbCBpc1ByaW1pdGl2ZSgpIGNvbnN0OwotICAg
IGJvb2wgaXNHZXR0ZXJTZXR0ZXIoKSBjb25zdDsKLSAgICBib29sIGlzT2JqZWN0KCkgY29uc3Q7
Ci0gICAgYm9vbCBpbmhlcml0cyhjb25zdCBDbGFzc0luZm8qKSBjb25zdDsKLSAgICAgICAgCi0g
ICAgLy8gRXh0cmFjdGluZyB0aGUgdmFsdWUuCi0gICAgYm9vbCBnZXRTdHJpbmcoRXhlY1N0YXRl
KiwgV1RGOjpTdHJpbmcmKSBjb25zdDsKLSAgICBXVEY6OlN0cmluZyBnZXRTdHJpbmcoRXhlY1N0
YXRlKikgY29uc3Q7IC8vIG51bGwgc3RyaW5nIGlmIG5vdCBhIHN0cmluZwotICAgIEpTT2JqZWN0
KiBnZXRPYmplY3QoKSBjb25zdDsgLy8gMCBpZiBub3QgYW4gb2JqZWN0Ci0KLSAgICAvLyBFeHRy
YWN0aW5nIGludGVnZXIgdmFsdWVzLgotICAgIGJvb2wgZ2V0VUludDMyKHVpbnQzMl90JikgY29u
c3Q7Ci0gICAgICAgIAotICAgIC8vIEJhc2ljIGNvbnZlcnNpb25zLgotICAgIEpTVmFsdWUgdG9Q
cmltaXRpdmUoRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSA9IE5vUHJlZmVyZW5j
ZSkgY29uc3Q7Ci0gICAgYm9vbCBnZXRQcmltaXRpdmVOdW1iZXIoRXhlY1N0YXRlKiwgZG91Ymxl
JiBudW1iZXIsIEpTVmFsdWUmKTsKLQotICAgIGJvb2wgdG9Cb29sZWFuKEV4ZWNTdGF0ZSopIGNv
bnN0OwotCi0gICAgLy8gdG9OdW1iZXIgY29udmVyc2lvbiBpcyBleHBlY3RlZCB0byBiZSBzaWRl
IGVmZmVjdCBmcmVlIGlmIGFuIGV4Y2VwdGlvbiBoYXMKLSAgICAvLyBiZWVuIHNldCBpbiB0aGUg
RXhlY1N0YXRlIGFscmVhZHkuCi0gICAgZG91YmxlIHRvTnVtYmVyKEV4ZWNTdGF0ZSopIGNvbnN0
OwotICAgIEpTU3RyaW5nKiB0b1N0cmluZyhFeGVjU3RhdGUqKSBjb25zdDsKLSAgICBXVEY6OlN0
cmluZyB0b1dURlN0cmluZyhFeGVjU3RhdGUqKSBjb25zdDsKLSAgICBXVEY6OlN0cmluZyB0b1dU
RlN0cmluZ0lubGluZShFeGVjU3RhdGUqKSBjb25zdDsKLSAgICBKU09iamVjdCogdG9PYmplY3Qo
RXhlY1N0YXRlKikgY29uc3Q7Ci0gICAgSlNPYmplY3QqIHRvT2JqZWN0KEV4ZWNTdGF0ZSosIEpT
R2xvYmFsT2JqZWN0KikgY29uc3Q7Ci0KLSAgICAvLyBJbnRlZ2VyIGNvbnZlcnNpb25zLgotICAg
IEpTX0VYUE9SVF9QUklWQVRFIGRvdWJsZSB0b0ludGVnZXIoRXhlY1N0YXRlKikgY29uc3Q7Ci0g
ICAgZG91YmxlIHRvSW50ZWdlclByZXNlcnZlTmFOKEV4ZWNTdGF0ZSopIGNvbnN0OwotICAgIGlu
dDMyX3QgdG9JbnQzMihFeGVjU3RhdGUqKSBjb25zdDsKLSAgICB1aW50MzJfdCB0b1VJbnQzMihF
eGVjU3RhdGUqKSBjb25zdDsKLQotICAgIC8vIEZsb2F0aW5nIHBvaW50IGNvbnZlcnNpb25zICh0
aGlzIGlzIGEgY29udmVuaWVuY2UgbWV0aG9kIGZvciB3ZWJjb3JlOwotICAgIC8vIHNpZ25sZSBw
cmVjaXNpb24gZmxvYXQgaXMgbm90IGEgcmVwcmVzZW50YXRpb24gdXNlZCBpbiBKUyBvciBKU0Mp
LgotICAgIGZsb2F0IHRvRmxvYXQoRXhlY1N0YXRlKiBleGVjKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxmbG9hdD4odG9OdW1iZXIoZXhlYykpOyB9Ci0KLSAgICAvLyBPYmplY3Qgb3BlcmF0
aW9ucywgd2l0aCB0aGUgdG9PYmplY3Qgb3BlcmF0aW9uIGluY2x1ZGVkLgotICAgIEpTVmFsdWUg
Z2V0KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSkgY29uc3Q7Ci0gICAgSlNWYWx1ZSBnZXQoRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKSBjb25zdDsKLSAgICBKU1ZhbHVl
IGdldChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpIGNvbnN0OwotICAgIEpTVmFs
dWUgZ2V0KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jikg
Y29uc3Q7Ci0gICAgdm9pZCBwdXQoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmKTsKLSAgICB2b2lkIHB1dFRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgdm9pZCBwdXRUb1By
aW1pdGl2ZUJ5SW5kZXgoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBib29sIHNob3VsZFRocm93KTsKLSAgICB2b2lkIHB1dEJ5SW5kZXgoRXhlY1N0YXRlKiwgdW5z
aWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKLQotICAgIEpT
T2JqZWN0KiB0b1RoaXNPYmplY3QoRXhlY1N0YXRlKikgY29uc3Q7Ci0KLSAgICBzdGF0aWMgYm9v
bCBlcXVhbChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpOwotICAgIHN0
YXRpYyBib29sIGVxdWFsU2xvd0Nhc2UoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHYxLCBKU1Zh
bHVlIHYyKTsKLSAgICBzdGF0aWMgYm9vbCBlcXVhbFNsb3dDYXNlSW5saW5lKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2Mik7Ci0gICAgc3RhdGljIGJvb2wgc3RyaWN0RXF1
YWwoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKTsKLSAgICBzdGF0aWMg
Ym9vbCBzdHJpY3RFcXVhbFNsb3dDYXNlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2MSwgSlNW
YWx1ZSB2Mik7Ci0gICAgc3RhdGljIGJvb2wgc3RyaWN0RXF1YWxTbG93Q2FzZUlubGluZShFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpOwotCi0gICAgYm9vbCBpc0NlbGwo
KSBjb25zdDsKLSAgICBKU0NlbGwqIGFzQ2VsbCgpIGNvbnN0OwotICAgIEpTX0VYUE9SVF9QUklW
QVRFIGJvb2wgaXNWYWxpZENhbGxlZSgpOwotICAgICAgICAKLSAgICBKU1ZhbHVlIHN0cnVjdHVy
ZU9yVW5kZWZpbmVkKCkgY29uc3Q7Ci0KLSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGR1bXAo
UHJpbnRTdHJlYW0mKSBjb25zdDsKLQotICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBz
eW50aGVzaXplUHJvdG90eXBlKEV4ZWNTdGF0ZSopIGNvbnN0OwotCi1wcml2YXRlOgotICAgIHRl
bXBsYXRlIDxjbGFzcyBUPiBKU1ZhbHVlKFdyaXRlQmFycmllckJhc2U8VD4pOwotCi0gICAgZW51
bSBIYXNoVGFibGVEZWxldGVkVmFsdWVUYWcgeyBIYXNoVGFibGVEZWxldGVkVmFsdWUgfTsKLSAg
ICBKU1ZhbHVlKEhhc2hUYWJsZURlbGV0ZWRWYWx1ZVRhZyk7Ci0KLSAgICBpbmxpbmUgY29uc3Qg
SlNWYWx1ZSBhc1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0KLSAgICBKU19FWFBPUlRf
UFJJVkFURSBkb3VibGUgdG9OdW1iZXJTbG93Q2FzZShFeGVjU3RhdGUqKSBjb25zdDsKLSAgICBK
U19FWFBPUlRfUFJJVkFURSBKU1N0cmluZyogdG9TdHJpbmdTbG93Q2FzZShFeGVjU3RhdGUqKSBj
b25zdDsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBXVEY6OlN0cmluZyB0b1dURlN0cmluZ1Nsb3dD
YXNlKEV4ZWNTdGF0ZSopIGNvbnN0OwotICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0
b09iamVjdFNsb3dDYXNlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7Ci0gICAg
SlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRvVGhpc09iamVjdFNsb3dDYXNlKEV4ZWNTdGF0
ZSopIGNvbnN0OwotCi0jaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICAvKgotICAgICAqIE9uIDMy
LWJpdCBwbGF0Zm9ybXMgVVNFKEpTVkFMVUUzMl82NCkgc2hvdWxkIGJlIGRlZmluZWQsIGFuZCB3
ZSB1c2UgYSBOYU4tZW5jb2RlZAotICAgICAqIGZvcm0gZm9yIGltbWVkaWF0ZXMuCi0gICAgICoK
LSAgICAgKiBUaGUgZW5jb2RpbmcgbWFrZXMgdXNlIG9mIHVudXNlZCBOYU4gc3BhY2UgaW4gdGhl
IElFRUU3NTQgcmVwcmVzZW50YXRpb24uICBBbnkgdmFsdWUKLSAgICAgKiB3aXRoIHRoZSB0b3Ag
MTMgYml0cyBzZXQgcmVwcmVzZW50cyBhIFFOYU4gKHdpdGggdGhlIHNpZ24gYml0IHNldCkuICBR
TmFOIHZhbHVlcwotICAgICAqIGNhbiBlbmNvZGUgYSA1MS1iaXQgcGF5bG9hZC4gIEhhcmR3YXJl
IHByb2R1Y2VkIGFuZCBDLWxpYnJhcnkgcGF5bG9hZHMgdHlwaWNhbGx5Ci0gICAgICogaGF2ZSBh
IHBheWxvYWQgb2YgemVyby4gIFdlIGFzc3VtZSB0aGF0IG5vbi16ZXJvIHBheWxvYWRzIGFyZSBh
dmFpbGFibGUgdG8gZW5jb2RlCi0gICAgICogcG9pbnRlciBhbmQgaW50ZWdlciB2YWx1ZXMuICBT
aW5jZSBhbnkgNjQtYml0IGJpdCBwYXR0ZXJuIHdoZXJlIHRoZSB0b3AgMTUgYml0cyBhcmUKLSAg
ICAgKiBhbGwgc2V0IHJlcHJlc2VudHMgYSBOYU4gd2l0aCBhIG5vbi16ZXJvIHBheWxvYWQsIHdl
IGNhbiB1c2UgdGhpcyBzcGFjZSBpbiB0aGUgTmFOCi0gICAgICogcmFuZ2VzIHRvIGVuY29kZSBv
dGhlciB2YWx1ZXMgKGhvd2V2ZXIgdGhlcmUgYXJlIGFsc28gb3RoZXIgcmFuZ2VzIG9mIE5hTiBz
cGFjZSB0aGF0Ci0gICAgICogY291bGQgaGF2ZSBiZWVuIHNlbGVjdGVkKS4KLSAgICAgKgotICAg
ICAqIEZvciBKU1ZhbHVlcyB0aGF0IGRvIG5vdCBjb250YWluIGEgZG91YmxlIHZhbHVlLCB0aGUg
aGlnaCAzMiBiaXRzIGNvbnRhaW4gdGhlIHRhZwotICAgICAqIHZhbHVlcyBsaXN0ZWQgaW4gdGhl
IGVudW1zIGJlbG93LCB3aGljaCBhbGwgY29ycmVzcG9uZCB0byBOYU4tc3BhY2UuIEluIHRoZSBj
YXNlIG9mCi0gICAgICogY2VsbCwgaW50ZWdlciBhbmQgYm9vbCB2YWx1ZXMgdGhlIGxvd2VyIDMy
IGJpdHMgKHRoZSAncGF5bG9hZCcpIGNvbnRhaW4gdGhlIHBvaW50ZXIKLSAgICAgKiBpbnRlZ2Vy
IG9yIGJvb2xlYW4gdmFsdWU7IGluIHRoZSBjYXNlIG9mIGFsbCBvdGhlciB0YWdzIHRoZSBwYXls
b2FkIGlzIDAuCi0gICAgICovCi0gICAgdWludDMyX3QgdGFnKCkgY29uc3Q7Ci0gICAgaW50MzJf
dCBwYXlsb2FkKCkgY29uc3Q7Ci0KLSNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQotICAgIC8vIFRo
aXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBieSB0aGUgTExJbnQgQyBMb29wIGludGVycHJldGVyIHdo
byBuZWVkcwotICAgIC8vIHN5bnRoZXNpemUgSlNWYWx1ZSBmcm9tIGl0cyAicmVnaXN0ZXIicyBo
b2xkaW5nIHRhZyBhbmQgcGF5bG9hZAotICAgIC8vIHZhbHVlcy4KLSAgICBleHBsaWNpdCBKU1Zh
bHVlKGludDMyX3QgdGFnLCBpbnQzMl90IHBheWxvYWQpOwotI2VuZGlmCi0KLSNlbGlmIFVTRShK
U1ZBTFVFNjQpCi0gICAgLyoKLSAgICAgKiBPbiA2NC1iaXQgcGxhdGZvcm1zIFVTRShKU1ZBTFVF
NjQpIHNob3VsZCBiZSBkZWZpbmVkLCBhbmQgd2UgdXNlIGEgTmFOLWVuY29kZWQKLSAgICAgKiBm
b3JtIGZvciBpbW1lZGlhdGVzLgotICAgICAqCi0gICAgICogVGhlIGVuY29kaW5nIG1ha2VzIHVz
ZSBvZiB1bnVzZWQgTmFOIHNwYWNlIGluIHRoZSBJRUVFNzU0IHJlcHJlc2VudGF0aW9uLiAgQW55
IHZhbHVlCi0gICAgICogd2l0aCB0aGUgdG9wIDEzIGJpdHMgc2V0IHJlcHJlc2VudHMgYSBRTmFO
ICh3aXRoIHRoZSBzaWduIGJpdCBzZXQpLiAgUU5hTiB2YWx1ZXMKLSAgICAgKiBjYW4gZW5jb2Rl
IGEgNTEtYml0IHBheWxvYWQuICBIYXJkd2FyZSBwcm9kdWNlZCBhbmQgQy1saWJyYXJ5IHBheWxv
YWRzIHR5cGljYWxseQotICAgICAqIGhhdmUgYSBwYXlsb2FkIG9mIHplcm8uICBXZSBhc3N1bWUg
dGhhdCBub24temVybyBwYXlsb2FkcyBhcmUgYXZhaWxhYmxlIHRvIGVuY29kZQotICAgICAqIHBv
aW50ZXIgYW5kIGludGVnZXIgdmFsdWVzLiAgU2luY2UgYW55IDY0LWJpdCBiaXQgcGF0dGVybiB3
aGVyZSB0aGUgdG9wIDE1IGJpdHMgYXJlCi0gICAgICogYWxsIHNldCByZXByZXNlbnRzIGEgTmFO
IHdpdGggYSBub24temVybyBwYXlsb2FkLCB3ZSBjYW4gdXNlIHRoaXMgc3BhY2UgaW4gdGhlIE5h
TgotICAgICAqIHJhbmdlcyB0byBlbmNvZGUgb3RoZXIgdmFsdWVzIChob3dldmVyIHRoZXJlIGFy
ZSBhbHNvIG90aGVyIHJhbmdlcyBvZiBOYU4gc3BhY2UgdGhhdAotICAgICAqIGNvdWxkIGhhdmUg
YmVlbiBzZWxlY3RlZCkuCi0gICAgICoKLSAgICAgKiBUaGlzIHJhbmdlIG9mIE5hTiBzcGFjZSBp
cyByZXByZXNlbnRlZCBieSA2NC1iaXQgbnVtYmVycyBiZWdpbmluZyB3aXRoIHRoZSAxNi1iaXQK
LSAgICAgKiBoZXggcGF0dGVybnMgMHhGRkZFIGFuZCAweEZGRkYgLSB3ZSByZWx5IG9uIHRoZSBm
YWN0IHRoYXQgbm8gdmFsaWQgZG91YmxlLXByZWNpc2lvbgotICAgICAqIG51bWJlcnMgd2lsbCBi
ZWdpbiBmYWxsIGluIHRoZXNlIHJhbmdlcy4KLSAgICAgKgotICAgICAqIFRoZSB0b3AgMTYtYml0
cyBkZW5vdGUgdGhlIHR5cGUgb2YgdGhlIGVuY29kZWQgSlNWYWx1ZToKLSAgICAgKgotICAgICAq
ICAgICBQb2ludGVyIHsgIDAwMDA6UFBQUDpQUFBQOlBQUFAKLSAgICAgKiAgICAgICAgICAgICAg
LyAwMDAxOioqKio6KioqKjoqKioqCi0gICAgICogICAgIERvdWJsZSAgeyAgICAgICAgIC4uLgot
ICAgICAqICAgICAgICAgICAgICBcIEZGRkU6KioqKjoqKioqOioqKioKLSAgICAgKiAgICAgSW50
ZWdlciB7ICBGRkZGOjAwMDA6SUlJSTpJSUlJCi0gICAgICoKLSAgICAgKiBUaGUgc2NoZW1lIHdl
IGhhdmUgaW1wbGVtZW50ZWQgZW5jb2RlcyBkb3VibGUgcHJlY2lzaW9uIHZhbHVlcyBieSBwZXJm
b3JtaW5nIGEKLSAgICAgKiA2NC1iaXQgaW50ZWdlciBhZGRpdGlvbiBvZiB0aGUgdmFsdWUgMl40
OCB0byB0aGUgbnVtYmVyLiBBZnRlciB0aGlzIG1hbmlwdWxhdGlvbgotICAgICAqIG5vIGVuY29k
ZWQgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSB3aWxsIGJlZ2luIHdpdGggdGhlIHBhdHRlcm4gMHgw
MDAwIG9yIDB4RkZGRi4KLSAgICAgKiBWYWx1ZXMgbXVzdCBiZSBkZWNvZGVkIGJ5IHJldmVyc2lu
ZyB0aGlzIG9wZXJhdGlvbiBiZWZvcmUgc3Vic2VxdWVudCBmbG9hdGluZyBwb2ludAotICAgICAq
IG9wZXJhdGlvbnMgbXkgYmUgcGVmb3JtZWQuCi0gICAgICoKLSAgICAgKiAzMi1iaXQgc2lnbmVk
IGludGVnZXJzIGFyZSBtYXJrZWQgd2l0aCB0aGUgMTYtYml0IHRhZyAweEZGRkYuCi0gICAgICoK
LSAgICAgKiBUaGUgdGFnIDB4MDAwMCBkZW5vdGVzIGEgcG9pbnRlciwgb3IgYW5vdGhlciBmb3Jt
IG9mIHRhZ2dlZCBpbW1lZGlhdGUuIEJvb2xlYW4sCi0gICAgICogbnVsbCBhbmQgdW5kZWZpbmVk
IHZhbHVlcyBhcmUgcmVwcmVzZW50ZWQgYnkgc3BlY2lmaWMsIGludmFsaWQgcG9pbnRlciB2YWx1
ZXM6Ci0gICAgICoKLSAgICAgKiAgICAgRmFsc2U6ICAgICAweDA2Ci0gICAgICogICAgIFRydWU6
ICAgICAgMHgwNwotICAgICAqICAgICBVbmRlZmluZWQ6IDB4MGEKLSAgICAgKiAgICAgTnVsbDog
ICAgICAweDAyCi0gICAgICoKLSAgICAgKiBUaGVzZSB2YWx1ZXMgaGF2ZSB0aGUgZm9sbG93aW5n
IHByb3BlcnRpZXM6Ci0gICAgICogLSBCaXQgMSAoVGFnQml0VHlwZU90aGVyKSBpcyBzZXQgZm9y
IGFsbCBmb3VyIHZhbHVlcywgYWxsb3dpbmcgcmVhbCBwb2ludGVycyB0byBiZQotICAgICAqICAg
cXVpY2tseSBkaXN0aW5ndWlzaGVkIGZyb20gYWxsIGltbWVkaWF0ZSB2YWx1ZXMsIGluY2x1ZGlu
ZyB0aGVzZSBpbnZhbGlkIHBvaW50ZXJzLgotICAgICAqIC0gV2l0aCBiaXQgMyBpcyBtYXNrZWQg
b3V0IChUYWdCaXRVbmRlZmluZWQpIFVuZGVmaW5lZCBhbmQgTnVsbCBzaGFyZSB0aGUKLSAgICAg
KiAgIHNhbWUgdmFsdWUsIGFsbG93aW5nIG51bGwgJiB1bmRlZmluZWQgdG8gYmUgcXVpY2tseSBk
ZXRlY3RlZC4KLSAgICAgKgotICAgICAqIE5vIHZhbGlkIEpTVmFsdWUgd2lsbCBoYXZlIHRoZSBi
aXQgcGF0dGVybiAweDAsIHRoaXMgaXMgdXNlZCB0byByZXByZXNlbnQgYXJyYXkKLSAgICAgKiBo
b2xlcywgYW5kIGFzIGEgQysrICdubyB2YWx1ZScgcmVzdWx0IChlLmcuIEpTVmFsdWUoKSBoYXMg
YW4gaW50ZXJuYWwgdmFsdWUgb2YgMCkuCi0gICAgICovCi0KLSAgICAvLyBUaGVzZSB2YWx1ZXMg
YXJlICNkZWZpbmVzIHNpbmNlIHVzaW5nIHN0YXRpYyBjb25zdCBpbnRlZ2VycyBoZXJlIGlzIGEg
fjElIHJlZ3Jlc3Npb24hCi0KLSAgICAvLyBUaGlzIHZhbHVlIGlzIDJeNDgsIHVzZWQgdG8gZW5j
b2RlIGRvdWJsZXMgc3VjaCB0aGF0IHRoZSBlbmNvZGVkIHZhbHVlIHdpbGwgYmVnaW4KLSAgICAv
LyB3aXRoIGEgMTYtYml0IHBhdHRlcm4gd2l0aGluIHRoZSByYW5nZSAweDAwMDEuLjB4RkZGRS4K
LSAgICAjZGVmaW5lIERvdWJsZUVuY29kZU9mZnNldCAweDEwMDAwMDAwMDAwMDBsbAotICAgIC8v
IElmIGFsbCBiaXRzIGluIHRoZSBtYXNrIGFyZSBzZXQsIHRoaXMgaW5kaWNhdGVzIGFuIGludGVn
ZXIgbnVtYmVyLAotICAgIC8vIGlmIGFueSBidXQgbm90IGFsbCBhcmUgc2V0IHRoaXMgdmFsdWUg
aXMgYSBkb3VibGUgcHJlY2lzaW9uIG51bWJlci4KLSAgICAjZGVmaW5lIFRhZ1R5cGVOdW1iZXIg
MHhmZmZmMDAwMDAwMDAwMDAwbGwKLQotICAgIC8vIEFsbCBub24tbnVtZXJpYyAoYm9vbCwgbnVs
bCwgdW5kZWZpbmVkKSBpbW1lZGlhdGVzIGhhdmUgYml0IDIgc2V0LgotICAgICNkZWZpbmUgVGFn
Qml0VHlwZU90aGVyIDB4MmxsCi0gICAgI2RlZmluZSBUYWdCaXRCb29sICAgICAgMHg0bGwKLSAg
ICAjZGVmaW5lIFRhZ0JpdFVuZGVmaW5lZCAweDhsbAotICAgIC8vIENvbWJpbmVkIGludGVnZXIg
dmFsdWUgZm9yIG5vbi1udW1lcmljIGltbWVkaWF0ZXMuCi0gICAgI2RlZmluZSBWYWx1ZUZhbHNl
ICAgICAoVGFnQml0VHlwZU90aGVyIHwgVGFnQml0Qm9vbCB8IGZhbHNlKQotICAgICNkZWZpbmUg
VmFsdWVUcnVlICAgICAgKFRhZ0JpdFR5cGVPdGhlciB8IFRhZ0JpdEJvb2wgfCB0cnVlKQotICAg
ICNkZWZpbmUgVmFsdWVVbmRlZmluZWQgKFRhZ0JpdFR5cGVPdGhlciB8IFRhZ0JpdFVuZGVmaW5l
ZCkKLSAgICAjZGVmaW5lIFZhbHVlTnVsbCAgICAgIChUYWdCaXRUeXBlT3RoZXIpCi0KLSAgICAv
LyBUYWdNYXNrIGlzIHVzZWQgdG8gY2hlY2sgZm9yIGFsbCB0eXBlcyBvZiBpbW1lZGlhdGUgdmFs
dWVzIChlaXRoZXIgbnVtYmVyIG9yICdvdGhlcicpLgotICAgICNkZWZpbmUgVGFnTWFzayAoVGFn
VHlwZU51bWJlciB8IFRhZ0JpdFR5cGVPdGhlcikKLQotICAgIC8vIFRoZXNlIHNwZWNpYWwgdmFs
dWVzIGFyZSBuZXZlciB2aXNpYmxlIHRvIEphdmFTY3JpcHQgY29kZTsgRW1wdHkgaXMgdXNlZCB0
byByZXByZXNlbnQKLSAgICAvLyBBcnJheSBob2xlcywgYW5kIGZvciB1bmluaXRpYWxpemVkIEpT
VmFsdWVzLiBEZWxldGVkIGlzIHVzZWQgaW4gaGFzaCB0YWJsZSBjb2RlLgotICAgIC8vIFRoZXNl
IHZhbHVlcyB3b3VsZCBtYXAgdG8gY2VsbCB0eXBlcyBpbiB0aGUgSlNWYWx1ZSBlbmNvZGluZywg
YnV0IG5vdCB2YWxpZCBHQyBjZWxsCi0gICAgLy8gcG9pbnRlciBzaG91bGQgaGF2ZSBlaXRoZXIg
b2YgdGhlc2UgdmFsdWVzIChFbXB0eSBpcyBudWxsLCBkZWxldGVkIGlzIGF0IGFuIGludmFsaWQK
LSAgICAvLyBhbGlnbm1lbnQgZm9yIGEgR0MgY2VsbCwgYW5kIGluIHRoZSB6ZXJvIHBhZ2UpLgot
ICAgICNkZWZpbmUgVmFsdWVFbXB0eSAgIDB4MGxsCi0gICAgI2RlZmluZSBWYWx1ZURlbGV0ZWQg
MHg0bGwKLSNlbmRpZgotCi0gICAgRW5jb2RlZFZhbHVlRGVzY3JpcHRvciB1OwotfTsKLQotdHlw
ZWRlZiBJbnRIYXNoPEVuY29kZWRKU1ZhbHVlPiBFbmNvZGVkSlNWYWx1ZUhhc2g7Ci0KLSNpZiBV
U0UoSlNWQUxVRTMyXzY0KQotc3RydWN0IEVuY29kZWRKU1ZhbHVlSGFzaFRyYWl0cyA6IEhhc2hU
cmFpdHM8RW5jb2RlZEpTVmFsdWU+IHsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBlbXB0eVZhbHVl
SXNaZXJvID0gZmFsc2U7Ci0gICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIGVtcHR5VmFsdWUoKSB7
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsgfQotICAgIHN0YXRpYyB2b2lkIGNv
bnN0cnVjdERlbGV0ZWRWYWx1ZShFbmNvZGVkSlNWYWx1ZSYgc2xvdCkgeyBzbG90ID0gSlNWYWx1
ZTo6ZW5jb2RlKEpTVmFsdWUoSlNWYWx1ZTo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKSk7IH0KLSAg
ICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShFbmNvZGVkSlNWYWx1ZSB2YWx1ZSkgeyByZXR1
cm4gdmFsdWUgPT0gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoSlNWYWx1ZTo6SGFzaFRhYmxlRGVs
ZXRlZFZhbHVlKSk7IH0KLX07Ci0jZWxzZQotc3RydWN0IEVuY29kZWRKU1ZhbHVlSGFzaFRyYWl0
cyA6IEhhc2hUcmFpdHM8RW5jb2RlZEpTVmFsdWU+IHsKLSAgICBzdGF0aWMgdm9pZCBjb25zdHJ1
Y3REZWxldGVkVmFsdWUoRW5jb2RlZEpTVmFsdWUmIHNsb3QpIHsgc2xvdCA9IEpTVmFsdWU6OmVu
Y29kZShKU1ZhbHVlKEpTVmFsdWU6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkpOyB9Ci0gICAgc3Rh
dGljIGJvb2wgaXNEZWxldGVkVmFsdWUoRW5jb2RlZEpTVmFsdWUgdmFsdWUpIHsgcmV0dXJuIHZh
bHVlID09IEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKEpTVmFsdWU6Okhhc2hUYWJsZURlbGV0ZWRW
YWx1ZSkpOyB9Ci19OwotI2VuZGlmCi0KLXR5cGVkZWYgSGFzaE1hcDxFbmNvZGVkSlNWYWx1ZSwg
dW5zaWduZWQsIEVuY29kZWRKU1ZhbHVlSGFzaCwgRW5jb2RlZEpTVmFsdWVIYXNoVHJhaXRzPiBK
U1ZhbHVlTWFwOwotCi0vLyBTdGFuZC1hbG9uZSBoZWxwZXIgZnVuY3Rpb25zLgotaW5saW5lIEpT
VmFsdWUganNOdWxsKCkKLXsKLSAgICByZXR1cm4gSlNWYWx1ZShKU1ZhbHVlOjpKU051bGwpOwot
fQotCi1pbmxpbmUgSlNWYWx1ZSBqc1VuZGVmaW5lZCgpCi17Ci0gICAgcmV0dXJuIEpTVmFsdWUo
SlNWYWx1ZTo6SlNVbmRlZmluZWQpOwotfQotCi1pbmxpbmUgSlNWYWx1ZSBqc0Jvb2xlYW4oYm9v
bCBiKQotewotICAgIHJldHVybiBiID8gSlNWYWx1ZShKU1ZhbHVlOjpKU1RydWUpIDogSlNWYWx1
ZShKU1ZhbHVlOjpKU0ZhbHNlKTsKLX0KLQotQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzRG91Ymxl
TnVtYmVyKGRvdWJsZSBkKQotewotICAgIEFTU0VSVChKU1ZhbHVlKEpTVmFsdWU6OkVuY29kZUFz
RG91YmxlLCBkKS5pc051bWJlcigpKTsKLSAgICByZXR1cm4gSlNWYWx1ZShKU1ZhbHVlOjpFbmNv
ZGVBc0RvdWJsZSwgZCk7Ci19Ci0KLUFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc051bWJlcihkb3Vi
bGUgZCkKLXsKLSAgICBBU1NFUlQoSlNWYWx1ZShkKS5pc051bWJlcigpKTsKLSAgICByZXR1cm4g
SlNWYWx1ZShkKTsKLX0KLQotQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzTnVtYmVyKGNoYXIgaSkK
LXsKLSAgICByZXR1cm4gSlNWYWx1ZShpKTsKLX0KLQotQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpz
TnVtYmVyKHVuc2lnbmVkIGNoYXIgaSkKLXsKLSAgICByZXR1cm4gSlNWYWx1ZShpKTsKLX0KLQot
QUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzTnVtYmVyKHNob3J0IGkpCi17Ci0gICAgcmV0dXJuIEpT
VmFsdWUoaSk7Ci19Ci0KLUFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc051bWJlcih1bnNpZ25lZCBz
aG9ydCBpKQotewotICAgIHJldHVybiBKU1ZhbHVlKGkpOwotfQotCi1BTFdBWVNfSU5MSU5FIEpT
VmFsdWUganNOdW1iZXIoaW50IGkpCi17Ci0gICAgcmV0dXJuIEpTVmFsdWUoaSk7Ci19Ci0KLUFM
V0FZU19JTkxJTkUgSlNWYWx1ZSBqc051bWJlcih1bnNpZ25lZCBpKQotewotICAgIHJldHVybiBK
U1ZhbHVlKGkpOwotfQotCi1BTFdBWVNfSU5MSU5FIEpTVmFsdWUganNOdW1iZXIobG9uZyBpKQot
ewotICAgIHJldHVybiBKU1ZhbHVlKGkpOwotfQotCi1BTFdBWVNfSU5MSU5FIEpTVmFsdWUganNO
dW1iZXIodW5zaWduZWQgbG9uZyBpKQotewotICAgIHJldHVybiBKU1ZhbHVlKGkpOwotfQotCi1B
TFdBWVNfSU5MSU5FIEpTVmFsdWUganNOdW1iZXIobG9uZyBsb25nIGkpCi17Ci0gICAgcmV0dXJu
IEpTVmFsdWUoaSk7Ci19Ci0KLUFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc051bWJlcih1bnNpZ25l
ZCBsb25nIGxvbmcgaSkKLXsKLSAgICByZXR1cm4gSlNWYWx1ZShpKTsKLX0KLQotaW5saW5lIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBKU1ZhbHVlIGEsIGNvbnN0IEpTQ2VsbCogYikgeyByZXR1cm4g
YSA9PSBKU1ZhbHVlKGIpOyB9Ci1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEpTQ2VsbCog
YSwgY29uc3QgSlNWYWx1ZSBiKSB7IHJldHVybiBKU1ZhbHVlKGEpID09IGI7IH0KLQotaW5saW5l
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBKU1ZhbHVlIGEsIGNvbnN0IEpTQ2VsbCogYikgeyByZXR1
cm4gYSAhPSBKU1ZhbHVlKGIpOyB9Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEpTQ2Vs
bCogYSwgY29uc3QgSlNWYWx1ZSBiKSB7IHJldHVybiBKU1ZhbHVlKGEpICE9IGI7IH0KLQotfSAv
LyBuYW1lc3BhY2UgSlNDCi0KLSNlbmRpZiAvLyBKU1ZhbHVlX2gKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWVJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZUlubGluZXMuaAkocmV2aXNpb24gMTQwMTk2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZUlubGluZXMuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw3OTkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwg
MjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIEpTVmFsdWVJbmxpbmVzX2gKLSNkZWZp
bmUgSlNWYWx1ZUlubGluZXNfaAotCi0jaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgotI2lu
Y2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKLSNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCi0jaW5jbHVk
ZSAiSlNWYWx1ZS5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQotQUxXQVlTX0lOTElORSBpbnQzMl90
IEpTVmFsdWU6OnRvSW50MzIoRXhlY1N0YXRlKiBleGVjKSBjb25zdAotewotICAgIGlmIChpc0lu
dDMyKCkpCi0gICAgICAgIHJldHVybiBhc0ludDMyKCk7Ci0gICAgcmV0dXJuIEpTQzo6dG9JbnQz
Mih0b051bWJlcihleGVjKSk7Ci19Ci0KLWlubGluZSB1aW50MzJfdCBKU1ZhbHVlOjp0b1VJbnQz
MihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Ci17Ci0gICAgLy8gU2VlIGNvbW1lbnQgb24gSlNDOjp0
b1VJbnQzMiwgYWJvdmUuCi0gICAgcmV0dXJuIHRvSW50MzIoZXhlYyk7Ci19Ci0KLWlubGluZSBi
b29sIEpTVmFsdWU6OmlzVUludDMyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gaXNJbnQzMigpICYm
IGFzSW50MzIoKSA+PSAwOwotfQotCi1pbmxpbmUgdWludDMyX3QgSlNWYWx1ZTo6YXNVSW50MzIo
KSBjb25zdAotewotICAgIEFTU0VSVChpc1VJbnQzMigpKTsKLSAgICByZXR1cm4gYXNJbnQzMigp
OwotfQotCi1pbmxpbmUgZG91YmxlIEpTVmFsdWU6OmFzTnVtYmVyKCkgY29uc3QKLXsKLSAgICBB
U1NFUlQoaXNOdW1iZXIoKSk7Ci0gICAgcmV0dXJuIGlzSW50MzIoKSA/IGFzSW50MzIoKSA6IGFz
RG91YmxlKCk7Ci19Ci0KLWlubGluZSBKU1ZhbHVlIGpzTmFOKCkKLXsKLSAgICByZXR1cm4gSlNW
YWx1ZShRTmFOKTsKLX0KLQotaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoY2hhciBpKQotewotICAg
ICp0aGlzID0gSlNWYWx1ZShzdGF0aWNfY2FzdDxpbnQzMl90PihpKSk7Ci19Ci0KLWlubGluZSBK
U1ZhbHVlOjpKU1ZhbHVlKHVuc2lnbmVkIGNoYXIgaSkKLXsKLSAgICAqdGhpcyA9IEpTVmFsdWUo
c3RhdGljX2Nhc3Q8aW50MzJfdD4oaSkpOwotfQotCi1pbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShz
aG9ydCBpKQotewotICAgICp0aGlzID0gSlNWYWx1ZShzdGF0aWNfY2FzdDxpbnQzMl90PihpKSk7
Ci19Ci0KLWlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKHVuc2lnbmVkIHNob3J0IGkpCi17Ci0gICAg
KnRoaXMgPSBKU1ZhbHVlKHN0YXRpY19jYXN0PGludDMyX3Q+KGkpKTsKLX0KLQotaW5saW5lIEpT
VmFsdWU6OkpTVmFsdWUodW5zaWduZWQgaSkKLXsKLSAgICBpZiAoc3RhdGljX2Nhc3Q8aW50MzJf
dD4oaSkgPCAwKSB7Ci0gICAgICAgICp0aGlzID0gSlNWYWx1ZShFbmNvZGVBc0RvdWJsZSwgc3Rh
dGljX2Nhc3Q8ZG91YmxlPihpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgKnRoaXMg
PSBKU1ZhbHVlKHN0YXRpY19jYXN0PGludDMyX3Q+KGkpKTsKLX0KLQotaW5saW5lIEpTVmFsdWU6
OkpTVmFsdWUobG9uZyBpKQotewotICAgIGlmIChzdGF0aWNfY2FzdDxpbnQzMl90PihpKSAhPSBp
KSB7Ci0gICAgICAgICp0aGlzID0gSlNWYWx1ZShFbmNvZGVBc0RvdWJsZSwgc3RhdGljX2Nhc3Q8
ZG91YmxlPihpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgKnRoaXMgPSBKU1ZhbHVl
KHN0YXRpY19jYXN0PGludDMyX3Q+KGkpKTsKLX0KLQotaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUo
dW5zaWduZWQgbG9uZyBpKQotewotICAgIGlmIChzdGF0aWNfY2FzdDx1aW50MzJfdD4oaSkgIT0g
aSkgewotICAgICAgICAqdGhpcyA9IEpTVmFsdWUoRW5jb2RlQXNEb3VibGUsIHN0YXRpY19jYXN0
PGRvdWJsZT4oaSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgICp0aGlzID0gSlNWYWx1
ZShzdGF0aWNfY2FzdDx1aW50MzJfdD4oaSkpOwotfQotCi1pbmxpbmUgSlNWYWx1ZTo6SlNWYWx1
ZShsb25nIGxvbmcgaSkKLXsKLSAgICBpZiAoc3RhdGljX2Nhc3Q8aW50MzJfdD4oaSkgIT0gaSkg
ewotICAgICAgICAqdGhpcyA9IEpTVmFsdWUoRW5jb2RlQXNEb3VibGUsIHN0YXRpY19jYXN0PGRv
dWJsZT4oaSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgICp0aGlzID0gSlNWYWx1ZShz
dGF0aWNfY2FzdDxpbnQzMl90PihpKSk7Ci19Ci0KLWlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKHVu
c2lnbmVkIGxvbmcgbG9uZyBpKQotewotICAgIGlmIChzdGF0aWNfY2FzdDx1aW50MzJfdD4oaSkg
IT0gaSkgewotICAgICAgICAqdGhpcyA9IEpTVmFsdWUoRW5jb2RlQXNEb3VibGUsIHN0YXRpY19j
YXN0PGRvdWJsZT4oaSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgICp0aGlzID0gSlNW
YWx1ZShzdGF0aWNfY2FzdDx1aW50MzJfdD4oaSkpOwotfQotCi1pbmxpbmUgSlNWYWx1ZTo6SlNW
YWx1ZShkb3VibGUgZCkKLXsKLSAgICBjb25zdCBpbnQzMl90IGFzSW50MzIgPSBzdGF0aWNfY2Fz
dDxpbnQzMl90PihkKTsKLSAgICBpZiAoYXNJbnQzMiAhPSBkIHx8ICghYXNJbnQzMiAmJiBzaWdu
Yml0KGQpKSkgeyAvLyB0cnVlIGZvciAtMC4wCi0gICAgICAgICp0aGlzID0gSlNWYWx1ZShFbmNv
ZGVBc0RvdWJsZSwgZCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgKnRoaXMgPSBKU1Zh
bHVlKHN0YXRpY19jYXN0PGludDMyX3Q+KGQpKTsKLX0KLQotaW5saW5lIEVuY29kZWRKU1ZhbHVl
IEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlIHZhbHVlKQotewotICAgIHJldHVybiB2YWx1ZS51LmFz
SW50NjQ7Ci19Ci0KLWlubGluZSBKU1ZhbHVlIEpTVmFsdWU6OmRlY29kZShFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkSlNWYWx1ZSkKLXsKLSAgICBKU1ZhbHVlIHY7Ci0gICAgdi51LmFzSW50NjQgPSBl
bmNvZGVkSlNWYWx1ZTsKLSAgICByZXR1cm4gdjsKLX0KLQotI2lmIFVTRShKU1ZBTFVFMzJfNjQp
Ci1pbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZSgpCi17Ci0gICAgdS5hc0JpdHMudGFnID0gRW1wdHlW
YWx1ZVRhZzsKLSAgICB1LmFzQml0cy5wYXlsb2FkID0gMDsKLX0KLQotaW5saW5lIEpTVmFsdWU6
OkpTVmFsdWUoSlNOdWxsVGFnKQotewotICAgIHUuYXNCaXRzLnRhZyA9IE51bGxUYWc7Ci0gICAg
dS5hc0JpdHMucGF5bG9hZCA9IDA7Ci19Ci0gICAgCi1pbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShK
U1VuZGVmaW5lZFRhZykKLXsKLSAgICB1LmFzQml0cy50YWcgPSBVbmRlZmluZWRUYWc7Ci0gICAg
dS5hc0JpdHMucGF5bG9hZCA9IDA7Ci19Ci0gICAgCi1pbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShK
U1RydWVUYWcpCi17Ci0gICAgdS5hc0JpdHMudGFnID0gQm9vbGVhblRhZzsKLSAgICB1LmFzQml0
cy5wYXlsb2FkID0gMTsKLX0KLSAgICAKLWlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKEpTRmFsc2VU
YWcpCi17Ci0gICAgdS5hc0JpdHMudGFnID0gQm9vbGVhblRhZzsKLSAgICB1LmFzQml0cy5wYXls
b2FkID0gMDsKLX0KLQotaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoSGFzaFRhYmxlRGVsZXRlZFZh
bHVlVGFnKQotewotICAgIHUuYXNCaXRzLnRhZyA9IERlbGV0ZWRWYWx1ZVRhZzsKLSAgICB1LmFz
Qml0cy5wYXlsb2FkID0gMDsKLX0KLQotaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoSlNDZWxsKiBw
dHIpCi17Ci0gICAgaWYgKHB0cikKLSAgICAgICAgdS5hc0JpdHMudGFnID0gQ2VsbFRhZzsKLSAg
ICBlbHNlCi0gICAgICAgIHUuYXNCaXRzLnRhZyA9IEVtcHR5VmFsdWVUYWc7Ci0gICAgdS5hc0Jp
dHMucGF5bG9hZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJfdD4ocHRyKTsKLX0KLQotaW5saW5l
IEpTVmFsdWU6OkpTVmFsdWUoY29uc3QgSlNDZWxsKiBwdHIpCi17Ci0gICAgaWYgKHB0cikKLSAg
ICAgICAgdS5hc0JpdHMudGFnID0gQ2VsbFRhZzsKLSAgICBlbHNlCi0gICAgICAgIHUuYXNCaXRz
LnRhZyA9IEVtcHR5VmFsdWVUYWc7Ci0gICAgdS5hc0JpdHMucGF5bG9hZCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8aW50MzJfdD4oY29uc3RfY2FzdDxKU0NlbGwqPihwdHIpKTsKLX0KLQotaW5saW5lIEpT
VmFsdWU6Om9wZXJhdG9yIGJvb2woKSBjb25zdAotewotICAgIEFTU0VSVCh0YWcoKSAhPSBEZWxl
dGVkVmFsdWVUYWcpOwotICAgIHJldHVybiB0YWcoKSAhPSBFbXB0eVZhbHVlVGFnOwotfQotCi1p
bmxpbmUgYm9vbCBKU1ZhbHVlOjpvcGVyYXRvcj09KGNvbnN0IEpTVmFsdWUmIG90aGVyKSBjb25z
dAotewotICAgIHJldHVybiB1LmFzSW50NjQgPT0gb3RoZXIudS5hc0ludDY0OwotfQotCi1pbmxp
bmUgYm9vbCBKU1ZhbHVlOjpvcGVyYXRvciE9KGNvbnN0IEpTVmFsdWUmIG90aGVyKSBjb25zdAot
ewotICAgIHJldHVybiB1LmFzSW50NjQgIT0gb3RoZXIudS5hc0ludDY0OwotfQotCi1pbmxpbmUg
Ym9vbCBKU1ZhbHVlOjppc0VtcHR5KCkgY29uc3QKLXsKLSAgICByZXR1cm4gdGFnKCkgPT0gRW1w
dHlWYWx1ZVRhZzsKLX0KLQotaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNVbmRlZmluZWQoKSBjb25z
dAotewotICAgIHJldHVybiB0YWcoKSA9PSBVbmRlZmluZWRUYWc7Ci19Ci0KLWlubGluZSBib29s
IEpTVmFsdWU6OmlzTnVsbCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHRhZygpID09IE51bGxUYWc7
Ci19Ci0KLWlubGluZSBib29sIEpTVmFsdWU6OmlzVW5kZWZpbmVkT3JOdWxsKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gaXNVbmRlZmluZWQoKSB8fCBpc051bGwoKTsKLX0KLQotaW5saW5lIGJvb2wg
SlNWYWx1ZTo6aXNDZWxsKCkgY29uc3QKLXsKLSAgICByZXR1cm4gdGFnKCkgPT0gQ2VsbFRhZzsK
LX0KLQotaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNJbnQzMigpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IHRhZygpID09IEludDMyVGFnOwotfQotCi1pbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0RvdWJsZSgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIHRhZygpIDwgTG93ZXN0VGFnOwotfQotCi1pbmxpbmUgYm9v
bCBKU1ZhbHVlOjppc1RydWUoKSBjb25zdAotewotICAgIHJldHVybiB0YWcoKSA9PSBCb29sZWFu
VGFnICYmIHBheWxvYWQoKTsKLX0KLQotaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNGYWxzZSgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIHRhZygpID09IEJvb2xlYW5UYWcgJiYgIXBheWxvYWQoKTsKLX0K
LQotaW5saW5lIHVpbnQzMl90IEpTVmFsdWU6OnRhZygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHUu
YXNCaXRzLnRhZzsKLX0KLSAgICAKLWlubGluZSBpbnQzMl90IEpTVmFsdWU6OnBheWxvYWQoKSBj
b25zdAotewotICAgIHJldHVybiB1LmFzQml0cy5wYXlsb2FkOwotfQotICAgIAotaW5saW5lIGlu
dDMyX3QgSlNWYWx1ZTo6YXNJbnQzMigpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKGlzSW50MzIoKSk7
Ci0gICAgcmV0dXJuIHUuYXNCaXRzLnBheWxvYWQ7Ci19Ci0gICAgCi1pbmxpbmUgZG91YmxlIEpT
VmFsdWU6OmFzRG91YmxlKCkgY29uc3QKLXsKLSAgICBBU1NFUlQoaXNEb3VibGUoKSk7Ci0gICAg
cmV0dXJuIHUuYXNEb3VibGU7Ci19Ci0gICAgCi1BTFdBWVNfSU5MSU5FIEpTQ2VsbCogSlNWYWx1
ZTo6YXNDZWxsKCkgY29uc3QKLXsKLSAgICBBU1NFUlQoaXNDZWxsKCkpOwotICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PEpTQ2VsbCo+KHUuYXNCaXRzLnBheWxvYWQpOwotfQotCi1BTFdBWVNf
SU5MSU5FIEpTVmFsdWU6OkpTVmFsdWUoRW5jb2RlQXNEb3VibGVUYWcsIGRvdWJsZSBkKQotewot
ICAgIHUuYXNEb3VibGUgPSBkOwotfQotCi1pbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShpbnQgaSkK
LXsKLSAgICB1LmFzQml0cy50YWcgPSBJbnQzMlRhZzsKLSAgICB1LmFzQml0cy5wYXlsb2FkID0g
aTsKLX0KLQotI2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCi1pbmxpbmUgSlNWYWx1ZTo6SlNWYWx1
ZShpbnQzMl90IHRhZywgaW50MzJfdCBwYXlsb2FkKQotewotICAgIHUuYXNCaXRzLnRhZyA9IHRh
ZzsKLSAgICB1LmFzQml0cy5wYXlsb2FkID0gcGF5bG9hZDsKLX0KLSNlbmRpZgotCi1pbmxpbmUg
Ym9vbCBKU1ZhbHVlOjppc051bWJlcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGlzSW50MzIoKSB8
fCBpc0RvdWJsZSgpOwotfQotCi1pbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0Jvb2xlYW4oKSBjb25z
dAotewotICAgIHJldHVybiBpc1RydWUoKSB8fCBpc0ZhbHNlKCk7Ci19Ci0KLWlubGluZSBib29s
IEpTVmFsdWU6OmFzQm9vbGVhbigpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKGlzQm9vbGVhbigpKTsK
LSAgICByZXR1cm4gcGF5bG9hZCgpOwotfQotCi0jZWxzZSAvLyAhVVNFKEpTVkFMVUUzMl82NCkg
aS5lLiBVU0UoSlNWQUxVRTY0KQotCi0vLyAweDAgY2FuIG5ldmVyIG9jY3VyIG5hdHVyYWxseSBi
ZWNhdXNlIGl0IGhhcyBhIHRhZyBvZiAwMCwgaW5kaWNhdGluZyBhIHBvaW50ZXIgdmFsdWUsIGJ1
dCBhIHBheWxvYWQgb2YgMHgwLCB3aGljaCBpcyBpbiB0aGUgKGludmFsaWQpIHplcm8gcGFnZS4K
LWlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKCkKLXsKLSAgICB1LmFzSW50NjQgPSBWYWx1ZUVtcHR5
OwotfQotCi0vLyAweDQgY2FuIG5ldmVyIG9jY3VyIG5hdHVyYWxseSBiZWNhdXNlIGl0IGhhcyBh
IHRhZyBvZiAwMCwgaW5kaWNhdGluZyBhIHBvaW50ZXIgdmFsdWUsIGJ1dCBhIHBheWxvYWQgb2Yg
MHg0LCB3aGljaCBpcyBpbiB0aGUgKGludmFsaWQpIHplcm8gcGFnZS4KLWlubGluZSBKU1ZhbHVl
OjpKU1ZhbHVlKEhhc2hUYWJsZURlbGV0ZWRWYWx1ZVRhZykKLXsKLSAgICB1LmFzSW50NjQgPSBW
YWx1ZURlbGV0ZWQ7Ci19Ci0KLWlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKEpTQ2VsbCogcHRyKQot
ewotICAgIHUuYXNJbnQ2NCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihwdHIpOwotfQot
Ci1pbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShjb25zdCBKU0NlbGwqIHB0cikKLXsKLSAgICB1LmFz
SW50NjQgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oY29uc3RfY2FzdDxKU0NlbGwqPihw
dHIpKTsKLX0KLQotaW5saW5lIEpTVmFsdWU6Om9wZXJhdG9yIGJvb2woKSBjb25zdAotewotICAg
IHJldHVybiB1LmFzSW50NjQ7Ci19Ci0KLWlubGluZSBib29sIEpTVmFsdWU6Om9wZXJhdG9yPT0o
Y29uc3QgSlNWYWx1ZSYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHUuYXNJbnQ2NCA9PSBv
dGhlci51LmFzSW50NjQ7Ci19Ci0KLWlubGluZSBib29sIEpTVmFsdWU6Om9wZXJhdG9yIT0oY29u
c3QgSlNWYWx1ZSYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHUuYXNJbnQ2NCAhPSBvdGhl
ci51LmFzSW50NjQ7Ci19Ci0KLWlubGluZSBib29sIEpTVmFsdWU6OmlzRW1wdHkoKSBjb25zdAot
ewotICAgIHJldHVybiB1LmFzSW50NjQgPT0gVmFsdWVFbXB0eTsKLX0KLQotaW5saW5lIGJvb2wg
SlNWYWx1ZTo6aXNVbmRlZmluZWQoKSBjb25zdAotewotICAgIHJldHVybiBhc1ZhbHVlKCkgPT0g
SlNWYWx1ZShKU1VuZGVmaW5lZCk7Ci19Ci0KLWlubGluZSBib29sIEpTVmFsdWU6OmlzTnVsbCgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIGFzVmFsdWUoKSA9PSBKU1ZhbHVlKEpTTnVsbCk7Ci19Ci0K
LWlubGluZSBib29sIEpTVmFsdWU6OmlzVHJ1ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGFzVmFs
dWUoKSA9PSBKU1ZhbHVlKEpTVHJ1ZSk7Ci19Ci0KLWlubGluZSBib29sIEpTVmFsdWU6OmlzRmFs
c2UoKSBjb25zdAotewotICAgIHJldHVybiBhc1ZhbHVlKCkgPT0gSlNWYWx1ZShKU0ZhbHNlKTsK
LX0KLQotaW5saW5lIGJvb2wgSlNWYWx1ZTo6YXNCb29sZWFuKCkgY29uc3QKLXsKLSAgICBBU1NF
UlQoaXNCb29sZWFuKCkpOwotICAgIHJldHVybiBhc1ZhbHVlKCkgPT0gSlNWYWx1ZShKU1RydWUp
OwotfQotCi1pbmxpbmUgaW50MzJfdCBKU1ZhbHVlOjphc0ludDMyKCkgY29uc3QKLXsKLSAgICBB
U1NFUlQoaXNJbnQzMigpKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50MzJfdD4odS5hc0lu
dDY0KTsKLX0KLQotaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNEb3VibGUoKSBjb25zdAotewotICAg
IHJldHVybiBpc051bWJlcigpICYmICFpc0ludDMyKCk7Ci19Ci0KLWlubGluZSBKU1ZhbHVlOjpK
U1ZhbHVlKEpTTnVsbFRhZykKLXsKLSAgICB1LmFzSW50NjQgPSBWYWx1ZU51bGw7Ci19Ci0gICAg
Ci1pbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShKU1VuZGVmaW5lZFRhZykKLXsKLSAgICB1LmFzSW50
NjQgPSBWYWx1ZVVuZGVmaW5lZDsKLX0KLQotaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoSlNUcnVl
VGFnKQotewotICAgIHUuYXNJbnQ2NCA9IFZhbHVlVHJ1ZTsKLX0KLQotaW5saW5lIEpTVmFsdWU6
OkpTVmFsdWUoSlNGYWxzZVRhZykKLXsKLSAgICB1LmFzSW50NjQgPSBWYWx1ZUZhbHNlOwotfQot
Ci1pbmxpbmUgYm9vbCBKU1ZhbHVlOjppc1VuZGVmaW5lZE9yTnVsbCgpIGNvbnN0Ci17Ci0gICAg
Ly8gVW5kZWZpbmVkIGFuZCBudWxsIHNoYXJlIHRoZSBzYW1lIHZhbHVlLCBiYXIgdGhlICd1bmRl
ZmluZWQnIGJpdCBpbiB0aGUgZXh0ZW5kZWQgdGFnLgotICAgIHJldHVybiAodS5hc0ludDY0ICYg
flRhZ0JpdFVuZGVmaW5lZCkgPT0gVmFsdWVOdWxsOwotfQotCi1pbmxpbmUgYm9vbCBKU1ZhbHVl
Ojppc0Jvb2xlYW4oKSBjb25zdAotewotICAgIHJldHVybiAodS5hc0ludDY0ICYgfjEpID09IFZh
bHVlRmFsc2U7Ci19Ci0KLWlubGluZSBib29sIEpTVmFsdWU6OmlzQ2VsbCgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuICEodS5hc0ludDY0ICYgVGFnTWFzayk7Ci19Ci0KLWlubGluZSBib29sIEpTVmFs
dWU6OmlzSW50MzIoKSBjb25zdAotewotICAgIHJldHVybiAodS5hc0ludDY0ICYgVGFnVHlwZU51
bWJlcikgPT0gVGFnVHlwZU51bWJlcjsKLX0KLQotaW5saW5lIGludDY0X3QgcmVpbnRlcnByZXRE
b3VibGVUb0ludDY0KGRvdWJsZSB2YWx1ZSkKLXsKLSAgICByZXR1cm4gYml0d2lzZV9jYXN0PGlu
dDY0X3Q+KHZhbHVlKTsKLX0KLWlubGluZSBkb3VibGUgcmVpbnRlcnByZXRJbnQ2NFRvRG91Ymxl
KGludDY0X3QgdmFsdWUpCi17Ci0gICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxkb3VibGU+KHZhbHVl
KTsKLX0KLQotQUxXQVlTX0lOTElORSBKU1ZhbHVlOjpKU1ZhbHVlKEVuY29kZUFzRG91YmxlVGFn
LCBkb3VibGUgZCkKLXsKLSAgICB1LmFzSW50NjQgPSByZWludGVycHJldERvdWJsZVRvSW50NjQo
ZCkgKyBEb3VibGVFbmNvZGVPZmZzZXQ7Ci19Ci0KLWlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKGlu
dCBpKQotewotICAgIHUuYXNJbnQ2NCA9IFRhZ1R5cGVOdW1iZXIgfCBzdGF0aWNfY2FzdDx1aW50
MzJfdD4oaSk7Ci19Ci0KLWlubGluZSBkb3VibGUgSlNWYWx1ZTo6YXNEb3VibGUoKSBjb25zdAot
ewotICAgIEFTU0VSVChpc0RvdWJsZSgpKTsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRJbnQ2NFRv
RG91YmxlKHUuYXNJbnQ2NCAtIERvdWJsZUVuY29kZU9mZnNldCk7Ci19Ci0KLWlubGluZSBib29s
IEpTVmFsdWU6OmlzTnVtYmVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gdS5hc0ludDY0ICYgVGFn
VHlwZU51bWJlcjsKLX0KLQotQUxXQVlTX0lOTElORSBKU0NlbGwqIEpTVmFsdWU6OmFzQ2VsbCgp
IGNvbnN0Ci17Ci0gICAgQVNTRVJUKGlzQ2VsbCgpKTsKLSAgICByZXR1cm4gdS5wdHI7Ci19Ci0K
LSNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQotCi1pbmxpbmUgYm9vbCBKU1ZhbHVlOjppc1N0cmlu
ZygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGlzQ2VsbCgpICYmIGFzQ2VsbCgpLT5pc1N0cmluZygp
OwotfQotCi1pbmxpbmUgYm9vbCBKU1ZhbHVlOjppc1ByaW1pdGl2ZSgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuICFpc0NlbGwoKSB8fCBhc0NlbGwoKS0+aXNTdHJpbmcoKTsKLX0KLQotaW5saW5lIGJv
b2wgSlNWYWx1ZTo6aXNHZXR0ZXJTZXR0ZXIoKSBjb25zdAotewotICAgIHJldHVybiBpc0NlbGwo
KSAmJiBhc0NlbGwoKS0+aXNHZXR0ZXJTZXR0ZXIoKTsKLX0KLQotaW5saW5lIGJvb2wgSlNWYWx1
ZTo6aXNPYmplY3QoKSBjb25zdAotewotICAgIHJldHVybiBpc0NlbGwoKSAmJiBhc0NlbGwoKS0+
aXNPYmplY3QoKTsKLX0KLQotaW5saW5lIGJvb2wgSlNWYWx1ZTo6Z2V0U3RyaW5nKEV4ZWNTdGF0
ZSogZXhlYywgU3RyaW5nJiBzKSBjb25zdAotewotICAgIHJldHVybiBpc0NlbGwoKSAmJiBhc0Nl
bGwoKS0+Z2V0U3RyaW5nKGV4ZWMsIHMpOwotfQotCi1pbmxpbmUgU3RyaW5nIEpTVmFsdWU6Omdl
dFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGlzQ2VsbCgpID8g
YXNDZWxsKCktPmdldFN0cmluZyhleGVjKSA6IFN0cmluZygpOwotfQotCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgQmFzZT4gU3RyaW5nIEhhbmRsZUNvbnZlcnRlcjxCYXNlLCBVbmtub3duPjo6Z2V0U3Ry
aW5nKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKLXsKLSAgICByZXR1cm4ganNWYWx1ZSgpLmdldFN0
cmluZyhleGVjKTsKLX0KLQotaW5saW5lIEpTT2JqZWN0KiBKU1ZhbHVlOjpnZXRPYmplY3QoKSBj
b25zdAotewotICAgIHJldHVybiBpc0NlbGwoKSA/IGFzQ2VsbCgpLT5nZXRPYmplY3QoKSA6IDA7
Ci19Ci0KLUFMV0FZU19JTkxJTkUgYm9vbCBKU1ZhbHVlOjpnZXRVSW50MzIodWludDMyX3QmIHYp
IGNvbnN0Ci17Ci0gICAgaWYgKGlzSW50MzIoKSkgewotICAgICAgICBpbnQzMl90IGkgPSBhc0lu
dDMyKCk7Ci0gICAgICAgIHYgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oaSk7Ci0gICAgICAgIHJl
dHVybiBpID49IDA7Ci0gICAgfQotICAgIGlmIChpc0RvdWJsZSgpKSB7Ci0gICAgICAgIGRvdWJs
ZSBkID0gYXNEb3VibGUoKTsKLSAgICAgICAgdiA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihkKTsK
LSAgICAgICAgcmV0dXJuIHYgPT0gZDsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1p
bmxpbmUgSlNWYWx1ZSBKU1ZhbHVlOjp0b1ByaW1pdGl2ZShFeGVjU3RhdGUqIGV4ZWMsIFByZWZl
cnJlZFByaW1pdGl2ZVR5cGUgcHJlZmVycmVkVHlwZSkgY29uc3QKLXsKLSAgICByZXR1cm4gaXND
ZWxsKCkgPyBhc0NlbGwoKS0+dG9QcmltaXRpdmUoZXhlYywgcHJlZmVycmVkVHlwZSkgOiBhc1Zh
bHVlKCk7Ci19Ci0KLWlubGluZSBib29sIEpTVmFsdWU6OmdldFByaW1pdGl2ZU51bWJlcihFeGVj
U3RhdGUqIGV4ZWMsIGRvdWJsZSYgbnVtYmVyLCBKU1ZhbHVlJiB2YWx1ZSkKLXsKLSAgICBpZiAo
aXNJbnQzMigpKSB7Ci0gICAgICAgIG51bWJlciA9IGFzSW50MzIoKTsKLSAgICAgICAgdmFsdWUg
PSAqdGhpczsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIGlmIChpc0RvdWJsZSgp
KSB7Ci0gICAgICAgIG51bWJlciA9IGFzRG91YmxlKCk7Ci0gICAgICAgIHZhbHVlID0gKnRoaXM7
Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBpZiAoaXNDZWxsKCkpCi0gICAgICAg
IHJldHVybiBhc0NlbGwoKS0+Z2V0UHJpbWl0aXZlTnVtYmVyKGV4ZWMsIG51bWJlciwgdmFsdWUp
OwotICAgIGlmIChpc1RydWUoKSkgewotICAgICAgICBudW1iZXIgPSAxLjA7Ci0gICAgICAgIHZh
bHVlID0gKnRoaXM7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBpZiAoaXNGYWxz
ZSgpIHx8IGlzTnVsbCgpKSB7Ci0gICAgICAgIG51bWJlciA9IDAuMDsKLSAgICAgICAgdmFsdWUg
PSAqdGhpczsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIEFTU0VSVChpc1VuZGVm
aW5lZCgpKTsKLSAgICBudW1iZXIgPSBRTmFOOwotICAgIHZhbHVlID0gKnRoaXM7Ci0gICAgcmV0
dXJuIHRydWU7Ci19Ci0KLUFMV0FZU19JTkxJTkUgZG91YmxlIEpTVmFsdWU6OnRvTnVtYmVyKEV4
ZWNTdGF0ZSogZXhlYykgY29uc3QKLXsKLSAgICBpZiAoaXNJbnQzMigpKQotICAgICAgICByZXR1
cm4gYXNJbnQzMigpOwotICAgIGlmIChpc0RvdWJsZSgpKQotICAgICAgICByZXR1cm4gYXNEb3Vi
bGUoKTsKLSAgICByZXR1cm4gdG9OdW1iZXJTbG93Q2FzZShleGVjKTsKLX0KLQotaW5saW5lIEpT
T2JqZWN0KiBKU1ZhbHVlOjp0b09iamVjdChFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIGlzQ2VsbCgpID8gYXNDZWxsKCktPnRvT2JqZWN0KGV4ZWMsIGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKSkgOiB0b09iamVjdFNsb3dDYXNlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSk7Ci19Ci0KLWlubGluZSBKU09iamVjdCogSlNWYWx1ZTo6dG9PYmplY3QoRXhl
Y1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAotewotICAg
IHJldHVybiBpc0NlbGwoKSA/IGFzQ2VsbCgpLT50b09iamVjdChleGVjLCBnbG9iYWxPYmplY3Qp
IDogdG9PYmplY3RTbG93Q2FzZShleGVjLCBnbG9iYWxPYmplY3QpOwotfQotCi1pbmxpbmUgYm9v
bCBKU1ZhbHVlOjppc0Z1bmN0aW9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4gaXNDZWxsKCkgJiYg
KGFzQ2VsbCgpLT5pbmhlcml0cygmSlNGdW5jdGlvbjo6c19pbmZvKSB8fCBhc0NlbGwoKS0+aW5o
ZXJpdHMoJkludGVybmFsRnVuY3Rpb246OnNfaW5mbykpOwotfQotCi0vLyB0aGlzIG1ldGhvZCBp
cyBoZXJlIHRvIGJlIGFmdGVyIHRoZSBpbmxpbmUgZGVjbGFyYXRpb24gb2YgSlNDZWxsOjppbmhl
cml0cwotaW5saW5lIGJvb2wgSlNWYWx1ZTo6aW5oZXJpdHMoY29uc3QgQ2xhc3NJbmZvKiBjbGFz
c0luZm8pIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGlzQ2VsbCgpICYmIGFzQ2VsbCgpLT5pbmhlcml0
cyhjbGFzc0luZm8pOwotfQotCi1pbmxpbmUgSlNPYmplY3QqIEpTVmFsdWU6OnRvVGhpc09iamVj
dChFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGlzQ2VsbCgpID8gYXNDZWxs
KCktPm1ldGhvZFRhYmxlKCktPnRvVGhpc09iamVjdChhc0NlbGwoKSwgZXhlYykgOiB0b1RoaXNP
YmplY3RTbG93Q2FzZShleGVjKTsKLX0KLQotaW5saW5lIEpTVmFsdWUgSlNWYWx1ZTo6Z2V0KEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY29uc3QKLXsKLSAgICBQ
cm9wZXJ0eVNsb3Qgc2xvdChhc1ZhbHVlKCkpOwotICAgIHJldHVybiBnZXQoZXhlYywgcHJvcGVy
dHlOYW1lLCBzbG90KTsKLX0KLQotaW5saW5lIEpTVmFsdWUgSlNWYWx1ZTo6Z2V0KEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KSBj
b25zdAotewotICAgIGlmIChVTkxJS0VMWSghaXNDZWxsKCkpKSB7Ci0gICAgICAgIEpTT2JqZWN0
KiBwcm90b3R5cGUgPSBzeW50aGVzaXplUHJvdG90eXBlKGV4ZWMpOwotICAgICAgICBpZiAoIXBy
b3RvdHlwZS0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCkpCi0gICAg
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICAgICAgcmV0dXJuIHNsb3QuZ2V0VmFs
dWUoZXhlYywgcHJvcGVydHlOYW1lKTsKLSAgICB9Ci0gICAgSlNDZWxsKiBjZWxsID0gYXNDZWxs
KCk7Ci0gICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgaWYgKGNlbGwtPmZhc3RHZXRPd25Qcm9w
ZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KSkKLSAgICAgICAgICAgIHJldHVybiBz
bG90LmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFtZSk7Ci0gICAgICAgIEpTVmFsdWUgcHJvdG90
eXBlID0gYXNPYmplY3QoY2VsbCktPnByb3RvdHlwZSgpOwotICAgICAgICBpZiAoIXByb3RvdHlw
ZS5pc09iamVjdCgpKQotICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgICAg
IGNlbGwgPSBhc09iamVjdChwcm90b3R5cGUpOwotICAgIH0KLX0KLQotaW5saW5lIEpTVmFsdWUg
SlNWYWx1ZTo6Z2V0KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lKSBjb25z
dAotewotICAgIFByb3BlcnR5U2xvdCBzbG90KGFzVmFsdWUoKSk7Ci0gICAgcmV0dXJuIGdldChl
eGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwotfQotCi1pbmxpbmUgSlNWYWx1ZSBKU1ZhbHVlOjpn
ZXQoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYg
c2xvdCkgY29uc3QKLXsKLSAgICBpZiAoVU5MSUtFTFkoIWlzQ2VsbCgpKSkgewotICAgICAgICBK
U09iamVjdCogcHJvdG90eXBlID0gc3ludGhlc2l6ZVByb3RvdHlwZShleGVjKTsKLSAgICAgICAg
aWYgKCFwcm90b3R5cGUtPmdldFByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
KQotICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgICAgIHJldHVybiBzbG90
LmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFtZSk7Ci0gICAgfQotICAgIEpTQ2VsbCogY2VsbCA9
IGNvbnN0X2Nhc3Q8SlNDZWxsKj4oYXNDZWxsKCkpOwotICAgIHdoaWxlICh0cnVlKSB7Ci0gICAg
ICAgIGlmIChjZWxsLT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KGNl
bGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCkpCi0gICAgICAgICAgICByZXR1cm4gc2xvdC5n
ZXRWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUpOwotICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9
IGFzT2JqZWN0KGNlbGwpLT5wcm90b3R5cGUoKTsKLSAgICAgICAgaWYgKCFwcm90b3R5cGUuaXNP
YmplY3QoKSkKLSAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgICAgICBjZWxs
ID0gcHJvdG90eXBlLmFzQ2VsbCgpOwotICAgIH0KLX0KLQotaW5saW5lIHZvaWQgSlNWYWx1ZTo6
cHV0KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQotewotICAgIGlmIChVTkxJS0VMWSghaXNDZWxs
KCkpKSB7Ci0gICAgICAgIHB1dFRvUHJpbWl0aXZlKGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUs
IHNsb3QpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGFzQ2VsbCgpLT5tZXRob2RUYWJs
ZSgpLT5wdXQoYXNDZWxsKCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwotfQot
Ci1pbmxpbmUgdm9pZCBKU1ZhbHVlOjpwdXRCeUluZGV4KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWdu
ZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQotewotICAg
IGlmIChVTkxJS0VMWSghaXNDZWxsKCkpKSB7Ci0gICAgICAgIHB1dFRvUHJpbWl0aXZlQnlJbmRl
eChleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgYXNDZWxsKCktPm1ldGhvZFRhYmxlKCktPnB1dEJ5SW5kZXgoYXNDZWxs
KCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKLX0KLQotaW5saW5l
IEpTVmFsdWUgSlNWYWx1ZTo6c3RydWN0dXJlT3JVbmRlZmluZWQoKSBjb25zdAotewotICAgIGlm
IChpc0NlbGwoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWUoYXNDZWxsKCktPnN0cnVjdHVyZSgp
KTsKLSAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLX0KLQotLy8gRUNNQSAxMS45LjMKLWlubGlu
ZSBib29sIEpTVmFsdWU6OmVxdWFsKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2MSwgSlNWYWx1
ZSB2MikKLXsKLSAgICBpZiAodjEuaXNJbnQzMigpICYmIHYyLmlzSW50MzIoKSkKLSAgICAgICAg
cmV0dXJuIHYxID09IHYyOwotCi0gICAgcmV0dXJuIGVxdWFsU2xvd0Nhc2UoZXhlYywgdjEsIHYy
KTsKLX0KLQotQUxXQVlTX0lOTElORSBib29sIEpTVmFsdWU6OmVxdWFsU2xvd0Nhc2VJbmxpbmUo
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQotewotICAgIGRvIHsKLSAg
ICAgICAgaWYgKHYxLmlzTnVtYmVyKCkgJiYgdjIuaXNOdW1iZXIoKSkKLSAgICAgICAgICAgIHJl
dHVybiB2MS5hc051bWJlcigpID09IHYyLmFzTnVtYmVyKCk7Ci0KLSAgICAgICAgYm9vbCBzMSA9
IHYxLmlzU3RyaW5nKCk7Ci0gICAgICAgIGJvb2wgczIgPSB2Mi5pc1N0cmluZygpOwotICAgICAg
ICBpZiAoczEgJiYgczIpCi0gICAgICAgICAgICByZXR1cm4gYXNTdHJpbmcodjEpLT52YWx1ZShl
eGVjKSA9PSBhc1N0cmluZyh2MiktPnZhbHVlKGV4ZWMpOwotCi0gICAgICAgIGlmICh2MS5pc1Vu
ZGVmaW5lZE9yTnVsbCgpKSB7Ci0gICAgICAgICAgICBpZiAodjIuaXNVbmRlZmluZWRPck51bGwo
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIGlmICghdjIuaXND
ZWxsKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgcmV0dXJu
IHYyLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKS0+bWFzcXVlcmFkZXNBc1VuZGVmaW5lZChleGVjLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHYyLmlzVW5k
ZWZpbmVkT3JOdWxsKCkpIHsKLSAgICAgICAgICAgIGlmICghdjEuaXNDZWxsKCkpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgcmV0dXJuIHYxLmFzQ2VsbCgpLT5z
dHJ1Y3R1cmUoKS0+bWFzcXVlcmFkZXNBc1VuZGVmaW5lZChleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHYxLmlzT2JqZWN0KCkpIHsKLSAgICAg
ICAgICAgIGlmICh2Mi5pc09iamVjdCgpKQotICAgICAgICAgICAgICAgIHJldHVybiB2MSA9PSB2
MjsKLSAgICAgICAgICAgIEpTVmFsdWUgcDEgPSB2MS50b1ByaW1pdGl2ZShleGVjKTsKLSAgICAg
ICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgICAgICB2MSA9IHAxOwotICAgICAgICAgICAgaWYgKHYxLmlzSW50MzIo
KSAmJiB2Mi5pc0ludDMyKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHYxID09IHYyOwotICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAodjIuaXNPYmplY3Qo
KSkgewotICAgICAgICAgICAgSlNWYWx1ZSBwMiA9IHYyLnRvUHJpbWl0aXZlKGV4ZWMpOwotICAg
ICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgICAgIHYyID0gcDI7Ci0gICAgICAgICAgICBpZiAodjEuaXNJbnQz
MigpICYmIHYyLmlzSW50MzIoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdjEgPT0gdjI7Ci0g
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChzMSB8fCBzMikg
ewotICAgICAgICAgICAgZG91YmxlIGQxID0gdjEudG9OdW1iZXIoZXhlYyk7Ci0gICAgICAgICAg
ICBkb3VibGUgZDIgPSB2Mi50b051bWJlcihleGVjKTsKLSAgICAgICAgICAgIHJldHVybiBkMSA9
PSBkMjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICh2MS5pc0Jvb2xlYW4oKSkgewotICAgICAg
ICAgICAgaWYgKHYyLmlzTnVtYmVyKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGRvdWJsZT4odjEuYXNCb29sZWFuKCkpID09IHYyLmFzTnVtYmVyKCk7Ci0gICAgICAgIH0g
ZWxzZSBpZiAodjIuaXNCb29sZWFuKCkpIHsKLSAgICAgICAgICAgIGlmICh2MS5pc051bWJlcigp
KQotICAgICAgICAgICAgICAgIHJldHVybiB2MS5hc051bWJlcigpID09IHN0YXRpY19jYXN0PGRv
dWJsZT4odjIuYXNCb29sZWFuKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHYxID09
IHYyOwotICAgIH0gd2hpbGUgKHRydWUpOwotfQotCi0vLyBFQ01BIDExLjkuMwotQUxXQVlTX0lO
TElORSBib29sIEpTVmFsdWU6OnN0cmljdEVxdWFsU2xvd0Nhc2VJbmxpbmUoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQotewotICAgIEFTU0VSVCh2MS5pc0NlbGwoKSAm
JiB2Mi5pc0NlbGwoKSk7Ci0KLSAgICBpZiAodjEuYXNDZWxsKCktPmlzU3RyaW5nKCkgJiYgdjIu
YXNDZWxsKCktPmlzU3RyaW5nKCkpCi0gICAgICAgIHJldHVybiBhc1N0cmluZyh2MSktPnZhbHVl
KGV4ZWMpID09IGFzU3RyaW5nKHYyKS0+dmFsdWUoZXhlYyk7Ci0KLSAgICByZXR1cm4gdjEgPT0g
djI7Ci19Ci0KLWlubGluZSBib29sIEpTVmFsdWU6OnN0cmljdEVxdWFsKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKLXsKLSAgICBpZiAodjEuaXNJbnQzMigpICYmIHYy
LmlzSW50MzIoKSkKLSAgICAgICAgcmV0dXJuIHYxID09IHYyOwotCi0gICAgaWYgKHYxLmlzTnVt
YmVyKCkgJiYgdjIuaXNOdW1iZXIoKSkKLSAgICAgICAgcmV0dXJuIHYxLmFzTnVtYmVyKCkgPT0g
djIuYXNOdW1iZXIoKTsKLQotICAgIGlmICghdjEuaXNDZWxsKCkgfHwgIXYyLmlzQ2VsbCgpKQot
ICAgICAgICByZXR1cm4gdjEgPT0gdjI7Ci0KLSAgICByZXR1cm4gc3RyaWN0RXF1YWxTbG93Q2Fz
ZUlubGluZShleGVjLCB2MSwgdjIpOwotfQotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQotI2VuZGlm
IC8vIEpTVmFsdWVJbmxpbmVzX2gKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTGl0ZXJhbFBhcnNlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0xpdGVyYWxQYXJzZXIuaAkocmV2aXNpb24gMTQwMTk2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw4
ICsyNyw4IEBACiAjZGVmaW5lIExpdGVyYWxQYXJzZXJfaAogCiAjaW5jbHVkZSAiSWRlbnRpZmll
ci5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1
bmN0aW9ucy5oIgotI2luY2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAxNDAxOTYpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDkgKzI0
LDkgQEAKIAogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRlICJJbnRlcnBy
ZXRlci5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNQcm94
eS5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCi0jaW5jbHVkZSAiSlNWYWx1ZUlubGluZXMuaCIK
IAogbmFtZXNwYWNlIEpTQyB7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb3BlcnR5RGVzY3JpcHRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oCShyZXZpc2lvbiAxNDAxOTYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuaAkod29ya2luZyBj
b3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBQcm9wZXJ0eURlc2NyaXB0b3JfaAogI2Rl
ZmluZSBQcm9wZXJ0eURlc2NyaXB0b3JfaAogCi0jaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1
ZGUgIkpTQ0pTVmFsdWUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgR2V0dGVyU2V0
dGVyOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90
LmgJKHJldmlzaW9uIDE0MDE5NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3BlcnR5U2xvdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw3ICsyMSw3IEBACiAjaWZuZGVmIFBy
b3BlcnR5U2xvdF9oCiAjZGVmaW5lIFByb3BlcnR5U2xvdF9oCiAKLSNpbmNsdWRlICJKU1ZhbHVl
LmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZS5oIgog
I2luY2x1ZGUgIlByb3BlcnR5T2Zmc2V0LmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXIuaCIKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RlY3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90ZWN0LmgJKHJldmlzaW9uIDE0MDE5NikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RlY3QuaAkod29ya2luZyBjb3B5
KQpAQCAtMjMsNyArMjMsNyBAQAogI2RlZmluZSBQcm90ZWN0X2gKIAogI2luY2x1ZGUgIkhlYXAu
aCIKLSNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogCiBuYW1l
c3BhY2UgSlNDIHsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAxNDAxOTYpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NCwxMSArMjQsMTEgQEAKICNpbmNsdWRlICJBcnJheVByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkVy
cm9yLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNp
bmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJK
U1N0cmluZy5oIgogI2luY2x1ZGUgIkpTU3RyaW5nQnVpbGRlci5oIgotI2luY2x1ZGUgIkpTVmFs
dWUuaCIKICNpbmNsdWRlICJPYmplY3RQcm90b3R5cGUuaCIKICNpbmNsdWRlICJPcGVyYXRpb25z
LmgiCiAjaW5jbHVkZSAiUmVnRXhwT2JqZWN0LmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNpb24gMTQwMTk2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDkgKzI4
LDkgQEAKIAogI2luY2x1ZGUgIkNsYXNzSW5mby5oIgogI2luY2x1ZGUgIkluZGV4aW5nVHlwZS5o
IgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRl
ICJKU1R5cGUuaCIKLSNpbmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlNYXBI
YXNoVGFibGUuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU5hbWUuaCIKICNpbmNsdWRlICJQcm9wZXJ0
eU5hbWVBcnJheS5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQwMjExKQorKysgU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTMt
MDEtMTggIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KKworICAgICAg
ICBPYmplY3RpdmUtQyBBUEk6IFJlbmFtZSBKU1ZhbHVlLmgvQVBJSlNWYWx1ZS5oIHRvIEpTQ0pT
VmFsdWUuaC9KU1ZhbHVlLmgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwNzMyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cy4KKworICAgICAgICBXZSdyZSByZW5hbWluZyB0aGVzZSB0
d28gZmlsZXMsIHNvIHdlIGhhdmUgdG8gcmVwbGFjZSB0aGUgbmFtZXMgZXZlcnl3aGVyZS4KKwor
ICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSlNDSlNWYWx1ZS5oOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTVmFsdWUuaC4K
KyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTVmFsdWUuaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0FycmF5QnVmZmVyVmlld0hlbHBlci5oOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmg6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNJbnRlbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNN
ZXNzYWdlUG9ydEN1c3RvbS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckNv
bmRpdGlvbi5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0phdmFTY3JpcHRDYWxsRnJhbWUuY3Bw
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmg6CisgICAgICAgICogYmluZGluZ3MvanMv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmg6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9XZWJTY3Jp
cHRPYmplY3RQcml2YXRlLmg6CisgICAgICAgICogYnJpZGdlL2MvY191dGlsaXR5Lmg6CisKIDIw
MTMtMDEtMTggIFRvbnkgR2VudGlsY29yZSAgPHRvbnlnQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBSdW4gZGVmZXIgc2NyaXB0cyBpbiB0aGUgdGhyZWFkZWQgSFRNTCBwYXJzZXIKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSlNDSlNW
YWx1ZS5oCShyZXZpc2lvbiAxNDAxOTYpCShmcm9tIFNvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdI
ZWFkZXJzL3J1bnRpbWUvSlNWYWx1ZS5oOjE0MDE5NikKKysrIFNvdXJjZS9XZWJDb3JlL0Zvcndh
cmRpbmdIZWFkZXJzL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9KU1ZhbHVlX2gKKyNkZWZpbmUgV2ViQ29yZV9G
V0RfSlNWYWx1ZV9oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNWYWx1ZS5oPgorI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTQ0pTVmFs
dWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50
aW1lL0pTQ0pTVmFsdWUuaAkocmV2aXNpb24gMTQwMTk2KQorKysgU291cmNlL1dlYkNvcmUvRm9y
d2FyZGluZ0hlYWRlcnMvcnVudGltZS9KU0NKU1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NCArMSw0IEBACiAjaWZuZGVmIFdlYkNvcmVfRldEX0pTVmFsdWVfaAogI2RlZmluZSBXZWJDb3Jl
X0ZXRF9KU1ZhbHVlX2gKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1ZhbHVlLmg+CisjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSlNWYWx1ZS5oPgogI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTVmFsdWUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTVmFsdWUuaAkocmV2
aXNpb24gMTQwMTk2KQorKysgU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGlt
ZS9KU1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMCwwIEBACi0jaWZuZGVmIFdlYkNv
cmVfRldEX0pTVmFsdWVfaAotI2RlZmluZSBXZWJDb3JlX0ZXRF9KU1ZhbHVlX2gKLSNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU1ZhbHVlLmg+Ci0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQXJyYXlCdWZmZXJWaWV3SGVscGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBcnJheUJ1ZmZlclZpZXdIZWxwZXIuaAkocmV2aXNp
b24gMTQwMTk2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBcnJheUJ1ZmZlclZp
ZXdIZWxwZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsOCArMzMsOCBAQAogI2luY2x1ZGUgPGlu
dGVycHJldGVyL0NhbGxGcmFtZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvQXJnTGlzdC5oPgogI2lu
Y2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWUuaD4K
ICNpbmNsdWRlIDxydW50aW1lL0pTT2JqZWN0Lmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU1ZhbHVl
Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9PcGVyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0FycmF5
QnVmZmVyVmlldy5oPgogI2luY2x1ZGUgPHd0Zi9UeXBlZEFycmF5QmFzZS5oPgpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZl
ci5oCShyZXZpc2lvbiAxNDAxOTYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1
c3RvbVhQYXRoTlNSZXNvbHZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiAj
aW5jbHVkZSAiWFBhdGhOU1Jlc29sdmVyLmgiCiAjaW5jbHVkZSA8aGVhcC9TdHJvbmcuaD4KICNp
bmNsdWRlIDxoZWFwL1N0cm9uZ0lubGluZXMuaD4KLSNpbmNsdWRlIDxydW50aW1lL0pTVmFsdWUu
aD4KKyNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWUuaD4KICNpbmNsdWRlIDxydW50aW1lL09w
ZXJhdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rp
b25DdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCShyZXZpc2lvbiAxNDAxOTYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgIkpTTm9kZUxpc3QuaCIKICNpbmNs
dWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiU3RhdGljTm9kZUxpc3QuaCIKLSNpbmNsdWRlIDxydW50
aW1lL0pTVmFsdWUuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWUuaD4KICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW50ZW50Q29uc3RydWN0b3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW50ZW50Q29uc3RydWN0
b3IuY3BwCShyZXZpc2lvbiAxNDAxOTYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0ludGVudENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIsMTAgKzIyLDEwIEBA
CiAKICNpbmNsdWRlICJEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgor
I2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNs
dWRlICJKU0ludGVudC5oIgogI2luY2x1ZGUgIkpTTWVzc2FnZVBvcnRDdXN0b20uaCIKLSNpbmNs
dWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgogI2luY2x1ZGUgPHd0
Zi9BcnJheUJ1ZmZlci5oPgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01l
c3NhZ2VQb3J0Q3VzdG9tLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNNZXNzYWdlUG9ydEN1c3RvbS5oCShyZXZpc2lvbiAxNDAxOTYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMyLDcgKzMyLDcgQEAKICNkZWZpbmUgSlNNZXNzYWdlUG9ydEN1c3RvbV9oCiAKICNpbmNsdWRl
ICJNZXNzYWdlUG9ydC5oIgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNWYWx1ZS5oPgorI2luY2x1ZGUg
PHJ1bnRpbWUvSlNDSlNWYWx1ZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvT3BlcmF0aW9ucy5oPgog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTm9kZUZpbHRlckNvbmRpdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckNvbmRpdGlvbi5oCShyZXZpc2lvbiAxNDAxOTYpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDb25kaXRpb24uaAkod29y
a2luZyBjb3B5KQpAQCAtMjIsNyArMjIsNyBAQAogCiAjaW5jbHVkZSAiTm9kZUZpbHRlckNvbmRp
dGlvbi5oIgogI2luY2x1ZGUgPGhlYXAvV2Vhay5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNWYWx1
ZS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUv
T3BlcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwCShy
ZXZpc2lvbiAxNDAxOTYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KYXZhU2NyaXB0
Q2FsbEZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTAgKzMzLDEwIEBACiAjaW5jbHVk
ZSAiSlNET01XaW5kb3dCYXNlLmgiCiAjaW5jbHVkZSA8ZGVidWdnZXIvRGVidWdnZXJDYWxsRnJh
bWUuaD4KICNpbmNsdWRlIDxydW50aW1lL0NvbXBsZXRpb24uaD4KKyNpbmNsdWRlIDxydW50aW1l
L0pTQ0pTVmFsdWUuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg+CiAjaW5j
bHVkZSA8cnVudGltZS9KU0xvY2suaD4KICNpbmNsdWRlIDxydW50aW1lL0pTT2JqZWN0Lmg+Ci0j
aW5jbHVkZSA8cnVudGltZS9KU1ZhbHVlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcAkocmV2aXNpb24gMTQw
MTk2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrRmFjdG9y
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDkgKzQyLDkgQEAKICNpbmNsdWRlIDxpbnRlcnBy
ZXRlci9DYWxsRnJhbWUuaD4KICNpbmNsdWRlIDxpbnRlcnByZXRlci9JbnRlcnByZXRlci5oPgog
I2luY2x1ZGUgPHJ1bnRpbWUvQXJnTGlzdC5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1
ZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNGdW5jdGlvbi5oPgogI2luY2x1ZGUgPHJ1bnRpbWUv
SlNHbG9iYWxEYXRhLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU1ZhbHVlLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmgJKHJldmlzaW9uIDE0MDE5NikKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgPGhl
YXAvU3Ryb25nLmg+CiAjaW5jbHVkZSA8aGVhcC9TdHJvbmdJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8
cnVudGltZS9KU1ZhbHVlLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlLmg+CiAjaW5j
bHVkZSA8cnVudGltZS9PcGVyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCShyZXZpc2lvbiAxNDAx
OTYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUu
aAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogCiAjaW5jbHVkZSAiU2NyaXB0U3Rh
dGUuaCIKICNpbmNsdWRlIDxoZWFwL1N0cm9uZy5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNWYWx1
ZS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZS5oPgogI2luY2x1ZGUgPHd0Zi9BcnJh
eUJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvV2ViU2NyaXB0T2Jq
ZWN0UHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMv
V2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oCShyZXZpc2lvbiAxNDAxOTYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMjcsNyArMjcsNyBAQAogI2RlZmluZSBfV0VCX1NDUklQVF9PQkpFQ1RfUFJJVkFURV9I
XwogCiAjaW1wb3J0ICJXZWJTY3JpcHRPYmplY3QuaCIKLSNpbXBvcnQgPHJ1bnRpbWUvSlNWYWx1
ZS5oPgorI2ltcG9ydCA8cnVudGltZS9KU0NKU1ZhbHVlLmg+CiAjaW1wb3J0IDx3dGYvUGFzc1Jl
ZlB0ci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9j
L2NfdXRpbGl0eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfdXRp
bGl0eS5oCShyZXZpc2lvbiAxNDAxOTYpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX3V0
aWxpdHkuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogI2lmIEVOQUJMRShORVRT
Q0FQRV9QTFVHSU5fQVBJKQogCiAjaW5jbHVkZSAibnBydW50aW1lX2ludGVybmFsLmgiCi0jaW5j
bHVkZSA8cnVudGltZS9KU1ZhbHVlLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlLmg+
CiAjaW5jbHVkZSA8cnVudGltZS9PcGVyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KIApJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTQwMjExKQorKysgU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTMtMDEtMTggIE1h
cmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KKworICAgICAgICBPYmplY3Rp
dmUtQyBBUEk6IFJlbmFtZSBKU1ZhbHVlLmgvQVBJSlNWYWx1ZS5oIHRvIEpTQ0pTVmFsdWUuaC9K
U1ZhbHVlLmgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwNzMyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFdlJ3JlIHJlbmFtaW5nIHRoZXNlIHR3byBmaWxlcywgc28gd2UgaGF2ZSB0byByZXBsYWNlIHRo
ZSBuYW1lcyBldmVyeXdoZXJlLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwOgorCiAyMDEzLTAxLTE4ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkx
MDAubmV0PgogCiAgICAgICAgIENvb3JkaW5hdGVkIEdyYXBoaWNzOiBDb29yZGluYXRlZFRpbGU6
OnVwZGF0ZUJhY2tCdWZmZXIoKSByZXR1cm5zIGEgZGlydHkgcmVjdC4KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDE0MDE5
NikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTI3LDggKzEyNyw4IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0SXRl
cmF0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Zpc2libGVQb3NpdGlvbi5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvbWFya3VwLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlLmg+CiAjaW5j
bHVkZSA8cnVudGltZS9KU0xvY2suaD4KLSNpbmNsdWRlIDxydW50aW1lL0pTVmFsdWUuaD4KICNp
bmNsdWRlIDxydW50aW1lL09wZXJhdGlvbnMuaD4KIAogI2lmIEVOQUJMRShNSFRNTCkKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MDIxMSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEzLTAxLTE4ICBNYXJr
IEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgT2JqZWN0aXZl
LUMgQVBJOiBSZW5hbWUgSlNWYWx1ZS5oL0FQSUpTVmFsdWUuaCB0byBKU0NKU1ZhbHVlLmgvSlNW
YWx1ZS5oCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDczMjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBX
ZSdyZSByZW5hbWluZyB0aGVzZSB0d28gZmlsZXMsIHNvIHdlIGhhdmUgdG8gcmVwbGFjZSB0aGUg
bmFtZXMgZXZlcnl3aGVyZS4KKworICAgICAgICAqIERPTS9XZWJET01PcGVyYXRpb25zLm1tOgor
ICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3
Lm1tOgorCiAyMDEzLTAxLTE4ICBTZW9ranUgS3dvbiAgPHNlb2tqdS5rd29uQGdtYWlsLmNvbT4K
IAogICAgICAgICBBZGQgZXhwbGljaXQga2V5d29yZCB0byBjb25zdHJ1Y3RvcnMgaW4gcGxhdGZv
cm0tc3BlY2lmaWMgSW5zcGVjdG9yQ2xpZW50CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9ET00v
V2ViRE9NT3BlcmF0aW9ucy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9ET00v
V2ViRE9NT3BlcmF0aW9ucy5tbQkocmV2aXNpb24gMTQwMTk2KQorKysgU291cmNlL1dlYktpdC9t
YWMvRE9NL1dlYkRPTU9wZXJhdGlvbnMubW0JKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcg
QEAKICNpbXBvcnQgPFdlYktpdC9ET01FeHRlbnNpb25zLmg+CiAjaW1wb3J0IDxXZWJLaXQvRE9N
SFRNTC5oPgogI2ltcG9ydCA8cnVudGltZS9KU0xvY2suaD4KLSNpbXBvcnQgPHJ1bnRpbWUvSlNW
YWx1ZS5oPgorI2ltcG9ydCA8cnVudGltZS9KU0NKU1ZhbHVlLmg+CiAjaW1wb3J0IDx3dGYvQXNz
ZXJ0aW9ucy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJGcmFtZS5tbQkocmV2aXNpb24gMTQwMTk2KQorKysgU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQkod29ya2luZyBjb3B5KQpAQCAtOTcsNyArOTcsNyBA
QAogI2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAjaW1wb3J0IDxydW50aW1lL0pT
TG9jay5oPgogI2ltcG9ydCA8cnVudGltZS9KU09iamVjdC5oPgotI2ltcG9ydCA8cnVudGltZS9K
U1ZhbHVlLmg+CisjaW1wb3J0IDxydW50aW1lL0pTQ0pTVmFsdWUuaD4KICNpbXBvcnQgPHd0Zi9D
dXJyZW50VGltZS5oPgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwpJbmRleDogU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMTQwMTk2KQorKysgU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xODgsNyArMTg4LDcgQEAK
ICNpbXBvcnQgPHJ1bnRpbWUvRGF0ZUluc3RhbmNlLmg+CiAjaW1wb3J0IDxydW50aW1lL0luaXRp
YWxpemVUaHJlYWRpbmcuaD4KICNpbXBvcnQgPHJ1bnRpbWUvSlNMb2NrLmg+Ci0jaW1wb3J0IDxy
dW50aW1lL0pTVmFsdWUuaD4KKyNpbXBvcnQgPHJ1bnRpbWUvSlNDSlNWYWx1ZS5oPgogI2ltcG9y
dCA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9IYXNoVHJhaXRzLmg+CiAjaW1wb3J0
IDx3dGYvTWFpblRocmVhZC5oPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183570</attachid>
            <date>2013-01-18 16:29:01 -0800</date>
            <delta_ts>2013-01-21 11:36:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107327-20130118162559.patch</filename>
            <type>text/plain</type>
            <size>195438</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQwMjE1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkxIEBA
CisyMDEzLTAxLTE4ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgT2JqZWN0aXZlLUMgQVBJOiBSZW5hbWUgSlNWYWx1ZS5oL0FQSUpTVmFsdWUuaCB0
byBKU0NKU1ZhbHVlLmgvSlNWYWx1ZS5oCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDczMjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBXZSdyZSByZW5hbWluZyB0aGVzZSB0d28gZmlsZXMsIHNvIHdlIGhh
dmUgdG8gcmVwbGFjZSB0aGUgbmFtZXMgZXZlcnl3aGVyZS4KKworICAgICAgICAqIEFQSS9BUElD
YXN0Lmg6CisgICAgICAgICogQVBJL0FQSUpTVmFsdWUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBB
UEkvSlNCbG9ja0FkYXB0b3IubW06CisgICAgICAgICogQVBJL0pTU3RyaW5nUmVmQ0YuY3BwOgor
ICAgICAgICAqIEFQSS9KU1ZhbHVlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvQVBJSlNWYWx1ZS5oLgorICAgICAgICAqIEFQSS9KU1ZhbHVlLm1tOgorICAgICAgICAq
IEFQSS9KU1ZhbHVlSW50ZXJuYWwuaDoKKyAgICAgICAgKiBBUEkvSlNWYWx1ZVJlZi5jcHA6Cisg
ICAgICAgICogQVBJL0pTV2Vha09iamVjdE1hcFJlZlByaXZhdGUuY3BwOgorICAgICAgICAqIEFQ
SS9KU1dyYXBwZXJNYXAubW06CisgICAgICAgICgtW0pTV3JhcHBlck1hcCB3cmFwcGVyRm9yT2Jq
ZWN0Ol0pOgorICAgICAgICAqIEFQSS9KYXZhU2NyaXB0Q29yZS5oOgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnl0ZWNvZGUv
Q2FsbExpbmtTdGF0dXMuaDoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAg
ICAgICAqIGJ5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaDoKKyAgICAgICAg
KiBieXRlY29kZS9SZXNvbHZlR2xvYmFsU3RhdHVzLmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9S
ZXNvbHZlR2xvYmFsU3RhdHVzLmg6CisgICAgICAgICogYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUu
aDoKKyAgICAgICAgKiBieXRlY29kZS9WYWx1ZVJlY292ZXJ5Lmg6CisgICAgICAgICogZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuY3BwOgor
ICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgICog
aGVhcC9Db3BpZWRCbG9jay5oOgorICAgICAgICAqIGhlYXAvSGFuZGxlU3RhY2suY3BwOgorICAg
ICAgICAqIGhlYXAvSGFuZGxlVHlwZXMuaDoKKyAgICAgICAgKiBoZWFwL1dlYWtJbXBsLmg6Cisg
ICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKiBpbnRlcnByZXRl
ci9SZWdpc3Rlci5oOgorICAgICAgICAqIGludGVycHJldGVyL1ZNSW5zcGVjdG9yLmg6CisgICAg
ICAgICogaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwOgorICAgICAgICAqIGppdC9Ib3N0Q2Fs
bFJldHVyblZhbHVlLmg6CisgICAgICAgICogaml0L0pJVENvZGUuaDoKKyAgICAgICAgKiBqaXQv
SklURXhjZXB0aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVEV4Y2VwdGlvbnMuaDoKKyAgICAg
ICAgKiBqaXQvSlNJbnRlcmZhY2VKSVQuaDoKKyAgICAgICAgKiBsbGludC9MTEludENMb29wLmg6
CisgICAgICAgICogbGxpbnQvTExJbnREYXRhLmg6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVyQnl0ZWNvZGUuaDoKKyAgICAg
ICAgKiBwcm9maWxlci9Qcm9maWxlckJ5dGVjb2RlU2VxdWVuY2UuaDoKKyAgICAgICAgKiBwcm9m
aWxlci9Qcm9maWxlckJ5dGVjb2Rlcy5oOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVyQ29t
cGlsYXRpb24uaDoKKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxlckNvbXBpbGVkQnl0ZWNvZGUu
aDoKKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxlckRhdGFiYXNlLmg6CisgICAgICAgICogcHJv
ZmlsZXIvUHJvZmlsZXJPU1JFeGl0Lmg6CisgICAgICAgICogcHJvZmlsZXIvUHJvZmlsZXJPU1JF
eGl0U2l0ZS5oOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVyT3JpZ2luLmg6CisgICAgICAg
ICogcHJvZmlsZXIvUHJvZmlsZXJPcmlnaW5TdGFjay5oOgorICAgICAgICAqIHJ1bnRpbWUvQXJn
TGlzdC5jcHA6CisgICAgICAgICogcnVudGltZS9DYWNoZWRUcmFuc2NlbmRlbnRhbEZ1bmN0aW9u
Lmg6CisgICAgICAgICogcnVudGltZS9DYWxsRGF0YS5oOgorICAgICAgICAqIHJ1bnRpbWUvQ29t
cGxldGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvQ29uc3RydWN0RGF0YS5oOgorICAgICAgICAq
IHJ1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0RhdGVJbnN0
YW5jZS5jcHA6CisgICAgICAgICogcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcDoKKyAgICAgICAg
KiBydW50aW1lL0pTQVBJVmFsdWVXcmFwcGVyLmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1Zh
bHVlLmNwcDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1
ZS5jcHAuCisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmg6IENvcGllZCBmcm9tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaC4KKyAgICAgICAgKEpTVmFsdWUpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaDogQ29waWVkIGZyb20gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZUlubGluZXMuaC4KKyAgICAgICAgKiBydW50
aW1lL0pTR2xvYmFsRGF0YS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTU3RyaW5nSm9pbmVyLmg6CisgICAgICAgICogcnVudGltZS9KU1ZhbHVlLmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBydW50aW1lL0pTVmFsdWUuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBydW50aW1lL0pTVmFsdWVJbmxpbmVzLmg6IFJlbW92ZWQuCisgICAgICAgICogcnVudGlt
ZS9MaXRlcmFsUGFyc2VyLmg6CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmg6CisgICAg
ICAgICogcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL1By
b3BlcnR5U2xvdC5oOgorICAgICAgICAqIHJ1bnRpbWUvUHJvdGVjdC5oOgorICAgICAgICAqIHJ1
bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5o
OgorCiAyMDEzLTAxLTE4ICBWaWF0Y2hlc2xhdiBPc3RhcGVua28gIDxzbC5vc3RhcGVua29Ac2Ft
c3VuZy5jb20+CiAKICAgICAgICAgV2VhayBHQyBtYXBzIHNob3VsZCBiZSBlYXNpZXIgdG8gdXNl
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhc3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhc3QuaAkocmV2aXNpb24gMTQwMjE1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElDYXN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDggKzI3LDggQEAKICNkZWZpbmUgQVBJQ2FzdF9oCiAKICNpbmNsdWRlICJKU0FQSVZhbHVl
V3JhcHBlci5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9i
amVjdC5oIgotI2luY2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0u
aD4KIAogbmFtZXNwYWNlIEpTQyB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQ
SUpTVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUpT
VmFsdWUuaAkocmV2aXNpb24gMTQwMjE1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9B
UElKU1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMjkzICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmIEpTX09CSkNfQVBJX0VOQUJM
RUQKLQotQGNsYXNzIEpTQ29udGV4dDsKLQotLy8gQSBKU1ZhbHVlIGlzIGEgcmVmZXJlbmNlIHRv
IGEgdmFsdWUgd2l0aGluIHRoZSBKYXZhU2NyaXB0IG9iamVjdCBzcGFjZSBvZiBhCi0vLyBKU1Zp
cnR1YWxNYWNoaW5lLiBBbGwgaW5zdGFuY2VzIG9mIEpTVmFsdWUgb3JpZ2luYXRlIGZyb20gYSBK
U0NvbnRleHQgYW5kCi0vLyBob2xkIGEgc3Ryb25nIHJlZmVyZW5jZSB0byB0aGlzIEpTQ29udGV4
dC4gQXMgbG9uZyBhcyBhbnkgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIAotLy8gYSBwYXJ0aWN1bGFy
IEpTQ29udGV4dCBpcyByZXRhaW5lZCwgdGhhdCBKU0NvbnRleHQgd2lsbCByZW1haW4gYWxpdmUu
IAotLy8gV2hlcmUgYW4gaW5zdGFuY2UgbWV0aG9kIGlzIGludm9rZWQgdXBvbiBhIEpTVmFsdWUs
IGFuZCB0aGlzIHJldHVybnMgYW5vdGhlciAKLS8vIEpTVmFsdWUsIHRoZSByZXR1cm5lZCBKU1Zh
bHVlIHdpbGwgb3JpZ2luYXRlIGZyb20gdGhlIHNhbWUgSlNDb250ZXh0IGFzIHRoZSAKLS8vIEpT
VmFsdWUgb24gd2hpY2ggdGhlIG1ldGhvZCB3YXMgaW52b2tlZC4KLS8vCi0vLyBGb3IgYWxsIG1l
dGhvZHMgdGFraW5nIGFyZ3VtZW50cyBvZiB0eXBlIGlkLCBhcmd1bWVudHMgd2lsbCBiZSBjb252
ZXJ0ZWQKLS8vIGludG8gYSBKYXZhU2NyaXB0IHZhbHVlIGFjY29yZGluZyB0byB0aGUgY29udmVy
c2lvbiBzcGVjaWZpZWQgYmVsb3cuCi0vLyBBbGwgSmF2YVNjcmlwdCB2YWx1ZXMgYXJlIGFzc29j
aWF0ZWQgd2l0aCBhIHBhcnRpY3VsYXIgSlNWaXJ0dWFsTWFjaGluZQotLy8gKHRoZSBhc3NvY2lh
dGVkIEpTVmlydHVhbE1hY2hpbmUgaXMgYXZhaWxhYmxlIGluZGlyZWN0bHkgdmlhIHRoZSBjb250
ZXh0Ci0vLyBwcm9wZXJ0eSkuIEFuIGluc3RhbmNlIG9mIEpTVmFsdWUgbWF5IG9ubHkgYmUgcGFz
c2VkIGFzIGFuIGFyZ3VtZW50IHRvCi0vLyBtZXRob2RzIG9uIGluc3RhbmNlcyBvZiBKU1ZhbHVl
IGFuZCBKU0NvbnRleHQgdGhhdCBiZWxvbmcgdG8gdGhlIHNhbWUKLS8vIEpTVmlydHVhbE1hY2hp
bmUgLSBwYXNzaW5nIGEgSlNWYWx1ZSB0byBhIG1ldGhvZCBvbiBhbiBvYmplY3Qgb3JpZ2luYXRp
bmcKLS8vIGZyb20gYSBkaWZmZXJlbnQgSlNWaXJ0dWFsTWFjaGluZSB3aWxsIHJlc3VsdCBpbiBh
biBPYmplY3RpdmUtQyBleGNlcHRpb24KLS8vIGJlaW5nIHJhaXNlZC4KLS8vCi0vLyBDb252ZXJz
aW9uIGJldHdlZW4gT2JqZWN0aXZlLUMgYW5kIEphdmFTY3JpcHQgdHlwZXMuCi0vLwotLy8gV2hl
biBjb252ZXJ0aW5nIGJldHdlZW4gSmF2YVNjcmlwdCB2YWx1ZXMgYW5kIE9iamVjdGl2ZS1DIG9i
amVjdHMgYSBjb3B5IGlzCi0vLyBwZXJmb3JtZWQuIFZhbHVlcyBvZiB0eXBlcyBsaXN0ZWQgYmVs
b3cgYXJlIGNvcGllZCB0byB0aGUgY29ycmVzcG9uZGluZwotLy8gdHlwZXMgb24gY29udmVyc2lv
biBpbiBlYWNoIGRpcmVjdGlvbi4gRm9yIE5TRGljdGlvbmFyaWVzLCBlbnRyaWVzIGluIHRoZQot
Ly8gZGljdGlvbmFyeSB0aGF0IGFyZSBrZXllZCBieSBzdHJpbmdzIGFyZSBjb3BpZWQgb250byBh
IEphdmFTY3JpcHQgb2JqZWN0LgotLy8gRm9yIGRpY3Rpb25hcmllcyBhbmQgYXJyYXlzLCBjb252
ZXJzaW9uIGlzIHJlY3Vyc2l2ZSwgd2l0aCB0aGUgc2FtZSBvYmplY3QKLS8vIGNvbnZlcnNpb24g
YmVpbmcgYXBwbGllZCB0byBhbGwgZW50cmllcyBpbiB0aGUgY29sbGVjdGlvbi4KLS8vCi0vLyAg
IE9iamVjdGl2ZS1DIHR5cGUgIHwgICBKYXZhU2NyaXB0IHR5cGUKLS8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gICAgICAgICBuaWwgICAgICAgICB8ICAg
ICB1bmRlZmluZWQKLS8vICAgICAgICBOU051bGwgICAgICAgfCAgICAgICAgbnVsbAotLy8gICAg
ICAgTlNTdHJpbmcgICAgICB8ICAgICAgIHN0cmluZwotLy8gICAgICAgTlNOdW1iZXIgICAgICB8
ICAgbnVtYmVyLCBib29sZWFuCi0vLyAgICAgTlNEaWN0aW9uYXJ5ICAgIHwgICBPYmplY3Qgb2Jq
ZWN0Ci0vLyAgICAgICBOU0FycmF5ICAgICAgIHwgICAgQXJyYXkgb2JqZWN0Ci0vLyAgICAgICAg
TlNEYXRlICAgICAgIHwgICAgIERhdGUgb2JqZWN0Ci0vLyAgICAgICBOU0Jsb2NrICogICAgIHwg
ICBGdW5jdGlvbiBvYmplY3QgKgotLy8gICAgICAgICAgaWQgKiogICAgICB8ICAgV3JhcHBlciBv
YmplY3QgKioKLS8vICAgICAgICBDbGFzcyAqKiogICAgfCBDb25zdHJ1Y3RvciBvYmplY3QgKioq
Ci0vLwotLy8gKiBJbnN0YW5jZXMgb2YgTlNCbG9jayB3aXRoIHN1cHBvcnRlZCBhcmd1bWVudHMg
dHlwZXMgd2lsbCBiZSBwcmVzZW50ZWQgdG8KLS8vIEphdmFTY3JpcHQgYXMgYSBjYWxsYWJsZSBG
dW5jdGlvbiBvYmplY3QuIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHN1cHBvcnRlZAotLy8gYXJn
dW1lbnQgdHlwZXMgc2VlIEpTRXhwb3J0LmguIElmIGEgSmF2YVNjcmlwdCBGdW5jdGlvbiBvcmln
aW5hdGluZyBmcm9tIGFuCi0vLyBPYmplY3RpdmUtQyBibG9jayBpcyBjb252ZXJ0ZWQgYmFjayB0
byBhbiBPYmplY3RpdmUtQyBvYmplY3QgdGhlIGJsb2NrIHdpbGwKLS8vIGJlIHJldHVybmVkLiBB
bGwgb3RoZXIgSmF2YVNjcmlwdCBmdW5jdGlvbnMgd2lsbCBiZSBjb252ZXJ0ZWQgaW4gdGhlIHNh
bWUKLS8vIG1hbm5lciBhcyBhIEphdmFTY3JpcHQgb2JqZWN0IG9mIHR5cGUgT2JqZWN0LgotLy8K
LS8vICoqIEZvciBPYmplY3RpdmUtQyBpbnN0YW5jZXMgdGhhdCBkbyBub3QgZGVyaXZlIGZyb20g
dGhlIHNldCBvZiB0eXBlcyBsaXN0ZWQKLS8vIGFib3ZlLCBhIHdyYXBwZXIgb2JqZWN0IHRvIHBy
b3ZpZGUgYSByZXRhaW5pbmcgaGFuZGxlIHRvIHRoZSBPYmplY3RpdmUtQwotLy8gaW5zdGFuY2Ug
ZnJvbSBKYXZhU2NyaXB0LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGVzZSB3cmFwcGVyIG9i
amVjdHMsIHNlZQotLy8gSlNFeHBvcnQuaC4gV2hlbiBhIEphdmFTY3JpcHQgd3JhcHBlciBvYmpl
Y3QgaXMgY29udmVydGVkIGJhY2sgdG8gT2JqZWN0aXZlLUMKLS8vIHRoZSBPYmplY3RpdmUtQyBp
bnN0YW5jZSBiZWluZyByZXRhaW5lZCBieSB0aGUgd3JhcHBlciBpcyByZXR1cm5lZC4KLS8vCi0v
LyAqKiogRm9yIE9iamVjdGl2ZS1DIENsYXNzIG9iamVjdHMgYSBjb25zdHJ1Y3RvciBvYmplY3Qg
Y29udGFpbmluZyBleHBvcnRlZAotLy8gY2xhc3MgbWV0aG9kcyB3aWxsIGJlIHJldHVybmVkLiBT
ZWUgSlNFeHBvcnQuaCBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbgotLy8gY29uc3RydWN0b3Igb2Jq
ZWN0cy4KLQotTlNfQ0xBU1NfQVZBSUxBQkxFKDEwXzksIE5BKQotQGludGVyZmFjZSBKU1ZhbHVl
IDogTlNPYmplY3QKLQotLy8gQ3JlYXRlIGEgSlNWYWx1ZSBieSBjb252ZXJ0aW5nIGFuIE9iamVj
dGl2ZS1DIG9iamVjdC4KLSsgKEpTVmFsdWUgKil2YWx1ZVdpdGhPYmplY3Q6KGlkKXZhbHVlIGlu
Q29udGV4dDooSlNDb250ZXh0ICopY29udGV4dDsKLS8vIENyZWF0ZSBhIEphdmFTY3JpcHQgdmFs
dWUgZnJvbSBhbiBPYmplY3RpdmUtQyBwcmltaXRpdmUgdHlwZS4KLSsgKEpTVmFsdWUgKil2YWx1
ZVdpdGhCb29sOihCT09MKXZhbHVlIGluQ29udGV4dDooSlNDb250ZXh0ICopY29udGV4dDsKLSsg
KEpTVmFsdWUgKil2YWx1ZVdpdGhEb3VibGU6KGRvdWJsZSl2YWx1ZSBpbkNvbnRleHQ6KEpTQ29u
dGV4dCAqKWNvbnRleHQ7Ci0rIChKU1ZhbHVlICopdmFsdWVXaXRoSW50MzI6KGludDMyX3QpdmFs
dWUgaW5Db250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0OwotKyAoSlNWYWx1ZSAqKXZhbHVlV2l0
aFVJbnQzMjoodWludDMyX3QpdmFsdWUgaW5Db250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0Owot
Ly8gQ3JlYXRlIGEgSmF2YVNjcmlwdCB2YWx1ZSBpbiB0aGlzIGNvbnRleHQuCi0rIChKU1ZhbHVl
ICopdmFsdWVXaXRoTmV3T2JqZWN0SW5Db250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0OwotKyAo
SlNWYWx1ZSAqKXZhbHVlV2l0aE5ld0FycmF5SW5Db250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0
OwotKyAoSlNWYWx1ZSAqKXZhbHVlV2l0aE5ld1JlZ3VsYXJFeHByZXNzaW9uRnJvbVBhdHRlcm46
KE5TU3RyaW5nICopcGF0dGVybiBmbGFnczooTlNTdHJpbmcgKilmbGFncyBpbkNvbnRleHQ6KEpT
Q29udGV4dCAqKWNvbnRleHQ7Ci0rIChKU1ZhbHVlICopdmFsdWVXaXRoTmV3RXJyb3JGcm9tTWVz
c2FnZTooTlNTdHJpbmcgKiltZXNzYWdlIGluQ29udGV4dDooSlNDb250ZXh0ICopY29udGV4dDsK
LSsgKEpTVmFsdWUgKil2YWx1ZVdpdGhOdWxsSW5Db250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0
OwotKyAoSlNWYWx1ZSAqKXZhbHVlV2l0aFVuZGVmaW5lZEluQ29udGV4dDooSlNDb250ZXh0ICop
Y29udGV4dDsKLQotLy8gQ29udmVydCB0aGlzIHZhbHVlIHRvIGEgY29ycmVzcG9uZGluZyBPYmpl
Y3RpdmUtQyBvYmplY3QsIGFjY29yZGluZyB0byB0aGUKLS8vIGNvbnZlcnNpb24gc3BlY2lmaWVk
IGFib3ZlLgotLSAoaWQpdG9PYmplY3Q7Ci0vLyBDb252ZXJ0IHRoaXMgdmFsdWUgdG8gYSBjb3Jy
ZXNwb25kaW5nIE9iamVjdGl2ZS1DIG9iamVjdCwgaWYgdGhlIHJlc3VsdCBpcwotLy8gbm90IG9m
IHRoZSBzcGVjaWZpZWQgY2xhc3MgdGhlbiBuaWwgd2lsbCBiZSByZXR1cm5lZC4KLS0gKGlkKXRv
T2JqZWN0T2ZDbGFzczooQ2xhc3MpZXhwZWN0ZWRDbGFzczsKLS8vIFRoZSB2YWx1ZSBpcyBjb3Bp
ZWQgdG8gYSBib29sZWFuIGFjY29yZGluZyB0byB0aGUgY29udmVyc2lvbiBzcGVjaWZpZWQgYnkg
dGhlCi0vLyBKYXZhU2NyaXB0IGxhbmd1YWdlLgotLSAoQk9PTCl0b0Jvb2w7Ci0vLyBUaGUgdmFs
dWUgaXMgY29waWVkIHRvIGEgbnVtYmVyIGFjY29yZGluZyB0byB0aGUgY29udmVyc2lvbiBzcGVj
aWZpZWQgYnkgdGhlCi0vLyBKYXZhU2NyaXB0IGxhbmd1YWdlLgotLSAoZG91YmxlKXRvRG91Ymxl
OwotLy8gVGhlIHZhbHVlIGlzIGNvcGllZCB0byBhbiBpbnRlZ2VyIGFjY29yZGluZyB0byB0aGUg
Y29udmVyc2lvbiBzcGVjaWZpZWQgYnkKLS8vIHRoZSBKYXZhU2NyaXB0IGxhbmd1YWdlLgotLSAo
aW50MzJfdCl0b0ludDMyOwotLy8gVGhlIHZhbHVlIGlzIGNvcGllZCB0byBhbiBpbnRlZ2VyIGFj
Y29yZGluZyB0byB0aGUgY29udmVyc2lvbiBzcGVjaWZpZWQgYnkKLS8vIHRoZSBKYXZhU2NyaXB0
IGxhbmd1YWdlLgotLSAodWludDMyX3QpdG9VSW50MzI7Ci0vLyBJZiB0aGUgdmFsdWUgaXMgYSBi
b29sZWFuLCBhIE5TTnVtYmVyIHZhbHVlIG9mIEBZRVMgb3IgQE5PIHdpbGwgYmUgcmV0dXJuZWQu
Ci0vLyBGb3IgYWxsIG90aGVyIHR5cGVzIHRoZSB2YWx1ZSB3aWxsIGJlIGNvcGllZCB0byBhIG51
bWJlciBhY2NvcmRpbmcgdG8gdGhlCi0vLyBjb252ZXJzaW9uIHNwZWNpZmllZCBieSB0aGUgSmF2
YVNjcmlwdCBsYW5ndWFnZS4KLS0gKE5TTnVtYmVyICopdG9OdW1iZXI7Ci0vLyBUaGUgdmFsdWUg
aXMgY29waWVkIHRvIGEgc3RyaW5nIGFjY29yZGluZyB0byB0aGUgY29udmVyc2lvbiBzcGVjaWZp
ZWQgYnkgdGhlCi0vLyBKYXZhU2NyaXB0IGxhbmd1YWdlLgotLSAoTlNTdHJpbmcgKil0b1N0cmlu
ZzsKLS8vIFRoZSB2YWx1ZSBpcyBjb252ZXJ0ZWQgdG8gYSBudW1iZXIgcmVwcmVzZW50aW5nIGEg
dGltZSBpbnRlcnZhbCBzaW5jZSAxOTcwLAotLy8gYW5kIGEgbmV3IE5TRGF0ZSBpbnN0YW5jZSBp
cyByZXR1cm5lZC4KLS0gKE5TRGF0ZSAqKXRvRGF0ZTsKLS8vIElmIHRoZSB2YWx1ZSBpcyBudWxs
IG9yIHVuZGVmaW5lZCB0aGVuIG5pbCBpcyByZXR1cm5lZC4KLS8vIElmIHRoZSB2YWx1ZSBpcyBu
b3QgYW4gb2JqZWN0IHRoZW4gYSBKYXZhU2NyaXB0IFR5cGVFcnJvciB3aWxsIGJlIHRocm93bi4K
LS8vIFRoZSBwcm9wZXJ0eSAibGVuZ3RoIiBpcyByZWFkIGZyb20gdGhlIG9iamVjdCwgY29udmVy
dGVkIHRvIGFuIHVuc2lnbmVkCi0vLyBpbnRlZ2VyLCBhbmQgYW4gTlNBcnJheSBvZiB0aGlzIHNp
emUgaXMgYWxsb2NhdGVkLiBQcm9wZXJ0aWVzIGNvcnJlc3BvbmRpbmcKLS8vIHRvIGluZGljaWVz
IHdpdGhpbiB0aGUgYXJyYXkgYm91bmRzIHdpbGwgYmUgY29waWVkIHRvIHRoZSBhcnJheSwgd2l0
aAotLy8gT2JqZWN0aXZlLUMgb2JqZWN0cyBjb252ZXJ0ZWQgdG8gZXF1aXZhbGVudCBKU1ZhbHVl
cyBhcyBzcGVjaWZpZWQuCi0tIChOU0FycmF5ICopdG9BcnJheTsKLS8vIElmIHRoZSB2YWx1ZSBp
cyBudWxsIG9yIHVuZGVmaW5lZCB0aGVuIG5pbCBpcyByZXR1cm5lZC4KLS8vIElmIHRoZSB2YWx1
ZSBpcyBub3QgYW4gb2JqZWN0IHRoZW4gYSBKYXZhU2NyaXB0IFR5cGVFcnJvciB3aWxsIGJlIHRo
cm93bi4KLS8vIEFsbCBlbnVtZXJhYmxlIHByb3BlcnRpZXMgb2YgdGhlIG9iamVjdCBhcmUgY29w
aWVkIHRvIHRoZSBkaWN0aW9uYXJ5LCB3aXRoCi0vLyBPYmplY3RpdmUtQyBvYmplY3RzIGNvbnZl
cnRlZCB0byBlcXVpdmFsZW50IEpTVmFsdWVzIGFzIHNwZWNpZmllZC4KLS0gKE5TRGljdGlvbmFy
eSAqKXRvRGljdGlvbmFyeTsKLQotLy8gQWNjZXNzIGEgcHJvcGVydHkgZnJvbSB0aGUgdmFsdWUu
IFRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuIHRoZSBKYXZhU2NyaXB0IHZhbHVlCi0vLyAndW5kZWZp
bmVkJyBpZiB0aGUgcHJvcGVydHkgZG9lcyBub3QgZXhpc3QuCi0tIChKU1ZhbHVlICopdmFsdWVG
b3JQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eTsKLS8vIFNldCBhIHByb3BlcnR5IG9uIHRo
ZSB2YWx1ZS4KLS0gKHZvaWQpc2V0VmFsdWU6KGlkKXZhbHVlIGZvclByb3BlcnR5OihOU1N0cmlu
ZyAqKXByb3BlcnR5OwotLy8gRGVsZXRlIGEgcHJvcGVydHkgZnJvbSB0aGUgdmFsdWUsIHJldHVy
bnMgWUVTIGlmIGRlbGV0aW9uIGlzIHN1Y2Nlc3NmdWwuCi0tIChCT09MKWRlbGV0ZVByb3BlcnR5
OihOU1N0cmluZyAqKXByb3BlcnR5OwotLy8gUmV0dXJucyBZRVMgaWYgcHJvcGVydHkgaXMgcHJl
c2VudCBvbiB0aGUgdmFsdWUuCi0vLyBUaGlzIG1ldGhvZCBoYXMgdGhlIHNhbWUgZnVuY3Rpb24g
YXMgdGhlIEphdmFTY3JpcHQgb3BlcmF0b3IgImluIi4KLS0gKEJPT0wpaGFzUHJvcGVydHk6KE5T
U3RyaW5nICopcHJvcGVydHk7Ci0vLyBUaGlzIG1ldGhvZCBtYXkgYmUgdXNlZCB0byBjcmVhdGUg
YSBkYXRhIG9yIGFjY2Vzc29yIHByb3BlcnR5IG9uIGFuIG9iamVjdDsKLS8vIHRoaXMgbWV0aG9k
IG9wZXJhdGVzIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgT2JqZWN0LmRlZmluZVByb3BlcnR5IG1l
dGhvZCBpbgotLy8gdGhlIEphdmFTY3JpcHQgbGFuZ2F1YWdlLgotLSAodm9pZClkZWZpbmVQcm9w
ZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eSBkZXNjcmlwdG9yOihpZClkZXNjcmlwdG9yOwotCi0v
LyBBY2Nlc3MgYW4gaW5kZXhlZCBwcm9wZXJ0eSBmcm9tIHRoZSB2YWx1ZS4gVGhpcyBtZXRob2Qg
d2lsbCByZXR1cm4gdGhlCi0vLyBKYXZhU2NyaXB0IHZhbHVlICd1bmRlZmluZWQnIGlmIG5vIHBy
b3BlcnR5IGV4aXN0cyBhdCB0aGF0IGluZGV4LgotLSAoSlNWYWx1ZSAqKXZhbHVlQXRJbmRleDoo
TlNVSW50ZWdlcilpbmRleDsKLS8vIFNldCBhbiBpbmRleGVkIHByb3BlcnR5IG9uIHRoZSB2YWx1
ZS4KLS0gKHZvaWQpc2V0VmFsdWU6KGlkKXZhbHVlIGF0SW5kZXg6KE5TVUludGVnZXIpaW5kZXg7
Ci0KLS8vIEFsbCBKYXZhU2NyaXB0IHZhbHVlcyBhcmUgcHJlY2lzZWx5IG9uZSBvZiB0aGVzZSB0
eXBlcy4KLS0gKEJPT0wpaXNVbmRlZmluZWQ7Ci0tIChCT09MKWlzTnVsbDsKLS0gKEJPT0wpaXNC
b29sZWFuOwotLSAoQk9PTClpc051bWJlcjsKLS0gKEJPT0wpaXNTdHJpbmc7Ci0tIChCT09MKWlz
T2JqZWN0OwotCi0vLyBUaGlzIG1ldGhvZCBoYXMgdGhlIHNhbWUgZnVuY3Rpb24gYXMgdGhlIEph
dmFTY3JpcHQgb3BlcmF0b3IgIj09PSIuCi0tIChCT09MKWlzRXF1YWxUb09iamVjdDooaWQpdmFs
dWU7Ci0vLyBUaGlzIG1ldGhvZCBoYXMgdGhlIHNhbWUgZnVuY3Rpb24gYXMgdGhlIEphdmFTY3Jp
cHQgb3BlcmF0b3IgIj09Ii4KLS0gKEJPT0wpaXNFcXVhbFdpdGhUeXBlQ29lcmNpb25Ub09iamVj
dDooaWQpdmFsdWU7Ci0vLyBUaGlzIG1ldGhvZCBoYXMgdGhlIHNhbWUgZnVuY3Rpb24gYXMgdGhl
IEphdmFTY3JpcHQgb3BlcmF0b3IgImluc3RhbmNlb2YiLgotLSAoQk9PTClpc0luc3RhbmNlT2Y6
KGlkKXZhbHVlOwotCi0vLyBDYWxsIHRoaXMgdmFsdWUgYXMgYSBmdW5jdGlvbiBwYXNzaW5nIHRo
ZSBzcGVjaWZpZWQgInRoaXMiIHZhbHVlIGFuZCBhcmd1bWVudHMuCi0tIChKU1ZhbHVlICopY2Fs
bFdpdGhBcmd1bWVudHM6KE5TQXJyYXkgKilhcmd1bWVudHM7Ci0vLyBDYWxsIHRoaXMgdmFsdWUg
YXMgYSBjb25zdHJ1Y3RvciBwYXNzaW5nIHRoZSBzcGVjaWZpZWQgYXJndW1lbnRzLgotLSAoSlNW
YWx1ZSAqKWNvbnN0cnVjdFdpdGhBcmd1bWVudHM6KE5TQXJyYXkgKilhcmd1bWVudHM7Ci0vLyBB
Y2Nlc3MgdGhlIHByb3BlcnR5IG5hbWVkICJtZXRob2QiIGZyb20gdGhpcyB2YWx1ZTsgY2FsbCB0
aGUgdmFsdWUgcmVzdWx0aW5nCi0vLyBmcm9tIHRoZSBwcm9wZXJ0eSBhY2Nlc3MgYXMgYSBmdW5j
dGlvbiwgcGFzc2luZyB0aGlzIHZhbHVlIGFzIHRoZSAidGhpcyIKLS8vIHZhbHVlLCBhbmQgdGhl
IHNwZWNpZmllZCBhZ3J1bWVudHMuCi0tIChKU1ZhbHVlICopaW52b2tlTWV0aG9kOihOU1N0cmlu
ZyAqKW1ldGhvZCB3aXRoQXJndW1lbnRzOihOU0FycmF5ICopYXJndW1lbnRzOwotCi0vLyBUaGUg
SlNDb250ZXh0IHRoYXQgdGhpcyB2YWx1ZSBvcmlnaW5hdGVzIGZyb20uCi1AcHJvcGVydHkocmVh
ZG9ubHksIHJldGFpbikgSlNDb250ZXh0ICpjb250ZXh0OwotCi1AZW5kCi0KLS8vIE9iamVjdGl2
ZS1DIG1ldGhvZHMgZXhwb3J0ZWQgdG8gSmF2YVNjcmlwdCBtYXkgaGF2ZSBhcmd1bWVudCBhbmQv
b3IgcmV0dXJuCi0vLyB2YWx1ZXMgb2Ygc3RydWN0IHR5cGVzIGlmIHRoZSBzdHJ1Y3QgaWYgY29u
dmVyc2lvbiB0byBhbmQgZnJvbSB0aGUgc3RydWN0Ci0vLyBpcyBzdXBwb3J0ZWQgYnkgSlNWYWx1
ZS4gU3VwcG9ydCBpcyBwcm92aWRlZCBmb3IgYW55IHR5cGVzIHdoZXJlIEpTVmFsdWUKLS8vIGNv
bnRhaW5zIGJvdGggYSBjbGFzcyBtZXRob2QgInZhbHVlV2l0aDxUeXBlPjppbkNvbnRleHQ6Iiwg
YW5kIGFuZCBpbnN0YW5jZQotLy8gbWV0aG9kICJ0bzxUeXBlPiIgLSB3aGVyZSB0aGUgc3RyaW5n
ICI8VHlwZT4iIGluIHRoZXNlIHNlbGVjdG9yIG5hbWVzIG1hdGNoLAotLy8gd2l0aCB0aGUgZmly
c3QgYXJndW1lbnQgdG8gdGhlIGZvcm1lciBiZWluZyBvZiB0aGUgc2FtZSBzdHJ1Y3QgdHlwZSBh
cyB0aGUKLS8vIHJldHVybiB0eXBlIG9mIHRoZSBsYXR0ZXIuCi0vLyBTdXBwb3J0IGlzIHByb3Zp
ZGVkIGZvciBzdHJ1Y3RzIG9mIHR5cGUgQ0dQb2ludCwgTlNSYW5nZSwgQ0dSZWN0IGFuZCBDR1Np
emUuCi1AaW50ZXJmYWNlIEpTVmFsdWUoU3RydWN0U3VwcG9ydCkKLQotLy8gVGhpcyBtZXRob2Qg
cmV0dXJucyBhIG5ld2x5IGFsbG9jYXRlZCBKYXZhU2NyaXB0IG9iamVjdCBjb250YWluaW5nIHBy
b3BlcnRpZXMKLS8vIG5hbWVkICJ4IiBhbmQgInkiLCB3aXRoIHZhbHVlcyBmcm9tIHRoZSBDR1Bv
aW50LgotKyAoSlNWYWx1ZSAqKXZhbHVlV2l0aFBvaW50OihDR1BvaW50KXBvaW50IGluQ29udGV4
dDooSlNDb250ZXh0ICopY29udGV4dDsKLS8vIFRoaXMgbWV0aG9kIHJldHVybnMgYSBuZXdseSBh
bGxvY2F0ZWQgSmF2YVNjcmlwdCBvYmplY3QgY29udGFpbmluZyBwcm9wZXJ0aWVzCi0vLyBuYW1l
ZCAibG9jYXRpb24iIGFuZCAibGVuZ3RoIiwgd2l0aCB2YWx1ZXMgZnJvbSB0aGUgTlNSYW5nZS4K
LSsgKEpTVmFsdWUgKil2YWx1ZVdpdGhSYW5nZTooTlNSYW5nZSlyYW5nZSBpbkNvbnRleHQ6KEpT
Q29udGV4dCAqKWNvbnRleHQ7Ci0vLyBUaGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3bHkgYWxsb2Nh
dGVkIEphdmFTY3JpcHQgb2JqZWN0IGNvbnRhaW5pbmcgcHJvcGVydGllcwotLy8gbmFtZWQgIngi
LCAieSIsICJ3aWR0aCIsIGFuZCAiaGVpZ2h0Iiwgd2l0aCB2YWx1ZXMgZnJvbSB0aGUgQ0dSZWN0
LgotKyAoSlNWYWx1ZSAqKXZhbHVlV2l0aFJlY3Q6KENHUmVjdClyZWN0IGluQ29udGV4dDooSlND
b250ZXh0ICopY29udGV4dDsKLS8vIFRoaXMgbWV0aG9kIHJldHVybnMgYSBuZXdseSBhbGxvY2F0
ZWQgSmF2YVNjcmlwdCBvYmplY3QgY29udGFpbmluZyBwcm9wZXJ0aWVzCi0vLyBuYW1lZCAid2lk
dGgiIGFuZCAiaGVpZ2h0Iiwgd2l0aCB2YWx1ZXMgZnJvbSB0aGUgQ0dTaXplLgotKyAoSlNWYWx1
ZSAqKXZhbHVlV2l0aFNpemU6KENHU2l6ZSlzaXplIGluQ29udGV4dDooSlNDb250ZXh0ICopY29u
dGV4dDsKLQotLy8gQ29udmVydCBhIHZhbHVlIHRvIHR5cGUgQ0dQb2ludCBieSByZWFkaW5nIHBy
b3BlcnRpZXMgbmFtZWQgIngiIGFuZCAieSIgZnJvbQotLy8gdGhpcyB2YWx1ZSwgYW5kIGNvbnZl
cnRpbmcgdGhlIHJlc3VsdHMgdG8gZG91YmxlLgotLSAoQ0dQb2ludCl0b1BvaW50OwotLy8gQ29u
dmVydCBhIHZhbHVlIHRvIHR5cGUgTlNSYW5nZSBieSBhY2Nlc3NpbmcgcHJvcGVydGllcyBuYW1l
ZCAibG9jYXRpb24iIGFuZAotLy8gImxlbmd0aCIgZnJvbSB0aGlzIHZhbHVlIGNvbnZlcnRpbmcg
dGhlIHJlc3VsdHMgdG8gZG91YmxlLgotLSAoTlNSYW5nZSl0b1JhbmdlOwotLy8gQ29udmVydCBh
IHZhbHVlIHRvIHR5cGUgQ0dSZWN0IGJ5IHJlYWRpbmcgcHJvcGVydGllcyBuYW1lZCAieCIsICJ5
IiwgIndpZHRoIiwKLS8vIGFuZCAiaGVpZ2h0IiBmcm9tIHRoaXMgdmFsdWUsIGFuZCBjb252ZXJ0
aW5nIHRoZSByZXN1bHRzIHRvIGRvdWJsZS4KLS0gKENHUmVjdCl0b1JlY3Q7Ci0vLyBDb252ZXJ0
IGEgdmFsdWUgdG8gdHlwZSBDR1JhbmdlIGJ5IGFjY2Vzc2luZyBwcm9wZXJ0aWVzIG5hbWVkICJ3
aWR0aCIgYW5kCi0vLyAiaGVpZ2h0IiBmcm9tIHRoaXMgdmFsdWUgY29udmVydGluZyB0aGUgcmVz
dWx0cyB0byBkb3VibGUuCi0tIChDR1NpemUpdG9TaXplOwotCi1AZW5kCi0KLS8vIEluc3RhbmNl
cyBvZiBKU1ZhbHVlIGltcGxlbWVudCB0aGUgZm9sbG93aW5nIG1ldGhvZHMgaW4gb3JkZXIgdG8g
ZW5hYmxlCi0vLyBzdXBwb3J0IGZvciBzdWJzY3JpcHQgYWNjZXNzIGJ5IGtleSBhbmQgaW5kZXgs
IGZvciBleGFtcGxlOgotLy8KLS8vICAgIEpTVmFsdWUgKm9iamVjdEEsICpvYmplY3RCOwotLy8g
ICAgSlNWYWx1ZSAqdjEgPSBvYmplY3RbQCJYIl07IC8vIEdldCB2YWx1ZSBmb3IgcHJvcGVydHkg
IlgiIGZyb20gJ29iamVjdCcuCi0vLyAgICBKU1ZhbHVlICp2MiA9IG9iamVjdFs0Ml07ICAgLy8g
R2V0IHZhbHVlIGZvciBpbmRleCA0MiBmcm9tICdvYmplY3QnLgotLy8gICAgb2JqZWN0W0AiWSJd
ID0gdjE7ICAgICAgICAgIC8vIEFzc2lnbiAndjEnIHRvIHByb3BlcnR5ICJZIiBvZiAnb2JqZWN0
Jy4KLS8vICAgIG9iamVjdFsxMDFdID0gdjI7ICAgICAgICAgICAvLyBBc3NpZ24gJ3YyJyB0byBp
bmRleCAxMDEgb2YgJ29iamVjdCcuCi0vLwotLy8gQW4gb2JqZWN0IGtleSBwYXNzZWQgYXMgYSBz
dWJzY3JpcHQgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gYSBKYXZhU2NpcHQgdmFsdWUsCi0vLyBhbmQg
dGhlbiB0aGUgdmFsdWUgY29udmVydGVkIHRvIGEgc3RyaW5nIHVzZWQgYXMgYSBwcm9wZXJ0eSBu
YW1lLgotQGludGVyZmFjZSBKU1ZhbHVlKFN1YnNjcmlwdFN1cHBvcnQpCi0KLS0gKEpTVmFsdWUg
KilvYmplY3RGb3JLZXllZFN1YnNjcmlwdDooaWQpa2V5OwotLSAoSlNWYWx1ZSAqKW9iamVjdEF0
SW5kZXhlZFN1YnNjcmlwdDooTlNVSW50ZWdlcilpbmRleDsKLS0gKHZvaWQpc2V0T2JqZWN0Oihp
ZClvYmplY3QgZm9yS2V5ZWRTdWJzY3JpcHQ6KE5TT2JqZWN0IDxOU0NvcHlpbmc+ICopa2V5Owot
LSAodm9pZClzZXRPYmplY3Q6KGlkKW9iamVjdCBhdEluZGV4ZWRTdWJzY3JpcHQ6KE5TVUludGVn
ZXIpaW5kZXg7Ci0KLUBlbmQKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLSNl
bmRpZgotCi0vLyBUaGVzZSBrZXlzIG1heSBhc3Npc3QgaW4gY3JlYXRpbmcgYSBwcm9wZXJ0eSBk
ZXNjcmlwdG9yIGZvciB1c2Ugd2l0aCB0aGUKLS8vIGRlZmluZVByb3BlcnR5IG1ldGhvZCBvbiBK
U1ZhbHVlLgotLy8gUHJvcGVydHkgZGVzY3JpcHRvcnMgbXVzdCBmaXQgb25lIG9mIHRocmVlIGRl
c2NyaXB0aW9uczoKLS8vIERhdGEgRGVzY3JpcHRvcjoKLS8vICAtIEEgZGVzY3JpcHRvciBjb250
YWluaW5nIG9uZSBvciBib3RoIG9mIHRoZSBrZXlzICJ2YWx1ZSIgYW5kICJ3cml0YWJsZSIsCi0v
LyAgICBhbmQgb3B0aW9uYWxseSBjb250YWluaW5nIG9uZSBvciBib3RoIG9mIHRoZSBrZXlzICJl
bnVtZXJhYmxlIiBhbmQKLS8vICAgICJjb25maWd1cmFibGUiLiBBIGRhdGEgZGVzY3JpcHRvciBt
YXkgbm90IGNvbnRhaW4gZWl0aGVyIHRoZSAiZ2V0IiBvcgotLy8gICAgInNldCIga2V5LgotLy8g
ICAgQSBkYXRhIGRlc2NyaXB0b3IgbWF5IGJlIHVzZWQgdG8gY3JlYXRlIG9yIG1vZGlmeSB0aGUg
YXR0cmlidXRlcyBvZiBhCi0vLyAgICBkYXRhIHByb3BlcnR5IG9uIGFuIG9iamVjdCAocmVwbGFj
aW5nIGFueSBleGlzdGluZyBhY2Nlc3NvciBwcm9wZXJ0eSkuCi0vLyBBY2Nlc3NvciBEZXNjcmlw
dG9yOgotLy8gIC0gQSBkZXNjcmlwdG9yIGNvbnRhaW5pbmcgb25lIG9yIGJvdGggb2YgdGhlIGtl
eXMgImdldCIgYW5kICJzZXQiLCBhbmQKLS8vICAgIG9wdGlvbmFsbHkgY29udGFpbmluZyBvbmUg
b3IgYm90aCBvZiB0aGUga2V5cyAiZW51bWVyYWJsZSIgYW5kCi0vLyAgICAiY29uZmlndXJhYmxl
Ii4gQW4gYWNjZXNzb3IgZGVzY3JpcHRvciBtYXkgbm90IGNvbnRhaW4gZWl0aGVyIHRoZSAidmFs
dWUiCi0vLyAgICBvciAid3JpdGFibGUiIGtleS4KLS8vICAgIEFuIGFjY2Vzc29yIGRlc2NyaXB0
b3IgbWF5IGJlIHVzZWQgdG8gY3JlYXRlIG9yIG1vZGlmeSB0aGUgYXR0cmlidXRlcyBvZgotLy8g
ICAgYW4gYWNjZXNzb3IgcHJvcGVydHkgb24gYW4gb2JqZWN0IChyZXBsYWNpbmcgYW55IGV4aXN0
aW5nIGRhdGEgcHJvcGVydHkpLgotLy8gR2VuZXJpYyBEZXNjcmlwdG9yOgotLy8gIC0gQSBkZXNj
cmlwdG9yIGNvbnRhaW5pbmcgb25lIG9yIGJvdGggb2YgdGhlIGtleXMgImVudW1lcmFibGUiIGFu
ZAotLy8gICAgImNvbmZpZ3VyYWJsZSIuIEEgZ2VuZXJpYyBkZXNjcmlwdG9yIG1heSBub3QgY29u
dGFpbiBhbnkgb2YgdGhlIGtleXMKLS8vICAgICJ2YWx1ZSIsICIgd3JpdGFibGUiLCAiZ2V0Iiwg
b3IgInNldCIuCi0vLyAgICBBIGdlbmVyaWMgZGVzY3JpcHRvciBtYXkgYmUgdXNlZCB0byBtb2Rp
ZnkgdGhlIGF0dHJpYnV0ZXMgb2YgYW4gZXhpc3RpbmcKLS8vICAgIGRhdGEgb3IgYWNjZXNzb3Ig
cHJvcGVydHksIG9yIHRvIGNyZWF0ZSBhIG5ldyBkYXRhIHByb3BlcnR5LgotSlNfRVhQT1JUIGV4
dGVybiBOU1N0cmluZyAqIGNvbnN0IEpTUHJvcGVydHlEZXNjcmlwdG9yV3JpdGFibGVLZXk7Ci1K
U19FWFBPUlQgZXh0ZXJuIE5TU3RyaW5nICogY29uc3QgSlNQcm9wZXJ0eURlc2NyaXB0b3JFbnVt
ZXJhYmxlS2V5OwotSlNfRVhQT1JUIGV4dGVybiBOU1N0cmluZyAqIGNvbnN0IEpTUHJvcGVydHlE
ZXNjcmlwdG9yQ29uZmlndXJhYmxlS2V5OwotSlNfRVhQT1JUIGV4dGVybiBOU1N0cmluZyAqIGNv
bnN0IEpTUHJvcGVydHlEZXNjcmlwdG9yVmFsdWVLZXk7Ci1KU19FWFBPUlQgZXh0ZXJuIE5TU3Ry
aW5nICogY29uc3QgSlNQcm9wZXJ0eURlc2NyaXB0b3JHZXRLZXk7Ci1KU19FWFBPUlQgZXh0ZXJu
IE5TU3RyaW5nICogY29uc3QgSlNQcm9wZXJ0eURlc2NyaXB0b3JTZXRLZXk7Ci0KLSNpZmRlZiBf
X2NwbHVzcGx1cwotfSAvLyBleHRlcm4gIkMiCi0jZW5kaWYKLQotI2VuZGlmCi0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCbG9ja0FkYXB0b3IubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jsb2NrQWRhcHRvci5tbQkocmV2aXNpb24gMTQw
MjE1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jsb2NrQWRhcHRvci5tbQkod29y
a2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogI2ltcG9ydCAiSlNCbG9ja0FkYXB0b3IuaCIK
ICNpbXBvcnQgIkpTQ29udGV4dEludGVybmFsLmgiCiAjaW1wb3J0ICJKU1dyYXBwZXJNYXAuaCIK
LSNpbXBvcnQgIkpTVmFsdWUuaCIKKyNpbXBvcnQgIkpTQ0pTVmFsdWUuaCIKICNpbXBvcnQgIkpT
VmFsdWVJbnRlcm5hbC5oIgogI2ltcG9ydCAiT2JqY1J1bnRpbWVFeHRyYXMuaCIKICNpbXBvcnQg
Ik9wZXJhdGlvbnMuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTdHJpbmdS
ZWZDRi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1N0cmlu
Z1JlZkNGLmNwcAkocmV2aXNpb24gMTQwMjE1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU1N0cmluZ1JlZkNGLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogI2lu
Y2x1ZGUgIkluaXRpYWxpemVUaHJlYWRpbmcuaCIKICNpbmNsdWRlICJKU1N0cmluZ1JlZi5oIgog
I2luY2x1ZGUgIk9wYXF1ZUpTU3RyaW5nLmgiCi0jaW5jbHVkZSA8cnVudGltZS9KU1ZhbHVlLmg+
CisjaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlLmg+CiAjaW5jbHVkZSA8d3RmL093bkFycmF5
UHRyLmg+CiAKIEpTU3RyaW5nUmVmIEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKENGU3RyaW5n
UmVmIHN0cmluZykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5oCShyZXZpc2lv
biAxNDAxOTcpCShmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJSlNWYWx1ZS5oOjE0
MDE5NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMjkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpZiBKU19PQkpDX0FQSV9FTkFCTEVECisKK0BjbGFzcyBKU0NvbnRleHQ7
CisKKy8vIEEgSlNWYWx1ZSBpcyBhIHJlZmVyZW5jZSB0byBhIHZhbHVlIHdpdGhpbiB0aGUgSmF2
YVNjcmlwdCBvYmplY3Qgc3BhY2Ugb2YgYQorLy8gSlNWaXJ0dWFsTWFjaGluZS4gQWxsIGluc3Rh
bmNlcyBvZiBKU1ZhbHVlIG9yaWdpbmF0ZSBmcm9tIGEgSlNDb250ZXh0IGFuZAorLy8gaG9sZCBh
IHN0cm9uZyByZWZlcmVuY2UgdG8gdGhpcyBKU0NvbnRleHQuIEFzIGxvbmcgYXMgYW55IHZhbHVl
IGFzc29jaWF0ZWQgd2l0aCAKKy8vIGEgcGFydGljdWxhciBKU0NvbnRleHQgaXMgcmV0YWluZWQs
IHRoYXQgSlNDb250ZXh0IHdpbGwgcmVtYWluIGFsaXZlLiAKKy8vIFdoZXJlIGFuIGluc3RhbmNl
IG1ldGhvZCBpcyBpbnZva2VkIHVwb24gYSBKU1ZhbHVlLCBhbmQgdGhpcyByZXR1cm5zIGFub3Ro
ZXIgCisvLyBKU1ZhbHVlLCB0aGUgcmV0dXJuZWQgSlNWYWx1ZSB3aWxsIG9yaWdpbmF0ZSBmcm9t
IHRoZSBzYW1lIEpTQ29udGV4dCBhcyB0aGUgCisvLyBKU1ZhbHVlIG9uIHdoaWNoIHRoZSBtZXRo
b2Qgd2FzIGludm9rZWQuCisvLworLy8gRm9yIGFsbCBtZXRob2RzIHRha2luZyBhcmd1bWVudHMg
b2YgdHlwZSBpZCwgYXJndW1lbnRzIHdpbGwgYmUgY29udmVydGVkCisvLyBpbnRvIGEgSmF2YVNj
cmlwdCB2YWx1ZSBhY2NvcmRpbmcgdG8gdGhlIGNvbnZlcnNpb24gc3BlY2lmaWVkIGJlbG93Lgor
Ly8gQWxsIEphdmFTY3JpcHQgdmFsdWVzIGFyZSBhc3NvY2lhdGVkIHdpdGggYSBwYXJ0aWN1bGFy
IEpTVmlydHVhbE1hY2hpbmUKKy8vICh0aGUgYXNzb2NpYXRlZCBKU1ZpcnR1YWxNYWNoaW5lIGlz
IGF2YWlsYWJsZSBpbmRpcmVjdGx5IHZpYSB0aGUgY29udGV4dAorLy8gcHJvcGVydHkpLiBBbiBp
bnN0YW5jZSBvZiBKU1ZhbHVlIG1heSBvbmx5IGJlIHBhc3NlZCBhcyBhbiBhcmd1bWVudCB0bwor
Ly8gbWV0aG9kcyBvbiBpbnN0YW5jZXMgb2YgSlNWYWx1ZSBhbmQgSlNDb250ZXh0IHRoYXQgYmVs
b25nIHRvIHRoZSBzYW1lCisvLyBKU1ZpcnR1YWxNYWNoaW5lIC0gcGFzc2luZyBhIEpTVmFsdWUg
dG8gYSBtZXRob2Qgb24gYW4gb2JqZWN0IG9yaWdpbmF0aW5nCisvLyBmcm9tIGEgZGlmZmVyZW50
IEpTVmlydHVhbE1hY2hpbmUgd2lsbCByZXN1bHQgaW4gYW4gT2JqZWN0aXZlLUMgZXhjZXB0aW9u
CisvLyBiZWluZyByYWlzZWQuCisvLworLy8gQ29udmVyc2lvbiBiZXR3ZWVuIE9iamVjdGl2ZS1D
IGFuZCBKYXZhU2NyaXB0IHR5cGVzLgorLy8KKy8vIFdoZW4gY29udmVydGluZyBiZXR3ZWVuIEph
dmFTY3JpcHQgdmFsdWVzIGFuZCBPYmplY3RpdmUtQyBvYmplY3RzIGEgY29weSBpcworLy8gcGVy
Zm9ybWVkLiBWYWx1ZXMgb2YgdHlwZXMgbGlzdGVkIGJlbG93IGFyZSBjb3BpZWQgdG8gdGhlIGNv
cnJlc3BvbmRpbmcKKy8vIHR5cGVzIG9uIGNvbnZlcnNpb24gaW4gZWFjaCBkaXJlY3Rpb24uIEZv
ciBOU0RpY3Rpb25hcmllcywgZW50cmllcyBpbiB0aGUKKy8vIGRpY3Rpb25hcnkgdGhhdCBhcmUg
a2V5ZWQgYnkgc3RyaW5ncyBhcmUgY29waWVkIG9udG8gYSBKYXZhU2NyaXB0IG9iamVjdC4KKy8v
IEZvciBkaWN0aW9uYXJpZXMgYW5kIGFycmF5cywgY29udmVyc2lvbiBpcyByZWN1cnNpdmUsIHdp
dGggdGhlIHNhbWUgb2JqZWN0CisvLyBjb252ZXJzaW9uIGJlaW5nIGFwcGxpZWQgdG8gYWxsIGVu
dHJpZXMgaW4gdGhlIGNvbGxlY3Rpb24uCisvLworLy8gICBPYmplY3RpdmUtQyB0eXBlICB8ICAg
SmF2YVNjcmlwdCB0eXBlCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKy8vICAgICAgICAgbmlsICAgICAgICAgfCAgICAgdW5kZWZpbmVkCisvLyAgICAgICAg
TlNOdWxsICAgICAgIHwgICAgICAgIG51bGwKKy8vICAgICAgIE5TU3RyaW5nICAgICAgfCAgICAg
ICBzdHJpbmcKKy8vICAgICAgIE5TTnVtYmVyICAgICAgfCAgIG51bWJlciwgYm9vbGVhbgorLy8g
ICAgIE5TRGljdGlvbmFyeSAgICB8ICAgT2JqZWN0IG9iamVjdAorLy8gICAgICAgTlNBcnJheSAg
ICAgICB8ICAgIEFycmF5IG9iamVjdAorLy8gICAgICAgIE5TRGF0ZSAgICAgICB8ICAgICBEYXRl
IG9iamVjdAorLy8gICAgICAgTlNCbG9jayAqICAgICB8ICAgRnVuY3Rpb24gb2JqZWN0ICoKKy8v
ICAgICAgICAgIGlkICoqICAgICAgfCAgIFdyYXBwZXIgb2JqZWN0ICoqCisvLyAgICAgICAgQ2xh
c3MgKioqICAgIHwgQ29uc3RydWN0b3Igb2JqZWN0ICoqKgorLy8KKy8vICogSW5zdGFuY2VzIG9m
IE5TQmxvY2sgd2l0aCBzdXBwb3J0ZWQgYXJndW1lbnRzIHR5cGVzIHdpbGwgYmUgcHJlc2VudGVk
IHRvCisvLyBKYXZhU2NyaXB0IGFzIGEgY2FsbGFibGUgRnVuY3Rpb24gb2JqZWN0LiBGb3IgbW9y
ZSBpbmZvcm1hdGlvbiBvbiBzdXBwb3J0ZWQKKy8vIGFyZ3VtZW50IHR5cGVzIHNlZSBKU0V4cG9y
dC5oLiBJZiBhIEphdmFTY3JpcHQgRnVuY3Rpb24gb3JpZ2luYXRpbmcgZnJvbSBhbgorLy8gT2Jq
ZWN0aXZlLUMgYmxvY2sgaXMgY29udmVydGVkIGJhY2sgdG8gYW4gT2JqZWN0aXZlLUMgb2JqZWN0
IHRoZSBibG9jayB3aWxsCisvLyBiZSByZXR1cm5lZC4gQWxsIG90aGVyIEphdmFTY3JpcHQgZnVu
Y3Rpb25zIHdpbGwgYmUgY29udmVydGVkIGluIHRoZSBzYW1lCisvLyBtYW5uZXIgYXMgYSBKYXZh
U2NyaXB0IG9iamVjdCBvZiB0eXBlIE9iamVjdC4KKy8vCisvLyAqKiBGb3IgT2JqZWN0aXZlLUMg
aW5zdGFuY2VzIHRoYXQgZG8gbm90IGRlcml2ZSBmcm9tIHRoZSBzZXQgb2YgdHlwZXMgbGlzdGVk
CisvLyBhYm92ZSwgYSB3cmFwcGVyIG9iamVjdCB0byBwcm92aWRlIGEgcmV0YWluaW5nIGhhbmRs
ZSB0byB0aGUgT2JqZWN0aXZlLUMKKy8vIGluc3RhbmNlIGZyb20gSmF2YVNjcmlwdC4gRm9yIG1v
cmUgaW5mb3JtYXRpb24gb24gdGhlc2Ugd3JhcHBlciBvYmplY3RzLCBzZWUKKy8vIEpTRXhwb3J0
LmguIFdoZW4gYSBKYXZhU2NyaXB0IHdyYXBwZXIgb2JqZWN0IGlzIGNvbnZlcnRlZCBiYWNrIHRv
IE9iamVjdGl2ZS1DCisvLyB0aGUgT2JqZWN0aXZlLUMgaW5zdGFuY2UgYmVpbmcgcmV0YWluZWQg
YnkgdGhlIHdyYXBwZXIgaXMgcmV0dXJuZWQuCisvLworLy8gKioqIEZvciBPYmplY3RpdmUtQyBD
bGFzcyBvYmplY3RzIGEgY29uc3RydWN0b3Igb2JqZWN0IGNvbnRhaW5pbmcgZXhwb3J0ZWQKKy8v
IGNsYXNzIG1ldGhvZHMgd2lsbCBiZSByZXR1cm5lZC4gU2VlIEpTRXhwb3J0LmggZm9yIG1vcmUg
aW5mb3JtYXRpb24gb24KKy8vIGNvbnN0cnVjdG9yIG9iamVjdHMuCisKK05TX0NMQVNTX0FWQUlM
QUJMRSgxMF85LCBOQSkKK0BpbnRlcmZhY2UgSlNWYWx1ZSA6IE5TT2JqZWN0CisKKy8vIENyZWF0
ZSBhIEpTVmFsdWUgYnkgY29udmVydGluZyBhbiBPYmplY3RpdmUtQyBvYmplY3QuCisrIChKU1Zh
bHVlICopdmFsdWVXaXRoT2JqZWN0OihpZCl2YWx1ZSBpbkNvbnRleHQ6KEpTQ29udGV4dCAqKWNv
bnRleHQ7CisvLyBDcmVhdGUgYSBKYXZhU2NyaXB0IHZhbHVlIGZyb20gYW4gT2JqZWN0aXZlLUMg
cHJpbWl0aXZlIHR5cGUuCisrIChKU1ZhbHVlICopdmFsdWVXaXRoQm9vbDooQk9PTCl2YWx1ZSBp
bkNvbnRleHQ6KEpTQ29udGV4dCAqKWNvbnRleHQ7CisrIChKU1ZhbHVlICopdmFsdWVXaXRoRG91
YmxlOihkb3VibGUpdmFsdWUgaW5Db250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0OworKyAoSlNW
YWx1ZSAqKXZhbHVlV2l0aEludDMyOihpbnQzMl90KXZhbHVlIGluQ29udGV4dDooSlNDb250ZXh0
ICopY29udGV4dDsKKysgKEpTVmFsdWUgKil2YWx1ZVdpdGhVSW50MzI6KHVpbnQzMl90KXZhbHVl
IGluQ29udGV4dDooSlNDb250ZXh0ICopY29udGV4dDsKKy8vIENyZWF0ZSBhIEphdmFTY3JpcHQg
dmFsdWUgaW4gdGhpcyBjb250ZXh0LgorKyAoSlNWYWx1ZSAqKXZhbHVlV2l0aE5ld09iamVjdElu
Q29udGV4dDooSlNDb250ZXh0ICopY29udGV4dDsKKysgKEpTVmFsdWUgKil2YWx1ZVdpdGhOZXdB
cnJheUluQ29udGV4dDooSlNDb250ZXh0ICopY29udGV4dDsKKysgKEpTVmFsdWUgKil2YWx1ZVdp
dGhOZXdSZWd1bGFyRXhwcmVzc2lvbkZyb21QYXR0ZXJuOihOU1N0cmluZyAqKXBhdHRlcm4gZmxh
Z3M6KE5TU3RyaW5nICopZmxhZ3MgaW5Db250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0OworKyAo
SlNWYWx1ZSAqKXZhbHVlV2l0aE5ld0Vycm9yRnJvbU1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2Fn
ZSBpbkNvbnRleHQ6KEpTQ29udGV4dCAqKWNvbnRleHQ7CisrIChKU1ZhbHVlICopdmFsdWVXaXRo
TnVsbEluQ29udGV4dDooSlNDb250ZXh0ICopY29udGV4dDsKKysgKEpTVmFsdWUgKil2YWx1ZVdp
dGhVbmRlZmluZWRJbkNvbnRleHQ6KEpTQ29udGV4dCAqKWNvbnRleHQ7CisKKy8vIENvbnZlcnQg
dGhpcyB2YWx1ZSB0byBhIGNvcnJlc3BvbmRpbmcgT2JqZWN0aXZlLUMgb2JqZWN0LCBhY2NvcmRp
bmcgdG8gdGhlCisvLyBjb252ZXJzaW9uIHNwZWNpZmllZCBhYm92ZS4KKy0gKGlkKXRvT2JqZWN0
OworLy8gQ29udmVydCB0aGlzIHZhbHVlIHRvIGEgY29ycmVzcG9uZGluZyBPYmplY3RpdmUtQyBv
YmplY3QsIGlmIHRoZSByZXN1bHQgaXMKKy8vIG5vdCBvZiB0aGUgc3BlY2lmaWVkIGNsYXNzIHRo
ZW4gbmlsIHdpbGwgYmUgcmV0dXJuZWQuCistIChpZCl0b09iamVjdE9mQ2xhc3M6KENsYXNzKWV4
cGVjdGVkQ2xhc3M7CisvLyBUaGUgdmFsdWUgaXMgY29waWVkIHRvIGEgYm9vbGVhbiBhY2NvcmRp
bmcgdG8gdGhlIGNvbnZlcnNpb24gc3BlY2lmaWVkIGJ5IHRoZQorLy8gSmF2YVNjcmlwdCBsYW5n
dWFnZS4KKy0gKEJPT0wpdG9Cb29sOworLy8gVGhlIHZhbHVlIGlzIGNvcGllZCB0byBhIG51bWJl
ciBhY2NvcmRpbmcgdG8gdGhlIGNvbnZlcnNpb24gc3BlY2lmaWVkIGJ5IHRoZQorLy8gSmF2YVNj
cmlwdCBsYW5ndWFnZS4KKy0gKGRvdWJsZSl0b0RvdWJsZTsKKy8vIFRoZSB2YWx1ZSBpcyBjb3Bp
ZWQgdG8gYW4gaW50ZWdlciBhY2NvcmRpbmcgdG8gdGhlIGNvbnZlcnNpb24gc3BlY2lmaWVkIGJ5
CisvLyB0aGUgSmF2YVNjcmlwdCBsYW5ndWFnZS4KKy0gKGludDMyX3QpdG9JbnQzMjsKKy8vIFRo
ZSB2YWx1ZSBpcyBjb3BpZWQgdG8gYW4gaW50ZWdlciBhY2NvcmRpbmcgdG8gdGhlIGNvbnZlcnNp
b24gc3BlY2lmaWVkIGJ5CisvLyB0aGUgSmF2YVNjcmlwdCBsYW5ndWFnZS4KKy0gKHVpbnQzMl90
KXRvVUludDMyOworLy8gSWYgdGhlIHZhbHVlIGlzIGEgYm9vbGVhbiwgYSBOU051bWJlciB2YWx1
ZSBvZiBAWUVTIG9yIEBOTyB3aWxsIGJlIHJldHVybmVkLgorLy8gRm9yIGFsbCBvdGhlciB0eXBl
cyB0aGUgdmFsdWUgd2lsbCBiZSBjb3BpZWQgdG8gYSBudW1iZXIgYWNjb3JkaW5nIHRvIHRoZQor
Ly8gY29udmVyc2lvbiBzcGVjaWZpZWQgYnkgdGhlIEphdmFTY3JpcHQgbGFuZ3VhZ2UuCistIChO
U051bWJlciAqKXRvTnVtYmVyOworLy8gVGhlIHZhbHVlIGlzIGNvcGllZCB0byBhIHN0cmluZyBh
Y2NvcmRpbmcgdG8gdGhlIGNvbnZlcnNpb24gc3BlY2lmaWVkIGJ5IHRoZQorLy8gSmF2YVNjcmlw
dCBsYW5ndWFnZS4KKy0gKE5TU3RyaW5nICopdG9TdHJpbmc7CisvLyBUaGUgdmFsdWUgaXMgY29u
dmVydGVkIHRvIGEgbnVtYmVyIHJlcHJlc2VudGluZyBhIHRpbWUgaW50ZXJ2YWwgc2luY2UgMTk3
MCwKKy8vIGFuZCBhIG5ldyBOU0RhdGUgaW5zdGFuY2UgaXMgcmV0dXJuZWQuCistIChOU0RhdGUg
Kil0b0RhdGU7CisvLyBJZiB0aGUgdmFsdWUgaXMgbnVsbCBvciB1bmRlZmluZWQgdGhlbiBuaWwg
aXMgcmV0dXJuZWQuCisvLyBJZiB0aGUgdmFsdWUgaXMgbm90IGFuIG9iamVjdCB0aGVuIGEgSmF2
YVNjcmlwdCBUeXBlRXJyb3Igd2lsbCBiZSB0aHJvd24uCisvLyBUaGUgcHJvcGVydHkgImxlbmd0
aCIgaXMgcmVhZCBmcm9tIHRoZSBvYmplY3QsIGNvbnZlcnRlZCB0byBhbiB1bnNpZ25lZAorLy8g
aW50ZWdlciwgYW5kIGFuIE5TQXJyYXkgb2YgdGhpcyBzaXplIGlzIGFsbG9jYXRlZC4gUHJvcGVy
dGllcyBjb3JyZXNwb25kaW5nCisvLyB0byBpbmRpY2llcyB3aXRoaW4gdGhlIGFycmF5IGJvdW5k
cyB3aWxsIGJlIGNvcGllZCB0byB0aGUgYXJyYXksIHdpdGgKKy8vIE9iamVjdGl2ZS1DIG9iamVj
dHMgY29udmVydGVkIHRvIGVxdWl2YWxlbnQgSlNWYWx1ZXMgYXMgc3BlY2lmaWVkLgorLSAoTlNB
cnJheSAqKXRvQXJyYXk7CisvLyBJZiB0aGUgdmFsdWUgaXMgbnVsbCBvciB1bmRlZmluZWQgdGhl
biBuaWwgaXMgcmV0dXJuZWQuCisvLyBJZiB0aGUgdmFsdWUgaXMgbm90IGFuIG9iamVjdCB0aGVu
IGEgSmF2YVNjcmlwdCBUeXBlRXJyb3Igd2lsbCBiZSB0aHJvd24uCisvLyBBbGwgZW51bWVyYWJs
ZSBwcm9wZXJ0aWVzIG9mIHRoZSBvYmplY3QgYXJlIGNvcGllZCB0byB0aGUgZGljdGlvbmFyeSwg
d2l0aAorLy8gT2JqZWN0aXZlLUMgb2JqZWN0cyBjb252ZXJ0ZWQgdG8gZXF1aXZhbGVudCBKU1Zh
bHVlcyBhcyBzcGVjaWZpZWQuCistIChOU0RpY3Rpb25hcnkgKil0b0RpY3Rpb25hcnk7CisKKy8v
IEFjY2VzcyBhIHByb3BlcnR5IGZyb20gdGhlIHZhbHVlLiBUaGlzIG1ldGhvZCB3aWxsIHJldHVy
biB0aGUgSmF2YVNjcmlwdCB2YWx1ZQorLy8gJ3VuZGVmaW5lZCcgaWYgdGhlIHByb3BlcnR5IGRv
ZXMgbm90IGV4aXN0LgorLSAoSlNWYWx1ZSAqKXZhbHVlRm9yUHJvcGVydHk6KE5TU3RyaW5nICop
cHJvcGVydHk7CisvLyBTZXQgYSBwcm9wZXJ0eSBvbiB0aGUgdmFsdWUuCistICh2b2lkKXNldFZh
bHVlOihpZCl2YWx1ZSBmb3JQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eTsKKy8vIERlbGV0
ZSBhIHByb3BlcnR5IGZyb20gdGhlIHZhbHVlLCByZXR1cm5zIFlFUyBpZiBkZWxldGlvbiBpcyBz
dWNjZXNzZnVsLgorLSAoQk9PTClkZWxldGVQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eTsK
Ky8vIFJldHVybnMgWUVTIGlmIHByb3BlcnR5IGlzIHByZXNlbnQgb24gdGhlIHZhbHVlLgorLy8g
VGhpcyBtZXRob2QgaGFzIHRoZSBzYW1lIGZ1bmN0aW9uIGFzIHRoZSBKYXZhU2NyaXB0IG9wZXJh
dG9yICJpbiIuCistIChCT09MKWhhc1Byb3BlcnR5OihOU1N0cmluZyAqKXByb3BlcnR5OworLy8g
VGhpcyBtZXRob2QgbWF5IGJlIHVzZWQgdG8gY3JlYXRlIGEgZGF0YSBvciBhY2Nlc3NvciBwcm9w
ZXJ0eSBvbiBhbiBvYmplY3Q7CisvLyB0aGlzIG1ldGhvZCBvcGVyYXRlcyBpbiBhY2NvcmRhbmNl
IHdpdGggdGhlIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSBtZXRob2QgaW4KKy8vIHRoZSBKYXZhU2Ny
aXB0IGxhbmdhdWFnZS4KKy0gKHZvaWQpZGVmaW5lUHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVy
dHkgZGVzY3JpcHRvcjooaWQpZGVzY3JpcHRvcjsKKworLy8gQWNjZXNzIGFuIGluZGV4ZWQgcHJv
cGVydHkgZnJvbSB0aGUgdmFsdWUuIFRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuIHRoZQorLy8gSmF2
YVNjcmlwdCB2YWx1ZSAndW5kZWZpbmVkJyBpZiBubyBwcm9wZXJ0eSBleGlzdHMgYXQgdGhhdCBp
bmRleC4KKy0gKEpTVmFsdWUgKil2YWx1ZUF0SW5kZXg6KE5TVUludGVnZXIpaW5kZXg7CisvLyBT
ZXQgYW4gaW5kZXhlZCBwcm9wZXJ0eSBvbiB0aGUgdmFsdWUuCistICh2b2lkKXNldFZhbHVlOihp
ZCl2YWx1ZSBhdEluZGV4OihOU1VJbnRlZ2VyKWluZGV4OworCisvLyBBbGwgSmF2YVNjcmlwdCB2
YWx1ZXMgYXJlIHByZWNpc2VseSBvbmUgb2YgdGhlc2UgdHlwZXMuCistIChCT09MKWlzVW5kZWZp
bmVkOworLSAoQk9PTClpc051bGw7CistIChCT09MKWlzQm9vbGVhbjsKKy0gKEJPT0wpaXNOdW1i
ZXI7CistIChCT09MKWlzU3RyaW5nOworLSAoQk9PTClpc09iamVjdDsKKworLy8gVGhpcyBtZXRo
b2QgaGFzIHRoZSBzYW1lIGZ1bmN0aW9uIGFzIHRoZSBKYXZhU2NyaXB0IG9wZXJhdG9yICI9PT0i
LgorLSAoQk9PTClpc0VxdWFsVG9PYmplY3Q6KGlkKXZhbHVlOworLy8gVGhpcyBtZXRob2QgaGFz
IHRoZSBzYW1lIGZ1bmN0aW9uIGFzIHRoZSBKYXZhU2NyaXB0IG9wZXJhdG9yICI9PSIuCistIChC
T09MKWlzRXF1YWxXaXRoVHlwZUNvZXJjaW9uVG9PYmplY3Q6KGlkKXZhbHVlOworLy8gVGhpcyBt
ZXRob2QgaGFzIHRoZSBzYW1lIGZ1bmN0aW9uIGFzIHRoZSBKYXZhU2NyaXB0IG9wZXJhdG9yICJp
bnN0YW5jZW9mIi4KKy0gKEJPT0wpaXNJbnN0YW5jZU9mOihpZCl2YWx1ZTsKKworLy8gQ2FsbCB0
aGlzIHZhbHVlIGFzIGEgZnVuY3Rpb24gcGFzc2luZyB0aGUgc3BlY2lmaWVkICJ0aGlzIiB2YWx1
ZSBhbmQgYXJndW1lbnRzLgorLSAoSlNWYWx1ZSAqKWNhbGxXaXRoQXJndW1lbnRzOihOU0FycmF5
ICopYXJndW1lbnRzOworLy8gQ2FsbCB0aGlzIHZhbHVlIGFzIGEgY29uc3RydWN0b3IgcGFzc2lu
ZyB0aGUgc3BlY2lmaWVkIGFyZ3VtZW50cy4KKy0gKEpTVmFsdWUgKiljb25zdHJ1Y3RXaXRoQXJn
dW1lbnRzOihOU0FycmF5ICopYXJndW1lbnRzOworLy8gQWNjZXNzIHRoZSBwcm9wZXJ0eSBuYW1l
ZCAibWV0aG9kIiBmcm9tIHRoaXMgdmFsdWU7IGNhbGwgdGhlIHZhbHVlIHJlc3VsdGluZworLy8g
ZnJvbSB0aGUgcHJvcGVydHkgYWNjZXNzIGFzIGEgZnVuY3Rpb24sIHBhc3NpbmcgdGhpcyB2YWx1
ZSBhcyB0aGUgInRoaXMiCisvLyB2YWx1ZSwgYW5kIHRoZSBzcGVjaWZpZWQgYWdydW1lbnRzLgor
LSAoSlNWYWx1ZSAqKWludm9rZU1ldGhvZDooTlNTdHJpbmcgKiltZXRob2Qgd2l0aEFyZ3VtZW50
czooTlNBcnJheSAqKWFyZ3VtZW50czsKKworLy8gVGhlIEpTQ29udGV4dCB0aGF0IHRoaXMgdmFs
dWUgb3JpZ2luYXRlcyBmcm9tLgorQHByb3BlcnR5KHJlYWRvbmx5LCByZXRhaW4pIEpTQ29udGV4
dCAqY29udGV4dDsKKworQGVuZAorCisvLyBPYmplY3RpdmUtQyBtZXRob2RzIGV4cG9ydGVkIHRv
IEphdmFTY3JpcHQgbWF5IGhhdmUgYXJndW1lbnQgYW5kL29yIHJldHVybgorLy8gdmFsdWVzIG9m
IHN0cnVjdCB0eXBlcyBpZiB0aGUgc3RydWN0IGlmIGNvbnZlcnNpb24gdG8gYW5kIGZyb20gdGhl
IHN0cnVjdAorLy8gaXMgc3VwcG9ydGVkIGJ5IEpTVmFsdWUuIFN1cHBvcnQgaXMgcHJvdmlkZWQg
Zm9yIGFueSB0eXBlcyB3aGVyZSBKU1ZhbHVlCisvLyBjb250YWlucyBib3RoIGEgY2xhc3MgbWV0
aG9kICJ2YWx1ZVdpdGg8VHlwZT46aW5Db250ZXh0OiIsIGFuZCBhbmQgaW5zdGFuY2UKKy8vIG1l
dGhvZCAidG88VHlwZT4iIC0gd2hlcmUgdGhlIHN0cmluZyAiPFR5cGU+IiBpbiB0aGVzZSBzZWxl
Y3RvciBuYW1lcyBtYXRjaCwKKy8vIHdpdGggdGhlIGZpcnN0IGFyZ3VtZW50IHRvIHRoZSBmb3Jt
ZXIgYmVpbmcgb2YgdGhlIHNhbWUgc3RydWN0IHR5cGUgYXMgdGhlCisvLyByZXR1cm4gdHlwZSBv
ZiB0aGUgbGF0dGVyLgorLy8gU3VwcG9ydCBpcyBwcm92aWRlZCBmb3Igc3RydWN0cyBvZiB0eXBl
IENHUG9pbnQsIE5TUmFuZ2UsIENHUmVjdCBhbmQgQ0dTaXplLgorQGludGVyZmFjZSBKU1ZhbHVl
KFN0cnVjdFN1cHBvcnQpCisKKy8vIFRoaXMgbWV0aG9kIHJldHVybnMgYSBuZXdseSBhbGxvY2F0
ZWQgSmF2YVNjcmlwdCBvYmplY3QgY29udGFpbmluZyBwcm9wZXJ0aWVzCisvLyBuYW1lZCAieCIg
YW5kICJ5Iiwgd2l0aCB2YWx1ZXMgZnJvbSB0aGUgQ0dQb2ludC4KKysgKEpTVmFsdWUgKil2YWx1
ZVdpdGhQb2ludDooQ0dQb2ludClwb2ludCBpbkNvbnRleHQ6KEpTQ29udGV4dCAqKWNvbnRleHQ7
CisvLyBUaGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3bHkgYWxsb2NhdGVkIEphdmFTY3JpcHQgb2Jq
ZWN0IGNvbnRhaW5pbmcgcHJvcGVydGllcworLy8gbmFtZWQgImxvY2F0aW9uIiBhbmQgImxlbmd0
aCIsIHdpdGggdmFsdWVzIGZyb20gdGhlIE5TUmFuZ2UuCisrIChKU1ZhbHVlICopdmFsdWVXaXRo
UmFuZ2U6KE5TUmFuZ2UpcmFuZ2UgaW5Db250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0OworLy8g
VGhpcyBtZXRob2QgcmV0dXJucyBhIG5ld2x5IGFsbG9jYXRlZCBKYXZhU2NyaXB0IG9iamVjdCBj
b250YWluaW5nIHByb3BlcnRpZXMKKy8vIG5hbWVkICJ4IiwgInkiLCAid2lkdGgiLCBhbmQgImhl
aWdodCIsIHdpdGggdmFsdWVzIGZyb20gdGhlIENHUmVjdC4KKysgKEpTVmFsdWUgKil2YWx1ZVdp
dGhSZWN0OihDR1JlY3QpcmVjdCBpbkNvbnRleHQ6KEpTQ29udGV4dCAqKWNvbnRleHQ7CisvLyBU
aGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3bHkgYWxsb2NhdGVkIEphdmFTY3JpcHQgb2JqZWN0IGNv
bnRhaW5pbmcgcHJvcGVydGllcworLy8gbmFtZWQgIndpZHRoIiBhbmQgImhlaWdodCIsIHdpdGgg
dmFsdWVzIGZyb20gdGhlIENHU2l6ZS4KKysgKEpTVmFsdWUgKil2YWx1ZVdpdGhTaXplOihDR1Np
emUpc2l6ZSBpbkNvbnRleHQ6KEpTQ29udGV4dCAqKWNvbnRleHQ7CisKKy8vIENvbnZlcnQgYSB2
YWx1ZSB0byB0eXBlIENHUG9pbnQgYnkgcmVhZGluZyBwcm9wZXJ0aWVzIG5hbWVkICJ4IiBhbmQg
InkiIGZyb20KKy8vIHRoaXMgdmFsdWUsIGFuZCBjb252ZXJ0aW5nIHRoZSByZXN1bHRzIHRvIGRv
dWJsZS4KKy0gKENHUG9pbnQpdG9Qb2ludDsKKy8vIENvbnZlcnQgYSB2YWx1ZSB0byB0eXBlIE5T
UmFuZ2UgYnkgYWNjZXNzaW5nIHByb3BlcnRpZXMgbmFtZWQgImxvY2F0aW9uIiBhbmQKKy8vICJs
ZW5ndGgiIGZyb20gdGhpcyB2YWx1ZSBjb252ZXJ0aW5nIHRoZSByZXN1bHRzIHRvIGRvdWJsZS4K
Ky0gKE5TUmFuZ2UpdG9SYW5nZTsKKy8vIENvbnZlcnQgYSB2YWx1ZSB0byB0eXBlIENHUmVjdCBi
eSByZWFkaW5nIHByb3BlcnRpZXMgbmFtZWQgIngiLCAieSIsICJ3aWR0aCIsCisvLyBhbmQgImhl
aWdodCIgZnJvbSB0aGlzIHZhbHVlLCBhbmQgY29udmVydGluZyB0aGUgcmVzdWx0cyB0byBkb3Vi
bGUuCistIChDR1JlY3QpdG9SZWN0OworLy8gQ29udmVydCBhIHZhbHVlIHRvIHR5cGUgQ0dSYW5n
ZSBieSBhY2Nlc3NpbmcgcHJvcGVydGllcyBuYW1lZCAid2lkdGgiIGFuZAorLy8gImhlaWdodCIg
ZnJvbSB0aGlzIHZhbHVlIGNvbnZlcnRpbmcgdGhlIHJlc3VsdHMgdG8gZG91YmxlLgorLSAoQ0dT
aXplKXRvU2l6ZTsKKworQGVuZAorCisvLyBJbnN0YW5jZXMgb2YgSlNWYWx1ZSBpbXBsZW1lbnQg
dGhlIGZvbGxvd2luZyBtZXRob2RzIGluIG9yZGVyIHRvIGVuYWJsZQorLy8gc3VwcG9ydCBmb3Ig
c3Vic2NyaXB0IGFjY2VzcyBieSBrZXkgYW5kIGluZGV4LCBmb3IgZXhhbXBsZToKKy8vCisvLyAg
ICBKU1ZhbHVlICpvYmplY3RBLCAqb2JqZWN0QjsKKy8vICAgIEpTVmFsdWUgKnYxID0gb2JqZWN0
W0AiWCJdOyAvLyBHZXQgdmFsdWUgZm9yIHByb3BlcnR5ICJYIiBmcm9tICdvYmplY3QnLgorLy8g
ICAgSlNWYWx1ZSAqdjIgPSBvYmplY3RbNDJdOyAgIC8vIEdldCB2YWx1ZSBmb3IgaW5kZXggNDIg
ZnJvbSAnb2JqZWN0Jy4KKy8vICAgIG9iamVjdFtAIlkiXSA9IHYxOyAgICAgICAgICAvLyBBc3Np
Z24gJ3YxJyB0byBwcm9wZXJ0eSAiWSIgb2YgJ29iamVjdCcuCisvLyAgICBvYmplY3RbMTAxXSA9
IHYyOyAgICAgICAgICAgLy8gQXNzaWduICd2MicgdG8gaW5kZXggMTAxIG9mICdvYmplY3QnLgor
Ly8KKy8vIEFuIG9iamVjdCBrZXkgcGFzc2VkIGFzIGEgc3Vic2NyaXB0IHdpbGwgYmUgY29udmVy
dGVkIHRvIGEgSmF2YVNjaXB0IHZhbHVlLAorLy8gYW5kIHRoZW4gdGhlIHZhbHVlIGNvbnZlcnRl
ZCB0byBhIHN0cmluZyB1c2VkIGFzIGEgcHJvcGVydHkgbmFtZS4KK0BpbnRlcmZhY2UgSlNWYWx1
ZShTdWJzY3JpcHRTdXBwb3J0KQorCistIChKU1ZhbHVlICopb2JqZWN0Rm9yS2V5ZWRTdWJzY3Jp
cHQ6KGlkKWtleTsKKy0gKEpTVmFsdWUgKilvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHQ6KE5TVUlu
dGVnZXIpaW5kZXg7CistICh2b2lkKXNldE9iamVjdDooaWQpb2JqZWN0IGZvcktleWVkU3Vic2Ny
aXB0OihOU09iamVjdCA8TlNDb3B5aW5nPiAqKWtleTsKKy0gKHZvaWQpc2V0T2JqZWN0OihpZClv
YmplY3QgYXRJbmRleGVkU3Vic2NyaXB0OihOU1VJbnRlZ2VyKWluZGV4OworCitAZW5kCisKKyNp
ZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLy8gVGhlc2Uga2V5cyBt
YXkgYXNzaXN0IGluIGNyZWF0aW5nIGEgcHJvcGVydHkgZGVzY3JpcHRvciBmb3IgdXNlIHdpdGgg
dGhlCisvLyBkZWZpbmVQcm9wZXJ0eSBtZXRob2Qgb24gSlNWYWx1ZS4KKy8vIFByb3BlcnR5IGRl
c2NyaXB0b3JzIG11c3QgZml0IG9uZSBvZiB0aHJlZSBkZXNjcmlwdGlvbnM6CisvLyBEYXRhIERl
c2NyaXB0b3I6CisvLyAgLSBBIGRlc2NyaXB0b3IgY29udGFpbmluZyBvbmUgb3IgYm90aCBvZiB0
aGUga2V5cyAidmFsdWUiIGFuZCAid3JpdGFibGUiLAorLy8gICAgYW5kIG9wdGlvbmFsbHkgY29u
dGFpbmluZyBvbmUgb3IgYm90aCBvZiB0aGUga2V5cyAiZW51bWVyYWJsZSIgYW5kCisvLyAgICAi
Y29uZmlndXJhYmxlIi4gQSBkYXRhIGRlc2NyaXB0b3IgbWF5IG5vdCBjb250YWluIGVpdGhlciB0
aGUgImdldCIgb3IKKy8vICAgICJzZXQiIGtleS4KKy8vICAgIEEgZGF0YSBkZXNjcmlwdG9yIG1h
eSBiZSB1c2VkIHRvIGNyZWF0ZSBvciBtb2RpZnkgdGhlIGF0dHJpYnV0ZXMgb2YgYQorLy8gICAg
ZGF0YSBwcm9wZXJ0eSBvbiBhbiBvYmplY3QgKHJlcGxhY2luZyBhbnkgZXhpc3RpbmcgYWNjZXNz
b3IgcHJvcGVydHkpLgorLy8gQWNjZXNzb3IgRGVzY3JpcHRvcjoKKy8vICAtIEEgZGVzY3JpcHRv
ciBjb250YWluaW5nIG9uZSBvciBib3RoIG9mIHRoZSBrZXlzICJnZXQiIGFuZCAic2V0IiwgYW5k
CisvLyAgICBvcHRpb25hbGx5IGNvbnRhaW5pbmcgb25lIG9yIGJvdGggb2YgdGhlIGtleXMgImVu
dW1lcmFibGUiIGFuZAorLy8gICAgImNvbmZpZ3VyYWJsZSIuIEFuIGFjY2Vzc29yIGRlc2NyaXB0
b3IgbWF5IG5vdCBjb250YWluIGVpdGhlciB0aGUgInZhbHVlIgorLy8gICAgb3IgIndyaXRhYmxl
IiBrZXkuCisvLyAgICBBbiBhY2Nlc3NvciBkZXNjcmlwdG9yIG1heSBiZSB1c2VkIHRvIGNyZWF0
ZSBvciBtb2RpZnkgdGhlIGF0dHJpYnV0ZXMgb2YKKy8vICAgIGFuIGFjY2Vzc29yIHByb3BlcnR5
IG9uIGFuIG9iamVjdCAocmVwbGFjaW5nIGFueSBleGlzdGluZyBkYXRhIHByb3BlcnR5KS4KKy8v
IEdlbmVyaWMgRGVzY3JpcHRvcjoKKy8vICAtIEEgZGVzY3JpcHRvciBjb250YWluaW5nIG9uZSBv
ciBib3RoIG9mIHRoZSBrZXlzICJlbnVtZXJhYmxlIiBhbmQKKy8vICAgICJjb25maWd1cmFibGUi
LiBBIGdlbmVyaWMgZGVzY3JpcHRvciBtYXkgbm90IGNvbnRhaW4gYW55IG9mIHRoZSBrZXlzCisv
LyAgICAidmFsdWUiLCAiIHdyaXRhYmxlIiwgImdldCIsIG9yICJzZXQiLgorLy8gICAgQSBnZW5l
cmljIGRlc2NyaXB0b3IgbWF5IGJlIHVzZWQgdG8gbW9kaWZ5IHRoZSBhdHRyaWJ1dGVzIG9mIGFu
IGV4aXN0aW5nCisvLyAgICBkYXRhIG9yIGFjY2Vzc29yIHByb3BlcnR5LCBvciB0byBjcmVhdGUg
YSBuZXcgZGF0YSBwcm9wZXJ0eS4KK0pTX0VYUE9SVCBleHRlcm4gTlNTdHJpbmcgKiBjb25zdCBK
U1Byb3BlcnR5RGVzY3JpcHRvcldyaXRhYmxlS2V5OworSlNfRVhQT1JUIGV4dGVybiBOU1N0cmlu
ZyAqIGNvbnN0IEpTUHJvcGVydHlEZXNjcmlwdG9yRW51bWVyYWJsZUtleTsKK0pTX0VYUE9SVCBl
eHRlcm4gTlNTdHJpbmcgKiBjb25zdCBKU1Byb3BlcnR5RGVzY3JpcHRvckNvbmZpZ3VyYWJsZUtl
eTsKK0pTX0VYUE9SVCBleHRlcm4gTlNTdHJpbmcgKiBjb25zdCBKU1Byb3BlcnR5RGVzY3JpcHRv
clZhbHVlS2V5OworSlNfRVhQT1JUIGV4dGVybiBOU1N0cmluZyAqIGNvbnN0IEpTUHJvcGVydHlE
ZXNjcmlwdG9yR2V0S2V5OworSlNfRVhQT1JUIGV4dGVybiBOU1N0cmluZyAqIGNvbnN0IEpTUHJv
cGVydHlEZXNjcmlwdG9yU2V0S2V5OworCisjaWZkZWYgX19jcGx1c3BsdXMKK30gLy8gZXh0ZXJu
ICJDIgorI2VuZGlmCisKKyNlbmRpZgorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTVmFsdWUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1Zh
bHVlLm1tCShyZXZpc2lvbiAxNDAyMTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
VmFsdWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAKICNpbXBvcnQgIkpTV3Jh
cHBlck1hcC5oIgogI2ltcG9ydCAiT2JqY1J1bnRpbWVFeHRyYXMuaCIKICNpbXBvcnQgIk9wZXJh
dGlvbnMuaCIKLSNpbXBvcnQgIkpTVmFsdWUuaCIKKyNpbXBvcnQgIkpTQ0pTVmFsdWUuaCIKICNp
bXBvcnQgInd0Zi9IYXNoTWFwLmgiCiAjaW1wb3J0ICJ3dGYvSGFzaFNldC5oIgogI2ltcG9ydCAi
d3RmL1ZlY3Rvci5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlSW50
ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVJ
bnRlcm5hbC5oCShyZXZpc2lvbiAxNDAyMTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTVmFsdWVJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8K
IAogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuaD4KLSNpbXBvcnQgIkFQ
SUpTVmFsdWUuaCIKKyNpbXBvcnQgIkpTVmFsdWUuaCIKIAogI2lmIEpTX09CSkNfQVBJX0VOQUJM
RUQKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCShyZXZp
c2lvbiAxNDAyMTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMyArMzAsMTMgQEAKICNpbmNsdWRlICJBUElTaGltcy5o
IgogI2luY2x1ZGUgIkpTQ2FsbGJhY2tPYmplY3QuaCIKIAorI2luY2x1ZGUgPHJ1bnRpbWUvSlND
SlNWYWx1ZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaD4KICNpbmNsdWRl
IDxydW50aW1lL0pTT05PYmplY3QuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTU3RyaW5nLmg+CiAj
aW5jbHVkZSA8cnVudGltZS9MaXRlcmFsUGFyc2VyLmg+CiAjaW5jbHVkZSA8cnVudGltZS9PcGVy
YXRpb25zLmg+CiAjaW5jbHVkZSA8cnVudGltZS9Qcm90ZWN0Lmg+Ci0jaW5jbHVkZSA8cnVudGlt
ZS9KU1ZhbHVlLmg+CiAKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0hhc2guaD4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNX
ZWFrT2JqZWN0TWFwUmVmUHJpdmF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU1dlYWtPYmplY3RNYXBSZWZQcml2YXRlLmNwcAkocmV2aXNpb24gMTQwMjE1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dlYWtPYmplY3RNYXBSZWZQcml2YXRl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsOCArMjgsOCBAQAogCiAjaW5jbHVkZSAiQVBJQ2Fz
dC5oIgogI2luY2x1ZGUgIkFQSVNoaW1zLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2lu
Y2x1ZGUgIkpTQ2FsbGJhY2tPYmplY3QuaCIKLSNpbmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVk
ZSAiSlNXZWFrT2JqZWN0TWFwUmVmSW50ZXJuYWwuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgi
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSmF2YVNjcmlwdENvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0phdmFTY3JpcHRDb3JlLmgJKHJldmlzaW9uIDE0MDIxNSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSmF2YVNjcmlwdENvcmUuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIs
NyBAQAogI2lmIGRlZmluZWQoX19PQkpDX18pICYmIEpTX09CSkNfQVBJX0VOQUJMRUQKIAogI2lt
cG9ydCAiSlNDb250ZXh0LmgiCi0jaW1wb3J0ICJBUElKU1ZhbHVlLmgiCisjaW1wb3J0ICJKU1Zh
bHVlLmgiCiAjaW1wb3J0ICJKU1ZpcnR1YWxNYWNoaW5lLmgiCiAjaW1wb3J0ICJKU0V4cG9ydC5o
IgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTQwMjE1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQyNCw3ICs0MjQsNyBAQAogCQkxNDdGMzlEMjEw
N0VDMzc2MDA0MjdBNDggLyogSlNHbG9iYWxPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRERTBENjgwRDAyNDMxNDAwQUFDQ0EyIC8qIEpT
R2xvYmFsT2JqZWN0LmNwcCAqLzsgfTsKIAkJMTQ3RjM5RDQxMDdFQzM3NjAwNDI3QTQ4IC8qIEpT
T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDMjJBMzk4MEUxNkUxNDgwMEFGMjFDOCAvKiBKU09iamVjdC5jcHAgKi87IH07CiAJCTE0N0Yz
OUQ1MTA3RUMzNzYwMDQyN0E0OCAvKiBKU1N0cmluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzAyRTlCNjBFMTg0MkZBMDAwRjkyOTcgLyogSlNT
dHJpbmcuY3BwICovOyB9OwotCQkxNDdGMzlENjEwN0VDMzc2MDA0MjdBNDggLyogSlNWYWx1ZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjkyQTg4
NzAyNTU1OTdEMDFGRjYwRjcgLyogSlNWYWx1ZS5jcHAgKi87IH07CisJCTE0N0YzOUQ2MTA3RUMz
NzYwMDQyN0E0OCAvKiBKU0NKU1ZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEY2OTJBODg3MDI1NTU5N0QwMUZGNjBGNyAvKiBKU0NKU1ZhbHVl
LmNwcCAqLzsgfTsKIAkJMTQ3RjM5RDcxMDdFQzM3NjAwNDI3QTQ4IC8qIEpTVmFyaWFibGVPYmpl
Y3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMy
MkEzOUEwRTE2RTE0ODAwQUYyMUM4IC8qIEpTVmFyaWFibGVPYmplY3QuY3BwICovOyB9OwogCQkx
NDgxNkUxQjE1NENDNTZDMDBCODA1NEMgLyogQmxvY2tBbGxvY2F0b3IuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ4MTZFMTkxNTRDQzU2QzAwQjgw
NTRDIC8qIEJsb2NrQWxsb2NhdG9yLmNwcCAqLzsgfTsKIAkJMTQ4MTZFMUMxNTRDQzU2QzAwQjgw
NTRDIC8qIEJsb2NrQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxNDgxNkUxQTE1NENDNTZDMDBCODA1NEMgLyogQmxvY2tBbGxvY2F0b3Iu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNTAw
LDcgKzUwMCw3IEBACiAJCTg2M0M2RDlDMTUyMTExMUEwMDU4NUU0RSAvKiBZYXJyQ2Fub25pY2Fs
aXplVUNTMi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4NjNDNkQ5ODE1MjExMTEyMDA1ODVFNEUgLyogWWFyckNhbm9uaWNhbGl6ZVVDUzIuY3BwICov
OyB9OwogCQk4NjQyQzUxMDE1MUMwNkE5MDA0NkQ0RUYgLyogUmVnRXhwQ2FjaGVkUmVzdWx0LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2Rjc1RUZC
MTUxQzA2MkYwMDdDOUJBMyAvKiBSZWdFeHBDYWNoZWRSZXN1bHQuY3BwICovOyB9OwogCQk4NjQy
QzUxMjE1MUMwODNEMDA0NkQ0RUYgLyogUmVnRXhwTWF0Y2hlc0FycmF5LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2Rjc1RUZEMTUxQzA2MkYwMDdD
OUJBMyAvKiBSZWdFeHBNYXRjaGVzQXJyYXkuY3BwICovOyB9OwotCQk4NjVBMzBGMTEzNTAwN0Ux
MDBDREI0OUUgLyogSlNWYWx1ZUlubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg2NUEzMEYwMTM1MDA3RTEwMENEQjQ5RSAvKiBKU1ZhbHVlSW5s
aW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTg2NUEzMEYxMTM1MDA3RTEwMENEQjQ5RSAvKiBKU0NKU1ZhbHVlSW5saW5lcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY1QTMwRjAxMzUwMDdFMTAw
Q0RCNDlFIC8qIEpTQ0pTVmFsdWVJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY1RjQwODgxMEU3RDU2MzAwOTQ3MzYxIC8qIEFQSVNo
aW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjVG
NDA4NzEwRTdENTYzMDA5NDczNjEgLyogQVBJU2hpbXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjY3MzlEMjEzQkZERTcxMDAyM0Q4N0MgLyog
QmlnSW50ZWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODY2NzM5RDAxM0JGREU3MTAwMjNEODdDIC8qIEJpZ0ludGVnZXIuaCAqLzsgfTsKIAkJODY2
NzM5RDMxM0JGREU3MTAwMjNEODdDIC8qIFVpbnQxNldpdGhGcmFjdGlvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY2NzM5RDExM0JGREU3MTAwMjNE
ODdDIC8qIFVpbnQxNldpdGhGcmFjdGlvbi5oICovOyB9OwpAQCAtNTQ5LDcgKzU0OSw3IEBACiAJ
CTg2RDNCM0M0MTAxNTlEN0YwMDI4NjVFNyAvKiBSZXBhdGNoQnVmZmVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkQzQjNDMjEwMTU5RDdGMDAyODY1
RTcgLyogUmVwYXRjaEJ1ZmZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTg2REI2NDY0MEY5NUM2RkMwMEQ3RDkyMSAvKiBFeGVjdXRhYmxlQWxs
b2NhdG9yRml4ZWRWTVBvb2wuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODZEQjY0NjMwRjk1QzZGQzAwRDdEOTIxIC8qIEV4ZWN1dGFibGVBbGxvY2F0
b3JGaXhlZFZNUG9vbC5jcHAgKi87IH07CiAJCTg2RTExNkIxMEZFNzVBQzgwMEI1MTJCQyAvKiBD
b2RlTG9jYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg2RTExNkIwMEZFNzVBQzgwMEI1MTJCQyAvKiBDb2RlTG9jYXRpb24uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk4NkUzQzYxMjE2N0JBQkQ3
MDA2RDc2MEEgLyogQVBJSlNWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODZFM0M2MDYxNjdCQUI4NzAwNkQ3NjBBIC8qIEFQSUpTVmFsdWUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisJCTg2RTNDNjEy
MTY3QkFCRDcwMDZENzYwQSAvKiBKU1ZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4NkUzQzYwNjE2N0JBQjg3MDA2RDc2MEEgLyogSlNWYWx1ZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJODZFM0M2
MTMxNjdCQUJENzAwNkQ3NjBBIC8qIEpTQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZFM0M2MDcxNjdCQUI4NzAwNkQ3NjBBIC8qIEpTQ29u
dGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJ
ODZFM0M2MTQxNjdCQUJENzAwNkQ3NjBBIC8qIEpTRXhwb3J0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkUzQzYwQTE2N0JBQjg3MDA2RDc2MEEgLyog
SlNFeHBvcnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07
CiAJCTg2RTNDNjE1MTY3QkFCRDcwMDZENzYwQSAvKiBKU1ZpcnR1YWxNYWNoaW5lLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkUzQzYwRjE2N0JBQjg3
MDA2RDc2MEEgLyogSlNWaXJ0dWFsTWFjaGluZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFB1YmxpYywgKTsgfTsgfTsKQEAgLTcxNyw3ICs3MTcsNyBAQAogCQlCQzE4QzQyODBFMTZG
NUNEMDBCMzQ0NjAgLyogSlNTdHJpbmdSZWYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDE0ODJCNzRCMEE0MzAzMjgwMDUxN0NGQyAvKiBKU1N0cmluZ1Jl
Zi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJQkMx
OEM0MjkwRTE2RjVDRDAwQjM0NDYwIC8qIEpTU3RyaW5nUmVmQ0YuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NkFBQjJBMEI2NkE4NDkwMEU1NUYxNiAv
KiBKU1N0cmluZ1JlZkNGLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCAp
OyB9OyB9OwogCQlCQzE4QzQyQTBFMTZGNUNEMDBCMzQ0NjAgLyogSlNUeXBlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEFCQjQ1NDA5OUMyQTBGMDBF
MkEyNEYgLyogSlNUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKLQkJQkMxOEM0MkIwRTE2RjVDRDAwQjM0NDYwIC8qIEpTVmFsdWUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0QUJCMzZFMDk5QzA3NjQw
MEUyQTI0RiAvKiBKU1ZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJQkMxOEM0MkIwRTE2RjVDRDAwQjM0NDYwIC8qIEpTQ0pTVmFsdWUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0QUJCMzZFMDk5
QzA3NjQwMEUyQTI0RiAvKiBKU0NKU1ZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkMxOEM0MkMwRTE2RjVDRDAwQjM0NDYwIC8qIEpTVmFs
dWVSZWYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0
ODJCNkVBMEE0MzAwQjMwMDUxN0NGQyAvKiBKU1ZhbHVlUmVmLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQlCQzE4QzQyRDBFMTZGNUNEMDBCMzQ0NjAg
LyogSlNWYXJpYWJsZU9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMTRGMjUyNTYwRDA4REQ4RDAwNEVDRkZGIC8qIEpTVmFyaWFibGVPYmplY3Qu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzE4
QzQyRTBFMTZGNUNEMDBCMzQ0NjAgLyogSlNXcmFwcGVyT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUM3QTE3MjBBOEVBQUNCMDBGQTM3RUEg
LyogSlNXcmFwcGVyT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTEyNTksNyArMTI1OSw3IEBACiAJCTE0QTQyRTNEMEY0RjYwRUUwMDU5
OTA5OSAvKiBUaW1lb3V0Q2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBUaW1lb3V0Q2hlY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTE0QTQyRTNFMEY0RjYwRUUwMDU5OTA5OSAvKiBUaW1lb3V0Q2hlY2tlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBUaW1lb3V0Q2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxNEE2NTgxQTBGNEUzNkY0MDAwMTUwRkQgLyogSklUU3R1YnMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklUU3R1YnMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJMTRBQkIzNkUwOTlDMDc2NDAwRTJBMjRGIC8qIEpTVmFsdWUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMTRBQkIzNkUwOTlDMDc2NDAwRTJBMjRGIC8qIEpTQ0pTVmFsdWUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ0pTVmFsdWUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTRBQkI0NTQwOTlDMkEwRjAwRTJBMjRGIC8qIEpTVHlwZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1R5cGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMTRBQkRGNUQwQTQzN0ZFRjAwRUNDQTAxIC8qIEpTQ2FsbGJhY2tP
YmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDYWxsYmFja09iamVj
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNEFCREY1RTBBNDM3RkVGMDBFQ0NB
MDEgLyogSlNDYWxsYmFja09iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU0NhbGxiYWNrT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTEzNTAsNyArMTM1MCw3IEBACiAJCTg2M0M2RDk4MTUyMTExMTIwMDU4NUU0RSAvKiBZYXJy
Q2Fub25pY2FsaXplVUNTMi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBZYXJyQ2Fub25pY2FsaXplVUNTMi5jcHA7IHBhdGggPSB5YXJyL1lhcnJDYW5vbmljYWxpemVV
Q1MyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODYzQzZEOTkxNTIxMTExMjAw
NTg1RTRFIC8qIFlhcnJDYW5vbmljYWxpemVVQ1MyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IFlhcnJDYW5vbmljYWxpemVVQ1MyLmg7IHBhdGggPSB5YXJyL1lhcnJDYW5vbmlj
YWxpemVVQ1MyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2M0M2RDlBMTUyMTEx
MTIwMDU4NUU0RSAvKiBZYXJyQ2Fub25pY2FsaXplVUNTMi5qcyAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuamF2YXNjcmlwdDsgbmFtZSA9IFlhcnJDYW5vbmljYWxpemVVQ1MyLmpzOyBwYXRoID0geWFy
ci9ZYXJyQ2Fub25pY2FsaXplVUNTMi5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
ODY1QTMwRjAxMzUwMDdFMTAwQ0RCNDlFIC8qIEpTVmFsdWVJbmxpbmVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVmFsdWVJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTg2NUEzMEYwMTM1MDA3RTEwMENEQjQ5RSAvKiBKU0NKU1ZhbHVlSW5saW5l
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NKU1ZhbHVlSW5saW5lcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjVGNDA4NzEwRTdENTYzMDA5NDczNjEg
LyogQVBJU2hpbXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJU2hpbXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY2NzM5RDAxM0JGREU3MTAwMjNEODdD
IC8qIEJpZ0ludGVnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmlnSW50
ZWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjY3MzlEMTEzQkZERTcxMDAy
M0Q4N0MgLyogVWludDE2V2l0aEZyYWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFVpbnQxNldpdGhGcmFjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTQwNSw3ICsxNDA1LDcgQEAKIAkJODZEM0IzQzIxMDE1OUQ3RjAwMjg2NUU3IC8qIFJlcGF0
Y2hCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVwYXRjaEJ1ZmZl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkRCNjQ2MzBGOTVDNkZDMDBEN0Q5
MjEgLyogRXhlY3V0YWJsZUFsbG9jYXRvckZpeGVkVk1Qb29sLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV4ZWN1dGFibGVBbGxvY2F0b3JGaXhlZFZNUG9vbC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2RTExNkIwMEZFNzVBQzgwMEI1MTJCQyAv
KiBDb2RlTG9jYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29kZUxv
Y2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg2RTNDNjA2MTY3QkFCODcw
MDZENzYwQSAvKiBBUElKU1ZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEFQSUpTVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODZFM0M2MDYxNjdC
QUI4NzAwNkQ3NjBBIC8qIEpTVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkUzQzYwNzE2N0JB
Qjg3MDA2RDc2MEEgLyogSlNDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkUzQzYwODE2
N0JBQjg3MDA2RDc2MEEgLyogSlNDb250ZXh0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gSlNDb250ZXh0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4NkUzQzYwOTE2N0JBQjg3MDA2RDc2MEEgLyogSlNDb250ZXh0SW50ZXJuYWwuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDb250ZXh0SW50ZXJuYWwuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3MTIsNyArMTcxMiw3IEBACiAJCUY2OTJBODdDMDI1NTU5
N0QwMUZGNjBGNyAvKiBSZWdFeHBPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IHRhYldpZHRoID0gODsgfTsKIAkJRjY5MkE4N0QwMjU1NTk3RDAxRkY2MEY3IC8qIFJl
Z0V4cC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBSZWdFeHAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7
IH07CiAJCUY2OTJBODdFMDI1NTU5N0QwMUZGNjBGNyAvKiBSZWdFeHAuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKLQkJRjY5MkE4ODcwMjU1NTk3RDAxRkY2
MEY3IC8qIEpTVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRh
YldpZHRoID0gODsgfTsKKwkJRjY5MkE4ODcwMjU1NTk3RDAxRkY2MEY3IC8qIEpTQ0pTVmFsdWUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRl
bnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNDSlNWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsg
fTsKIAkJRkUyMENFOUIxNUYwNEE5NTAwREYzNDMwIC8qIExMSW50Q0xvb3AuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnRDTG9vcC5jcHA7IHBhdGggPSBsbGlu
dC9MTEludENMb29wLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUyMENFOUMx
NUYwNEE5NTAwREYzNDMwIC8qIExMSW50Q0xvb3AuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gTExJbnRDTG9vcC5oOyBwYXRoID0gbGxpbnQvTExJbnRDTG9vcC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGRTRBMzMxRDE1QkQyRTA3MDA2RjU0RjMgLyogVk1JbnNw
ZWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVk1JbnNwZWN0
b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjA4Miw3ICsyMDgyLDcgQEAK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMTQ4MkI3OEEwQTQzMDVB
QjAwNTE3Q0ZDIC8qIEFQSUNhc3QuaCAqLywKLQkJCQk4NkUzQzYwNjE2N0JBQjg3MDA2RDc2MEEg
LyogQVBJSlNWYWx1ZS5oICovLAorCQkJCTg2RTNDNjA2MTY3QkFCODcwMDZENzYwQSAvKiBKU1Zh
bHVlLmggKi8sCiAJCQkJODY1RjQwODcxMEU3RDU2MzAwOTQ3MzYxIC8qIEFQSVNoaW1zLmggKi8s
CiAJCQkJMUNBQThCNEEwRDMyQzM5QTAwNDFCQ0ZGIC8qIEphdmFTY3JpcHQuaCAqLywKIAkJCQkx
Q0FBOEI0QjBEMzJDMzlBMDA0MUJDRkYgLyogSmF2YVNjcmlwdENvcmUuaCAqLywKQEAgLTIzODQs
OSArMjM4NCw5IEBACiAJCQkJMEY5MTlEMEExNTdFRTA5RDAwNEE0RTdEIC8qIEpTU3ltYm9sVGFi
bGVPYmplY3QuaCAqLywKIAkJCQkxNEFCQjQ1NDA5OUMyQTBGMDBFMkEyNEYgLyogSlNUeXBlLmgg
Ki8sCiAJCQkJNjUwN0QyOTcwRTg3MUU0QTAwRDdEODk2IC8qIEpTVHlwZUluZm8uaCAqLywKLQkJ
CQlGNjkyQTg4NzAyNTU1OTdEMDFGRjYwRjcgLyogSlNWYWx1ZS5jcHAgKi8sCi0JCQkJMTRBQkIz
NkUwOTlDMDc2NDAwRTJBMjRGIC8qIEpTVmFsdWUuaCAqLywKLQkJCQk4NjVBMzBGMDEzNTAwN0Ux
MDBDREI0OUUgLyogSlNWYWx1ZUlubGluZXMuaCAqLywKKwkJCQlGNjkyQTg4NzAyNTU1OTdEMDFG
RjYwRjcgLyogSlNDSlNWYWx1ZS5jcHAgKi8sCisJCQkJMTRBQkIzNkUwOTlDMDc2NDAwRTJBMjRG
IC8qIEpTQ0pTVmFsdWUuaCAqLywKKwkJCQk4NjVBMzBGMDEzNTAwN0UxMDBDREI0OUUgLyogSlND
SlNWYWx1ZUlubGluZXMuaCAqLywKIAkJCQlCQzIyQTM5QTBFMTZFMTQ4MDBBRjIxQzggLyogSlNW
YXJpYWJsZU9iamVjdC5jcHAgKi8sCiAJCQkJMTRGMjUyNTYwRDA4REQ4RDAwNEVDRkZGIC8qIEpT
VmFyaWFibGVPYmplY3QuaCAqLywKIAkJCQkxNDQyNTY1RjE1RURFOThEMDA2NkE0OUIgLyogSlNX
aXRoU2NvcGUuY3BwICovLApAQCAtMjgyOCw3ICsyODI4LDcgQEAKIAkJCQk4NjAxNjFFMzBGM0E4
M0MxMDBGODQ3MTAgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEY1NUYwRjUxNEQxMDYzQzAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDMThDM0U1MEUxNkY1Q0QwMEIzNDQ2MCAvKiBBUElDYXN0LmggaW4gSGVhZGVycyAq
LywKLQkJCQk4NkUzQzYxMjE2N0JBQkQ3MDA2RDc2MEEgLyogQVBJSlNWYWx1ZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJODZFM0M2MTIxNjdCQUJENzAwNkQ3NjBBIC8qIEpTVmFsdWUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTg2NUY0MDg4MTBFN0Q1NjMwMDk0NzM2MSAvKiBBUElTaGltcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkNGNjA1MTQwRTIwM0VGODAwQjlBNjREIC8qIEFyZ0xpc3QuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDMjU3REU4MEUxRjUxQzUwMDE2QjZDOSAvKiBBcmd1bWVudHMuaCBp
biBIZWFkZXJzICovLApAQCAtMzA2Niw4ICszMDY2LDggQEAKIAkJCQkwRjkxOUQwRDE1N0VFMEEy
MDA0QTRFN0QgLyogSlNTeW1ib2xUYWJsZU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMx
OEM0MkEwRTE2RjVDRDAwQjM0NDYwIC8qIEpTVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjUw
N0QyOUUwRTg3MUU1RTAwRDdEODk2IC8qIEpTVHlwZUluZm8uaCBpbiBIZWFkZXJzICovLAotCQkJ
CUJDMThDNDJCMEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU1ZhbHVlLmggaW4gSGVhZGVycyAqLywKLQkJ
CQk4NjVBMzBGMTEzNTAwN0UxMDBDREI0OUUgLyogSlNWYWx1ZUlubGluZXMuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUJDMThDNDJCMEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0NKU1ZhbHVlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk4NjVBMzBGMTEzNTAwN0UxMDBDREI0OUUgLyogSlNDSlNWYWx1ZUlubGlu
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RTNDNjFCMTY3QkFCRUUwMDZENzYwQSAvKiBKU1Zh
bHVlSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDJDMEUxNkY1Q0QwMEIzNDQ2
MCAvKiBKU1ZhbHVlUmVmLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQyRDBFMTZGNUNEMDBC
MzQ0NjAgLyogSlNWYXJpYWJsZU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNzc1LDcgKzM3
NzUsNyBAQAogCQkJCTE0ODJCNzRFMEE0MzAzMjgwMDUxN0NGQyAvKiBKU1N0cmluZ1JlZi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxNDZBQUIzODBCNjZBOTQ0MDBFNTVGMTYgLyogSlNTdHJpbmdS
ZWZDRi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjkxOUQwQzE1N0VFMDlGMDA0QTRFN0QgLyog
SlNTeW1ib2xUYWJsZU9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkxNDdGMzlENjEwN0VD
Mzc2MDA0MjdBNDggLyogSlNWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxNDdGMzlENjEw
N0VDMzc2MDA0MjdBNDggLyogSlNDSlNWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkUz
QzYxQTE2N0JBQkVFMDA2RDc2MEEgLyogSlNWYWx1ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTE0
QkQ1QTMyMEEzRTkxRjYwMEJBRjU5QyAvKiBKU1ZhbHVlUmVmLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTE0N0YzOUQ3MTA3RUMzNzYwMDQyN0E0OCAvKiBKU1ZhcmlhYmxlT2JqZWN0LmNwcCBpbiBT
b3VyY2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5r
U3RhdHVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxMaW5rU3RhdHVzLmgJKHJldmlzaW9uIDE0MDIxNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3
IEBACiAKICNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCiAjaW5jbHVkZSAiSW50
cmluc2ljLmgiCi0jaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIK
IAogbmFtZXNwYWNlIEpTQyB7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAxNDAyMTUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsOSArNDEs
OSBAQAogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVFN0dWJzLmgiCiAjaW5jbHVkZSAi
SlNBY3RpdmF0aW9uLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTRnVu
Y3Rpb24uaCIKICNpbmNsdWRlICJKU05hbWVTY29wZS5oIgotI2luY2x1ZGUgIkpTVmFsdWUuaCIK
ICNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5o
IgogI2luY2x1ZGUgIlJlZHVjZVdoaXRlc3BhY2UuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVBy
b2ZpbGUuaAkocmV2aXNpb24gMTQwMjE1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzQs
NyArMzQsNyBAQAogLy8gdGhlc2UgI2lmJ3Mgd2lsbCBkaXNhcHBlYXIuLi4KICNpZiBFTkFCTEUo
REZHX0pJVCkKIAotI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgi
CiAKIG5hbWVzcGFjZSBKU0MgewogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUmVzb2x2ZUdsb2JhbFN0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1Jlc29sdmVHbG9iYWxTdGF0dXMuY3BwCShyZXZpc2lvbiAxNDAyMTUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVzb2x2ZUdsb2JhbFN0YXR1cy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlICJSZXNvbHZlR2xv
YmFsU3RhdHVzLmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKLSNpbmNsdWRlICJKU1ZhbHVl
LmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNp
bmNsdWRlICJTdHJ1Y3R1cmUuaCIKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1Jlc29sdmVHbG9iYWxTdGF0dXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUmVzb2x2ZUdsb2JhbFN0YXR1cy5oCShyZXZpc2lvbiAxNDAyMTUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVzb2x2ZUdsb2JhbFN0YXR1cy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIFJlc29sdmVHbG9iYWxTdGF0
dXNfaAogI2RlZmluZSBSZXNvbHZlR2xvYmFsU3RhdHVzX2gKIAotI2luY2x1ZGUgIkpTVmFsdWUu
aCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlPZmZzZXQuaCIK
ICNpbmNsdWRlIDx3dGYvTm90Rm91bmQuaD4KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgJKHJldmlzaW9uIDE0MDIxNSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yOSw3ICsyOSw3IEBACiAjaWZuZGVmIFNwZWN1bGF0ZWRUeXBlX2gKICNkZWZpbmUg
U3BlY3VsYXRlZFR5cGVfaAogCi0jaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ0pT
VmFsdWUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9WYWx1ZVJlY292ZXJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1ZhbHVlUmVjb3ZlcnkuaAkocmV2aXNpb24gMTQwMjE1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUmVjb3ZlcnkuaAkod29ya2luZyBjb3B5
KQpAQCAtMjcsNyArMjcsNyBAQAogI2RlZmluZSBWYWx1ZVJlY292ZXJ5X2gKIAogI2luY2x1ZGUg
IkRhdGFGb3JtYXQuaCIKLSNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1
ZS5oIgogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCiAjaW5jbHVkZSAiVmlydHVhbFJlZ2lz
dGVyLmgiCiAjaW5jbHVkZSA8c3RkaW8uaD4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAxNDAyMTUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIkRGR0FycmF5TW9kZS5oIgogI2luY2x1ZGUg
IkRGR0NhcGFiaWxpdGllcy5oIgogI2luY2x1ZGUgIkdldEJ5SWRTdGF0dXMuaCIKLSNpbmNsdWRl
ICJKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiUHV0QnlJZFN0YXR1cy5oIgogI2luY2x1ZGUgIlJlc29sdmVHbG9iYWxTdGF0dXMuaCIK
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdKSVRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHJldmlzaW9uIDE0MDIxNSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw4
ICszNSw4IEBACiAjaW5jbHVkZSAiREZHU2xvd1BhdGhHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJE
RkdTcGVjdWxhdGl2ZUpJVC5oIgogI2luY2x1ZGUgIkRGR1RodW5rcy5oIgorI2luY2x1ZGUgIkpT
Q0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxEYXRhLmgiCi0jaW5jbHVkZSAi
SlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCiAKIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgREZHIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5o
CShyZXZpc2lvbiAxNDAyMTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQAogI2luY2x1ZGUgIkRGR05vZGVGbGFn
cy5oIgogI2luY2x1ZGUgIkRGR05vZGVUeXBlLmgiCiAjaW5jbHVkZSAiREZHVmFyaWFibGVBY2Nl
c3NEYXRhLmgiCi0jaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIK
ICNpbmNsdWRlICJPcGVyYW5kcy5oIgogI2luY2x1ZGUgIlNwZWN1bGF0ZWRUeXBlLmgiCiAjaW5j
bHVkZSAiU3RydWN0dXJlU2V0LmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDE0MDIxNSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJBcnJheVByb3RvdHlwZS5oIgogI2luY2x1
ZGUgIkRGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAi
REZHU2xvd1BhdGhHZW5lcmF0b3IuaCIKLSNpbmNsdWRlICJKU1ZhbHVlSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiT2JqZWN0UHJvdG90eXBlLmgi
CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAxNDAyMTUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgIkRGR0FycmF5aWZ5U2xvd1Bh
dGhHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJERkdDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdl
bmVyYXRvci5oIgogI2luY2x1ZGUgIkRGR1Nsb3dQYXRoR2VuZXJhdG9yLmgiCi0jaW5jbHVkZSAi
SlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1
ZGUgIkxpbmtCdWZmZXIuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29waWVkQmxvY2suaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db3BpZWRCbG9jay5oCShyZXZpc2lvbiAxNDAy
MTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db3BpZWRCbG9jay5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiQmxvY2tBbGxvY2F0b3IuaCIKICNp
bmNsdWRlICJDb3B5V29ya0xpc3QuaCIKICNpbmNsdWRlICJIZWFwQmxvY2suaCIKLSNpbmNsdWRl
ICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIk9wdGlvbnMu
aCIKICNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZVN0YWNrLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGVTdGFjay5jcHAJKHJldmlzaW9u
IDE0MDIxNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZVN0YWNrLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjcsOCArMjcsOCBAQAogI2luY2x1ZGUgIkhhbmRsZVN0YWNrLmgi
CiAKICNpbmNsdWRlICJIZWFwUm9vdFZpc2l0b3IuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5s
aW5lcy5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCi0jaW5jbHVkZSAiSlNWYWx1ZUlubGluZXMu
aCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hhbmRsZVR5cGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGFuZGxlVHlwZXMuaAkocmV2aXNpb24gMTQwMjE1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGFuZGxlVHlwZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2lm
bmRlZiBIYW5kbGVUeXBlc19oCiAjZGVmaW5lIEhhbmRsZVR5cGVzX2gKIAotI2luY2x1ZGUgIkpT
VmFsdWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrSW1wbC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtJbXBsLmgJKHJldmlzaW9uIDE0MDIxNSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtJbXBsLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgV2Vha0ltcGxfaAogI2RlZmluZSBXZWFrSW1wbF9o
CiAKLSNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogCiBuYW1l
c3BhY2UgSlNDIHsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmgJKHJldmlzaW9uIDE0MDIxNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw5ICsz
MSw5IEBACiAjZGVmaW5lIEludGVycHJldGVyX2gKIAogI2luY2x1ZGUgIkFyZ0xpc3QuaCIKKyNp
bmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNG
dW5jdGlvbi5oIgotI2luY2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgog
I2luY2x1ZGUgIkpTU3RhY2suaCIKICNpbmNsdWRlICJMTEludERhdGEuaCIKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3Rlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3Rlci5oCShyZXZpc2lvbiAxNDAy
MTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogI2lmbmRlZiBSZWdpc3Rlcl9oCiAjZGVmaW5l
IFJlZ2lzdGVyX2gKIAotI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVl
LmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yVHJh
aXRzLmg+CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9WTUluc3Bl
Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9W
TUluc3BlY3Rvci5oCShyZXZpc2lvbiAxNDAyMTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvVk1JbnNwZWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBA
QAogI2RlZmluZSBFTkFCTEVfVk1JTlNQRUNUT1IgMAogCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgi
Ci0jaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRl
IDxzdGRhcmcuaD4KICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZh
bHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxs
UmV0dXJuVmFsdWUuY3BwCShyZXZpc2lvbiAxNDAyMTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw5ICsy
Nyw5IEBACiAjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgogCiAjaW5jbHVkZSAiQ2Fs
bEZyYW1lLmgiCi0jaW5jbHVkZSA8d3RmL0lubGluZUFTTS5oPgorI2luY2x1ZGUgIkpTQ0pTVmFs
dWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKLSNpbmNsdWRlICJKU1ZhbHVlSW5s
aW5lcy5oIgorI2luY2x1ZGUgPHd0Zi9JbmxpbmVBU00uaD4KIAogCiBuYW1lc3BhY2UgSlNDIHsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1
ZS5oCShyZXZpc2lvbiAxNDAyMTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0hvc3RD
YWxsUmV0dXJuVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRl
ZiBIb3N0Q2FsbFJldHVyblZhbHVlX2gKICNkZWZpbmUgSG9zdENhbGxSZXR1cm5WYWx1ZV9oCiAK
LSNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUg
Ik1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIgogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuaAkocmV2aXNpb24gMTQwMjE1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMw
LDcgKzMwLDcgQEAKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJEaXNhc3NlbWJs
ZXIuaCIKICNpbmNsdWRlICJKSVRTdHVicy5oIgotI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNs
dWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiTGVnYWN5UHJvZmlsZXIuaCIKICNpbmNsdWRl
ICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuY3BwCShyZXZpc2lvbiAxNDAyMTUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yOSw4ICsyOSw4IEBACiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiQ29kZUJs
b2NrLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgi
CiAjaW5jbHVkZSAiSlNHbG9iYWxEYXRhLmgiCi0jaW5jbHVkZSAiSlNWYWx1ZS5oIgogI2luY2x1
ZGUgIk9wZXJhdGlvbnMuaCIKIAogI2lmIEVOQUJMRShKSVQpIHx8IEVOQUJMRShMTElOVCkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5oCShyZXZpc2lvbiAx
NDAyMTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuaAkod29y
a2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBKSVRFeGNlcHRpb25zX2gKICNk
ZWZpbmUgSklURXhjZXB0aW9uc19oCiAKLSNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAi
SlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIgogCiAjaWYg
RU5BQkxFKEpJVCkgfHwgRU5BQkxFKExMSU5UKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KU0ludGVyZmFjZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAkocmV2aXNpb24gMTQwMjE1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw5ICsy
OSw5IEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVDb252ZW50aW9ucy5oIgogI2luY2x1ZGUgIkpJVENv
ZGUuaCIKICNpbmNsdWRlICJKSVRTdHVicy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNp
bmNsdWRlICJKU1N0YWNrLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKLSNpbmNsdWRlICJKU1Zh
bHVlLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKICNpbmNsdWRlIDx3dGYvQWx3YXlz
SW5saW5lLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50Q0xvb3AuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRDTG9vcC5oCShyZXZpc2lvbiAxNDAyMTUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRDTG9vcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsy
OSw3IEBACiAjaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkKIAogI2luY2x1ZGUgIkNvZGVTcGVjaWFs
aXphdGlvbktpbmQuaCIKLSNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1
ZS5oIgogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIgogI2luY2x1ZGUgIk9wY29k
ZS5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnREYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50RGF0YS5oCShyZXZpc2lvbiAxNDAyMTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnREYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNp
Zm5kZWYgTExJbnREYXRhX2gKICNkZWZpbmUgTExJbnREYXRhX2gKIAotI2luY2x1ZGUgIkpTVmFs
dWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiT3Bjb2RlLmgiCiAjaW5j
bHVkZSA8d3RmL1BsYXRmb3JtLmg+CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMTQwMjE1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzgsMTEgKzM4LDExIEBACiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklURHJpdmVyLmgi
CiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2lu
Y2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiSlNOYW1lU2NvcGUu
aCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNTdHJp
bmcuaCIKLSNpbmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNXaXRoU2NvcGUuaCIKICNp
bmNsdWRlICJMTEludENvbW1vbi5oIgogI2luY2x1ZGUgIkxMSW50RXhjZXB0aW9ucy5oIgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQnl0ZWNvZGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJCeXRlY29k
ZS5oCShyZXZpc2lvbiAxNDAyMTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIv
UHJvZmlsZXJCeXRlY29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZu
ZGVmIFByb2ZpbGVyQnl0ZWNvZGVfaAogI2RlZmluZSBQcm9maWxlckJ5dGVjb2RlX2gKIAotI2lu
Y2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiT3Bj
b2RlLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJCeXRlY29kZVNlcXVlbmNlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQnl0ZWNvZGVTZXF1
ZW5jZS5oCShyZXZpc2lvbiAxNDAyMTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmls
ZXIvUHJvZmlsZXJCeXRlY29kZVNlcXVlbmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2
LDcgQEAKICNpZm5kZWYgUHJvZmlsZXJCeXRlY29kZVNlcXVlbmNlX2gKICNkZWZpbmUgUHJvZmls
ZXJCeXRlY29kZVNlcXVlbmNlX2gKIAotI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJK
U0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiUHJvZmlsZXJCeXRlY29kZS5oIgogI2luY2x1ZGUgPHd0
Zi9QcmludFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckJ5dGVjb2Rlcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckJ5dGVjb2Rlcy5oCShyZXZp
c2lvbiAxNDAyMTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJC
eXRlY29kZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogI2RlZmluZSBQcm9m
aWxlckJ5dGVjb2Rlc19oCiAKICNpbmNsdWRlICJDb2RlQmxvY2tIYXNoLmgiCi0jaW5jbHVkZSAi
SlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJQcm9maWxlckJ5
dGVjb2RlU2VxdWVuY2UuaCIKICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9m
aWxlci9Qcm9maWxlckNvbXBpbGF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb24uaAkocmV2aXNpb24gMTQwMjE1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb24uaAko
d29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogI2RlZmluZSBQcm9maWxlckNvbXBpbGF0
aW9uX2gKIAogI2luY2x1ZGUgIkV4aXRLaW5kLmgiCi0jaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2lu
Y2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJQcm9maWxlckNvbXBpbGF0aW9uS2luZC5o
IgogI2luY2x1ZGUgIlByb2ZpbGVyQ29tcGlsZWRCeXRlY29kZS5oIgogI2luY2x1ZGUgIlByb2Zp
bGVyRXhlY3V0aW9uQ291bnRlci5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2Zp
bGVyL1Byb2ZpbGVyQ29tcGlsZWRCeXRlY29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckNvbXBpbGVkQnl0ZWNvZGUuaAkocmV2aXNpb24g
MTQwMjE1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQ29tcGls
ZWRCeXRlY29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIFBy
b2ZpbGVyQ29tcGlsZWRCeXRlY29kZV9oCiAjZGVmaW5lIFByb2ZpbGVyQ29tcGlsZWRCeXRlY29k
ZV9oCiAKLSNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2lu
Y2x1ZGUgIlByb2ZpbGVyT3JpZ2luU3RhY2suaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckRhdGFi
YXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2Zp
bGVyRGF0YWJhc2UuaAkocmV2aXNpb24gMTQwMjE1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Byb2ZpbGVyL1Byb2ZpbGVyRGF0YWJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYs
NyBAQAogI2lmbmRlZiBQcm9maWxlckRhdGFiYXNlX2gKICNkZWZpbmUgUHJvZmlsZXJEYXRhYmFz
ZV9oCiAKLSNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2lu
Y2x1ZGUgIlByb2ZpbGVyQnl0ZWNvZGVzLmgiCiAjaW5jbHVkZSAiUHJvZmlsZXJDb21waWxhdGlv
bi5oIgogI2luY2x1ZGUgIlByb2ZpbGVyQ29tcGlsYXRpb25LaW5kLmgiCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJPU1JFeGl0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyT1NSRXhpdC5oCShyZXZpc2lv
biAxNDAyMTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJPU1JF
eGl0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICNkZWZpbmUgUHJvZmlsZXJP
U1JFeGl0X2gKIAogI2luY2x1ZGUgIkV4aXRLaW5kLmgiCi0jaW5jbHVkZSAiSlNWYWx1ZS5oIgor
I2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJQcm9maWxlck9yaWdpblN0YWNrLmgi
CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgUHJvZmlsZXIgewpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyT1NSRXhpdFNpdGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJPU1JFeGl0U2l0ZS5oCShy
ZXZpc2lvbiAxNDAyMTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmls
ZXJPU1JFeGl0U2l0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVm
IFByb2ZpbGVyT1NSRXhpdFNpdGVfaAogI2RlZmluZSBQcm9maWxlck9TUkV4aXRTaXRlX2gKIAot
I2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFByb2ZpbGVyIHsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlck9yaWdpbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlck9yaWdpbi5o
CShyZXZpc2lvbiAxNDAyMTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJv
ZmlsZXJPcmlnaW4uaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogI2RlZmluZSBQ
cm9maWxlck9yaWdpbl9oCiAKICNpbmNsdWRlICJDb2RlQmxvY2tIYXNoLmgiCi0jaW5jbHVkZSAi
SlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJPcmlnaW5TdGFjay5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlck9yaWdpblN0YWNrLmgJKHJldmlz
aW9uIDE0MDIxNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlck9y
aWdpblN0YWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgUHJv
ZmlsZXJPcmlnaW5TdGFja19oCiAjZGVmaW5lIFByb2ZpbGVyT3JpZ2luU3RhY2tfaAogCi0jaW5j
bHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJQcm9m
aWxlck9yaWdpbi5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1By
aW50U3RyZWFtLmg+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0
LmNwcAkocmV2aXNpb24gMTQwMjE1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJnTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyLDcgKzIyLDcgQEAKICNpbmNsdWRlICJB
cmdMaXN0LmgiCiAKICNpbmNsdWRlICJIZWFwUm9vdFZpc2l0b3IuaCIKLSNpbmNsdWRlICJKU1Zh
bHVlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAj
aW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9DYWNoZWRUcmFuc2NlbmRlbnRhbEZ1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHJhbnNjZW5kZW50YWxGdW5jdGlvbi5oCShy
ZXZpc2lvbiAxNDAyMTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRU
cmFuc2NlbmRlbnRhbEZ1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAK
ICNpZm5kZWYgQ2FjaGVkVHJhbnNjZW5kZW50YWxGdW5jdGlvbl9oCiAjZGVmaW5lIENhY2hlZFRy
YW5zY2VuZGVudGFsRnVuY3Rpb25faAogCi0jaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUg
IkpTQ0pTVmFsdWUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NhbGxEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ2FsbERhdGEuaAkocmV2aXNpb24gMTQwMjE1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyAr
MjksNyBAQAogI2lmbmRlZiBDYWxsRGF0YV9oCiAjZGVmaW5lIENhbGxEYXRhX2gKIAotI2luY2x1
ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAKIG5hbWVzcGFjZSBKU0Mg
ewogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5oCShy
ZXZpc2lvbiAxNDAyMTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0
aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKICNpZm5kZWYgQ29tcGxldGlv
bl9oCiAjZGVmaW5lIENvbXBsZXRpb25faAogCi0jaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1
ZGUgIkpTQ0pTVmFsdWUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zdHJ1Y3REYXRhLmgJKHJldmlzaW9uIDE0MDIxNSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogI2RlZmluZSBDb25zdHJ1Y3REYXRhX2gKIAogI2lu
Y2x1ZGUgIkNhbGxEYXRhLmgiCi0jaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ0pT
VmFsdWUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMTQwMjE1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjUsMTIgKzI1LDEyIEBACiAjaW5jbHVkZSAiRGF0ZUNvbnZlcnNpb24u
aCIKICNpbmNsdWRlICJEYXRlSW5zdGFuY2UuaCIKICNpbmNsdWRlICJEYXRlUHJvdG90eXBlLmgi
CisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0RhdGVNYXRoLmgi
CiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAj
aW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJKU1N0cmluZ0J1aWxkZXIuaCIKLSNpbmNs
dWRlICJKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIk9iamVjdFByb3RvdHlwZS5oIgogI2lu
Y2x1ZGUgPG1hdGguaD4KICNpbmNsdWRlIDx0aW1lLmg+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5jZS5jcHAJKHJldmlzaW9uIDE0MDIxNSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5jZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIyLDkgKzIyLDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJE
YXRlSW5zdGFuY2UuaCIKIAorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSlNEYXRlTWF0aC5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCi0jaW5jbHVkZSAi
SlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlIDxtYXRoLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhF
eHRyYXMuaD4KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3Rv
dHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0
ZVByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDE0MDIxNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMSArMjcs
MTEgQEAKICNpbmNsdWRlICJEYXRlQ29udmVyc2lvbi5oIgogI2luY2x1ZGUgIkRhdGVJbnN0YW5j
ZS5oIgogI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIK
ICNpbmNsdWRlICJKU0RhdGVNYXRoLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNp
bmNsdWRlICJKU1N0cmluZy5oIgogI2luY2x1ZGUgIkpTU3RyaW5nQnVpbGRlci5oIgotI2luY2x1
ZGUgIkpTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTG9va3VwLmgiCiAjaW5jbHVkZSAiT2Jq
ZWN0UHJvdG90eXBlLmgiCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QVBJVmFsdWVXcmFwcGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBUElWYWx1ZVdyYXBwZXIuaAkocmV2aXNpb24gMTQwMjE1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBUElWYWx1ZVdyYXBwZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMjMsOCArMjMsOCBAQAogI2lmbmRlZiBKU0FQSVZhbHVlV3JhcHBlcl9oCiAjZGVmaW5lIEpT
QVBJVmFsdWVXcmFwcGVyX2gKIAorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJK
U0NlbGwuaCIKLSNpbmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAj
aW5jbHVkZSAiU3RydWN0dXJlLmgiCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0pTVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ0pTVmFsdWUuY3BwCShyZXZpc2lvbiAxNDAxOTYpCShmcm9tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuY3BwOjE0MDE5NikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MzIwIEBACisvKgorICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9y
dGVuQGtkZS5vcmcpCisgKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9z
dC5jb20pCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA3LCAyMDA4LCAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
KiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiAg
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJKU1ZhbHVlLmgiCisKKyNpbmNsdWRlICJCb29sZWFuQ29uc3RydWN0b3Iu
aCIKKyNpbmNsdWRlICJCb29sZWFuUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNp
bmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCisjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCisj
aW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5j
bHVkZSAiSlNOb3RBbk9iamVjdC5oIgorI2luY2x1ZGUgIkpTVmFsdWVJbmxpbmVzLmgiCisjaW5j
bHVkZSAiTnVtYmVyT2JqZWN0LmgiCisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKyNpbmNs
dWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitzdGF0aWMgY29u
c3QgZG91YmxlIEQzMiA9IDQyOTQ5NjcyOTYuMDsKKworLy8gRUNNQSA5LjQKK2RvdWJsZSBKU1Zh
bHVlOjp0b0ludGVnZXIoRXhlY1N0YXRlKiBleGVjKSBjb25zdAoreworICAgIGlmIChpc0ludDMy
KCkpCisgICAgICAgIHJldHVybiBhc0ludDMyKCk7CisgICAgZG91YmxlIGQgPSB0b051bWJlcihl
eGVjKTsKKyAgICByZXR1cm4gaXNuYW4oZCkgPyAwLjAgOiB0cnVuYyhkKTsKK30KKworZG91Ymxl
IEpTVmFsdWU6OnRvSW50ZWdlclByZXNlcnZlTmFOKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sK
KyAgICBpZiAoaXNJbnQzMigpKQorICAgICAgICByZXR1cm4gYXNJbnQzMigpOworICAgIHJldHVy
biB0cnVuYyh0b051bWJlcihleGVjKSk7Cit9CisKK2RvdWJsZSBKU1ZhbHVlOjp0b051bWJlclNs
b3dDYXNlKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICBBU1NFUlQoIWlzSW50MzIoKSAm
JiAhaXNEb3VibGUoKSk7CisgICAgaWYgKGlzQ2VsbCgpKQorICAgICAgICByZXR1cm4gYXNDZWxs
KCktPnRvTnVtYmVyKGV4ZWMpOworICAgIGlmIChpc1RydWUoKSkKKyAgICAgICAgcmV0dXJuIDEu
MDsKKyAgICByZXR1cm4gaXNVbmRlZmluZWQoKSA/IFFOYU4gOiAwOyAvLyBudWxsIGFuZCBmYWxz
ZSBib3RoIGNvbnZlcnQgdG8gMC4KK30KKworSlNPYmplY3QqIEpTVmFsdWU6OnRvT2JqZWN0U2xv
d0Nhc2UoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25z
dAoreworICAgIEFTU0VSVCghaXNDZWxsKCkpOworCisgICAgaWYgKGlzSW50MzIoKSB8fCBpc0Rv
dWJsZSgpKQorICAgICAgICByZXR1cm4gY29uc3RydWN0TnVtYmVyKGV4ZWMsIGdsb2JhbE9iamVj
dCwgYXNWYWx1ZSgpKTsKKyAgICBpZiAoaXNUcnVlKCkgfHwgaXNGYWxzZSgpKQorICAgICAgICBy
ZXR1cm4gY29uc3RydWN0Qm9vbGVhbkZyb21JbW1lZGlhdGVCb29sZWFuKGV4ZWMsIGdsb2JhbE9i
amVjdCwgYXNWYWx1ZSgpKTsKKworICAgIEFTU0VSVChpc1VuZGVmaW5lZE9yTnVsbCgpKTsKKyAg
ICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZU5vdEFuT2JqZWN0RXJyb3IoZXhlYywgKnRoaXMpKTsK
KyAgICByZXR1cm4gSlNOb3RBbk9iamVjdDo6Y3JlYXRlKGV4ZWMpOworfQorCitKU09iamVjdCog
SlNWYWx1ZTo6dG9UaGlzT2JqZWN0U2xvd0Nhc2UoRXhlY1N0YXRlKiBleGVjKSBjb25zdAorewor
ICAgIEFTU0VSVCghaXNDZWxsKCkpOworCisgICAgaWYgKGlzSW50MzIoKSB8fCBpc0RvdWJsZSgp
KQorICAgICAgICByZXR1cm4gY29uc3RydWN0TnVtYmVyKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSwgYXNWYWx1ZSgpKTsKKyAgICBpZiAoaXNUcnVlKCkgfHwgaXNGYWxzZSgpKQor
ICAgICAgICByZXR1cm4gY29uc3RydWN0Qm9vbGVhbkZyb21JbW1lZGlhdGVCb29sZWFuKGV4ZWMs
IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgYXNWYWx1ZSgpKTsKKyAgICBBU1NFUlQoaXNV
bmRlZmluZWRPck51bGwoKSk7CisgICAgcmV0dXJuIGV4ZWMtPmdsb2JhbFRoaXNWYWx1ZSgpOwor
fQorCitKU09iamVjdCogSlNWYWx1ZTo6c3ludGhlc2l6ZVByb3RvdHlwZShFeGVjU3RhdGUqIGV4
ZWMpIGNvbnN0Cit7CisgICAgaWYgKGlzQ2VsbCgpKSB7CisgICAgICAgIEFTU0VSVChpc1N0cmlu
ZygpKTsKKyAgICAgICAgcmV0dXJuIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+c3RyaW5n
UHJvdG90eXBlKCk7CisgICAgfQorCisgICAgaWYgKGlzTnVtYmVyKCkpCisgICAgICAgIHJldHVy
biBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPm51bWJlclByb3RvdHlwZSgpOworICAgIGlm
IChpc0Jvb2xlYW4oKSkKKyAgICAgICAgcmV0dXJuIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KS0+Ym9vbGVhblByb3RvdHlwZSgpOworCisgICAgQVNTRVJUKGlzVW5kZWZpbmVkT3JOdWxsKCkp
OworICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlTm90QW5PYmplY3RFcnJvcihleGVjLCAqdGhp
cykpOworICAgIHJldHVybiBKU05vdEFuT2JqZWN0OjpjcmVhdGUoZXhlYyk7Cit9CisKKy8vIEVD
TUEgOC43LjIKK3ZvaWQgSlNWYWx1ZTo6cHV0VG9QcmltaXRpdmUoRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
IHNsb3QpCit7CisgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0
YSgpOworCisgICAgdW5zaWduZWQgaW5kZXggPSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgpOworICAg
IGlmIChpbmRleCAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpIHsKKyAgICAgICAgcHV0VG9Q
cmltaXRpdmVCeUluZGV4KGV4ZWMsIGluZGV4LCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBDaGVjayBpZiB0aGVyZSBhcmUgYW55
IHNldHRlcnMgb3IgZ2V0dGVycyBpbiB0aGUgcHJvdG90eXBlIGNoYWluCisgICAgSlNPYmplY3Qq
IG9iaiA9IHN5bnRoZXNpemVQcm90b3R5cGUoZXhlYyk7CisgICAgSlNWYWx1ZSBwcm90b3R5cGU7
CisgICAgaWYgKHByb3BlcnR5TmFtZSAhPSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudW5kZXJzY29y
ZVByb3RvKSB7CisgICAgICAgIGZvciAoOyAhb2JqLT5zdHJ1Y3R1cmUoKS0+aGFzUmVhZE9ubHlP
ckdldHRlclNldHRlclByb3BlcnRpZXNFeGNsdWRpbmdQcm90bygpOyBvYmogPSBhc09iamVjdChw
cm90b3R5cGUpKSB7CisgICAgICAgICAgICBwcm90b3R5cGUgPSBvYmotPnByb3RvdHlwZSgpOwor
ICAgICAgICAgICAgaWYgKHByb3RvdHlwZS5pc051bGwoKSkgeworICAgICAgICAgICAgICAgIGlm
IChzbG90LmlzU3RyaWN0TW9kZSgpKQorICAgICAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJv
cihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOworICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGZv
ciAoOyA7IG9iaiA9IGFzT2JqZWN0KHByb3RvdHlwZSkpIHsKKyAgICAgICAgdW5zaWduZWQgYXR0
cmlidXRlczsKKyAgICAgICAgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlOworICAgICAgICBQcm9wZXJ0
eU9mZnNldCBvZmZzZXQgPSBvYmotPnN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVy
dHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKKyAgICAgICAgaWYgKG9mZnNldCAh
PSBpbnZhbGlkT2Zmc2V0KSB7CisgICAgICAgICAgICBpZiAoYXR0cmlidXRlcyAmIFJlYWRPbmx5
KSB7CisgICAgICAgICAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCisgICAgICAgICAg
ICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIFN0cmljdE1v
ZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOworICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgSlNWYWx1ZSBncyA9IG9iai0+Z2V0RGlyZWN0
KG9mZnNldCk7CisgICAgICAgICAgICBpZiAoZ3MuaXNHZXR0ZXJTZXR0ZXIoKSkgeworICAgICAg
ICAgICAgICAgIEpTT2JqZWN0KiBzZXR0ZXJGdW5jID0gYXNHZXR0ZXJTZXR0ZXIoZ3MpLT5zZXR0
ZXIoKTsgICAgICAgIAorICAgICAgICAgICAgICAgIGlmICghc2V0dGVyRnVuYykgeworICAgICAg
ICAgICAgICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgic2V0dGluZyBhIHByb3BlcnR5IHRoYXQgaGFzIG9ubHkgYSBnZXR0ZXIiKSkpOworICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgICAgICAgICAgICAgIENh
bGxUeXBlIGNhbGxUeXBlID0gc2V0dGVyRnVuYy0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEo
c2V0dGVyRnVuYywgY2FsbERhdGEpOworICAgICAgICAgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVm
ZmVyIGFyZ3M7CisgICAgICAgICAgICAgICAgYXJncy5hcHBlbmQodmFsdWUpOworCisgICAgICAg
ICAgICAgICAgLy8gSWYgdGhpcyBpcyBXZWJDb3JlJ3MgZ2xvYmFsIG9iamVjdCB0aGVuIHdlIG5l
ZWQgdG8gc3Vic3RpdHV0ZSB0aGUgc2hlbGwuCisgICAgICAgICAgICAgICAgY2FsbChleGVjLCBz
ZXR0ZXJGdW5jLCBjYWxsVHlwZSwgY2FsbERhdGEsICp0aGlzLCBhcmdzKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIElmIHRoZXJlJ3Mg
YW4gZXhpc3RpbmcgcHJvcGVydHkgb24gdGhlIG9iamVjdCBvciBvbmUgb2YgaXRzIAorICAgICAg
ICAgICAgLy8gcHJvdG90eXBlcyBpdCBzaG91bGQgYmUgcmVwbGFjZWQsIHNvIGJyZWFrIGhlcmUu
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIHByb3RvdHlwZSA9IG9i
ai0+cHJvdG90eXBlKCk7CisgICAgICAgIGlmIChwcm90b3R5cGUuaXNOdWxsKCkpCisgICAgICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgCisgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCisg
ICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3Jp
dGVFcnJvcik7CisgICAgcmV0dXJuOworfQorCit2b2lkIEpTVmFsdWU6OnB1dFRvUHJpbWl0aXZl
QnlJbmRleChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKK3sKKyAgICBpZiAocHJvcGVydHlOYW1lID4gTUFYX0FS
UkFZX0lOREVYKSB7CisgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHNob3VsZFRocm93KTsK
KyAgICAgICAgcHV0VG9QcmltaXRpdmUoZXhlYywgSWRlbnRpZmllcjo6ZnJvbShleGVjLCBwcm9w
ZXJ0eU5hbWUpLCB2YWx1ZSwgc2xvdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisg
ICAgaWYgKHN5bnRoZXNpemVQcm90b3R5cGUoZXhlYyktPmF0dGVtcHRUb0ludGVyY2VwdFB1dEJ5
SW5kZXhPbkhvbGVGb3JQcm90b3R5cGUoZXhlYywgKnRoaXMsIHByb3BlcnR5TmFtZSwgdmFsdWUs
IHNob3VsZFRocm93KSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGlmIChzaG91bGRUaHJv
dykKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVy
dHlXcml0ZUVycm9yKTsKK30KKwordm9pZCBKU1ZhbHVlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQp
IGNvbnN0Cit7CisgICAgaWYgKCEqdGhpcykKKyAgICAgICAgb3V0LnByaW50KCI8SlNWYWx1ZSgp
PiIpOworICAgIGVsc2UgaWYgKGlzSW50MzIoKSkKKyAgICAgICAgb3V0LnByaW50ZigiSW50MzI6
ICVkIiwgYXNJbnQzMigpKTsKKyAgICBlbHNlIGlmIChpc0RvdWJsZSgpKSB7CisjaWYgVVNFKEpT
VkFMVUU2NCkKKyAgICAgICAgb3V0LnByaW50ZigiRG91YmxlOiAlbGxkLCAlbGYiLCAobG9uZyBs
b25nKXJlaW50ZXJwcmV0RG91YmxlVG9JbnQ2NChhc0RvdWJsZSgpKSwgYXNEb3VibGUoKSk7Cisj
ZWxzZQorICAgICAgICB1bmlvbiB7CisgICAgICAgICAgICBkb3VibGUgYXNEb3VibGU7CisgICAg
ICAgICAgICB1aW50MzJfdCBhc1R3b0ludDMyc1syXTsKKyAgICAgICAgfSB1OworICAgICAgICB1
LmFzRG91YmxlID0gYXNEb3VibGUoKTsKKyAgICAgICAgb3V0LnByaW50ZigiRG91YmxlOiAlMDh4
OiUwOHgsICVsZiIsIHUuYXNUd29JbnQzMnNbMV0sIHUuYXNUd29JbnQzMnNbMF0sIGFzRG91Ymxl
KCkpOworI2VuZGlmCisgICAgfSBlbHNlIGlmIChpc0NlbGwoKSkgeworICAgICAgICBpZiAoYXND
ZWxsKCktPmluaGVyaXRzKCZTdHJ1Y3R1cmU6OnNfaW5mbykpIHsKKyAgICAgICAgICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0ganNDYXN0PFN0cnVjdHVyZSo+KGFzQ2VsbCgpKTsKKyAgICAgICAg
ICAgIG91dC5wcmludCgKKyAgICAgICAgICAgICAgICAiU3RydWN0dXJlOiAiLCBSYXdQb2ludGVy
KHN0cnVjdHVyZSksICI6ICIsIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSwKKyAg
ICAgICAgICAgICAgICAiLCAiLCBJbmRleGluZ1R5cGVEdW1wKHN0cnVjdHVyZS0+aW5kZXhpbmdU
eXBlSW5jbHVkaW5nSGlzdG9yeSgpKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBv
dXQucHJpbnQoIkNlbGw6ICIsIFJhd1BvaW50ZXIoYXNDZWxsKCkpKTsKKyAgICAgICAgICAgIGlm
IChpc09iamVjdCgpICYmIGFzT2JqZWN0KCp0aGlzKS0+YnV0dGVyZmx5KCkpCisgICAgICAgICAg
ICAgICAgb3V0LnByaW50KCItPiIsIFJhd1BvaW50ZXIoYXNPYmplY3QoKnRoaXMpLT5idXR0ZXJm
bHkoKSkpOworICAgICAgICAgICAgb3V0LnByaW50KAorICAgICAgICAgICAgICAgICIgKCIsIFJh
d1BvaW50ZXIoYXNDZWxsKCktPnN0cnVjdHVyZSgpKSwgIjogIiwgYXNDZWxsKCktPnN0cnVjdHVy
ZSgpLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lLAorICAgICAgICAgICAgICAgICIsICIsIEluZGV4
aW5nVHlwZUR1bXAoYXNDZWxsKCktPnN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGVJbmNsdWRpbmdI
aXN0b3J5KCkpLCAiKSIpOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChpc1RydWUoKSkKKyAg
ICAgICAgb3V0LnByaW50KCJUcnVlIik7CisgICAgZWxzZSBpZiAoaXNGYWxzZSgpKQorICAgICAg
ICBvdXQucHJpbnQoIkZhbHNlIik7CisgICAgZWxzZSBpZiAoaXNOdWxsKCkpCisgICAgICAgIG91
dC5wcmludCgiTnVsbCIpOworICAgIGVsc2UgaWYgKGlzVW5kZWZpbmVkKCkpCisgICAgICAgIG91
dC5wcmludCgiVW5kZWZpbmVkIik7CisgICAgZWxzZQorICAgICAgICBvdXQucHJpbnQoIklOVkFM
SUQiKTsKK30KKworLy8gVGhpcyBpbiB0aGUgVG9JbnQzMiBvcGVyYXRpb24gaXMgZGVmaW5lZCBp
biBzZWN0aW9uIDkuNSBvZiB0aGUgRUNNQS0yNjIgc3BlYy4KKy8vIE5vdGUgdGhhdCB0aGlzIG9w
ZXJhdGlvbiBpcyBpZGVudGljYWwgdG8gVG9VSW50MzIgb3RoZXIgdGhhbiB0byBpbnRlcnByZXRh
dGlvbgorLy8gb2YgdGhlIHJlc3VsdGluZyBiaXQtcGF0dGVybiAoYXMgc3VjaCB0aGlzIG1ldG9k
IGlzIGFsc28gY2FsbGVkIHRvIGltcGxlbWVudAorLy8gVG9VSW50MzIpLgorLy8KKy8vIFRoZSBv
cGVyYXRpb24gY2FuIGJlIGRlc2NpYmVkIGFzIHJvdW5kIHRvd2FyZHMgemVybywgdGhlbiBzZWxl
Y3QgdGhlIDMyIGxlYXN0CisvLyBiaXRzIG9mIHRoZSByZXN1bHRpbmcgdmFsdWUgaW4gMnMtY29t
cGxlbWVudCByZXByZXNlbnRhdGlvbi4KK2ludDMyX3QgdG9JbnQzMihkb3VibGUgbnVtYmVyKQor
eworICAgIGludDY0X3QgYml0cyA9IFdURjo6Yml0d2lzZV9jYXN0PGludDY0X3Q+KG51bWJlcik7
CisgICAgaW50MzJfdCBleHAgPSAoc3RhdGljX2Nhc3Q8aW50MzJfdD4oYml0cyA+PiA1MikgJiAw
eDdmZikgLSAweDNmZjsKKworICAgIC8vIElmIGV4cG9uZW50IDwgMCB0aGVyZSB3aWxsIGJlIG5v
IGJpdHMgdG8gdGhlIGxlZnQgb2YgdGhlIGRlY2ltYWwgcG9pbnQKKyAgICAvLyBhZnRlciByb3Vu
ZGluZzsgaWYgdGhlIGV4cG9uZW50IGlzID4gODMgdGhlbiBubyBiaXRzIG9mIHByZWNpc2lvbiBj
YW4gYmUKKyAgICAvLyBsZWZ0IGluIHRoZSBsb3cgMzItYml0IHJhbmdlIG9mIHRoZSByZXN1bHQg
KElFRUUtNzU0IGRvdWJsZXMgaGF2ZSA1MiBiaXRzCisgICAgLy8gb2YgZnJhY3Rpb25hbCBwcmVj
aXNpb24pLgorICAgIC8vIE5vdGUgdGhpcyBjYXNlIGhhbmRsZXMgMCwgLTAsIGFuZCBhbGwgaW5m
aW50ZSwgTmFOLCAmIGRlbm9ybWFsIHZhbHVlLiAKKyAgICBpZiAoZXhwIDwgMCB8fCBleHAgPiA4
MykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAvLyBTZWxlY3QgdGhlIGFwcHJvcHJpYXRlIDMy
LWJpdHMgZnJvbSB0aGUgZmxvYXRpbmcgcG9pbnQgbWFudGlzc2EuICBJZiB0aGUKKyAgICAvLyBl
eHBvbmVudCBpcyA1MiB0aGVuIHRoZSBiaXRzIHdlIG5lZWQgdG8gc2VsZWN0IGFyZSBhbHJlYWR5
IGFsaWduZWQgdG8gdGhlCisgICAgLy8gbG93ZXN0IGJpdHMgb2YgdGhlIDY0LWJpdCBpbnRlZ2Vy
IHJlcHJlc2VudGF0aW9uIG9mIHRnaGUgbnVtYmVyLCBubyBuZWVkCisgICAgLy8gdG8gc2hpZnQu
ICBJZiB0aGUgZXhwb25lbnQgaXMgZ3JlYXRlciB0aGFuIDUyIHdlIG5lZWQgdG8gc2hpZnQgdGhl
IHZhbHVlCisgICAgLy8gbGVmdCBieSAoZXhwIC0gNTIpLCBpZiB0aGUgdmFsdWUgaXMgbGVzcyB0
aGFuIDUyIHdlIG5lZWQgdG8gc2hpZnQgcmlnaHQKKyAgICAvLyBhY2NvcmRpbmdseS4KKyAgICBp
bnQzMl90IHJlc3VsdCA9IChleHAgPiA1MikKKyAgICAgICAgPyBzdGF0aWNfY2FzdDxpbnQzMl90
PihiaXRzIDw8IChleHAgLSA1MikpCisgICAgICAgIDogc3RhdGljX2Nhc3Q8aW50MzJfdD4oYml0
cyA+PiAoNTIgLSBleHApKTsKKworICAgIC8vIElFRUUtNzU0IGRvdWJsZSBwcmVjaXNpb24gdmFs
dWVzIGFyZSBzdG9yZWQgb21pdHRpbmcgYW4gaW1wbGljaXQgMSBiZWZvcmUKKyAgICAvLyB0aGUg
ZGVjaW1hbCBwb2ludDsgd2UgbmVlZCB0byByZWluc2VydCB0aGlzIG5vdy4gIFdlIG1heSBhbHNv
IHRoZSBzaGlmdGVkCisgICAgLy8gaW52YWxpZCBiaXRzIGludG8gdGhlIHJlc3VsdCB0aGF0IGFy
ZSBub3QgYSBwYXJ0IG9mIHRoZSBtYW50aXNzYSAodGhlIHNpZ24KKyAgICAvLyBhbmQgZXhwb25l
bnQgYml0cyBmcm9tIHRoZSBmbG9hdGluZ3BvaW50IHJlcHJlc2VudGF0aW9uKTsgbWFzayB0aGVz
ZSBvdXQuCisgICAgaWYgKGV4cCA8IDMyKSB7CisgICAgICAgIGludDMyX3QgbWlzc2luZ09uZSA9
IDEgPDwgZXhwOworICAgICAgICByZXN1bHQgJj0gbWlzc2luZ09uZSAtIDE7CisgICAgICAgIHJl
c3VsdCArPSBtaXNzaW5nT25lOworICAgIH0KKworICAgIC8vIElmIHRoZSBpbnB1dCB2YWx1ZSB3
YXMgbmVnYXRpdmUgKHdlIGNvdWxkIHRlc3QgZWl0aGVyICdudW1iZXInIG9yICdiaXRzJywKKyAg
ICAvLyBidXQgdGVzdGluZyAnYml0cycgaXMgbGlrZWx5IGZhc3RlcikgaW52ZXJ0IHRoZSByZXN1
bHQgYXBwcm9wcmlhdGVseS4KKyAgICByZXR1cm4gYml0cyA8IDAgPyAtcmVzdWx0IDogcmVzdWx0
OworfQorCitib29sIEpTVmFsdWU6OmlzVmFsaWRDYWxsZWUoKQoreworICAgIHJldHVybiBhc09i
amVjdChhc0NlbGwoKSktPmdsb2JhbE9iamVjdCgpOworfQorCitKU1N0cmluZyogSlNWYWx1ZTo6
dG9TdHJpbmdTbG93Q2FzZShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Cit7CisgICAgSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOworICAgIEFTU0VSVCghaXNTdHJp
bmcoKSk7CisgICAgaWYgKGlzSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIGpzU3RyaW5nKCZnbG9i
YWxEYXRhLCBnbG9iYWxEYXRhLm51bWVyaWNTdHJpbmdzLmFkZChhc0ludDMyKCkpKTsKKyAgICBp
ZiAoaXNEb3VibGUoKSkKKyAgICAgICAgcmV0dXJuIGpzU3RyaW5nKCZnbG9iYWxEYXRhLCBnbG9i
YWxEYXRhLm51bWVyaWNTdHJpbmdzLmFkZChhc0RvdWJsZSgpKSk7CisgICAgaWYgKGlzVHJ1ZSgp
KQorICAgICAgICByZXR1cm4gZ2xvYmFsRGF0YS5zbWFsbFN0cmluZ3MudHJ1ZVN0cmluZygpOwor
ICAgIGlmIChpc0ZhbHNlKCkpCisgICAgICAgIHJldHVybiBnbG9iYWxEYXRhLnNtYWxsU3RyaW5n
cy5mYWxzZVN0cmluZygpOworICAgIGlmIChpc051bGwoKSkKKyAgICAgICAgcmV0dXJuIGdsb2Jh
bERhdGEuc21hbGxTdHJpbmdzLm51bGxTdHJpbmcoKTsKKyAgICBpZiAoaXNVbmRlZmluZWQoKSkK
KyAgICAgICAgcmV0dXJuIGdsb2JhbERhdGEuc21hbGxTdHJpbmdzLnVuZGVmaW5lZFN0cmluZygp
OworCisgICAgQVNTRVJUKGlzQ2VsbCgpKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gYXNDZWxsKCkt
PnRvUHJpbWl0aXZlKGV4ZWMsIFByZWZlclN0cmluZyk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQorICAgICAgICByZXR1cm4ganNFbXB0eVN0cmluZyhleGVjKTsKKyAgICBBU1NFUlQo
IXZhbHVlLmlzT2JqZWN0KCkpOworICAgIHJldHVybiB2YWx1ZS50b1N0cmluZyhleGVjKTsKK30K
KworU3RyaW5nIEpTVmFsdWU6OnRvV1RGU3RyaW5nU2xvd0Nhc2UoRXhlY1N0YXRlKiBleGVjKSBj
b25zdAoreworICAgIHJldHVybiBpbmxpbmVKU1ZhbHVlTm90U3RyaW5ndG9TdHJpbmcoKnRoaXMs
IGV4ZWMpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCShyZXZpc2lvbiAxNDAxOTYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjEsMTcgKzIxLDE3IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IkpTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAKICNpbmNsdWRlICJCb29sZWFu
Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJCb29sZWFuUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAi
RXJyb3IuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiR2V0dGVy
U2V0dGVyLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0ds
b2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU05vdEFu
T2JqZWN0LmgiCi0jaW5jbHVkZSAiSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJOdW1iZXJP
YmplY3QuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9TdHJp
bmdFeHRyYXMuaD4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFs
dWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1Zh
bHVlLmgJKHJldmlzaW9uIDE0MDE5NikJKGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNWYWx1ZS5oOjE0MDE5NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0pTVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ5NyBAQAorLyoKKyAqICBDb3B5
cmlnaHQgKEMpIDE5OTktMjAwMSBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQorICogIENv
cHlyaWdodCAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQorICogIENvcHlyaWdo
dCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaWZuZGVmIEpTVmFsdWVfaAor
I2RlZmluZSBKU1ZhbHVlX2gKKworI2luY2x1ZGUgPG1hdGguaD4KKyNpbmNsdWRlIDxzdGRkZWYu
aD4gLy8gZm9yIHNpemVfdAorI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHd0Zi9BbHdh
eXNJbmxpbmUuaD4KKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KKyNpbmNsdWRlIDx3dGYvTWF0
aEV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKworbmFtZXNwYWNlIEpT
QyB7CisKKy8vIFRoaXMgaXMgdXNlZCBhIGxvdCB0aHJvdWdob3V0IEphdmFTY3JpcHRDb3JlIGZv
ciBldmVyeXRoaW5nIGZyb20gdmFsdWUgYm94aW5nIHRvIG1hcmtpbmcKKy8vIHZhbHVlcyBhcyBi
ZWluZyBtaXNzaW5nLCBzbyBpdCBpcyB1c2VmdWwgdG8gaGF2ZSBpdCBhYmJyZXZpYXRlZC4KKyNk
ZWZpbmUgUU5hTiAoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSkKKwor
Y2xhc3MgRXhlY1N0YXRlOworY2xhc3MgSlNDZWxsOworY2xhc3MgSlNHbG9iYWxEYXRhOworY2xh
c3MgSlNHbG9iYWxPYmplY3Q7CitjbGFzcyBKU09iamVjdDsKK2NsYXNzIEpTU3RyaW5nOworY2xh
c3MgUHJvcGVydHlOYW1lOworY2xhc3MgUHJvcGVydHlTbG90OworY2xhc3MgUHV0UHJvcGVydHlT
bG90OworI2lmIEVOQUJMRShERkdfSklUKQorbmFtZXNwYWNlIERGRyB7CitjbGFzcyBBc3NlbWJs
eUhlbHBlcnM7CitjbGFzcyBKSVRDb21waWxlcjsKK2NsYXNzIEpJVENvZGVHZW5lcmF0b3I7Citj
bGFzcyBKU1ZhbHVlU291cmNlOworY2xhc3MgT1NSRXhpdENvbXBpbGVyOworY2xhc3MgU3BlY3Vs
YXRpdmVKSVQ7Cit9CisjZW5kaWYKKyNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQorbmFtZXNwYWNl
IExMSW50IHsKK2NsYXNzIENMb29wOworfQorI2VuZGlmCisKK3N0cnVjdCBDbGFzc0luZm87Citz
dHJ1Y3QgSW5zdHJ1Y3Rpb247CitzdHJ1Y3QgTWV0aG9kVGFibGU7CisKK3RlbXBsYXRlIDxjbGFz
cyBUPiBjbGFzcyBXcml0ZUJhcnJpZXJCYXNlOworCitlbnVtIFByZWZlcnJlZFByaW1pdGl2ZVR5
cGUgeyBOb1ByZWZlcmVuY2UsIFByZWZlck51bWJlciwgUHJlZmVyU3RyaW5nIH07CisKKwordHlw
ZWRlZiBpbnQ2NF90IEVuY29kZWRKU1ZhbHVlOworICAgIAordW5pb24gRW5jb2RlZFZhbHVlRGVz
Y3JpcHRvciB7CisgICAgaW50NjRfdCBhc0ludDY0OworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisg
ICAgZG91YmxlIGFzRG91YmxlOworI2VsaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBKU0NlbGwqIHB0
cjsKKyNlbmRpZgorICAgICAgICAKKyNpZiBDUFUoQklHX0VORElBTikKKyAgICBzdHJ1Y3Qgewor
ICAgICAgICBpbnQzMl90IHRhZzsKKyAgICAgICAgaW50MzJfdCBwYXlsb2FkOworICAgIH0gYXNC
aXRzOworI2Vsc2UKKyAgICBzdHJ1Y3QgeworICAgICAgICBpbnQzMl90IHBheWxvYWQ7CisgICAg
ICAgIGludDMyX3QgdGFnOworICAgIH0gYXNCaXRzOworI2VuZGlmCit9OworCisvLyBUaGlzIGlt
cGxlbWVudHMgVG9JbnQzMiwgZGVmaW5lZCBpbiBFQ01BLTI2MiA5LjUuCitKU19FWFBPUlRfUFJJ
VkFURSBpbnQzMl90IHRvSW50MzIoZG91YmxlKTsKKworLy8gVGhpcyBpbXBsZW1lbnRzIFRvVUlu
dDMyLCBkZWZpbmVkIGluIEVDTUEtMjYyIDkuNi4KK2lubGluZSB1aW50MzJfdCB0b1VJbnQzMihk
b3VibGUgbnVtYmVyKQoreworICAgIC8vIEFzIGNvbW1lbnRlZCBpbiB0aGUgc3BlYywgdGhlIG9w
ZXJhdGlvbiBvZiBUb0ludDMyIGFuZCBUb1VpbnQzMiBvbmx5IGRpZmZlcgorICAgIC8vIGluIGhv
dyB0aGUgcmVzdWx0IGlzIGludGVycHJldGVkOyBzZWUgTk9URXMgaW4gc2VjdGlvbnMgOS41IGFu
ZCA5LjYuCisgICAgcmV0dXJuIHRvSW50MzIobnVtYmVyKTsKK30KKworY2xhc3MgSlNWYWx1ZSB7
CisgICAgZnJpZW5kIHN0cnVjdCBFbmNvZGVkSlNWYWx1ZUhhc2hUcmFpdHM7CisgICAgZnJpZW5k
IGNsYXNzIEpJVDsKKyAgICBmcmllbmQgY2xhc3MgSklUU3R1YnM7CisgICAgZnJpZW5kIGNsYXNz
IEpJVFN0dWJDYWxsOworICAgIGZyaWVuZCBjbGFzcyBKU0ludGVyZmFjZUpJVDsKKyAgICBmcmll
bmQgY2xhc3MgU3BlY2lhbGl6ZWRUaHVua0pJVDsKKyNpZiBFTkFCTEUoREZHX0pJVCkKKyAgICBm
cmllbmQgY2xhc3MgREZHOjpBc3NlbWJseUhlbHBlcnM7CisgICAgZnJpZW5kIGNsYXNzIERGRzo6
SklUQ29tcGlsZXI7CisgICAgZnJpZW5kIGNsYXNzIERGRzo6SklUQ29kZUdlbmVyYXRvcjsKKyAg
ICBmcmllbmQgY2xhc3MgREZHOjpKU1ZhbHVlU291cmNlOworICAgIGZyaWVuZCBjbGFzcyBERkc6
Ok9TUkV4aXRDb21waWxlcjsKKyAgICBmcmllbmQgY2xhc3MgREZHOjpTcGVjdWxhdGl2ZUpJVDsK
KyNlbmRpZgorI2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCisgICAgZnJpZW5kIGNsYXNzIExMSW50
OjpDTG9vcDsKKyNlbmRpZgorCitwdWJsaWM6CisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICBl
bnVtIHsgSW50MzJUYWcgPSAgICAgICAgMHhmZmZmZmZmZiB9OworICAgIGVudW0geyBCb29sZWFu
VGFnID0gICAgICAweGZmZmZmZmZlIH07CisgICAgZW51bSB7IE51bGxUYWcgPSAgICAgICAgIDB4
ZmZmZmZmZmQgfTsKKyAgICBlbnVtIHsgVW5kZWZpbmVkVGFnID0gICAgMHhmZmZmZmZmYyB9Owor
ICAgIGVudW0geyBDZWxsVGFnID0gICAgICAgICAweGZmZmZmZmZiIH07CisgICAgZW51bSB7IEVt
cHR5VmFsdWVUYWcgPSAgIDB4ZmZmZmZmZmEgfTsKKyAgICBlbnVtIHsgRGVsZXRlZFZhbHVlVGFn
ID0gMHhmZmZmZmZmOSB9OworCisgICAgZW51bSB7IExvd2VzdFRhZyA9ICBEZWxldGVkVmFsdWVU
YWcgfTsKKyNlbmRpZgorCisgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIGVuY29kZShKU1ZhbHVl
KTsKKyAgICBzdGF0aWMgSlNWYWx1ZSBkZWNvZGUoRW5jb2RlZEpTVmFsdWUpOworCisgICAgZW51
bSBKU051bGxUYWcgeyBKU051bGwgfTsKKyAgICBlbnVtIEpTVW5kZWZpbmVkVGFnIHsgSlNVbmRl
ZmluZWQgfTsKKyAgICBlbnVtIEpTVHJ1ZVRhZyB7IEpTVHJ1ZSB9OworICAgIGVudW0gSlNGYWxz
ZVRhZyB7IEpTRmFsc2UgfTsKKyAgICBlbnVtIEVuY29kZUFzRG91YmxlVGFnIHsgRW5jb2RlQXNE
b3VibGUgfTsKKworICAgIEpTVmFsdWUoKTsKKyAgICBKU1ZhbHVlKEpTTnVsbFRhZyk7CisgICAg
SlNWYWx1ZShKU1VuZGVmaW5lZFRhZyk7CisgICAgSlNWYWx1ZShKU1RydWVUYWcpOworICAgIEpT
VmFsdWUoSlNGYWxzZVRhZyk7CisgICAgSlNWYWx1ZShKU0NlbGwqIHB0cik7CisgICAgSlNWYWx1
ZShjb25zdCBKU0NlbGwqIHB0cik7CisKKyAgICAvLyBOdW1iZXJzCisgICAgSlNWYWx1ZShFbmNv
ZGVBc0RvdWJsZVRhZywgZG91YmxlKTsKKyAgICBleHBsaWNpdCBKU1ZhbHVlKGRvdWJsZSk7Cisg
ICAgZXhwbGljaXQgSlNWYWx1ZShjaGFyKTsKKyAgICBleHBsaWNpdCBKU1ZhbHVlKHVuc2lnbmVk
IGNoYXIpOworICAgIGV4cGxpY2l0IEpTVmFsdWUoc2hvcnQpOworICAgIGV4cGxpY2l0IEpTVmFs
dWUodW5zaWduZWQgc2hvcnQpOworICAgIGV4cGxpY2l0IEpTVmFsdWUoaW50KTsKKyAgICBleHBs
aWNpdCBKU1ZhbHVlKHVuc2lnbmVkKTsKKyAgICBleHBsaWNpdCBKU1ZhbHVlKGxvbmcpOworICAg
IGV4cGxpY2l0IEpTVmFsdWUodW5zaWduZWQgbG9uZyk7CisgICAgZXhwbGljaXQgSlNWYWx1ZShs
b25nIGxvbmcpOworICAgIGV4cGxpY2l0IEpTVmFsdWUodW5zaWduZWQgbG9uZyBsb25nKTsKKwor
ICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgSlNW
YWx1ZSYgb3RoZXIpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBKU1ZhbHVlJiBv
dGhlcikgY29uc3Q7CisKKyAgICBib29sIGlzSW50MzIoKSBjb25zdDsKKyAgICBib29sIGlzVUlu
dDMyKCkgY29uc3Q7CisgICAgYm9vbCBpc0RvdWJsZSgpIGNvbnN0OworICAgIGJvb2wgaXNUcnVl
KCkgY29uc3Q7CisgICAgYm9vbCBpc0ZhbHNlKCkgY29uc3Q7CisKKyAgICBpbnQzMl90IGFzSW50
MzIoKSBjb25zdDsKKyAgICB1aW50MzJfdCBhc1VJbnQzMigpIGNvbnN0OworICAgIGRvdWJsZSBh
c0RvdWJsZSgpIGNvbnN0OworICAgIGJvb2wgYXNCb29sZWFuKCkgY29uc3Q7CisgICAgZG91Ymxl
IGFzTnVtYmVyKCkgY29uc3Q7CisKKyAgICAvLyBRdWVyeWluZyB0aGUgdHlwZS4KKyAgICBib29s
IGlzRW1wdHkoKSBjb25zdDsKKyAgICBib29sIGlzRnVuY3Rpb24oKSBjb25zdDsKKyAgICBib29s
IGlzVW5kZWZpbmVkKCkgY29uc3Q7CisgICAgYm9vbCBpc051bGwoKSBjb25zdDsKKyAgICBib29s
IGlzVW5kZWZpbmVkT3JOdWxsKCkgY29uc3Q7CisgICAgYm9vbCBpc0Jvb2xlYW4oKSBjb25zdDsK
KyAgICBib29sIGlzTnVtYmVyKCkgY29uc3Q7CisgICAgYm9vbCBpc1N0cmluZygpIGNvbnN0Owor
ICAgIGJvb2wgaXNQcmltaXRpdmUoKSBjb25zdDsKKyAgICBib29sIGlzR2V0dGVyU2V0dGVyKCkg
Y29uc3Q7CisgICAgYm9vbCBpc09iamVjdCgpIGNvbnN0OworICAgIGJvb2wgaW5oZXJpdHMoY29u
c3QgQ2xhc3NJbmZvKikgY29uc3Q7CisgICAgICAgIAorICAgIC8vIEV4dHJhY3RpbmcgdGhlIHZh
bHVlLgorICAgIGJvb2wgZ2V0U3RyaW5nKEV4ZWNTdGF0ZSosIFdURjo6U3RyaW5nJikgY29uc3Q7
CisgICAgV1RGOjpTdHJpbmcgZ2V0U3RyaW5nKEV4ZWNTdGF0ZSopIGNvbnN0OyAvLyBudWxsIHN0
cmluZyBpZiBub3QgYSBzdHJpbmcKKyAgICBKU09iamVjdCogZ2V0T2JqZWN0KCkgY29uc3Q7IC8v
IDAgaWYgbm90IGFuIG9iamVjdAorCisgICAgLy8gRXh0cmFjdGluZyBpbnRlZ2VyIHZhbHVlcy4K
KyAgICBib29sIGdldFVJbnQzMih1aW50MzJfdCYpIGNvbnN0OworICAgICAgICAKKyAgICAvLyBC
YXNpYyBjb252ZXJzaW9ucy4KKyAgICBKU1ZhbHVlIHRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSosIFBy
ZWZlcnJlZFByaW1pdGl2ZVR5cGUgPSBOb1ByZWZlcmVuY2UpIGNvbnN0OworICAgIGJvb2wgZ2V0
UHJpbWl0aXZlTnVtYmVyKEV4ZWNTdGF0ZSosIGRvdWJsZSYgbnVtYmVyLCBKU1ZhbHVlJik7CisK
KyAgICBib29sIHRvQm9vbGVhbihFeGVjU3RhdGUqKSBjb25zdDsKKworICAgIC8vIHRvTnVtYmVy
IGNvbnZlcnNpb24gaXMgZXhwZWN0ZWQgdG8gYmUgc2lkZSBlZmZlY3QgZnJlZSBpZiBhbiBleGNl
cHRpb24gaGFzCisgICAgLy8gYmVlbiBzZXQgaW4gdGhlIEV4ZWNTdGF0ZSBhbHJlYWR5LgorICAg
IGRvdWJsZSB0b051bWJlcihFeGVjU3RhdGUqKSBjb25zdDsKKyAgICBKU1N0cmluZyogdG9TdHJp
bmcoRXhlY1N0YXRlKikgY29uc3Q7CisgICAgV1RGOjpTdHJpbmcgdG9XVEZTdHJpbmcoRXhlY1N0
YXRlKikgY29uc3Q7CisgICAgV1RGOjpTdHJpbmcgdG9XVEZTdHJpbmdJbmxpbmUoRXhlY1N0YXRl
KikgY29uc3Q7CisgICAgSlNPYmplY3QqIHRvT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0OworICAg
IEpTT2JqZWN0KiB0b09iamVjdChFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCopIGNvbnN0Owor
CisgICAgLy8gSW50ZWdlciBjb252ZXJzaW9ucy4KKyAgICBKU19FWFBPUlRfUFJJVkFURSBkb3Vi
bGUgdG9JbnRlZ2VyKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgIGRvdWJsZSB0b0ludGVnZXJQcmVz
ZXJ2ZU5hTihFeGVjU3RhdGUqKSBjb25zdDsKKyAgICBpbnQzMl90IHRvSW50MzIoRXhlY1N0YXRl
KikgY29uc3Q7CisgICAgdWludDMyX3QgdG9VSW50MzIoRXhlY1N0YXRlKikgY29uc3Q7CisKKyAg
ICAvLyBGbG9hdGluZyBwb2ludCBjb252ZXJzaW9ucyAodGhpcyBpcyBhIGNvbnZlbmllbmNlIG1l
dGhvZCBmb3Igd2ViY29yZTsKKyAgICAvLyBzaWdubGUgcHJlY2lzaW9uIGZsb2F0IGlzIG5vdCBh
IHJlcHJlc2VudGF0aW9uIHVzZWQgaW4gSlMgb3IgSlNDKS4KKyAgICBmbG9hdCB0b0Zsb2F0KEV4
ZWNTdGF0ZSogZXhlYykgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHRvTnVtYmVy
KGV4ZWMpKTsgfQorCisgICAgLy8gT2JqZWN0IG9wZXJhdGlvbnMsIHdpdGggdGhlIHRvT2JqZWN0
IG9wZXJhdGlvbiBpbmNsdWRlZC4KKyAgICBKU1ZhbHVlIGdldChFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUpIGNvbnN0OworICAgIEpTVmFsdWUgZ2V0KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90JikgY29uc3Q7CisgICAgSlNWYWx1ZSBnZXQoRXhlY1N0YXRlKiwgdW5zaWdu
ZWQgcHJvcGVydHlOYW1lKSBjb25zdDsKKyAgICBKU1ZhbHVlIGdldChFeGVjU3RhdGUqLCB1bnNp
Z25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpIGNvbnN0OworICAgIHZvaWQgcHV0KEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAg
dm9pZCBwdXRUb1ByaW1pdGl2ZShFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYpOworICAgIHZvaWQgcHV0VG9QcmltaXRpdmVCeUluZGV4KEV4ZWNTdGF0
ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7Cisg
ICAgdm9pZCBwdXRCeUluZGV4KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CisKKyAgICBKU09iamVjdCogdG9UaGlzT2JqZWN0KEV4
ZWNTdGF0ZSopIGNvbnN0OworCisgICAgc3RhdGljIGJvb2wgZXF1YWwoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKTsKKyAgICBzdGF0aWMgYm9vbCBlcXVhbFNsb3dDYXNl
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2Mik7CisgICAgc3RhdGljIGJv
b2wgZXF1YWxTbG93Q2FzZUlubGluZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdjEsIEpTVmFs
dWUgdjIpOworICAgIHN0YXRpYyBib29sIHN0cmljdEVxdWFsKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSB2MSwgSlNWYWx1ZSB2Mik7CisgICAgc3RhdGljIGJvb2wgc3RyaWN0RXF1YWxTbG93Q2Fz
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpOworICAgIHN0YXRpYyBi
b29sIHN0cmljdEVxdWFsU2xvd0Nhc2VJbmxpbmUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHYx
LCBKU1ZhbHVlIHYyKTsKKworICAgIGJvb2wgaXNDZWxsKCkgY29uc3Q7CisgICAgSlNDZWxsKiBh
c0NlbGwoKSBjb25zdDsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGlzVmFsaWRDYWxsZWUo
KTsKKyAgICAgICAgCisgICAgSlNWYWx1ZSBzdHJ1Y3R1cmVPclVuZGVmaW5lZCgpIGNvbnN0Owor
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CisK
KyAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogc3ludGhlc2l6ZVByb3RvdHlwZShFeGVj
U3RhdGUqKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gSlNWYWx1
ZShXcml0ZUJhcnJpZXJCYXNlPFQ+KTsKKworICAgIGVudW0gSGFzaFRhYmxlRGVsZXRlZFZhbHVl
VGFnIHsgSGFzaFRhYmxlRGVsZXRlZFZhbHVlIH07CisgICAgSlNWYWx1ZShIYXNoVGFibGVEZWxl
dGVkVmFsdWVUYWcpOworCisgICAgaW5saW5lIGNvbnN0IEpTVmFsdWUgYXNWYWx1ZSgpIGNvbnN0
IHsgcmV0dXJuICp0aGlzOyB9CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgZG91YmxlIHRvTnVtYmVy
U2xvd0Nhc2UoRXhlY1N0YXRlKikgY29uc3Q7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNTdHJp
bmcqIHRvU3RyaW5nU2xvd0Nhc2UoRXhlY1N0YXRlKikgY29uc3Q7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgV1RGOjpTdHJpbmcgdG9XVEZTdHJpbmdTbG93Q2FzZShFeGVjU3RhdGUqKSBjb25zdDsK
KyAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogdG9PYmplY3RTbG93Q2FzZShFeGVjU3Rh
dGUqLCBKU0dsb2JhbE9iamVjdCopIGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2Jq
ZWN0KiB0b1RoaXNPYmplY3RTbG93Q2FzZShFeGVjU3RhdGUqKSBjb25zdDsKKworI2lmIFVTRShK
U1ZBTFVFMzJfNjQpCisgICAgLyoKKyAgICAgKiBPbiAzMi1iaXQgcGxhdGZvcm1zIFVTRShKU1ZB
TFVFMzJfNjQpIHNob3VsZCBiZSBkZWZpbmVkLCBhbmQgd2UgdXNlIGEgTmFOLWVuY29kZWQKKyAg
ICAgKiBmb3JtIGZvciBpbW1lZGlhdGVzLgorICAgICAqCisgICAgICogVGhlIGVuY29kaW5nIG1h
a2VzIHVzZSBvZiB1bnVzZWQgTmFOIHNwYWNlIGluIHRoZSBJRUVFNzU0IHJlcHJlc2VudGF0aW9u
LiAgQW55IHZhbHVlCisgICAgICogd2l0aCB0aGUgdG9wIDEzIGJpdHMgc2V0IHJlcHJlc2VudHMg
YSBRTmFOICh3aXRoIHRoZSBzaWduIGJpdCBzZXQpLiAgUU5hTiB2YWx1ZXMKKyAgICAgKiBjYW4g
ZW5jb2RlIGEgNTEtYml0IHBheWxvYWQuICBIYXJkd2FyZSBwcm9kdWNlZCBhbmQgQy1saWJyYXJ5
IHBheWxvYWRzIHR5cGljYWxseQorICAgICAqIGhhdmUgYSBwYXlsb2FkIG9mIHplcm8uICBXZSBh
c3N1bWUgdGhhdCBub24temVybyBwYXlsb2FkcyBhcmUgYXZhaWxhYmxlIHRvIGVuY29kZQorICAg
ICAqIHBvaW50ZXIgYW5kIGludGVnZXIgdmFsdWVzLiAgU2luY2UgYW55IDY0LWJpdCBiaXQgcGF0
dGVybiB3aGVyZSB0aGUgdG9wIDE1IGJpdHMgYXJlCisgICAgICogYWxsIHNldCByZXByZXNlbnRz
IGEgTmFOIHdpdGggYSBub24temVybyBwYXlsb2FkLCB3ZSBjYW4gdXNlIHRoaXMgc3BhY2UgaW4g
dGhlIE5hTgorICAgICAqIHJhbmdlcyB0byBlbmNvZGUgb3RoZXIgdmFsdWVzIChob3dldmVyIHRo
ZXJlIGFyZSBhbHNvIG90aGVyIHJhbmdlcyBvZiBOYU4gc3BhY2UgdGhhdAorICAgICAqIGNvdWxk
IGhhdmUgYmVlbiBzZWxlY3RlZCkuCisgICAgICoKKyAgICAgKiBGb3IgSlNWYWx1ZXMgdGhhdCBk
byBub3QgY29udGFpbiBhIGRvdWJsZSB2YWx1ZSwgdGhlIGhpZ2ggMzIgYml0cyBjb250YWluIHRo
ZSB0YWcKKyAgICAgKiB2YWx1ZXMgbGlzdGVkIGluIHRoZSBlbnVtcyBiZWxvdywgd2hpY2ggYWxs
IGNvcnJlc3BvbmQgdG8gTmFOLXNwYWNlLiBJbiB0aGUgY2FzZSBvZgorICAgICAqIGNlbGwsIGlu
dGVnZXIgYW5kIGJvb2wgdmFsdWVzIHRoZSBsb3dlciAzMiBiaXRzICh0aGUgJ3BheWxvYWQnKSBj
b250YWluIHRoZSBwb2ludGVyCisgICAgICogaW50ZWdlciBvciBib29sZWFuIHZhbHVlOyBpbiB0
aGUgY2FzZSBvZiBhbGwgb3RoZXIgdGFncyB0aGUgcGF5bG9hZCBpcyAwLgorICAgICAqLworICAg
IHVpbnQzMl90IHRhZygpIGNvbnN0OworICAgIGludDMyX3QgcGF5bG9hZCgpIGNvbnN0OworCisj
aWYgRU5BQkxFKExMSU5UX0NfTE9PUCkKKyAgICAvLyBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQg
YnkgdGhlIExMSW50IEMgTG9vcCBpbnRlcnByZXRlciB3aG8gbmVlZHMKKyAgICAvLyBzeW50aGVz
aXplIEpTVmFsdWUgZnJvbSBpdHMgInJlZ2lzdGVyInMgaG9sZGluZyB0YWcgYW5kIHBheWxvYWQK
KyAgICAvLyB2YWx1ZXMuCisgICAgZXhwbGljaXQgSlNWYWx1ZShpbnQzMl90IHRhZywgaW50MzJf
dCBwYXlsb2FkKTsKKyNlbmRpZgorCisjZWxpZiBVU0UoSlNWQUxVRTY0KQorICAgIC8qCisgICAg
ICogT24gNjQtYml0IHBsYXRmb3JtcyBVU0UoSlNWQUxVRTY0KSBzaG91bGQgYmUgZGVmaW5lZCwg
YW5kIHdlIHVzZSBhIE5hTi1lbmNvZGVkCisgICAgICogZm9ybSBmb3IgaW1tZWRpYXRlcy4KKyAg
ICAgKgorICAgICAqIFRoZSBlbmNvZGluZyBtYWtlcyB1c2Ugb2YgdW51c2VkIE5hTiBzcGFjZSBp
biB0aGUgSUVFRTc1NCByZXByZXNlbnRhdGlvbi4gIEFueSB2YWx1ZQorICAgICAqIHdpdGggdGhl
IHRvcCAxMyBiaXRzIHNldCByZXByZXNlbnRzIGEgUU5hTiAod2l0aCB0aGUgc2lnbiBiaXQgc2V0
KS4gIFFOYU4gdmFsdWVzCisgICAgICogY2FuIGVuY29kZSBhIDUxLWJpdCBwYXlsb2FkLiAgSGFy
ZHdhcmUgcHJvZHVjZWQgYW5kIEMtbGlicmFyeSBwYXlsb2FkcyB0eXBpY2FsbHkKKyAgICAgKiBo
YXZlIGEgcGF5bG9hZCBvZiB6ZXJvLiAgV2UgYXNzdW1lIHRoYXQgbm9uLXplcm8gcGF5bG9hZHMg
YXJlIGF2YWlsYWJsZSB0byBlbmNvZGUKKyAgICAgKiBwb2ludGVyIGFuZCBpbnRlZ2VyIHZhbHVl
cy4gIFNpbmNlIGFueSA2NC1iaXQgYml0IHBhdHRlcm4gd2hlcmUgdGhlIHRvcCAxNSBiaXRzIGFy
ZQorICAgICAqIGFsbCBzZXQgcmVwcmVzZW50cyBhIE5hTiB3aXRoIGEgbm9uLXplcm8gcGF5bG9h
ZCwgd2UgY2FuIHVzZSB0aGlzIHNwYWNlIGluIHRoZSBOYU4KKyAgICAgKiByYW5nZXMgdG8gZW5j
b2RlIG90aGVyIHZhbHVlcyAoaG93ZXZlciB0aGVyZSBhcmUgYWxzbyBvdGhlciByYW5nZXMgb2Yg
TmFOIHNwYWNlIHRoYXQKKyAgICAgKiBjb3VsZCBoYXZlIGJlZW4gc2VsZWN0ZWQpLgorICAgICAq
CisgICAgICogVGhpcyByYW5nZSBvZiBOYU4gc3BhY2UgaXMgcmVwcmVzZW50ZWQgYnkgNjQtYml0
IG51bWJlcnMgYmVnaW5pbmcgd2l0aCB0aGUgMTYtYml0CisgICAgICogaGV4IHBhdHRlcm5zIDB4
RkZGRSBhbmQgMHhGRkZGIC0gd2UgcmVseSBvbiB0aGUgZmFjdCB0aGF0IG5vIHZhbGlkIGRvdWJs
ZS1wcmVjaXNpb24KKyAgICAgKiBudW1iZXJzIHdpbGwgYmVnaW4gZmFsbCBpbiB0aGVzZSByYW5n
ZXMuCisgICAgICoKKyAgICAgKiBUaGUgdG9wIDE2LWJpdHMgZGVub3RlIHRoZSB0eXBlIG9mIHRo
ZSBlbmNvZGVkIEpTVmFsdWU6CisgICAgICoKKyAgICAgKiAgICAgUG9pbnRlciB7ICAwMDAwOlBQ
UFA6UFBQUDpQUFBQCisgICAgICogICAgICAgICAgICAgIC8gMDAwMToqKioqOioqKio6KioqKgor
ICAgICAqICAgICBEb3VibGUgIHsgICAgICAgICAuLi4KKyAgICAgKiAgICAgICAgICAgICAgXCBG
RkZFOioqKio6KioqKjoqKioqCisgICAgICogICAgIEludGVnZXIgeyAgRkZGRjowMDAwOklJSUk6
SUlJSQorICAgICAqCisgICAgICogVGhlIHNjaGVtZSB3ZSBoYXZlIGltcGxlbWVudGVkIGVuY29k
ZXMgZG91YmxlIHByZWNpc2lvbiB2YWx1ZXMgYnkgcGVyZm9ybWluZyBhCisgICAgICogNjQtYml0
IGludGVnZXIgYWRkaXRpb24gb2YgdGhlIHZhbHVlIDJeNDggdG8gdGhlIG51bWJlci4gQWZ0ZXIg
dGhpcyBtYW5pcHVsYXRpb24KKyAgICAgKiBubyBlbmNvZGVkIGRvdWJsZS1wcmVjaXNpb24gdmFs
dWUgd2lsbCBiZWdpbiB3aXRoIHRoZSBwYXR0ZXJuIDB4MDAwMCBvciAweEZGRkYuCisgICAgICog
VmFsdWVzIG11c3QgYmUgZGVjb2RlZCBieSByZXZlcnNpbmcgdGhpcyBvcGVyYXRpb24gYmVmb3Jl
IHN1YnNlcXVlbnQgZmxvYXRpbmcgcG9pbnQKKyAgICAgKiBvcGVyYXRpb25zIG15IGJlIHBlZm9y
bWVkLgorICAgICAqCisgICAgICogMzItYml0IHNpZ25lZCBpbnRlZ2VycyBhcmUgbWFya2VkIHdp
dGggdGhlIDE2LWJpdCB0YWcgMHhGRkZGLgorICAgICAqCisgICAgICogVGhlIHRhZyAweDAwMDAg
ZGVub3RlcyBhIHBvaW50ZXIsIG9yIGFub3RoZXIgZm9ybSBvZiB0YWdnZWQgaW1tZWRpYXRlLiBC
b29sZWFuLAorICAgICAqIG51bGwgYW5kIHVuZGVmaW5lZCB2YWx1ZXMgYXJlIHJlcHJlc2VudGVk
IGJ5IHNwZWNpZmljLCBpbnZhbGlkIHBvaW50ZXIgdmFsdWVzOgorICAgICAqCisgICAgICogICAg
IEZhbHNlOiAgICAgMHgwNgorICAgICAqICAgICBUcnVlOiAgICAgIDB4MDcKKyAgICAgKiAgICAg
VW5kZWZpbmVkOiAweDBhCisgICAgICogICAgIE51bGw6ICAgICAgMHgwMgorICAgICAqCisgICAg
ICogVGhlc2UgdmFsdWVzIGhhdmUgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOgorICAgICAqIC0g
Qml0IDEgKFRhZ0JpdFR5cGVPdGhlcikgaXMgc2V0IGZvciBhbGwgZm91ciB2YWx1ZXMsIGFsbG93
aW5nIHJlYWwgcG9pbnRlcnMgdG8gYmUKKyAgICAgKiAgIHF1aWNrbHkgZGlzdGluZ3Vpc2hlZCBm
cm9tIGFsbCBpbW1lZGlhdGUgdmFsdWVzLCBpbmNsdWRpbmcgdGhlc2UgaW52YWxpZCBwb2ludGVy
cy4KKyAgICAgKiAtIFdpdGggYml0IDMgaXMgbWFza2VkIG91dCAoVGFnQml0VW5kZWZpbmVkKSBV
bmRlZmluZWQgYW5kIE51bGwgc2hhcmUgdGhlCisgICAgICogICBzYW1lIHZhbHVlLCBhbGxvd2lu
ZyBudWxsICYgdW5kZWZpbmVkIHRvIGJlIHF1aWNrbHkgZGV0ZWN0ZWQuCisgICAgICoKKyAgICAg
KiBObyB2YWxpZCBKU1ZhbHVlIHdpbGwgaGF2ZSB0aGUgYml0IHBhdHRlcm4gMHgwLCB0aGlzIGlz
IHVzZWQgdG8gcmVwcmVzZW50IGFycmF5CisgICAgICogaG9sZXMsIGFuZCBhcyBhIEMrKyAnbm8g
dmFsdWUnIHJlc3VsdCAoZS5nLiBKU1ZhbHVlKCkgaGFzIGFuIGludGVybmFsIHZhbHVlIG9mIDAp
LgorICAgICAqLworCisgICAgLy8gVGhlc2UgdmFsdWVzIGFyZSAjZGVmaW5lcyBzaW5jZSB1c2lu
ZyBzdGF0aWMgY29uc3QgaW50ZWdlcnMgaGVyZSBpcyBhIH4xJSByZWdyZXNzaW9uIQorCisgICAg
Ly8gVGhpcyB2YWx1ZSBpcyAyXjQ4LCB1c2VkIHRvIGVuY29kZSBkb3VibGVzIHN1Y2ggdGhhdCB0
aGUgZW5jb2RlZCB2YWx1ZSB3aWxsIGJlZ2luCisgICAgLy8gd2l0aCBhIDE2LWJpdCBwYXR0ZXJu
IHdpdGhpbiB0aGUgcmFuZ2UgMHgwMDAxLi4weEZGRkUuCisgICAgI2RlZmluZSBEb3VibGVFbmNv
ZGVPZmZzZXQgMHgxMDAwMDAwMDAwMDAwbGwKKyAgICAvLyBJZiBhbGwgYml0cyBpbiB0aGUgbWFz
ayBhcmUgc2V0LCB0aGlzIGluZGljYXRlcyBhbiBpbnRlZ2VyIG51bWJlciwKKyAgICAvLyBpZiBh
bnkgYnV0IG5vdCBhbGwgYXJlIHNldCB0aGlzIHZhbHVlIGlzIGEgZG91YmxlIHByZWNpc2lvbiBu
dW1iZXIuCisgICAgI2RlZmluZSBUYWdUeXBlTnVtYmVyIDB4ZmZmZjAwMDAwMDAwMDAwMGxsCisK
KyAgICAvLyBBbGwgbm9uLW51bWVyaWMgKGJvb2wsIG51bGwsIHVuZGVmaW5lZCkgaW1tZWRpYXRl
cyBoYXZlIGJpdCAyIHNldC4KKyAgICAjZGVmaW5lIFRhZ0JpdFR5cGVPdGhlciAweDJsbAorICAg
ICNkZWZpbmUgVGFnQml0Qm9vbCAgICAgIDB4NGxsCisgICAgI2RlZmluZSBUYWdCaXRVbmRlZmlu
ZWQgMHg4bGwKKyAgICAvLyBDb21iaW5lZCBpbnRlZ2VyIHZhbHVlIGZvciBub24tbnVtZXJpYyBp
bW1lZGlhdGVzLgorICAgICNkZWZpbmUgVmFsdWVGYWxzZSAgICAgKFRhZ0JpdFR5cGVPdGhlciB8
IFRhZ0JpdEJvb2wgfCBmYWxzZSkKKyAgICAjZGVmaW5lIFZhbHVlVHJ1ZSAgICAgIChUYWdCaXRU
eXBlT3RoZXIgfCBUYWdCaXRCb29sIHwgdHJ1ZSkKKyAgICAjZGVmaW5lIFZhbHVlVW5kZWZpbmVk
IChUYWdCaXRUeXBlT3RoZXIgfCBUYWdCaXRVbmRlZmluZWQpCisgICAgI2RlZmluZSBWYWx1ZU51
bGwgICAgICAoVGFnQml0VHlwZU90aGVyKQorCisgICAgLy8gVGFnTWFzayBpcyB1c2VkIHRvIGNo
ZWNrIGZvciBhbGwgdHlwZXMgb2YgaW1tZWRpYXRlIHZhbHVlcyAoZWl0aGVyIG51bWJlciBvciAn
b3RoZXInKS4KKyAgICAjZGVmaW5lIFRhZ01hc2sgKFRhZ1R5cGVOdW1iZXIgfCBUYWdCaXRUeXBl
T3RoZXIpCisKKyAgICAvLyBUaGVzZSBzcGVjaWFsIHZhbHVlcyBhcmUgbmV2ZXIgdmlzaWJsZSB0
byBKYXZhU2NyaXB0IGNvZGU7IEVtcHR5IGlzIHVzZWQgdG8gcmVwcmVzZW50CisgICAgLy8gQXJy
YXkgaG9sZXMsIGFuZCBmb3IgdW5pbml0aWFsaXplZCBKU1ZhbHVlcy4gRGVsZXRlZCBpcyB1c2Vk
IGluIGhhc2ggdGFibGUgY29kZS4KKyAgICAvLyBUaGVzZSB2YWx1ZXMgd291bGQgbWFwIHRvIGNl
bGwgdHlwZXMgaW4gdGhlIEpTVmFsdWUgZW5jb2RpbmcsIGJ1dCBub3QgdmFsaWQgR0MgY2VsbAor
ICAgIC8vIHBvaW50ZXIgc2hvdWxkIGhhdmUgZWl0aGVyIG9mIHRoZXNlIHZhbHVlcyAoRW1wdHkg
aXMgbnVsbCwgZGVsZXRlZCBpcyBhdCBhbiBpbnZhbGlkCisgICAgLy8gYWxpZ25tZW50IGZvciBh
IEdDIGNlbGwsIGFuZCBpbiB0aGUgemVybyBwYWdlKS4KKyAgICAjZGVmaW5lIFZhbHVlRW1wdHkg
ICAweDBsbAorICAgICNkZWZpbmUgVmFsdWVEZWxldGVkIDB4NGxsCisjZW5kaWYKKworICAgIEVu
Y29kZWRWYWx1ZURlc2NyaXB0b3IgdTsKK307CisKK3R5cGVkZWYgSW50SGFzaDxFbmNvZGVkSlNW
YWx1ZT4gRW5jb2RlZEpTVmFsdWVIYXNoOworCisjaWYgVVNFKEpTVkFMVUUzMl82NCkKK3N0cnVj
dCBFbmNvZGVkSlNWYWx1ZUhhc2hUcmFpdHMgOiBIYXNoVHJhaXRzPEVuY29kZWRKU1ZhbHVlPiB7
CisgICAgc3RhdGljIGNvbnN0IGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IGZhbHNlOworICAgIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBlbXB0eVZhbHVlKCkgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KEpTVmFsdWUoKSk7IH0KKyAgICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoRW5j
b2RlZEpTVmFsdWUmIHNsb3QpIHsgc2xvdCA9IEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKEpTVmFs
dWU6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkpOyB9CisgICAgc3RhdGljIGJvb2wgaXNEZWxldGVk
VmFsdWUoRW5jb2RlZEpTVmFsdWUgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID09IEpTVmFsdWU6OmVu
Y29kZShKU1ZhbHVlKEpTVmFsdWU6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkpOyB9Cit9OworI2Vs
c2UKK3N0cnVjdCBFbmNvZGVkSlNWYWx1ZUhhc2hUcmFpdHMgOiBIYXNoVHJhaXRzPEVuY29kZWRK
U1ZhbHVlPiB7CisgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKEVuY29kZWRK
U1ZhbHVlJiBzbG90KSB7IHNsb3QgPSBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShKU1ZhbHVlOjpI
YXNoVGFibGVEZWxldGVkVmFsdWUpKTsgfQorICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVl
KEVuY29kZWRKU1ZhbHVlIHZhbHVlKSB7IHJldHVybiB2YWx1ZSA9PSBKU1ZhbHVlOjplbmNvZGUo
SlNWYWx1ZShKU1ZhbHVlOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpKTsgfQorfTsKKyNlbmRpZgor
Cit0eXBlZGVmIEhhc2hNYXA8RW5jb2RlZEpTVmFsdWUsIHVuc2lnbmVkLCBFbmNvZGVkSlNWYWx1
ZUhhc2gsIEVuY29kZWRKU1ZhbHVlSGFzaFRyYWl0cz4gSlNWYWx1ZU1hcDsKKworLy8gU3RhbmQt
YWxvbmUgaGVscGVyIGZ1bmN0aW9ucy4KK2lubGluZSBKU1ZhbHVlIGpzTnVsbCgpCit7CisgICAg
cmV0dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNOdWxsKTsKK30KKworaW5saW5lIEpTVmFsdWUganNV
bmRlZmluZWQoKQoreworICAgIHJldHVybiBKU1ZhbHVlKEpTVmFsdWU6OkpTVW5kZWZpbmVkKTsK
K30KKworaW5saW5lIEpTVmFsdWUganNCb29sZWFuKGJvb2wgYikKK3sKKyAgICByZXR1cm4gYiA/
IEpTVmFsdWUoSlNWYWx1ZTo6SlNUcnVlKSA6IEpTVmFsdWUoSlNWYWx1ZTo6SlNGYWxzZSk7Cit9
CisKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc0RvdWJsZU51bWJlcihkb3VibGUgZCkKK3sKKyAg
ICBBU1NFUlQoSlNWYWx1ZShKU1ZhbHVlOjpFbmNvZGVBc0RvdWJsZSwgZCkuaXNOdW1iZXIoKSk7
CisgICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1ZTo6RW5jb2RlQXNEb3VibGUsIGQpOworfQorCitB
TFdBWVNfSU5MSU5FIEpTVmFsdWUganNOdW1iZXIoZG91YmxlIGQpCit7CisgICAgQVNTRVJUKEpT
VmFsdWUoZCkuaXNOdW1iZXIoKSk7CisgICAgcmV0dXJuIEpTVmFsdWUoZCk7Cit9CisKK0FMV0FZ
U19JTkxJTkUgSlNWYWx1ZSBqc051bWJlcihjaGFyIGkpCit7CisgICAgcmV0dXJuIEpTVmFsdWUo
aSk7Cit9CisKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc051bWJlcih1bnNpZ25lZCBjaGFyIGkp
Cit7CisgICAgcmV0dXJuIEpTVmFsdWUoaSk7Cit9CisKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBq
c051bWJlcihzaG9ydCBpKQoreworICAgIHJldHVybiBKU1ZhbHVlKGkpOworfQorCitBTFdBWVNf
SU5MSU5FIEpTVmFsdWUganNOdW1iZXIodW5zaWduZWQgc2hvcnQgaSkKK3sKKyAgICByZXR1cm4g
SlNWYWx1ZShpKTsKK30KKworQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzTnVtYmVyKGludCBpKQor
eworICAgIHJldHVybiBKU1ZhbHVlKGkpOworfQorCitBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNO
dW1iZXIodW5zaWduZWQgaSkKK3sKKyAgICByZXR1cm4gSlNWYWx1ZShpKTsKK30KKworQUxXQVlT
X0lOTElORSBKU1ZhbHVlIGpzTnVtYmVyKGxvbmcgaSkKK3sKKyAgICByZXR1cm4gSlNWYWx1ZShp
KTsKK30KKworQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzTnVtYmVyKHVuc2lnbmVkIGxvbmcgaSkK
K3sKKyAgICByZXR1cm4gSlNWYWx1ZShpKTsKK30KKworQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpz
TnVtYmVyKGxvbmcgbG9uZyBpKQoreworICAgIHJldHVybiBKU1ZhbHVlKGkpOworfQorCitBTFdB
WVNfSU5MSU5FIEpTVmFsdWUganNOdW1iZXIodW5zaWduZWQgbG9uZyBsb25nIGkpCit7CisgICAg
cmV0dXJuIEpTVmFsdWUoaSk7Cit9CisKK2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgSlNW
YWx1ZSBhLCBjb25zdCBKU0NlbGwqIGIpIHsgcmV0dXJuIGEgPT0gSlNWYWx1ZShiKTsgfQoraW5s
aW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBKU0NlbGwqIGEsIGNvbnN0IEpTVmFsdWUgYikgeyBy
ZXR1cm4gSlNWYWx1ZShhKSA9PSBiOyB9CisKK2lubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3Qg
SlNWYWx1ZSBhLCBjb25zdCBKU0NlbGwqIGIpIHsgcmV0dXJuIGEgIT0gSlNWYWx1ZShiKTsgfQor
aW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBKU0NlbGwqIGEsIGNvbnN0IEpTVmFsdWUgYikg
eyByZXR1cm4gSlNWYWx1ZShhKSAhPSBiOyB9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5k
aWYgLy8gSlNWYWx1ZV9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NK
U1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
SlNWYWx1ZS5oCShyZXZpc2lvbiAxNDAxOTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NKU1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwLDggKzIwLDggQEAKICAqCiAg
Ki8KIAotI2lmbmRlZiBKU1ZhbHVlX2gKLSNkZWZpbmUgSlNWYWx1ZV9oCisjaWZuZGVmIEpTQ0pT
VmFsdWVfaAorI2RlZmluZSBKU0NKU1ZhbHVlX2gKIAogI2luY2x1ZGUgPG1hdGguaD4KICNpbmNs
dWRlIDxzdGRkZWYuaD4gLy8gZm9yIHNpemVfdApAQCAtMjQ1LDEyICsyNDUsMTIgQEAgcHVibGlj
OgogCiAgICAgSlNPYmplY3QqIHRvVGhpc09iamVjdChFeGVjU3RhdGUqKSBjb25zdDsKIAotICAg
IHN0YXRpYyBib29sIGVxdWFsKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2
Mik7Ci0gICAgc3RhdGljIGJvb2wgZXF1YWxTbG93Q2FzZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgdjEsIEpTVmFsdWUgdjIpOwotICAgIHN0YXRpYyBib29sIGVxdWFsU2xvd0Nhc2VJbmxpbmUo
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKTsKLSAgICBzdGF0aWMgYm9v
bCBzdHJpY3RFcXVhbChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpOwot
ICAgIHN0YXRpYyBib29sIHN0cmljdEVxdWFsU2xvd0Nhc2UoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIHYxLCBKU1ZhbHVlIHYyKTsKLSAgICBzdGF0aWMgYm9vbCBzdHJpY3RFcXVhbFNsb3dDYXNl
SW5saW5lKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2Mik7CisgICAgc3Rh
dGljIGJvb2wgZXF1YWwoRXhlY1N0YXRlKiwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2Mik7CisgICAg
c3RhdGljIGJvb2wgZXF1YWxTbG93Q2FzZShFeGVjU3RhdGUqLCBKU1ZhbHVlIHYxLCBKU1ZhbHVl
IHYyKTsKKyAgICBzdGF0aWMgYm9vbCBlcXVhbFNsb3dDYXNlSW5saW5lKEV4ZWNTdGF0ZSosIEpT
VmFsdWUgdjEsIEpTVmFsdWUgdjIpOworICAgIHN0YXRpYyBib29sIHN0cmljdEVxdWFsKEV4ZWNT
dGF0ZSosIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpOworICAgIHN0YXRpYyBib29sIHN0cmljdEVx
dWFsU2xvd0Nhc2UoRXhlY1N0YXRlKiwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2Mik7CisgICAgc3Rh
dGljIGJvb2wgc3RyaWN0RXF1YWxTbG93Q2FzZUlubGluZShFeGVjU3RhdGUqLCBKU1ZhbHVlIHYx
LCBKU1ZhbHVlIHYyKTsKIAogICAgIGJvb2wgaXNDZWxsKCkgY29uc3Q7CiAgICAgSlNDZWxsKiBh
c0NlbGwoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pT
VmFsdWVJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDSlNWYWx1ZUlubGluZXMuaAkocmV2aXNpb24gMTQwMTk2KQkoZnJvbSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlSW5saW5lcy5oOjE0MDE5NikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw3OTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2lmbmRlZiBKU1ZhbHVlSW5saW5lc19oCisjZGVmaW5lIEpTVmFsdWVJ
bmxpbmVzX2gKKworI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0Nl
bGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTVmFsdWUu
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKK0FMV0FZU19JTkxJTkUgaW50MzJfdCBKU1ZhbHVlOjp0
b0ludDMyKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICBpZiAoaXNJbnQzMigpKQorICAg
ICAgICByZXR1cm4gYXNJbnQzMigpOworICAgIHJldHVybiBKU0M6OnRvSW50MzIodG9OdW1iZXIo
ZXhlYykpOworfQorCitpbmxpbmUgdWludDMyX3QgSlNWYWx1ZTo6dG9VSW50MzIoRXhlY1N0YXRl
KiBleGVjKSBjb25zdAoreworICAgIC8vIFNlZSBjb21tZW50IG9uIEpTQzo6dG9VSW50MzIsIGFi
b3ZlLgorICAgIHJldHVybiB0b0ludDMyKGV4ZWMpOworfQorCitpbmxpbmUgYm9vbCBKU1ZhbHVl
Ojppc1VJbnQzMigpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzSW50MzIoKSAmJiBhc0ludDMyKCkg
Pj0gMDsKK30KKworaW5saW5lIHVpbnQzMl90IEpTVmFsdWU6OmFzVUludDMyKCkgY29uc3QKK3sK
KyAgICBBU1NFUlQoaXNVSW50MzIoKSk7CisgICAgcmV0dXJuIGFzSW50MzIoKTsKK30KKworaW5s
aW5lIGRvdWJsZSBKU1ZhbHVlOjphc051bWJlcigpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzTnVt
YmVyKCkpOworICAgIHJldHVybiBpc0ludDMyKCkgPyBhc0ludDMyKCkgOiBhc0RvdWJsZSgpOwor
fQorCitpbmxpbmUgSlNWYWx1ZSBqc05hTigpCit7CisgICAgcmV0dXJuIEpTVmFsdWUoUU5hTik7
Cit9CisKK2lubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKGNoYXIgaSkKK3sKKyAgICAqdGhpcyA9IEpT
VmFsdWUoc3RhdGljX2Nhc3Q8aW50MzJfdD4oaSkpOworfQorCitpbmxpbmUgSlNWYWx1ZTo6SlNW
YWx1ZSh1bnNpZ25lZCBjaGFyIGkpCit7CisgICAgKnRoaXMgPSBKU1ZhbHVlKHN0YXRpY19jYXN0
PGludDMyX3Q+KGkpKTsKK30KKworaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoc2hvcnQgaSkKK3sK
KyAgICAqdGhpcyA9IEpTVmFsdWUoc3RhdGljX2Nhc3Q8aW50MzJfdD4oaSkpOworfQorCitpbmxp
bmUgSlNWYWx1ZTo6SlNWYWx1ZSh1bnNpZ25lZCBzaG9ydCBpKQoreworICAgICp0aGlzID0gSlNW
YWx1ZShzdGF0aWNfY2FzdDxpbnQzMl90PihpKSk7Cit9CisKK2lubGluZSBKU1ZhbHVlOjpKU1Zh
bHVlKHVuc2lnbmVkIGkpCit7CisgICAgaWYgKHN0YXRpY19jYXN0PGludDMyX3Q+KGkpIDwgMCkg
eworICAgICAgICAqdGhpcyA9IEpTVmFsdWUoRW5jb2RlQXNEb3VibGUsIHN0YXRpY19jYXN0PGRv
dWJsZT4oaSkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgICp0aGlzID0gSlNWYWx1ZShz
dGF0aWNfY2FzdDxpbnQzMl90PihpKSk7Cit9CisKK2lubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKGxv
bmcgaSkKK3sKKyAgICBpZiAoc3RhdGljX2Nhc3Q8aW50MzJfdD4oaSkgIT0gaSkgeworICAgICAg
ICAqdGhpcyA9IEpTVmFsdWUoRW5jb2RlQXNEb3VibGUsIHN0YXRpY19jYXN0PGRvdWJsZT4oaSkp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgICp0aGlzID0gSlNWYWx1ZShzdGF0aWNfY2Fz
dDxpbnQzMl90PihpKSk7Cit9CisKK2lubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKHVuc2lnbmVkIGxv
bmcgaSkKK3sKKyAgICBpZiAoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGkpICE9IGkpIHsKKyAgICAg
ICAgKnRoaXMgPSBKU1ZhbHVlKEVuY29kZUFzRG91YmxlLCBzdGF0aWNfY2FzdDxkb3VibGU+KGkp
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAqdGhpcyA9IEpTVmFsdWUoc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KGkpKTsKK30KKworaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUobG9uZyBsb25n
IGkpCit7CisgICAgaWYgKHN0YXRpY19jYXN0PGludDMyX3Q+KGkpICE9IGkpIHsKKyAgICAgICAg
KnRoaXMgPSBKU1ZhbHVlKEVuY29kZUFzRG91YmxlLCBzdGF0aWNfY2FzdDxkb3VibGU+KGkpKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAqdGhpcyA9IEpTVmFsdWUoc3RhdGljX2Nhc3Q8
aW50MzJfdD4oaSkpOworfQorCitpbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZSh1bnNpZ25lZCBsb25n
IGxvbmcgaSkKK3sKKyAgICBpZiAoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGkpICE9IGkpIHsKKyAg
ICAgICAgKnRoaXMgPSBKU1ZhbHVlKEVuY29kZUFzRG91YmxlLCBzdGF0aWNfY2FzdDxkb3VibGU+
KGkpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAqdGhpcyA9IEpTVmFsdWUoc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KGkpKTsKK30KKworaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoZG91Ymxl
IGQpCit7CisgICAgY29uc3QgaW50MzJfdCBhc0ludDMyID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4o
ZCk7CisgICAgaWYgKGFzSW50MzIgIT0gZCB8fCAoIWFzSW50MzIgJiYgc2lnbmJpdChkKSkpIHsg
Ly8gdHJ1ZSBmb3IgLTAuMAorICAgICAgICAqdGhpcyA9IEpTVmFsdWUoRW5jb2RlQXNEb3VibGUs
IGQpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgICp0aGlzID0gSlNWYWx1ZShzdGF0aWNf
Y2FzdDxpbnQzMl90PihkKSk7Cit9CisKK2lubGluZSBFbmNvZGVkSlNWYWx1ZSBKU1ZhbHVlOjpl
bmNvZGUoSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gdmFsdWUudS5hc0ludDY0OworfQor
CitpbmxpbmUgSlNWYWx1ZSBKU1ZhbHVlOjpkZWNvZGUoRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEpT
VmFsdWUpCit7CisgICAgSlNWYWx1ZSB2OworICAgIHYudS5hc0ludDY0ID0gZW5jb2RlZEpTVmFs
dWU7CisgICAgcmV0dXJuIHY7Cit9CisKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQoraW5saW5lIEpT
VmFsdWU6OkpTVmFsdWUoKQoreworICAgIHUuYXNCaXRzLnRhZyA9IEVtcHR5VmFsdWVUYWc7Cisg
ICAgdS5hc0JpdHMucGF5bG9hZCA9IDA7Cit9CisKK2lubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKEpT
TnVsbFRhZykKK3sKKyAgICB1LmFzQml0cy50YWcgPSBOdWxsVGFnOworICAgIHUuYXNCaXRzLnBh
eWxvYWQgPSAwOworfQorICAgIAoraW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoSlNVbmRlZmluZWRU
YWcpCit7CisgICAgdS5hc0JpdHMudGFnID0gVW5kZWZpbmVkVGFnOworICAgIHUuYXNCaXRzLnBh
eWxvYWQgPSAwOworfQorICAgIAoraW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoSlNUcnVlVGFnKQor
eworICAgIHUuYXNCaXRzLnRhZyA9IEJvb2xlYW5UYWc7CisgICAgdS5hc0JpdHMucGF5bG9hZCA9
IDE7Cit9CisgICAgCitpbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShKU0ZhbHNlVGFnKQoreworICAg
IHUuYXNCaXRzLnRhZyA9IEJvb2xlYW5UYWc7CisgICAgdS5hc0JpdHMucGF5bG9hZCA9IDA7Cit9
CisKK2lubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKEhhc2hUYWJsZURlbGV0ZWRWYWx1ZVRhZykKK3sK
KyAgICB1LmFzQml0cy50YWcgPSBEZWxldGVkVmFsdWVUYWc7CisgICAgdS5hc0JpdHMucGF5bG9h
ZCA9IDA7Cit9CisKK2lubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKEpTQ2VsbCogcHRyKQoreworICAg
IGlmIChwdHIpCisgICAgICAgIHUuYXNCaXRzLnRhZyA9IENlbGxUYWc7CisgICAgZWxzZQorICAg
ICAgICB1LmFzQml0cy50YWcgPSBFbXB0eVZhbHVlVGFnOworICAgIHUuYXNCaXRzLnBheWxvYWQg
PSByZWludGVycHJldF9jYXN0PGludDMyX3Q+KHB0cik7Cit9CisKK2lubGluZSBKU1ZhbHVlOjpK
U1ZhbHVlKGNvbnN0IEpTQ2VsbCogcHRyKQoreworICAgIGlmIChwdHIpCisgICAgICAgIHUuYXNC
aXRzLnRhZyA9IENlbGxUYWc7CisgICAgZWxzZQorICAgICAgICB1LmFzQml0cy50YWcgPSBFbXB0
eVZhbHVlVGFnOworICAgIHUuYXNCaXRzLnBheWxvYWQgPSByZWludGVycHJldF9jYXN0PGludDMy
X3Q+KGNvbnN0X2Nhc3Q8SlNDZWxsKj4ocHRyKSk7Cit9CisKK2lubGluZSBKU1ZhbHVlOjpvcGVy
YXRvciBib29sKCkgY29uc3QKK3sKKyAgICBBU1NFUlQodGFnKCkgIT0gRGVsZXRlZFZhbHVlVGFn
KTsKKyAgICByZXR1cm4gdGFnKCkgIT0gRW1wdHlWYWx1ZVRhZzsKK30KKworaW5saW5lIGJvb2wg
SlNWYWx1ZTo6b3BlcmF0b3I9PShjb25zdCBKU1ZhbHVlJiBvdGhlcikgY29uc3QKK3sKKyAgICBy
ZXR1cm4gdS5hc0ludDY0ID09IG90aGVyLnUuYXNJbnQ2NDsKK30KKworaW5saW5lIGJvb2wgSlNW
YWx1ZTo6b3BlcmF0b3IhPShjb25zdCBKU1ZhbHVlJiBvdGhlcikgY29uc3QKK3sKKyAgICByZXR1
cm4gdS5hc0ludDY0ICE9IG90aGVyLnUuYXNJbnQ2NDsKK30KKworaW5saW5lIGJvb2wgSlNWYWx1
ZTo6aXNFbXB0eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRhZygpID09IEVtcHR5VmFsdWVUYWc7
Cit9CisKK2lubGluZSBib29sIEpTVmFsdWU6OmlzVW5kZWZpbmVkKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gdGFnKCkgPT0gVW5kZWZpbmVkVGFnOworfQorCitpbmxpbmUgYm9vbCBKU1ZhbHVlOjpp
c051bGwoKSBjb25zdAoreworICAgIHJldHVybiB0YWcoKSA9PSBOdWxsVGFnOworfQorCitpbmxp
bmUgYm9vbCBKU1ZhbHVlOjppc1VuZGVmaW5lZE9yTnVsbCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IGlzVW5kZWZpbmVkKCkgfHwgaXNOdWxsKCk7Cit9CisKK2lubGluZSBib29sIEpTVmFsdWU6Omlz
Q2VsbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRhZygpID09IENlbGxUYWc7Cit9CisKK2lubGlu
ZSBib29sIEpTVmFsdWU6OmlzSW50MzIoKSBjb25zdAoreworICAgIHJldHVybiB0YWcoKSA9PSBJ
bnQzMlRhZzsKK30KKworaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNEb3VibGUoKSBjb25zdAorewor
ICAgIHJldHVybiB0YWcoKSA8IExvd2VzdFRhZzsKK30KKworaW5saW5lIGJvb2wgSlNWYWx1ZTo6
aXNUcnVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gdGFnKCkgPT0gQm9vbGVhblRhZyAmJiBwYXls
b2FkKCk7Cit9CisKK2lubGluZSBib29sIEpTVmFsdWU6OmlzRmFsc2UoKSBjb25zdAoreworICAg
IHJldHVybiB0YWcoKSA9PSBCb29sZWFuVGFnICYmICFwYXlsb2FkKCk7Cit9CisKK2lubGluZSB1
aW50MzJfdCBKU1ZhbHVlOjp0YWcoKSBjb25zdAoreworICAgIHJldHVybiB1LmFzQml0cy50YWc7
Cit9CisgICAgCitpbmxpbmUgaW50MzJfdCBKU1ZhbHVlOjpwYXlsb2FkKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gdS5hc0JpdHMucGF5bG9hZDsKK30KKyAgICAKK2lubGluZSBpbnQzMl90IEpTVmFs
dWU6OmFzSW50MzIoKSBjb25zdAoreworICAgIEFTU0VSVChpc0ludDMyKCkpOworICAgIHJldHVy
biB1LmFzQml0cy5wYXlsb2FkOworfQorICAgIAoraW5saW5lIGRvdWJsZSBKU1ZhbHVlOjphc0Rv
dWJsZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzRG91YmxlKCkpOworICAgIHJldHVybiB1LmFz
RG91YmxlOworfQorICAgIAorQUxXQVlTX0lOTElORSBKU0NlbGwqIEpTVmFsdWU6OmFzQ2VsbCgp
IGNvbnN0Cit7CisgICAgQVNTRVJUKGlzQ2VsbCgpKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxKU0NlbGwqPih1LmFzQml0cy5wYXlsb2FkKTsKK30KKworQUxXQVlTX0lOTElORSBKU1Zh
bHVlOjpKU1ZhbHVlKEVuY29kZUFzRG91YmxlVGFnLCBkb3VibGUgZCkKK3sKKyAgICB1LmFzRG91
YmxlID0gZDsKK30KKworaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoaW50IGkpCit7CisgICAgdS5h
c0JpdHMudGFnID0gSW50MzJUYWc7CisgICAgdS5hc0JpdHMucGF5bG9hZCA9IGk7Cit9CisKKyNp
ZiBFTkFCTEUoTExJTlRfQ19MT09QKQoraW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoaW50MzJfdCB0
YWcsIGludDMyX3QgcGF5bG9hZCkKK3sKKyAgICB1LmFzQml0cy50YWcgPSB0YWc7CisgICAgdS5h
c0JpdHMucGF5bG9hZCA9IHBheWxvYWQ7Cit9CisjZW5kaWYKKworaW5saW5lIGJvb2wgSlNWYWx1
ZTo6aXNOdW1iZXIoKSBjb25zdAoreworICAgIHJldHVybiBpc0ludDMyKCkgfHwgaXNEb3VibGUo
KTsKK30KKworaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNCb29sZWFuKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gaXNUcnVlKCkgfHwgaXNGYWxzZSgpOworfQorCitpbmxpbmUgYm9vbCBKU1ZhbHVlOjph
c0Jvb2xlYW4oKSBjb25zdAoreworICAgIEFTU0VSVChpc0Jvb2xlYW4oKSk7CisgICAgcmV0dXJu
IHBheWxvYWQoKTsKK30KKworI2Vsc2UgLy8gIVVTRShKU1ZBTFVFMzJfNjQpIGkuZS4gVVNFKEpT
VkFMVUU2NCkKKworLy8gMHgwIGNhbiBuZXZlciBvY2N1ciBuYXR1cmFsbHkgYmVjYXVzZSBpdCBo
YXMgYSB0YWcgb2YgMDAsIGluZGljYXRpbmcgYSBwb2ludGVyIHZhbHVlLCBidXQgYSBwYXlsb2Fk
IG9mIDB4MCwgd2hpY2ggaXMgaW4gdGhlIChpbnZhbGlkKSB6ZXJvIHBhZ2UuCitpbmxpbmUgSlNW
YWx1ZTo6SlNWYWx1ZSgpCit7CisgICAgdS5hc0ludDY0ID0gVmFsdWVFbXB0eTsKK30KKworLy8g
MHg0IGNhbiBuZXZlciBvY2N1ciBuYXR1cmFsbHkgYmVjYXVzZSBpdCBoYXMgYSB0YWcgb2YgMDAs
IGluZGljYXRpbmcgYSBwb2ludGVyIHZhbHVlLCBidXQgYSBwYXlsb2FkIG9mIDB4NCwgd2hpY2gg
aXMgaW4gdGhlIChpbnZhbGlkKSB6ZXJvIHBhZ2UuCitpbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShI
YXNoVGFibGVEZWxldGVkVmFsdWVUYWcpCit7CisgICAgdS5hc0ludDY0ID0gVmFsdWVEZWxldGVk
OworfQorCitpbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShKU0NlbGwqIHB0cikKK3sKKyAgICB1LmFz
SW50NjQgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4ocHRyKTsKK30KKworaW5saW5lIEpT
VmFsdWU6OkpTVmFsdWUoY29uc3QgSlNDZWxsKiBwdHIpCit7CisgICAgdS5hc0ludDY0ID0gcmVp
bnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGNvbnN0X2Nhc3Q8SlNDZWxsKj4ocHRyKSk7Cit9CisK
K2lubGluZSBKU1ZhbHVlOjpvcGVyYXRvciBib29sKCkgY29uc3QKK3sKKyAgICByZXR1cm4gdS5h
c0ludDY0OworfQorCitpbmxpbmUgYm9vbCBKU1ZhbHVlOjpvcGVyYXRvcj09KGNvbnN0IEpTVmFs
dWUmIG90aGVyKSBjb25zdAoreworICAgIHJldHVybiB1LmFzSW50NjQgPT0gb3RoZXIudS5hc0lu
dDY0OworfQorCitpbmxpbmUgYm9vbCBKU1ZhbHVlOjpvcGVyYXRvciE9KGNvbnN0IEpTVmFsdWUm
IG90aGVyKSBjb25zdAoreworICAgIHJldHVybiB1LmFzSW50NjQgIT0gb3RoZXIudS5hc0ludDY0
OworfQorCitpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0VtcHR5KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gdS5hc0ludDY0ID09IFZhbHVlRW1wdHk7Cit9CisKK2lubGluZSBib29sIEpTVmFsdWU6Omlz
VW5kZWZpbmVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gYXNWYWx1ZSgpID09IEpTVmFsdWUoSlNV
bmRlZmluZWQpOworfQorCitpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc051bGwoKSBjb25zdAorewor
ICAgIHJldHVybiBhc1ZhbHVlKCkgPT0gSlNWYWx1ZShKU051bGwpOworfQorCitpbmxpbmUgYm9v
bCBKU1ZhbHVlOjppc1RydWUoKSBjb25zdAoreworICAgIHJldHVybiBhc1ZhbHVlKCkgPT0gSlNW
YWx1ZShKU1RydWUpOworfQorCitpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0ZhbHNlKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gYXNWYWx1ZSgpID09IEpTVmFsdWUoSlNGYWxzZSk7Cit9CisKK2lubGlu
ZSBib29sIEpTVmFsdWU6OmFzQm9vbGVhbigpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzQm9vbGVh
bigpKTsKKyAgICByZXR1cm4gYXNWYWx1ZSgpID09IEpTVmFsdWUoSlNUcnVlKTsKK30KKworaW5s
aW5lIGludDMyX3QgSlNWYWx1ZTo6YXNJbnQzMigpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzSW50
MzIoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludDMyX3Q+KHUuYXNJbnQ2NCk7Cit9CisK
K2lubGluZSBib29sIEpTVmFsdWU6OmlzRG91YmxlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaXNO
dW1iZXIoKSAmJiAhaXNJbnQzMigpOworfQorCitpbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShKU051
bGxUYWcpCit7CisgICAgdS5hc0ludDY0ID0gVmFsdWVOdWxsOworfQorICAgIAoraW5saW5lIEpT
VmFsdWU6OkpTVmFsdWUoSlNVbmRlZmluZWRUYWcpCit7CisgICAgdS5hc0ludDY0ID0gVmFsdWVV
bmRlZmluZWQ7Cit9CisKK2lubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKEpTVHJ1ZVRhZykKK3sKKyAg
ICB1LmFzSW50NjQgPSBWYWx1ZVRydWU7Cit9CisKK2lubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKEpT
RmFsc2VUYWcpCit7CisgICAgdS5hc0ludDY0ID0gVmFsdWVGYWxzZTsKK30KKworaW5saW5lIGJv
b2wgSlNWYWx1ZTo6aXNVbmRlZmluZWRPck51bGwoKSBjb25zdAoreworICAgIC8vIFVuZGVmaW5l
ZCBhbmQgbnVsbCBzaGFyZSB0aGUgc2FtZSB2YWx1ZSwgYmFyIHRoZSAndW5kZWZpbmVkJyBiaXQg
aW4gdGhlIGV4dGVuZGVkIHRhZy4KKyAgICByZXR1cm4gKHUuYXNJbnQ2NCAmIH5UYWdCaXRVbmRl
ZmluZWQpID09IFZhbHVlTnVsbDsKK30KKworaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNCb29sZWFu
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gKHUuYXNJbnQ2NCAmIH4xKSA9PSBWYWx1ZUZhbHNlOwor
fQorCitpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0NlbGwoKSBjb25zdAoreworICAgIHJldHVybiAh
KHUuYXNJbnQ2NCAmIFRhZ01hc2spOworfQorCitpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0ludDMy
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gKHUuYXNJbnQ2NCAmIFRhZ1R5cGVOdW1iZXIpID09IFRh
Z1R5cGVOdW1iZXI7Cit9CisKK2lubGluZSBpbnQ2NF90IHJlaW50ZXJwcmV0RG91YmxlVG9JbnQ2
NChkb3VibGUgdmFsdWUpCit7CisgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxpbnQ2NF90Pih2YWx1
ZSk7Cit9CitpbmxpbmUgZG91YmxlIHJlaW50ZXJwcmV0SW50NjRUb0RvdWJsZShpbnQ2NF90IHZh
bHVlKQoreworICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8ZG91YmxlPih2YWx1ZSk7Cit9CisKK0FM
V0FZU19JTkxJTkUgSlNWYWx1ZTo6SlNWYWx1ZShFbmNvZGVBc0RvdWJsZVRhZywgZG91YmxlIGQp
Cit7CisgICAgdS5hc0ludDY0ID0gcmVpbnRlcnByZXREb3VibGVUb0ludDY0KGQpICsgRG91Ymxl
RW5jb2RlT2Zmc2V0OworfQorCitpbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShpbnQgaSkKK3sKKyAg
ICB1LmFzSW50NjQgPSBUYWdUeXBlTnVtYmVyIHwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGkpOwor
fQorCitpbmxpbmUgZG91YmxlIEpTVmFsdWU6OmFzRG91YmxlKCkgY29uc3QKK3sKKyAgICBBU1NF
UlQoaXNEb3VibGUoKSk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0SW50NjRUb0RvdWJsZSh1LmFz
SW50NjQgLSBEb3VibGVFbmNvZGVPZmZzZXQpOworfQorCitpbmxpbmUgYm9vbCBKU1ZhbHVlOjpp
c051bWJlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHUuYXNJbnQ2NCAmIFRhZ1R5cGVOdW1iZXI7
Cit9CisKK0FMV0FZU19JTkxJTkUgSlNDZWxsKiBKU1ZhbHVlOjphc0NlbGwoKSBjb25zdAorewor
ICAgIEFTU0VSVChpc0NlbGwoKSk7CisgICAgcmV0dXJuIHUucHRyOworfQorCisjZW5kaWYgLy8g
VVNFKEpTVkFMVUU2NCkKKworaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNTdHJpbmcoKSBjb25zdAor
eworICAgIHJldHVybiBpc0NlbGwoKSAmJiBhc0NlbGwoKS0+aXNTdHJpbmcoKTsKK30KKworaW5s
aW5lIGJvb2wgSlNWYWx1ZTo6aXNQcmltaXRpdmUoKSBjb25zdAoreworICAgIHJldHVybiAhaXND
ZWxsKCkgfHwgYXNDZWxsKCktPmlzU3RyaW5nKCk7Cit9CisKK2lubGluZSBib29sIEpTVmFsdWU6
OmlzR2V0dGVyU2V0dGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaXNDZWxsKCkgJiYgYXNDZWxs
KCktPmlzR2V0dGVyU2V0dGVyKCk7Cit9CisKK2lubGluZSBib29sIEpTVmFsdWU6OmlzT2JqZWN0
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gaXNDZWxsKCkgJiYgYXNDZWxsKCktPmlzT2JqZWN0KCk7
Cit9CisKK2lubGluZSBib29sIEpTVmFsdWU6OmdldFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIFN0
cmluZyYgcykgY29uc3QKK3sKKyAgICByZXR1cm4gaXNDZWxsKCkgJiYgYXNDZWxsKCktPmdldFN0
cmluZyhleGVjLCBzKTsKK30KKworaW5saW5lIFN0cmluZyBKU1ZhbHVlOjpnZXRTdHJpbmcoRXhl
Y1N0YXRlKiBleGVjKSBjb25zdAoreworICAgIHJldHVybiBpc0NlbGwoKSA/IGFzQ2VsbCgpLT5n
ZXRTdHJpbmcoZXhlYykgOiBTdHJpbmcoKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEJhc2U+
IFN0cmluZyBIYW5kbGVDb252ZXJ0ZXI8QmFzZSwgVW5rbm93bj46OmdldFN0cmluZyhFeGVjU3Rh
dGUqIGV4ZWMpIGNvbnN0Cit7CisgICAgcmV0dXJuIGpzVmFsdWUoKS5nZXRTdHJpbmcoZXhlYyk7
Cit9CisKK2lubGluZSBKU09iamVjdCogSlNWYWx1ZTo6Z2V0T2JqZWN0KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gaXNDZWxsKCkgPyBhc0NlbGwoKS0+Z2V0T2JqZWN0KCkgOiAwOworfQorCitBTFdB
WVNfSU5MSU5FIGJvb2wgSlNWYWx1ZTo6Z2V0VUludDMyKHVpbnQzMl90JiB2KSBjb25zdAorewor
ICAgIGlmIChpc0ludDMyKCkpIHsKKyAgICAgICAgaW50MzJfdCBpID0gYXNJbnQzMigpOworICAg
ICAgICB2ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGkpOworICAgICAgICByZXR1cm4gaSA+PSAw
OworICAgIH0KKyAgICBpZiAoaXNEb3VibGUoKSkgeworICAgICAgICBkb3VibGUgZCA9IGFzRG91
YmxlKCk7CisgICAgICAgIHYgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZCk7CisgICAgICAgIHJl
dHVybiB2ID09IGQ7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworaW5saW5lIEpTVmFs
dWUgSlNWYWx1ZTo6dG9QcmltaXRpdmUoRXhlY1N0YXRlKiBleGVjLCBQcmVmZXJyZWRQcmltaXRp
dmVUeXBlIHByZWZlcnJlZFR5cGUpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzQ2VsbCgpID8gYXND
ZWxsKCktPnRvUHJpbWl0aXZlKGV4ZWMsIHByZWZlcnJlZFR5cGUpIDogYXNWYWx1ZSgpOworfQor
CitpbmxpbmUgYm9vbCBKU1ZhbHVlOjpnZXRQcmltaXRpdmVOdW1iZXIoRXhlY1N0YXRlKiBleGVj
LCBkb3VibGUmIG51bWJlciwgSlNWYWx1ZSYgdmFsdWUpCit7CisgICAgaWYgKGlzSW50MzIoKSkg
eworICAgICAgICBudW1iZXIgPSBhc0ludDMyKCk7CisgICAgICAgIHZhbHVlID0gKnRoaXM7Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBpZiAoaXNEb3VibGUoKSkgeworICAgICAg
ICBudW1iZXIgPSBhc0RvdWJsZSgpOworICAgICAgICB2YWx1ZSA9ICp0aGlzOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgaWYgKGlzQ2VsbCgpKQorICAgICAgICByZXR1cm4gYXND
ZWxsKCktPmdldFByaW1pdGl2ZU51bWJlcihleGVjLCBudW1iZXIsIHZhbHVlKTsKKyAgICBpZiAo
aXNUcnVlKCkpIHsKKyAgICAgICAgbnVtYmVyID0gMS4wOworICAgICAgICB2YWx1ZSA9ICp0aGlz
OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgaWYgKGlzRmFsc2UoKSB8fCBpc051
bGwoKSkgeworICAgICAgICBudW1iZXIgPSAwLjA7CisgICAgICAgIHZhbHVlID0gKnRoaXM7Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBBU1NFUlQoaXNVbmRlZmluZWQoKSk7Cisg
ICAgbnVtYmVyID0gUU5hTjsKKyAgICB2YWx1ZSA9ICp0aGlzOworICAgIHJldHVybiB0cnVlOwor
fQorCitBTFdBWVNfSU5MSU5FIGRvdWJsZSBKU1ZhbHVlOjp0b051bWJlcihFeGVjU3RhdGUqIGV4
ZWMpIGNvbnN0Cit7CisgICAgaWYgKGlzSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIGFzSW50MzIo
KTsKKyAgICBpZiAoaXNEb3VibGUoKSkKKyAgICAgICAgcmV0dXJuIGFzRG91YmxlKCk7CisgICAg
cmV0dXJuIHRvTnVtYmVyU2xvd0Nhc2UoZXhlYyk7Cit9CisKK2lubGluZSBKU09iamVjdCogSlNW
YWx1ZTo6dG9PYmplY3QoRXhlY1N0YXRlKiBleGVjKSBjb25zdAoreworICAgIHJldHVybiBpc0Nl
bGwoKSA/IGFzQ2VsbCgpLT50b09iamVjdChleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCkpIDogdG9PYmplY3RTbG93Q2FzZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkp
OworfQorCitpbmxpbmUgSlNPYmplY3QqIEpTVmFsdWU6OnRvT2JqZWN0KEV4ZWNTdGF0ZSogZXhl
YywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKK3sKKyAgICByZXR1cm4gaXND
ZWxsKCkgPyBhc0NlbGwoKS0+dG9PYmplY3QoZXhlYywgZ2xvYmFsT2JqZWN0KSA6IHRvT2JqZWN0
U2xvd0Nhc2UoZXhlYywgZ2xvYmFsT2JqZWN0KTsKK30KKworaW5saW5lIGJvb2wgSlNWYWx1ZTo6
aXNGdW5jdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzQ2VsbCgpICYmIChhc0NlbGwoKS0+
aW5oZXJpdHMoJkpTRnVuY3Rpb246OnNfaW5mbykgfHwgYXNDZWxsKCktPmluaGVyaXRzKCZJbnRl
cm5hbEZ1bmN0aW9uOjpzX2luZm8pKTsKK30KKworLy8gdGhpcyBtZXRob2QgaXMgaGVyZSB0byBi
ZSBhZnRlciB0aGUgaW5saW5lIGRlY2xhcmF0aW9uIG9mIEpTQ2VsbDo6aW5oZXJpdHMKK2lubGlu
ZSBib29sIEpTVmFsdWU6OmluaGVyaXRzKGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKSBjb25z
dAoreworICAgIHJldHVybiBpc0NlbGwoKSAmJiBhc0NlbGwoKS0+aW5oZXJpdHMoY2xhc3NJbmZv
KTsKK30KKworaW5saW5lIEpTT2JqZWN0KiBKU1ZhbHVlOjp0b1RoaXNPYmplY3QoRXhlY1N0YXRl
KiBleGVjKSBjb25zdAoreworICAgIHJldHVybiBpc0NlbGwoKSA/IGFzQ2VsbCgpLT5tZXRob2RU
YWJsZSgpLT50b1RoaXNPYmplY3QoYXNDZWxsKCksIGV4ZWMpIDogdG9UaGlzT2JqZWN0U2xvd0Nh
c2UoZXhlYyk7Cit9CisKK2lubGluZSBKU1ZhbHVlIEpTVmFsdWU6OmdldChFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNvbnN0Cit7CisgICAgUHJvcGVydHlTbG90
IHNsb3QoYXNWYWx1ZSgpKTsKKyAgICByZXR1cm4gZ2V0KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xv
dCk7Cit9CisKK2lubGluZSBKU1ZhbHVlIEpTVmFsdWU6OmdldChFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkgY29uc3QKK3sKKyAg
ICBpZiAoVU5MSUtFTFkoIWlzQ2VsbCgpKSkgeworICAgICAgICBKU09iamVjdCogcHJvdG90eXBl
ID0gc3ludGhlc2l6ZVByb3RvdHlwZShleGVjKTsKKyAgICAgICAgaWYgKCFwcm90b3R5cGUtPmdl
dFByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQorICAgICAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgICAgIHJldHVybiBzbG90LmdldFZhbHVlKGV4ZWMsIHBy
b3BlcnR5TmFtZSk7CisgICAgfQorICAgIEpTQ2VsbCogY2VsbCA9IGFzQ2VsbCgpOworICAgIHdo
aWxlICh0cnVlKSB7CisgICAgICAgIGlmIChjZWxsLT5mYXN0R2V0T3duUHJvcGVydHlTbG90KGV4
ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCkpCisgICAgICAgICAgICByZXR1cm4gc2xvdC5nZXRWYWx1
ZShleGVjLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IGFzT2Jq
ZWN0KGNlbGwpLT5wcm90b3R5cGUoKTsKKyAgICAgICAgaWYgKCFwcm90b3R5cGUuaXNPYmplY3Qo
KSkKKyAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgICAgICBjZWxsID0gYXNP
YmplY3QocHJvdG90eXBlKTsKKyAgICB9Cit9CisKK2lubGluZSBKU1ZhbHVlIEpTVmFsdWU6Omdl
dChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSkgY29uc3QKK3sKKyAgICBQ
cm9wZXJ0eVNsb3Qgc2xvdChhc1ZhbHVlKCkpOworICAgIHJldHVybiBnZXQoZXhlYywgcHJvcGVy
dHlOYW1lLCBzbG90KTsKK30KKworaW5saW5lIEpTVmFsdWUgSlNWYWx1ZTo6Z2V0KEV4ZWNTdGF0
ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpIGNvbnN0
Cit7CisgICAgaWYgKFVOTElLRUxZKCFpc0NlbGwoKSkpIHsKKyAgICAgICAgSlNPYmplY3QqIHBy
b3RvdHlwZSA9IHN5bnRoZXNpemVQcm90b3R5cGUoZXhlYyk7CisgICAgICAgIGlmICghcHJvdG90
eXBlLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KSkKKyAgICAgICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgICAgICByZXR1cm4gc2xvdC5nZXRWYWx1ZShl
eGVjLCBwcm9wZXJ0eU5hbWUpOworICAgIH0KKyAgICBKU0NlbGwqIGNlbGwgPSBjb25zdF9jYXN0
PEpTQ2VsbCo+KGFzQ2VsbCgpKTsKKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBpZiAoY2Vs
bC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChjZWxsLCBleGVjLCBw
cm9wZXJ0eU5hbWUsIHNsb3QpKQorICAgICAgICAgICAgcmV0dXJuIHNsb3QuZ2V0VmFsdWUoZXhl
YywgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSBhc09iamVjdChj
ZWxsKS0+cHJvdG90eXBlKCk7CisgICAgICAgIGlmICghcHJvdG90eXBlLmlzT2JqZWN0KCkpCisg
ICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICAgICAgY2VsbCA9IHByb3RvdHlw
ZS5hc0NlbGwoKTsKKyAgICB9Cit9CisKK2lubGluZSB2b2lkIEpTVmFsdWU6OnB1dChFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICBpZiAoVU5MSUtFTFkoIWlzQ2VsbCgpKSkgeworICAg
ICAgICBwdXRUb1ByaW1pdGl2ZShleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhc0NlbGwoKS0+bWV0aG9kVGFibGUoKS0+cHV0KGFz
Q2VsbCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKK30KKworaW5saW5lIHZv
aWQgSlNWYWx1ZTo6cHV0QnlJbmRleChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKK3sKKyAgICBpZiAoVU5MSUtF
TFkoIWlzQ2VsbCgpKSkgeworICAgICAgICBwdXRUb1ByaW1pdGl2ZUJ5SW5kZXgoZXhlYywgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIGFzQ2VsbCgpLT5tZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4KGFzQ2VsbCgpLCBleGVjLCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7Cit9CisKK2lubGluZSBKU1ZhbHVlIEpT
VmFsdWU6OnN0cnVjdHVyZU9yVW5kZWZpbmVkKCkgY29uc3QKK3sKKyAgICBpZiAoaXNDZWxsKCkp
CisgICAgICAgIHJldHVybiBKU1ZhbHVlKGFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKSk7CisgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKKy8vIEVDTUEgMTEuOS4zCitpbmxpbmUgYm9vbCBKU1Zh
bHVlOjplcXVhbChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCit7Cisg
ICAgaWYgKHYxLmlzSW50MzIoKSAmJiB2Mi5pc0ludDMyKCkpCisgICAgICAgIHJldHVybiB2MSA9
PSB2MjsKKworICAgIHJldHVybiBlcXVhbFNsb3dDYXNlKGV4ZWMsIHYxLCB2Mik7Cit9CisKK0FM
V0FZU19JTkxJTkUgYm9vbCBKU1ZhbHVlOjplcXVhbFNsb3dDYXNlSW5saW5lKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKK3sKKyAgICBkbyB7CisgICAgICAgIGlmICh2
MS5pc051bWJlcigpICYmIHYyLmlzTnVtYmVyKCkpCisgICAgICAgICAgICByZXR1cm4gdjEuYXNO
dW1iZXIoKSA9PSB2Mi5hc051bWJlcigpOworCisgICAgICAgIGJvb2wgczEgPSB2MS5pc1N0cmlu
ZygpOworICAgICAgICBib29sIHMyID0gdjIuaXNTdHJpbmcoKTsKKyAgICAgICAgaWYgKHMxICYm
IHMyKQorICAgICAgICAgICAgcmV0dXJuIGFzU3RyaW5nKHYxKS0+dmFsdWUoZXhlYykgPT0gYXNT
dHJpbmcodjIpLT52YWx1ZShleGVjKTsKKworICAgICAgICBpZiAodjEuaXNVbmRlZmluZWRPck51
bGwoKSkgeworICAgICAgICAgICAgaWYgKHYyLmlzVW5kZWZpbmVkT3JOdWxsKCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICBpZiAoIXYyLmlzQ2VsbCgpKQorICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybiB2Mi5hc0NlbGwo
KS0+c3RydWN0dXJlKCktPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh2Mi5pc1VuZGVmaW5lZE9yTnVs
bCgpKSB7CisgICAgICAgICAgICBpZiAoIXYxLmlzQ2VsbCgpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybiB2MS5hc0NlbGwoKS0+c3RydWN0dXJlKCkt
Pm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmICh2MS5pc09iamVjdCgpKSB7CisgICAgICAgICAgICBpZiAo
djIuaXNPYmplY3QoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdjEgPT0gdjI7CisgICAgICAg
ICAgICBKU1ZhbHVlIHAxID0gdjEudG9QcmltaXRpdmUoZXhlYyk7CisgICAgICAgICAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgdjEgPSBwMTsKKyAgICAgICAgICAgIGlmICh2MS5pc0ludDMyKCkgJiYgdjIuaXNJ
bnQzMigpKQorICAgICAgICAgICAgICAgIHJldHVybiB2MSA9PSB2MjsKKyAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHYyLmlzT2JqZWN0KCkpIHsKKyAgICAg
ICAgICAgIEpTVmFsdWUgcDIgPSB2Mi50b1ByaW1pdGl2ZShleGVjKTsKKyAgICAgICAgICAgIGlm
IChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICB2MiA9IHAyOworICAgICAgICAgICAgaWYgKHYxLmlzSW50MzIoKSAmJiB2Mi5p
c0ludDMyKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHYxID09IHYyOworICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoczEgfHwgczIpIHsKKyAgICAgICAg
ICAgIGRvdWJsZSBkMSA9IHYxLnRvTnVtYmVyKGV4ZWMpOworICAgICAgICAgICAgZG91YmxlIGQy
ID0gdjIudG9OdW1iZXIoZXhlYyk7CisgICAgICAgICAgICByZXR1cm4gZDEgPT0gZDI7CisgICAg
ICAgIH0KKworICAgICAgICBpZiAodjEuaXNCb29sZWFuKCkpIHsKKyAgICAgICAgICAgIGlmICh2
Mi5pc051bWJlcigpKQorICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+
KHYxLmFzQm9vbGVhbigpKSA9PSB2Mi5hc051bWJlcigpOworICAgICAgICB9IGVsc2UgaWYgKHYy
LmlzQm9vbGVhbigpKSB7CisgICAgICAgICAgICBpZiAodjEuaXNOdW1iZXIoKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gdjEuYXNOdW1iZXIoKSA9PSBzdGF0aWNfY2FzdDxkb3VibGU+KHYyLmFz
Qm9vbGVhbigpKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB2MSA9PSB2MjsKKyAgICB9
IHdoaWxlICh0cnVlKTsKK30KKworLy8gRUNNQSAxMS45LjMKK0FMV0FZU19JTkxJTkUgYm9vbCBK
U1ZhbHVlOjpzdHJpY3RFcXVhbFNsb3dDYXNlSW5saW5lKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSB2MSwgSlNWYWx1ZSB2MikKK3sKKyAgICBBU1NFUlQodjEuaXNDZWxsKCkgJiYgdjIuaXNDZWxs
KCkpOworCisgICAgaWYgKHYxLmFzQ2VsbCgpLT5pc1N0cmluZygpICYmIHYyLmFzQ2VsbCgpLT5p
c1N0cmluZygpKQorICAgICAgICByZXR1cm4gYXNTdHJpbmcodjEpLT52YWx1ZShleGVjKSA9PSBh
c1N0cmluZyh2MiktPnZhbHVlKGV4ZWMpOworCisgICAgcmV0dXJuIHYxID09IHYyOworfQorCitp
bmxpbmUgYm9vbCBKU1ZhbHVlOjpzdHJpY3RFcXVhbChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
djEsIEpTVmFsdWUgdjIpCit7CisgICAgaWYgKHYxLmlzSW50MzIoKSAmJiB2Mi5pc0ludDMyKCkp
CisgICAgICAgIHJldHVybiB2MSA9PSB2MjsKKworICAgIGlmICh2MS5pc051bWJlcigpICYmIHYy
LmlzTnVtYmVyKCkpCisgICAgICAgIHJldHVybiB2MS5hc051bWJlcigpID09IHYyLmFzTnVtYmVy
KCk7CisKKyAgICBpZiAoIXYxLmlzQ2VsbCgpIHx8ICF2Mi5pc0NlbGwoKSkKKyAgICAgICAgcmV0
dXJuIHYxID09IHYyOworCisgICAgcmV0dXJuIHN0cmljdEVxdWFsU2xvd0Nhc2VJbmxpbmUoZXhl
YywgdjEsIHYyKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBKU1ZhbHVl
SW5saW5lc19oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFs
dWVJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDSlNWYWx1ZUlubGluZXMuaAkocmV2aXNpb24gMTQwMTk2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjcs
OSArMjcsOSBAQAogI2RlZmluZSBKU1ZhbHVlSW5saW5lc19oCiAKICNpbmNsdWRlICJJbnRlcm5h
bEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTQ2VsbElu
bGluZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCi0jaW5jbHVkZSAiSlNWYWx1ZS5oIgog
CiBuYW1lc3BhY2UgSlNDIHsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxEYXRhLmgJKHJldmlzaW9uIDE0MDIxNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw4ICszNiw4
IEBACiAjaW5jbHVkZSAiSW50cmluc2ljLmgiCiAjaW5jbHVkZSAiSklUVGh1bmtzLmgiCiAjaW5j
bHVkZSAiSklUVGh1bmtzLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpT
TG9jay5oIgotI2luY2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNsdWRlICJMTEludERhdGEuaCIKICNp
bmNsdWRlICJOdW1lcmljU3RyaW5ncy5oIgogI2luY2x1ZGUgIlByb2ZpbGVyRGF0YWJhc2UuaCIK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAJKHJldmlzaW9uIDE0MDIxNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQAogI2lu
Y2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCiAjaW5jbHVk
ZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNp
bmNsdWRlICJKU0NhbGxiYWNrQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJKU0NhbGxiYWNrRnVu
Y3Rpb24uaCIKICNpbmNsdWRlICJKU0NhbGxiYWNrT2JqZWN0LmgiCkBAIC01Nyw3ICs1OCw2IEBA
CiAjaW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIKICNpbmNsdWRl
ICJKU09OT2JqZWN0LmgiCi0jaW5jbHVkZSAiSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJK
U1dpdGhTY29wZS5oIgogI2luY2x1ZGUgIkxlZ2FjeVByb2ZpbGVyLmgiCiAjaW5jbHVkZSAiTG9v
a3VwLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dEZ1bmN0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgJKHJldmlzaW9uIDE0MDIxNSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICNpZm5kZWYgSlNHbG9iYWxPYmplY3RGdW5jdGlvbnNf
aAogI2RlZmluZSBKU0dsb2JhbE9iamVjdEZ1bmN0aW9uc19oCiAKLSNpbmNsdWRlICJKU1ZhbHVl
LmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL1VuaWNv
ZGUuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N0cmluZ0pvaW5lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU3RyaW5nSm9pbmVyLmgJKHJldmlzaW9uIDE0MDIxNSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nSm9pbmVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgSlNTdHJpbmdKb2luZXJfaAogI2RlZmluZSBKU1N0cmlu
Z0pvaW5lcl9oCiAKLSNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5o
IgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAJKHJl
dmlzaW9uIDE0MDIxNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMyMCArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAo
QykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0
IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCi0gKiAgQ29weXJpZ2h0IChDKSAy
MDAzLCAyMDA3LCAyMDA4LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
LSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
Ci0gKgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJKU1ZhbHVlLmgiCi0K
LSNpbmNsdWRlICJCb29sZWFuQ29uc3RydWN0b3IuaCIKLSNpbmNsdWRlICJCb29sZWFuUHJvdG90
eXBlLmgiCi0jaW5jbHVkZSAiRXJyb3IuaCIKLSNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgi
Ci0jaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCi0jaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIK
LSNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCi0jaW5jbHVkZSAiSlNOb3RBbk9iamVjdC5oIgotI2lu
Y2x1ZGUgIkpTVmFsdWVJbmxpbmVzLmgiCi0jaW5jbHVkZSAiTnVtYmVyT2JqZWN0LmgiCi0jaW5j
bHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KLSNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+Ci0K
LW5hbWVzcGFjZSBKU0MgewotCi1zdGF0aWMgY29uc3QgZG91YmxlIEQzMiA9IDQyOTQ5NjcyOTYu
MDsKLQotLy8gRUNNQSA5LjQKLWRvdWJsZSBKU1ZhbHVlOjp0b0ludGVnZXIoRXhlY1N0YXRlKiBl
eGVjKSBjb25zdAotewotICAgIGlmIChpc0ludDMyKCkpCi0gICAgICAgIHJldHVybiBhc0ludDMy
KCk7Ci0gICAgZG91YmxlIGQgPSB0b051bWJlcihleGVjKTsKLSAgICByZXR1cm4gaXNuYW4oZCkg
PyAwLjAgOiB0cnVuYyhkKTsKLX0KLQotZG91YmxlIEpTVmFsdWU6OnRvSW50ZWdlclByZXNlcnZl
TmFOKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKLXsKLSAgICBpZiAoaXNJbnQzMigpKQotICAgICAg
ICByZXR1cm4gYXNJbnQzMigpOwotICAgIHJldHVybiB0cnVuYyh0b051bWJlcihleGVjKSk7Ci19
Ci0KLWRvdWJsZSBKU1ZhbHVlOjp0b051bWJlclNsb3dDYXNlKEV4ZWNTdGF0ZSogZXhlYykgY29u
c3QKLXsKLSAgICBBU1NFUlQoIWlzSW50MzIoKSAmJiAhaXNEb3VibGUoKSk7Ci0gICAgaWYgKGlz
Q2VsbCgpKQotICAgICAgICByZXR1cm4gYXNDZWxsKCktPnRvTnVtYmVyKGV4ZWMpOwotICAgIGlm
IChpc1RydWUoKSkKLSAgICAgICAgcmV0dXJuIDEuMDsKLSAgICByZXR1cm4gaXNVbmRlZmluZWQo
KSA/IFFOYU4gOiAwOyAvLyBudWxsIGFuZCBmYWxzZSBib3RoIGNvbnZlcnQgdG8gMC4KLX0KLQot
SlNPYmplY3QqIEpTVmFsdWU6OnRvT2JqZWN0U2xvd0Nhc2UoRXhlY1N0YXRlKiBleGVjLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAotewotICAgIEFTU0VSVCghaXNDZWxsKCkp
OwotCi0gICAgaWYgKGlzSW50MzIoKSB8fCBpc0RvdWJsZSgpKQotICAgICAgICByZXR1cm4gY29u
c3RydWN0TnVtYmVyKGV4ZWMsIGdsb2JhbE9iamVjdCwgYXNWYWx1ZSgpKTsKLSAgICBpZiAoaXNU
cnVlKCkgfHwgaXNGYWxzZSgpKQotICAgICAgICByZXR1cm4gY29uc3RydWN0Qm9vbGVhbkZyb21J
bW1lZGlhdGVCb29sZWFuKGV4ZWMsIGdsb2JhbE9iamVjdCwgYXNWYWx1ZSgpKTsKLQotICAgIEFT
U0VSVChpc1VuZGVmaW5lZE9yTnVsbCgpKTsKLSAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZU5v
dEFuT2JqZWN0RXJyb3IoZXhlYywgKnRoaXMpKTsKLSAgICByZXR1cm4gSlNOb3RBbk9iamVjdDo6
Y3JlYXRlKGV4ZWMpOwotfQotCi1KU09iamVjdCogSlNWYWx1ZTo6dG9UaGlzT2JqZWN0U2xvd0Nh
c2UoRXhlY1N0YXRlKiBleGVjKSBjb25zdAotewotICAgIEFTU0VSVCghaXNDZWxsKCkpOwotCi0g
ICAgaWYgKGlzSW50MzIoKSB8fCBpc0RvdWJsZSgpKQotICAgICAgICByZXR1cm4gY29uc3RydWN0
TnVtYmVyKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgYXNWYWx1ZSgpKTsKLSAg
ICBpZiAoaXNUcnVlKCkgfHwgaXNGYWxzZSgpKQotICAgICAgICByZXR1cm4gY29uc3RydWN0Qm9v
bGVhbkZyb21JbW1lZGlhdGVCb29sZWFuKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSwgYXNWYWx1ZSgpKTsKLSAgICBBU1NFUlQoaXNVbmRlZmluZWRPck51bGwoKSk7Ci0gICAgcmV0
dXJuIGV4ZWMtPmdsb2JhbFRoaXNWYWx1ZSgpOwotfQotCi1KU09iamVjdCogSlNWYWx1ZTo6c3lu
dGhlc2l6ZVByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Ci17Ci0gICAgaWYgKGlzQ2Vs
bCgpKSB7Ci0gICAgICAgIEFTU0VSVChpc1N0cmluZygpKTsKLSAgICAgICAgcmV0dXJuIGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKS0+c3RyaW5nUHJvdG90eXBlKCk7Ci0gICAgfQotCi0gICAg
aWYgKGlzTnVtYmVyKCkpCi0gICAgICAgIHJldHVybiBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCktPm51bWJlclByb3RvdHlwZSgpOwotICAgIGlmIChpc0Jvb2xlYW4oKSkKLSAgICAgICAgcmV0
dXJuIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Ym9vbGVhblByb3RvdHlwZSgpOwotCi0g
ICAgQVNTRVJUKGlzVW5kZWZpbmVkT3JOdWxsKCkpOwotICAgIHRocm93RXJyb3IoZXhlYywgY3Jl
YXRlTm90QW5PYmplY3RFcnJvcihleGVjLCAqdGhpcykpOwotICAgIHJldHVybiBKU05vdEFuT2Jq
ZWN0OjpjcmVhdGUoZXhlYyk7Ci19Ci0KLS8vIEVDTUEgOC43LjIKLXZvaWQgSlNWYWx1ZTo6cHV0
VG9QcmltaXRpdmUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCi17Ci0gICAgSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOwotCi0gICAgdW5zaWduZWQgaW5kZXgg
PSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgpOwotICAgIGlmIChpbmRleCAhPSBQcm9wZXJ0eU5hbWU6
Ok5vdEFuSW5kZXgpIHsKLSAgICAgICAgcHV0VG9QcmltaXRpdmVCeUluZGV4KGV4ZWMsIGluZGV4
LCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICAvLyBDaGVjayBpZiB0aGVyZSBhcmUgYW55IHNldHRlcnMgb3IgZ2V0dGVycyBpbiB0aGUg
cHJvdG90eXBlIGNoYWluCi0gICAgSlNPYmplY3QqIG9iaiA9IHN5bnRoZXNpemVQcm90b3R5cGUo
ZXhlYyk7Ci0gICAgSlNWYWx1ZSBwcm90b3R5cGU7Ci0gICAgaWYgKHByb3BlcnR5TmFtZSAhPSBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkudW5kZXJzY29yZVByb3RvKSB7Ci0gICAgICAgIGZvciAoOyAh
b2JqLT5zdHJ1Y3R1cmUoKS0+aGFzUmVhZE9ubHlPckdldHRlclNldHRlclByb3BlcnRpZXNFeGNs
dWRpbmdQcm90bygpOyBvYmogPSBhc09iamVjdChwcm90b3R5cGUpKSB7Ci0gICAgICAgICAgICBw
cm90b3R5cGUgPSBvYmotPnByb3RvdHlwZSgpOwotICAgICAgICAgICAgaWYgKHByb3RvdHlwZS5p
c051bGwoKSkgewotICAgICAgICAgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQotICAg
ICAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQ
cm9wZXJ0eVdyaXRlRXJyb3IpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIGZvciAoOyA7IG9iaiA9IGFzT2JqZWN0KHByb3Rv
dHlwZSkpIHsKLSAgICAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKLSAgICAgICAgSlNDZWxsKiBz
cGVjaWZpY1ZhbHVlOwotICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBvYmotPnN0cnVj
dHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZp
Y1ZhbHVlKTsKLSAgICAgICAgaWYgKG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0KSB7Ci0gICAgICAg
ICAgICBpZiAoYXR0cmlidXRlcyAmIFJlYWRPbmx5KSB7Ci0gICAgICAgICAgICAgICAgaWYgKHNs
b3QuaXNTdHJpY3RNb2RlKCkpCi0gICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywg
Y3JlYXRlVHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJv
cikpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgSlNWYWx1ZSBncyA9IG9iai0+Z2V0RGlyZWN0KG9mZnNldCk7Ci0gICAgICAgICAgICBpZiAo
Z3MuaXNHZXR0ZXJTZXR0ZXIoKSkgewotICAgICAgICAgICAgICAgIEpTT2JqZWN0KiBzZXR0ZXJG
dW5jID0gYXNHZXR0ZXJTZXR0ZXIoZ3MpLT5zZXR0ZXIoKTsgICAgICAgIAotICAgICAgICAgICAg
ICAgIGlmICghc2V0dGVyRnVuYykgewotICAgICAgICAgICAgICAgICAgICBpZiAoc2xvdC5pc1N0
cmljdE1vZGUoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3Jl
YXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgic2V0dGluZyBhIHByb3BlcnR5IHRoYXQg
aGFzIG9ubHkgYSBnZXR0ZXIiKSkpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIENhbGxEYXRh
IGNhbGxEYXRhOwotICAgICAgICAgICAgICAgIENhbGxUeXBlIGNhbGxUeXBlID0gc2V0dGVyRnVu
Yy0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEoc2V0dGVyRnVuYywgY2FsbERhdGEpOwotICAg
ICAgICAgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7Ci0gICAgICAgICAgICAgICAg
YXJncy5hcHBlbmQodmFsdWUpOwotCi0gICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyBXZWJD
b3JlJ3MgZ2xvYmFsIG9iamVjdCB0aGVuIHdlIG5lZWQgdG8gc3Vic3RpdHV0ZSB0aGUgc2hlbGwu
Ci0gICAgICAgICAgICAgICAgY2FsbChleGVjLCBzZXR0ZXJGdW5jLCBjYWxsVHlwZSwgY2FsbERh
dGEsICp0aGlzLCBhcmdzKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIC8vIElmIHRoZXJlJ3MgYW4gZXhpc3RpbmcgcHJvcGVydHkgb24gdGhl
IG9iamVjdCBvciBvbmUgb2YgaXRzIAotICAgICAgICAgICAgLy8gcHJvdG90eXBlcyBpdCBzaG91
bGQgYmUgcmVwbGFjZWQsIHNvIGJyZWFrIGhlcmUuCi0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgfQotCi0gICAgICAgIHByb3RvdHlwZSA9IG9iai0+cHJvdG90eXBlKCk7Ci0gICAgICAgIGlm
IChwcm90b3R5cGUuaXNOdWxsKCkpCi0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgCi0g
ICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCi0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMs
IFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7Ci0gICAgcmV0dXJuOwotfQot
Ci12b2lkIEpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlQnlJbmRleChFeGVjU3RhdGUqIGV4ZWMsIHVu
c2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKLXsK
LSAgICBpZiAocHJvcGVydHlOYW1lID4gTUFYX0FSUkFZX0lOREVYKSB7Ci0gICAgICAgIFB1dFBy
b3BlcnR5U2xvdCBzbG90KHNob3VsZFRocm93KTsKLSAgICAgICAgcHV0VG9QcmltaXRpdmUoZXhl
YywgSWRlbnRpZmllcjo6ZnJvbShleGVjLCBwcm9wZXJ0eU5hbWUpLCB2YWx1ZSwgc2xvdCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgaWYgKHN5bnRoZXNpemVQcm90b3R5cGUo
ZXhlYyktPmF0dGVtcHRUb0ludGVyY2VwdFB1dEJ5SW5kZXhPbkhvbGVGb3JQcm90b3R5cGUoZXhl
YywgKnRoaXMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KSkKLSAgICAgICAgcmV0
dXJuOwotICAgIAotICAgIGlmIChzaG91bGRUaHJvdykKLSAgICAgICAgdGhyb3dUeXBlRXJyb3Io
ZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKLX0KLQotdm9pZCBK
U1ZhbHVlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Ci17Ci0gICAgaWYgKCEqdGhpcykK
LSAgICAgICAgb3V0LnByaW50KCI8SlNWYWx1ZSgpPiIpOwotICAgIGVsc2UgaWYgKGlzSW50MzIo
KSkKLSAgICAgICAgb3V0LnByaW50ZigiSW50MzI6ICVkIiwgYXNJbnQzMigpKTsKLSAgICBlbHNl
IGlmIChpc0RvdWJsZSgpKSB7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgb3V0LnByaW50
ZigiRG91YmxlOiAlbGxkLCAlbGYiLCAobG9uZyBsb25nKXJlaW50ZXJwcmV0RG91YmxlVG9JbnQ2
NChhc0RvdWJsZSgpKSwgYXNEb3VibGUoKSk7Ci0jZWxzZQotICAgICAgICB1bmlvbiB7Ci0gICAg
ICAgICAgICBkb3VibGUgYXNEb3VibGU7Ci0gICAgICAgICAgICB1aW50MzJfdCBhc1R3b0ludDMy
c1syXTsKLSAgICAgICAgfSB1OwotICAgICAgICB1LmFzRG91YmxlID0gYXNEb3VibGUoKTsKLSAg
ICAgICAgb3V0LnByaW50ZigiRG91YmxlOiAlMDh4OiUwOHgsICVsZiIsIHUuYXNUd29JbnQzMnNb
MV0sIHUuYXNUd29JbnQzMnNbMF0sIGFzRG91YmxlKCkpOwotI2VuZGlmCi0gICAgfSBlbHNlIGlm
IChpc0NlbGwoKSkgewotICAgICAgICBpZiAoYXNDZWxsKCktPmluaGVyaXRzKCZTdHJ1Y3R1cmU6
OnNfaW5mbykpIHsKLSAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0ganNDYXN0PFN0
cnVjdHVyZSo+KGFzQ2VsbCgpKTsKLSAgICAgICAgICAgIG91dC5wcmludCgKLSAgICAgICAgICAg
ICAgICAiU3RydWN0dXJlOiAiLCBSYXdQb2ludGVyKHN0cnVjdHVyZSksICI6ICIsIHN0cnVjdHVy
ZS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSwKLSAgICAgICAgICAgICAgICAiLCAiLCBJbmRleGlu
Z1R5cGVEdW1wKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlSW5jbHVkaW5nSGlzdG9yeSgpKSk7Ci0g
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBvdXQucHJpbnQoIkNlbGw6ICIsIFJhd1BvaW50
ZXIoYXNDZWxsKCkpKTsKLSAgICAgICAgICAgIGlmIChpc09iamVjdCgpICYmIGFzT2JqZWN0KCp0
aGlzKS0+YnV0dGVyZmx5KCkpCi0gICAgICAgICAgICAgICAgb3V0LnByaW50KCItPiIsIFJhd1Bv
aW50ZXIoYXNPYmplY3QoKnRoaXMpLT5idXR0ZXJmbHkoKSkpOwotICAgICAgICAgICAgb3V0LnBy
aW50KAotICAgICAgICAgICAgICAgICIgKCIsIFJhd1BvaW50ZXIoYXNDZWxsKCktPnN0cnVjdHVy
ZSgpKSwgIjogIiwgYXNDZWxsKCktPnN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1l
LAotICAgICAgICAgICAgICAgICIsICIsIEluZGV4aW5nVHlwZUR1bXAoYXNDZWxsKCktPnN0cnVj
dHVyZSgpLT5pbmRleGluZ1R5cGVJbmNsdWRpbmdIaXN0b3J5KCkpLCAiKSIpOwotICAgICAgICB9
Ci0gICAgfSBlbHNlIGlmIChpc1RydWUoKSkKLSAgICAgICAgb3V0LnByaW50KCJUcnVlIik7Ci0g
ICAgZWxzZSBpZiAoaXNGYWxzZSgpKQotICAgICAgICBvdXQucHJpbnQoIkZhbHNlIik7Ci0gICAg
ZWxzZSBpZiAoaXNOdWxsKCkpCi0gICAgICAgIG91dC5wcmludCgiTnVsbCIpOwotICAgIGVsc2Ug
aWYgKGlzVW5kZWZpbmVkKCkpCi0gICAgICAgIG91dC5wcmludCgiVW5kZWZpbmVkIik7Ci0gICAg
ZWxzZQotICAgICAgICBvdXQucHJpbnQoIklOVkFMSUQiKTsKLX0KLQotLy8gVGhpcyBpbiB0aGUg
VG9JbnQzMiBvcGVyYXRpb24gaXMgZGVmaW5lZCBpbiBzZWN0aW9uIDkuNSBvZiB0aGUgRUNNQS0y
NjIgc3BlYy4KLS8vIE5vdGUgdGhhdCB0aGlzIG9wZXJhdGlvbiBpcyBpZGVudGljYWwgdG8gVG9V
SW50MzIgb3RoZXIgdGhhbiB0byBpbnRlcnByZXRhdGlvbgotLy8gb2YgdGhlIHJlc3VsdGluZyBi
aXQtcGF0dGVybiAoYXMgc3VjaCB0aGlzIG1ldG9kIGlzIGFsc28gY2FsbGVkIHRvIGltcGxlbWVu
dAotLy8gVG9VSW50MzIpLgotLy8KLS8vIFRoZSBvcGVyYXRpb24gY2FuIGJlIGRlc2NpYmVkIGFz
IHJvdW5kIHRvd2FyZHMgemVybywgdGhlbiBzZWxlY3QgdGhlIDMyIGxlYXN0Ci0vLyBiaXRzIG9m
IHRoZSByZXN1bHRpbmcgdmFsdWUgaW4gMnMtY29tcGxlbWVudCByZXByZXNlbnRhdGlvbi4KLWlu
dDMyX3QgdG9JbnQzMihkb3VibGUgbnVtYmVyKQotewotICAgIGludDY0X3QgYml0cyA9IFdURjo6
Yml0d2lzZV9jYXN0PGludDY0X3Q+KG51bWJlcik7Ci0gICAgaW50MzJfdCBleHAgPSAoc3RhdGlj
X2Nhc3Q8aW50MzJfdD4oYml0cyA+PiA1MikgJiAweDdmZikgLSAweDNmZjsKLQotICAgIC8vIElm
IGV4cG9uZW50IDwgMCB0aGVyZSB3aWxsIGJlIG5vIGJpdHMgdG8gdGhlIGxlZnQgb2YgdGhlIGRl
Y2ltYWwgcG9pbnQKLSAgICAvLyBhZnRlciByb3VuZGluZzsgaWYgdGhlIGV4cG9uZW50IGlzID4g
ODMgdGhlbiBubyBiaXRzIG9mIHByZWNpc2lvbiBjYW4gYmUKLSAgICAvLyBsZWZ0IGluIHRoZSBs
b3cgMzItYml0IHJhbmdlIG9mIHRoZSByZXN1bHQgKElFRUUtNzU0IGRvdWJsZXMgaGF2ZSA1MiBi
aXRzCi0gICAgLy8gb2YgZnJhY3Rpb25hbCBwcmVjaXNpb24pLgotICAgIC8vIE5vdGUgdGhpcyBj
YXNlIGhhbmRsZXMgMCwgLTAsIGFuZCBhbGwgaW5maW50ZSwgTmFOLCAmIGRlbm9ybWFsIHZhbHVl
LiAKLSAgICBpZiAoZXhwIDwgMCB8fCBleHAgPiA4MykKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAg
ICAvLyBTZWxlY3QgdGhlIGFwcHJvcHJpYXRlIDMyLWJpdHMgZnJvbSB0aGUgZmxvYXRpbmcgcG9p
bnQgbWFudGlzc2EuICBJZiB0aGUKLSAgICAvLyBleHBvbmVudCBpcyA1MiB0aGVuIHRoZSBiaXRz
IHdlIG5lZWQgdG8gc2VsZWN0IGFyZSBhbHJlYWR5IGFsaWduZWQgdG8gdGhlCi0gICAgLy8gbG93
ZXN0IGJpdHMgb2YgdGhlIDY0LWJpdCBpbnRlZ2VyIHJlcHJlc2VudGF0aW9uIG9mIHRnaGUgbnVt
YmVyLCBubyBuZWVkCi0gICAgLy8gdG8gc2hpZnQuICBJZiB0aGUgZXhwb25lbnQgaXMgZ3JlYXRl
ciB0aGFuIDUyIHdlIG5lZWQgdG8gc2hpZnQgdGhlIHZhbHVlCi0gICAgLy8gbGVmdCBieSAoZXhw
IC0gNTIpLCBpZiB0aGUgdmFsdWUgaXMgbGVzcyB0aGFuIDUyIHdlIG5lZWQgdG8gc2hpZnQgcmln
aHQKLSAgICAvLyBhY2NvcmRpbmdseS4KLSAgICBpbnQzMl90IHJlc3VsdCA9IChleHAgPiA1MikK
LSAgICAgICAgPyBzdGF0aWNfY2FzdDxpbnQzMl90PihiaXRzIDw8IChleHAgLSA1MikpCi0gICAg
ICAgIDogc3RhdGljX2Nhc3Q8aW50MzJfdD4oYml0cyA+PiAoNTIgLSBleHApKTsKLQotICAgIC8v
IElFRUUtNzU0IGRvdWJsZSBwcmVjaXNpb24gdmFsdWVzIGFyZSBzdG9yZWQgb21pdHRpbmcgYW4g
aW1wbGljaXQgMSBiZWZvcmUKLSAgICAvLyB0aGUgZGVjaW1hbCBwb2ludDsgd2UgbmVlZCB0byBy
ZWluc2VydCB0aGlzIG5vdy4gIFdlIG1heSBhbHNvIHRoZSBzaGlmdGVkCi0gICAgLy8gaW52YWxp
ZCBiaXRzIGludG8gdGhlIHJlc3VsdCB0aGF0IGFyZSBub3QgYSBwYXJ0IG9mIHRoZSBtYW50aXNz
YSAodGhlIHNpZ24KLSAgICAvLyBhbmQgZXhwb25lbnQgYml0cyBmcm9tIHRoZSBmbG9hdGluZ3Bv
aW50IHJlcHJlc2VudGF0aW9uKTsgbWFzayB0aGVzZSBvdXQuCi0gICAgaWYgKGV4cCA8IDMyKSB7
Ci0gICAgICAgIGludDMyX3QgbWlzc2luZ09uZSA9IDEgPDwgZXhwOwotICAgICAgICByZXN1bHQg
Jj0gbWlzc2luZ09uZSAtIDE7Ci0gICAgICAgIHJlc3VsdCArPSBtaXNzaW5nT25lOwotICAgIH0K
LQotICAgIC8vIElmIHRoZSBpbnB1dCB2YWx1ZSB3YXMgbmVnYXRpdmUgKHdlIGNvdWxkIHRlc3Qg
ZWl0aGVyICdudW1iZXInIG9yICdiaXRzJywKLSAgICAvLyBidXQgdGVzdGluZyAnYml0cycgaXMg
bGlrZWx5IGZhc3RlcikgaW52ZXJ0IHRoZSByZXN1bHQgYXBwcm9wcmlhdGVseS4KLSAgICByZXR1
cm4gYml0cyA8IDAgPyAtcmVzdWx0IDogcmVzdWx0OwotfQotCi1ib29sIEpTVmFsdWU6OmlzVmFs
aWRDYWxsZWUoKQotewotICAgIHJldHVybiBhc09iamVjdChhc0NlbGwoKSktPmdsb2JhbE9iamVj
dCgpOwotfQotCi1KU1N0cmluZyogSlNWYWx1ZTo6dG9TdHJpbmdTbG93Q2FzZShFeGVjU3RhdGUq
IGV4ZWMpIGNvbnN0Ci17Ci0gICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xv
YmFsRGF0YSgpOwotICAgIEFTU0VSVCghaXNTdHJpbmcoKSk7Ci0gICAgaWYgKGlzSW50MzIoKSkK
LSAgICAgICAgcmV0dXJuIGpzU3RyaW5nKCZnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLm51bWVyaWNT
dHJpbmdzLmFkZChhc0ludDMyKCkpKTsKLSAgICBpZiAoaXNEb3VibGUoKSkKLSAgICAgICAgcmV0
dXJuIGpzU3RyaW5nKCZnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLm51bWVyaWNTdHJpbmdzLmFkZChh
c0RvdWJsZSgpKSk7Ci0gICAgaWYgKGlzVHJ1ZSgpKQotICAgICAgICByZXR1cm4gZ2xvYmFsRGF0
YS5zbWFsbFN0cmluZ3MudHJ1ZVN0cmluZygpOwotICAgIGlmIChpc0ZhbHNlKCkpCi0gICAgICAg
IHJldHVybiBnbG9iYWxEYXRhLnNtYWxsU3RyaW5ncy5mYWxzZVN0cmluZygpOwotICAgIGlmIChp
c051bGwoKSkKLSAgICAgICAgcmV0dXJuIGdsb2JhbERhdGEuc21hbGxTdHJpbmdzLm51bGxTdHJp
bmcoKTsKLSAgICBpZiAoaXNVbmRlZmluZWQoKSkKLSAgICAgICAgcmV0dXJuIGdsb2JhbERhdGEu
c21hbGxTdHJpbmdzLnVuZGVmaW5lZFN0cmluZygpOwotCi0gICAgQVNTRVJUKGlzQ2VsbCgpKTsK
LSAgICBKU1ZhbHVlIHZhbHVlID0gYXNDZWxsKCktPnRvUHJpbWl0aXZlKGV4ZWMsIFByZWZlclN0
cmluZyk7Ci0gICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4ganNF
bXB0eVN0cmluZyhleGVjKTsKLSAgICBBU1NFUlQoIXZhbHVlLmlzT2JqZWN0KCkpOwotICAgIHJl
dHVybiB2YWx1ZS50b1N0cmluZyhleGVjKTsKLX0KLQotU3RyaW5nIEpTVmFsdWU6OnRvV1RGU3Ry
aW5nU2xvd0Nhc2UoRXhlY1N0YXRlKiBleGVjKSBjb25zdAotewotICAgIHJldHVybiBpbmxpbmVK
U1ZhbHVlTm90U3RyaW5ndG9TdHJpbmcoKnRoaXMsIGV4ZWMpOwotfQotCi19IC8vIG5hbWVzcGFj
ZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgJKHJldmlz
aW9uIDE0MDIxNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw0OTcgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKEMpIDE5
OTktMjAwMSBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykg
MjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQotICogIENvcHlyaWdodCAoQykgMjAwMywg
MjAwNCwgMjAwNSwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAq
Ci0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgotICoKLSAqLwotCi0jaWZuZGVmIEpTVmFsdWVfaAotI2RlZmluZSBKU1Zh
bHVlX2gKLQotI2luY2x1ZGUgPG1hdGguaD4KLSNpbmNsdWRlIDxzdGRkZWYuaD4gLy8gZm9yIHNp
emVfdAotI2luY2x1ZGUgPHN0ZGludC5oPgotI2luY2x1ZGUgPHd0Zi9BbHdheXNJbmxpbmUuaD4K
LSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0j
aW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KLSNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgot
I2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci0KLS8vIFRo
aXMgaXMgdXNlZCBhIGxvdCB0aHJvdWdob3V0IEphdmFTY3JpcHRDb3JlIGZvciBldmVyeXRoaW5n
IGZyb20gdmFsdWUgYm94aW5nIHRvIG1hcmtpbmcKLS8vIHZhbHVlcyBhcyBiZWluZyBtaXNzaW5n
LCBzbyBpdCBpcyB1c2VmdWwgdG8gaGF2ZSBpdCBhYmJyZXZpYXRlZC4KLSNkZWZpbmUgUU5hTiAo
c3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSkKLQotY2xhc3MgRXhlY1N0
YXRlOwotY2xhc3MgSlNDZWxsOwotY2xhc3MgSlNHbG9iYWxEYXRhOwotY2xhc3MgSlNHbG9iYWxP
YmplY3Q7Ci1jbGFzcyBKU09iamVjdDsKLWNsYXNzIEpTU3RyaW5nOwotY2xhc3MgUHJvcGVydHlO
YW1lOwotY2xhc3MgUHJvcGVydHlTbG90OwotY2xhc3MgUHV0UHJvcGVydHlTbG90OwotI2lmIEVO
QUJMRShERkdfSklUKQotbmFtZXNwYWNlIERGRyB7Ci1jbGFzcyBBc3NlbWJseUhlbHBlcnM7Ci1j
bGFzcyBKSVRDb21waWxlcjsKLWNsYXNzIEpJVENvZGVHZW5lcmF0b3I7Ci1jbGFzcyBKU1ZhbHVl
U291cmNlOwotY2xhc3MgT1NSRXhpdENvbXBpbGVyOwotY2xhc3MgU3BlY3VsYXRpdmVKSVQ7Ci19
Ci0jZW5kaWYKLSNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQotbmFtZXNwYWNlIExMSW50IHsKLWNs
YXNzIENMb29wOwotfQotI2VuZGlmCi0KLXN0cnVjdCBDbGFzc0luZm87Ci1zdHJ1Y3QgSW5zdHJ1
Y3Rpb247Ci1zdHJ1Y3QgTWV0aG9kVGFibGU7Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPiBjbGFzcyBX
cml0ZUJhcnJpZXJCYXNlOwotCi1lbnVtIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUgeyBOb1ByZWZl
cmVuY2UsIFByZWZlck51bWJlciwgUHJlZmVyU3RyaW5nIH07Ci0KLQotdHlwZWRlZiBpbnQ2NF90
IEVuY29kZWRKU1ZhbHVlOwotICAgIAotdW5pb24gRW5jb2RlZFZhbHVlRGVzY3JpcHRvciB7Ci0g
ICAgaW50NjRfdCBhc0ludDY0OwotI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgZG91YmxlIGFz
RG91YmxlOwotI2VsaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBKU0NlbGwqIHB0cjsKLSNlbmRpZgot
ICAgICAgICAKLSNpZiBDUFUoQklHX0VORElBTikKLSAgICBzdHJ1Y3QgewotICAgICAgICBpbnQz
Ml90IHRhZzsKLSAgICAgICAgaW50MzJfdCBwYXlsb2FkOwotICAgIH0gYXNCaXRzOwotI2Vsc2UK
LSAgICBzdHJ1Y3QgewotICAgICAgICBpbnQzMl90IHBheWxvYWQ7Ci0gICAgICAgIGludDMyX3Qg
dGFnOwotICAgIH0gYXNCaXRzOwotI2VuZGlmCi19OwotCi0vLyBUaGlzIGltcGxlbWVudHMgVG9J
bnQzMiwgZGVmaW5lZCBpbiBFQ01BLTI2MiA5LjUuCi1KU19FWFBPUlRfUFJJVkFURSBpbnQzMl90
IHRvSW50MzIoZG91YmxlKTsKLQotLy8gVGhpcyBpbXBsZW1lbnRzIFRvVUludDMyLCBkZWZpbmVk
IGluIEVDTUEtMjYyIDkuNi4KLWlubGluZSB1aW50MzJfdCB0b1VJbnQzMihkb3VibGUgbnVtYmVy
KQotewotICAgIC8vIEFzIGNvbW1lbnRlZCBpbiB0aGUgc3BlYywgdGhlIG9wZXJhdGlvbiBvZiBU
b0ludDMyIGFuZCBUb1VpbnQzMiBvbmx5IGRpZmZlcgotICAgIC8vIGluIGhvdyB0aGUgcmVzdWx0
IGlzIGludGVycHJldGVkOyBzZWUgTk9URXMgaW4gc2VjdGlvbnMgOS41IGFuZCA5LjYuCi0gICAg
cmV0dXJuIHRvSW50MzIobnVtYmVyKTsKLX0KLQotY2xhc3MgSlNWYWx1ZSB7Ci0gICAgZnJpZW5k
IHN0cnVjdCBFbmNvZGVkSlNWYWx1ZUhhc2hUcmFpdHM7Ci0gICAgZnJpZW5kIGNsYXNzIEpJVDsK
LSAgICBmcmllbmQgY2xhc3MgSklUU3R1YnM7Ci0gICAgZnJpZW5kIGNsYXNzIEpJVFN0dWJDYWxs
OwotICAgIGZyaWVuZCBjbGFzcyBKU0ludGVyZmFjZUpJVDsKLSAgICBmcmllbmQgY2xhc3MgU3Bl
Y2lhbGl6ZWRUaHVua0pJVDsKLSNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBmcmllbmQgY2xhc3Mg
REZHOjpBc3NlbWJseUhlbHBlcnM7Ci0gICAgZnJpZW5kIGNsYXNzIERGRzo6SklUQ29tcGlsZXI7
Ci0gICAgZnJpZW5kIGNsYXNzIERGRzo6SklUQ29kZUdlbmVyYXRvcjsKLSAgICBmcmllbmQgY2xh
c3MgREZHOjpKU1ZhbHVlU291cmNlOwotICAgIGZyaWVuZCBjbGFzcyBERkc6Ok9TUkV4aXRDb21w
aWxlcjsKLSAgICBmcmllbmQgY2xhc3MgREZHOjpTcGVjdWxhdGl2ZUpJVDsKLSNlbmRpZgotI2lm
IEVOQUJMRShMTElOVF9DX0xPT1ApCi0gICAgZnJpZW5kIGNsYXNzIExMSW50OjpDTG9vcDsKLSNl
bmRpZgotCi1wdWJsaWM6Ci0jaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICBlbnVtIHsgSW50MzJU
YWcgPSAgICAgICAgMHhmZmZmZmZmZiB9OwotICAgIGVudW0geyBCb29sZWFuVGFnID0gICAgICAw
eGZmZmZmZmZlIH07Ci0gICAgZW51bSB7IE51bGxUYWcgPSAgICAgICAgIDB4ZmZmZmZmZmQgfTsK
LSAgICBlbnVtIHsgVW5kZWZpbmVkVGFnID0gICAgMHhmZmZmZmZmYyB9OwotICAgIGVudW0geyBD
ZWxsVGFnID0gICAgICAgICAweGZmZmZmZmZiIH07Ci0gICAgZW51bSB7IEVtcHR5VmFsdWVUYWcg
PSAgIDB4ZmZmZmZmZmEgfTsKLSAgICBlbnVtIHsgRGVsZXRlZFZhbHVlVGFnID0gMHhmZmZmZmZm
OSB9OwotCi0gICAgZW51bSB7IExvd2VzdFRhZyA9ICBEZWxldGVkVmFsdWVUYWcgfTsKLSNlbmRp
ZgotCi0gICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIGVuY29kZShKU1ZhbHVlKTsKLSAgICBzdGF0
aWMgSlNWYWx1ZSBkZWNvZGUoRW5jb2RlZEpTVmFsdWUpOwotCi0gICAgZW51bSBKU051bGxUYWcg
eyBKU051bGwgfTsKLSAgICBlbnVtIEpTVW5kZWZpbmVkVGFnIHsgSlNVbmRlZmluZWQgfTsKLSAg
ICBlbnVtIEpTVHJ1ZVRhZyB7IEpTVHJ1ZSB9OwotICAgIGVudW0gSlNGYWxzZVRhZyB7IEpTRmFs
c2UgfTsKLSAgICBlbnVtIEVuY29kZUFzRG91YmxlVGFnIHsgRW5jb2RlQXNEb3VibGUgfTsKLQot
ICAgIEpTVmFsdWUoKTsKLSAgICBKU1ZhbHVlKEpTTnVsbFRhZyk7Ci0gICAgSlNWYWx1ZShKU1Vu
ZGVmaW5lZFRhZyk7Ci0gICAgSlNWYWx1ZShKU1RydWVUYWcpOwotICAgIEpTVmFsdWUoSlNGYWxz
ZVRhZyk7Ci0gICAgSlNWYWx1ZShKU0NlbGwqIHB0cik7Ci0gICAgSlNWYWx1ZShjb25zdCBKU0Nl
bGwqIHB0cik7Ci0KLSAgICAvLyBOdW1iZXJzCi0gICAgSlNWYWx1ZShFbmNvZGVBc0RvdWJsZVRh
ZywgZG91YmxlKTsKLSAgICBleHBsaWNpdCBKU1ZhbHVlKGRvdWJsZSk7Ci0gICAgZXhwbGljaXQg
SlNWYWx1ZShjaGFyKTsKLSAgICBleHBsaWNpdCBKU1ZhbHVlKHVuc2lnbmVkIGNoYXIpOwotICAg
IGV4cGxpY2l0IEpTVmFsdWUoc2hvcnQpOwotICAgIGV4cGxpY2l0IEpTVmFsdWUodW5zaWduZWQg
c2hvcnQpOwotICAgIGV4cGxpY2l0IEpTVmFsdWUoaW50KTsKLSAgICBleHBsaWNpdCBKU1ZhbHVl
KHVuc2lnbmVkKTsKLSAgICBleHBsaWNpdCBKU1ZhbHVlKGxvbmcpOwotICAgIGV4cGxpY2l0IEpT
VmFsdWUodW5zaWduZWQgbG9uZyk7Ci0gICAgZXhwbGljaXQgSlNWYWx1ZShsb25nIGxvbmcpOwot
ICAgIGV4cGxpY2l0IEpTVmFsdWUodW5zaWduZWQgbG9uZyBsb25nKTsKLQotICAgIG9wZXJhdG9y
IGJvb2woKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgSlNWYWx1ZSYgb3RoZXIp
IGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBKU1ZhbHVlJiBvdGhlcikgY29uc3Q7
Ci0KLSAgICBib29sIGlzSW50MzIoKSBjb25zdDsKLSAgICBib29sIGlzVUludDMyKCkgY29uc3Q7
Ci0gICAgYm9vbCBpc0RvdWJsZSgpIGNvbnN0OwotICAgIGJvb2wgaXNUcnVlKCkgY29uc3Q7Ci0g
ICAgYm9vbCBpc0ZhbHNlKCkgY29uc3Q7Ci0KLSAgICBpbnQzMl90IGFzSW50MzIoKSBjb25zdDsK
LSAgICB1aW50MzJfdCBhc1VJbnQzMigpIGNvbnN0OwotICAgIGRvdWJsZSBhc0RvdWJsZSgpIGNv
bnN0OwotICAgIGJvb2wgYXNCb29sZWFuKCkgY29uc3Q7Ci0gICAgZG91YmxlIGFzTnVtYmVyKCkg
Y29uc3Q7Ci0KLSAgICAvLyBRdWVyeWluZyB0aGUgdHlwZS4KLSAgICBib29sIGlzRW1wdHkoKSBj
b25zdDsKLSAgICBib29sIGlzRnVuY3Rpb24oKSBjb25zdDsKLSAgICBib29sIGlzVW5kZWZpbmVk
KCkgY29uc3Q7Ci0gICAgYm9vbCBpc051bGwoKSBjb25zdDsKLSAgICBib29sIGlzVW5kZWZpbmVk
T3JOdWxsKCkgY29uc3Q7Ci0gICAgYm9vbCBpc0Jvb2xlYW4oKSBjb25zdDsKLSAgICBib29sIGlz
TnVtYmVyKCkgY29uc3Q7Ci0gICAgYm9vbCBpc1N0cmluZygpIGNvbnN0OwotICAgIGJvb2wgaXNQ
cmltaXRpdmUoKSBjb25zdDsKLSAgICBib29sIGlzR2V0dGVyU2V0dGVyKCkgY29uc3Q7Ci0gICAg
Ym9vbCBpc09iamVjdCgpIGNvbnN0OwotICAgIGJvb2wgaW5oZXJpdHMoY29uc3QgQ2xhc3NJbmZv
KikgY29uc3Q7Ci0gICAgICAgIAotICAgIC8vIEV4dHJhY3RpbmcgdGhlIHZhbHVlLgotICAgIGJv
b2wgZ2V0U3RyaW5nKEV4ZWNTdGF0ZSosIFdURjo6U3RyaW5nJikgY29uc3Q7Ci0gICAgV1RGOjpT
dHJpbmcgZ2V0U3RyaW5nKEV4ZWNTdGF0ZSopIGNvbnN0OyAvLyBudWxsIHN0cmluZyBpZiBub3Qg
YSBzdHJpbmcKLSAgICBKU09iamVjdCogZ2V0T2JqZWN0KCkgY29uc3Q7IC8vIDAgaWYgbm90IGFu
IG9iamVjdAotCi0gICAgLy8gRXh0cmFjdGluZyBpbnRlZ2VyIHZhbHVlcy4KLSAgICBib29sIGdl
dFVJbnQzMih1aW50MzJfdCYpIGNvbnN0OwotICAgICAgICAKLSAgICAvLyBCYXNpYyBjb252ZXJz
aW9ucy4KLSAgICBKU1ZhbHVlIHRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1p
dGl2ZVR5cGUgPSBOb1ByZWZlcmVuY2UpIGNvbnN0OwotICAgIGJvb2wgZ2V0UHJpbWl0aXZlTnVt
YmVyKEV4ZWNTdGF0ZSosIGRvdWJsZSYgbnVtYmVyLCBKU1ZhbHVlJik7Ci0KLSAgICBib29sIHRv
Qm9vbGVhbihFeGVjU3RhdGUqKSBjb25zdDsKLQotICAgIC8vIHRvTnVtYmVyIGNvbnZlcnNpb24g
aXMgZXhwZWN0ZWQgdG8gYmUgc2lkZSBlZmZlY3QgZnJlZSBpZiBhbiBleGNlcHRpb24gaGFzCi0g
ICAgLy8gYmVlbiBzZXQgaW4gdGhlIEV4ZWNTdGF0ZSBhbHJlYWR5LgotICAgIGRvdWJsZSB0b051
bWJlcihFeGVjU3RhdGUqKSBjb25zdDsKLSAgICBKU1N0cmluZyogdG9TdHJpbmcoRXhlY1N0YXRl
KikgY29uc3Q7Ci0gICAgV1RGOjpTdHJpbmcgdG9XVEZTdHJpbmcoRXhlY1N0YXRlKikgY29uc3Q7
Ci0gICAgV1RGOjpTdHJpbmcgdG9XVEZTdHJpbmdJbmxpbmUoRXhlY1N0YXRlKikgY29uc3Q7Ci0g
ICAgSlNPYmplY3QqIHRvT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0OwotICAgIEpTT2JqZWN0KiB0
b09iamVjdChFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCopIGNvbnN0OwotCi0gICAgLy8gSW50
ZWdlciBjb252ZXJzaW9ucy4KLSAgICBKU19FWFBPUlRfUFJJVkFURSBkb3VibGUgdG9JbnRlZ2Vy
KEV4ZWNTdGF0ZSopIGNvbnN0OwotICAgIGRvdWJsZSB0b0ludGVnZXJQcmVzZXJ2ZU5hTihFeGVj
U3RhdGUqKSBjb25zdDsKLSAgICBpbnQzMl90IHRvSW50MzIoRXhlY1N0YXRlKikgY29uc3Q7Ci0g
ICAgdWludDMyX3QgdG9VSW50MzIoRXhlY1N0YXRlKikgY29uc3Q7Ci0KLSAgICAvLyBGbG9hdGlu
ZyBwb2ludCBjb252ZXJzaW9ucyAodGhpcyBpcyBhIGNvbnZlbmllbmNlIG1ldGhvZCBmb3Igd2Vi
Y29yZTsKLSAgICAvLyBzaWdubGUgcHJlY2lzaW9uIGZsb2F0IGlzIG5vdCBhIHJlcHJlc2VudGF0
aW9uIHVzZWQgaW4gSlMgb3IgSlNDKS4KLSAgICBmbG9hdCB0b0Zsb2F0KEV4ZWNTdGF0ZSogZXhl
YykgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHRvTnVtYmVyKGV4ZWMpKTsgfQot
Ci0gICAgLy8gT2JqZWN0IG9wZXJhdGlvbnMsIHdpdGggdGhlIHRvT2JqZWN0IG9wZXJhdGlvbiBp
bmNsdWRlZC4KLSAgICBKU1ZhbHVlIGdldChFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpIGNvbnN0
OwotICAgIEpTVmFsdWUgZ2V0KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
JikgY29uc3Q7Ci0gICAgSlNWYWx1ZSBnZXQoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlO
YW1lKSBjb25zdDsKLSAgICBKU1ZhbHVlIGdldChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYpIGNvbnN0OwotICAgIHZvaWQgcHV0KEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgdm9pZCBwdXRUb1By
aW1pdGl2ZShFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYpOwotICAgIHZvaWQgcHV0VG9QcmltaXRpdmVCeUluZGV4KEV4ZWNTdGF0ZSosIHVuc2lnbmVk
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7Ci0gICAgdm9pZCBwdXRC
eUluZGV4KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBz
aG91bGRUaHJvdyk7Ci0KLSAgICBKU09iamVjdCogdG9UaGlzT2JqZWN0KEV4ZWNTdGF0ZSopIGNv
bnN0OwotCi0gICAgc3RhdGljIGJvb2wgZXF1YWwoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHYx
LCBKU1ZhbHVlIHYyKTsKLSAgICBzdGF0aWMgYm9vbCBlcXVhbFNsb3dDYXNlKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2Mik7Ci0gICAgc3RhdGljIGJvb2wgZXF1YWxTbG93
Q2FzZUlubGluZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpOwotICAg
IHN0YXRpYyBib29sIHN0cmljdEVxdWFsKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2MSwgSlNW
YWx1ZSB2Mik7Ci0gICAgc3RhdGljIGJvb2wgc3RyaWN0RXF1YWxTbG93Q2FzZShFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpOwotICAgIHN0YXRpYyBib29sIHN0cmljdEVx
dWFsU2xvd0Nhc2VJbmxpbmUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYy
KTsKLQotICAgIGJvb2wgaXNDZWxsKCkgY29uc3Q7Ci0gICAgSlNDZWxsKiBhc0NlbGwoKSBjb25z
dDsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGlzVmFsaWRDYWxsZWUoKTsKLSAgICAgICAg
Ci0gICAgSlNWYWx1ZSBzdHJ1Y3R1cmVPclVuZGVmaW5lZCgpIGNvbnN0OwotCi0gICAgSlNfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7Ci0KLSAgICBKU19FWFBP
UlRfUFJJVkFURSBKU09iamVjdCogc3ludGhlc2l6ZVByb3RvdHlwZShFeGVjU3RhdGUqKSBjb25z
dDsKLQotcHJpdmF0ZToKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gSlNWYWx1ZShXcml0ZUJhcnJp
ZXJCYXNlPFQ+KTsKLQotICAgIGVudW0gSGFzaFRhYmxlRGVsZXRlZFZhbHVlVGFnIHsgSGFzaFRh
YmxlRGVsZXRlZFZhbHVlIH07Ci0gICAgSlNWYWx1ZShIYXNoVGFibGVEZWxldGVkVmFsdWVUYWcp
OwotCi0gICAgaW5saW5lIGNvbnN0IEpTVmFsdWUgYXNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuICp0
aGlzOyB9Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgZG91YmxlIHRvTnVtYmVyU2xvd0Nhc2UoRXhl
Y1N0YXRlKikgY29uc3Q7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNTdHJpbmcqIHRvU3RyaW5n
U2xvd0Nhc2UoRXhlY1N0YXRlKikgY29uc3Q7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgV1RGOjpT
dHJpbmcgdG9XVEZTdHJpbmdTbG93Q2FzZShFeGVjU3RhdGUqKSBjb25zdDsKLSAgICBKU19FWFBP
UlRfUFJJVkFURSBKU09iamVjdCogdG9PYmplY3RTbG93Q2FzZShFeGVjU3RhdGUqLCBKU0dsb2Jh
bE9iamVjdCopIGNvbnN0OwotICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0b1RoaXNP
YmplY3RTbG93Q2FzZShFeGVjU3RhdGUqKSBjb25zdDsKLQotI2lmIFVTRShKU1ZBTFVFMzJfNjQp
Ci0gICAgLyoKLSAgICAgKiBPbiAzMi1iaXQgcGxhdGZvcm1zIFVTRShKU1ZBTFVFMzJfNjQpIHNo
b3VsZCBiZSBkZWZpbmVkLCBhbmQgd2UgdXNlIGEgTmFOLWVuY29kZWQKLSAgICAgKiBmb3JtIGZv
ciBpbW1lZGlhdGVzLgotICAgICAqCi0gICAgICogVGhlIGVuY29kaW5nIG1ha2VzIHVzZSBvZiB1
bnVzZWQgTmFOIHNwYWNlIGluIHRoZSBJRUVFNzU0IHJlcHJlc2VudGF0aW9uLiAgQW55IHZhbHVl
Ci0gICAgICogd2l0aCB0aGUgdG9wIDEzIGJpdHMgc2V0IHJlcHJlc2VudHMgYSBRTmFOICh3aXRo
IHRoZSBzaWduIGJpdCBzZXQpLiAgUU5hTiB2YWx1ZXMKLSAgICAgKiBjYW4gZW5jb2RlIGEgNTEt
Yml0IHBheWxvYWQuICBIYXJkd2FyZSBwcm9kdWNlZCBhbmQgQy1saWJyYXJ5IHBheWxvYWRzIHR5
cGljYWxseQotICAgICAqIGhhdmUgYSBwYXlsb2FkIG9mIHplcm8uICBXZSBhc3N1bWUgdGhhdCBu
b24temVybyBwYXlsb2FkcyBhcmUgYXZhaWxhYmxlIHRvIGVuY29kZQotICAgICAqIHBvaW50ZXIg
YW5kIGludGVnZXIgdmFsdWVzLiAgU2luY2UgYW55IDY0LWJpdCBiaXQgcGF0dGVybiB3aGVyZSB0
aGUgdG9wIDE1IGJpdHMgYXJlCi0gICAgICogYWxsIHNldCByZXByZXNlbnRzIGEgTmFOIHdpdGgg
YSBub24temVybyBwYXlsb2FkLCB3ZSBjYW4gdXNlIHRoaXMgc3BhY2UgaW4gdGhlIE5hTgotICAg
ICAqIHJhbmdlcyB0byBlbmNvZGUgb3RoZXIgdmFsdWVzIChob3dldmVyIHRoZXJlIGFyZSBhbHNv
IG90aGVyIHJhbmdlcyBvZiBOYU4gc3BhY2UgdGhhdAotICAgICAqIGNvdWxkIGhhdmUgYmVlbiBz
ZWxlY3RlZCkuCi0gICAgICoKLSAgICAgKiBGb3IgSlNWYWx1ZXMgdGhhdCBkbyBub3QgY29udGFp
biBhIGRvdWJsZSB2YWx1ZSwgdGhlIGhpZ2ggMzIgYml0cyBjb250YWluIHRoZSB0YWcKLSAgICAg
KiB2YWx1ZXMgbGlzdGVkIGluIHRoZSBlbnVtcyBiZWxvdywgd2hpY2ggYWxsIGNvcnJlc3BvbmQg
dG8gTmFOLXNwYWNlLiBJbiB0aGUgY2FzZSBvZgotICAgICAqIGNlbGwsIGludGVnZXIgYW5kIGJv
b2wgdmFsdWVzIHRoZSBsb3dlciAzMiBiaXRzICh0aGUgJ3BheWxvYWQnKSBjb250YWluIHRoZSBw
b2ludGVyCi0gICAgICogaW50ZWdlciBvciBib29sZWFuIHZhbHVlOyBpbiB0aGUgY2FzZSBvZiBh
bGwgb3RoZXIgdGFncyB0aGUgcGF5bG9hZCBpcyAwLgotICAgICAqLwotICAgIHVpbnQzMl90IHRh
ZygpIGNvbnN0OwotICAgIGludDMyX3QgcGF5bG9hZCgpIGNvbnN0OwotCi0jaWYgRU5BQkxFKExM
SU5UX0NfTE9PUCkKLSAgICAvLyBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgYnkgdGhlIExMSW50
IEMgTG9vcCBpbnRlcnByZXRlciB3aG8gbmVlZHMKLSAgICAvLyBzeW50aGVzaXplIEpTVmFsdWUg
ZnJvbSBpdHMgInJlZ2lzdGVyInMgaG9sZGluZyB0YWcgYW5kIHBheWxvYWQKLSAgICAvLyB2YWx1
ZXMuCi0gICAgZXhwbGljaXQgSlNWYWx1ZShpbnQzMl90IHRhZywgaW50MzJfdCBwYXlsb2FkKTsK
LSNlbmRpZgotCi0jZWxpZiBVU0UoSlNWQUxVRTY0KQotICAgIC8qCi0gICAgICogT24gNjQtYml0
IHBsYXRmb3JtcyBVU0UoSlNWQUxVRTY0KSBzaG91bGQgYmUgZGVmaW5lZCwgYW5kIHdlIHVzZSBh
IE5hTi1lbmNvZGVkCi0gICAgICogZm9ybSBmb3IgaW1tZWRpYXRlcy4KLSAgICAgKgotICAgICAq
IFRoZSBlbmNvZGluZyBtYWtlcyB1c2Ugb2YgdW51c2VkIE5hTiBzcGFjZSBpbiB0aGUgSUVFRTc1
NCByZXByZXNlbnRhdGlvbi4gIEFueSB2YWx1ZQotICAgICAqIHdpdGggdGhlIHRvcCAxMyBiaXRz
IHNldCByZXByZXNlbnRzIGEgUU5hTiAod2l0aCB0aGUgc2lnbiBiaXQgc2V0KS4gIFFOYU4gdmFs
dWVzCi0gICAgICogY2FuIGVuY29kZSBhIDUxLWJpdCBwYXlsb2FkLiAgSGFyZHdhcmUgcHJvZHVj
ZWQgYW5kIEMtbGlicmFyeSBwYXlsb2FkcyB0eXBpY2FsbHkKLSAgICAgKiBoYXZlIGEgcGF5bG9h
ZCBvZiB6ZXJvLiAgV2UgYXNzdW1lIHRoYXQgbm9uLXplcm8gcGF5bG9hZHMgYXJlIGF2YWlsYWJs
ZSB0byBlbmNvZGUKLSAgICAgKiBwb2ludGVyIGFuZCBpbnRlZ2VyIHZhbHVlcy4gIFNpbmNlIGFu
eSA2NC1iaXQgYml0IHBhdHRlcm4gd2hlcmUgdGhlIHRvcCAxNSBiaXRzIGFyZQotICAgICAqIGFs
bCBzZXQgcmVwcmVzZW50cyBhIE5hTiB3aXRoIGEgbm9uLXplcm8gcGF5bG9hZCwgd2UgY2FuIHVz
ZSB0aGlzIHNwYWNlIGluIHRoZSBOYU4KLSAgICAgKiByYW5nZXMgdG8gZW5jb2RlIG90aGVyIHZh
bHVlcyAoaG93ZXZlciB0aGVyZSBhcmUgYWxzbyBvdGhlciByYW5nZXMgb2YgTmFOIHNwYWNlIHRo
YXQKLSAgICAgKiBjb3VsZCBoYXZlIGJlZW4gc2VsZWN0ZWQpLgotICAgICAqCi0gICAgICogVGhp
cyByYW5nZSBvZiBOYU4gc3BhY2UgaXMgcmVwcmVzZW50ZWQgYnkgNjQtYml0IG51bWJlcnMgYmVn
aW5pbmcgd2l0aCB0aGUgMTYtYml0Ci0gICAgICogaGV4IHBhdHRlcm5zIDB4RkZGRSBhbmQgMHhG
RkZGIC0gd2UgcmVseSBvbiB0aGUgZmFjdCB0aGF0IG5vIHZhbGlkIGRvdWJsZS1wcmVjaXNpb24K
LSAgICAgKiBudW1iZXJzIHdpbGwgYmVnaW4gZmFsbCBpbiB0aGVzZSByYW5nZXMuCi0gICAgICoK
LSAgICAgKiBUaGUgdG9wIDE2LWJpdHMgZGVub3RlIHRoZSB0eXBlIG9mIHRoZSBlbmNvZGVkIEpT
VmFsdWU6Ci0gICAgICoKLSAgICAgKiAgICAgUG9pbnRlciB7ICAwMDAwOlBQUFA6UFBQUDpQUFBQ
Ci0gICAgICogICAgICAgICAgICAgIC8gMDAwMToqKioqOioqKio6KioqKgotICAgICAqICAgICBE
b3VibGUgIHsgICAgICAgICAuLi4KLSAgICAgKiAgICAgICAgICAgICAgXCBGRkZFOioqKio6Kioq
KjoqKioqCi0gICAgICogICAgIEludGVnZXIgeyAgRkZGRjowMDAwOklJSUk6SUlJSQotICAgICAq
Ci0gICAgICogVGhlIHNjaGVtZSB3ZSBoYXZlIGltcGxlbWVudGVkIGVuY29kZXMgZG91YmxlIHBy
ZWNpc2lvbiB2YWx1ZXMgYnkgcGVyZm9ybWluZyBhCi0gICAgICogNjQtYml0IGludGVnZXIgYWRk
aXRpb24gb2YgdGhlIHZhbHVlIDJeNDggdG8gdGhlIG51bWJlci4gQWZ0ZXIgdGhpcyBtYW5pcHVs
YXRpb24KLSAgICAgKiBubyBlbmNvZGVkIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgd2lsbCBiZWdp
biB3aXRoIHRoZSBwYXR0ZXJuIDB4MDAwMCBvciAweEZGRkYuCi0gICAgICogVmFsdWVzIG11c3Qg
YmUgZGVjb2RlZCBieSByZXZlcnNpbmcgdGhpcyBvcGVyYXRpb24gYmVmb3JlIHN1YnNlcXVlbnQg
ZmxvYXRpbmcgcG9pbnQKLSAgICAgKiBvcGVyYXRpb25zIG15IGJlIHBlZm9ybWVkLgotICAgICAq
Ci0gICAgICogMzItYml0IHNpZ25lZCBpbnRlZ2VycyBhcmUgbWFya2VkIHdpdGggdGhlIDE2LWJp
dCB0YWcgMHhGRkZGLgotICAgICAqCi0gICAgICogVGhlIHRhZyAweDAwMDAgZGVub3RlcyBhIHBv
aW50ZXIsIG9yIGFub3RoZXIgZm9ybSBvZiB0YWdnZWQgaW1tZWRpYXRlLiBCb29sZWFuLAotICAg
ICAqIG51bGwgYW5kIHVuZGVmaW5lZCB2YWx1ZXMgYXJlIHJlcHJlc2VudGVkIGJ5IHNwZWNpZmlj
LCBpbnZhbGlkIHBvaW50ZXIgdmFsdWVzOgotICAgICAqCi0gICAgICogICAgIEZhbHNlOiAgICAg
MHgwNgotICAgICAqICAgICBUcnVlOiAgICAgIDB4MDcKLSAgICAgKiAgICAgVW5kZWZpbmVkOiAw
eDBhCi0gICAgICogICAgIE51bGw6ICAgICAgMHgwMgotICAgICAqCi0gICAgICogVGhlc2UgdmFs
dWVzIGhhdmUgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOgotICAgICAqIC0gQml0IDEgKFRhZ0Jp
dFR5cGVPdGhlcikgaXMgc2V0IGZvciBhbGwgZm91ciB2YWx1ZXMsIGFsbG93aW5nIHJlYWwgcG9p
bnRlcnMgdG8gYmUKLSAgICAgKiAgIHF1aWNrbHkgZGlzdGluZ3Vpc2hlZCBmcm9tIGFsbCBpbW1l
ZGlhdGUgdmFsdWVzLCBpbmNsdWRpbmcgdGhlc2UgaW52YWxpZCBwb2ludGVycy4KLSAgICAgKiAt
IFdpdGggYml0IDMgaXMgbWFza2VkIG91dCAoVGFnQml0VW5kZWZpbmVkKSBVbmRlZmluZWQgYW5k
IE51bGwgc2hhcmUgdGhlCi0gICAgICogICBzYW1lIHZhbHVlLCBhbGxvd2luZyBudWxsICYgdW5k
ZWZpbmVkIHRvIGJlIHF1aWNrbHkgZGV0ZWN0ZWQuCi0gICAgICoKLSAgICAgKiBObyB2YWxpZCBK
U1ZhbHVlIHdpbGwgaGF2ZSB0aGUgYml0IHBhdHRlcm4gMHgwLCB0aGlzIGlzIHVzZWQgdG8gcmVw
cmVzZW50IGFycmF5Ci0gICAgICogaG9sZXMsIGFuZCBhcyBhIEMrKyAnbm8gdmFsdWUnIHJlc3Vs
dCAoZS5nLiBKU1ZhbHVlKCkgaGFzIGFuIGludGVybmFsIHZhbHVlIG9mIDApLgotICAgICAqLwot
Ci0gICAgLy8gVGhlc2UgdmFsdWVzIGFyZSAjZGVmaW5lcyBzaW5jZSB1c2luZyBzdGF0aWMgY29u
c3QgaW50ZWdlcnMgaGVyZSBpcyBhIH4xJSByZWdyZXNzaW9uIQotCi0gICAgLy8gVGhpcyB2YWx1
ZSBpcyAyXjQ4LCB1c2VkIHRvIGVuY29kZSBkb3VibGVzIHN1Y2ggdGhhdCB0aGUgZW5jb2RlZCB2
YWx1ZSB3aWxsIGJlZ2luCi0gICAgLy8gd2l0aCBhIDE2LWJpdCBwYXR0ZXJuIHdpdGhpbiB0aGUg
cmFuZ2UgMHgwMDAxLi4weEZGRkUuCi0gICAgI2RlZmluZSBEb3VibGVFbmNvZGVPZmZzZXQgMHgx
MDAwMDAwMDAwMDAwbGwKLSAgICAvLyBJZiBhbGwgYml0cyBpbiB0aGUgbWFzayBhcmUgc2V0LCB0
aGlzIGluZGljYXRlcyBhbiBpbnRlZ2VyIG51bWJlciwKLSAgICAvLyBpZiBhbnkgYnV0IG5vdCBh
bGwgYXJlIHNldCB0aGlzIHZhbHVlIGlzIGEgZG91YmxlIHByZWNpc2lvbiBudW1iZXIuCi0gICAg
I2RlZmluZSBUYWdUeXBlTnVtYmVyIDB4ZmZmZjAwMDAwMDAwMDAwMGxsCi0KLSAgICAvLyBBbGwg
bm9uLW51bWVyaWMgKGJvb2wsIG51bGwsIHVuZGVmaW5lZCkgaW1tZWRpYXRlcyBoYXZlIGJpdCAy
IHNldC4KLSAgICAjZGVmaW5lIFRhZ0JpdFR5cGVPdGhlciAweDJsbAotICAgICNkZWZpbmUgVGFn
Qml0Qm9vbCAgICAgIDB4NGxsCi0gICAgI2RlZmluZSBUYWdCaXRVbmRlZmluZWQgMHg4bGwKLSAg
ICAvLyBDb21iaW5lZCBpbnRlZ2VyIHZhbHVlIGZvciBub24tbnVtZXJpYyBpbW1lZGlhdGVzLgot
ICAgICNkZWZpbmUgVmFsdWVGYWxzZSAgICAgKFRhZ0JpdFR5cGVPdGhlciB8IFRhZ0JpdEJvb2wg
fCBmYWxzZSkKLSAgICAjZGVmaW5lIFZhbHVlVHJ1ZSAgICAgIChUYWdCaXRUeXBlT3RoZXIgfCBU
YWdCaXRCb29sIHwgdHJ1ZSkKLSAgICAjZGVmaW5lIFZhbHVlVW5kZWZpbmVkIChUYWdCaXRUeXBl
T3RoZXIgfCBUYWdCaXRVbmRlZmluZWQpCi0gICAgI2RlZmluZSBWYWx1ZU51bGwgICAgICAoVGFn
Qml0VHlwZU90aGVyKQotCi0gICAgLy8gVGFnTWFzayBpcyB1c2VkIHRvIGNoZWNrIGZvciBhbGwg
dHlwZXMgb2YgaW1tZWRpYXRlIHZhbHVlcyAoZWl0aGVyIG51bWJlciBvciAnb3RoZXInKS4KLSAg
ICAjZGVmaW5lIFRhZ01hc2sgKFRhZ1R5cGVOdW1iZXIgfCBUYWdCaXRUeXBlT3RoZXIpCi0KLSAg
ICAvLyBUaGVzZSBzcGVjaWFsIHZhbHVlcyBhcmUgbmV2ZXIgdmlzaWJsZSB0byBKYXZhU2NyaXB0
IGNvZGU7IEVtcHR5IGlzIHVzZWQgdG8gcmVwcmVzZW50Ci0gICAgLy8gQXJyYXkgaG9sZXMsIGFu
ZCBmb3IgdW5pbml0aWFsaXplZCBKU1ZhbHVlcy4gRGVsZXRlZCBpcyB1c2VkIGluIGhhc2ggdGFi
bGUgY29kZS4KLSAgICAvLyBUaGVzZSB2YWx1ZXMgd291bGQgbWFwIHRvIGNlbGwgdHlwZXMgaW4g
dGhlIEpTVmFsdWUgZW5jb2RpbmcsIGJ1dCBub3QgdmFsaWQgR0MgY2VsbAotICAgIC8vIHBvaW50
ZXIgc2hvdWxkIGhhdmUgZWl0aGVyIG9mIHRoZXNlIHZhbHVlcyAoRW1wdHkgaXMgbnVsbCwgZGVs
ZXRlZCBpcyBhdCBhbiBpbnZhbGlkCi0gICAgLy8gYWxpZ25tZW50IGZvciBhIEdDIGNlbGwsIGFu
ZCBpbiB0aGUgemVybyBwYWdlKS4KLSAgICAjZGVmaW5lIFZhbHVlRW1wdHkgICAweDBsbAotICAg
ICNkZWZpbmUgVmFsdWVEZWxldGVkIDB4NGxsCi0jZW5kaWYKLQotICAgIEVuY29kZWRWYWx1ZURl
c2NyaXB0b3IgdTsKLX07Ci0KLXR5cGVkZWYgSW50SGFzaDxFbmNvZGVkSlNWYWx1ZT4gRW5jb2Rl
ZEpTVmFsdWVIYXNoOwotCi0jaWYgVVNFKEpTVkFMVUUzMl82NCkKLXN0cnVjdCBFbmNvZGVkSlNW
YWx1ZUhhc2hUcmFpdHMgOiBIYXNoVHJhaXRzPEVuY29kZWRKU1ZhbHVlPiB7Ci0gICAgc3RhdGlj
IGNvbnN0IGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IGZhbHNlOwotICAgIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBlbXB0eVZhbHVlKCkgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7
IH0KLSAgICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoRW5jb2RlZEpTVmFsdWUm
IHNsb3QpIHsgc2xvdCA9IEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKEpTVmFsdWU6Okhhc2hUYWJs
ZURlbGV0ZWRWYWx1ZSkpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUoRW5jb2Rl
ZEpTVmFsdWUgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID09IEpTVmFsdWU6OmVuY29kZShKU1ZhbHVl
KEpTVmFsdWU6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkpOyB9Ci19OwotI2Vsc2UKLXN0cnVjdCBF
bmNvZGVkSlNWYWx1ZUhhc2hUcmFpdHMgOiBIYXNoVHJhaXRzPEVuY29kZWRKU1ZhbHVlPiB7Ci0g
ICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKEVuY29kZWRKU1ZhbHVlJiBzbG90
KSB7IHNsb3QgPSBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShKU1ZhbHVlOjpIYXNoVGFibGVEZWxl
dGVkVmFsdWUpKTsgfQotICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKEVuY29kZWRKU1Zh
bHVlIHZhbHVlKSB7IHJldHVybiB2YWx1ZSA9PSBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShKU1Zh
bHVlOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpKTsgfQotfTsKLSNlbmRpZgotCi10eXBlZGVmIEhh
c2hNYXA8RW5jb2RlZEpTVmFsdWUsIHVuc2lnbmVkLCBFbmNvZGVkSlNWYWx1ZUhhc2gsIEVuY29k
ZWRKU1ZhbHVlSGFzaFRyYWl0cz4gSlNWYWx1ZU1hcDsKLQotLy8gU3RhbmQtYWxvbmUgaGVscGVy
IGZ1bmN0aW9ucy4KLWlubGluZSBKU1ZhbHVlIGpzTnVsbCgpCi17Ci0gICAgcmV0dXJuIEpTVmFs
dWUoSlNWYWx1ZTo6SlNOdWxsKTsKLX0KLQotaW5saW5lIEpTVmFsdWUganNVbmRlZmluZWQoKQot
ewotICAgIHJldHVybiBKU1ZhbHVlKEpTVmFsdWU6OkpTVW5kZWZpbmVkKTsKLX0KLQotaW5saW5l
IEpTVmFsdWUganNCb29sZWFuKGJvb2wgYikKLXsKLSAgICByZXR1cm4gYiA/IEpTVmFsdWUoSlNW
YWx1ZTo6SlNUcnVlKSA6IEpTVmFsdWUoSlNWYWx1ZTo6SlNGYWxzZSk7Ci19Ci0KLUFMV0FZU19J
TkxJTkUgSlNWYWx1ZSBqc0RvdWJsZU51bWJlcihkb3VibGUgZCkKLXsKLSAgICBBU1NFUlQoSlNW
YWx1ZShKU1ZhbHVlOjpFbmNvZGVBc0RvdWJsZSwgZCkuaXNOdW1iZXIoKSk7Ci0gICAgcmV0dXJu
IEpTVmFsdWUoSlNWYWx1ZTo6RW5jb2RlQXNEb3VibGUsIGQpOwotfQotCi1BTFdBWVNfSU5MSU5F
IEpTVmFsdWUganNOdW1iZXIoZG91YmxlIGQpCi17Ci0gICAgQVNTRVJUKEpTVmFsdWUoZCkuaXNO
dW1iZXIoKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWUoZCk7Ci19Ci0KLUFMV0FZU19JTkxJTkUgSlNW
YWx1ZSBqc051bWJlcihjaGFyIGkpCi17Ci0gICAgcmV0dXJuIEpTVmFsdWUoaSk7Ci19Ci0KLUFM
V0FZU19JTkxJTkUgSlNWYWx1ZSBqc051bWJlcih1bnNpZ25lZCBjaGFyIGkpCi17Ci0gICAgcmV0
dXJuIEpTVmFsdWUoaSk7Ci19Ci0KLUFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc051bWJlcihzaG9y
dCBpKQotewotICAgIHJldHVybiBKU1ZhbHVlKGkpOwotfQotCi1BTFdBWVNfSU5MSU5FIEpTVmFs
dWUganNOdW1iZXIodW5zaWduZWQgc2hvcnQgaSkKLXsKLSAgICByZXR1cm4gSlNWYWx1ZShpKTsK
LX0KLQotQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzTnVtYmVyKGludCBpKQotewotICAgIHJldHVy
biBKU1ZhbHVlKGkpOwotfQotCi1BTFdBWVNfSU5MSU5FIEpTVmFsdWUganNOdW1iZXIodW5zaWdu
ZWQgaSkKLXsKLSAgICByZXR1cm4gSlNWYWx1ZShpKTsKLX0KLQotQUxXQVlTX0lOTElORSBKU1Zh
bHVlIGpzTnVtYmVyKGxvbmcgaSkKLXsKLSAgICByZXR1cm4gSlNWYWx1ZShpKTsKLX0KLQotQUxX
QVlTX0lOTElORSBKU1ZhbHVlIGpzTnVtYmVyKHVuc2lnbmVkIGxvbmcgaSkKLXsKLSAgICByZXR1
cm4gSlNWYWx1ZShpKTsKLX0KLQotQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzTnVtYmVyKGxvbmcg
bG9uZyBpKQotewotICAgIHJldHVybiBKU1ZhbHVlKGkpOwotfQotCi1BTFdBWVNfSU5MSU5FIEpT
VmFsdWUganNOdW1iZXIodW5zaWduZWQgbG9uZyBsb25nIGkpCi17Ci0gICAgcmV0dXJuIEpTVmFs
dWUoaSk7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgSlNWYWx1ZSBhLCBjb25z
dCBKU0NlbGwqIGIpIHsgcmV0dXJuIGEgPT0gSlNWYWx1ZShiKTsgfQotaW5saW5lIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBKU0NlbGwqIGEsIGNvbnN0IEpTVmFsdWUgYikgeyByZXR1cm4gSlNWYWx1
ZShhKSA9PSBiOyB9Ci0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgSlNWYWx1ZSBhLCBj
b25zdCBKU0NlbGwqIGIpIHsgcmV0dXJuIGEgIT0gSlNWYWx1ZShiKTsgfQotaW5saW5lIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBKU0NlbGwqIGEsIGNvbnN0IEpTVmFsdWUgYikgeyByZXR1cm4gSlNW
YWx1ZShhKSAhPSBiOyB9Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi0jZW5kaWYgLy8gSlNWYWx1
ZV9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlSW5saW5lcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWVJbmxp
bmVzLmgJKHJldmlzaW9uIDE0MDIxNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTVmFsdWVJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNzk5ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBK
U1ZhbHVlSW5saW5lc19oCi0jZGVmaW5lIEpTVmFsdWVJbmxpbmVzX2gKLQotI2luY2x1ZGUgIklu
dGVybmFsRnVuY3Rpb24uaCIKLSNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCi0jaW5jbHVkZSAi
SlNGdW5jdGlvbi5oIgotI2luY2x1ZGUgIkpTVmFsdWUuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0K
LUFMV0FZU19JTkxJTkUgaW50MzJfdCBKU1ZhbHVlOjp0b0ludDMyKEV4ZWNTdGF0ZSogZXhlYykg
Y29uc3QKLXsKLSAgICBpZiAoaXNJbnQzMigpKQotICAgICAgICByZXR1cm4gYXNJbnQzMigpOwot
ICAgIHJldHVybiBKU0M6OnRvSW50MzIodG9OdW1iZXIoZXhlYykpOwotfQotCi1pbmxpbmUgdWlu
dDMyX3QgSlNWYWx1ZTo6dG9VSW50MzIoRXhlY1N0YXRlKiBleGVjKSBjb25zdAotewotICAgIC8v
IFNlZSBjb21tZW50IG9uIEpTQzo6dG9VSW50MzIsIGFib3ZlLgotICAgIHJldHVybiB0b0ludDMy
KGV4ZWMpOwotfQotCi1pbmxpbmUgYm9vbCBKU1ZhbHVlOjppc1VJbnQzMigpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIGlzSW50MzIoKSAmJiBhc0ludDMyKCkgPj0gMDsKLX0KLQotaW5saW5lIHVpbnQz
Ml90IEpTVmFsdWU6OmFzVUludDMyKCkgY29uc3QKLXsKLSAgICBBU1NFUlQoaXNVSW50MzIoKSk7
Ci0gICAgcmV0dXJuIGFzSW50MzIoKTsKLX0KLQotaW5saW5lIGRvdWJsZSBKU1ZhbHVlOjphc051
bWJlcigpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKGlzTnVtYmVyKCkpOwotICAgIHJldHVybiBpc0lu
dDMyKCkgPyBhc0ludDMyKCkgOiBhc0RvdWJsZSgpOwotfQotCi1pbmxpbmUgSlNWYWx1ZSBqc05h
TigpCi17Ci0gICAgcmV0dXJuIEpTVmFsdWUoUU5hTik7Ci19Ci0KLWlubGluZSBKU1ZhbHVlOjpK
U1ZhbHVlKGNoYXIgaSkKLXsKLSAgICAqdGhpcyA9IEpTVmFsdWUoc3RhdGljX2Nhc3Q8aW50MzJf
dD4oaSkpOwotfQotCi1pbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZSh1bnNpZ25lZCBjaGFyIGkpCi17
Ci0gICAgKnRoaXMgPSBKU1ZhbHVlKHN0YXRpY19jYXN0PGludDMyX3Q+KGkpKTsKLX0KLQotaW5s
aW5lIEpTVmFsdWU6OkpTVmFsdWUoc2hvcnQgaSkKLXsKLSAgICAqdGhpcyA9IEpTVmFsdWUoc3Rh
dGljX2Nhc3Q8aW50MzJfdD4oaSkpOwotfQotCi1pbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZSh1bnNp
Z25lZCBzaG9ydCBpKQotewotICAgICp0aGlzID0gSlNWYWx1ZShzdGF0aWNfY2FzdDxpbnQzMl90
PihpKSk7Ci19Ci0KLWlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKHVuc2lnbmVkIGkpCi17Ci0gICAg
aWYgKHN0YXRpY19jYXN0PGludDMyX3Q+KGkpIDwgMCkgewotICAgICAgICAqdGhpcyA9IEpTVmFs
dWUoRW5jb2RlQXNEb3VibGUsIHN0YXRpY19jYXN0PGRvdWJsZT4oaSkpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgICp0aGlzID0gSlNWYWx1ZShzdGF0aWNfY2FzdDxpbnQzMl90PihpKSk7
Ci19Ci0KLWlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKGxvbmcgaSkKLXsKLSAgICBpZiAoc3RhdGlj
X2Nhc3Q8aW50MzJfdD4oaSkgIT0gaSkgewotICAgICAgICAqdGhpcyA9IEpTVmFsdWUoRW5jb2Rl
QXNEb3VibGUsIHN0YXRpY19jYXN0PGRvdWJsZT4oaSkpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotICAgICp0aGlzID0gSlNWYWx1ZShzdGF0aWNfY2FzdDxpbnQzMl90PihpKSk7Ci19Ci0KLWlu
bGluZSBKU1ZhbHVlOjpKU1ZhbHVlKHVuc2lnbmVkIGxvbmcgaSkKLXsKLSAgICBpZiAoc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KGkpICE9IGkpIHsKLSAgICAgICAgKnRoaXMgPSBKU1ZhbHVlKEVuY29k
ZUFzRG91YmxlLCBzdGF0aWNfY2FzdDxkb3VibGU+KGkpKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICAqdGhpcyA9IEpTVmFsdWUoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGkpKTsKLX0KLQot
aW5saW5lIEpTVmFsdWU6OkpTVmFsdWUobG9uZyBsb25nIGkpCi17Ci0gICAgaWYgKHN0YXRpY19j
YXN0PGludDMyX3Q+KGkpICE9IGkpIHsKLSAgICAgICAgKnRoaXMgPSBKU1ZhbHVlKEVuY29kZUFz
RG91YmxlLCBzdGF0aWNfY2FzdDxkb3VibGU+KGkpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICAqdGhpcyA9IEpTVmFsdWUoc3RhdGljX2Nhc3Q8aW50MzJfdD4oaSkpOwotfQotCi1pbmxp
bmUgSlNWYWx1ZTo6SlNWYWx1ZSh1bnNpZ25lZCBsb25nIGxvbmcgaSkKLXsKLSAgICBpZiAoc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KGkpICE9IGkpIHsKLSAgICAgICAgKnRoaXMgPSBKU1ZhbHVlKEVu
Y29kZUFzRG91YmxlLCBzdGF0aWNfY2FzdDxkb3VibGU+KGkpKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICAqdGhpcyA9IEpTVmFsdWUoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGkpKTsKLX0K
LQotaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoZG91YmxlIGQpCi17Ci0gICAgY29uc3QgaW50MzJf
dCBhc0ludDMyID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oZCk7Ci0gICAgaWYgKGFzSW50MzIgIT0g
ZCB8fCAoIWFzSW50MzIgJiYgc2lnbmJpdChkKSkpIHsgLy8gdHJ1ZSBmb3IgLTAuMAotICAgICAg
ICAqdGhpcyA9IEpTVmFsdWUoRW5jb2RlQXNEb3VibGUsIGQpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgICp0aGlzID0gSlNWYWx1ZShzdGF0aWNfY2FzdDxpbnQzMl90PihkKSk7Ci19Ci0K
LWlubGluZSBFbmNvZGVkSlNWYWx1ZSBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSB2YWx1ZSkKLXsK
LSAgICByZXR1cm4gdmFsdWUudS5hc0ludDY0OwotfQotCi1pbmxpbmUgSlNWYWx1ZSBKU1ZhbHVl
OjpkZWNvZGUoRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEpTVmFsdWUpCi17Ci0gICAgSlNWYWx1ZSB2
OwotICAgIHYudS5hc0ludDY0ID0gZW5jb2RlZEpTVmFsdWU7Ci0gICAgcmV0dXJuIHY7Ci19Ci0K
LSNpZiBVU0UoSlNWQUxVRTMyXzY0KQotaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoKQotewotICAg
IHUuYXNCaXRzLnRhZyA9IEVtcHR5VmFsdWVUYWc7Ci0gICAgdS5hc0JpdHMucGF5bG9hZCA9IDA7
Ci19Ci0KLWlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKEpTTnVsbFRhZykKLXsKLSAgICB1LmFzQml0
cy50YWcgPSBOdWxsVGFnOwotICAgIHUuYXNCaXRzLnBheWxvYWQgPSAwOwotfQotICAgIAotaW5s
aW5lIEpTVmFsdWU6OkpTVmFsdWUoSlNVbmRlZmluZWRUYWcpCi17Ci0gICAgdS5hc0JpdHMudGFn
ID0gVW5kZWZpbmVkVGFnOwotICAgIHUuYXNCaXRzLnBheWxvYWQgPSAwOwotfQotICAgIAotaW5s
aW5lIEpTVmFsdWU6OkpTVmFsdWUoSlNUcnVlVGFnKQotewotICAgIHUuYXNCaXRzLnRhZyA9IEJv
b2xlYW5UYWc7Ci0gICAgdS5hc0JpdHMucGF5bG9hZCA9IDE7Ci19Ci0gICAgCi1pbmxpbmUgSlNW
YWx1ZTo6SlNWYWx1ZShKU0ZhbHNlVGFnKQotewotICAgIHUuYXNCaXRzLnRhZyA9IEJvb2xlYW5U
YWc7Ci0gICAgdS5hc0JpdHMucGF5bG9hZCA9IDA7Ci19Ci0KLWlubGluZSBKU1ZhbHVlOjpKU1Zh
bHVlKEhhc2hUYWJsZURlbGV0ZWRWYWx1ZVRhZykKLXsKLSAgICB1LmFzQml0cy50YWcgPSBEZWxl
dGVkVmFsdWVUYWc7Ci0gICAgdS5hc0JpdHMucGF5bG9hZCA9IDA7Ci19Ci0KLWlubGluZSBKU1Zh
bHVlOjpKU1ZhbHVlKEpTQ2VsbCogcHRyKQotewotICAgIGlmIChwdHIpCi0gICAgICAgIHUuYXNC
aXRzLnRhZyA9IENlbGxUYWc7Ci0gICAgZWxzZQotICAgICAgICB1LmFzQml0cy50YWcgPSBFbXB0
eVZhbHVlVGFnOwotICAgIHUuYXNCaXRzLnBheWxvYWQgPSByZWludGVycHJldF9jYXN0PGludDMy
X3Q+KHB0cik7Ci19Ci0KLWlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKGNvbnN0IEpTQ2VsbCogcHRy
KQotewotICAgIGlmIChwdHIpCi0gICAgICAgIHUuYXNCaXRzLnRhZyA9IENlbGxUYWc7Ci0gICAg
ZWxzZQotICAgICAgICB1LmFzQml0cy50YWcgPSBFbXB0eVZhbHVlVGFnOwotICAgIHUuYXNCaXRz
LnBheWxvYWQgPSByZWludGVycHJldF9jYXN0PGludDMyX3Q+KGNvbnN0X2Nhc3Q8SlNDZWxsKj4o
cHRyKSk7Ci19Ci0KLWlubGluZSBKU1ZhbHVlOjpvcGVyYXRvciBib29sKCkgY29uc3QKLXsKLSAg
ICBBU1NFUlQodGFnKCkgIT0gRGVsZXRlZFZhbHVlVGFnKTsKLSAgICByZXR1cm4gdGFnKCkgIT0g
RW1wdHlWYWx1ZVRhZzsKLX0KLQotaW5saW5lIGJvb2wgSlNWYWx1ZTo6b3BlcmF0b3I9PShjb25z
dCBKU1ZhbHVlJiBvdGhlcikgY29uc3QKLXsKLSAgICByZXR1cm4gdS5hc0ludDY0ID09IG90aGVy
LnUuYXNJbnQ2NDsKLX0KLQotaW5saW5lIGJvb2wgSlNWYWx1ZTo6b3BlcmF0b3IhPShjb25zdCBK
U1ZhbHVlJiBvdGhlcikgY29uc3QKLXsKLSAgICByZXR1cm4gdS5hc0ludDY0ICE9IG90aGVyLnUu
YXNJbnQ2NDsKLX0KLQotaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNFbXB0eSgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIHRhZygpID09IEVtcHR5VmFsdWVUYWc7Ci19Ci0KLWlubGluZSBib29sIEpTVmFs
dWU6OmlzVW5kZWZpbmVkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gdGFnKCkgPT0gVW5kZWZpbmVk
VGFnOwotfQotCi1pbmxpbmUgYm9vbCBKU1ZhbHVlOjppc051bGwoKSBjb25zdAotewotICAgIHJl
dHVybiB0YWcoKSA9PSBOdWxsVGFnOwotfQotCi1pbmxpbmUgYm9vbCBKU1ZhbHVlOjppc1VuZGVm
aW5lZE9yTnVsbCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGlzVW5kZWZpbmVkKCkgfHwgaXNOdWxs
KCk7Ci19Ci0KLWlubGluZSBib29sIEpTVmFsdWU6OmlzQ2VsbCgpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIHRhZygpID09IENlbGxUYWc7Ci19Ci0KLWlubGluZSBib29sIEpTVmFsdWU6OmlzSW50MzIo
KSBjb25zdAotewotICAgIHJldHVybiB0YWcoKSA9PSBJbnQzMlRhZzsKLX0KLQotaW5saW5lIGJv
b2wgSlNWYWx1ZTo6aXNEb3VibGUoKSBjb25zdAotewotICAgIHJldHVybiB0YWcoKSA8IExvd2Vz
dFRhZzsKLX0KLQotaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNUcnVlKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gdGFnKCkgPT0gQm9vbGVhblRhZyAmJiBwYXlsb2FkKCk7Ci19Ci0KLWlubGluZSBib29s
IEpTVmFsdWU6OmlzRmFsc2UoKSBjb25zdAotewotICAgIHJldHVybiB0YWcoKSA9PSBCb29sZWFu
VGFnICYmICFwYXlsb2FkKCk7Ci19Ci0KLWlubGluZSB1aW50MzJfdCBKU1ZhbHVlOjp0YWcoKSBj
b25zdAotewotICAgIHJldHVybiB1LmFzQml0cy50YWc7Ci19Ci0gICAgCi1pbmxpbmUgaW50MzJf
dCBKU1ZhbHVlOjpwYXlsb2FkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gdS5hc0JpdHMucGF5bG9h
ZDsKLX0KLSAgICAKLWlubGluZSBpbnQzMl90IEpTVmFsdWU6OmFzSW50MzIoKSBjb25zdAotewot
ICAgIEFTU0VSVChpc0ludDMyKCkpOwotICAgIHJldHVybiB1LmFzQml0cy5wYXlsb2FkOwotfQot
ICAgIAotaW5saW5lIGRvdWJsZSBKU1ZhbHVlOjphc0RvdWJsZSgpIGNvbnN0Ci17Ci0gICAgQVNT
RVJUKGlzRG91YmxlKCkpOwotICAgIHJldHVybiB1LmFzRG91YmxlOwotfQotICAgIAotQUxXQVlT
X0lOTElORSBKU0NlbGwqIEpTVmFsdWU6OmFzQ2VsbCgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKGlz
Q2VsbCgpKTsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxKU0NlbGwqPih1LmFzQml0cy5w
YXlsb2FkKTsKLX0KLQotQUxXQVlTX0lOTElORSBKU1ZhbHVlOjpKU1ZhbHVlKEVuY29kZUFzRG91
YmxlVGFnLCBkb3VibGUgZCkKLXsKLSAgICB1LmFzRG91YmxlID0gZDsKLX0KLQotaW5saW5lIEpT
VmFsdWU6OkpTVmFsdWUoaW50IGkpCi17Ci0gICAgdS5hc0JpdHMudGFnID0gSW50MzJUYWc7Ci0g
ICAgdS5hc0JpdHMucGF5bG9hZCA9IGk7Ci19Ci0KLSNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQot
aW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoaW50MzJfdCB0YWcsIGludDMyX3QgcGF5bG9hZCkKLXsK
LSAgICB1LmFzQml0cy50YWcgPSB0YWc7Ci0gICAgdS5hc0JpdHMucGF5bG9hZCA9IHBheWxvYWQ7
Ci19Ci0jZW5kaWYKLQotaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNOdW1iZXIoKSBjb25zdAotewot
ICAgIHJldHVybiBpc0ludDMyKCkgfHwgaXNEb3VibGUoKTsKLX0KLQotaW5saW5lIGJvb2wgSlNW
YWx1ZTo6aXNCb29sZWFuKCkgY29uc3QKLXsKLSAgICByZXR1cm4gaXNUcnVlKCkgfHwgaXNGYWxz
ZSgpOwotfQotCi1pbmxpbmUgYm9vbCBKU1ZhbHVlOjphc0Jvb2xlYW4oKSBjb25zdAotewotICAg
IEFTU0VSVChpc0Jvb2xlYW4oKSk7Ci0gICAgcmV0dXJuIHBheWxvYWQoKTsKLX0KLQotI2Vsc2Ug
Ly8gIVVTRShKU1ZBTFVFMzJfNjQpIGkuZS4gVVNFKEpTVkFMVUU2NCkKLQotLy8gMHgwIGNhbiBu
ZXZlciBvY2N1ciBuYXR1cmFsbHkgYmVjYXVzZSBpdCBoYXMgYSB0YWcgb2YgMDAsIGluZGljYXRp
bmcgYSBwb2ludGVyIHZhbHVlLCBidXQgYSBwYXlsb2FkIG9mIDB4MCwgd2hpY2ggaXMgaW4gdGhl
IChpbnZhbGlkKSB6ZXJvIHBhZ2UuCi1pbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZSgpCi17Ci0gICAg
dS5hc0ludDY0ID0gVmFsdWVFbXB0eTsKLX0KLQotLy8gMHg0IGNhbiBuZXZlciBvY2N1ciBuYXR1
cmFsbHkgYmVjYXVzZSBpdCBoYXMgYSB0YWcgb2YgMDAsIGluZGljYXRpbmcgYSBwb2ludGVyIHZh
bHVlLCBidXQgYSBwYXlsb2FkIG9mIDB4NCwgd2hpY2ggaXMgaW4gdGhlIChpbnZhbGlkKSB6ZXJv
IHBhZ2UuCi1pbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShIYXNoVGFibGVEZWxldGVkVmFsdWVUYWcp
Ci17Ci0gICAgdS5hc0ludDY0ID0gVmFsdWVEZWxldGVkOwotfQotCi1pbmxpbmUgSlNWYWx1ZTo6
SlNWYWx1ZShKU0NlbGwqIHB0cikKLXsKLSAgICB1LmFzSW50NjQgPSByZWludGVycHJldF9jYXN0
PHVpbnRwdHJfdD4ocHRyKTsKLX0KLQotaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoY29uc3QgSlND
ZWxsKiBwdHIpCi17Ci0gICAgdS5hc0ludDY0ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+
KGNvbnN0X2Nhc3Q8SlNDZWxsKj4ocHRyKSk7Ci19Ci0KLWlubGluZSBKU1ZhbHVlOjpvcGVyYXRv
ciBib29sKCkgY29uc3QKLXsKLSAgICByZXR1cm4gdS5hc0ludDY0OwotfQotCi1pbmxpbmUgYm9v
bCBKU1ZhbHVlOjpvcGVyYXRvcj09KGNvbnN0IEpTVmFsdWUmIG90aGVyKSBjb25zdAotewotICAg
IHJldHVybiB1LmFzSW50NjQgPT0gb3RoZXIudS5hc0ludDY0OwotfQotCi1pbmxpbmUgYm9vbCBK
U1ZhbHVlOjpvcGVyYXRvciE9KGNvbnN0IEpTVmFsdWUmIG90aGVyKSBjb25zdAotewotICAgIHJl
dHVybiB1LmFzSW50NjQgIT0gb3RoZXIudS5hc0ludDY0OwotfQotCi1pbmxpbmUgYm9vbCBKU1Zh
bHVlOjppc0VtcHR5KCkgY29uc3QKLXsKLSAgICByZXR1cm4gdS5hc0ludDY0ID09IFZhbHVlRW1w
dHk7Ci19Ci0KLWlubGluZSBib29sIEpTVmFsdWU6OmlzVW5kZWZpbmVkKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gYXNWYWx1ZSgpID09IEpTVmFsdWUoSlNVbmRlZmluZWQpOwotfQotCi1pbmxpbmUg
Ym9vbCBKU1ZhbHVlOjppc051bGwoKSBjb25zdAotewotICAgIHJldHVybiBhc1ZhbHVlKCkgPT0g
SlNWYWx1ZShKU051bGwpOwotfQotCi1pbmxpbmUgYm9vbCBKU1ZhbHVlOjppc1RydWUoKSBjb25z
dAotewotICAgIHJldHVybiBhc1ZhbHVlKCkgPT0gSlNWYWx1ZShKU1RydWUpOwotfQotCi1pbmxp
bmUgYm9vbCBKU1ZhbHVlOjppc0ZhbHNlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gYXNWYWx1ZSgp
ID09IEpTVmFsdWUoSlNGYWxzZSk7Ci19Ci0KLWlubGluZSBib29sIEpTVmFsdWU6OmFzQm9vbGVh
bigpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKGlzQm9vbGVhbigpKTsKLSAgICByZXR1cm4gYXNWYWx1
ZSgpID09IEpTVmFsdWUoSlNUcnVlKTsKLX0KLQotaW5saW5lIGludDMyX3QgSlNWYWx1ZTo6YXNJ
bnQzMigpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKGlzSW50MzIoKSk7Ci0gICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGludDMyX3Q+KHUuYXNJbnQ2NCk7Ci19Ci0KLWlubGluZSBib29sIEpTVmFsdWU6Omlz
RG91YmxlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gaXNOdW1iZXIoKSAmJiAhaXNJbnQzMigpOwot
fQotCi1pbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShKU051bGxUYWcpCi17Ci0gICAgdS5hc0ludDY0
ID0gVmFsdWVOdWxsOwotfQotICAgIAotaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoSlNVbmRlZmlu
ZWRUYWcpCi17Ci0gICAgdS5hc0ludDY0ID0gVmFsdWVVbmRlZmluZWQ7Ci19Ci0KLWlubGluZSBK
U1ZhbHVlOjpKU1ZhbHVlKEpTVHJ1ZVRhZykKLXsKLSAgICB1LmFzSW50NjQgPSBWYWx1ZVRydWU7
Ci19Ci0KLWlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKEpTRmFsc2VUYWcpCi17Ci0gICAgdS5hc0lu
dDY0ID0gVmFsdWVGYWxzZTsKLX0KLQotaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNVbmRlZmluZWRP
ck51bGwoKSBjb25zdAotewotICAgIC8vIFVuZGVmaW5lZCBhbmQgbnVsbCBzaGFyZSB0aGUgc2Ft
ZSB2YWx1ZSwgYmFyIHRoZSAndW5kZWZpbmVkJyBiaXQgaW4gdGhlIGV4dGVuZGVkIHRhZy4KLSAg
ICByZXR1cm4gKHUuYXNJbnQ2NCAmIH5UYWdCaXRVbmRlZmluZWQpID09IFZhbHVlTnVsbDsKLX0K
LQotaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNCb29sZWFuKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
KHUuYXNJbnQ2NCAmIH4xKSA9PSBWYWx1ZUZhbHNlOwotfQotCi1pbmxpbmUgYm9vbCBKU1ZhbHVl
Ojppc0NlbGwoKSBjb25zdAotewotICAgIHJldHVybiAhKHUuYXNJbnQ2NCAmIFRhZ01hc2spOwot
fQotCi1pbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0ludDMyKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
KHUuYXNJbnQ2NCAmIFRhZ1R5cGVOdW1iZXIpID09IFRhZ1R5cGVOdW1iZXI7Ci19Ci0KLWlubGlu
ZSBpbnQ2NF90IHJlaW50ZXJwcmV0RG91YmxlVG9JbnQ2NChkb3VibGUgdmFsdWUpCi17Ci0gICAg
cmV0dXJuIGJpdHdpc2VfY2FzdDxpbnQ2NF90Pih2YWx1ZSk7Ci19Ci1pbmxpbmUgZG91YmxlIHJl
aW50ZXJwcmV0SW50NjRUb0RvdWJsZShpbnQ2NF90IHZhbHVlKQotewotICAgIHJldHVybiBiaXR3
aXNlX2Nhc3Q8ZG91YmxlPih2YWx1ZSk7Ci19Ci0KLUFMV0FZU19JTkxJTkUgSlNWYWx1ZTo6SlNW
YWx1ZShFbmNvZGVBc0RvdWJsZVRhZywgZG91YmxlIGQpCi17Ci0gICAgdS5hc0ludDY0ID0gcmVp
bnRlcnByZXREb3VibGVUb0ludDY0KGQpICsgRG91YmxlRW5jb2RlT2Zmc2V0OwotfQotCi1pbmxp
bmUgSlNWYWx1ZTo6SlNWYWx1ZShpbnQgaSkKLXsKLSAgICB1LmFzSW50NjQgPSBUYWdUeXBlTnVt
YmVyIHwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGkpOwotfQotCi1pbmxpbmUgZG91YmxlIEpTVmFs
dWU6OmFzRG91YmxlKCkgY29uc3QKLXsKLSAgICBBU1NFUlQoaXNEb3VibGUoKSk7Ci0gICAgcmV0
dXJuIHJlaW50ZXJwcmV0SW50NjRUb0RvdWJsZSh1LmFzSW50NjQgLSBEb3VibGVFbmNvZGVPZmZz
ZXQpOwotfQotCi1pbmxpbmUgYm9vbCBKU1ZhbHVlOjppc051bWJlcigpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIHUuYXNJbnQ2NCAmIFRhZ1R5cGVOdW1iZXI7Ci19Ci0KLUFMV0FZU19JTkxJTkUgSlND
ZWxsKiBKU1ZhbHVlOjphc0NlbGwoKSBjb25zdAotewotICAgIEFTU0VSVChpc0NlbGwoKSk7Ci0g
ICAgcmV0dXJuIHUucHRyOwotfQotCi0jZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKLQotaW5saW5l
IGJvb2wgSlNWYWx1ZTo6aXNTdHJpbmcoKSBjb25zdAotewotICAgIHJldHVybiBpc0NlbGwoKSAm
JiBhc0NlbGwoKS0+aXNTdHJpbmcoKTsKLX0KLQotaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNQcmlt
aXRpdmUoKSBjb25zdAotewotICAgIHJldHVybiAhaXNDZWxsKCkgfHwgYXNDZWxsKCktPmlzU3Ry
aW5nKCk7Ci19Ci0KLWlubGluZSBib29sIEpTVmFsdWU6OmlzR2V0dGVyU2V0dGVyKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gaXNDZWxsKCkgJiYgYXNDZWxsKCktPmlzR2V0dGVyU2V0dGVyKCk7Ci19
Ci0KLWlubGluZSBib29sIEpTVmFsdWU6OmlzT2JqZWN0KCkgY29uc3QKLXsKLSAgICByZXR1cm4g
aXNDZWxsKCkgJiYgYXNDZWxsKCktPmlzT2JqZWN0KCk7Ci19Ci0KLWlubGluZSBib29sIEpTVmFs
dWU6OmdldFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIFN0cmluZyYgcykgY29uc3QKLXsKLSAgICBy
ZXR1cm4gaXNDZWxsKCkgJiYgYXNDZWxsKCktPmdldFN0cmluZyhleGVjLCBzKTsKLX0KLQotaW5s
aW5lIFN0cmluZyBKU1ZhbHVlOjpnZXRTdHJpbmcoRXhlY1N0YXRlKiBleGVjKSBjb25zdAotewot
ICAgIHJldHVybiBpc0NlbGwoKSA/IGFzQ2VsbCgpLT5nZXRTdHJpbmcoZXhlYykgOiBTdHJpbmco
KTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEJhc2U+IFN0cmluZyBIYW5kbGVDb252ZXJ0ZXI8
QmFzZSwgVW5rbm93bj46OmdldFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIGpzVmFsdWUoKS5nZXRTdHJpbmcoZXhlYyk7Ci19Ci0KLWlubGluZSBKU09iamVjdCog
SlNWYWx1ZTo6Z2V0T2JqZWN0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gaXNDZWxsKCkgPyBhc0Nl
bGwoKS0+Z2V0T2JqZWN0KCkgOiAwOwotfQotCi1BTFdBWVNfSU5MSU5FIGJvb2wgSlNWYWx1ZTo6
Z2V0VUludDMyKHVpbnQzMl90JiB2KSBjb25zdAotewotICAgIGlmIChpc0ludDMyKCkpIHsKLSAg
ICAgICAgaW50MzJfdCBpID0gYXNJbnQzMigpOwotICAgICAgICB2ID0gc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KGkpOwotICAgICAgICByZXR1cm4gaSA+PSAwOwotICAgIH0KLSAgICBpZiAoaXNEb3Vi
bGUoKSkgewotICAgICAgICBkb3VibGUgZCA9IGFzRG91YmxlKCk7Ci0gICAgICAgIHYgPSBzdGF0
aWNfY2FzdDx1aW50MzJfdD4oZCk7Ci0gICAgICAgIHJldHVybiB2ID09IGQ7Ci0gICAgfQotICAg
IHJldHVybiBmYWxzZTsKLX0KLQotaW5saW5lIEpTVmFsdWUgSlNWYWx1ZTo6dG9QcmltaXRpdmUo
RXhlY1N0YXRlKiBleGVjLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlIHByZWZlcnJlZFR5cGUpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIGlzQ2VsbCgpID8gYXNDZWxsKCktPnRvUHJpbWl0aXZlKGV4ZWMs
IHByZWZlcnJlZFR5cGUpIDogYXNWYWx1ZSgpOwotfQotCi1pbmxpbmUgYm9vbCBKU1ZhbHVlOjpn
ZXRQcmltaXRpdmVOdW1iZXIoRXhlY1N0YXRlKiBleGVjLCBkb3VibGUmIG51bWJlciwgSlNWYWx1
ZSYgdmFsdWUpCi17Ci0gICAgaWYgKGlzSW50MzIoKSkgewotICAgICAgICBudW1iZXIgPSBhc0lu
dDMyKCk7Ci0gICAgICAgIHZhbHVlID0gKnRoaXM7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAg
IH0KLSAgICBpZiAoaXNEb3VibGUoKSkgewotICAgICAgICBudW1iZXIgPSBhc0RvdWJsZSgpOwot
ICAgICAgICB2YWx1ZSA9ICp0aGlzOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAg
aWYgKGlzQ2VsbCgpKQotICAgICAgICByZXR1cm4gYXNDZWxsKCktPmdldFByaW1pdGl2ZU51bWJl
cihleGVjLCBudW1iZXIsIHZhbHVlKTsKLSAgICBpZiAoaXNUcnVlKCkpIHsKLSAgICAgICAgbnVt
YmVyID0gMS4wOwotICAgICAgICB2YWx1ZSA9ICp0aGlzOwotICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICB9Ci0gICAgaWYgKGlzRmFsc2UoKSB8fCBpc051bGwoKSkgewotICAgICAgICBudW1iZXIg
PSAwLjA7Ci0gICAgICAgIHZhbHVlID0gKnRoaXM7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAg
IH0KLSAgICBBU1NFUlQoaXNVbmRlZmluZWQoKSk7Ci0gICAgbnVtYmVyID0gUU5hTjsKLSAgICB2
YWx1ZSA9ICp0aGlzOwotICAgIHJldHVybiB0cnVlOwotfQotCi1BTFdBWVNfSU5MSU5FIGRvdWJs
ZSBKU1ZhbHVlOjp0b051bWJlcihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Ci17Ci0gICAgaWYgKGlz
SW50MzIoKSkKLSAgICAgICAgcmV0dXJuIGFzSW50MzIoKTsKLSAgICBpZiAoaXNEb3VibGUoKSkK
LSAgICAgICAgcmV0dXJuIGFzRG91YmxlKCk7Ci0gICAgcmV0dXJuIHRvTnVtYmVyU2xvd0Nhc2Uo
ZXhlYyk7Ci19Ci0KLWlubGluZSBKU09iamVjdCogSlNWYWx1ZTo6dG9PYmplY3QoRXhlY1N0YXRl
KiBleGVjKSBjb25zdAotewotICAgIHJldHVybiBpc0NlbGwoKSA/IGFzQ2VsbCgpLT50b09iamVj
dChleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpIDogdG9PYmplY3RTbG93Q2FzZShl
eGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOwotfQotCi1pbmxpbmUgSlNPYmplY3Qq
IEpTVmFsdWU6OnRvT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkgY29uc3QKLXsKLSAgICByZXR1cm4gaXNDZWxsKCkgPyBhc0NlbGwoKS0+dG9PYmpl
Y3QoZXhlYywgZ2xvYmFsT2JqZWN0KSA6IHRvT2JqZWN0U2xvd0Nhc2UoZXhlYywgZ2xvYmFsT2Jq
ZWN0KTsKLX0KLQotaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNGdW5jdGlvbigpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIGlzQ2VsbCgpICYmIChhc0NlbGwoKS0+aW5oZXJpdHMoJkpTRnVuY3Rpb246OnNf
aW5mbykgfHwgYXNDZWxsKCktPmluaGVyaXRzKCZJbnRlcm5hbEZ1bmN0aW9uOjpzX2luZm8pKTsK
LX0KLQotLy8gdGhpcyBtZXRob2QgaXMgaGVyZSB0byBiZSBhZnRlciB0aGUgaW5saW5lIGRlY2xh
cmF0aW9uIG9mIEpTQ2VsbDo6aW5oZXJpdHMKLWlubGluZSBib29sIEpTVmFsdWU6OmluaGVyaXRz
KGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKSBjb25zdAotewotICAgIHJldHVybiBpc0NlbGwo
KSAmJiBhc0NlbGwoKS0+aW5oZXJpdHMoY2xhc3NJbmZvKTsKLX0KLQotaW5saW5lIEpTT2JqZWN0
KiBKU1ZhbHVlOjp0b1RoaXNPYmplY3QoRXhlY1N0YXRlKiBleGVjKSBjb25zdAotewotICAgIHJl
dHVybiBpc0NlbGwoKSA/IGFzQ2VsbCgpLT5tZXRob2RUYWJsZSgpLT50b1RoaXNPYmplY3QoYXND
ZWxsKCksIGV4ZWMpIDogdG9UaGlzT2JqZWN0U2xvd0Nhc2UoZXhlYyk7Ci19Ci0KLWlubGluZSBK
U1ZhbHVlIEpTVmFsdWU6OmdldChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUpIGNvbnN0Ci17Ci0gICAgUHJvcGVydHlTbG90IHNsb3QoYXNWYWx1ZSgpKTsKLSAgICBy
ZXR1cm4gZ2V0KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7Ci19Ci0KLWlubGluZSBKU1ZhbHVl
IEpTVmFsdWU6OmdldChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYgc2xvdCkgY29uc3QKLXsKLSAgICBpZiAoVU5MSUtFTFkoIWlzQ2VsbCgp
KSkgewotICAgICAgICBKU09iamVjdCogcHJvdG90eXBlID0gc3ludGhlc2l6ZVByb3RvdHlwZShl
eGVjKTsKLSAgICAgICAgaWYgKCFwcm90b3R5cGUtPmdldFByb3BlcnR5U2xvdChleGVjLCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpKQotICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAg
ICAgIHJldHVybiBzbG90LmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFtZSk7Ci0gICAgfQotICAg
IEpTQ2VsbCogY2VsbCA9IGFzQ2VsbCgpOwotICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIGlm
IChjZWxsLT5mYXN0R2V0T3duUHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCkp
Ci0gICAgICAgICAgICByZXR1cm4gc2xvdC5nZXRWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUpOwot
ICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IGFzT2JqZWN0KGNlbGwpLT5wcm90b3R5cGUoKTsK
LSAgICAgICAgaWYgKCFwcm90b3R5cGUuaXNPYmplY3QoKSkKLSAgICAgICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwotICAgICAgICBjZWxsID0gYXNPYmplY3QocHJvdG90eXBlKTsKLSAgICB9
Ci19Ci0KLWlubGluZSBKU1ZhbHVlIEpTVmFsdWU6OmdldChFeGVjU3RhdGUqIGV4ZWMsIHVuc2ln
bmVkIHByb3BlcnR5TmFtZSkgY29uc3QKLXsKLSAgICBQcm9wZXJ0eVNsb3Qgc2xvdChhc1ZhbHVl
KCkpOwotICAgIHJldHVybiBnZXQoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKLX0KLQotaW5s
aW5lIEpTVmFsdWUgSlNWYWx1ZTo6Z2V0KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpIGNvbnN0Ci17Ci0gICAgaWYgKFVOTElLRUxZKCFp
c0NlbGwoKSkpIHsKLSAgICAgICAgSlNPYmplY3QqIHByb3RvdHlwZSA9IHN5bnRoZXNpemVQcm90
b3R5cGUoZXhlYyk7Ci0gICAgICAgIGlmICghcHJvdG90eXBlLT5nZXRQcm9wZXJ0eVNsb3QoZXhl
YywgcHJvcGVydHlOYW1lLCBzbG90KSkKLSAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwotICAgICAgICByZXR1cm4gc2xvdC5nZXRWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUpOwotICAg
IH0KLSAgICBKU0NlbGwqIGNlbGwgPSBjb25zdF9jYXN0PEpTQ2VsbCo+KGFzQ2VsbCgpKTsKLSAg
ICB3aGlsZSAodHJ1ZSkgewotICAgICAgICBpZiAoY2VsbC0+bWV0aG9kVGFibGUoKS0+Z2V0T3du
UHJvcGVydHlTbG90QnlJbmRleChjZWxsLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQotICAg
ICAgICAgICAgcmV0dXJuIHNsb3QuZ2V0VmFsdWUoZXhlYywgcHJvcGVydHlOYW1lKTsKLSAgICAg
ICAgSlNWYWx1ZSBwcm90b3R5cGUgPSBhc09iamVjdChjZWxsKS0+cHJvdG90eXBlKCk7Ci0gICAg
ICAgIGlmICghcHJvdG90eXBlLmlzT2JqZWN0KCkpCi0gICAgICAgICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKLSAgICAgICAgY2VsbCA9IHByb3RvdHlwZS5hc0NlbGwoKTsKLSAgICB9Ci19Ci0K
LWlubGluZSB2b2lkIEpTVmFsdWU6OnB1dChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKLXsKLSAg
ICBpZiAoVU5MSUtFTFkoIWlzQ2VsbCgpKSkgewotICAgICAgICBwdXRUb1ByaW1pdGl2ZShleGVj
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICBhc0NlbGwoKS0+bWV0aG9kVGFibGUoKS0+cHV0KGFzQ2VsbCgpLCBleGVjLCBwcm9wZXJ0eU5h
bWUsIHZhbHVlLCBzbG90KTsKLX0KLQotaW5saW5lIHZvaWQgSlNWYWx1ZTo6cHV0QnlJbmRleChF
eGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgYm9v
bCBzaG91bGRUaHJvdykKLXsKLSAgICBpZiAoVU5MSUtFTFkoIWlzQ2VsbCgpKSkgewotICAgICAg
ICBwdXRUb1ByaW1pdGl2ZUJ5SW5kZXgoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxk
VGhyb3cpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGFzQ2VsbCgpLT5tZXRob2RUYWJs
ZSgpLT5wdXRCeUluZGV4KGFzQ2VsbCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91
bGRUaHJvdyk7Ci19Ci0KLWlubGluZSBKU1ZhbHVlIEpTVmFsdWU6OnN0cnVjdHVyZU9yVW5kZWZp
bmVkKCkgY29uc3QKLXsKLSAgICBpZiAoaXNDZWxsKCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVl
KGFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKSk7Ci0gICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci19Ci0K
LS8vIEVDTUEgMTEuOS4zCi1pbmxpbmUgYm9vbCBKU1ZhbHVlOjplcXVhbChFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCi17Ci0gICAgaWYgKHYxLmlzSW50MzIoKSAmJiB2
Mi5pc0ludDMyKCkpCi0gICAgICAgIHJldHVybiB2MSA9PSB2MjsKLQotICAgIHJldHVybiBlcXVh
bFNsb3dDYXNlKGV4ZWMsIHYxLCB2Mik7Ci19Ci0KLUFMV0FZU19JTkxJTkUgYm9vbCBKU1ZhbHVl
OjplcXVhbFNsb3dDYXNlSW5saW5lKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2MSwgSlNWYWx1
ZSB2MikKLXsKLSAgICBkbyB7Ci0gICAgICAgIGlmICh2MS5pc051bWJlcigpICYmIHYyLmlzTnVt
YmVyKCkpCi0gICAgICAgICAgICByZXR1cm4gdjEuYXNOdW1iZXIoKSA9PSB2Mi5hc051bWJlcigp
OwotCi0gICAgICAgIGJvb2wgczEgPSB2MS5pc1N0cmluZygpOwotICAgICAgICBib29sIHMyID0g
djIuaXNTdHJpbmcoKTsKLSAgICAgICAgaWYgKHMxICYmIHMyKQotICAgICAgICAgICAgcmV0dXJu
IGFzU3RyaW5nKHYxKS0+dmFsdWUoZXhlYykgPT0gYXNTdHJpbmcodjIpLT52YWx1ZShleGVjKTsK
LQotICAgICAgICBpZiAodjEuaXNVbmRlZmluZWRPck51bGwoKSkgewotICAgICAgICAgICAgaWYg
KHYyLmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgICAgICBpZiAoIXYyLmlzQ2VsbCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgICAgIHJldHVybiB2Mi5hc0NlbGwoKS0+c3RydWN0dXJlKCktPm1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIGlmICh2Mi5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7Ci0gICAgICAgICAgICBpZiAo
IXYxLmlzQ2VsbCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAg
IHJldHVybiB2MS5hc0NlbGwoKS0+c3RydWN0dXJlKCktPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQo
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICh2
MS5pc09iamVjdCgpKSB7Ci0gICAgICAgICAgICBpZiAodjIuaXNPYmplY3QoKSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gdjEgPT0gdjI7Ci0gICAgICAgICAgICBKU1ZhbHVlIHAxID0gdjEudG9Q
cmltaXRpdmUoZXhlYyk7Ci0gICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgdjEgPSBwMTsKLSAgICAg
ICAgICAgIGlmICh2MS5pc0ludDMyKCkgJiYgdjIuaXNJbnQzMigpKQotICAgICAgICAgICAgICAg
IHJldHVybiB2MSA9PSB2MjsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAg
ICAgICAgaWYgKHYyLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgICAgIEpTVmFsdWUgcDIgPSB2Mi50
b1ByaW1pdGl2ZShleGVjKTsKLSAgICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB2MiA9IHAyOwotICAg
ICAgICAgICAgaWYgKHYxLmlzSW50MzIoKSAmJiB2Mi5pc0ludDMyKCkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIHYxID09IHYyOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQot
ICAgICAgICBpZiAoczEgfHwgczIpIHsKLSAgICAgICAgICAgIGRvdWJsZSBkMSA9IHYxLnRvTnVt
YmVyKGV4ZWMpOwotICAgICAgICAgICAgZG91YmxlIGQyID0gdjIudG9OdW1iZXIoZXhlYyk7Ci0g
ICAgICAgICAgICByZXR1cm4gZDEgPT0gZDI7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAodjEu
aXNCb29sZWFuKCkpIHsKLSAgICAgICAgICAgIGlmICh2Mi5pc051bWJlcigpKQotICAgICAgICAg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KHYxLmFzQm9vbGVhbigpKSA9PSB2Mi5h
c051bWJlcigpOwotICAgICAgICB9IGVsc2UgaWYgKHYyLmlzQm9vbGVhbigpKSB7Ci0gICAgICAg
ICAgICBpZiAodjEuaXNOdW1iZXIoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdjEuYXNOdW1i
ZXIoKSA9PSBzdGF0aWNfY2FzdDxkb3VibGU+KHYyLmFzQm9vbGVhbigpKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIHJldHVybiB2MSA9PSB2MjsKLSAgICB9IHdoaWxlICh0cnVlKTsKLX0KLQotLy8g
RUNNQSAxMS45LjMKLUFMV0FZU19JTkxJTkUgYm9vbCBKU1ZhbHVlOjpzdHJpY3RFcXVhbFNsb3dD
YXNlSW5saW5lKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKLXsKLSAg
ICBBU1NFUlQodjEuaXNDZWxsKCkgJiYgdjIuaXNDZWxsKCkpOwotCi0gICAgaWYgKHYxLmFzQ2Vs
bCgpLT5pc1N0cmluZygpICYmIHYyLmFzQ2VsbCgpLT5pc1N0cmluZygpKQotICAgICAgICByZXR1
cm4gYXNTdHJpbmcodjEpLT52YWx1ZShleGVjKSA9PSBhc1N0cmluZyh2MiktPnZhbHVlKGV4ZWMp
OwotCi0gICAgcmV0dXJuIHYxID09IHYyOwotfQotCi1pbmxpbmUgYm9vbCBKU1ZhbHVlOjpzdHJp
Y3RFcXVhbChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCi17Ci0gICAg
aWYgKHYxLmlzSW50MzIoKSAmJiB2Mi5pc0ludDMyKCkpCi0gICAgICAgIHJldHVybiB2MSA9PSB2
MjsKLQotICAgIGlmICh2MS5pc051bWJlcigpICYmIHYyLmlzTnVtYmVyKCkpCi0gICAgICAgIHJl
dHVybiB2MS5hc051bWJlcigpID09IHYyLmFzTnVtYmVyKCk7Ci0KLSAgICBpZiAoIXYxLmlzQ2Vs
bCgpIHx8ICF2Mi5pc0NlbGwoKSkKLSAgICAgICAgcmV0dXJuIHYxID09IHYyOwotCi0gICAgcmV0
dXJuIHN0cmljdEVxdWFsU2xvd0Nhc2VJbmxpbmUoZXhlYywgdjEsIHYyKTsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgSlNDCi0KLSNlbmRpZiAvLyBKU1ZhbHVlSW5saW5lc19oCi0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmgJKHJldmlzaW9uIDE0
MDIxNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMjcsOCArMjcsOCBAQAogI2RlZmluZSBMaXRlcmFsUGFyc2VyX2gK
IAogI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5j
bHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKLSNpbmNsdWRlICJKU1ZhbHVlLmgiCiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAkocmV2aXNpb24gMTQw
MjE1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNCw5ICsyNCw5IEBACiAKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJz
LmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5l
cy5oIgogI2luY2x1ZGUgIkpTUHJveHkuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgotI2luY2x1
ZGUgIkpTVmFsdWVJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuaAkocmV2
aXNpb24gMTQwMjE1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlE
ZXNjcmlwdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgUHJv
cGVydHlEZXNjcmlwdG9yX2gKICNkZWZpbmUgUHJvcGVydHlEZXNjcmlwdG9yX2gKIAotI2luY2x1
ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAKIG5hbWVzcGFjZSBKU0Mg
ewogICAgIGNsYXNzIEdldHRlclNldHRlcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb3BlcnR5U2xvdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCShyZXZpc2lvbiAxNDAyMTUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjEs
NyArMjEsNyBAQAogI2lmbmRlZiBQcm9wZXJ0eVNsb3RfaAogI2RlZmluZSBQcm9wZXJ0eVNsb3Rf
aAogCi0jaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNs
dWRlICJQcm9wZXJ0eU5hbWUuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU9mZnNldC5oIgogI2luY2x1
ZGUgIlJlZ2lzdGVyLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90
ZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdGVj
dC5oCShyZXZpc2lvbiAxNDAyMTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm90ZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKICNkZWZpbmUgUHJvdGVj
dF9oCiAKICNpbmNsdWRlICJIZWFwLmgiCi0jaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUg
IkpTQ0pTVmFsdWUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMTQw
MjE1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjQsMTEgKzI0LDExIEBACiAjaW5jbHVkZSAiQXJyYXlQcm90
b3R5cGUuaCIKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNs
dWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpT
T2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJKU1N0cmluZ0J1aWxk
ZXIuaCIKLSNpbmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiT2JqZWN0UHJvdG90eXBlLmgi
CiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlJlZ0V4cE9iamVjdC5oIgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHJldmlzaW9uIDE0
MDIxNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOCw5ICsyOCw5IEBACiAKICNpbmNsdWRlICJDbGFzc0luZm8uaCIKICNp
bmNsdWRlICJJbmRleGluZ1R5cGUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVk
ZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNUeXBlLmgiCi0jaW5jbHVkZSAiSlNWYWx1ZS5oIgog
I2luY2x1ZGUgIlByb3BlcnR5TWFwSGFzaFRhYmxlLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlOYW1l
LmgiCiAjaW5jbHVkZSAiUHJvcGVydHlOYW1lQXJyYXkuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlz
aW9uIDE0MDIxNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDI5IEBACisyMDEzLTAxLTE4ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVy
Z0BhcHBsZS5jb20+CisKKyAgICAgICAgT2JqZWN0aXZlLUMgQVBJOiBSZW5hbWUgSlNWYWx1ZS5o
L0FQSUpTVmFsdWUuaCB0byBKU0NKU1ZhbHVlLmgvSlNWYWx1ZS5oCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDczMjcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuCisKKyAgICAgICAg
V2UncmUgcmVuYW1pbmcgdGhlc2UgdHdvIGZpbGVzLCBzbyB3ZSBoYXZlIHRvIHJlcGxhY2UgdGhl
IG5hbWVzIGV2ZXJ5d2hlcmUuCisKKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9ydW50aW1l
L0pTQ0pTVmFsdWUuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRl
cnMvcnVudGltZS9KU1ZhbHVlLmguCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvcnVudGlt
ZS9KU1ZhbHVlLmg6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvSlNBcnJheUJ1ZmZl
clZpZXdIZWxwZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNv
bHZlci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20u
Y3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW50ZW50Q29uc3RydWN0b3IuY3BwOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uaDoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU05vZGVGaWx0ZXJDb25kaXRpb24uaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
YXZhU2NyaXB0Q2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDYWxs
U3RhY2tGYWN0b3J5LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5oOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oOgorICAgICAgICAq
IGJpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oOgorICAgICAgICAqIGJyaWRn
ZS9jL2NfdXRpbGl0eS5oOgorCiAyMDEzLTAxLTE4ICBTaGlueWEgS2F3YW5ha2EgIDxzaGlueWFr
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBJbnRyb2R1Y2UgaXNIVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudCBhbmQgdG9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCBpbnN0ZWFkIG9mIHRvVGV4
dEZvcm1Db250cm9sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50
aW1lL0pTQ0pTVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5n
SGVhZGVycy9ydW50aW1lL0pTQ0pTVmFsdWUuaAkocmV2aXNpb24gMTQwMTk2KQkoZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTVmFsdWUuaDoxNDAxOTYpCisr
KyBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTQ0pTVmFsdWUuaAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfSlNWYWx1
ZV9oCisjZGVmaW5lIFdlYkNvcmVfRldEX0pTVmFsdWVfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTVmFsdWUuaD4KKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hl
YWRlcnMvcnVudGltZS9KU0NKU1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Rm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9KU0NKU1ZhbHVlLmgJKHJldmlzaW9uIDE0MDE5NikK
KysrIFNvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSlNDSlNWYWx1ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAogI2lmbmRlZiBXZWJDb3JlX0ZXRF9KU1Zh
bHVlX2gKICNkZWZpbmUgV2ViQ29yZV9GV0RfSlNWYWx1ZV9oCi0jaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNWYWx1ZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0pTVmFsdWUuaD4K
ICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9K
U1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMv
cnVudGltZS9KU1ZhbHVlLmgJKHJldmlzaW9uIDE0MDIxNSkKKysrIFNvdXJjZS9XZWJDb3JlL0Zv
cndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSlNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQg
KzAsMCBAQAotI2lmbmRlZiBXZWJDb3JlX0ZXRF9KU1ZhbHVlX2gKLSNkZWZpbmUgV2ViQ29yZV9G
V0RfSlNWYWx1ZV9oCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNWYWx1ZS5oPgotI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0FycmF5QnVmZmVyVmlld0hlbHBl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXJyYXlCdWZm
ZXJWaWV3SGVscGVyLmgJKHJldmlzaW9uIDE0MDIxNSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQXJyYXlCdWZmZXJWaWV3SGVscGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDgg
KzMzLDggQEAKICNpbmNsdWRlIDxpbnRlcnByZXRlci9DYWxsRnJhbWUuaD4KICNpbmNsdWRlIDxy
dW50aW1lL0FyZ0xpc3QuaD4KICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CisjaW5jbHVkZSA8
cnVudGltZS9KU0NKU1ZhbHVlLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU09iamVjdC5oPgotI2lu
Y2x1ZGUgPHJ1bnRpbWUvSlNWYWx1ZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvT3BlcmF0aW9ucy5o
PgogI2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZlclZpZXcuaD4KICNpbmNsdWRlIDx3dGYvVHlwZWRB
cnJheUJhc2UuaD4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBh
dGhOU1Jlc29sdmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuaAkocmV2aXNpb24gMTQwMjE1KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIlhQYXRoTlNSZXNvbHZlci5oIgogI2luY2x1
ZGUgPGhlYXAvU3Ryb25nLmg+CiAjaW5jbHVkZSA8aGVhcC9TdHJvbmdJbmxpbmVzLmg+Ci0jaW5j
bHVkZSA8cnVudGltZS9KU1ZhbHVlLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlLmg+
CiAjaW5jbHVkZSA8cnVudGltZS9PcGVyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcAkocmV2aXNp
b24gMTQwMjE1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVj
dGlvbkN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRl
ICJKU05vZGVMaXN0LmgiCiAjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIlN0YXRpY05vZGVM
aXN0LmgiCi0jaW5jbHVkZSA8cnVudGltZS9KU1ZhbHVlLmg+CisjaW5jbHVkZSA8cnVudGltZS9K
U0NKU1ZhbHVlLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0F0b21pY1N0cmluZy5oPgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lu
dGVudENvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0ludGVudENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMTQwMjE1KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnRlbnRDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIyLDEwICsyMiwxMCBAQAogCiAjaW5jbHVkZSAiRGljdGlvbmFyeS5oIgogI2luY2x1
ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAi
SlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNJbnRlbnQuaCIKICNpbmNsdWRlICJKU01lc3Nh
Z2VQb3J0Q3VzdG9tLmgiCi0jaW5jbHVkZSAiSlNWYWx1ZS5oIgogI2luY2x1ZGUgPHJ1bnRpbWUv
RXJyb3IuaD4KICNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KIApJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uaAkocmV2aXNpb24g
MTQwMjE1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3Rv
bS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAjZGVmaW5lIEpTTWVzc2FnZVBv
cnRDdXN0b21faAogCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKLSNpbmNsdWRlIDxydW50aW1l
L0pTVmFsdWUuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWUuaD4KICNpbmNsdWRlIDxy
dW50aW1lL09wZXJhdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDb25kaXRpb24uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDb25kaXRpb24u
aAkocmV2aXNpb24gMTQwMjE1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2Rl
RmlsdGVyQ29uZGl0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyLDcgKzIyLDcgQEAKIAogI2lu
Y2x1ZGUgIk5vZGVGaWx0ZXJDb25kaXRpb24uaCIKICNpbmNsdWRlIDxoZWFwL1dlYWsuaD4KLSNp
bmNsdWRlIDxydW50aW1lL0pTVmFsdWUuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWUu
aD4KICNpbmNsdWRlIDxydW50aW1lL09wZXJhdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KYXZhU2NyaXB0Q2Fs
bEZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KYXZh
U2NyaXB0Q2FsbEZyYW1lLmNwcAkocmV2aXNpb24gMTQwMjE1KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMz
LDEwICszMywxMCBAQAogI2luY2x1ZGUgIkpTRE9NV2luZG93QmFzZS5oIgogI2luY2x1ZGUgPGRl
YnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmg+CiAjaW5jbHVkZSA8cnVudGltZS9Db21wbGV0aW9u
Lmg+CisjaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlLmg+CiAjaW5jbHVkZSA8cnVudGltZS9K
U0dsb2JhbE9iamVjdC5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CiAjaW5jbHVkZSA8
cnVudGltZS9KU09iamVjdC5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNWYWx1ZS5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrRmFj
dG9yeS5jcHAJKHJldmlzaW9uIDE0MDIxNSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw5ICs0Miw5
IEBACiAjaW5jbHVkZSA8aW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmg+CiAjaW5jbHVkZSA8aW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuaD4KICNpbmNsdWRlIDxydW50aW1lL0FyZ0xpc3QuaD4KKyNpbmNs
dWRlIDxydW50aW1lL0pTQ0pTVmFsdWUuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTRnVuY3Rpb24u
aD4KICNpbmNsdWRlIDxydW50aW1lL0pTR2xvYmFsRGF0YS5oPgotI2luY2x1ZGUgPHJ1bnRpbWUv
SlNWYWx1ZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiB1c2luZyBuYW1l
c3BhY2UgSlNDOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0VmFsdWUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5o
CShyZXZpc2lvbiAxNDAyMTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRW
YWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSAiU2NyaXB0
U3RhdGUuaCIKICNpbmNsdWRlIDxoZWFwL1N0cm9uZy5oPgogI2luY2x1ZGUgPGhlYXAvU3Ryb25n
SW5saW5lcy5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNWYWx1ZS5oPgorI2luY2x1ZGUgPHJ1bnRp
bWUvSlNDSlNWYWx1ZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvT3BlcmF0aW9ucy5oPgogI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0
VmFsdWUuaAkocmV2aXNpb24gMTQwMjE1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAK
IAogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSA8aGVhcC9TdHJvbmcuaD4KLSNp
bmNsdWRlIDxydW50aW1lL0pTVmFsdWUuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWUu
aD4KICNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9vYmpjL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaAkocmV2aXNpb24g
MTQwMjE1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9XZWJTY3JpcHRPYmplY3RQ
cml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICNkZWZpbmUgX1dFQl9T
Q1JJUFRfT0JKRUNUX1BSSVZBVEVfSF8KIAogI2ltcG9ydCAiV2ViU2NyaXB0T2JqZWN0LmgiCi0j
aW1wb3J0IDxydW50aW1lL0pTVmFsdWUuaD4KKyNpbXBvcnQgPHJ1bnRpbWUvSlNDSlNWYWx1ZS5o
PgogI2ltcG9ydCA8d3RmL1Bhc3NSZWZQdHIuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX3V0aWxpdHkuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvYy9jX3V0aWxpdHkuaAkocmV2aXNpb24gMTQwMjE1KQorKysgU291cmNl
L1dlYkNvcmUvYnJpZGdlL2MvY191dGlsaXR5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5
LDcgQEAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKIAogI2luY2x1ZGUgIm5wcnVu
dGltZV9pbnRlcm5hbC5oIgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNWYWx1ZS5oPgorI2luY2x1ZGUg
PHJ1bnRpbWUvSlNDSlNWYWx1ZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvT3BlcmF0aW9ucy5oPgog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MDIx
NSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDE0IEBACisyMDEzLTAxLTE4ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgT2JqZWN0aXZlLUMgQVBJOiBSZW5hbWUgSlNWYWx1ZS5oL0FQSUpTVmFs
dWUuaCB0byBKU0NKU1ZhbHVlLmgvSlNWYWx1ZS5oCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDczMjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBXZSdyZSByZW5hbWluZyB0aGVzZSB0d28gZmlsZXMsIHNv
IHdlIGhhdmUgdG8gcmVwbGFjZSB0aGUgbmFtZXMgZXZlcnl3aGVyZS4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKwogMjAxMy0wMS0xOCAgSHVhbmcgRG9uZ3N1
bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAogICAgICAgICBDb29yZGluYXRlZCBHcmFw
aGljczogQ29vcmRpbmF0ZWRUaWxlOjp1cGRhdGVCYWNrQnVmZmVyKCkgcmV0dXJucyBhIGRpcnR5
IHJlY3QuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCShyZXZpc2lvbiAxNDAyMTUpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNyw4ICsxMjcsOCBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvVGV4dEl0ZXJhdG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9WaXNpYmxl
UG9zaXRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL21hcmt1cC5oPgorI2luY2x1ZGUgPHJ1bnRp
bWUvSlNDSlNWYWx1ZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+Ci0jaW5jbHVkZSA8
cnVudGltZS9KU1ZhbHVlLmg+CiAjaW5jbHVkZSA8cnVudGltZS9PcGVyYXRpb25zLmg+CiAKICNp
ZiBFTkFCTEUoTUhUTUwpCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNDAyMTUpCisr
KyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NiBAQAorMjAxMy0wMS0xOCAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29t
PgorCisgICAgICAgIE9iamVjdGl2ZS1DIEFQSTogUmVuYW1lIEpTVmFsdWUuaC9BUElKU1ZhbHVl
LmggdG8gSlNDSlNWYWx1ZS5oL0pTVmFsdWUuaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3MzI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV2UncmUgcmVuYW1pbmcgdGhlc2UgdHdvIGZpbGVzLCBzbyB3
ZSBoYXZlIHRvIHJlcGxhY2UgdGhlIG5hbWVzIGV2ZXJ5d2hlcmUuCisKKyAgICAgICAgKiBET00v
V2ViRE9NT3BlcmF0aW9ucy5tbToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKwogMjAxMy0wMS0xOCAgU2Vva2p1IEt3b24gIDxz
ZW9ranUua3dvbkBnbWFpbC5jb20+CiAKICAgICAgICAgQWRkIGV4cGxpY2l0IGtleXdvcmQgdG8g
Y29uc3RydWN0b3JzIGluIHBsYXRmb3JtLXNwZWNpZmljIEluc3BlY3RvckNsaWVudApJbmRleDog
U291cmNlL1dlYktpdC9tYWMvRE9NL1dlYkRPTU9wZXJhdGlvbnMubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9tYWMvRE9NL1dlYkRPTU9wZXJhdGlvbnMubW0JKHJldmlzaW9uIDE0MDIx
NSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0RPTS9XZWJET01PcGVyYXRpb25zLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC01MSw3ICs1MSw3IEBACiAjaW1wb3J0IDxXZWJLaXQvRE9NRXh0ZW5zaW9ucy5o
PgogI2ltcG9ydCA8V2ViS2l0L0RPTUhUTUwuaD4KICNpbXBvcnQgPHJ1bnRpbWUvSlNMb2NrLmg+
Ci0jaW1wb3J0IDxydW50aW1lL0pTVmFsdWUuaD4KKyNpbXBvcnQgPHJ1bnRpbWUvSlNDSlNWYWx1
ZS5oPgogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0JKHJldmlzaW9uIDE0
MDIxNSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTk3LDcgKzk3LDcgQEAKICNpbXBvcnQgPFdlYktpdFN5c3RlbUludGVyZmFjZS5o
PgogI2ltcG9ydCA8cnVudGltZS9KU0xvY2suaD4KICNpbXBvcnQgPHJ1bnRpbWUvSlNPYmplY3Qu
aD4KLSNpbXBvcnQgPHJ1bnRpbWUvSlNWYWx1ZS5oPgorI2ltcG9ydCA8cnVudGltZS9KU0NKU1Zh
bHVlLmg+CiAjaW1wb3J0IDx3dGYvQ3VycmVudFRpbWUuaD4KIAogdXNpbmcgbmFtZXNwYWNlIHN0
ZDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9uIDE0MDIx
NSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5
KQpAQCAtMTg4LDcgKzE4OCw3IEBACiAjaW1wb3J0IDxydW50aW1lL0RhdGVJbnN0YW5jZS5oPgog
I2ltcG9ydCA8cnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+CiAjaW1wb3J0IDxydW50aW1l
L0pTTG9jay5oPgotI2ltcG9ydCA8cnVudGltZS9KU1ZhbHVlLmg+CisjaW1wb3J0IDxydW50aW1l
L0pTQ0pTVmFsdWUuaD4KICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW1wb3J0IDx3dGYv
SGFzaFRyYWl0cy5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183809</attachid>
            <date>2013-01-21 11:36:49 -0800</date>
            <delta_ts>2013-01-21 12:03:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107327-20130121113349.patch</filename>
            <type>text/plain</type>
            <size>198207</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQwMzQ2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkxIEBA
CisyMDEzLTAxLTE4ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgT2JqZWN0aXZlLUMgQVBJOiBSZW5hbWUgSlNWYWx1ZS5oL0FQSUpTVmFsdWUuaCB0
byBKU0NKU1ZhbHVlLmgvSlNWYWx1ZS5oCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDczMjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBXZSdyZSByZW5hbWluZyB0aGVzZSB0d28gZmlsZXMsIHNvIHdlIGhh
dmUgdG8gcmVwbGFjZSB0aGUgbmFtZXMgZXZlcnl3aGVyZS4KKworICAgICAgICAqIEFQSS9BUElD
YXN0Lmg6CisgICAgICAgICogQVBJL0FQSUpTVmFsdWUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBB
UEkvSlNCbG9ja0FkYXB0b3IubW06CisgICAgICAgICogQVBJL0pTU3RyaW5nUmVmQ0YuY3BwOgor
ICAgICAgICAqIEFQSS9KU1ZhbHVlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvQVBJSlNWYWx1ZS5oLgorICAgICAgICAqIEFQSS9KU1ZhbHVlLm1tOgorICAgICAgICAq
IEFQSS9KU1ZhbHVlSW50ZXJuYWwuaDoKKyAgICAgICAgKiBBUEkvSlNWYWx1ZVJlZi5jcHA6Cisg
ICAgICAgICogQVBJL0pTV2Vha09iamVjdE1hcFJlZlByaXZhdGUuY3BwOgorICAgICAgICAqIEFQ
SS9KU1dyYXBwZXJNYXAubW06CisgICAgICAgICgtW0pTV3JhcHBlck1hcCB3cmFwcGVyRm9yT2Jq
ZWN0Ol0pOgorICAgICAgICAqIEFQSS9KYXZhU2NyaXB0Q29yZS5oOgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnl0ZWNvZGUv
Q2FsbExpbmtTdGF0dXMuaDoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAg
ICAgICAqIGJ5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaDoKKyAgICAgICAg
KiBieXRlY29kZS9SZXNvbHZlR2xvYmFsU3RhdHVzLmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9S
ZXNvbHZlR2xvYmFsU3RhdHVzLmg6CisgICAgICAgICogYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUu
aDoKKyAgICAgICAgKiBieXRlY29kZS9WYWx1ZVJlY292ZXJ5Lmg6CisgICAgICAgICogZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuY3BwOgor
ICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgICog
aGVhcC9Db3BpZWRCbG9jay5oOgorICAgICAgICAqIGhlYXAvSGFuZGxlU3RhY2suY3BwOgorICAg
ICAgICAqIGhlYXAvSGFuZGxlVHlwZXMuaDoKKyAgICAgICAgKiBoZWFwL1dlYWtJbXBsLmg6Cisg
ICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKiBpbnRlcnByZXRl
ci9SZWdpc3Rlci5oOgorICAgICAgICAqIGludGVycHJldGVyL1ZNSW5zcGVjdG9yLmg6CisgICAg
ICAgICogaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwOgorICAgICAgICAqIGppdC9Ib3N0Q2Fs
bFJldHVyblZhbHVlLmg6CisgICAgICAgICogaml0L0pJVENvZGUuaDoKKyAgICAgICAgKiBqaXQv
SklURXhjZXB0aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVEV4Y2VwdGlvbnMuaDoKKyAgICAg
ICAgKiBqaXQvSlNJbnRlcmZhY2VKSVQuaDoKKyAgICAgICAgKiBsbGludC9MTEludENMb29wLmg6
CisgICAgICAgICogbGxpbnQvTExJbnREYXRhLmg6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVyQnl0ZWNvZGUuaDoKKyAgICAg
ICAgKiBwcm9maWxlci9Qcm9maWxlckJ5dGVjb2RlU2VxdWVuY2UuaDoKKyAgICAgICAgKiBwcm9m
aWxlci9Qcm9maWxlckJ5dGVjb2Rlcy5oOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVyQ29t
cGlsYXRpb24uaDoKKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxlckNvbXBpbGVkQnl0ZWNvZGUu
aDoKKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxlckRhdGFiYXNlLmg6CisgICAgICAgICogcHJv
ZmlsZXIvUHJvZmlsZXJPU1JFeGl0Lmg6CisgICAgICAgICogcHJvZmlsZXIvUHJvZmlsZXJPU1JF
eGl0U2l0ZS5oOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVyT3JpZ2luLmg6CisgICAgICAg
ICogcHJvZmlsZXIvUHJvZmlsZXJPcmlnaW5TdGFjay5oOgorICAgICAgICAqIHJ1bnRpbWUvQXJn
TGlzdC5jcHA6CisgICAgICAgICogcnVudGltZS9DYWNoZWRUcmFuc2NlbmRlbnRhbEZ1bmN0aW9u
Lmg6CisgICAgICAgICogcnVudGltZS9DYWxsRGF0YS5oOgorICAgICAgICAqIHJ1bnRpbWUvQ29t
cGxldGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvQ29uc3RydWN0RGF0YS5oOgorICAgICAgICAq
IHJ1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0RhdGVJbnN0
YW5jZS5jcHA6CisgICAgICAgICogcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcDoKKyAgICAgICAg
KiBydW50aW1lL0pTQVBJVmFsdWVXcmFwcGVyLmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1Zh
bHVlLmNwcDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1
ZS5jcHAuCisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmg6IENvcGllZCBmcm9tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaC4KKyAgICAgICAgKEpTVmFsdWUpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaDogQ29waWVkIGZyb20gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZUlubGluZXMuaC4KKyAgICAgICAgKiBydW50
aW1lL0pTR2xvYmFsRGF0YS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTU3RyaW5nSm9pbmVyLmg6CisgICAgICAgICogcnVudGltZS9KU1ZhbHVlLmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBydW50aW1lL0pTVmFsdWUuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBydW50aW1lL0pTVmFsdWVJbmxpbmVzLmg6IFJlbW92ZWQuCisgICAgICAgICogcnVudGlt
ZS9MaXRlcmFsUGFyc2VyLmg6CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmg6CisgICAg
ICAgICogcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL1By
b3BlcnR5U2xvdC5oOgorICAgICAgICAqIHJ1bnRpbWUvUHJvdGVjdC5oOgorICAgICAgICAqIHJ1
bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5o
OgorCiAyMDEzLTAxLTIwICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgV2VhayBHQyBtYXBzIHNob3VsZCBiZSBlYXNpZXIgdG8gdXNlCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxNDAzNDYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTI0Nyw3ICsyNDcs
NyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIHJ1bnRpbWUvSlNTdHJpbmcuY3Bw
CiAgICAgcnVudGltZS9KU1N0cmluZ0pvaW5lci5jcHAKICAgICBydW50aW1lL0pTU3ltYm9sVGFi
bGVPYmplY3QuY3BwCi0gICAgcnVudGltZS9KU1ZhbHVlLmNwcAorICAgIHJ1bnRpbWUvSlNDSlNW
YWx1ZS5jcHAKICAgICBydW50aW1lL0pTVmFyaWFibGVPYmplY3QuY3BwCiAgICAgcnVudGltZS9K
U1dyYXBwZXJPYmplY3QuY3BwCiAgICAgcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDE0MDM0
NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5n
IGNvcHkpCkBAIC02NDYsOSArNjQ2LDkgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oIFwKIAlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oIFwKLQlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1ZhbHVlLmNwcCBcCi0JU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1
ZS5oIFwKLQlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlSW5saW5lcy5oIFwK
KwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcCBcCisJU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oIFwKKwlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1dpdGhTY29wZS5oIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQu
cHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCShyZXZp
c2lvbiAxNDAzNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQkod29ya2lu
ZyBjb3B5KQpAQCAtMjY2LDcgKzI2Niw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHJ1bnRpbWUvSlNT
dHJpbmcuY3BwIFwKICAgICBydW50aW1lL0pTU3RyaW5nSm9pbmVyLmNwcCBcCiAgICAgcnVudGlt
ZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcCBcCi0gICAgcnVudGltZS9KU1ZhbHVlLmNwcCBcCisg
ICAgcnVudGltZS9KU0NKU1ZhbHVlLmNwcCBcCiAgICAgcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0
LmNwcCBcCiAgICAgcnVudGltZS9KU1dyYXBwZXJPYmplY3QuY3BwIFwKICAgICBydW50aW1lL0xp
dGVyYWxQYXJzZXIuY3BwIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJQ2Fz
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJQ2FzdC5oCShy
ZXZpc2lvbiAxNDAzNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhc3QuaAko
d29ya2luZyBjb3B5KQpAQCAtMjcsOCArMjcsOCBAQAogI2RlZmluZSBBUElDYXN0X2gKIAogI2lu
Y2x1ZGUgIkpTQVBJVmFsdWVXcmFwcGVyLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2lu
Y2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCi0jaW5jbHVkZSAiSlNWYWx1ZS5oIgogI2luY2x1ZGUg
PHd0Zi9VbnVzZWRQYXJhbS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvQVBJSlNWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvQVBJSlNWYWx1ZS5oCShyZXZpc2lvbiAxNDAzNDYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0FQSUpTVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMSwyOTMgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWYg
SlNfT0JKQ19BUElfRU5BQkxFRAotCi1AY2xhc3MgSlNDb250ZXh0OwotCi0vLyBBIEpTVmFsdWUg
aXMgYSByZWZlcmVuY2UgdG8gYSB2YWx1ZSB3aXRoaW4gdGhlIEphdmFTY3JpcHQgb2JqZWN0IHNw
YWNlIG9mIGEKLS8vIEpTVmlydHVhbE1hY2hpbmUuIEFsbCBpbnN0YW5jZXMgb2YgSlNWYWx1ZSBv
cmlnaW5hdGUgZnJvbSBhIEpTQ29udGV4dCBhbmQKLS8vIGhvbGQgYSBzdHJvbmcgcmVmZXJlbmNl
IHRvIHRoaXMgSlNDb250ZXh0LiBBcyBsb25nIGFzIGFueSB2YWx1ZSBhc3NvY2lhdGVkIHdpdGgg
Ci0vLyBhIHBhcnRpY3VsYXIgSlNDb250ZXh0IGlzIHJldGFpbmVkLCB0aGF0IEpTQ29udGV4dCB3
aWxsIHJlbWFpbiBhbGl2ZS4gCi0vLyBXaGVyZSBhbiBpbnN0YW5jZSBtZXRob2QgaXMgaW52b2tl
ZCB1cG9uIGEgSlNWYWx1ZSwgYW5kIHRoaXMgcmV0dXJucyBhbm90aGVyIAotLy8gSlNWYWx1ZSwg
dGhlIHJldHVybmVkIEpTVmFsdWUgd2lsbCBvcmlnaW5hdGUgZnJvbSB0aGUgc2FtZSBKU0NvbnRl
eHQgYXMgdGhlIAotLy8gSlNWYWx1ZSBvbiB3aGljaCB0aGUgbWV0aG9kIHdhcyBpbnZva2VkLgot
Ly8KLS8vIEZvciBhbGwgbWV0aG9kcyB0YWtpbmcgYXJndW1lbnRzIG9mIHR5cGUgaWQsIGFyZ3Vt
ZW50cyB3aWxsIGJlIGNvbnZlcnRlZAotLy8gaW50byBhIEphdmFTY3JpcHQgdmFsdWUgYWNjb3Jk
aW5nIHRvIHRoZSBjb252ZXJzaW9uIHNwZWNpZmllZCBiZWxvdy4KLS8vIEFsbCBKYXZhU2NyaXB0
IHZhbHVlcyBhcmUgYXNzb2NpYXRlZCB3aXRoIGEgcGFydGljdWxhciBKU1ZpcnR1YWxNYWNoaW5l
Ci0vLyAodGhlIGFzc29jaWF0ZWQgSlNWaXJ0dWFsTWFjaGluZSBpcyBhdmFpbGFibGUgaW5kaXJl
Y3RseSB2aWEgdGhlIGNvbnRleHQKLS8vIHByb3BlcnR5KS4gQW4gaW5zdGFuY2Ugb2YgSlNWYWx1
ZSBtYXkgb25seSBiZSBwYXNzZWQgYXMgYW4gYXJndW1lbnQgdG8KLS8vIG1ldGhvZHMgb24gaW5z
dGFuY2VzIG9mIEpTVmFsdWUgYW5kIEpTQ29udGV4dCB0aGF0IGJlbG9uZyB0byB0aGUgc2FtZQot
Ly8gSlNWaXJ0dWFsTWFjaGluZSAtIHBhc3NpbmcgYSBKU1ZhbHVlIHRvIGEgbWV0aG9kIG9uIGFu
IG9iamVjdCBvcmlnaW5hdGluZwotLy8gZnJvbSBhIGRpZmZlcmVudCBKU1ZpcnR1YWxNYWNoaW5l
IHdpbGwgcmVzdWx0IGluIGFuIE9iamVjdGl2ZS1DIGV4Y2VwdGlvbgotLy8gYmVpbmcgcmFpc2Vk
LgotLy8KLS8vIENvbnZlcnNpb24gYmV0d2VlbiBPYmplY3RpdmUtQyBhbmQgSmF2YVNjcmlwdCB0
eXBlcy4KLS8vCi0vLyBXaGVuIGNvbnZlcnRpbmcgYmV0d2VlbiBKYXZhU2NyaXB0IHZhbHVlcyBh
bmQgT2JqZWN0aXZlLUMgb2JqZWN0cyBhIGNvcHkgaXMKLS8vIHBlcmZvcm1lZC4gVmFsdWVzIG9m
IHR5cGVzIGxpc3RlZCBiZWxvdyBhcmUgY29waWVkIHRvIHRoZSBjb3JyZXNwb25kaW5nCi0vLyB0
eXBlcyBvbiBjb252ZXJzaW9uIGluIGVhY2ggZGlyZWN0aW9uLiBGb3IgTlNEaWN0aW9uYXJpZXMs
IGVudHJpZXMgaW4gdGhlCi0vLyBkaWN0aW9uYXJ5IHRoYXQgYXJlIGtleWVkIGJ5IHN0cmluZ3Mg
YXJlIGNvcGllZCBvbnRvIGEgSmF2YVNjcmlwdCBvYmplY3QuCi0vLyBGb3IgZGljdGlvbmFyaWVz
IGFuZCBhcnJheXMsIGNvbnZlcnNpb24gaXMgcmVjdXJzaXZlLCB3aXRoIHRoZSBzYW1lIG9iamVj
dAotLy8gY29udmVyc2lvbiBiZWluZyBhcHBsaWVkIHRvIGFsbCBlbnRyaWVzIGluIHRoZSBjb2xs
ZWN0aW9uLgotLy8KLS8vICAgT2JqZWN0aXZlLUMgdHlwZSAgfCAgIEphdmFTY3JpcHQgdHlwZQot
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyAgICAgICAg
IG5pbCAgICAgICAgIHwgICAgIHVuZGVmaW5lZAotLy8gICAgICAgIE5TTnVsbCAgICAgICB8ICAg
ICAgICBudWxsCi0vLyAgICAgICBOU1N0cmluZyAgICAgIHwgICAgICAgc3RyaW5nCi0vLyAgICAg
ICBOU051bWJlciAgICAgIHwgICBudW1iZXIsIGJvb2xlYW4KLS8vICAgICBOU0RpY3Rpb25hcnkg
ICAgfCAgIE9iamVjdCBvYmplY3QKLS8vICAgICAgIE5TQXJyYXkgICAgICAgfCAgICBBcnJheSBv
YmplY3QKLS8vICAgICAgICBOU0RhdGUgICAgICAgfCAgICAgRGF0ZSBvYmplY3QKLS8vICAgICAg
IE5TQmxvY2sgKiAgICAgfCAgIEZ1bmN0aW9uIG9iamVjdCAqCi0vLyAgICAgICAgICBpZCAqKiAg
ICAgIHwgICBXcmFwcGVyIG9iamVjdCAqKgotLy8gICAgICAgIENsYXNzICoqKiAgICB8IENvbnN0
cnVjdG9yIG9iamVjdCAqKioKLS8vCi0vLyAqIEluc3RhbmNlcyBvZiBOU0Jsb2NrIHdpdGggc3Vw
cG9ydGVkIGFyZ3VtZW50cyB0eXBlcyB3aWxsIGJlIHByZXNlbnRlZCB0bwotLy8gSmF2YVNjcmlw
dCBhcyBhIGNhbGxhYmxlIEZ1bmN0aW9uIG9iamVjdC4gRm9yIG1vcmUgaW5mb3JtYXRpb24gb24g
c3VwcG9ydGVkCi0vLyBhcmd1bWVudCB0eXBlcyBzZWUgSlNFeHBvcnQuaC4gSWYgYSBKYXZhU2Ny
aXB0IEZ1bmN0aW9uIG9yaWdpbmF0aW5nIGZyb20gYW4KLS8vIE9iamVjdGl2ZS1DIGJsb2NrIGlz
IGNvbnZlcnRlZCBiYWNrIHRvIGFuIE9iamVjdGl2ZS1DIG9iamVjdCB0aGUgYmxvY2sgd2lsbAot
Ly8gYmUgcmV0dXJuZWQuIEFsbCBvdGhlciBKYXZhU2NyaXB0IGZ1bmN0aW9ucyB3aWxsIGJlIGNv
bnZlcnRlZCBpbiB0aGUgc2FtZQotLy8gbWFubmVyIGFzIGEgSmF2YVNjcmlwdCBvYmplY3Qgb2Yg
dHlwZSBPYmplY3QuCi0vLwotLy8gKiogRm9yIE9iamVjdGl2ZS1DIGluc3RhbmNlcyB0aGF0IGRv
IG5vdCBkZXJpdmUgZnJvbSB0aGUgc2V0IG9mIHR5cGVzIGxpc3RlZAotLy8gYWJvdmUsIGEgd3Jh
cHBlciBvYmplY3QgdG8gcHJvdmlkZSBhIHJldGFpbmluZyBoYW5kbGUgdG8gdGhlIE9iamVjdGl2
ZS1DCi0vLyBpbnN0YW5jZSBmcm9tIEphdmFTY3JpcHQuIEZvciBtb3JlIGluZm9ybWF0aW9uIG9u
IHRoZXNlIHdyYXBwZXIgb2JqZWN0cywgc2VlCi0vLyBKU0V4cG9ydC5oLiBXaGVuIGEgSmF2YVNj
cmlwdCB3cmFwcGVyIG9iamVjdCBpcyBjb252ZXJ0ZWQgYmFjayB0byBPYmplY3RpdmUtQwotLy8g
dGhlIE9iamVjdGl2ZS1DIGluc3RhbmNlIGJlaW5nIHJldGFpbmVkIGJ5IHRoZSB3cmFwcGVyIGlz
IHJldHVybmVkLgotLy8KLS8vICoqKiBGb3IgT2JqZWN0aXZlLUMgQ2xhc3Mgb2JqZWN0cyBhIGNv
bnN0cnVjdG9yIG9iamVjdCBjb250YWluaW5nIGV4cG9ydGVkCi0vLyBjbGFzcyBtZXRob2RzIHdp
bGwgYmUgcmV0dXJuZWQuIFNlZSBKU0V4cG9ydC5oIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uCi0v
LyBjb25zdHJ1Y3RvciBvYmplY3RzLgotCi1OU19DTEFTU19BVkFJTEFCTEUoMTBfOSwgTkEpCi1A
aW50ZXJmYWNlIEpTVmFsdWUgOiBOU09iamVjdAotCi0vLyBDcmVhdGUgYSBKU1ZhbHVlIGJ5IGNv
bnZlcnRpbmcgYW4gT2JqZWN0aXZlLUMgb2JqZWN0LgotKyAoSlNWYWx1ZSAqKXZhbHVlV2l0aE9i
amVjdDooaWQpdmFsdWUgaW5Db250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0OwotLy8gQ3JlYXRl
IGEgSmF2YVNjcmlwdCB2YWx1ZSBmcm9tIGFuIE9iamVjdGl2ZS1DIHByaW1pdGl2ZSB0eXBlLgot
KyAoSlNWYWx1ZSAqKXZhbHVlV2l0aEJvb2w6KEJPT0wpdmFsdWUgaW5Db250ZXh0OihKU0NvbnRl
eHQgKiljb250ZXh0OwotKyAoSlNWYWx1ZSAqKXZhbHVlV2l0aERvdWJsZTooZG91YmxlKXZhbHVl
IGluQ29udGV4dDooSlNDb250ZXh0ICopY29udGV4dDsKLSsgKEpTVmFsdWUgKil2YWx1ZVdpdGhJ
bnQzMjooaW50MzJfdCl2YWx1ZSBpbkNvbnRleHQ6KEpTQ29udGV4dCAqKWNvbnRleHQ7Ci0rIChK
U1ZhbHVlICopdmFsdWVXaXRoVUludDMyOih1aW50MzJfdCl2YWx1ZSBpbkNvbnRleHQ6KEpTQ29u
dGV4dCAqKWNvbnRleHQ7Ci0vLyBDcmVhdGUgYSBKYXZhU2NyaXB0IHZhbHVlIGluIHRoaXMgY29u
dGV4dC4KLSsgKEpTVmFsdWUgKil2YWx1ZVdpdGhOZXdPYmplY3RJbkNvbnRleHQ6KEpTQ29udGV4
dCAqKWNvbnRleHQ7Ci0rIChKU1ZhbHVlICopdmFsdWVXaXRoTmV3QXJyYXlJbkNvbnRleHQ6KEpT
Q29udGV4dCAqKWNvbnRleHQ7Ci0rIChKU1ZhbHVlICopdmFsdWVXaXRoTmV3UmVndWxhckV4cHJl
c3Npb25Gcm9tUGF0dGVybjooTlNTdHJpbmcgKilwYXR0ZXJuIGZsYWdzOihOU1N0cmluZyAqKWZs
YWdzIGluQ29udGV4dDooSlNDb250ZXh0ICopY29udGV4dDsKLSsgKEpTVmFsdWUgKil2YWx1ZVdp
dGhOZXdFcnJvckZyb21NZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2UgaW5Db250ZXh0OihKU0Nv
bnRleHQgKiljb250ZXh0OwotKyAoSlNWYWx1ZSAqKXZhbHVlV2l0aE51bGxJbkNvbnRleHQ6KEpT
Q29udGV4dCAqKWNvbnRleHQ7Ci0rIChKU1ZhbHVlICopdmFsdWVXaXRoVW5kZWZpbmVkSW5Db250
ZXh0OihKU0NvbnRleHQgKiljb250ZXh0OwotCi0vLyBDb252ZXJ0IHRoaXMgdmFsdWUgdG8gYSBj
b3JyZXNwb25kaW5nIE9iamVjdGl2ZS1DIG9iamVjdCwgYWNjb3JkaW5nIHRvIHRoZQotLy8gY29u
dmVyc2lvbiBzcGVjaWZpZWQgYWJvdmUuCi0tIChpZCl0b09iamVjdDsKLS8vIENvbnZlcnQgdGhp
cyB2YWx1ZSB0byBhIGNvcnJlc3BvbmRpbmcgT2JqZWN0aXZlLUMgb2JqZWN0LCBpZiB0aGUgcmVz
dWx0IGlzCi0vLyBub3Qgb2YgdGhlIHNwZWNpZmllZCBjbGFzcyB0aGVuIG5pbCB3aWxsIGJlIHJl
dHVybmVkLgotLSAoaWQpdG9PYmplY3RPZkNsYXNzOihDbGFzcylleHBlY3RlZENsYXNzOwotLy8g
VGhlIHZhbHVlIGlzIGNvcGllZCB0byBhIGJvb2xlYW4gYWNjb3JkaW5nIHRvIHRoZSBjb252ZXJz
aW9uIHNwZWNpZmllZCBieSB0aGUKLS8vIEphdmFTY3JpcHQgbGFuZ3VhZ2UuCi0tIChCT09MKXRv
Qm9vbDsKLS8vIFRoZSB2YWx1ZSBpcyBjb3BpZWQgdG8gYSBudW1iZXIgYWNjb3JkaW5nIHRvIHRo
ZSBjb252ZXJzaW9uIHNwZWNpZmllZCBieSB0aGUKLS8vIEphdmFTY3JpcHQgbGFuZ3VhZ2UuCi0t
IChkb3VibGUpdG9Eb3VibGU7Ci0vLyBUaGUgdmFsdWUgaXMgY29waWVkIHRvIGFuIGludGVnZXIg
YWNjb3JkaW5nIHRvIHRoZSBjb252ZXJzaW9uIHNwZWNpZmllZCBieQotLy8gdGhlIEphdmFTY3Jp
cHQgbGFuZ3VhZ2UuCi0tIChpbnQzMl90KXRvSW50MzI7Ci0vLyBUaGUgdmFsdWUgaXMgY29waWVk
IHRvIGFuIGludGVnZXIgYWNjb3JkaW5nIHRvIHRoZSBjb252ZXJzaW9uIHNwZWNpZmllZCBieQot
Ly8gdGhlIEphdmFTY3JpcHQgbGFuZ3VhZ2UuCi0tICh1aW50MzJfdCl0b1VJbnQzMjsKLS8vIElm
IHRoZSB2YWx1ZSBpcyBhIGJvb2xlYW4sIGEgTlNOdW1iZXIgdmFsdWUgb2YgQFlFUyBvciBATk8g
d2lsbCBiZSByZXR1cm5lZC4KLS8vIEZvciBhbGwgb3RoZXIgdHlwZXMgdGhlIHZhbHVlIHdpbGwg
YmUgY29waWVkIHRvIGEgbnVtYmVyIGFjY29yZGluZyB0byB0aGUKLS8vIGNvbnZlcnNpb24gc3Bl
Y2lmaWVkIGJ5IHRoZSBKYXZhU2NyaXB0IGxhbmd1YWdlLgotLSAoTlNOdW1iZXIgKil0b051bWJl
cjsKLS8vIFRoZSB2YWx1ZSBpcyBjb3BpZWQgdG8gYSBzdHJpbmcgYWNjb3JkaW5nIHRvIHRoZSBj
b252ZXJzaW9uIHNwZWNpZmllZCBieSB0aGUKLS8vIEphdmFTY3JpcHQgbGFuZ3VhZ2UuCi0tIChO
U1N0cmluZyAqKXRvU3RyaW5nOwotLy8gVGhlIHZhbHVlIGlzIGNvbnZlcnRlZCB0byBhIG51bWJl
ciByZXByZXNlbnRpbmcgYSB0aW1lIGludGVydmFsIHNpbmNlIDE5NzAsCi0vLyBhbmQgYSBuZXcg
TlNEYXRlIGluc3RhbmNlIGlzIHJldHVybmVkLgotLSAoTlNEYXRlICopdG9EYXRlOwotLy8gSWYg
dGhlIHZhbHVlIGlzIG51bGwgb3IgdW5kZWZpbmVkIHRoZW4gbmlsIGlzIHJldHVybmVkLgotLy8g
SWYgdGhlIHZhbHVlIGlzIG5vdCBhbiBvYmplY3QgdGhlbiBhIEphdmFTY3JpcHQgVHlwZUVycm9y
IHdpbGwgYmUgdGhyb3duLgotLy8gVGhlIHByb3BlcnR5ICJsZW5ndGgiIGlzIHJlYWQgZnJvbSB0
aGUgb2JqZWN0LCBjb252ZXJ0ZWQgdG8gYW4gdW5zaWduZWQKLS8vIGludGVnZXIsIGFuZCBhbiBO
U0FycmF5IG9mIHRoaXMgc2l6ZSBpcyBhbGxvY2F0ZWQuIFByb3BlcnRpZXMgY29ycmVzcG9uZGlu
ZwotLy8gdG8gaW5kaWNpZXMgd2l0aGluIHRoZSBhcnJheSBib3VuZHMgd2lsbCBiZSBjb3BpZWQg
dG8gdGhlIGFycmF5LCB3aXRoCi0vLyBPYmplY3RpdmUtQyBvYmplY3RzIGNvbnZlcnRlZCB0byBl
cXVpdmFsZW50IEpTVmFsdWVzIGFzIHNwZWNpZmllZC4KLS0gKE5TQXJyYXkgKil0b0FycmF5Owot
Ly8gSWYgdGhlIHZhbHVlIGlzIG51bGwgb3IgdW5kZWZpbmVkIHRoZW4gbmlsIGlzIHJldHVybmVk
LgotLy8gSWYgdGhlIHZhbHVlIGlzIG5vdCBhbiBvYmplY3QgdGhlbiBhIEphdmFTY3JpcHQgVHlw
ZUVycm9yIHdpbGwgYmUgdGhyb3duLgotLy8gQWxsIGVudW1lcmFibGUgcHJvcGVydGllcyBvZiB0
aGUgb2JqZWN0IGFyZSBjb3BpZWQgdG8gdGhlIGRpY3Rpb25hcnksIHdpdGgKLS8vIE9iamVjdGl2
ZS1DIG9iamVjdHMgY29udmVydGVkIHRvIGVxdWl2YWxlbnQgSlNWYWx1ZXMgYXMgc3BlY2lmaWVk
LgotLSAoTlNEaWN0aW9uYXJ5ICopdG9EaWN0aW9uYXJ5OwotCi0vLyBBY2Nlc3MgYSBwcm9wZXJ0
eSBmcm9tIHRoZSB2YWx1ZS4gVGhpcyBtZXRob2Qgd2lsbCByZXR1cm4gdGhlIEphdmFTY3JpcHQg
dmFsdWUKLS8vICd1bmRlZmluZWQnIGlmIHRoZSBwcm9wZXJ0eSBkb2VzIG5vdCBleGlzdC4KLS0g
KEpTVmFsdWUgKil2YWx1ZUZvclByb3BlcnR5OihOU1N0cmluZyAqKXByb3BlcnR5OwotLy8gU2V0
IGEgcHJvcGVydHkgb24gdGhlIHZhbHVlLgotLSAodm9pZClzZXRWYWx1ZTooaWQpdmFsdWUgZm9y
UHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVydHk7Ci0vLyBEZWxldGUgYSBwcm9wZXJ0eSBmcm9t
IHRoZSB2YWx1ZSwgcmV0dXJucyBZRVMgaWYgZGVsZXRpb24gaXMgc3VjY2Vzc2Z1bC4KLS0gKEJP
T0wpZGVsZXRlUHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVydHk7Ci0vLyBSZXR1cm5zIFlFUyBp
ZiBwcm9wZXJ0eSBpcyBwcmVzZW50IG9uIHRoZSB2YWx1ZS4KLS8vIFRoaXMgbWV0aG9kIGhhcyB0
aGUgc2FtZSBmdW5jdGlvbiBhcyB0aGUgSmF2YVNjcmlwdCBvcGVyYXRvciAiaW4iLgotLSAoQk9P
TCloYXNQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eTsKLS8vIFRoaXMgbWV0aG9kIG1heSBi
ZSB1c2VkIHRvIGNyZWF0ZSBhIGRhdGEgb3IgYWNjZXNzb3IgcHJvcGVydHkgb24gYW4gb2JqZWN0
OwotLy8gdGhpcyBtZXRob2Qgb3BlcmF0ZXMgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBPYmplY3Qu
ZGVmaW5lUHJvcGVydHkgbWV0aG9kIGluCi0vLyB0aGUgSmF2YVNjcmlwdCBsYW5nYXVhZ2UuCi0t
ICh2b2lkKWRlZmluZVByb3BlcnR5OihOU1N0cmluZyAqKXByb3BlcnR5IGRlc2NyaXB0b3I6KGlk
KWRlc2NyaXB0b3I7Ci0KLS8vIEFjY2VzcyBhbiBpbmRleGVkIHByb3BlcnR5IGZyb20gdGhlIHZh
bHVlLiBUaGlzIG1ldGhvZCB3aWxsIHJldHVybiB0aGUKLS8vIEphdmFTY3JpcHQgdmFsdWUgJ3Vu
ZGVmaW5lZCcgaWYgbm8gcHJvcGVydHkgZXhpc3RzIGF0IHRoYXQgaW5kZXguCi0tIChKU1ZhbHVl
ICopdmFsdWVBdEluZGV4OihOU1VJbnRlZ2VyKWluZGV4OwotLy8gU2V0IGFuIGluZGV4ZWQgcHJv
cGVydHkgb24gdGhlIHZhbHVlLgotLSAodm9pZClzZXRWYWx1ZTooaWQpdmFsdWUgYXRJbmRleDoo
TlNVSW50ZWdlcilpbmRleDsKLQotLy8gQWxsIEphdmFTY3JpcHQgdmFsdWVzIGFyZSBwcmVjaXNl
bHkgb25lIG9mIHRoZXNlIHR5cGVzLgotLSAoQk9PTClpc1VuZGVmaW5lZDsKLS0gKEJPT0wpaXNO
dWxsOwotLSAoQk9PTClpc0Jvb2xlYW47Ci0tIChCT09MKWlzTnVtYmVyOwotLSAoQk9PTClpc1N0
cmluZzsKLS0gKEJPT0wpaXNPYmplY3Q7Ci0KLS8vIFRoaXMgbWV0aG9kIGhhcyB0aGUgc2FtZSBm
dW5jdGlvbiBhcyB0aGUgSmF2YVNjcmlwdCBvcGVyYXRvciAiPT09Ii4KLS0gKEJPT0wpaXNFcXVh
bFRvT2JqZWN0OihpZCl2YWx1ZTsKLS8vIFRoaXMgbWV0aG9kIGhhcyB0aGUgc2FtZSBmdW5jdGlv
biBhcyB0aGUgSmF2YVNjcmlwdCBvcGVyYXRvciAiPT0iLgotLSAoQk9PTClpc0VxdWFsV2l0aFR5
cGVDb2VyY2lvblRvT2JqZWN0OihpZCl2YWx1ZTsKLS8vIFRoaXMgbWV0aG9kIGhhcyB0aGUgc2Ft
ZSBmdW5jdGlvbiBhcyB0aGUgSmF2YVNjcmlwdCBvcGVyYXRvciAiaW5zdGFuY2VvZiIuCi0tIChC
T09MKWlzSW5zdGFuY2VPZjooaWQpdmFsdWU7Ci0KLS8vIENhbGwgdGhpcyB2YWx1ZSBhcyBhIGZ1
bmN0aW9uIHBhc3NpbmcgdGhlIHNwZWNpZmllZCAidGhpcyIgdmFsdWUgYW5kIGFyZ3VtZW50cy4K
LS0gKEpTVmFsdWUgKiljYWxsV2l0aEFyZ3VtZW50czooTlNBcnJheSAqKWFyZ3VtZW50czsKLS8v
IENhbGwgdGhpcyB2YWx1ZSBhcyBhIGNvbnN0cnVjdG9yIHBhc3NpbmcgdGhlIHNwZWNpZmllZCBh
cmd1bWVudHMuCi0tIChKU1ZhbHVlICopY29uc3RydWN0V2l0aEFyZ3VtZW50czooTlNBcnJheSAq
KWFyZ3VtZW50czsKLS8vIEFjY2VzcyB0aGUgcHJvcGVydHkgbmFtZWQgIm1ldGhvZCIgZnJvbSB0
aGlzIHZhbHVlOyBjYWxsIHRoZSB2YWx1ZSByZXN1bHRpbmcKLS8vIGZyb20gdGhlIHByb3BlcnR5
IGFjY2VzcyBhcyBhIGZ1bmN0aW9uLCBwYXNzaW5nIHRoaXMgdmFsdWUgYXMgdGhlICJ0aGlzIgot
Ly8gdmFsdWUsIGFuZCB0aGUgc3BlY2lmaWVkIGFncnVtZW50cy4KLS0gKEpTVmFsdWUgKilpbnZv
a2VNZXRob2Q6KE5TU3RyaW5nICopbWV0aG9kIHdpdGhBcmd1bWVudHM6KE5TQXJyYXkgKilhcmd1
bWVudHM7Ci0KLS8vIFRoZSBKU0NvbnRleHQgdGhhdCB0aGlzIHZhbHVlIG9yaWdpbmF0ZXMgZnJv
bS4KLUBwcm9wZXJ0eShyZWFkb25seSwgcmV0YWluKSBKU0NvbnRleHQgKmNvbnRleHQ7Ci0KLUBl
bmQKLQotLy8gT2JqZWN0aXZlLUMgbWV0aG9kcyBleHBvcnRlZCB0byBKYXZhU2NyaXB0IG1heSBo
YXZlIGFyZ3VtZW50IGFuZC9vciByZXR1cm4KLS8vIHZhbHVlcyBvZiBzdHJ1Y3QgdHlwZXMgaWYg
dGhlIHN0cnVjdCBpZiBjb252ZXJzaW9uIHRvIGFuZCBmcm9tIHRoZSBzdHJ1Y3QKLS8vIGlzIHN1
cHBvcnRlZCBieSBKU1ZhbHVlLiBTdXBwb3J0IGlzIHByb3ZpZGVkIGZvciBhbnkgdHlwZXMgd2hl
cmUgSlNWYWx1ZQotLy8gY29udGFpbnMgYm90aCBhIGNsYXNzIG1ldGhvZCAidmFsdWVXaXRoPFR5
cGU+OmluQ29udGV4dDoiLCBhbmQgYW5kIGluc3RhbmNlCi0vLyBtZXRob2QgInRvPFR5cGU+IiAt
IHdoZXJlIHRoZSBzdHJpbmcgIjxUeXBlPiIgaW4gdGhlc2Ugc2VsZWN0b3IgbmFtZXMgbWF0Y2gs
Ci0vLyB3aXRoIHRoZSBmaXJzdCBhcmd1bWVudCB0byB0aGUgZm9ybWVyIGJlaW5nIG9mIHRoZSBz
YW1lIHN0cnVjdCB0eXBlIGFzIHRoZQotLy8gcmV0dXJuIHR5cGUgb2YgdGhlIGxhdHRlci4KLS8v
IFN1cHBvcnQgaXMgcHJvdmlkZWQgZm9yIHN0cnVjdHMgb2YgdHlwZSBDR1BvaW50LCBOU1Jhbmdl
LCBDR1JlY3QgYW5kIENHU2l6ZS4KLUBpbnRlcmZhY2UgSlNWYWx1ZShTdHJ1Y3RTdXBwb3J0KQot
Ci0vLyBUaGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3bHkgYWxsb2NhdGVkIEphdmFTY3JpcHQgb2Jq
ZWN0IGNvbnRhaW5pbmcgcHJvcGVydGllcwotLy8gbmFtZWQgIngiIGFuZCAieSIsIHdpdGggdmFs
dWVzIGZyb20gdGhlIENHUG9pbnQuCi0rIChKU1ZhbHVlICopdmFsdWVXaXRoUG9pbnQ6KENHUG9p
bnQpcG9pbnQgaW5Db250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0OwotLy8gVGhpcyBtZXRob2Qg
cmV0dXJucyBhIG5ld2x5IGFsbG9jYXRlZCBKYXZhU2NyaXB0IG9iamVjdCBjb250YWluaW5nIHBy
b3BlcnRpZXMKLS8vIG5hbWVkICJsb2NhdGlvbiIgYW5kICJsZW5ndGgiLCB3aXRoIHZhbHVlcyBm
cm9tIHRoZSBOU1JhbmdlLgotKyAoSlNWYWx1ZSAqKXZhbHVlV2l0aFJhbmdlOihOU1JhbmdlKXJh
bmdlIGluQ29udGV4dDooSlNDb250ZXh0ICopY29udGV4dDsKLS8vIFRoaXMgbWV0aG9kIHJldHVy
bnMgYSBuZXdseSBhbGxvY2F0ZWQgSmF2YVNjcmlwdCBvYmplY3QgY29udGFpbmluZyBwcm9wZXJ0
aWVzCi0vLyBuYW1lZCAieCIsICJ5IiwgIndpZHRoIiwgYW5kICJoZWlnaHQiLCB3aXRoIHZhbHVl
cyBmcm9tIHRoZSBDR1JlY3QuCi0rIChKU1ZhbHVlICopdmFsdWVXaXRoUmVjdDooQ0dSZWN0KXJl
Y3QgaW5Db250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0OwotLy8gVGhpcyBtZXRob2QgcmV0dXJu
cyBhIG5ld2x5IGFsbG9jYXRlZCBKYXZhU2NyaXB0IG9iamVjdCBjb250YWluaW5nIHByb3BlcnRp
ZXMKLS8vIG5hbWVkICJ3aWR0aCIgYW5kICJoZWlnaHQiLCB3aXRoIHZhbHVlcyBmcm9tIHRoZSBD
R1NpemUuCi0rIChKU1ZhbHVlICopdmFsdWVXaXRoU2l6ZTooQ0dTaXplKXNpemUgaW5Db250ZXh0
OihKU0NvbnRleHQgKiljb250ZXh0OwotCi0vLyBDb252ZXJ0IGEgdmFsdWUgdG8gdHlwZSBDR1Bv
aW50IGJ5IHJlYWRpbmcgcHJvcGVydGllcyBuYW1lZCAieCIgYW5kICJ5IiBmcm9tCi0vLyB0aGlz
IHZhbHVlLCBhbmQgY29udmVydGluZyB0aGUgcmVzdWx0cyB0byBkb3VibGUuCi0tIChDR1BvaW50
KXRvUG9pbnQ7Ci0vLyBDb252ZXJ0IGEgdmFsdWUgdG8gdHlwZSBOU1JhbmdlIGJ5IGFjY2Vzc2lu
ZyBwcm9wZXJ0aWVzIG5hbWVkICJsb2NhdGlvbiIgYW5kCi0vLyAibGVuZ3RoIiBmcm9tIHRoaXMg
dmFsdWUgY29udmVydGluZyB0aGUgcmVzdWx0cyB0byBkb3VibGUuCi0tIChOU1JhbmdlKXRvUmFu
Z2U7Ci0vLyBDb252ZXJ0IGEgdmFsdWUgdG8gdHlwZSBDR1JlY3QgYnkgcmVhZGluZyBwcm9wZXJ0
aWVzIG5hbWVkICJ4IiwgInkiLCAid2lkdGgiLAotLy8gYW5kICJoZWlnaHQiIGZyb20gdGhpcyB2
YWx1ZSwgYW5kIGNvbnZlcnRpbmcgdGhlIHJlc3VsdHMgdG8gZG91YmxlLgotLSAoQ0dSZWN0KXRv
UmVjdDsKLS8vIENvbnZlcnQgYSB2YWx1ZSB0byB0eXBlIENHUmFuZ2UgYnkgYWNjZXNzaW5nIHBy
b3BlcnRpZXMgbmFtZWQgIndpZHRoIiBhbmQKLS8vICJoZWlnaHQiIGZyb20gdGhpcyB2YWx1ZSBj
b252ZXJ0aW5nIHRoZSByZXN1bHRzIHRvIGRvdWJsZS4KLS0gKENHU2l6ZSl0b1NpemU7Ci0KLUBl
bmQKLQotLy8gSW5zdGFuY2VzIG9mIEpTVmFsdWUgaW1wbGVtZW50IHRoZSBmb2xsb3dpbmcgbWV0
aG9kcyBpbiBvcmRlciB0byBlbmFibGUKLS8vIHN1cHBvcnQgZm9yIHN1YnNjcmlwdCBhY2Nlc3Mg
Ynkga2V5IGFuZCBpbmRleCwgZm9yIGV4YW1wbGU6Ci0vLwotLy8gICAgSlNWYWx1ZSAqb2JqZWN0
QSwgKm9iamVjdEI7Ci0vLyAgICBKU1ZhbHVlICp2MSA9IG9iamVjdFtAIlgiXTsgLy8gR2V0IHZh
bHVlIGZvciBwcm9wZXJ0eSAiWCIgZnJvbSAnb2JqZWN0Jy4KLS8vICAgIEpTVmFsdWUgKnYyID0g
b2JqZWN0WzQyXTsgICAvLyBHZXQgdmFsdWUgZm9yIGluZGV4IDQyIGZyb20gJ29iamVjdCcuCi0v
LyAgICBvYmplY3RbQCJZIl0gPSB2MTsgICAgICAgICAgLy8gQXNzaWduICd2MScgdG8gcHJvcGVy
dHkgIlkiIG9mICdvYmplY3QnLgotLy8gICAgb2JqZWN0WzEwMV0gPSB2MjsgICAgICAgICAgIC8v
IEFzc2lnbiAndjInIHRvIGluZGV4IDEwMSBvZiAnb2JqZWN0Jy4KLS8vCi0vLyBBbiBvYmplY3Qg
a2V5IHBhc3NlZCBhcyBhIHN1YnNjcmlwdCB3aWxsIGJlIGNvbnZlcnRlZCB0byBhIEphdmFTY2lw
dCB2YWx1ZSwKLS8vIGFuZCB0aGVuIHRoZSB2YWx1ZSBjb252ZXJ0ZWQgdG8gYSBzdHJpbmcgdXNl
ZCBhcyBhIHByb3BlcnR5IG5hbWUuCi1AaW50ZXJmYWNlIEpTVmFsdWUoU3Vic2NyaXB0U3VwcG9y
dCkKLQotLSAoSlNWYWx1ZSAqKW9iamVjdEZvcktleWVkU3Vic2NyaXB0OihpZClrZXk7Ci0tIChK
U1ZhbHVlICopb2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0OihOU1VJbnRlZ2VyKWluZGV4OwotLSAo
dm9pZClzZXRPYmplY3Q6KGlkKW9iamVjdCBmb3JLZXllZFN1YnNjcmlwdDooTlNPYmplY3QgPE5T
Q29weWluZz4gKilrZXk7Ci0tICh2b2lkKXNldE9iamVjdDooaWQpb2JqZWN0IGF0SW5kZXhlZFN1
YnNjcmlwdDooTlNVSW50ZWdlcilpbmRleDsKLQotQGVuZAotCi0jaWZkZWYgX19jcGx1c3BsdXMK
LWV4dGVybiAiQyIgewotI2VuZGlmCi0KLS8vIFRoZXNlIGtleXMgbWF5IGFzc2lzdCBpbiBjcmVh
dGluZyBhIHByb3BlcnR5IGRlc2NyaXB0b3IgZm9yIHVzZSB3aXRoIHRoZQotLy8gZGVmaW5lUHJv
cGVydHkgbWV0aG9kIG9uIEpTVmFsdWUuCi0vLyBQcm9wZXJ0eSBkZXNjcmlwdG9ycyBtdXN0IGZp
dCBvbmUgb2YgdGhyZWUgZGVzY3JpcHRpb25zOgotLy8gRGF0YSBEZXNjcmlwdG9yOgotLy8gIC0g
QSBkZXNjcmlwdG9yIGNvbnRhaW5pbmcgb25lIG9yIGJvdGggb2YgdGhlIGtleXMgInZhbHVlIiBh
bmQgIndyaXRhYmxlIiwKLS8vICAgIGFuZCBvcHRpb25hbGx5IGNvbnRhaW5pbmcgb25lIG9yIGJv
dGggb2YgdGhlIGtleXMgImVudW1lcmFibGUiIGFuZAotLy8gICAgImNvbmZpZ3VyYWJsZSIuIEEg
ZGF0YSBkZXNjcmlwdG9yIG1heSBub3QgY29udGFpbiBlaXRoZXIgdGhlICJnZXQiIG9yCi0vLyAg
ICAic2V0IiBrZXkuCi0vLyAgICBBIGRhdGEgZGVzY3JpcHRvciBtYXkgYmUgdXNlZCB0byBjcmVh
dGUgb3IgbW9kaWZ5IHRoZSBhdHRyaWJ1dGVzIG9mIGEKLS8vICAgIGRhdGEgcHJvcGVydHkgb24g
YW4gb2JqZWN0IChyZXBsYWNpbmcgYW55IGV4aXN0aW5nIGFjY2Vzc29yIHByb3BlcnR5KS4KLS8v
IEFjY2Vzc29yIERlc2NyaXB0b3I6Ci0vLyAgLSBBIGRlc2NyaXB0b3IgY29udGFpbmluZyBvbmUg
b3IgYm90aCBvZiB0aGUga2V5cyAiZ2V0IiBhbmQgInNldCIsIGFuZAotLy8gICAgb3B0aW9uYWxs
eSBjb250YWluaW5nIG9uZSBvciBib3RoIG9mIHRoZSBrZXlzICJlbnVtZXJhYmxlIiBhbmQKLS8v
ICAgICJjb25maWd1cmFibGUiLiBBbiBhY2Nlc3NvciBkZXNjcmlwdG9yIG1heSBub3QgY29udGFp
biBlaXRoZXIgdGhlICJ2YWx1ZSIKLS8vICAgIG9yICJ3cml0YWJsZSIga2V5LgotLy8gICAgQW4g
YWNjZXNzb3IgZGVzY3JpcHRvciBtYXkgYmUgdXNlZCB0byBjcmVhdGUgb3IgbW9kaWZ5IHRoZSBh
dHRyaWJ1dGVzIG9mCi0vLyAgICBhbiBhY2Nlc3NvciBwcm9wZXJ0eSBvbiBhbiBvYmplY3QgKHJl
cGxhY2luZyBhbnkgZXhpc3RpbmcgZGF0YSBwcm9wZXJ0eSkuCi0vLyBHZW5lcmljIERlc2NyaXB0
b3I6Ci0vLyAgLSBBIGRlc2NyaXB0b3IgY29udGFpbmluZyBvbmUgb3IgYm90aCBvZiB0aGUga2V5
cyAiZW51bWVyYWJsZSIgYW5kCi0vLyAgICAiY29uZmlndXJhYmxlIi4gQSBnZW5lcmljIGRlc2Ny
aXB0b3IgbWF5IG5vdCBjb250YWluIGFueSBvZiB0aGUga2V5cwotLy8gICAgInZhbHVlIiwgIiB3
cml0YWJsZSIsICJnZXQiLCBvciAic2V0Ii4KLS8vICAgIEEgZ2VuZXJpYyBkZXNjcmlwdG9yIG1h
eSBiZSB1c2VkIHRvIG1vZGlmeSB0aGUgYXR0cmlidXRlcyBvZiBhbiBleGlzdGluZwotLy8gICAg
ZGF0YSBvciBhY2Nlc3NvciBwcm9wZXJ0eSwgb3IgdG8gY3JlYXRlIGEgbmV3IGRhdGEgcHJvcGVy
dHkuCi1KU19FWFBPUlQgZXh0ZXJuIE5TU3RyaW5nICogY29uc3QgSlNQcm9wZXJ0eURlc2NyaXB0
b3JXcml0YWJsZUtleTsKLUpTX0VYUE9SVCBleHRlcm4gTlNTdHJpbmcgKiBjb25zdCBKU1Byb3Bl
cnR5RGVzY3JpcHRvckVudW1lcmFibGVLZXk7Ci1KU19FWFBPUlQgZXh0ZXJuIE5TU3RyaW5nICog
Y29uc3QgSlNQcm9wZXJ0eURlc2NyaXB0b3JDb25maWd1cmFibGVLZXk7Ci1KU19FWFBPUlQgZXh0
ZXJuIE5TU3RyaW5nICogY29uc3QgSlNQcm9wZXJ0eURlc2NyaXB0b3JWYWx1ZUtleTsKLUpTX0VY
UE9SVCBleHRlcm4gTlNTdHJpbmcgKiBjb25zdCBKU1Byb3BlcnR5RGVzY3JpcHRvckdldEtleTsK
LUpTX0VYUE9SVCBleHRlcm4gTlNTdHJpbmcgKiBjb25zdCBKU1Byb3BlcnR5RGVzY3JpcHRvclNl
dEtleTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19IC8vIGV4dGVybiAiQyIKLSNlbmRpZgotCi0j
ZW5kaWYKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jsb2NrQWRhcHRvci5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmxvY2tBZGFwdG9y
Lm1tCShyZXZpc2lvbiAxNDAzNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmxv
Y2tBZGFwdG9yLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAjaW1wb3J0ICJK
U0Jsb2NrQWRhcHRvci5oIgogI2ltcG9ydCAiSlNDb250ZXh0SW50ZXJuYWwuaCIKICNpbXBvcnQg
IkpTV3JhcHBlck1hcC5oIgotI2ltcG9ydCAiSlNWYWx1ZS5oIgorI2ltcG9ydCAiSlNDSlNWYWx1
ZS5oIgogI2ltcG9ydCAiSlNWYWx1ZUludGVybmFsLmgiCiAjaW1wb3J0ICJPYmpjUnVudGltZUV4
dHJhcy5oIgogI2ltcG9ydCAiT3BlcmF0aW9ucy5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU1N0cmluZ1JlZkNGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTU3RyaW5nUmVmQ0YuY3BwCShyZXZpc2lvbiAxNDAzNDYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTU3RyaW5nUmVmQ0YuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MCw3ICszMCw3IEBACiAjaW5jbHVkZSAiSW5pdGlhbGl6ZVRocmVhZGluZy5oIgogI2luY2x1ZGUg
IkpTU3RyaW5nUmVmLmgiCiAjaW5jbHVkZSAiT3BhcXVlSlNTdHJpbmcuaCIKLSNpbmNsdWRlIDxy
dW50aW1lL0pTVmFsdWUuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWUuaD4KICNpbmNs
dWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KIAogSlNTdHJpbmdSZWYgSlNTdHJpbmdDcmVhdGVXaXRo
Q0ZTdHJpbmcoQ0ZTdHJpbmdSZWYgc3RyaW5nKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U1ZhbHVlLmgJKHJldmlzaW9uIDE0MDE5NykJKGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9BUElKU1ZhbHVlLmg6MTQwMTk3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1Zh
bHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmIEpTX09CSkNfQVBJX0VOQUJMRUQKKwor
QGNsYXNzIEpTQ29udGV4dDsKKworLy8gQSBKU1ZhbHVlIGlzIGEgcmVmZXJlbmNlIHRvIGEgdmFs
dWUgd2l0aGluIHRoZSBKYXZhU2NyaXB0IG9iamVjdCBzcGFjZSBvZiBhCisvLyBKU1ZpcnR1YWxN
YWNoaW5lLiBBbGwgaW5zdGFuY2VzIG9mIEpTVmFsdWUgb3JpZ2luYXRlIGZyb20gYSBKU0NvbnRl
eHQgYW5kCisvLyBob2xkIGEgc3Ryb25nIHJlZmVyZW5jZSB0byB0aGlzIEpTQ29udGV4dC4gQXMg
bG9uZyBhcyBhbnkgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIAorLy8gYSBwYXJ0aWN1bGFyIEpTQ29u
dGV4dCBpcyByZXRhaW5lZCwgdGhhdCBKU0NvbnRleHQgd2lsbCByZW1haW4gYWxpdmUuIAorLy8g
V2hlcmUgYW4gaW5zdGFuY2UgbWV0aG9kIGlzIGludm9rZWQgdXBvbiBhIEpTVmFsdWUsIGFuZCB0
aGlzIHJldHVybnMgYW5vdGhlciAKKy8vIEpTVmFsdWUsIHRoZSByZXR1cm5lZCBKU1ZhbHVlIHdp
bGwgb3JpZ2luYXRlIGZyb20gdGhlIHNhbWUgSlNDb250ZXh0IGFzIHRoZSAKKy8vIEpTVmFsdWUg
b24gd2hpY2ggdGhlIG1ldGhvZCB3YXMgaW52b2tlZC4KKy8vCisvLyBGb3IgYWxsIG1ldGhvZHMg
dGFraW5nIGFyZ3VtZW50cyBvZiB0eXBlIGlkLCBhcmd1bWVudHMgd2lsbCBiZSBjb252ZXJ0ZWQK
Ky8vIGludG8gYSBKYXZhU2NyaXB0IHZhbHVlIGFjY29yZGluZyB0byB0aGUgY29udmVyc2lvbiBz
cGVjaWZpZWQgYmVsb3cuCisvLyBBbGwgSmF2YVNjcmlwdCB2YWx1ZXMgYXJlIGFzc29jaWF0ZWQg
d2l0aCBhIHBhcnRpY3VsYXIgSlNWaXJ0dWFsTWFjaGluZQorLy8gKHRoZSBhc3NvY2lhdGVkIEpT
VmlydHVhbE1hY2hpbmUgaXMgYXZhaWxhYmxlIGluZGlyZWN0bHkgdmlhIHRoZSBjb250ZXh0Cisv
LyBwcm9wZXJ0eSkuIEFuIGluc3RhbmNlIG9mIEpTVmFsdWUgbWF5IG9ubHkgYmUgcGFzc2VkIGFz
IGFuIGFyZ3VtZW50IHRvCisvLyBtZXRob2RzIG9uIGluc3RhbmNlcyBvZiBKU1ZhbHVlIGFuZCBK
U0NvbnRleHQgdGhhdCBiZWxvbmcgdG8gdGhlIHNhbWUKKy8vIEpTVmlydHVhbE1hY2hpbmUgLSBw
YXNzaW5nIGEgSlNWYWx1ZSB0byBhIG1ldGhvZCBvbiBhbiBvYmplY3Qgb3JpZ2luYXRpbmcKKy8v
IGZyb20gYSBkaWZmZXJlbnQgSlNWaXJ0dWFsTWFjaGluZSB3aWxsIHJlc3VsdCBpbiBhbiBPYmpl
Y3RpdmUtQyBleGNlcHRpb24KKy8vIGJlaW5nIHJhaXNlZC4KKy8vCisvLyBDb252ZXJzaW9uIGJl
dHdlZW4gT2JqZWN0aXZlLUMgYW5kIEphdmFTY3JpcHQgdHlwZXMuCisvLworLy8gV2hlbiBjb252
ZXJ0aW5nIGJldHdlZW4gSmF2YVNjcmlwdCB2YWx1ZXMgYW5kIE9iamVjdGl2ZS1DIG9iamVjdHMg
YSBjb3B5IGlzCisvLyBwZXJmb3JtZWQuIFZhbHVlcyBvZiB0eXBlcyBsaXN0ZWQgYmVsb3cgYXJl
IGNvcGllZCB0byB0aGUgY29ycmVzcG9uZGluZworLy8gdHlwZXMgb24gY29udmVyc2lvbiBpbiBl
YWNoIGRpcmVjdGlvbi4gRm9yIE5TRGljdGlvbmFyaWVzLCBlbnRyaWVzIGluIHRoZQorLy8gZGlj
dGlvbmFyeSB0aGF0IGFyZSBrZXllZCBieSBzdHJpbmdzIGFyZSBjb3BpZWQgb250byBhIEphdmFT
Y3JpcHQgb2JqZWN0LgorLy8gRm9yIGRpY3Rpb25hcmllcyBhbmQgYXJyYXlzLCBjb252ZXJzaW9u
IGlzIHJlY3Vyc2l2ZSwgd2l0aCB0aGUgc2FtZSBvYmplY3QKKy8vIGNvbnZlcnNpb24gYmVpbmcg
YXBwbGllZCB0byBhbGwgZW50cmllcyBpbiB0aGUgY29sbGVjdGlvbi4KKy8vCisvLyAgIE9iamVj
dGl2ZS1DIHR5cGUgIHwgICBKYXZhU2NyaXB0IHR5cGUKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICBuaWwgICAgICAgICB8ICAgICB1bmRl
ZmluZWQKKy8vICAgICAgICBOU051bGwgICAgICAgfCAgICAgICAgbnVsbAorLy8gICAgICAgTlNT
dHJpbmcgICAgICB8ICAgICAgIHN0cmluZworLy8gICAgICAgTlNOdW1iZXIgICAgICB8ICAgbnVt
YmVyLCBib29sZWFuCisvLyAgICAgTlNEaWN0aW9uYXJ5ICAgIHwgICBPYmplY3Qgb2JqZWN0Cisv
LyAgICAgICBOU0FycmF5ICAgICAgIHwgICAgQXJyYXkgb2JqZWN0CisvLyAgICAgICAgTlNEYXRl
ICAgICAgIHwgICAgIERhdGUgb2JqZWN0CisvLyAgICAgICBOU0Jsb2NrICogICAgIHwgICBGdW5j
dGlvbiBvYmplY3QgKgorLy8gICAgICAgICAgaWQgKiogICAgICB8ICAgV3JhcHBlciBvYmplY3Qg
KioKKy8vICAgICAgICBDbGFzcyAqKiogICAgfCBDb25zdHJ1Y3RvciBvYmplY3QgKioqCisvLwor
Ly8gKiBJbnN0YW5jZXMgb2YgTlNCbG9jayB3aXRoIHN1cHBvcnRlZCBhcmd1bWVudHMgdHlwZXMg
d2lsbCBiZSBwcmVzZW50ZWQgdG8KKy8vIEphdmFTY3JpcHQgYXMgYSBjYWxsYWJsZSBGdW5jdGlv
biBvYmplY3QuIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHN1cHBvcnRlZAorLy8gYXJndW1lbnQg
dHlwZXMgc2VlIEpTRXhwb3J0LmguIElmIGEgSmF2YVNjcmlwdCBGdW5jdGlvbiBvcmlnaW5hdGlu
ZyBmcm9tIGFuCisvLyBPYmplY3RpdmUtQyBibG9jayBpcyBjb252ZXJ0ZWQgYmFjayB0byBhbiBP
YmplY3RpdmUtQyBvYmplY3QgdGhlIGJsb2NrIHdpbGwKKy8vIGJlIHJldHVybmVkLiBBbGwgb3Ro
ZXIgSmF2YVNjcmlwdCBmdW5jdGlvbnMgd2lsbCBiZSBjb252ZXJ0ZWQgaW4gdGhlIHNhbWUKKy8v
IG1hbm5lciBhcyBhIEphdmFTY3JpcHQgb2JqZWN0IG9mIHR5cGUgT2JqZWN0LgorLy8KKy8vICoq
IEZvciBPYmplY3RpdmUtQyBpbnN0YW5jZXMgdGhhdCBkbyBub3QgZGVyaXZlIGZyb20gdGhlIHNl
dCBvZiB0eXBlcyBsaXN0ZWQKKy8vIGFib3ZlLCBhIHdyYXBwZXIgb2JqZWN0IHRvIHByb3ZpZGUg
YSByZXRhaW5pbmcgaGFuZGxlIHRvIHRoZSBPYmplY3RpdmUtQworLy8gaW5zdGFuY2UgZnJvbSBK
YXZhU2NyaXB0LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGVzZSB3cmFwcGVyIG9iamVjdHMs
IHNlZQorLy8gSlNFeHBvcnQuaC4gV2hlbiBhIEphdmFTY3JpcHQgd3JhcHBlciBvYmplY3QgaXMg
Y29udmVydGVkIGJhY2sgdG8gT2JqZWN0aXZlLUMKKy8vIHRoZSBPYmplY3RpdmUtQyBpbnN0YW5j
ZSBiZWluZyByZXRhaW5lZCBieSB0aGUgd3JhcHBlciBpcyByZXR1cm5lZC4KKy8vCisvLyAqKiog
Rm9yIE9iamVjdGl2ZS1DIENsYXNzIG9iamVjdHMgYSBjb25zdHJ1Y3RvciBvYmplY3QgY29udGFp
bmluZyBleHBvcnRlZAorLy8gY2xhc3MgbWV0aG9kcyB3aWxsIGJlIHJldHVybmVkLiBTZWUgSlNF
eHBvcnQuaCBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbgorLy8gY29uc3RydWN0b3Igb2JqZWN0cy4K
KworTlNfQ0xBU1NfQVZBSUxBQkxFKDEwXzksIE5BKQorQGludGVyZmFjZSBKU1ZhbHVlIDogTlNP
YmplY3QKKworLy8gQ3JlYXRlIGEgSlNWYWx1ZSBieSBjb252ZXJ0aW5nIGFuIE9iamVjdGl2ZS1D
IG9iamVjdC4KKysgKEpTVmFsdWUgKil2YWx1ZVdpdGhPYmplY3Q6KGlkKXZhbHVlIGluQ29udGV4
dDooSlNDb250ZXh0ICopY29udGV4dDsKKy8vIENyZWF0ZSBhIEphdmFTY3JpcHQgdmFsdWUgZnJv
bSBhbiBPYmplY3RpdmUtQyBwcmltaXRpdmUgdHlwZS4KKysgKEpTVmFsdWUgKil2YWx1ZVdpdGhC
b29sOihCT09MKXZhbHVlIGluQ29udGV4dDooSlNDb250ZXh0ICopY29udGV4dDsKKysgKEpTVmFs
dWUgKil2YWx1ZVdpdGhEb3VibGU6KGRvdWJsZSl2YWx1ZSBpbkNvbnRleHQ6KEpTQ29udGV4dCAq
KWNvbnRleHQ7CisrIChKU1ZhbHVlICopdmFsdWVXaXRoSW50MzI6KGludDMyX3QpdmFsdWUgaW5D
b250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0OworKyAoSlNWYWx1ZSAqKXZhbHVlV2l0aFVJbnQz
MjoodWludDMyX3QpdmFsdWUgaW5Db250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0OworLy8gQ3Jl
YXRlIGEgSmF2YVNjcmlwdCB2YWx1ZSBpbiB0aGlzIGNvbnRleHQuCisrIChKU1ZhbHVlICopdmFs
dWVXaXRoTmV3T2JqZWN0SW5Db250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0OworKyAoSlNWYWx1
ZSAqKXZhbHVlV2l0aE5ld0FycmF5SW5Db250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0OworKyAo
SlNWYWx1ZSAqKXZhbHVlV2l0aE5ld1JlZ3VsYXJFeHByZXNzaW9uRnJvbVBhdHRlcm46KE5TU3Ry
aW5nICopcGF0dGVybiBmbGFnczooTlNTdHJpbmcgKilmbGFncyBpbkNvbnRleHQ6KEpTQ29udGV4
dCAqKWNvbnRleHQ7CisrIChKU1ZhbHVlICopdmFsdWVXaXRoTmV3RXJyb3JGcm9tTWVzc2FnZToo
TlNTdHJpbmcgKiltZXNzYWdlIGluQ29udGV4dDooSlNDb250ZXh0ICopY29udGV4dDsKKysgKEpT
VmFsdWUgKil2YWx1ZVdpdGhOdWxsSW5Db250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0OworKyAo
SlNWYWx1ZSAqKXZhbHVlV2l0aFVuZGVmaW5lZEluQ29udGV4dDooSlNDb250ZXh0ICopY29udGV4
dDsKKworLy8gQ29udmVydCB0aGlzIHZhbHVlIHRvIGEgY29ycmVzcG9uZGluZyBPYmplY3RpdmUt
QyBvYmplY3QsIGFjY29yZGluZyB0byB0aGUKKy8vIGNvbnZlcnNpb24gc3BlY2lmaWVkIGFib3Zl
LgorLSAoaWQpdG9PYmplY3Q7CisvLyBDb252ZXJ0IHRoaXMgdmFsdWUgdG8gYSBjb3JyZXNwb25k
aW5nIE9iamVjdGl2ZS1DIG9iamVjdCwgaWYgdGhlIHJlc3VsdCBpcworLy8gbm90IG9mIHRoZSBz
cGVjaWZpZWQgY2xhc3MgdGhlbiBuaWwgd2lsbCBiZSByZXR1cm5lZC4KKy0gKGlkKXRvT2JqZWN0
T2ZDbGFzczooQ2xhc3MpZXhwZWN0ZWRDbGFzczsKKy8vIFRoZSB2YWx1ZSBpcyBjb3BpZWQgdG8g
YSBib29sZWFuIGFjY29yZGluZyB0byB0aGUgY29udmVyc2lvbiBzcGVjaWZpZWQgYnkgdGhlCisv
LyBKYXZhU2NyaXB0IGxhbmd1YWdlLgorLSAoQk9PTCl0b0Jvb2w7CisvLyBUaGUgdmFsdWUgaXMg
Y29waWVkIHRvIGEgbnVtYmVyIGFjY29yZGluZyB0byB0aGUgY29udmVyc2lvbiBzcGVjaWZpZWQg
YnkgdGhlCisvLyBKYXZhU2NyaXB0IGxhbmd1YWdlLgorLSAoZG91YmxlKXRvRG91YmxlOworLy8g
VGhlIHZhbHVlIGlzIGNvcGllZCB0byBhbiBpbnRlZ2VyIGFjY29yZGluZyB0byB0aGUgY29udmVy
c2lvbiBzcGVjaWZpZWQgYnkKKy8vIHRoZSBKYXZhU2NyaXB0IGxhbmd1YWdlLgorLSAoaW50MzJf
dCl0b0ludDMyOworLy8gVGhlIHZhbHVlIGlzIGNvcGllZCB0byBhbiBpbnRlZ2VyIGFjY29yZGlu
ZyB0byB0aGUgY29udmVyc2lvbiBzcGVjaWZpZWQgYnkKKy8vIHRoZSBKYXZhU2NyaXB0IGxhbmd1
YWdlLgorLSAodWludDMyX3QpdG9VSW50MzI7CisvLyBJZiB0aGUgdmFsdWUgaXMgYSBib29sZWFu
LCBhIE5TTnVtYmVyIHZhbHVlIG9mIEBZRVMgb3IgQE5PIHdpbGwgYmUgcmV0dXJuZWQuCisvLyBG
b3IgYWxsIG90aGVyIHR5cGVzIHRoZSB2YWx1ZSB3aWxsIGJlIGNvcGllZCB0byBhIG51bWJlciBh
Y2NvcmRpbmcgdG8gdGhlCisvLyBjb252ZXJzaW9uIHNwZWNpZmllZCBieSB0aGUgSmF2YVNjcmlw
dCBsYW5ndWFnZS4KKy0gKE5TTnVtYmVyICopdG9OdW1iZXI7CisvLyBUaGUgdmFsdWUgaXMgY29w
aWVkIHRvIGEgc3RyaW5nIGFjY29yZGluZyB0byB0aGUgY29udmVyc2lvbiBzcGVjaWZpZWQgYnkg
dGhlCisvLyBKYXZhU2NyaXB0IGxhbmd1YWdlLgorLSAoTlNTdHJpbmcgKil0b1N0cmluZzsKKy8v
IFRoZSB2YWx1ZSBpcyBjb252ZXJ0ZWQgdG8gYSBudW1iZXIgcmVwcmVzZW50aW5nIGEgdGltZSBp
bnRlcnZhbCBzaW5jZSAxOTcwLAorLy8gYW5kIGEgbmV3IE5TRGF0ZSBpbnN0YW5jZSBpcyByZXR1
cm5lZC4KKy0gKE5TRGF0ZSAqKXRvRGF0ZTsKKy8vIElmIHRoZSB2YWx1ZSBpcyBudWxsIG9yIHVu
ZGVmaW5lZCB0aGVuIG5pbCBpcyByZXR1cm5lZC4KKy8vIElmIHRoZSB2YWx1ZSBpcyBub3QgYW4g
b2JqZWN0IHRoZW4gYSBKYXZhU2NyaXB0IFR5cGVFcnJvciB3aWxsIGJlIHRocm93bi4KKy8vIFRo
ZSBwcm9wZXJ0eSAibGVuZ3RoIiBpcyByZWFkIGZyb20gdGhlIG9iamVjdCwgY29udmVydGVkIHRv
IGFuIHVuc2lnbmVkCisvLyBpbnRlZ2VyLCBhbmQgYW4gTlNBcnJheSBvZiB0aGlzIHNpemUgaXMg
YWxsb2NhdGVkLiBQcm9wZXJ0aWVzIGNvcnJlc3BvbmRpbmcKKy8vIHRvIGluZGljaWVzIHdpdGhp
biB0aGUgYXJyYXkgYm91bmRzIHdpbGwgYmUgY29waWVkIHRvIHRoZSBhcnJheSwgd2l0aAorLy8g
T2JqZWN0aXZlLUMgb2JqZWN0cyBjb252ZXJ0ZWQgdG8gZXF1aXZhbGVudCBKU1ZhbHVlcyBhcyBz
cGVjaWZpZWQuCistIChOU0FycmF5ICopdG9BcnJheTsKKy8vIElmIHRoZSB2YWx1ZSBpcyBudWxs
IG9yIHVuZGVmaW5lZCB0aGVuIG5pbCBpcyByZXR1cm5lZC4KKy8vIElmIHRoZSB2YWx1ZSBpcyBu
b3QgYW4gb2JqZWN0IHRoZW4gYSBKYXZhU2NyaXB0IFR5cGVFcnJvciB3aWxsIGJlIHRocm93bi4K
Ky8vIEFsbCBlbnVtZXJhYmxlIHByb3BlcnRpZXMgb2YgdGhlIG9iamVjdCBhcmUgY29waWVkIHRv
IHRoZSBkaWN0aW9uYXJ5LCB3aXRoCisvLyBPYmplY3RpdmUtQyBvYmplY3RzIGNvbnZlcnRlZCB0
byBlcXVpdmFsZW50IEpTVmFsdWVzIGFzIHNwZWNpZmllZC4KKy0gKE5TRGljdGlvbmFyeSAqKXRv
RGljdGlvbmFyeTsKKworLy8gQWNjZXNzIGEgcHJvcGVydHkgZnJvbSB0aGUgdmFsdWUuIFRoaXMg
bWV0aG9kIHdpbGwgcmV0dXJuIHRoZSBKYXZhU2NyaXB0IHZhbHVlCisvLyAndW5kZWZpbmVkJyBp
ZiB0aGUgcHJvcGVydHkgZG9lcyBub3QgZXhpc3QuCistIChKU1ZhbHVlICopdmFsdWVGb3JQcm9w
ZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eTsKKy8vIFNldCBhIHByb3BlcnR5IG9uIHRoZSB2YWx1
ZS4KKy0gKHZvaWQpc2V0VmFsdWU6KGlkKXZhbHVlIGZvclByb3BlcnR5OihOU1N0cmluZyAqKXBy
b3BlcnR5OworLy8gRGVsZXRlIGEgcHJvcGVydHkgZnJvbSB0aGUgdmFsdWUsIHJldHVybnMgWUVT
IGlmIGRlbGV0aW9uIGlzIHN1Y2Nlc3NmdWwuCistIChCT09MKWRlbGV0ZVByb3BlcnR5OihOU1N0
cmluZyAqKXByb3BlcnR5OworLy8gUmV0dXJucyBZRVMgaWYgcHJvcGVydHkgaXMgcHJlc2VudCBv
biB0aGUgdmFsdWUuCisvLyBUaGlzIG1ldGhvZCBoYXMgdGhlIHNhbWUgZnVuY3Rpb24gYXMgdGhl
IEphdmFTY3JpcHQgb3BlcmF0b3IgImluIi4KKy0gKEJPT0wpaGFzUHJvcGVydHk6KE5TU3RyaW5n
ICopcHJvcGVydHk7CisvLyBUaGlzIG1ldGhvZCBtYXkgYmUgdXNlZCB0byBjcmVhdGUgYSBkYXRh
IG9yIGFjY2Vzc29yIHByb3BlcnR5IG9uIGFuIG9iamVjdDsKKy8vIHRoaXMgbWV0aG9kIG9wZXJh
dGVzIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgT2JqZWN0LmRlZmluZVByb3BlcnR5IG1ldGhvZCBp
bgorLy8gdGhlIEphdmFTY3JpcHQgbGFuZ2F1YWdlLgorLSAodm9pZClkZWZpbmVQcm9wZXJ0eToo
TlNTdHJpbmcgKilwcm9wZXJ0eSBkZXNjcmlwdG9yOihpZClkZXNjcmlwdG9yOworCisvLyBBY2Nl
c3MgYW4gaW5kZXhlZCBwcm9wZXJ0eSBmcm9tIHRoZSB2YWx1ZS4gVGhpcyBtZXRob2Qgd2lsbCBy
ZXR1cm4gdGhlCisvLyBKYXZhU2NyaXB0IHZhbHVlICd1bmRlZmluZWQnIGlmIG5vIHByb3BlcnR5
IGV4aXN0cyBhdCB0aGF0IGluZGV4LgorLSAoSlNWYWx1ZSAqKXZhbHVlQXRJbmRleDooTlNVSW50
ZWdlcilpbmRleDsKKy8vIFNldCBhbiBpbmRleGVkIHByb3BlcnR5IG9uIHRoZSB2YWx1ZS4KKy0g
KHZvaWQpc2V0VmFsdWU6KGlkKXZhbHVlIGF0SW5kZXg6KE5TVUludGVnZXIpaW5kZXg7CisKKy8v
IEFsbCBKYXZhU2NyaXB0IHZhbHVlcyBhcmUgcHJlY2lzZWx5IG9uZSBvZiB0aGVzZSB0eXBlcy4K
Ky0gKEJPT0wpaXNVbmRlZmluZWQ7CistIChCT09MKWlzTnVsbDsKKy0gKEJPT0wpaXNCb29sZWFu
OworLSAoQk9PTClpc051bWJlcjsKKy0gKEJPT0wpaXNTdHJpbmc7CistIChCT09MKWlzT2JqZWN0
OworCisvLyBUaGlzIG1ldGhvZCBoYXMgdGhlIHNhbWUgZnVuY3Rpb24gYXMgdGhlIEphdmFTY3Jp
cHQgb3BlcmF0b3IgIj09PSIuCistIChCT09MKWlzRXF1YWxUb09iamVjdDooaWQpdmFsdWU7Cisv
LyBUaGlzIG1ldGhvZCBoYXMgdGhlIHNhbWUgZnVuY3Rpb24gYXMgdGhlIEphdmFTY3JpcHQgb3Bl
cmF0b3IgIj09Ii4KKy0gKEJPT0wpaXNFcXVhbFdpdGhUeXBlQ29lcmNpb25Ub09iamVjdDooaWQp
dmFsdWU7CisvLyBUaGlzIG1ldGhvZCBoYXMgdGhlIHNhbWUgZnVuY3Rpb24gYXMgdGhlIEphdmFT
Y3JpcHQgb3BlcmF0b3IgImluc3RhbmNlb2YiLgorLSAoQk9PTClpc0luc3RhbmNlT2Y6KGlkKXZh
bHVlOworCisvLyBDYWxsIHRoaXMgdmFsdWUgYXMgYSBmdW5jdGlvbiBwYXNzaW5nIHRoZSBzcGVj
aWZpZWQgInRoaXMiIHZhbHVlIGFuZCBhcmd1bWVudHMuCistIChKU1ZhbHVlICopY2FsbFdpdGhB
cmd1bWVudHM6KE5TQXJyYXkgKilhcmd1bWVudHM7CisvLyBDYWxsIHRoaXMgdmFsdWUgYXMgYSBj
b25zdHJ1Y3RvciBwYXNzaW5nIHRoZSBzcGVjaWZpZWQgYXJndW1lbnRzLgorLSAoSlNWYWx1ZSAq
KWNvbnN0cnVjdFdpdGhBcmd1bWVudHM6KE5TQXJyYXkgKilhcmd1bWVudHM7CisvLyBBY2Nlc3Mg
dGhlIHByb3BlcnR5IG5hbWVkICJtZXRob2QiIGZyb20gdGhpcyB2YWx1ZTsgY2FsbCB0aGUgdmFs
dWUgcmVzdWx0aW5nCisvLyBmcm9tIHRoZSBwcm9wZXJ0eSBhY2Nlc3MgYXMgYSBmdW5jdGlvbiwg
cGFzc2luZyB0aGlzIHZhbHVlIGFzIHRoZSAidGhpcyIKKy8vIHZhbHVlLCBhbmQgdGhlIHNwZWNp
ZmllZCBhZ3J1bWVudHMuCistIChKU1ZhbHVlICopaW52b2tlTWV0aG9kOihOU1N0cmluZyAqKW1l
dGhvZCB3aXRoQXJndW1lbnRzOihOU0FycmF5ICopYXJndW1lbnRzOworCisvLyBUaGUgSlNDb250
ZXh0IHRoYXQgdGhpcyB2YWx1ZSBvcmlnaW5hdGVzIGZyb20uCitAcHJvcGVydHkocmVhZG9ubHks
IHJldGFpbikgSlNDb250ZXh0ICpjb250ZXh0OworCitAZW5kCisKKy8vIE9iamVjdGl2ZS1DIG1l
dGhvZHMgZXhwb3J0ZWQgdG8gSmF2YVNjcmlwdCBtYXkgaGF2ZSBhcmd1bWVudCBhbmQvb3IgcmV0
dXJuCisvLyB2YWx1ZXMgb2Ygc3RydWN0IHR5cGVzIGlmIHRoZSBzdHJ1Y3QgaWYgY29udmVyc2lv
biB0byBhbmQgZnJvbSB0aGUgc3RydWN0CisvLyBpcyBzdXBwb3J0ZWQgYnkgSlNWYWx1ZS4gU3Vw
cG9ydCBpcyBwcm92aWRlZCBmb3IgYW55IHR5cGVzIHdoZXJlIEpTVmFsdWUKKy8vIGNvbnRhaW5z
IGJvdGggYSBjbGFzcyBtZXRob2QgInZhbHVlV2l0aDxUeXBlPjppbkNvbnRleHQ6IiwgYW5kIGFu
ZCBpbnN0YW5jZQorLy8gbWV0aG9kICJ0bzxUeXBlPiIgLSB3aGVyZSB0aGUgc3RyaW5nICI8VHlw
ZT4iIGluIHRoZXNlIHNlbGVjdG9yIG5hbWVzIG1hdGNoLAorLy8gd2l0aCB0aGUgZmlyc3QgYXJn
dW1lbnQgdG8gdGhlIGZvcm1lciBiZWluZyBvZiB0aGUgc2FtZSBzdHJ1Y3QgdHlwZSBhcyB0aGUK
Ky8vIHJldHVybiB0eXBlIG9mIHRoZSBsYXR0ZXIuCisvLyBTdXBwb3J0IGlzIHByb3ZpZGVkIGZv
ciBzdHJ1Y3RzIG9mIHR5cGUgQ0dQb2ludCwgTlNSYW5nZSwgQ0dSZWN0IGFuZCBDR1NpemUuCitA
aW50ZXJmYWNlIEpTVmFsdWUoU3RydWN0U3VwcG9ydCkKKworLy8gVGhpcyBtZXRob2QgcmV0dXJu
cyBhIG5ld2x5IGFsbG9jYXRlZCBKYXZhU2NyaXB0IG9iamVjdCBjb250YWluaW5nIHByb3BlcnRp
ZXMKKy8vIG5hbWVkICJ4IiBhbmQgInkiLCB3aXRoIHZhbHVlcyBmcm9tIHRoZSBDR1BvaW50Lgor
KyAoSlNWYWx1ZSAqKXZhbHVlV2l0aFBvaW50OihDR1BvaW50KXBvaW50IGluQ29udGV4dDooSlND
b250ZXh0ICopY29udGV4dDsKKy8vIFRoaXMgbWV0aG9kIHJldHVybnMgYSBuZXdseSBhbGxvY2F0
ZWQgSmF2YVNjcmlwdCBvYmplY3QgY29udGFpbmluZyBwcm9wZXJ0aWVzCisvLyBuYW1lZCAibG9j
YXRpb24iIGFuZCAibGVuZ3RoIiwgd2l0aCB2YWx1ZXMgZnJvbSB0aGUgTlNSYW5nZS4KKysgKEpT
VmFsdWUgKil2YWx1ZVdpdGhSYW5nZTooTlNSYW5nZSlyYW5nZSBpbkNvbnRleHQ6KEpTQ29udGV4
dCAqKWNvbnRleHQ7CisvLyBUaGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3bHkgYWxsb2NhdGVkIEph
dmFTY3JpcHQgb2JqZWN0IGNvbnRhaW5pbmcgcHJvcGVydGllcworLy8gbmFtZWQgIngiLCAieSIs
ICJ3aWR0aCIsIGFuZCAiaGVpZ2h0Iiwgd2l0aCB2YWx1ZXMgZnJvbSB0aGUgQ0dSZWN0LgorKyAo
SlNWYWx1ZSAqKXZhbHVlV2l0aFJlY3Q6KENHUmVjdClyZWN0IGluQ29udGV4dDooSlNDb250ZXh0
ICopY29udGV4dDsKKy8vIFRoaXMgbWV0aG9kIHJldHVybnMgYSBuZXdseSBhbGxvY2F0ZWQgSmF2
YVNjcmlwdCBvYmplY3QgY29udGFpbmluZyBwcm9wZXJ0aWVzCisvLyBuYW1lZCAid2lkdGgiIGFu
ZCAiaGVpZ2h0Iiwgd2l0aCB2YWx1ZXMgZnJvbSB0aGUgQ0dTaXplLgorKyAoSlNWYWx1ZSAqKXZh
bHVlV2l0aFNpemU6KENHU2l6ZSlzaXplIGluQ29udGV4dDooSlNDb250ZXh0ICopY29udGV4dDsK
KworLy8gQ29udmVydCBhIHZhbHVlIHRvIHR5cGUgQ0dQb2ludCBieSByZWFkaW5nIHByb3BlcnRp
ZXMgbmFtZWQgIngiIGFuZCAieSIgZnJvbQorLy8gdGhpcyB2YWx1ZSwgYW5kIGNvbnZlcnRpbmcg
dGhlIHJlc3VsdHMgdG8gZG91YmxlLgorLSAoQ0dQb2ludCl0b1BvaW50OworLy8gQ29udmVydCBh
IHZhbHVlIHRvIHR5cGUgTlNSYW5nZSBieSBhY2Nlc3NpbmcgcHJvcGVydGllcyBuYW1lZCAibG9j
YXRpb24iIGFuZAorLy8gImxlbmd0aCIgZnJvbSB0aGlzIHZhbHVlIGNvbnZlcnRpbmcgdGhlIHJl
c3VsdHMgdG8gZG91YmxlLgorLSAoTlNSYW5nZSl0b1JhbmdlOworLy8gQ29udmVydCBhIHZhbHVl
IHRvIHR5cGUgQ0dSZWN0IGJ5IHJlYWRpbmcgcHJvcGVydGllcyBuYW1lZCAieCIsICJ5IiwgIndp
ZHRoIiwKKy8vIGFuZCAiaGVpZ2h0IiBmcm9tIHRoaXMgdmFsdWUsIGFuZCBjb252ZXJ0aW5nIHRo
ZSByZXN1bHRzIHRvIGRvdWJsZS4KKy0gKENHUmVjdCl0b1JlY3Q7CisvLyBDb252ZXJ0IGEgdmFs
dWUgdG8gdHlwZSBDR1JhbmdlIGJ5IGFjY2Vzc2luZyBwcm9wZXJ0aWVzIG5hbWVkICJ3aWR0aCIg
YW5kCisvLyAiaGVpZ2h0IiBmcm9tIHRoaXMgdmFsdWUgY29udmVydGluZyB0aGUgcmVzdWx0cyB0
byBkb3VibGUuCistIChDR1NpemUpdG9TaXplOworCitAZW5kCisKKy8vIEluc3RhbmNlcyBvZiBK
U1ZhbHVlIGltcGxlbWVudCB0aGUgZm9sbG93aW5nIG1ldGhvZHMgaW4gb3JkZXIgdG8gZW5hYmxl
CisvLyBzdXBwb3J0IGZvciBzdWJzY3JpcHQgYWNjZXNzIGJ5IGtleSBhbmQgaW5kZXgsIGZvciBl
eGFtcGxlOgorLy8KKy8vICAgIEpTVmFsdWUgKm9iamVjdEEsICpvYmplY3RCOworLy8gICAgSlNW
YWx1ZSAqdjEgPSBvYmplY3RbQCJYIl07IC8vIEdldCB2YWx1ZSBmb3IgcHJvcGVydHkgIlgiIGZy
b20gJ29iamVjdCcuCisvLyAgICBKU1ZhbHVlICp2MiA9IG9iamVjdFs0Ml07ICAgLy8gR2V0IHZh
bHVlIGZvciBpbmRleCA0MiBmcm9tICdvYmplY3QnLgorLy8gICAgb2JqZWN0W0AiWSJdID0gdjE7
ICAgICAgICAgIC8vIEFzc2lnbiAndjEnIHRvIHByb3BlcnR5ICJZIiBvZiAnb2JqZWN0Jy4KKy8v
ICAgIG9iamVjdFsxMDFdID0gdjI7ICAgICAgICAgICAvLyBBc3NpZ24gJ3YyJyB0byBpbmRleCAx
MDEgb2YgJ29iamVjdCcuCisvLworLy8gQW4gb2JqZWN0IGtleSBwYXNzZWQgYXMgYSBzdWJzY3Jp
cHQgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gYSBKYXZhU2NpcHQgdmFsdWUsCisvLyBhbmQgdGhlbiB0
aGUgdmFsdWUgY29udmVydGVkIHRvIGEgc3RyaW5nIHVzZWQgYXMgYSBwcm9wZXJ0eSBuYW1lLgor
QGludGVyZmFjZSBKU1ZhbHVlKFN1YnNjcmlwdFN1cHBvcnQpCisKKy0gKEpTVmFsdWUgKilvYmpl
Y3RGb3JLZXllZFN1YnNjcmlwdDooaWQpa2V5OworLSAoSlNWYWx1ZSAqKW9iamVjdEF0SW5kZXhl
ZFN1YnNjcmlwdDooTlNVSW50ZWdlcilpbmRleDsKKy0gKHZvaWQpc2V0T2JqZWN0OihpZClvYmpl
Y3QgZm9yS2V5ZWRTdWJzY3JpcHQ6KE5TT2JqZWN0IDxOU0NvcHlpbmc+ICopa2V5OworLSAodm9p
ZClzZXRPYmplY3Q6KGlkKW9iamVjdCBhdEluZGV4ZWRTdWJzY3JpcHQ6KE5TVUludGVnZXIpaW5k
ZXg7CisKK0BlbmQKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgor
CisvLyBUaGVzZSBrZXlzIG1heSBhc3Npc3QgaW4gY3JlYXRpbmcgYSBwcm9wZXJ0eSBkZXNjcmlw
dG9yIGZvciB1c2Ugd2l0aCB0aGUKKy8vIGRlZmluZVByb3BlcnR5IG1ldGhvZCBvbiBKU1ZhbHVl
LgorLy8gUHJvcGVydHkgZGVzY3JpcHRvcnMgbXVzdCBmaXQgb25lIG9mIHRocmVlIGRlc2NyaXB0
aW9uczoKKy8vIERhdGEgRGVzY3JpcHRvcjoKKy8vICAtIEEgZGVzY3JpcHRvciBjb250YWluaW5n
IG9uZSBvciBib3RoIG9mIHRoZSBrZXlzICJ2YWx1ZSIgYW5kICJ3cml0YWJsZSIsCisvLyAgICBh
bmQgb3B0aW9uYWxseSBjb250YWluaW5nIG9uZSBvciBib3RoIG9mIHRoZSBrZXlzICJlbnVtZXJh
YmxlIiBhbmQKKy8vICAgICJjb25maWd1cmFibGUiLiBBIGRhdGEgZGVzY3JpcHRvciBtYXkgbm90
IGNvbnRhaW4gZWl0aGVyIHRoZSAiZ2V0IiBvcgorLy8gICAgInNldCIga2V5LgorLy8gICAgQSBk
YXRhIGRlc2NyaXB0b3IgbWF5IGJlIHVzZWQgdG8gY3JlYXRlIG9yIG1vZGlmeSB0aGUgYXR0cmli
dXRlcyBvZiBhCisvLyAgICBkYXRhIHByb3BlcnR5IG9uIGFuIG9iamVjdCAocmVwbGFjaW5nIGFu
eSBleGlzdGluZyBhY2Nlc3NvciBwcm9wZXJ0eSkuCisvLyBBY2Nlc3NvciBEZXNjcmlwdG9yOgor
Ly8gIC0gQSBkZXNjcmlwdG9yIGNvbnRhaW5pbmcgb25lIG9yIGJvdGggb2YgdGhlIGtleXMgImdl
dCIgYW5kICJzZXQiLCBhbmQKKy8vICAgIG9wdGlvbmFsbHkgY29udGFpbmluZyBvbmUgb3IgYm90
aCBvZiB0aGUga2V5cyAiZW51bWVyYWJsZSIgYW5kCisvLyAgICAiY29uZmlndXJhYmxlIi4gQW4g
YWNjZXNzb3IgZGVzY3JpcHRvciBtYXkgbm90IGNvbnRhaW4gZWl0aGVyIHRoZSAidmFsdWUiCisv
LyAgICBvciAid3JpdGFibGUiIGtleS4KKy8vICAgIEFuIGFjY2Vzc29yIGRlc2NyaXB0b3IgbWF5
IGJlIHVzZWQgdG8gY3JlYXRlIG9yIG1vZGlmeSB0aGUgYXR0cmlidXRlcyBvZgorLy8gICAgYW4g
YWNjZXNzb3IgcHJvcGVydHkgb24gYW4gb2JqZWN0IChyZXBsYWNpbmcgYW55IGV4aXN0aW5nIGRh
dGEgcHJvcGVydHkpLgorLy8gR2VuZXJpYyBEZXNjcmlwdG9yOgorLy8gIC0gQSBkZXNjcmlwdG9y
IGNvbnRhaW5pbmcgb25lIG9yIGJvdGggb2YgdGhlIGtleXMgImVudW1lcmFibGUiIGFuZAorLy8g
ICAgImNvbmZpZ3VyYWJsZSIuIEEgZ2VuZXJpYyBkZXNjcmlwdG9yIG1heSBub3QgY29udGFpbiBh
bnkgb2YgdGhlIGtleXMKKy8vICAgICJ2YWx1ZSIsICIgd3JpdGFibGUiLCAiZ2V0Iiwgb3IgInNl
dCIuCisvLyAgICBBIGdlbmVyaWMgZGVzY3JpcHRvciBtYXkgYmUgdXNlZCB0byBtb2RpZnkgdGhl
IGF0dHJpYnV0ZXMgb2YgYW4gZXhpc3RpbmcKKy8vICAgIGRhdGEgb3IgYWNjZXNzb3IgcHJvcGVy
dHksIG9yIHRvIGNyZWF0ZSBhIG5ldyBkYXRhIHByb3BlcnR5LgorSlNfRVhQT1JUIGV4dGVybiBO
U1N0cmluZyAqIGNvbnN0IEpTUHJvcGVydHlEZXNjcmlwdG9yV3JpdGFibGVLZXk7CitKU19FWFBP
UlQgZXh0ZXJuIE5TU3RyaW5nICogY29uc3QgSlNQcm9wZXJ0eURlc2NyaXB0b3JFbnVtZXJhYmxl
S2V5OworSlNfRVhQT1JUIGV4dGVybiBOU1N0cmluZyAqIGNvbnN0IEpTUHJvcGVydHlEZXNjcmlw
dG9yQ29uZmlndXJhYmxlS2V5OworSlNfRVhQT1JUIGV4dGVybiBOU1N0cmluZyAqIGNvbnN0IEpT
UHJvcGVydHlEZXNjcmlwdG9yVmFsdWVLZXk7CitKU19FWFBPUlQgZXh0ZXJuIE5TU3RyaW5nICog
Y29uc3QgSlNQcm9wZXJ0eURlc2NyaXB0b3JHZXRLZXk7CitKU19FWFBPUlQgZXh0ZXJuIE5TU3Ry
aW5nICogY29uc3QgSlNQcm9wZXJ0eURlc2NyaXB0b3JTZXRLZXk7CisKKyNpZmRlZiBfX2NwbHVz
cGx1cworfSAvLyBleHRlcm4gIkMiCisjZW5kaWYKKworI2VuZGlmCisKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTVmFsdWUubW0JKHJldmlzaW9uIDE0MDM0NikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBA
QAogI2ltcG9ydCAiSlNXcmFwcGVyTWFwLmgiCiAjaW1wb3J0ICJPYmpjUnVudGltZUV4dHJhcy5o
IgogI2ltcG9ydCAiT3BlcmF0aW9ucy5oIgotI2ltcG9ydCAiSlNWYWx1ZS5oIgorI2ltcG9ydCAi
SlNDSlNWYWx1ZS5oIgogI2ltcG9ydCAid3RmL0hhc2hNYXAuaCIKICNpbXBvcnQgInd0Zi9IYXNo
U2V0LmgiCiAjaW1wb3J0ICJ3dGYvVmVjdG9yLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTVmFsdWVJbnRlcm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNWYWx1ZUludGVybmFsLmgJKHJldmlzaW9uIDE0MDM0NikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZUludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0
LDcgKzI0LDcgQEAKICAqLwogCiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS5oPgotI2ltcG9ydCAiQVBJSlNWYWx1ZS5oIgorI2ltcG9ydCAiSlNWYWx1ZS5oIgogCiAjaWYg
SlNfT0JKQ19BUElfRU5BQkxFRAogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
VmFsdWVSZWYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNW
YWx1ZVJlZi5jcHAJKHJldmlzaW9uIDE0MDM0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNWYWx1ZVJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDEzICszMCwxMyBAQAogI2lu
Y2x1ZGUgIkFQSVNoaW1zLmgiCiAjaW5jbHVkZSAiSlNDYWxsYmFja09iamVjdC5oIgogCisjaW5j
bHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0dsb2JhbE9i
amVjdC5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNPTk9iamVjdC5oPgogI2luY2x1ZGUgPHJ1bnRp
bWUvSlNTdHJpbmcuaD4KICNpbmNsdWRlIDxydW50aW1lL0xpdGVyYWxQYXJzZXIuaD4KICNpbmNs
dWRlIDxydW50aW1lL09wZXJhdGlvbnMuaD4KICNpbmNsdWRlIDxydW50aW1lL1Byb3RlY3QuaD4K
LSNpbmNsdWRlIDxydW50aW1lL0pTVmFsdWUuaD4KIAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25z
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU1dlYWtPYmplY3RNYXBSZWZQcml2YXRlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV2Vha09iamVjdE1hcFJlZlByaXZhdGUuY3Bw
CShyZXZpc2lvbiAxNDAzNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV2Vha09i
amVjdE1hcFJlZlByaXZhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw4ICsyOCw4IEBACiAK
ICNpbmNsdWRlICJBUElDYXN0LmgiCiAjaW5jbHVkZSAiQVBJU2hpbXMuaCIKKyNpbmNsdWRlICJK
U0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNDYWxsYmFja09iamVjdC5oIgotI2luY2x1ZGUgIkpT
VmFsdWUuaCIKICNpbmNsdWRlICJKU1dlYWtPYmplY3RNYXBSZWZJbnRlcm5hbC5oIgogI2luY2x1
ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KYXZhU2NyaXB0Q29yZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSmF2YVNjcmlwdENvcmUuaAkocmV2aXNpb24gMTQwMzQ2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KYXZhU2NyaXB0Q29yZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMiw3ICszMiw3IEBACiAjaWYgZGVmaW5lZChfX09CSkNfXykgJiYgSlNfT0JKQ19B
UElfRU5BQkxFRAogCiAjaW1wb3J0ICJKU0NvbnRleHQuaCIKLSNpbXBvcnQgIkFQSUpTVmFsdWUu
aCIKKyNpbXBvcnQgIkpTVmFsdWUuaCIKICNpbXBvcnQgIkpTVmlydHVhbE1hY2hpbmUuaCIKICNp
bXBvcnQgIkpTRXhwb3J0LmgiCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCShyZXZpc2lvbiAxNDAzNDYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtOTgyLDE1ICs5ODIsMTUg
QEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5c
cnVudGltZVxKU1ZhbHVlLmNwcCIKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHJ1bnRpbWVcSlND
SlNWYWx1ZS5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXC4uXHJ1bnRpbWVcSlNWYWx1ZS5oIgorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccnVu
dGltZVxKU0NKU1ZhbHVlLmgiCiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKLQkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXC4uXHJ1bnRpbWVcSlNWYWx1ZUlubGluZXMuaCIKKwkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXC4uXHJ1bnRpbWVcSlNDSlNWYWx1ZUlubGluZXMuaCIKIAkJCQk+CiAJCQk8L0ZpbGU+
CiAJCQk8RmlsZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE0
MDM0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00MjYsNyArNDI2LDcgQEAKIAkJMTQ3
RjM5RDIxMDdFQzM3NjAwNDI3QTQ4IC8qIEpTR2xvYmFsT2JqZWN0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0REUwRDY4MEQwMjQzMTQwMEFBQ0NB
MiAvKiBKU0dsb2JhbE9iamVjdC5jcHAgKi87IH07CiAJCTE0N0YzOUQ0MTA3RUMzNzYwMDQyN0E0
OCAvKiBKU09iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQzIyQTM5ODBFMTZFMTQ4MDBBRjIxQzggLyogSlNPYmplY3QuY3BwICovOyB9Owog
CQkxNDdGMzlENTEwN0VDMzc2MDA0MjdBNDggLyogSlNTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwMkU5QjYwRTE4NDJGQTAwMEY5Mjk3
IC8qIEpTU3RyaW5nLmNwcCAqLzsgfTsKLQkJMTQ3RjM5RDYxMDdFQzM3NjAwNDI3QTQ4IC8qIEpT
VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RjY5MkE4ODcwMjU1NTk3RDAxRkY2MEY3IC8qIEpTVmFsdWUuY3BwICovOyB9OworCQkxNDdGMzlE
NjEwN0VDMzc2MDA0MjdBNDggLyogSlNDSlNWYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjkyQTg4NzAyNTU1OTdEMDFGRjYwRjcgLyogSlND
SlNWYWx1ZS5jcHAgKi87IH07CiAJCTE0N0YzOUQ3MTA3RUMzNzYwMDQyN0E0OCAvKiBKU1Zhcmlh
YmxlT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDMjJBMzlBMEUxNkUxNDgwMEFGMjFDOCAvKiBKU1ZhcmlhYmxlT2JqZWN0LmNwcCAqLzsg
fTsKIAkJMTQ4MTZFMUIxNTRDQzU2QzAwQjgwNTRDIC8qIEJsb2NrQWxsb2NhdG9yLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0ODE2RTE5MTU0Q0M1
NkMwMEI4MDU0QyAvKiBCbG9ja0FsbG9jYXRvci5jcHAgKi87IH07CiAJCTE0ODE2RTFDMTU0Q0M1
NkMwMEI4MDU0QyAvKiBCbG9ja0FsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ4MTZFMUExNTRDQzU2QzAwQjgwNTRDIC8qIEJsb2NrQWxs
b2NhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTUwMiw3ICs1MDIsNyBAQAogCQk4NjNDNkQ5QzE1MjExMTFBMDA1ODVFNEUgLyogWWFyckNh
bm9uaWNhbGl6ZVVDUzIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODYzQzZEOTgxNTIxMTExMjAwNTg1RTRFIC8qIFlhcnJDYW5vbmljYWxpemVVQ1My
LmNwcCAqLzsgfTsKIAkJODY0MkM1MTAxNTFDMDZBOTAwNDZENEVGIC8qIFJlZ0V4cENhY2hlZFJl
c3VsdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NkY3NUVGQjE1MUMwNjJGMDA3QzlCQTMgLyogUmVnRXhwQ2FjaGVkUmVzdWx0LmNwcCAqLzsgfTsK
IAkJODY0MkM1MTIxNTFDMDgzRDAwNDZENEVGIC8qIFJlZ0V4cE1hdGNoZXNBcnJheS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkY3NUVGRDE1MUMw
NjJGMDA3QzlCQTMgLyogUmVnRXhwTWF0Y2hlc0FycmF5LmNwcCAqLzsgfTsKLQkJODY1QTMwRjEx
MzUwMDdFMTAwQ0RCNDlFIC8qIEpTVmFsdWVJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjVBMzBGMDEzNTAwN0UxMDBDREI0OUUgLyogSlNW
YWx1ZUlubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQk4NjVBMzBGMTEzNTAwN0UxMDBDREI0OUUgLyogSlNDSlNWYWx1ZUlubGluZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NUEzMEYwMTM1
MDA3RTEwMENEQjQ5RSAvKiBKU0NKU1ZhbHVlSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2NUY0MDg4MTBFN0Q1NjMwMDk0NzM2MSAv
KiBBUElTaGltcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODY1RjQwODcxMEU3RDU2MzAwOTQ3MzYxIC8qIEFQSVNoaW1zLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY2NzM5RDIxM0JGREU3MTAwMjNE
ODdDIC8qIEJpZ0ludGVnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg2NjczOUQwMTNCRkRFNzEwMDIzRDg3QyAvKiBCaWdJbnRlZ2VyLmggKi87IH07
CiAJCTg2NjczOUQzMTNCRkRFNzEwMDIzRDg3QyAvKiBVaW50MTZXaXRoRnJhY3Rpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NjczOUQxMTNCRkRF
NzEwMDIzRDg3QyAvKiBVaW50MTZXaXRoRnJhY3Rpb24uaCAqLzsgfTsKQEAgLTU1MSw3ICs1NTEs
NyBAQAogCQk4NkQzQjNDNDEwMTU5RDdGMDAyODY1RTcgLyogUmVwYXRjaEJ1ZmZlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZEM0IzQzIxMDE1OUQ3
RjAwMjg2NUU3IC8qIFJlcGF0Y2hCdWZmZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkRCNjQ2NDBGOTVDNkZDMDBEN0Q5MjEgLyogRXhlY3V0
YWJsZUFsbG9jYXRvckZpeGVkVk1Qb29sLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg2REI2NDYzMEY5NUM2RkMwMEQ3RDkyMSAvKiBFeGVjdXRhYmxl
QWxsb2NhdG9yRml4ZWRWTVBvb2wuY3BwICovOyB9OwogCQk4NkUxMTZCMTBGRTc1QUM4MDBCNTEy
QkMgLyogQ29kZUxvY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NkUxMTZCMDBGRTc1QUM4MDBCNTEyQkMgLyogQ29kZUxvY2F0aW9uLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJODZFM0M2MTIx
NjdCQUJENzAwNkQ3NjBBIC8qIEFQSUpTVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RTNDNjA2MTY3QkFCODcwMDZENzYwQSAvKiBBUElKU1Zh
bHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQk4
NkUzQzYxMjE2N0JBQkQ3MDA2RDc2MEEgLyogSlNWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZFM0M2MDYxNjdCQUI4NzAwNkQ3NjBBIC8qIEpT
VmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJ
CTg2RTNDNjEzMTY3QkFCRDcwMDZENzYwQSAvKiBKU0NvbnRleHQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RTNDNjA3MTY3QkFCODcwMDZENzYwQSAv
KiBKU0NvbnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07
IH07CiAJCTg2RTNDNjE0MTY3QkFCRDcwMDZENzYwQSAvKiBKU0V4cG9ydC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZFM0M2MEExNjdCQUI4NzAwNkQ3
NjBBIC8qIEpTRXhwb3J0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCAp
OyB9OyB9OwogCQk4NkUzQzYxNTE2N0JBQkQ3MDA2RDc2MEEgLyogSlNWaXJ0dWFsTWFjaGluZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZFM0M2MEYx
NjdCQUI4NzAwNkQ3NjBBIC8qIEpTVmlydHVhbE1hY2hpbmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CkBAIC03MTksNyArNzE5LDcgQEAKIAkJQkMxOEM0
MjgwRTE2RjVDRDAwQjM0NDYwIC8qIEpTU3RyaW5nUmVmLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDgyQjc0QjBBNDMwMzI4MDA1MTdDRkMgLyogSlNT
dHJpbmdSZWYuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07
CiAJCUJDMThDNDI5MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU1N0cmluZ1JlZkNGLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDZBQUIyQTBCNjZBODQ5MDBF
NTVGMTYgLyogSlNTdHJpbmdSZWZDRi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1
YmxpYywgKTsgfTsgfTsKIAkJQkMxOEM0MkEwRTE2RjVDRDAwQjM0NDYwIC8qIEpTVHlwZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRBQkI0NTQwOTlD
MkEwRjAwRTJBMjRGIC8qIEpTVHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07Ci0JCUJDMThDNDJCMEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU1ZhbHVlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEFCQjM2RTA5
OUMwNzY0MDBFMkEyNEYgLyogSlNWYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCUJDMThDNDJCMEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0NKU1Zh
bHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEFC
QjM2RTA5OUMwNzY0MDBFMkEyNEYgLyogSlNDSlNWYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDMThDNDJDMEUxNkY1Q0QwMEIzNDQ2MCAv
KiBKU1ZhbHVlUmVmLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxNDgyQjZFQTBBNDMwMEIzMDA1MTdDRkMgLyogSlNWYWx1ZVJlZi5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJQkMxOEM0MkQwRTE2RjVDRDAw
QjM0NDYwIC8qIEpTVmFyaWFibGVPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDE0RjI1MjU2MEQwOEREOEQwMDRFQ0ZGRiAvKiBKU1ZhcmlhYmxl
T2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJQkMxOEM0MkUwRTE2RjVDRDAwQjM0NDYwIC8qIEpTV3JhcHBlck9iamVjdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVDN0ExNzIwQThFQUFDQjAw
RkEzN0VBIC8qIEpTV3JhcHBlck9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC0xMjYzLDcgKzEyNjMsNyBAQAogCQkxNEE0MkUzRDBGNEY2
MEVFMDA1OTkwOTkgLyogVGltZW91dENoZWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gVGltZW91dENoZWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxNEE0MkUzRTBGNEY2MEVFMDA1OTkwOTkgLyogVGltZW91dENoZWNrZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGltZW91dENoZWNrZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTRBNjU4MUEwRjRFMzZGNDAwMDE1MEZEIC8qIEpJVFN0dWJz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVFN0dWJzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTE0QUJCMzZFMDk5QzA3NjQwMEUyQTI0RiAvKiBKU1ZhbHVl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1ZhbHVlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0QUJCMzZFMDk5QzA3NjQwMEUyQTI0RiAvKiBKU0NKU1Zh
bHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NKU1ZhbHVlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0QUJCNDU0MDk5QzJBMEYwMEUyQTI0RiAvKiBK
U1R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNUeXBlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0QUJERjVEMEE0MzdGRUYwMEVDQ0EwMSAvKiBKU0Nh
bGxiYWNrT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ2FsbGJh
Y2tPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTRBQkRGNUUwQTQzN0ZF
RjAwRUNDQTAxIC8qIEpTQ2FsbGJhY2tPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNDYWxsYmFja09iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xMzU2LDcgKzEzNTYsNyBAQAogCQk4NjNDNkQ5ODE1MjExMTEyMDA1ODVFNEUg
LyogWWFyckNhbm9uaWNhbGl6ZVVDUzIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gWWFyckNhbm9uaWNhbGl6ZVVDUzIuY3BwOyBwYXRoID0geWFyci9ZYXJyQ2Fub25p
Y2FsaXplVUNTMi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2M0M2RDk5MTUy
MTExMTIwMDU4NUU0RSAvKiBZYXJyQ2Fub25pY2FsaXplVUNTMi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBZYXJyQ2Fub25pY2FsaXplVUNTMi5oOyBwYXRoID0geWFyci9ZYXJy
Q2Fub25pY2FsaXplVUNTMi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjNDNkQ5
QTE1MjExMTEyMDA1ODVFNEUgLyogWWFyckNhbm9uaWNhbGl6ZVVDUzIuanMgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmphdmFzY3JpcHQ7IG5hbWUgPSBZYXJyQ2Fub25pY2FsaXplVUNTMi5qczsgcGF0
aCA9IHlhcnIvWWFyckNhbm9uaWNhbGl6ZVVDUzIuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTg2NUEzMEYwMTM1MDA3RTEwMENEQjQ5RSAvKiBKU1ZhbHVlSW5saW5lcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1ZhbHVlSW5saW5lcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk4NjVBMzBGMDEzNTAwN0UxMDBDREI0OUUgLyogSlNDSlNWYWx1
ZUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDSlNWYWx1ZUlu
bGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY1RjQwODcxMEU3RDU2MzAw
OTQ3MzYxIC8qIEFQSVNoaW1zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQ
SVNoaW1zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2NjczOUQwMTNCRkRFNzEw
MDIzRDg3QyAvKiBCaWdJbnRlZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEJpZ0ludGVnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY2NzM5RDExM0JG
REU3MTAwMjNEODdDIC8qIFVpbnQxNldpdGhGcmFjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBVaW50MTZXaXRoRnJhY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE0MTEsNyArMTQxMSw3IEBACiAJCTg2RDNCM0MyMTAxNTlEN0YwMDI4NjVFNyAv
KiBSZXBhdGNoQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlcGF0
Y2hCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODZEQjY0NjMwRjk1QzZG
QzAwRDdEOTIxIC8qIEV4ZWN1dGFibGVBbGxvY2F0b3JGaXhlZFZNUG9vbC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeGVjdXRhYmxlQWxsb2NhdG9yRml4ZWRWTVBv
b2wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkUxMTZCMDBGRTc1QUM4MDBC
NTEyQkMgLyogQ29kZUxvY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENvZGVMb2NhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4NkUzQzYwNjE2
N0JBQjg3MDA2RDc2MEEgLyogQVBJSlNWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBUElKU1ZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2RTND
NjA2MTY3QkFCODcwMDZENzYwQSAvKiBKU1ZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODZFM0M2
MDcxNjdCQUI4NzAwNkQ3NjBBIC8qIEpTQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU0NvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODZF
M0M2MDgxNjdCQUI4NzAwNkQ3NjBBIC8qIEpTQ29udGV4dC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IEpTQ29udGV4dC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJODZFM0M2MDkxNjdCQUI4NzAwNkQ3NjBBIC8qIEpTQ29udGV4dEludGVybmFsLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ29udGV4dEludGVybmFsLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzE4LDcgKzE3MTgsNyBAQAogCQlGNjkyQTg3
QzAyNTU1OTdEMDFGRjYwRjcgLyogUmVnRXhwT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cE9iamVjdC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CiAJCUY2OTJBODdEMDI1NTU5N0QwMUZGNjBG
NyAvKiBSZWdFeHAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmVnRXhwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lk
dGggPSA4OyB9OwogCQlGNjkyQTg3RTAyNTU1OTdEMDFGRjYwRjcgLyogUmVnRXhwLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07Ci0JCUY2OTJBODg3MDI1NTU5
N0QwMUZGNjBGNyAvKiBKU1ZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB0YWJXaWR0aCA9IDg7IH07CisJCUY2OTJBODg3MDI1NTU5N0QwMUZGNjBGNyAvKiBKU0NK
U1ZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTQ0pTVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0
aCA9IDg7IH07CiAJCUZFMjBDRTlCMTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENMb29wLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50Q0xvb3AuY3BwOyBwYXRo
ID0gbGxpbnQvTExJbnRDTG9vcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZF
MjBDRTlDMTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENMb29wLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IExMSW50Q0xvb3AuaDsgcGF0aCA9IGxsaW50L0xMSW50Q0xvb3AuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU0QTMzMUQxNUJEMkUwNzAwNkY1NEYzIC8q
IFZNSW5zcGVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZN
SW5zcGVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwODgsNyArMjA4
OCw3IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTE0ODJCNzhB
MEE0MzA1QUIwMDUxN0NGQyAvKiBBUElDYXN0LmggKi8sCi0JCQkJODZFM0M2MDYxNjdCQUI4NzAw
NkQ3NjBBIC8qIEFQSUpTVmFsdWUuaCAqLywKKwkJCQk4NkUzQzYwNjE2N0JBQjg3MDA2RDc2MEEg
LyogSlNWYWx1ZS5oICovLAogCQkJCTg2NUY0MDg3MTBFN0Q1NjMwMDk0NzM2MSAvKiBBUElTaGlt
cy5oICovLAogCQkJCTFDQUE4QjRBMEQzMkMzOUEwMDQxQkNGRiAvKiBKYXZhU2NyaXB0LmggKi8s
CiAJCQkJMUNBQThCNEIwRDMyQzM5QTAwNDFCQ0ZGIC8qIEphdmFTY3JpcHRDb3JlLmggKi8sCkBA
IC0yMzg5LDkgKzIzODksOSBAQAogCQkJCTBGOTE5RDBBMTU3RUUwOUQwMDRBNEU3RCAvKiBKU1N5
bWJvbFRhYmxlT2JqZWN0LmggKi8sCiAJCQkJMTRBQkI0NTQwOTlDMkEwRjAwRTJBMjRGIC8qIEpT
VHlwZS5oICovLAogCQkJCTY1MDdEMjk3MEU4NzFFNEEwMEQ3RDg5NiAvKiBKU1R5cGVJbmZvLmgg
Ki8sCi0JCQkJRjY5MkE4ODcwMjU1NTk3RDAxRkY2MEY3IC8qIEpTVmFsdWUuY3BwICovLAotCQkJ
CTE0QUJCMzZFMDk5QzA3NjQwMEUyQTI0RiAvKiBKU1ZhbHVlLmggKi8sCi0JCQkJODY1QTMwRjAx
MzUwMDdFMTAwQ0RCNDlFIC8qIEpTVmFsdWVJbmxpbmVzLmggKi8sCisJCQkJRjY5MkE4ODcwMjU1
NTk3RDAxRkY2MEY3IC8qIEpTQ0pTVmFsdWUuY3BwICovLAorCQkJCTE0QUJCMzZFMDk5QzA3NjQw
MEUyQTI0RiAvKiBKU0NKU1ZhbHVlLmggKi8sCisJCQkJODY1QTMwRjAxMzUwMDdFMTAwQ0RCNDlF
IC8qIEpTQ0pTVmFsdWVJbmxpbmVzLmggKi8sCiAJCQkJQkMyMkEzOUEwRTE2RTE0ODAwQUYyMUM4
IC8qIEpTVmFyaWFibGVPYmplY3QuY3BwICovLAogCQkJCTE0RjI1MjU2MEQwOEREOEQwMDRFQ0ZG
RiAvKiBKU1ZhcmlhYmxlT2JqZWN0LmggKi8sCiAJCQkJMTQ0MjU2NUYxNUVERTk4RDAwNjZBNDlC
IC8qIEpTV2l0aFNjb3BlLmNwcCAqLywKQEAgLTI4MzgsNyArMjgzOCw3IEBACiAJCQkJODYwMTYx
RTMwRjNBODNDMTAwRjg0NzEwIC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGNTVGMEY1MTREMTA2M0MwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzE4QzNFNTBFMTZGNUNEMDBCMzQ0NjAgLyogQVBJQ2FzdC5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJODZFM0M2MTIxNjdCQUJENzAwNkQ3NjBBIC8qIEFQSUpTVmFsdWUuaCBp
biBIZWFkZXJzICovLAorCQkJCTg2RTNDNjEyMTY3QkFCRDcwMDZENzYwQSAvKiBKU1ZhbHVlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4NjVGNDA4ODEwRTdENTYzMDA5NDczNjEgLyogQVBJU2hpbXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDRjYwNTE0MEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzI1N0RFODBFMUY1MUM1MDAxNkI2QzkgLyogQXJndW1l
bnRzLmggaW4gSGVhZGVycyAqLywKQEAgLTMwNzYsOCArMzA3Niw4IEBACiAJCQkJMEY5MTlEMEQx
NTdFRTBBMjAwNEE0RTdEIC8qIEpTU3ltYm9sVGFibGVPYmplY3QuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDMThDNDJBMEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU1R5cGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTY1MDdEMjlFMEU4NzFFNUUwMEQ3RDg5NiAvKiBKU1R5cGVJbmZvLmggaW4gSGVhZGVycyAq
LywKLQkJCQlCQzE4QzQyQjBFMTZGNUNEMDBCMzQ0NjAgLyogSlNWYWx1ZS5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJODY1QTMwRjExMzUwMDdFMTAwQ0RCNDlFIC8qIEpTVmFsdWVJbmxpbmVzLmggaW4g
SGVhZGVycyAqLywKKwkJCQlCQzE4QzQyQjBFMTZGNUNEMDBCMzQ0NjAgLyogSlNDSlNWYWx1ZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJODY1QTMwRjExMzUwMDdFMTAwQ0RCNDlFIC8qIEpTQ0pTVmFs
dWVJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkUzQzYxQjE2N0JBQkVFMDA2RDc2MEEg
LyogSlNWYWx1ZUludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQyQzBFMTZGNUNE
MDBCMzQ0NjAgLyogSlNWYWx1ZVJlZi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MkQwRTE2
RjVDRDAwQjM0NDYwIC8qIEpTVmFyaWFibGVPYmplY3QuaCBpbiBIZWFkZXJzICovLApAQCAtMzc4
NCw3ICszNzg0LDcgQEAKIAkJCQkxNDgyQjc0RTBBNDMwMzI4MDA1MTdDRkMgLyogSlNTdHJpbmdS
ZWYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ2QUFCMzgwQjY2QTk0NDAwRTU1RjE2IC8qIEpT
U3RyaW5nUmVmQ0YuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5MTlEMEMxNTdFRTA5RjAwNEE0
RTdEIC8qIEpTU3ltYm9sVGFibGVPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMTQ3RjM5
RDYxMDdFQzM3NjAwNDI3QTQ4IC8qIEpTVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMTQ3
RjM5RDYxMDdFQzM3NjAwNDI3QTQ4IC8qIEpTQ0pTVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJODZFM0M2MUExNjdCQUJFRTAwNkQ3NjBBIC8qIEpTVmFsdWUubW0gaW4gU291cmNlcyAqLywK
IAkJCQkxNEJENUEzMjBBM0U5MUY2MDBCQUY1OUMgLyogSlNWYWx1ZVJlZi5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxNDdGMzlENzEwN0VDMzc2MDA0MjdBNDggLyogSlNWYXJpYWJsZU9iamVjdC5j
cHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
YWxsTGlua1N0YXR1cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9DYWxsTGlua1N0YXR1cy5oCShyZXZpc2lvbiAxNDAzNDYpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjgs
NyArMjgsNyBAQAogCiAjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgogI2luY2x1
ZGUgIkludHJpbnNpYy5oIgotI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0NKU1Zh
bHVlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMTQwMzQ2KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQx
LDkgKzQxLDkgQEAKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRTdHVicy5oIgogI2lu
Y2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRl
ICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIKLSNpbmNsdWRlICJKU1Zh
bHVlLmgiCiAjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIk9wZXJh
dGlvbnMuaCIKICNpbmNsdWRlICJSZWR1Y2VXaGl0ZXNwYWNlLmgiCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdB
VmFsdWVQcm9maWxlLmgJKHJldmlzaW9uIDE0MDM0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM0LDcgKzM0LDcgQEAKIC8vIHRoZXNlICNpZidzIHdpbGwgZGlzYXBwZWFyLi4uCiAjaWYg
RU5BQkxFKERGR19KSVQpCiAKLSNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNW
YWx1ZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1Jlc29sdmVHbG9iYWxTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXNvbHZlR2xvYmFsU3RhdHVzLmNwcAkocmV2aXNpb24g
MTQwMzQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Jlc29sdmVHbG9iYWxT
dGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiUmVz
b2x2ZUdsb2JhbFN0YXR1cy5oIgogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCi0jaW5jbHVkZSAi
SlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJPcGVyYXRpb25z
LmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9SZXNvbHZlR2xvYmFsU3RhdHVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Jlc29sdmVHbG9iYWxTdGF0dXMuaAkocmV2aXNpb24gMTQw
MzQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Jlc29sdmVHbG9iYWxTdGF0
dXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBSZXNvbHZlR2xv
YmFsU3RhdHVzX2gKICNkZWZpbmUgUmVzb2x2ZUdsb2JhbFN0YXR1c19oCiAKLSNpbmNsdWRlICJK
U1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIlByb3BlcnR5T2Zm
c2V0LmgiCiAjaW5jbHVkZSA8d3RmL05vdEZvdW5kLmg+CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCShyZXZpc2lvbiAxNDAzNDYp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogI2lmbmRlZiBTcGVjdWxhdGVkVHlwZV9oCiAj
ZGVmaW5lIFNwZWN1bGF0ZWRUeXBlX2gKIAotI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRl
ICJKU0NKU1ZhbHVlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVSZWNvdmVyeS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVJlY292ZXJ5LmgJKHJldmlzaW9uIDE0MDM0NikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVJlY292ZXJ5LmgJKHdvcmtp
bmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICNkZWZpbmUgVmFsdWVSZWNvdmVyeV9oCiAKICNp
bmNsdWRlICJEYXRhRm9ybWF0LmgiCi0jaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpT
Q0pTVmFsdWUuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgogI2luY2x1ZGUgIlZpcnR1
YWxSZWdpc3Rlci5oIgogI2luY2x1ZGUgPHN0ZGlvLmg+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMTQwMzQ2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlICJERkdBcnJheU1vZGUuaCIKICNp
bmNsdWRlICJERkdDYXBhYmlsaXRpZXMuaCIKICNpbmNsdWRlICJHZXRCeUlkU3RhdHVzLmgiCi0j
aW5jbHVkZSAiSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5o
IgogI2luY2x1ZGUgIlB1dEJ5SWRTdGF0dXMuaCIKICNpbmNsdWRlICJSZXNvbHZlR2xvYmFsU3Rh
dHVzLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAxNDAzNDYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzUsOCArMzUsOCBAQAogI2luY2x1ZGUgIkRGR1Nsb3dQYXRoR2VuZXJhdG9yLmgiCiAjaW5j
bHVkZSAiREZHU3BlY3VsYXRpdmVKSVQuaCIKICNpbmNsdWRlICJERkdUaHVua3MuaCIKKyNpbmNs
dWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsRGF0YS5oIgotI2lu
Y2x1ZGUgIkpTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgogCiBuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGUuaAkocmV2aXNpb24gMTQwMzQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAKICNpbmNsdWRlICJERkdO
b2RlRmxhZ3MuaCIKICNpbmNsdWRlICJERkdOb2RlVHlwZS5oIgogI2luY2x1ZGUgIkRGR1Zhcmlh
YmxlQWNjZXNzRGF0YS5oIgotI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0NKU1Zh
bHVlLmgiCiAjaW5jbHVkZSAiT3BlcmFuZHMuaCIKICNpbmNsdWRlICJTcGVjdWxhdGVkVHlwZS5o
IgogI2luY2x1ZGUgIlN0cnVjdHVyZVNldC5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxNDAzNDYpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSAiQXJyYXlQcm90b3R5cGUuaCIK
ICNpbmNsdWRlICJERkdDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvci5oIgogI2lu
Y2x1ZGUgIkRGR1Nsb3dQYXRoR2VuZXJhdG9yLmgiCi0jaW5jbHVkZSAiSlNWYWx1ZUlubGluZXMu
aCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIk9iamVjdFByb3Rv
dHlwZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24g
MTQwMzQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJERkdBcnJheWlm
eVNsb3dQYXRoR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiREZHQ2FsbEFycmF5QWxsb2NhdG9yU2xv
d1BhdGhHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJERkdTbG93UGF0aEdlbmVyYXRvci5oIgotI2lu
Y2x1ZGUgIkpTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIK
ICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZH
IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvcGllZEJsb2NrLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29waWVkQmxvY2suaAkocmV2aXNp
b24gMTQwMzQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29waWVkQmxvY2suaAko
d29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIkJsb2NrQWxsb2NhdG9y
LmgiCiAjaW5jbHVkZSAiQ29weVdvcmtMaXN0LmgiCiAjaW5jbHVkZSAiSGVhcEJsb2NrLmgiCi0j
aW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJP
cHRpb25zLmgiCiAjaW5jbHVkZSA8d3RmL0F0b21pY3MuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRy
Lmg+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGVTdGFjay5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlU3RhY2suY3BwCShy
ZXZpc2lvbiAxNDAzNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGVTdGFj
ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDggKzI3LDggQEAKICNpbmNsdWRlICJIYW5kbGVT
dGFjay5oIgogCiAjaW5jbHVkZSAiSGVhcFJvb3RWaXNpdG9yLmgiCisjaW5jbHVkZSAiSlNDSlNW
YWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgotI2luY2x1ZGUgIkpTVmFsdWVJ
bmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IYW5kbGVUeXBlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hhbmRsZVR5cGVzLmgJKHJldmlzaW9uIDE0MDM0NikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hhbmRsZVR5cGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcg
QEAKICNpZm5kZWYgSGFuZGxlVHlwZXNfaAogI2RlZmluZSBIYW5kbGVUeXBlc19oCiAKLSNpbmNs
dWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogCiBuYW1lc3BhY2UgSlND
IHsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha0ltcGwuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrSW1wbC5oCShyZXZpc2lvbiAx
NDAzNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrSW1wbC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIFdlYWtJbXBsX2gKICNkZWZpbmUgV2Vh
a0ltcGxfaAogCi0jaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIK
IAogbmFtZXNwYWNlIEpTQyB7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5oCShyZXZpc2lvbiAxNDAzNDYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MzEsOSArMzEsOSBAQAogI2RlZmluZSBJbnRlcnByZXRlcl9oCiAKICNpbmNsdWRlICJBcmdMaXN0
LmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1
ZGUgIkpTRnVuY3Rpb24uaCIKLSNpbmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNPYmpl
Y3QuaCIKICNpbmNsdWRlICJKU1N0YWNrLmgiCiAjaW5jbHVkZSAiTExJbnREYXRhLmgiCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXIuaAkocmV2aXNp
b24gMTQwMzQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lzdGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKICNpZm5kZWYgUmVnaXN0ZXJfaAog
I2RlZmluZSBSZWdpc3Rlcl9oCiAKLSNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlND
SlNWYWx1ZS5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3RvclRyYWl0cy5oPgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
Vk1JbnNwZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvVk1JbnNwZWN0b3IuaAkocmV2aXNpb24gMTQwMzQ2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL1ZNSW5zcGVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcg
KzI5LDcgQEAKICNkZWZpbmUgRU5BQkxFX1ZNSU5TUEVDVE9SIDAKIAogI2luY2x1ZGUgIkNhbGxG
cmFtZS5oIgotI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAj
aW5jbHVkZSA8c3RkYXJnLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxS
ZXR1cm5WYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9I
b3N0Q2FsbFJldHVyblZhbHVlLmNwcAkocmV2aXNpb24gMTQwMzQ2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjcsOSArMjcsOSBAQAogI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKIAogI2luY2x1
ZGUgIkNhbGxGcmFtZS5oIgotI2luY2x1ZGUgPHd0Zi9JbmxpbmVBU00uaD4KKyNpbmNsdWRlICJK
U0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCi0jaW5jbHVkZSAiSlNW
YWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlIDx3dGYvSW5saW5lQVNNLmg+CiAKIAogbmFtZXNwYWNl
IEpTQyB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFs
dWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0
dXJuVmFsdWUuaAkocmV2aXNpb24gMTQwMzQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9Ib3N0Q2FsbFJldHVyblZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAK
ICNpZm5kZWYgSG9zdENhbGxSZXR1cm5WYWx1ZV9oCiAjZGVmaW5lIEhvc3RDYWxsUmV0dXJuVmFs
dWVfaAogCi0jaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNp
bmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0u
aD4KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgJKHJldmlzaW9uIDE0MDM0
NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiRGlz
YXNzZW1ibGVyLmgiCiAjaW5jbHVkZSAiSklUU3R1YnMuaCIKLSNpbmNsdWRlICJKU1ZhbHVlLmgi
CisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkxlZ2FjeVByb2ZpbGVyLmgiCiAj
aW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmNwcAkocmV2aXNpb24gMTQwMzQ2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjksOCArMjksOCBAQAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgogI2luY2x1ZGUg
IkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiSlNDSlNW
YWx1ZS5oIgogI2luY2x1ZGUgIkpTR2xvYmFsRGF0YS5oIgotI2luY2x1ZGUgIkpTVmFsdWUuaCIK
ICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAKICNpZiBFTkFCTEUoSklUKSB8fCBFTkFCTEUoTExJ
TlQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuaAkocmV2
aXNpb24gMTQwMzQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRFeGNlcHRpb25z
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgSklURXhjZXB0aW9u
c19oCiAjZGVmaW5lIEpJVEV4Y2VwdGlvbnNfaAogCi0jaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2lu
Y2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIK
IAogI2lmIEVOQUJMRShKSVQpIHx8IEVOQUJMRShMTElOVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgJKHJldmlzaW9uIDE0MDM0NikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAkod29ya2luZyBjb3B5KQpAQCAt
MjksOSArMjksOSBAQAogI2luY2x1ZGUgIkJ5dGVjb2RlQ29udmVudGlvbnMuaCIKICNpbmNsdWRl
ICJKSVRDb2RlLmgiCiAjaW5jbHVkZSAiSklUU3R1YnMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVl
LmgiCiAjaW5jbHVkZSAiSlNTdGFjay5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCi0jaW5jbHVk
ZSAiSlNWYWx1ZS5oIgogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCiAjaW5jbHVkZSA8d3Rm
L0Fsd2F5c0lubGluZS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludENMb29wLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50Q0xvb3AuaAkocmV2aXNpb24gMTQwMzQ2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50Q0xvb3AuaAkod29ya2luZyBjb3B5KQpAQCAt
MjksNyArMjksNyBAQAogI2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCiAKICNpbmNsdWRlICJDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kLmgiCi0jaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpT
Q0pTVmFsdWUuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKICNpbmNsdWRl
ICJPcGNvZGUuaCIKICNpbmNsdWRlICJSZWdpc3Rlci5oIgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludERhdGEuaAkocmV2aXNpb24gMTQwMzQ2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3
IEBACiAjaWZuZGVmIExMSW50RGF0YV9oCiAjZGVmaW5lIExMSW50RGF0YV9oCiAKLSNpbmNsdWRl
ICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIk9wY29kZS5o
IgogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDE0MDM0NikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM4LDExICszOCwxMSBAQAogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVERy
aXZlci5oIgogI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUu
aCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpTTmFt
ZVNjb3BlLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgogI2luY2x1ZGUg
IkpTU3RyaW5nLmgiCi0jaW5jbHVkZSAiSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTV2l0aFNjb3Bl
LmgiCiAjaW5jbHVkZSAiTExJbnRDb21tb24uaCIKICNpbmNsdWRlICJMTEludEV4Y2VwdGlvbnMu
aCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckJ5dGVjb2Rl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVy
Qnl0ZWNvZGUuaAkocmV2aXNpb24gMTQwMzQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3By
b2ZpbGVyL1Byb2ZpbGVyQnl0ZWNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBA
QAogI2lmbmRlZiBQcm9maWxlckJ5dGVjb2RlX2gKICNkZWZpbmUgUHJvZmlsZXJCeXRlY29kZV9o
CiAKLSNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1
ZGUgIk9wY29kZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQnl0ZWNvZGVTZXF1ZW5jZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckJ5dGVj
b2RlU2VxdWVuY2UuaAkocmV2aXNpb24gMTQwMzQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Byb2ZpbGVyL1Byb2ZpbGVyQnl0ZWNvZGVTZXF1ZW5jZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
Niw3ICsyNiw3IEBACiAjaWZuZGVmIFByb2ZpbGVyQnl0ZWNvZGVTZXF1ZW5jZV9oCiAjZGVmaW5l
IFByb2ZpbGVyQnl0ZWNvZGVTZXF1ZW5jZV9oCiAKLSNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5j
bHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIlByb2ZpbGVyQnl0ZWNvZGUuaCIKICNpbmNs
dWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJCeXRlY29kZXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJCeXRlY29kZXMu
aAkocmV2aXNpb24gMTQwMzQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1By
b2ZpbGVyQnl0ZWNvZGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICNkZWZp
bmUgUHJvZmlsZXJCeXRlY29kZXNfaAogCiAjaW5jbHVkZSAiQ29kZUJsb2NrSGFzaC5oIgotI2lu
Y2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiUHJv
ZmlsZXJCeXRlY29kZVNlcXVlbmNlLmgiCiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcHJvZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckNvbXBpbGF0aW9uLmgJKHJldmlzaW9uIDE0
MDM0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckNvbXBpbGF0
aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICNkZWZpbmUgUHJvZmlsZXJD
b21waWxhdGlvbl9oCiAKICNpbmNsdWRlICJFeGl0S2luZC5oIgotI2luY2x1ZGUgIkpTVmFsdWUu
aCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiUHJvZmlsZXJDb21waWxhdGlv
bktpbmQuaCIKICNpbmNsdWRlICJQcm9maWxlckNvbXBpbGVkQnl0ZWNvZGUuaCIKICNpbmNsdWRl
ICJQcm9maWxlckV4ZWN1dGlvbkNvdW50ZXIuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wcm9maWxlci9Qcm9maWxlckNvbXBpbGVkQnl0ZWNvZGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJDb21waWxlZEJ5dGVjb2RlLmgJKHJl
dmlzaW9uIDE0MDM0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxl
ckNvbXBpbGVkQnl0ZWNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2lm
bmRlZiBQcm9maWxlckNvbXBpbGVkQnl0ZWNvZGVfaAogI2RlZmluZSBQcm9maWxlckNvbXBpbGVk
Qnl0ZWNvZGVfaAogCi0jaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUu
aCIKICNpbmNsdWRlICJQcm9maWxlck9yaWdpblN0YWNrLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmls
ZXJEYXRhYmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxl
ci9Qcm9maWxlckRhdGFiYXNlLmgJKHJldmlzaW9uIDE0MDM0NikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckRhdGFiYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDcgKzI2LDcgQEAKICNpZm5kZWYgUHJvZmlsZXJEYXRhYmFzZV9oCiAjZGVmaW5lIFByb2ZpbGVy
RGF0YWJhc2VfaAogCi0jaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUu
aCIKICNpbmNsdWRlICJQcm9maWxlckJ5dGVjb2Rlcy5oIgogI2luY2x1ZGUgIlByb2ZpbGVyQ29t
cGlsYXRpb24uaCIKICNpbmNsdWRlICJQcm9maWxlckNvbXBpbGF0aW9uS2luZC5oIgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyT1NSRXhpdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlck9TUkV4aXQuaAko
cmV2aXNpb24gMTQwMzQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2Zp
bGVyT1NSRXhpdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAjZGVmaW5lIFBy
b2ZpbGVyT1NSRXhpdF9oCiAKICNpbmNsdWRlICJFeGl0S2luZC5oIgotI2luY2x1ZGUgIkpTVmFs
dWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiUHJvZmlsZXJPcmlnaW5T
dGFjay5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFByb2ZpbGVyIHsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlck9TUkV4aXRTaXRlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyT1NSRXhpdFNp
dGUuaAkocmV2aXNpb24gMTQwMzQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVy
L1Byb2ZpbGVyT1NSRXhpdFNpdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAog
I2lmbmRlZiBQcm9maWxlck9TUkV4aXRTaXRlX2gKICNkZWZpbmUgUHJvZmlsZXJPU1JFeGl0U2l0
ZV9oCiAKLSNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBQcm9maWxl
ciB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJPcmlnaW4u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJP
cmlnaW4uaAkocmV2aXNpb24gMTQwMzQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2Zp
bGVyL1Byb2ZpbGVyT3JpZ2luLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICNk
ZWZpbmUgUHJvZmlsZXJPcmlnaW5faAogCiAjaW5jbHVkZSAiQ29kZUJsb2NrSGFzaC5oIgotI2lu
Y2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyT3JpZ2luU3RhY2suaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJPcmlnaW5TdGFjay5o
CShyZXZpc2lvbiAxNDAzNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJv
ZmlsZXJPcmlnaW5TdGFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZu
ZGVmIFByb2ZpbGVyT3JpZ2luU3RhY2tfaAogI2RlZmluZSBQcm9maWxlck9yaWdpblN0YWNrX2gK
IAotI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVk
ZSAiUHJvZmlsZXJPcmlnaW4uaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUg
PHd0Zi9QcmludFN0cmVhbS5oPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJnTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJnTGlzdC5jcHAJKHJldmlzaW9uIDE0MDM0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FyZ0xpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw3ICsyMiw3IEBACiAjaW5j
bHVkZSAiQXJnTGlzdC5oIgogCiAjaW5jbHVkZSAiSGVhcFJvb3RWaXNpdG9yLmgiCi0jaW5jbHVk
ZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU09iamVj
dC5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ2FjaGVkVHJhbnNjZW5kZW50YWxGdW5jdGlvbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFRyYW5zY2VuZGVudGFsRnVuY3Rp
b24uaAkocmV2aXNpb24gMTQwMzQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q2FjaGVkVHJhbnNjZW5kZW50YWxGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsy
Niw3IEBACiAjaWZuZGVmIENhY2hlZFRyYW5zY2VuZGVudGFsRnVuY3Rpb25faAogI2RlZmluZSBD
YWNoZWRUcmFuc2NlbmRlbnRhbEZ1bmN0aW9uX2gKIAotI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNp
bmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWxsRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhbGxEYXRhLmgJKHJldmlzaW9uIDE0MDM0NikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhbGxEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI5LDcgKzI5LDcgQEAKICNpZm5kZWYgQ2FsbERhdGFfaAogI2RlZmluZSBDYWxsRGF0YV9oCiAK
LSNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogCiBuYW1lc3Bh
Y2UgSlNDIHsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlv
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRp
b24uaAkocmV2aXNpb24gMTQwMzQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tcGxldGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAjaWZuZGVmIENv
bXBsZXRpb25faAogI2RlZmluZSBDb21wbGV0aW9uX2gKIAotI2luY2x1ZGUgIkpTVmFsdWUuaCIK
KyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zdHJ1Y3REYXRhLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc3RydWN0RGF0YS5oCShyZXZpc2lvbiAx
NDAzNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zdHJ1Y3REYXRhLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICNkZWZpbmUgQ29uc3RydWN0RGF0YV9o
CiAKICNpbmNsdWRlICJDYWxsRGF0YS5oIgotI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRl
ICJKU0NKU1ZhbHVlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDE0
MDM0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDEyICsyNSwxMiBAQAogI2luY2x1ZGUgIkRhdGVDb252
ZXJzaW9uLmgiCiAjaW5jbHVkZSAiRGF0ZUluc3RhbmNlLmgiCiAjaW5jbHVkZSAiRGF0ZVByb3Rv
dHlwZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNEYXRl
TWF0aC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVj
dC5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmdCdWlsZGVyLmgi
Ci0jaW5jbHVkZSAiSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJPYmplY3RQcm90b3R5cGUu
aCIKICNpbmNsdWRlIDxtYXRoLmg+CiAjaW5jbHVkZSA8dGltZS5oPgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2UuY3BwCShyZXZpc2lvbiAxNDAz
NDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMiw5ICsyMiw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiRGF0ZUluc3RhbmNlLmgiCiAKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgog
I2luY2x1ZGUgIkpTRGF0ZU1hdGguaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgotI2lu
Y2x1ZGUgIkpTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSA8bWF0aC5oPgogI2luY2x1ZGUgPHd0
Zi9NYXRoRXh0cmFzLmg+CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rh
dGVQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0RhdGVQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAxNDAzNDYpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcs
MTEgKzI3LDExIEBACiAjaW5jbHVkZSAiRGF0ZUNvbnZlcnNpb24uaCIKICNpbmNsdWRlICJEYXRl
SW5zdGFuY2UuaCIKICNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiSlNEYXRlTWF0aC5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0
LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJKU1N0cmluZ0J1aWxkZXIuaCIK
LSNpbmNsdWRlICJKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkxvb2t1cC5oIgogI2luY2x1
ZGUgIk9iamVjdFByb3RvdHlwZS5oIgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FQSVZhbHVlV3JhcHBlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQVBJVmFsdWVXcmFwcGVyLmgJKHJldmlzaW9uIDE0MDM0NikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQVBJVmFsdWVXcmFwcGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIzLDggKzIzLDggQEAKICNpZm5kZWYgSlNBUElWYWx1ZVdyYXBwZXJfaAogI2Rl
ZmluZSBKU0FQSVZhbHVlV3JhcHBlcl9oCiAKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5j
bHVkZSAiSlNDZWxsLmgiCi0jaW5jbHVkZSAiSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkNhbGxGcmFt
ZS5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAkocmV2aXNpb24gMTQwMTk2KQkoZnJvbSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmNwcDoxNDAxOTYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDMyMCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMSBIYXJyaSBQb3J0
ZW4gKHBvcnRlbkBrZGUub3JnKQorICogIENvcHlyaWdodCAoQykgMjAwMSBQZXRlciBLZWxseSAo
cG1rQHBvc3QuY29tKQorICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNywgMjAwOCwgMjAxMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICog
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
ICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqICB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiSlNWYWx1ZS5oIgorCisjaW5jbHVkZSAiQm9vbGVhbkNvbnN0
cnVjdG9yLmgiCisjaW5jbHVkZSAiQm9vbGVhblByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkVycm9y
LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgorI2luY2x1ZGUgIkdldHRlclNldHRl
ci5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5o
IgorI2luY2x1ZGUgIkpTTm90QW5PYmplY3QuaCIKKyNpbmNsdWRlICJKU1ZhbHVlSW5saW5lcy5o
IgorI2luY2x1ZGUgIk51bWJlck9iamVjdC5oIgorI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+
CisjaW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgorCituYW1lc3BhY2UgSlNDIHsKKworc3Rh
dGljIGNvbnN0IGRvdWJsZSBEMzIgPSA0Mjk0OTY3Mjk2LjA7CisKKy8vIEVDTUEgOS40Citkb3Vi
bGUgSlNWYWx1ZTo6dG9JbnRlZ2VyKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICBpZiAo
aXNJbnQzMigpKQorICAgICAgICByZXR1cm4gYXNJbnQzMigpOworICAgIGRvdWJsZSBkID0gdG9O
dW1iZXIoZXhlYyk7CisgICAgcmV0dXJuIGlzbmFuKGQpID8gMC4wIDogdHJ1bmMoZCk7Cit9CisK
K2RvdWJsZSBKU1ZhbHVlOjp0b0ludGVnZXJQcmVzZXJ2ZU5hTihFeGVjU3RhdGUqIGV4ZWMpIGNv
bnN0Cit7CisgICAgaWYgKGlzSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIGFzSW50MzIoKTsKKyAg
ICByZXR1cm4gdHJ1bmModG9OdW1iZXIoZXhlYykpOworfQorCitkb3VibGUgSlNWYWx1ZTo6dG9O
dW1iZXJTbG93Q2FzZShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFpc0lu
dDMyKCkgJiYgIWlzRG91YmxlKCkpOworICAgIGlmIChpc0NlbGwoKSkKKyAgICAgICAgcmV0dXJu
IGFzQ2VsbCgpLT50b051bWJlcihleGVjKTsKKyAgICBpZiAoaXNUcnVlKCkpCisgICAgICAgIHJl
dHVybiAxLjA7CisgICAgcmV0dXJuIGlzVW5kZWZpbmVkKCkgPyBRTmFOIDogMDsgLy8gbnVsbCBh
bmQgZmFsc2UgYm90aCBjb252ZXJ0IHRvIDAuCit9CisKK0pTT2JqZWN0KiBKU1ZhbHVlOjp0b09i
amVjdFNsb3dDYXNlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkgY29uc3QKK3sKKyAgICBBU1NFUlQoIWlzQ2VsbCgpKTsKKworICAgIGlmIChpc0ludDMyKCkg
fHwgaXNEb3VibGUoKSkKKyAgICAgICAgcmV0dXJuIGNvbnN0cnVjdE51bWJlcihleGVjLCBnbG9i
YWxPYmplY3QsIGFzVmFsdWUoKSk7CisgICAgaWYgKGlzVHJ1ZSgpIHx8IGlzRmFsc2UoKSkKKyAg
ICAgICAgcmV0dXJuIGNvbnN0cnVjdEJvb2xlYW5Gcm9tSW1tZWRpYXRlQm9vbGVhbihleGVjLCBn
bG9iYWxPYmplY3QsIGFzVmFsdWUoKSk7CisKKyAgICBBU1NFUlQoaXNVbmRlZmluZWRPck51bGwo
KSk7CisgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVOb3RBbk9iamVjdEVycm9yKGV4ZWMsICp0
aGlzKSk7CisgICAgcmV0dXJuIEpTTm90QW5PYmplY3Q6OmNyZWF0ZShleGVjKTsKK30KKworSlNP
YmplY3QqIEpTVmFsdWU6OnRvVGhpc09iamVjdFNsb3dDYXNlKEV4ZWNTdGF0ZSogZXhlYykgY29u
c3QKK3sKKyAgICBBU1NFUlQoIWlzQ2VsbCgpKTsKKworICAgIGlmIChpc0ludDMyKCkgfHwgaXNE
b3VibGUoKSkKKyAgICAgICAgcmV0dXJuIGNvbnN0cnVjdE51bWJlcihleGVjLCBleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCksIGFzVmFsdWUoKSk7CisgICAgaWYgKGlzVHJ1ZSgpIHx8IGlzRmFs
c2UoKSkKKyAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEJvb2xlYW5Gcm9tSW1tZWRpYXRlQm9vbGVh
bihleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGFzVmFsdWUoKSk7CisgICAgQVNT
RVJUKGlzVW5kZWZpbmVkT3JOdWxsKCkpOworICAgIHJldHVybiBleGVjLT5nbG9iYWxUaGlzVmFs
dWUoKTsKK30KKworSlNPYmplY3QqIEpTVmFsdWU6OnN5bnRoZXNpemVQcm90b3R5cGUoRXhlY1N0
YXRlKiBleGVjKSBjb25zdAoreworICAgIGlmIChpc0NlbGwoKSkgeworICAgICAgICBBU1NFUlQo
aXNTdHJpbmcoKSk7CisgICAgICAgIHJldHVybiBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkt
PnN0cmluZ1Byb3RvdHlwZSgpOworICAgIH0KKworICAgIGlmIChpc051bWJlcigpKQorICAgICAg
ICByZXR1cm4gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5udW1iZXJQcm90b3R5cGUoKTsK
KyAgICBpZiAoaXNCb29sZWFuKCkpCisgICAgICAgIHJldHVybiBleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCktPmJvb2xlYW5Qcm90b3R5cGUoKTsKKworICAgIEFTU0VSVChpc1VuZGVmaW5lZE9y
TnVsbCgpKTsKKyAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZU5vdEFuT2JqZWN0RXJyb3IoZXhl
YywgKnRoaXMpKTsKKyAgICByZXR1cm4gSlNOb3RBbk9iamVjdDo6Y3JlYXRlKGV4ZWMpOworfQor
CisvLyBFQ01BIDguNy4yCit2b2lkIEpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVy
dHlTbG90JiBzbG90KQoreworICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmds
b2JhbERhdGEoKTsKKworICAgIHVuc2lnbmVkIGluZGV4ID0gcHJvcGVydHlOYW1lLmFzSW5kZXgo
KTsKKyAgICBpZiAoaW5kZXggIT0gUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KSB7CisgICAgICAg
IHB1dFRvUHJpbWl0aXZlQnlJbmRleChleGVjLCBpbmRleCwgdmFsdWUsIHNsb3QuaXNTdHJpY3RN
b2RlKCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gQ2hlY2sgaWYgdGhlcmUg
YXJlIGFueSBzZXR0ZXJzIG9yIGdldHRlcnMgaW4gdGhlIHByb3RvdHlwZSBjaGFpbgorICAgIEpT
T2JqZWN0KiBvYmogPSBzeW50aGVzaXplUHJvdG90eXBlKGV4ZWMpOworICAgIEpTVmFsdWUgcHJv
dG90eXBlOworICAgIGlmIChwcm9wZXJ0eU5hbWUgIT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnVu
ZGVyc2NvcmVQcm90bykgeworICAgICAgICBmb3IgKDsgIW9iai0+c3RydWN0dXJlKCktPmhhc1Jl
YWRPbmx5T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzRXhjbHVkaW5nUHJvdG8oKTsgb2JqID0gYXNP
YmplY3QocHJvdG90eXBlKSkgeworICAgICAgICAgICAgcHJvdG90eXBlID0gb2JqLT5wcm90b3R5
cGUoKTsKKyAgICAgICAgICAgIGlmIChwcm90b3R5cGUuaXNOdWxsKCkpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgICAgICAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBmb3IgKDsgOyBvYmogPSBhc09iamVjdChwcm90b3R5cGUpKSB7CisgICAgICAgIHVuc2ln
bmVkIGF0dHJpYnV0ZXM7CisgICAgICAgIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZTsKKyAgICAgICAg
UHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gb2JqLT5zdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEs
IHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSk7CisgICAgICAgIGlmIChv
ZmZzZXQgIT0gaW52YWxpZE9mZnNldCkgeworICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBS
ZWFkT25seSkgeworICAgICAgICAgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQorICAg
ICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBT
dHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEpTVmFsdWUgZ3MgPSBvYmotPmdl
dERpcmVjdChvZmZzZXQpOworICAgICAgICAgICAgaWYgKGdzLmlzR2V0dGVyU2V0dGVyKCkpIHsK
KyAgICAgICAgICAgICAgICBKU09iamVjdCogc2V0dGVyRnVuYyA9IGFzR2V0dGVyU2V0dGVyKGdz
KS0+c2V0dGVyKCk7ICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoIXNldHRlckZ1bmMpIHsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCisgICAgICAgICAg
ICAgICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoInNldHRpbmcgYSBwcm9wZXJ0eSB0aGF0IGhhcyBvbmx5IGEgZ2V0dGVyIikpKTsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICAgICAgICAg
ICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IHNldHRlckZ1bmMtPm1ldGhvZFRhYmxlKCktPmdldENh
bGxEYXRhKHNldHRlckZ1bmMsIGNhbGxEYXRhKTsKKyAgICAgICAgICAgICAgICBNYXJrZWRBcmd1
bWVudEJ1ZmZlciBhcmdzOworICAgICAgICAgICAgICAgIGFyZ3MuYXBwZW5kKHZhbHVlKTsKKwor
ICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgV2ViQ29yZSdzIGdsb2JhbCBvYmplY3QgdGhl
biB3ZSBuZWVkIHRvIHN1YnN0aXR1dGUgdGhlIHNoZWxsLgorICAgICAgICAgICAgICAgIGNhbGwo
ZXhlYywgc2V0dGVyRnVuYywgY2FsbFR5cGUsIGNhbGxEYXRhLCAqdGhpcywgYXJncyk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBJZiB0
aGVyZSdzIGFuIGV4aXN0aW5nIHByb3BlcnR5IG9uIHRoZSBvYmplY3Qgb3Igb25lIG9mIGl0cyAK
KyAgICAgICAgICAgIC8vIHByb3RvdHlwZXMgaXQgc2hvdWxkIGJlIHJlcGxhY2VkLCBzbyBicmVh
ayBoZXJlLgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBwcm90b3R5
cGUgPSBvYmotPnByb3RvdHlwZSgpOworICAgICAgICBpZiAocHJvdG90eXBlLmlzTnVsbCgpKQor
ICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIAorICAgIGlmIChzbG90LmlzU3RyaWN0TW9k
ZSgpKQorICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9w
ZXJ0eVdyaXRlRXJyb3IpOworICAgIHJldHVybjsKK30KKwordm9pZCBKU1ZhbHVlOjpwdXRUb1By
aW1pdGl2ZUJ5SW5kZXgoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCit7CisgICAgaWYgKHByb3BlcnR5TmFtZSA+
IE1BWF9BUlJBWV9JTkRFWCkgeworICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChzaG91bGRU
aHJvdyk7CisgICAgICAgIHB1dFRvUHJpbWl0aXZlKGV4ZWMsIElkZW50aWZpZXI6OmZyb20oZXhl
YywgcHJvcGVydHlOYW1lKSwgdmFsdWUsIHNsb3QpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIAorICAgIGlmIChzeW50aGVzaXplUHJvdG90eXBlKGV4ZWMpLT5hdHRlbXB0VG9JbnRlcmNl
cHRQdXRCeUluZGV4T25Ib2xlRm9yUHJvdG90eXBlKGV4ZWMsICp0aGlzLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCBzaG91bGRUaHJvdykpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBpZiAoc2hv
dWxkVGhyb3cpCisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25s
eVByb3BlcnR5V3JpdGVFcnJvcik7Cit9CisKK3ZvaWQgSlNWYWx1ZTo6ZHVtcChQcmludFN0cmVh
bSYgb3V0KSBjb25zdAoreworICAgIGlmICghKnRoaXMpCisgICAgICAgIG91dC5wcmludCgiPEpT
VmFsdWUoKT4iKTsKKyAgICBlbHNlIGlmIChpc0ludDMyKCkpCisgICAgICAgIG91dC5wcmludGYo
IkludDMyOiAlZCIsIGFzSW50MzIoKSk7CisgICAgZWxzZSBpZiAoaXNEb3VibGUoKSkgeworI2lm
IFVTRShKU1ZBTFVFNjQpCisgICAgICAgIG91dC5wcmludGYoIkRvdWJsZTogJWxsZCwgJWxmIiwg
KGxvbmcgbG9uZylyZWludGVycHJldERvdWJsZVRvSW50NjQoYXNEb3VibGUoKSksIGFzRG91Ymxl
KCkpOworI2Vsc2UKKyAgICAgICAgdW5pb24geworICAgICAgICAgICAgZG91YmxlIGFzRG91Ymxl
OworICAgICAgICAgICAgdWludDMyX3QgYXNUd29JbnQzMnNbMl07CisgICAgICAgIH0gdTsKKyAg
ICAgICAgdS5hc0RvdWJsZSA9IGFzRG91YmxlKCk7CisgICAgICAgIG91dC5wcmludGYoIkRvdWJs
ZTogJTA4eDolMDh4LCAlbGYiLCB1LmFzVHdvSW50MzJzWzFdLCB1LmFzVHdvSW50MzJzWzBdLCBh
c0RvdWJsZSgpKTsKKyNlbmRpZgorICAgIH0gZWxzZSBpZiAoaXNDZWxsKCkpIHsKKyAgICAgICAg
aWYgKGFzQ2VsbCgpLT5pbmhlcml0cygmU3RydWN0dXJlOjpzX2luZm8pKSB7CisgICAgICAgICAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGpzQ2FzdDxTdHJ1Y3R1cmUqPihhc0NlbGwoKSk7Cisg
ICAgICAgICAgICBvdXQucHJpbnQoCisgICAgICAgICAgICAgICAgIlN0cnVjdHVyZTogIiwgUmF3
UG9pbnRlcihzdHJ1Y3R1cmUpLCAiOiAiLCBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLT5jbGFzc05h
bWUsCisgICAgICAgICAgICAgICAgIiwgIiwgSW5kZXhpbmdUeXBlRHVtcChzdHJ1Y3R1cmUtPmlu
ZGV4aW5nVHlwZUluY2x1ZGluZ0hpc3RvcnkoKSkpOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgb3V0LnByaW50KCJDZWxsOiAiLCBSYXdQb2ludGVyKGFzQ2VsbCgpKSk7CisgICAgICAg
ICAgICBpZiAoaXNPYmplY3QoKSAmJiBhc09iamVjdCgqdGhpcyktPmJ1dHRlcmZseSgpKQorICAg
ICAgICAgICAgICAgIG91dC5wcmludCgiLT4iLCBSYXdQb2ludGVyKGFzT2JqZWN0KCp0aGlzKS0+
YnV0dGVyZmx5KCkpKTsKKyAgICAgICAgICAgIG91dC5wcmludCgKKyAgICAgICAgICAgICAgICAi
ICgiLCBSYXdQb2ludGVyKGFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKSksICI6ICIsIGFzQ2VsbCgpLT5z
dHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSwKKyAgICAgICAgICAgICAgICAiLCAi
LCBJbmRleGluZ1R5cGVEdW1wKGFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlSW5j
bHVkaW5nSGlzdG9yeSgpKSwgIikiKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoaXNUcnVl
KCkpCisgICAgICAgIG91dC5wcmludCgiVHJ1ZSIpOworICAgIGVsc2UgaWYgKGlzRmFsc2UoKSkK
KyAgICAgICAgb3V0LnByaW50KCJGYWxzZSIpOworICAgIGVsc2UgaWYgKGlzTnVsbCgpKQorICAg
ICAgICBvdXQucHJpbnQoIk51bGwiKTsKKyAgICBlbHNlIGlmIChpc1VuZGVmaW5lZCgpKQorICAg
ICAgICBvdXQucHJpbnQoIlVuZGVmaW5lZCIpOworICAgIGVsc2UKKyAgICAgICAgb3V0LnByaW50
KCJJTlZBTElEIik7Cit9CisKKy8vIFRoaXMgaW4gdGhlIFRvSW50MzIgb3BlcmF0aW9uIGlzIGRl
ZmluZWQgaW4gc2VjdGlvbiA5LjUgb2YgdGhlIEVDTUEtMjYyIHNwZWMuCisvLyBOb3RlIHRoYXQg
dGhpcyBvcGVyYXRpb24gaXMgaWRlbnRpY2FsIHRvIFRvVUludDMyIG90aGVyIHRoYW4gdG8gaW50
ZXJwcmV0YXRpb24KKy8vIG9mIHRoZSByZXN1bHRpbmcgYml0LXBhdHRlcm4gKGFzIHN1Y2ggdGhp
cyBtZXRvZCBpcyBhbHNvIGNhbGxlZCB0byBpbXBsZW1lbnQKKy8vIFRvVUludDMyKS4KKy8vCisv
LyBUaGUgb3BlcmF0aW9uIGNhbiBiZSBkZXNjaWJlZCBhcyByb3VuZCB0b3dhcmRzIHplcm8sIHRo
ZW4gc2VsZWN0IHRoZSAzMiBsZWFzdAorLy8gYml0cyBvZiB0aGUgcmVzdWx0aW5nIHZhbHVlIGlu
IDJzLWNvbXBsZW1lbnQgcmVwcmVzZW50YXRpb24uCitpbnQzMl90IHRvSW50MzIoZG91YmxlIG51
bWJlcikKK3sKKyAgICBpbnQ2NF90IGJpdHMgPSBXVEY6OmJpdHdpc2VfY2FzdDxpbnQ2NF90Pihu
dW1iZXIpOworICAgIGludDMyX3QgZXhwID0gKHN0YXRpY19jYXN0PGludDMyX3Q+KGJpdHMgPj4g
NTIpICYgMHg3ZmYpIC0gMHgzZmY7CisKKyAgICAvLyBJZiBleHBvbmVudCA8IDAgdGhlcmUgd2ls
bCBiZSBubyBiaXRzIHRvIHRoZSBsZWZ0IG9mIHRoZSBkZWNpbWFsIHBvaW50CisgICAgLy8gYWZ0
ZXIgcm91bmRpbmc7IGlmIHRoZSBleHBvbmVudCBpcyA+IDgzIHRoZW4gbm8gYml0cyBvZiBwcmVj
aXNpb24gY2FuIGJlCisgICAgLy8gbGVmdCBpbiB0aGUgbG93IDMyLWJpdCByYW5nZSBvZiB0aGUg
cmVzdWx0IChJRUVFLTc1NCBkb3VibGVzIGhhdmUgNTIgYml0cworICAgIC8vIG9mIGZyYWN0aW9u
YWwgcHJlY2lzaW9uKS4KKyAgICAvLyBOb3RlIHRoaXMgY2FzZSBoYW5kbGVzIDAsIC0wLCBhbmQg
YWxsIGluZmludGUsIE5hTiwgJiBkZW5vcm1hbCB2YWx1ZS4gCisgICAgaWYgKGV4cCA8IDAgfHwg
ZXhwID4gODMpCisgICAgICAgIHJldHVybiAwOworCisgICAgLy8gU2VsZWN0IHRoZSBhcHByb3By
aWF0ZSAzMi1iaXRzIGZyb20gdGhlIGZsb2F0aW5nIHBvaW50IG1hbnRpc3NhLiAgSWYgdGhlCisg
ICAgLy8gZXhwb25lbnQgaXMgNTIgdGhlbiB0aGUgYml0cyB3ZSBuZWVkIHRvIHNlbGVjdCBhcmUg
YWxyZWFkeSBhbGlnbmVkIHRvIHRoZQorICAgIC8vIGxvd2VzdCBiaXRzIG9mIHRoZSA2NC1iaXQg
aW50ZWdlciByZXByZXNlbnRhdGlvbiBvZiB0Z2hlIG51bWJlciwgbm8gbmVlZAorICAgIC8vIHRv
IHNoaWZ0LiAgSWYgdGhlIGV4cG9uZW50IGlzIGdyZWF0ZXIgdGhhbiA1MiB3ZSBuZWVkIHRvIHNo
aWZ0IHRoZSB2YWx1ZQorICAgIC8vIGxlZnQgYnkgKGV4cCAtIDUyKSwgaWYgdGhlIHZhbHVlIGlz
IGxlc3MgdGhhbiA1MiB3ZSBuZWVkIHRvIHNoaWZ0IHJpZ2h0CisgICAgLy8gYWNjb3JkaW5nbHku
CisgICAgaW50MzJfdCByZXN1bHQgPSAoZXhwID4gNTIpCisgICAgICAgID8gc3RhdGljX2Nhc3Q8
aW50MzJfdD4oYml0cyA8PCAoZXhwIC0gNTIpKQorICAgICAgICA6IHN0YXRpY19jYXN0PGludDMy
X3Q+KGJpdHMgPj4gKDUyIC0gZXhwKSk7CisKKyAgICAvLyBJRUVFLTc1NCBkb3VibGUgcHJlY2lz
aW9uIHZhbHVlcyBhcmUgc3RvcmVkIG9taXR0aW5nIGFuIGltcGxpY2l0IDEgYmVmb3JlCisgICAg
Ly8gdGhlIGRlY2ltYWwgcG9pbnQ7IHdlIG5lZWQgdG8gcmVpbnNlcnQgdGhpcyBub3cuICBXZSBt
YXkgYWxzbyB0aGUgc2hpZnRlZAorICAgIC8vIGludmFsaWQgYml0cyBpbnRvIHRoZSByZXN1bHQg
dGhhdCBhcmUgbm90IGEgcGFydCBvZiB0aGUgbWFudGlzc2EgKHRoZSBzaWduCisgICAgLy8gYW5k
IGV4cG9uZW50IGJpdHMgZnJvbSB0aGUgZmxvYXRpbmdwb2ludCByZXByZXNlbnRhdGlvbik7IG1h
c2sgdGhlc2Ugb3V0LgorICAgIGlmIChleHAgPCAzMikgeworICAgICAgICBpbnQzMl90IG1pc3Np
bmdPbmUgPSAxIDw8IGV4cDsKKyAgICAgICAgcmVzdWx0ICY9IG1pc3NpbmdPbmUgLSAxOworICAg
ICAgICByZXN1bHQgKz0gbWlzc2luZ09uZTsKKyAgICB9CisKKyAgICAvLyBJZiB0aGUgaW5wdXQg
dmFsdWUgd2FzIG5lZ2F0aXZlICh3ZSBjb3VsZCB0ZXN0IGVpdGhlciAnbnVtYmVyJyBvciAnYml0
cycsCisgICAgLy8gYnV0IHRlc3RpbmcgJ2JpdHMnIGlzIGxpa2VseSBmYXN0ZXIpIGludmVydCB0
aGUgcmVzdWx0IGFwcHJvcHJpYXRlbHkuCisgICAgcmV0dXJuIGJpdHMgPCAwID8gLXJlc3VsdCA6
IHJlc3VsdDsKK30KKworYm9vbCBKU1ZhbHVlOjppc1ZhbGlkQ2FsbGVlKCkKK3sKKyAgICByZXR1
cm4gYXNPYmplY3QoYXNDZWxsKCkpLT5nbG9iYWxPYmplY3QoKTsKK30KKworSlNTdHJpbmcqIEpT
VmFsdWU6OnRvU3RyaW5nU2xvd0Nhc2UoRXhlY1N0YXRlKiBleGVjKSBjb25zdAoreworICAgIEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKKyAgICBBU1NFUlQo
IWlzU3RyaW5nKCkpOworICAgIGlmIChpc0ludDMyKCkpCisgICAgICAgIHJldHVybiBqc1N0cmlu
ZygmZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS5udW1lcmljU3RyaW5ncy5hZGQoYXNJbnQzMigpKSk7
CisgICAgaWYgKGlzRG91YmxlKCkpCisgICAgICAgIHJldHVybiBqc1N0cmluZygmZ2xvYmFsRGF0
YSwgZ2xvYmFsRGF0YS5udW1lcmljU3RyaW5ncy5hZGQoYXNEb3VibGUoKSkpOworICAgIGlmIChp
c1RydWUoKSkKKyAgICAgICAgcmV0dXJuIGdsb2JhbERhdGEuc21hbGxTdHJpbmdzLnRydWVTdHJp
bmcoKTsKKyAgICBpZiAoaXNGYWxzZSgpKQorICAgICAgICByZXR1cm4gZ2xvYmFsRGF0YS5zbWFs
bFN0cmluZ3MuZmFsc2VTdHJpbmcoKTsKKyAgICBpZiAoaXNOdWxsKCkpCisgICAgICAgIHJldHVy
biBnbG9iYWxEYXRhLnNtYWxsU3RyaW5ncy5udWxsU3RyaW5nKCk7CisgICAgaWYgKGlzVW5kZWZp
bmVkKCkpCisgICAgICAgIHJldHVybiBnbG9iYWxEYXRhLnNtYWxsU3RyaW5ncy51bmRlZmluZWRT
dHJpbmcoKTsKKworICAgIEFTU0VSVChpc0NlbGwoKSk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IGFz
Q2VsbCgpLT50b1ByaW1pdGl2ZShleGVjLCBQcmVmZXJTdHJpbmcpOworICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGpzRW1wdHlTdHJpbmcoZXhlYyk7CisgICAg
QVNTRVJUKCF2YWx1ZS5pc09iamVjdCgpKTsKKyAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoZXhl
Yyk7Cit9CisKK1N0cmluZyBKU1ZhbHVlOjp0b1dURlN0cmluZ1Nsb3dDYXNlKEV4ZWNTdGF0ZSog
ZXhlYykgY29uc3QKK3sKKyAgICByZXR1cm4gaW5saW5lSlNWYWx1ZU5vdFN0cmluZ3RvU3RyaW5n
KCp0aGlzLCBleGVjKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAkocmV2aXNpb24gMTQwMTk2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIxLDE3ICsyMSwxNyBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogCiAjaW5jbHVkZSAi
Qm9vbGVhbkNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiQm9vbGVhblByb3RvdHlwZS5oIgogI2lu
Y2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUg
IkdldHRlclNldHRlci5oIgotI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAi
SlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAi
SlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU05vdEFuT2JqZWN0LmgiCi0jaW5jbHVkZSAi
SlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJOdW1iZXJPYmplY3QuaCIKICNpbmNsdWRlIDx3
dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgJKHJldmlzaW9uIDE0MDE5
NikJKGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oOjE0MDE5NikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDQ5NyBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMSBI
YXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQorICogIENvcHlyaWdodCAoQykgMjAwMSBQZXRl
ciBLZWxseSAocG1rQHBvc3QuY29tKQorICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAw
NSwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAg
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorICoKKyAqLworCisjaWZuZGVmIEpTVmFsdWVfaAorI2RlZmluZSBKU1ZhbHVlX2gKKwor
I2luY2x1ZGUgPG1hdGguaD4KKyNpbmNsdWRlIDxzdGRkZWYuaD4gLy8gZm9yIHNpemVfdAorI2lu
Y2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHd0Zi9BbHdheXNJbmxpbmUuaD4KKyNpbmNsdWRl
IDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8
d3RmL0hhc2hUcmFpdHMuaD4KKyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgorI2luY2x1ZGUg
PHd0Zi9TdGRMaWJFeHRyYXMuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKKy8vIFRoaXMgaXMgdXNl
ZCBhIGxvdCB0aHJvdWdob3V0IEphdmFTY3JpcHRDb3JlIGZvciBldmVyeXRoaW5nIGZyb20gdmFs
dWUgYm94aW5nIHRvIG1hcmtpbmcKKy8vIHZhbHVlcyBhcyBiZWluZyBtaXNzaW5nLCBzbyBpdCBp
cyB1c2VmdWwgdG8gaGF2ZSBpdCBhYmJyZXZpYXRlZC4KKyNkZWZpbmUgUU5hTiAoc3RkOjpudW1l
cmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSkKKworY2xhc3MgRXhlY1N0YXRlOworY2xh
c3MgSlNDZWxsOworY2xhc3MgSlNHbG9iYWxEYXRhOworY2xhc3MgSlNHbG9iYWxPYmplY3Q7Citj
bGFzcyBKU09iamVjdDsKK2NsYXNzIEpTU3RyaW5nOworY2xhc3MgUHJvcGVydHlOYW1lOworY2xh
c3MgUHJvcGVydHlTbG90OworY2xhc3MgUHV0UHJvcGVydHlTbG90OworI2lmIEVOQUJMRShERkdf
SklUKQorbmFtZXNwYWNlIERGRyB7CitjbGFzcyBBc3NlbWJseUhlbHBlcnM7CitjbGFzcyBKSVRD
b21waWxlcjsKK2NsYXNzIEpJVENvZGVHZW5lcmF0b3I7CitjbGFzcyBKU1ZhbHVlU291cmNlOwor
Y2xhc3MgT1NSRXhpdENvbXBpbGVyOworY2xhc3MgU3BlY3VsYXRpdmVKSVQ7Cit9CisjZW5kaWYK
KyNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQorbmFtZXNwYWNlIExMSW50IHsKK2NsYXNzIENMb29w
OworfQorI2VuZGlmCisKK3N0cnVjdCBDbGFzc0luZm87CitzdHJ1Y3QgSW5zdHJ1Y3Rpb247Citz
dHJ1Y3QgTWV0aG9kVGFibGU7CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjbGFzcyBXcml0ZUJhcnJp
ZXJCYXNlOworCitlbnVtIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUgeyBOb1ByZWZlcmVuY2UsIFBy
ZWZlck51bWJlciwgUHJlZmVyU3RyaW5nIH07CisKKwordHlwZWRlZiBpbnQ2NF90IEVuY29kZWRK
U1ZhbHVlOworICAgIAordW5pb24gRW5jb2RlZFZhbHVlRGVzY3JpcHRvciB7CisgICAgaW50NjRf
dCBhc0ludDY0OworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgZG91YmxlIGFzRG91YmxlOwor
I2VsaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBKU0NlbGwqIHB0cjsKKyNlbmRpZgorICAgICAgICAK
KyNpZiBDUFUoQklHX0VORElBTikKKyAgICBzdHJ1Y3QgeworICAgICAgICBpbnQzMl90IHRhZzsK
KyAgICAgICAgaW50MzJfdCBwYXlsb2FkOworICAgIH0gYXNCaXRzOworI2Vsc2UKKyAgICBzdHJ1
Y3QgeworICAgICAgICBpbnQzMl90IHBheWxvYWQ7CisgICAgICAgIGludDMyX3QgdGFnOworICAg
IH0gYXNCaXRzOworI2VuZGlmCit9OworCisvLyBUaGlzIGltcGxlbWVudHMgVG9JbnQzMiwgZGVm
aW5lZCBpbiBFQ01BLTI2MiA5LjUuCitKU19FWFBPUlRfUFJJVkFURSBpbnQzMl90IHRvSW50MzIo
ZG91YmxlKTsKKworLy8gVGhpcyBpbXBsZW1lbnRzIFRvVUludDMyLCBkZWZpbmVkIGluIEVDTUEt
MjYyIDkuNi4KK2lubGluZSB1aW50MzJfdCB0b1VJbnQzMihkb3VibGUgbnVtYmVyKQoreworICAg
IC8vIEFzIGNvbW1lbnRlZCBpbiB0aGUgc3BlYywgdGhlIG9wZXJhdGlvbiBvZiBUb0ludDMyIGFu
ZCBUb1VpbnQzMiBvbmx5IGRpZmZlcgorICAgIC8vIGluIGhvdyB0aGUgcmVzdWx0IGlzIGludGVy
cHJldGVkOyBzZWUgTk9URXMgaW4gc2VjdGlvbnMgOS41IGFuZCA5LjYuCisgICAgcmV0dXJuIHRv
SW50MzIobnVtYmVyKTsKK30KKworY2xhc3MgSlNWYWx1ZSB7CisgICAgZnJpZW5kIHN0cnVjdCBF
bmNvZGVkSlNWYWx1ZUhhc2hUcmFpdHM7CisgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAgICBmcmll
bmQgY2xhc3MgSklUU3R1YnM7CisgICAgZnJpZW5kIGNsYXNzIEpJVFN0dWJDYWxsOworICAgIGZy
aWVuZCBjbGFzcyBKU0ludGVyZmFjZUpJVDsKKyAgICBmcmllbmQgY2xhc3MgU3BlY2lhbGl6ZWRU
aHVua0pJVDsKKyNpZiBFTkFCTEUoREZHX0pJVCkKKyAgICBmcmllbmQgY2xhc3MgREZHOjpBc3Nl
bWJseUhlbHBlcnM7CisgICAgZnJpZW5kIGNsYXNzIERGRzo6SklUQ29tcGlsZXI7CisgICAgZnJp
ZW5kIGNsYXNzIERGRzo6SklUQ29kZUdlbmVyYXRvcjsKKyAgICBmcmllbmQgY2xhc3MgREZHOjpK
U1ZhbHVlU291cmNlOworICAgIGZyaWVuZCBjbGFzcyBERkc6Ok9TUkV4aXRDb21waWxlcjsKKyAg
ICBmcmllbmQgY2xhc3MgREZHOjpTcGVjdWxhdGl2ZUpJVDsKKyNlbmRpZgorI2lmIEVOQUJMRShM
TElOVF9DX0xPT1ApCisgICAgZnJpZW5kIGNsYXNzIExMSW50OjpDTG9vcDsKKyNlbmRpZgorCitw
dWJsaWM6CisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICBlbnVtIHsgSW50MzJUYWcgPSAgICAg
ICAgMHhmZmZmZmZmZiB9OworICAgIGVudW0geyBCb29sZWFuVGFnID0gICAgICAweGZmZmZmZmZl
IH07CisgICAgZW51bSB7IE51bGxUYWcgPSAgICAgICAgIDB4ZmZmZmZmZmQgfTsKKyAgICBlbnVt
IHsgVW5kZWZpbmVkVGFnID0gICAgMHhmZmZmZmZmYyB9OworICAgIGVudW0geyBDZWxsVGFnID0g
ICAgICAgICAweGZmZmZmZmZiIH07CisgICAgZW51bSB7IEVtcHR5VmFsdWVUYWcgPSAgIDB4ZmZm
ZmZmZmEgfTsKKyAgICBlbnVtIHsgRGVsZXRlZFZhbHVlVGFnID0gMHhmZmZmZmZmOSB9OworCisg
ICAgZW51bSB7IExvd2VzdFRhZyA9ICBEZWxldGVkVmFsdWVUYWcgfTsKKyNlbmRpZgorCisgICAg
c3RhdGljIEVuY29kZWRKU1ZhbHVlIGVuY29kZShKU1ZhbHVlKTsKKyAgICBzdGF0aWMgSlNWYWx1
ZSBkZWNvZGUoRW5jb2RlZEpTVmFsdWUpOworCisgICAgZW51bSBKU051bGxUYWcgeyBKU051bGwg
fTsKKyAgICBlbnVtIEpTVW5kZWZpbmVkVGFnIHsgSlNVbmRlZmluZWQgfTsKKyAgICBlbnVtIEpT
VHJ1ZVRhZyB7IEpTVHJ1ZSB9OworICAgIGVudW0gSlNGYWxzZVRhZyB7IEpTRmFsc2UgfTsKKyAg
ICBlbnVtIEVuY29kZUFzRG91YmxlVGFnIHsgRW5jb2RlQXNEb3VibGUgfTsKKworICAgIEpTVmFs
dWUoKTsKKyAgICBKU1ZhbHVlKEpTTnVsbFRhZyk7CisgICAgSlNWYWx1ZShKU1VuZGVmaW5lZFRh
Zyk7CisgICAgSlNWYWx1ZShKU1RydWVUYWcpOworICAgIEpTVmFsdWUoSlNGYWxzZVRhZyk7Cisg
ICAgSlNWYWx1ZShKU0NlbGwqIHB0cik7CisgICAgSlNWYWx1ZShjb25zdCBKU0NlbGwqIHB0cik7
CisKKyAgICAvLyBOdW1iZXJzCisgICAgSlNWYWx1ZShFbmNvZGVBc0RvdWJsZVRhZywgZG91Ymxl
KTsKKyAgICBleHBsaWNpdCBKU1ZhbHVlKGRvdWJsZSk7CisgICAgZXhwbGljaXQgSlNWYWx1ZShj
aGFyKTsKKyAgICBleHBsaWNpdCBKU1ZhbHVlKHVuc2lnbmVkIGNoYXIpOworICAgIGV4cGxpY2l0
IEpTVmFsdWUoc2hvcnQpOworICAgIGV4cGxpY2l0IEpTVmFsdWUodW5zaWduZWQgc2hvcnQpOwor
ICAgIGV4cGxpY2l0IEpTVmFsdWUoaW50KTsKKyAgICBleHBsaWNpdCBKU1ZhbHVlKHVuc2lnbmVk
KTsKKyAgICBleHBsaWNpdCBKU1ZhbHVlKGxvbmcpOworICAgIGV4cGxpY2l0IEpTVmFsdWUodW5z
aWduZWQgbG9uZyk7CisgICAgZXhwbGljaXQgSlNWYWx1ZShsb25nIGxvbmcpOworICAgIGV4cGxp
Y2l0IEpTVmFsdWUodW5zaWduZWQgbG9uZyBsb25nKTsKKworICAgIG9wZXJhdG9yIGJvb2woKSBj
b25zdDsKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgSlNWYWx1ZSYgb3RoZXIpIGNvbnN0Owor
ICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBKU1ZhbHVlJiBvdGhlcikgY29uc3Q7CisKKyAgICBi
b29sIGlzSW50MzIoKSBjb25zdDsKKyAgICBib29sIGlzVUludDMyKCkgY29uc3Q7CisgICAgYm9v
bCBpc0RvdWJsZSgpIGNvbnN0OworICAgIGJvb2wgaXNUcnVlKCkgY29uc3Q7CisgICAgYm9vbCBp
c0ZhbHNlKCkgY29uc3Q7CisKKyAgICBpbnQzMl90IGFzSW50MzIoKSBjb25zdDsKKyAgICB1aW50
MzJfdCBhc1VJbnQzMigpIGNvbnN0OworICAgIGRvdWJsZSBhc0RvdWJsZSgpIGNvbnN0OworICAg
IGJvb2wgYXNCb29sZWFuKCkgY29uc3Q7CisgICAgZG91YmxlIGFzTnVtYmVyKCkgY29uc3Q7CisK
KyAgICAvLyBRdWVyeWluZyB0aGUgdHlwZS4KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdDsKKyAg
ICBib29sIGlzRnVuY3Rpb24oKSBjb25zdDsKKyAgICBib29sIGlzVW5kZWZpbmVkKCkgY29uc3Q7
CisgICAgYm9vbCBpc051bGwoKSBjb25zdDsKKyAgICBib29sIGlzVW5kZWZpbmVkT3JOdWxsKCkg
Y29uc3Q7CisgICAgYm9vbCBpc0Jvb2xlYW4oKSBjb25zdDsKKyAgICBib29sIGlzTnVtYmVyKCkg
Y29uc3Q7CisgICAgYm9vbCBpc1N0cmluZygpIGNvbnN0OworICAgIGJvb2wgaXNQcmltaXRpdmUo
KSBjb25zdDsKKyAgICBib29sIGlzR2V0dGVyU2V0dGVyKCkgY29uc3Q7CisgICAgYm9vbCBpc09i
amVjdCgpIGNvbnN0OworICAgIGJvb2wgaW5oZXJpdHMoY29uc3QgQ2xhc3NJbmZvKikgY29uc3Q7
CisgICAgICAgIAorICAgIC8vIEV4dHJhY3RpbmcgdGhlIHZhbHVlLgorICAgIGJvb2wgZ2V0U3Ry
aW5nKEV4ZWNTdGF0ZSosIFdURjo6U3RyaW5nJikgY29uc3Q7CisgICAgV1RGOjpTdHJpbmcgZ2V0
U3RyaW5nKEV4ZWNTdGF0ZSopIGNvbnN0OyAvLyBudWxsIHN0cmluZyBpZiBub3QgYSBzdHJpbmcK
KyAgICBKU09iamVjdCogZ2V0T2JqZWN0KCkgY29uc3Q7IC8vIDAgaWYgbm90IGFuIG9iamVjdAor
CisgICAgLy8gRXh0cmFjdGluZyBpbnRlZ2VyIHZhbHVlcy4KKyAgICBib29sIGdldFVJbnQzMih1
aW50MzJfdCYpIGNvbnN0OworICAgICAgICAKKyAgICAvLyBCYXNpYyBjb252ZXJzaW9ucy4KKyAg
ICBKU1ZhbHVlIHRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUg
PSBOb1ByZWZlcmVuY2UpIGNvbnN0OworICAgIGJvb2wgZ2V0UHJpbWl0aXZlTnVtYmVyKEV4ZWNT
dGF0ZSosIGRvdWJsZSYgbnVtYmVyLCBKU1ZhbHVlJik7CisKKyAgICBib29sIHRvQm9vbGVhbihF
eGVjU3RhdGUqKSBjb25zdDsKKworICAgIC8vIHRvTnVtYmVyIGNvbnZlcnNpb24gaXMgZXhwZWN0
ZWQgdG8gYmUgc2lkZSBlZmZlY3QgZnJlZSBpZiBhbiBleGNlcHRpb24gaGFzCisgICAgLy8gYmVl
biBzZXQgaW4gdGhlIEV4ZWNTdGF0ZSBhbHJlYWR5LgorICAgIGRvdWJsZSB0b051bWJlcihFeGVj
U3RhdGUqKSBjb25zdDsKKyAgICBKU1N0cmluZyogdG9TdHJpbmcoRXhlY1N0YXRlKikgY29uc3Q7
CisgICAgV1RGOjpTdHJpbmcgdG9XVEZTdHJpbmcoRXhlY1N0YXRlKikgY29uc3Q7CisgICAgV1RG
OjpTdHJpbmcgdG9XVEZTdHJpbmdJbmxpbmUoRXhlY1N0YXRlKikgY29uc3Q7CisgICAgSlNPYmpl
Y3QqIHRvT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0OworICAgIEpTT2JqZWN0KiB0b09iamVjdChF
eGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCopIGNvbnN0OworCisgICAgLy8gSW50ZWdlciBjb252
ZXJzaW9ucy4KKyAgICBKU19FWFBPUlRfUFJJVkFURSBkb3VibGUgdG9JbnRlZ2VyKEV4ZWNTdGF0
ZSopIGNvbnN0OworICAgIGRvdWJsZSB0b0ludGVnZXJQcmVzZXJ2ZU5hTihFeGVjU3RhdGUqKSBj
b25zdDsKKyAgICBpbnQzMl90IHRvSW50MzIoRXhlY1N0YXRlKikgY29uc3Q7CisgICAgdWludDMy
X3QgdG9VSW50MzIoRXhlY1N0YXRlKikgY29uc3Q7CisKKyAgICAvLyBGbG9hdGluZyBwb2ludCBj
b252ZXJzaW9ucyAodGhpcyBpcyBhIGNvbnZlbmllbmNlIG1ldGhvZCBmb3Igd2ViY29yZTsKKyAg
ICAvLyBzaWdubGUgcHJlY2lzaW9uIGZsb2F0IGlzIG5vdCBhIHJlcHJlc2VudGF0aW9uIHVzZWQg
aW4gSlMgb3IgSlNDKS4KKyAgICBmbG9hdCB0b0Zsb2F0KEV4ZWNTdGF0ZSogZXhlYykgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHRvTnVtYmVyKGV4ZWMpKTsgfQorCisgICAgLy8g
T2JqZWN0IG9wZXJhdGlvbnMsIHdpdGggdGhlIHRvT2JqZWN0IG9wZXJhdGlvbiBpbmNsdWRlZC4K
KyAgICBKU1ZhbHVlIGdldChFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpIGNvbnN0OworICAgIEpT
VmFsdWUgZ2V0KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JikgY29uc3Q7
CisgICAgSlNWYWx1ZSBnZXQoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKSBjb25z
dDsKKyAgICBKU1ZhbHVlIGdldChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYpIGNvbnN0OworICAgIHZvaWQgcHV0KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgdm9pZCBwdXRUb1ByaW1pdGl2ZShF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAg
IHZvaWQgcHV0VG9QcmltaXRpdmVCeUluZGV4KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CisgICAgdm9pZCBwdXRCeUluZGV4KEV4
ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJv
dyk7CisKKyAgICBKU09iamVjdCogdG9UaGlzT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0OworCisg
ICAgc3RhdGljIGJvb2wgZXF1YWwoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHYxLCBKU1ZhbHVl
IHYyKTsKKyAgICBzdGF0aWMgYm9vbCBlcXVhbFNsb3dDYXNlKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSB2MSwgSlNWYWx1ZSB2Mik7CisgICAgc3RhdGljIGJvb2wgZXF1YWxTbG93Q2FzZUlubGlu
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpOworICAgIHN0YXRpYyBi
b29sIHN0cmljdEVxdWFsKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2Mik7
CisgICAgc3RhdGljIGJvb2wgc3RyaWN0RXF1YWxTbG93Q2FzZShFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgdjEsIEpTVmFsdWUgdjIpOworICAgIHN0YXRpYyBib29sIHN0cmljdEVxdWFsU2xvd0Nh
c2VJbmxpbmUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKTsKKworICAg
IGJvb2wgaXNDZWxsKCkgY29uc3Q7CisgICAgSlNDZWxsKiBhc0NlbGwoKSBjb25zdDsKKyAgICBK
U19FWFBPUlRfUFJJVkFURSBib29sIGlzVmFsaWRDYWxsZWUoKTsKKyAgICAgICAgCisgICAgSlNW
YWx1ZSBzdHJ1Y3R1cmVPclVuZGVmaW5lZCgpIGNvbnN0OworCisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CisKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSBKU09iamVjdCogc3ludGhlc2l6ZVByb3RvdHlwZShFeGVjU3RhdGUqKSBjb25zdDsKKworcHJp
dmF0ZToKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gSlNWYWx1ZShXcml0ZUJhcnJpZXJCYXNlPFQ+
KTsKKworICAgIGVudW0gSGFzaFRhYmxlRGVsZXRlZFZhbHVlVGFnIHsgSGFzaFRhYmxlRGVsZXRl
ZFZhbHVlIH07CisgICAgSlNWYWx1ZShIYXNoVGFibGVEZWxldGVkVmFsdWVUYWcpOworCisgICAg
aW5saW5lIGNvbnN0IEpTVmFsdWUgYXNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9Cisg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgZG91YmxlIHRvTnVtYmVyU2xvd0Nhc2UoRXhlY1N0YXRlKikg
Y29uc3Q7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNTdHJpbmcqIHRvU3RyaW5nU2xvd0Nhc2Uo
RXhlY1N0YXRlKikgY29uc3Q7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgV1RGOjpTdHJpbmcgdG9X
VEZTdHJpbmdTbG93Q2FzZShFeGVjU3RhdGUqKSBjb25zdDsKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSBKU09iamVjdCogdG9PYmplY3RTbG93Q2FzZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCop
IGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0b1RoaXNPYmplY3RTbG93
Q2FzZShFeGVjU3RhdGUqKSBjb25zdDsKKworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgLyoK
KyAgICAgKiBPbiAzMi1iaXQgcGxhdGZvcm1zIFVTRShKU1ZBTFVFMzJfNjQpIHNob3VsZCBiZSBk
ZWZpbmVkLCBhbmQgd2UgdXNlIGEgTmFOLWVuY29kZWQKKyAgICAgKiBmb3JtIGZvciBpbW1lZGlh
dGVzLgorICAgICAqCisgICAgICogVGhlIGVuY29kaW5nIG1ha2VzIHVzZSBvZiB1bnVzZWQgTmFO
IHNwYWNlIGluIHRoZSBJRUVFNzU0IHJlcHJlc2VudGF0aW9uLiAgQW55IHZhbHVlCisgICAgICog
d2l0aCB0aGUgdG9wIDEzIGJpdHMgc2V0IHJlcHJlc2VudHMgYSBRTmFOICh3aXRoIHRoZSBzaWdu
IGJpdCBzZXQpLiAgUU5hTiB2YWx1ZXMKKyAgICAgKiBjYW4gZW5jb2RlIGEgNTEtYml0IHBheWxv
YWQuICBIYXJkd2FyZSBwcm9kdWNlZCBhbmQgQy1saWJyYXJ5IHBheWxvYWRzIHR5cGljYWxseQor
ICAgICAqIGhhdmUgYSBwYXlsb2FkIG9mIHplcm8uICBXZSBhc3N1bWUgdGhhdCBub24temVybyBw
YXlsb2FkcyBhcmUgYXZhaWxhYmxlIHRvIGVuY29kZQorICAgICAqIHBvaW50ZXIgYW5kIGludGVn
ZXIgdmFsdWVzLiAgU2luY2UgYW55IDY0LWJpdCBiaXQgcGF0dGVybiB3aGVyZSB0aGUgdG9wIDE1
IGJpdHMgYXJlCisgICAgICogYWxsIHNldCByZXByZXNlbnRzIGEgTmFOIHdpdGggYSBub24temVy
byBwYXlsb2FkLCB3ZSBjYW4gdXNlIHRoaXMgc3BhY2UgaW4gdGhlIE5hTgorICAgICAqIHJhbmdl
cyB0byBlbmNvZGUgb3RoZXIgdmFsdWVzIChob3dldmVyIHRoZXJlIGFyZSBhbHNvIG90aGVyIHJh
bmdlcyBvZiBOYU4gc3BhY2UgdGhhdAorICAgICAqIGNvdWxkIGhhdmUgYmVlbiBzZWxlY3RlZCku
CisgICAgICoKKyAgICAgKiBGb3IgSlNWYWx1ZXMgdGhhdCBkbyBub3QgY29udGFpbiBhIGRvdWJs
ZSB2YWx1ZSwgdGhlIGhpZ2ggMzIgYml0cyBjb250YWluIHRoZSB0YWcKKyAgICAgKiB2YWx1ZXMg
bGlzdGVkIGluIHRoZSBlbnVtcyBiZWxvdywgd2hpY2ggYWxsIGNvcnJlc3BvbmQgdG8gTmFOLXNw
YWNlLiBJbiB0aGUgY2FzZSBvZgorICAgICAqIGNlbGwsIGludGVnZXIgYW5kIGJvb2wgdmFsdWVz
IHRoZSBsb3dlciAzMiBiaXRzICh0aGUgJ3BheWxvYWQnKSBjb250YWluIHRoZSBwb2ludGVyCisg
ICAgICogaW50ZWdlciBvciBib29sZWFuIHZhbHVlOyBpbiB0aGUgY2FzZSBvZiBhbGwgb3RoZXIg
dGFncyB0aGUgcGF5bG9hZCBpcyAwLgorICAgICAqLworICAgIHVpbnQzMl90IHRhZygpIGNvbnN0
OworICAgIGludDMyX3QgcGF5bG9hZCgpIGNvbnN0OworCisjaWYgRU5BQkxFKExMSU5UX0NfTE9P
UCkKKyAgICAvLyBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgYnkgdGhlIExMSW50IEMgTG9vcCBp
bnRlcnByZXRlciB3aG8gbmVlZHMKKyAgICAvLyBzeW50aGVzaXplIEpTVmFsdWUgZnJvbSBpdHMg
InJlZ2lzdGVyInMgaG9sZGluZyB0YWcgYW5kIHBheWxvYWQKKyAgICAvLyB2YWx1ZXMuCisgICAg
ZXhwbGljaXQgSlNWYWx1ZShpbnQzMl90IHRhZywgaW50MzJfdCBwYXlsb2FkKTsKKyNlbmRpZgor
CisjZWxpZiBVU0UoSlNWQUxVRTY0KQorICAgIC8qCisgICAgICogT24gNjQtYml0IHBsYXRmb3Jt
cyBVU0UoSlNWQUxVRTY0KSBzaG91bGQgYmUgZGVmaW5lZCwgYW5kIHdlIHVzZSBhIE5hTi1lbmNv
ZGVkCisgICAgICogZm9ybSBmb3IgaW1tZWRpYXRlcy4KKyAgICAgKgorICAgICAqIFRoZSBlbmNv
ZGluZyBtYWtlcyB1c2Ugb2YgdW51c2VkIE5hTiBzcGFjZSBpbiB0aGUgSUVFRTc1NCByZXByZXNl
bnRhdGlvbi4gIEFueSB2YWx1ZQorICAgICAqIHdpdGggdGhlIHRvcCAxMyBiaXRzIHNldCByZXBy
ZXNlbnRzIGEgUU5hTiAod2l0aCB0aGUgc2lnbiBiaXQgc2V0KS4gIFFOYU4gdmFsdWVzCisgICAg
ICogY2FuIGVuY29kZSBhIDUxLWJpdCBwYXlsb2FkLiAgSGFyZHdhcmUgcHJvZHVjZWQgYW5kIEMt
bGlicmFyeSBwYXlsb2FkcyB0eXBpY2FsbHkKKyAgICAgKiBoYXZlIGEgcGF5bG9hZCBvZiB6ZXJv
LiAgV2UgYXNzdW1lIHRoYXQgbm9uLXplcm8gcGF5bG9hZHMgYXJlIGF2YWlsYWJsZSB0byBlbmNv
ZGUKKyAgICAgKiBwb2ludGVyIGFuZCBpbnRlZ2VyIHZhbHVlcy4gIFNpbmNlIGFueSA2NC1iaXQg
Yml0IHBhdHRlcm4gd2hlcmUgdGhlIHRvcCAxNSBiaXRzIGFyZQorICAgICAqIGFsbCBzZXQgcmVw
cmVzZW50cyBhIE5hTiB3aXRoIGEgbm9uLXplcm8gcGF5bG9hZCwgd2UgY2FuIHVzZSB0aGlzIHNw
YWNlIGluIHRoZSBOYU4KKyAgICAgKiByYW5nZXMgdG8gZW5jb2RlIG90aGVyIHZhbHVlcyAoaG93
ZXZlciB0aGVyZSBhcmUgYWxzbyBvdGhlciByYW5nZXMgb2YgTmFOIHNwYWNlIHRoYXQKKyAgICAg
KiBjb3VsZCBoYXZlIGJlZW4gc2VsZWN0ZWQpLgorICAgICAqCisgICAgICogVGhpcyByYW5nZSBv
ZiBOYU4gc3BhY2UgaXMgcmVwcmVzZW50ZWQgYnkgNjQtYml0IG51bWJlcnMgYmVnaW5pbmcgd2l0
aCB0aGUgMTYtYml0CisgICAgICogaGV4IHBhdHRlcm5zIDB4RkZGRSBhbmQgMHhGRkZGIC0gd2Ug
cmVseSBvbiB0aGUgZmFjdCB0aGF0IG5vIHZhbGlkIGRvdWJsZS1wcmVjaXNpb24KKyAgICAgKiBu
dW1iZXJzIHdpbGwgYmVnaW4gZmFsbCBpbiB0aGVzZSByYW5nZXMuCisgICAgICoKKyAgICAgKiBU
aGUgdG9wIDE2LWJpdHMgZGVub3RlIHRoZSB0eXBlIG9mIHRoZSBlbmNvZGVkIEpTVmFsdWU6Cisg
ICAgICoKKyAgICAgKiAgICAgUG9pbnRlciB7ICAwMDAwOlBQUFA6UFBQUDpQUFBQCisgICAgICog
ICAgICAgICAgICAgIC8gMDAwMToqKioqOioqKio6KioqKgorICAgICAqICAgICBEb3VibGUgIHsg
ICAgICAgICAuLi4KKyAgICAgKiAgICAgICAgICAgICAgXCBGRkZFOioqKio6KioqKjoqKioqCisg
ICAgICogICAgIEludGVnZXIgeyAgRkZGRjowMDAwOklJSUk6SUlJSQorICAgICAqCisgICAgICog
VGhlIHNjaGVtZSB3ZSBoYXZlIGltcGxlbWVudGVkIGVuY29kZXMgZG91YmxlIHByZWNpc2lvbiB2
YWx1ZXMgYnkgcGVyZm9ybWluZyBhCisgICAgICogNjQtYml0IGludGVnZXIgYWRkaXRpb24gb2Yg
dGhlIHZhbHVlIDJeNDggdG8gdGhlIG51bWJlci4gQWZ0ZXIgdGhpcyBtYW5pcHVsYXRpb24KKyAg
ICAgKiBubyBlbmNvZGVkIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgd2lsbCBiZWdpbiB3aXRoIHRo
ZSBwYXR0ZXJuIDB4MDAwMCBvciAweEZGRkYuCisgICAgICogVmFsdWVzIG11c3QgYmUgZGVjb2Rl
ZCBieSByZXZlcnNpbmcgdGhpcyBvcGVyYXRpb24gYmVmb3JlIHN1YnNlcXVlbnQgZmxvYXRpbmcg
cG9pbnQKKyAgICAgKiBvcGVyYXRpb25zIG15IGJlIHBlZm9ybWVkLgorICAgICAqCisgICAgICog
MzItYml0IHNpZ25lZCBpbnRlZ2VycyBhcmUgbWFya2VkIHdpdGggdGhlIDE2LWJpdCB0YWcgMHhG
RkZGLgorICAgICAqCisgICAgICogVGhlIHRhZyAweDAwMDAgZGVub3RlcyBhIHBvaW50ZXIsIG9y
IGFub3RoZXIgZm9ybSBvZiB0YWdnZWQgaW1tZWRpYXRlLiBCb29sZWFuLAorICAgICAqIG51bGwg
YW5kIHVuZGVmaW5lZCB2YWx1ZXMgYXJlIHJlcHJlc2VudGVkIGJ5IHNwZWNpZmljLCBpbnZhbGlk
IHBvaW50ZXIgdmFsdWVzOgorICAgICAqCisgICAgICogICAgIEZhbHNlOiAgICAgMHgwNgorICAg
ICAqICAgICBUcnVlOiAgICAgIDB4MDcKKyAgICAgKiAgICAgVW5kZWZpbmVkOiAweDBhCisgICAg
ICogICAgIE51bGw6ICAgICAgMHgwMgorICAgICAqCisgICAgICogVGhlc2UgdmFsdWVzIGhhdmUg
dGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOgorICAgICAqIC0gQml0IDEgKFRhZ0JpdFR5cGVPdGhl
cikgaXMgc2V0IGZvciBhbGwgZm91ciB2YWx1ZXMsIGFsbG93aW5nIHJlYWwgcG9pbnRlcnMgdG8g
YmUKKyAgICAgKiAgIHF1aWNrbHkgZGlzdGluZ3Vpc2hlZCBmcm9tIGFsbCBpbW1lZGlhdGUgdmFs
dWVzLCBpbmNsdWRpbmcgdGhlc2UgaW52YWxpZCBwb2ludGVycy4KKyAgICAgKiAtIFdpdGggYml0
IDMgaXMgbWFza2VkIG91dCAoVGFnQml0VW5kZWZpbmVkKSBVbmRlZmluZWQgYW5kIE51bGwgc2hh
cmUgdGhlCisgICAgICogICBzYW1lIHZhbHVlLCBhbGxvd2luZyBudWxsICYgdW5kZWZpbmVkIHRv
IGJlIHF1aWNrbHkgZGV0ZWN0ZWQuCisgICAgICoKKyAgICAgKiBObyB2YWxpZCBKU1ZhbHVlIHdp
bGwgaGF2ZSB0aGUgYml0IHBhdHRlcm4gMHgwLCB0aGlzIGlzIHVzZWQgdG8gcmVwcmVzZW50IGFy
cmF5CisgICAgICogaG9sZXMsIGFuZCBhcyBhIEMrKyAnbm8gdmFsdWUnIHJlc3VsdCAoZS5nLiBK
U1ZhbHVlKCkgaGFzIGFuIGludGVybmFsIHZhbHVlIG9mIDApLgorICAgICAqLworCisgICAgLy8g
VGhlc2UgdmFsdWVzIGFyZSAjZGVmaW5lcyBzaW5jZSB1c2luZyBzdGF0aWMgY29uc3QgaW50ZWdl
cnMgaGVyZSBpcyBhIH4xJSByZWdyZXNzaW9uIQorCisgICAgLy8gVGhpcyB2YWx1ZSBpcyAyXjQ4
LCB1c2VkIHRvIGVuY29kZSBkb3VibGVzIHN1Y2ggdGhhdCB0aGUgZW5jb2RlZCB2YWx1ZSB3aWxs
IGJlZ2luCisgICAgLy8gd2l0aCBhIDE2LWJpdCBwYXR0ZXJuIHdpdGhpbiB0aGUgcmFuZ2UgMHgw
MDAxLi4weEZGRkUuCisgICAgI2RlZmluZSBEb3VibGVFbmNvZGVPZmZzZXQgMHgxMDAwMDAwMDAw
MDAwbGwKKyAgICAvLyBJZiBhbGwgYml0cyBpbiB0aGUgbWFzayBhcmUgc2V0LCB0aGlzIGluZGlj
YXRlcyBhbiBpbnRlZ2VyIG51bWJlciwKKyAgICAvLyBpZiBhbnkgYnV0IG5vdCBhbGwgYXJlIHNl
dCB0aGlzIHZhbHVlIGlzIGEgZG91YmxlIHByZWNpc2lvbiBudW1iZXIuCisgICAgI2RlZmluZSBU
YWdUeXBlTnVtYmVyIDB4ZmZmZjAwMDAwMDAwMDAwMGxsCisKKyAgICAvLyBBbGwgbm9uLW51bWVy
aWMgKGJvb2wsIG51bGwsIHVuZGVmaW5lZCkgaW1tZWRpYXRlcyBoYXZlIGJpdCAyIHNldC4KKyAg
ICAjZGVmaW5lIFRhZ0JpdFR5cGVPdGhlciAweDJsbAorICAgICNkZWZpbmUgVGFnQml0Qm9vbCAg
ICAgIDB4NGxsCisgICAgI2RlZmluZSBUYWdCaXRVbmRlZmluZWQgMHg4bGwKKyAgICAvLyBDb21i
aW5lZCBpbnRlZ2VyIHZhbHVlIGZvciBub24tbnVtZXJpYyBpbW1lZGlhdGVzLgorICAgICNkZWZp
bmUgVmFsdWVGYWxzZSAgICAgKFRhZ0JpdFR5cGVPdGhlciB8IFRhZ0JpdEJvb2wgfCBmYWxzZSkK
KyAgICAjZGVmaW5lIFZhbHVlVHJ1ZSAgICAgIChUYWdCaXRUeXBlT3RoZXIgfCBUYWdCaXRCb29s
IHwgdHJ1ZSkKKyAgICAjZGVmaW5lIFZhbHVlVW5kZWZpbmVkIChUYWdCaXRUeXBlT3RoZXIgfCBU
YWdCaXRVbmRlZmluZWQpCisgICAgI2RlZmluZSBWYWx1ZU51bGwgICAgICAoVGFnQml0VHlwZU90
aGVyKQorCisgICAgLy8gVGFnTWFzayBpcyB1c2VkIHRvIGNoZWNrIGZvciBhbGwgdHlwZXMgb2Yg
aW1tZWRpYXRlIHZhbHVlcyAoZWl0aGVyIG51bWJlciBvciAnb3RoZXInKS4KKyAgICAjZGVmaW5l
IFRhZ01hc2sgKFRhZ1R5cGVOdW1iZXIgfCBUYWdCaXRUeXBlT3RoZXIpCisKKyAgICAvLyBUaGVz
ZSBzcGVjaWFsIHZhbHVlcyBhcmUgbmV2ZXIgdmlzaWJsZSB0byBKYXZhU2NyaXB0IGNvZGU7IEVt
cHR5IGlzIHVzZWQgdG8gcmVwcmVzZW50CisgICAgLy8gQXJyYXkgaG9sZXMsIGFuZCBmb3IgdW5p
bml0aWFsaXplZCBKU1ZhbHVlcy4gRGVsZXRlZCBpcyB1c2VkIGluIGhhc2ggdGFibGUgY29kZS4K
KyAgICAvLyBUaGVzZSB2YWx1ZXMgd291bGQgbWFwIHRvIGNlbGwgdHlwZXMgaW4gdGhlIEpTVmFs
dWUgZW5jb2RpbmcsIGJ1dCBub3QgdmFsaWQgR0MgY2VsbAorICAgIC8vIHBvaW50ZXIgc2hvdWxk
IGhhdmUgZWl0aGVyIG9mIHRoZXNlIHZhbHVlcyAoRW1wdHkgaXMgbnVsbCwgZGVsZXRlZCBpcyBh
dCBhbiBpbnZhbGlkCisgICAgLy8gYWxpZ25tZW50IGZvciBhIEdDIGNlbGwsIGFuZCBpbiB0aGUg
emVybyBwYWdlKS4KKyAgICAjZGVmaW5lIFZhbHVlRW1wdHkgICAweDBsbAorICAgICNkZWZpbmUg
VmFsdWVEZWxldGVkIDB4NGxsCisjZW5kaWYKKworICAgIEVuY29kZWRWYWx1ZURlc2NyaXB0b3Ig
dTsKK307CisKK3R5cGVkZWYgSW50SGFzaDxFbmNvZGVkSlNWYWx1ZT4gRW5jb2RlZEpTVmFsdWVI
YXNoOworCisjaWYgVVNFKEpTVkFMVUUzMl82NCkKK3N0cnVjdCBFbmNvZGVkSlNWYWx1ZUhhc2hU
cmFpdHMgOiBIYXNoVHJhaXRzPEVuY29kZWRKU1ZhbHVlPiB7CisgICAgc3RhdGljIGNvbnN0IGJv
b2wgZW1wdHlWYWx1ZUlzWmVybyA9IGZhbHNlOworICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBl
bXB0eVZhbHVlKCkgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7IH0KKyAgICBz
dGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoRW5jb2RlZEpTVmFsdWUmIHNsb3QpIHsg
c2xvdCA9IEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKEpTVmFsdWU6Okhhc2hUYWJsZURlbGV0ZWRW
YWx1ZSkpOyB9CisgICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUoRW5jb2RlZEpTVmFsdWUg
dmFsdWUpIHsgcmV0dXJuIHZhbHVlID09IEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKEpTVmFsdWU6
Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkpOyB9Cit9OworI2Vsc2UKK3N0cnVjdCBFbmNvZGVkSlNW
YWx1ZUhhc2hUcmFpdHMgOiBIYXNoVHJhaXRzPEVuY29kZWRKU1ZhbHVlPiB7CisgICAgc3RhdGlj
IHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKEVuY29kZWRKU1ZhbHVlJiBzbG90KSB7IHNsb3Qg
PSBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShKU1ZhbHVlOjpIYXNoVGFibGVEZWxldGVkVmFsdWUp
KTsgfQorICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKEVuY29kZWRKU1ZhbHVlIHZhbHVl
KSB7IHJldHVybiB2YWx1ZSA9PSBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShKU1ZhbHVlOjpIYXNo
VGFibGVEZWxldGVkVmFsdWUpKTsgfQorfTsKKyNlbmRpZgorCit0eXBlZGVmIEhhc2hNYXA8RW5j
b2RlZEpTVmFsdWUsIHVuc2lnbmVkLCBFbmNvZGVkSlNWYWx1ZUhhc2gsIEVuY29kZWRKU1ZhbHVl
SGFzaFRyYWl0cz4gSlNWYWx1ZU1hcDsKKworLy8gU3RhbmQtYWxvbmUgaGVscGVyIGZ1bmN0aW9u
cy4KK2lubGluZSBKU1ZhbHVlIGpzTnVsbCgpCit7CisgICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1
ZTo6SlNOdWxsKTsKK30KKworaW5saW5lIEpTVmFsdWUganNVbmRlZmluZWQoKQoreworICAgIHJl
dHVybiBKU1ZhbHVlKEpTVmFsdWU6OkpTVW5kZWZpbmVkKTsKK30KKworaW5saW5lIEpTVmFsdWUg
anNCb29sZWFuKGJvb2wgYikKK3sKKyAgICByZXR1cm4gYiA/IEpTVmFsdWUoSlNWYWx1ZTo6SlNU
cnVlKSA6IEpTVmFsdWUoSlNWYWx1ZTo6SlNGYWxzZSk7Cit9CisKK0FMV0FZU19JTkxJTkUgSlNW
YWx1ZSBqc0RvdWJsZU51bWJlcihkb3VibGUgZCkKK3sKKyAgICBBU1NFUlQoSlNWYWx1ZShKU1Zh
bHVlOjpFbmNvZGVBc0RvdWJsZSwgZCkuaXNOdW1iZXIoKSk7CisgICAgcmV0dXJuIEpTVmFsdWUo
SlNWYWx1ZTo6RW5jb2RlQXNEb3VibGUsIGQpOworfQorCitBTFdBWVNfSU5MSU5FIEpTVmFsdWUg
anNOdW1iZXIoZG91YmxlIGQpCit7CisgICAgQVNTRVJUKEpTVmFsdWUoZCkuaXNOdW1iZXIoKSk7
CisgICAgcmV0dXJuIEpTVmFsdWUoZCk7Cit9CisKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc051
bWJlcihjaGFyIGkpCit7CisgICAgcmV0dXJuIEpTVmFsdWUoaSk7Cit9CisKK0FMV0FZU19JTkxJ
TkUgSlNWYWx1ZSBqc051bWJlcih1bnNpZ25lZCBjaGFyIGkpCit7CisgICAgcmV0dXJuIEpTVmFs
dWUoaSk7Cit9CisKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc051bWJlcihzaG9ydCBpKQorewor
ICAgIHJldHVybiBKU1ZhbHVlKGkpOworfQorCitBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNOdW1i
ZXIodW5zaWduZWQgc2hvcnQgaSkKK3sKKyAgICByZXR1cm4gSlNWYWx1ZShpKTsKK30KKworQUxX
QVlTX0lOTElORSBKU1ZhbHVlIGpzTnVtYmVyKGludCBpKQoreworICAgIHJldHVybiBKU1ZhbHVl
KGkpOworfQorCitBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNOdW1iZXIodW5zaWduZWQgaSkKK3sK
KyAgICByZXR1cm4gSlNWYWx1ZShpKTsKK30KKworQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzTnVt
YmVyKGxvbmcgaSkKK3sKKyAgICByZXR1cm4gSlNWYWx1ZShpKTsKK30KKworQUxXQVlTX0lOTElO
RSBKU1ZhbHVlIGpzTnVtYmVyKHVuc2lnbmVkIGxvbmcgaSkKK3sKKyAgICByZXR1cm4gSlNWYWx1
ZShpKTsKK30KKworQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzTnVtYmVyKGxvbmcgbG9uZyBpKQor
eworICAgIHJldHVybiBKU1ZhbHVlKGkpOworfQorCitBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNO
dW1iZXIodW5zaWduZWQgbG9uZyBsb25nIGkpCit7CisgICAgcmV0dXJuIEpTVmFsdWUoaSk7Cit9
CisKK2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgSlNWYWx1ZSBhLCBjb25zdCBKU0NlbGwq
IGIpIHsgcmV0dXJuIGEgPT0gSlNWYWx1ZShiKTsgfQoraW5saW5lIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBKU0NlbGwqIGEsIGNvbnN0IEpTVmFsdWUgYikgeyByZXR1cm4gSlNWYWx1ZShhKSA9PSBi
OyB9CisKK2lubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgSlNWYWx1ZSBhLCBjb25zdCBKU0Nl
bGwqIGIpIHsgcmV0dXJuIGEgIT0gSlNWYWx1ZShiKTsgfQoraW5saW5lIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBKU0NlbGwqIGEsIGNvbnN0IEpTVmFsdWUgYikgeyByZXR1cm4gSlNWYWx1ZShhKSAh
PSBiOyB9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gSlNWYWx1ZV9oCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCShyZXZpc2lvbiAx
NDAxOTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTIwLDggKzIwLDggQEAKICAqCiAgKi8KIAotI2lmbmRlZiBKU1ZhbHVl
X2gKLSNkZWZpbmUgSlNWYWx1ZV9oCisjaWZuZGVmIEpTQ0pTVmFsdWVfaAorI2RlZmluZSBKU0NK
U1ZhbHVlX2gKIAogI2luY2x1ZGUgPG1hdGguaD4KICNpbmNsdWRlIDxzdGRkZWYuaD4gLy8gZm9y
IHNpemVfdApAQCAtMjQ1LDEyICsyNDUsMTIgQEAgcHVibGljOgogCiAgICAgSlNPYmplY3QqIHRv
VGhpc09iamVjdChFeGVjU3RhdGUqKSBjb25zdDsKIAotICAgIHN0YXRpYyBib29sIGVxdWFsKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2Mik7Ci0gICAgc3RhdGljIGJvb2wg
ZXF1YWxTbG93Q2FzZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpOwot
ICAgIHN0YXRpYyBib29sIGVxdWFsU2xvd0Nhc2VJbmxpbmUoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIHYxLCBKU1ZhbHVlIHYyKTsKLSAgICBzdGF0aWMgYm9vbCBzdHJpY3RFcXVhbChFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpOwotICAgIHN0YXRpYyBib29sIHN0cmlj
dEVxdWFsU2xvd0Nhc2UoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKTsK
LSAgICBzdGF0aWMgYm9vbCBzdHJpY3RFcXVhbFNsb3dDYXNlSW5saW5lKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2Mik7CisgICAgc3RhdGljIGJvb2wgZXF1YWwoRXhlY1N0
YXRlKiwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2Mik7CisgICAgc3RhdGljIGJvb2wgZXF1YWxTbG93
Q2FzZShFeGVjU3RhdGUqLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKTsKKyAgICBzdGF0aWMgYm9v
bCBlcXVhbFNsb3dDYXNlSW5saW5lKEV4ZWNTdGF0ZSosIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIp
OworICAgIHN0YXRpYyBib29sIHN0cmljdEVxdWFsKEV4ZWNTdGF0ZSosIEpTVmFsdWUgdjEsIEpT
VmFsdWUgdjIpOworICAgIHN0YXRpYyBib29sIHN0cmljdEVxdWFsU2xvd0Nhc2UoRXhlY1N0YXRl
KiwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2Mik7CisgICAgc3RhdGljIGJvb2wgc3RyaWN0RXF1YWxT
bG93Q2FzZUlubGluZShFeGVjU3RhdGUqLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKTsKIAogICAg
IGJvb2wgaXNDZWxsKCkgY29uc3Q7CiAgICAgSlNDZWxsKiBhc0NlbGwoKSBjb25zdDsKQEAgLTQ5
NCw0ICs0OTQsNCBAQCBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEpTQ2VsbCogYSwgCiAK
IH0gLy8gbmFtZXNwYWNlIEpTQwogCi0jZW5kaWYgLy8gSlNWYWx1ZV9oCisjZW5kaWYgLy8gSlND
SlNWYWx1ZV9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVl
SW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0pTVmFsdWVJbmxpbmVzLmgJKHJldmlzaW9uIDE0MDE5NikJKGZyb20gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNWYWx1ZUlubGluZXMuaDoxNDAxOTYpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNzk5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpZm5kZWYgSlNWYWx1ZUlubGluZXNfaAorI2RlZmluZSBKU1ZhbHVlSW5saW5l
c19oCisKKyNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5s
aW5lcy5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU1ZhbHVlLmgiCisK
K25hbWVzcGFjZSBKU0MgeworCitBTFdBWVNfSU5MSU5FIGludDMyX3QgSlNWYWx1ZTo6dG9JbnQz
MihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Cit7CisgICAgaWYgKGlzSW50MzIoKSkKKyAgICAgICAg
cmV0dXJuIGFzSW50MzIoKTsKKyAgICByZXR1cm4gSlNDOjp0b0ludDMyKHRvTnVtYmVyKGV4ZWMp
KTsKK30KKworaW5saW5lIHVpbnQzMl90IEpTVmFsdWU6OnRvVUludDMyKEV4ZWNTdGF0ZSogZXhl
YykgY29uc3QKK3sKKyAgICAvLyBTZWUgY29tbWVudCBvbiBKU0M6OnRvVUludDMyLCBhYm92ZS4K
KyAgICByZXR1cm4gdG9JbnQzMihleGVjKTsKK30KKworaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNV
SW50MzIoKSBjb25zdAoreworICAgIHJldHVybiBpc0ludDMyKCkgJiYgYXNJbnQzMigpID49IDA7
Cit9CisKK2lubGluZSB1aW50MzJfdCBKU1ZhbHVlOjphc1VJbnQzMigpIGNvbnN0Cit7CisgICAg
QVNTRVJUKGlzVUludDMyKCkpOworICAgIHJldHVybiBhc0ludDMyKCk7Cit9CisKK2lubGluZSBk
b3VibGUgSlNWYWx1ZTo6YXNOdW1iZXIoKSBjb25zdAoreworICAgIEFTU0VSVChpc051bWJlcigp
KTsKKyAgICByZXR1cm4gaXNJbnQzMigpID8gYXNJbnQzMigpIDogYXNEb3VibGUoKTsKK30KKwor
aW5saW5lIEpTVmFsdWUganNOYU4oKQoreworICAgIHJldHVybiBKU1ZhbHVlKFFOYU4pOworfQor
CitpbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShjaGFyIGkpCit7CisgICAgKnRoaXMgPSBKU1ZhbHVl
KHN0YXRpY19jYXN0PGludDMyX3Q+KGkpKTsKK30KKworaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUo
dW5zaWduZWQgY2hhciBpKQoreworICAgICp0aGlzID0gSlNWYWx1ZShzdGF0aWNfY2FzdDxpbnQz
Ml90PihpKSk7Cit9CisKK2lubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKHNob3J0IGkpCit7CisgICAg
KnRoaXMgPSBKU1ZhbHVlKHN0YXRpY19jYXN0PGludDMyX3Q+KGkpKTsKK30KKworaW5saW5lIEpT
VmFsdWU6OkpTVmFsdWUodW5zaWduZWQgc2hvcnQgaSkKK3sKKyAgICAqdGhpcyA9IEpTVmFsdWUo
c3RhdGljX2Nhc3Q8aW50MzJfdD4oaSkpOworfQorCitpbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZSh1
bnNpZ25lZCBpKQoreworICAgIGlmIChzdGF0aWNfY2FzdDxpbnQzMl90PihpKSA8IDApIHsKKyAg
ICAgICAgKnRoaXMgPSBKU1ZhbHVlKEVuY29kZUFzRG91YmxlLCBzdGF0aWNfY2FzdDxkb3VibGU+
KGkpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAqdGhpcyA9IEpTVmFsdWUoc3RhdGlj
X2Nhc3Q8aW50MzJfdD4oaSkpOworfQorCitpbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShsb25nIGkp
Cit7CisgICAgaWYgKHN0YXRpY19jYXN0PGludDMyX3Q+KGkpICE9IGkpIHsKKyAgICAgICAgKnRo
aXMgPSBKU1ZhbHVlKEVuY29kZUFzRG91YmxlLCBzdGF0aWNfY2FzdDxkb3VibGU+KGkpKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICAqdGhpcyA9IEpTVmFsdWUoc3RhdGljX2Nhc3Q8aW50
MzJfdD4oaSkpOworfQorCitpbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZSh1bnNpZ25lZCBsb25nIGkp
Cit7CisgICAgaWYgKHN0YXRpY19jYXN0PHVpbnQzMl90PihpKSAhPSBpKSB7CisgICAgICAgICp0
aGlzID0gSlNWYWx1ZShFbmNvZGVBc0RvdWJsZSwgc3RhdGljX2Nhc3Q8ZG91YmxlPihpKSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgKnRoaXMgPSBKU1ZhbHVlKHN0YXRpY19jYXN0PHVp
bnQzMl90PihpKSk7Cit9CisKK2lubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKGxvbmcgbG9uZyBpKQor
eworICAgIGlmIChzdGF0aWNfY2FzdDxpbnQzMl90PihpKSAhPSBpKSB7CisgICAgICAgICp0aGlz
ID0gSlNWYWx1ZShFbmNvZGVBc0RvdWJsZSwgc3RhdGljX2Nhc3Q8ZG91YmxlPihpKSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgKnRoaXMgPSBKU1ZhbHVlKHN0YXRpY19jYXN0PGludDMy
X3Q+KGkpKTsKK30KKworaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUodW5zaWduZWQgbG9uZyBsb25n
IGkpCit7CisgICAgaWYgKHN0YXRpY19jYXN0PHVpbnQzMl90PihpKSAhPSBpKSB7CisgICAgICAg
ICp0aGlzID0gSlNWYWx1ZShFbmNvZGVBc0RvdWJsZSwgc3RhdGljX2Nhc3Q8ZG91YmxlPihpKSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgKnRoaXMgPSBKU1ZhbHVlKHN0YXRpY19jYXN0
PHVpbnQzMl90PihpKSk7Cit9CisKK2lubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKGRvdWJsZSBkKQor
eworICAgIGNvbnN0IGludDMyX3QgYXNJbnQzMiA9IHN0YXRpY19jYXN0PGludDMyX3Q+KGQpOwor
ICAgIGlmIChhc0ludDMyICE9IGQgfHwgKCFhc0ludDMyICYmIHNpZ25iaXQoZCkpKSB7IC8vIHRy
dWUgZm9yIC0wLjAKKyAgICAgICAgKnRoaXMgPSBKU1ZhbHVlKEVuY29kZUFzRG91YmxlLCBkKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAqdGhpcyA9IEpTVmFsdWUoc3RhdGljX2Nhc3Q8
aW50MzJfdD4oZCkpOworfQorCitpbmxpbmUgRW5jb2RlZEpTVmFsdWUgSlNWYWx1ZTo6ZW5jb2Rl
KEpTVmFsdWUgdmFsdWUpCit7CisgICAgcmV0dXJuIHZhbHVlLnUuYXNJbnQ2NDsKK30KKworaW5s
aW5lIEpTVmFsdWUgSlNWYWx1ZTo6ZGVjb2RlKEVuY29kZWRKU1ZhbHVlIGVuY29kZWRKU1ZhbHVl
KQoreworICAgIEpTVmFsdWUgdjsKKyAgICB2LnUuYXNJbnQ2NCA9IGVuY29kZWRKU1ZhbHVlOwor
ICAgIHJldHVybiB2OworfQorCisjaWYgVVNFKEpTVkFMVUUzMl82NCkKK2lubGluZSBKU1ZhbHVl
OjpKU1ZhbHVlKCkKK3sKKyAgICB1LmFzQml0cy50YWcgPSBFbXB0eVZhbHVlVGFnOworICAgIHUu
YXNCaXRzLnBheWxvYWQgPSAwOworfQorCitpbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShKU051bGxU
YWcpCit7CisgICAgdS5hc0JpdHMudGFnID0gTnVsbFRhZzsKKyAgICB1LmFzQml0cy5wYXlsb2Fk
ID0gMDsKK30KKyAgICAKK2lubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKEpTVW5kZWZpbmVkVGFnKQor
eworICAgIHUuYXNCaXRzLnRhZyA9IFVuZGVmaW5lZFRhZzsKKyAgICB1LmFzQml0cy5wYXlsb2Fk
ID0gMDsKK30KKyAgICAKK2lubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKEpTVHJ1ZVRhZykKK3sKKyAg
ICB1LmFzQml0cy50YWcgPSBCb29sZWFuVGFnOworICAgIHUuYXNCaXRzLnBheWxvYWQgPSAxOwor
fQorICAgIAoraW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoSlNGYWxzZVRhZykKK3sKKyAgICB1LmFz
Qml0cy50YWcgPSBCb29sZWFuVGFnOworICAgIHUuYXNCaXRzLnBheWxvYWQgPSAwOworfQorCitp
bmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShIYXNoVGFibGVEZWxldGVkVmFsdWVUYWcpCit7CisgICAg
dS5hc0JpdHMudGFnID0gRGVsZXRlZFZhbHVlVGFnOworICAgIHUuYXNCaXRzLnBheWxvYWQgPSAw
OworfQorCitpbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShKU0NlbGwqIHB0cikKK3sKKyAgICBpZiAo
cHRyKQorICAgICAgICB1LmFzQml0cy50YWcgPSBDZWxsVGFnOworICAgIGVsc2UKKyAgICAgICAg
dS5hc0JpdHMudGFnID0gRW1wdHlWYWx1ZVRhZzsKKyAgICB1LmFzQml0cy5wYXlsb2FkID0gcmVp
bnRlcnByZXRfY2FzdDxpbnQzMl90PihwdHIpOworfQorCitpbmxpbmUgSlNWYWx1ZTo6SlNWYWx1
ZShjb25zdCBKU0NlbGwqIHB0cikKK3sKKyAgICBpZiAocHRyKQorICAgICAgICB1LmFzQml0cy50
YWcgPSBDZWxsVGFnOworICAgIGVsc2UKKyAgICAgICAgdS5hc0JpdHMudGFnID0gRW1wdHlWYWx1
ZVRhZzsKKyAgICB1LmFzQml0cy5wYXlsb2FkID0gcmVpbnRlcnByZXRfY2FzdDxpbnQzMl90Pihj
b25zdF9jYXN0PEpTQ2VsbCo+KHB0cikpOworfQorCitpbmxpbmUgSlNWYWx1ZTo6b3BlcmF0b3Ig
Ym9vbCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKHRhZygpICE9IERlbGV0ZWRWYWx1ZVRhZyk7Cisg
ICAgcmV0dXJuIHRhZygpICE9IEVtcHR5VmFsdWVUYWc7Cit9CisKK2lubGluZSBib29sIEpTVmFs
dWU6Om9wZXJhdG9yPT0oY29uc3QgSlNWYWx1ZSYgb3RoZXIpIGNvbnN0Cit7CisgICAgcmV0dXJu
IHUuYXNJbnQ2NCA9PSBvdGhlci51LmFzSW50NjQ7Cit9CisKK2lubGluZSBib29sIEpTVmFsdWU6
Om9wZXJhdG9yIT0oY29uc3QgSlNWYWx1ZSYgb3RoZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIHUu
YXNJbnQ2NCAhPSBvdGhlci51LmFzSW50NjQ7Cit9CisKK2lubGluZSBib29sIEpTVmFsdWU6Omlz
RW1wdHkoKSBjb25zdAoreworICAgIHJldHVybiB0YWcoKSA9PSBFbXB0eVZhbHVlVGFnOworfQor
CitpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc1VuZGVmaW5lZCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IHRhZygpID09IFVuZGVmaW5lZFRhZzsKK30KKworaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNOdWxs
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gdGFnKCkgPT0gTnVsbFRhZzsKK30KKworaW5saW5lIGJv
b2wgSlNWYWx1ZTo6aXNVbmRlZmluZWRPck51bGwoKSBjb25zdAoreworICAgIHJldHVybiBpc1Vu
ZGVmaW5lZCgpIHx8IGlzTnVsbCgpOworfQorCitpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0NlbGwo
KSBjb25zdAoreworICAgIHJldHVybiB0YWcoKSA9PSBDZWxsVGFnOworfQorCitpbmxpbmUgYm9v
bCBKU1ZhbHVlOjppc0ludDMyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gdGFnKCkgPT0gSW50MzJU
YWc7Cit9CisKK2lubGluZSBib29sIEpTVmFsdWU6OmlzRG91YmxlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gdGFnKCkgPCBMb3dlc3RUYWc7Cit9CisKK2lubGluZSBib29sIEpTVmFsdWU6OmlzVHJ1
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRhZygpID09IEJvb2xlYW5UYWcgJiYgcGF5bG9hZCgp
OworfQorCitpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0ZhbHNlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gdGFnKCkgPT0gQm9vbGVhblRhZyAmJiAhcGF5bG9hZCgpOworfQorCitpbmxpbmUgdWludDMy
X3QgSlNWYWx1ZTo6dGFnKCkgY29uc3QKK3sKKyAgICByZXR1cm4gdS5hc0JpdHMudGFnOworfQor
ICAgIAoraW5saW5lIGludDMyX3QgSlNWYWx1ZTo6cGF5bG9hZCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIHUuYXNCaXRzLnBheWxvYWQ7Cit9CisgICAgCitpbmxpbmUgaW50MzJfdCBKU1ZhbHVlOjph
c0ludDMyKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNJbnQzMigpKTsKKyAgICByZXR1cm4gdS5h
c0JpdHMucGF5bG9hZDsKK30KKyAgICAKK2lubGluZSBkb3VibGUgSlNWYWx1ZTo6YXNEb3VibGUo
KSBjb25zdAoreworICAgIEFTU0VSVChpc0RvdWJsZSgpKTsKKyAgICByZXR1cm4gdS5hc0RvdWJs
ZTsKK30KKyAgICAKK0FMV0FZU19JTkxJTkUgSlNDZWxsKiBKU1ZhbHVlOjphc0NlbGwoKSBjb25z
dAoreworICAgIEFTU0VSVChpc0NlbGwoKSk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
SlNDZWxsKj4odS5hc0JpdHMucGF5bG9hZCk7Cit9CisKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZTo6
SlNWYWx1ZShFbmNvZGVBc0RvdWJsZVRhZywgZG91YmxlIGQpCit7CisgICAgdS5hc0RvdWJsZSA9
IGQ7Cit9CisKK2lubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKGludCBpKQoreworICAgIHUuYXNCaXRz
LnRhZyA9IEludDMyVGFnOworICAgIHUuYXNCaXRzLnBheWxvYWQgPSBpOworfQorCisjaWYgRU5B
QkxFKExMSU5UX0NfTE9PUCkKK2lubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKGludDMyX3QgdGFnLCBp
bnQzMl90IHBheWxvYWQpCit7CisgICAgdS5hc0JpdHMudGFnID0gdGFnOworICAgIHUuYXNCaXRz
LnBheWxvYWQgPSBwYXlsb2FkOworfQorI2VuZGlmCisKK2lubGluZSBib29sIEpTVmFsdWU6Omlz
TnVtYmVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaXNJbnQzMigpIHx8IGlzRG91YmxlKCk7Cit9
CisKK2lubGluZSBib29sIEpTVmFsdWU6OmlzQm9vbGVhbigpIGNvbnN0Cit7CisgICAgcmV0dXJu
IGlzVHJ1ZSgpIHx8IGlzRmFsc2UoKTsKK30KKworaW5saW5lIGJvb2wgSlNWYWx1ZTo6YXNCb29s
ZWFuKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNCb29sZWFuKCkpOworICAgIHJldHVybiBwYXls
b2FkKCk7Cit9CisKKyNlbHNlIC8vICFVU0UoSlNWQUxVRTMyXzY0KSBpLmUuIFVTRShKU1ZBTFVF
NjQpCisKKy8vIDB4MCBjYW4gbmV2ZXIgb2NjdXIgbmF0dXJhbGx5IGJlY2F1c2UgaXQgaGFzIGEg
dGFnIG9mIDAwLCBpbmRpY2F0aW5nIGEgcG9pbnRlciB2YWx1ZSwgYnV0IGEgcGF5bG9hZCBvZiAw
eDAsIHdoaWNoIGlzIGluIHRoZSAoaW52YWxpZCkgemVybyBwYWdlLgoraW5saW5lIEpTVmFsdWU6
OkpTVmFsdWUoKQoreworICAgIHUuYXNJbnQ2NCA9IFZhbHVlRW1wdHk7Cit9CisKKy8vIDB4NCBj
YW4gbmV2ZXIgb2NjdXIgbmF0dXJhbGx5IGJlY2F1c2UgaXQgaGFzIGEgdGFnIG9mIDAwLCBpbmRp
Y2F0aW5nIGEgcG9pbnRlciB2YWx1ZSwgYnV0IGEgcGF5bG9hZCBvZiAweDQsIHdoaWNoIGlzIGlu
IHRoZSAoaW52YWxpZCkgemVybyBwYWdlLgoraW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoSGFzaFRh
YmxlRGVsZXRlZFZhbHVlVGFnKQoreworICAgIHUuYXNJbnQ2NCA9IFZhbHVlRGVsZXRlZDsKK30K
KworaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoSlNDZWxsKiBwdHIpCit7CisgICAgdS5hc0ludDY0
ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHB0cik7Cit9CisKK2lubGluZSBKU1ZhbHVl
OjpKU1ZhbHVlKGNvbnN0IEpTQ2VsbCogcHRyKQoreworICAgIHUuYXNJbnQ2NCA9IHJlaW50ZXJw
cmV0X2Nhc3Q8dWludHB0cl90Pihjb25zdF9jYXN0PEpTQ2VsbCo+KHB0cikpOworfQorCitpbmxp
bmUgSlNWYWx1ZTo6b3BlcmF0b3IgYm9vbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHUuYXNJbnQ2
NDsKK30KKworaW5saW5lIGJvb2wgSlNWYWx1ZTo6b3BlcmF0b3I9PShjb25zdCBKU1ZhbHVlJiBv
dGhlcikgY29uc3QKK3sKKyAgICByZXR1cm4gdS5hc0ludDY0ID09IG90aGVyLnUuYXNJbnQ2NDsK
K30KKworaW5saW5lIGJvb2wgSlNWYWx1ZTo6b3BlcmF0b3IhPShjb25zdCBKU1ZhbHVlJiBvdGhl
cikgY29uc3QKK3sKKyAgICByZXR1cm4gdS5hc0ludDY0ICE9IG90aGVyLnUuYXNJbnQ2NDsKK30K
KworaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNFbXB0eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHUu
YXNJbnQ2NCA9PSBWYWx1ZUVtcHR5OworfQorCitpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc1VuZGVm
aW5lZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGFzVmFsdWUoKSA9PSBKU1ZhbHVlKEpTVW5kZWZp
bmVkKTsKK30KKworaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNOdWxsKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gYXNWYWx1ZSgpID09IEpTVmFsdWUoSlNOdWxsKTsKK30KKworaW5saW5lIGJvb2wgSlNW
YWx1ZTo6aXNUcnVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gYXNWYWx1ZSgpID09IEpTVmFsdWUo
SlNUcnVlKTsKK30KKworaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNGYWxzZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGFzVmFsdWUoKSA9PSBKU1ZhbHVlKEpTRmFsc2UpOworfQorCitpbmxpbmUgYm9v
bCBKU1ZhbHVlOjphc0Jvb2xlYW4oKSBjb25zdAoreworICAgIEFTU0VSVChpc0Jvb2xlYW4oKSk7
CisgICAgcmV0dXJuIGFzVmFsdWUoKSA9PSBKU1ZhbHVlKEpTVHJ1ZSk7Cit9CisKK2lubGluZSBp
bnQzMl90IEpTVmFsdWU6OmFzSW50MzIoKSBjb25zdAoreworICAgIEFTU0VSVChpc0ludDMyKCkp
OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQzMl90Pih1LmFzSW50NjQpOworfQorCitpbmxp
bmUgYm9vbCBKU1ZhbHVlOjppc0RvdWJsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzTnVtYmVy
KCkgJiYgIWlzSW50MzIoKTsKK30KKworaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoSlNOdWxsVGFn
KQoreworICAgIHUuYXNJbnQ2NCA9IFZhbHVlTnVsbDsKK30KKyAgICAKK2lubGluZSBKU1ZhbHVl
OjpKU1ZhbHVlKEpTVW5kZWZpbmVkVGFnKQoreworICAgIHUuYXNJbnQ2NCA9IFZhbHVlVW5kZWZp
bmVkOworfQorCitpbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShKU1RydWVUYWcpCit7CisgICAgdS5h
c0ludDY0ID0gVmFsdWVUcnVlOworfQorCitpbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShKU0ZhbHNl
VGFnKQoreworICAgIHUuYXNJbnQ2NCA9IFZhbHVlRmFsc2U7Cit9CisKK2lubGluZSBib29sIEpT
VmFsdWU6OmlzVW5kZWZpbmVkT3JOdWxsKCkgY29uc3QKK3sKKyAgICAvLyBVbmRlZmluZWQgYW5k
IG51bGwgc2hhcmUgdGhlIHNhbWUgdmFsdWUsIGJhciB0aGUgJ3VuZGVmaW5lZCcgYml0IGluIHRo
ZSBleHRlbmRlZCB0YWcuCisgICAgcmV0dXJuICh1LmFzSW50NjQgJiB+VGFnQml0VW5kZWZpbmVk
KSA9PSBWYWx1ZU51bGw7Cit9CisKK2lubGluZSBib29sIEpTVmFsdWU6OmlzQm9vbGVhbigpIGNv
bnN0Cit7CisgICAgcmV0dXJuICh1LmFzSW50NjQgJiB+MSkgPT0gVmFsdWVGYWxzZTsKK30KKwor
aW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNDZWxsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gISh1LmFz
SW50NjQgJiBUYWdNYXNrKTsKK30KKworaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNJbnQzMigpIGNv
bnN0Cit7CisgICAgcmV0dXJuICh1LmFzSW50NjQgJiBUYWdUeXBlTnVtYmVyKSA9PSBUYWdUeXBl
TnVtYmVyOworfQorCitpbmxpbmUgaW50NjRfdCByZWludGVycHJldERvdWJsZVRvSW50NjQoZG91
YmxlIHZhbHVlKQoreworICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8aW50NjRfdD4odmFsdWUpOwor
fQoraW5saW5lIGRvdWJsZSByZWludGVycHJldEludDY0VG9Eb3VibGUoaW50NjRfdCB2YWx1ZSkK
K3sKKyAgICByZXR1cm4gYml0d2lzZV9jYXN0PGRvdWJsZT4odmFsdWUpOworfQorCitBTFdBWVNf
SU5MSU5FIEpTVmFsdWU6OkpTVmFsdWUoRW5jb2RlQXNEb3VibGVUYWcsIGRvdWJsZSBkKQorewor
ICAgIHUuYXNJbnQ2NCA9IHJlaW50ZXJwcmV0RG91YmxlVG9JbnQ2NChkKSArIERvdWJsZUVuY29k
ZU9mZnNldDsKK30KKworaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoaW50IGkpCit7CisgICAgdS5h
c0ludDY0ID0gVGFnVHlwZU51bWJlciB8IHN0YXRpY19jYXN0PHVpbnQzMl90PihpKTsKK30KKwor
aW5saW5lIGRvdWJsZSBKU1ZhbHVlOjphc0RvdWJsZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlz
RG91YmxlKCkpOworICAgIHJldHVybiByZWludGVycHJldEludDY0VG9Eb3VibGUodS5hc0ludDY0
IC0gRG91YmxlRW5jb2RlT2Zmc2V0KTsKK30KKworaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNOdW1i
ZXIoKSBjb25zdAoreworICAgIHJldHVybiB1LmFzSW50NjQgJiBUYWdUeXBlTnVtYmVyOworfQor
CitBTFdBWVNfSU5MSU5FIEpTQ2VsbCogSlNWYWx1ZTo6YXNDZWxsKCkgY29uc3QKK3sKKyAgICBB
U1NFUlQoaXNDZWxsKCkpOworICAgIHJldHVybiB1LnB0cjsKK30KKworI2VuZGlmIC8vIFVTRShK
U1ZBTFVFNjQpCisKK2lubGluZSBib29sIEpTVmFsdWU6OmlzU3RyaW5nKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gaXNDZWxsKCkgJiYgYXNDZWxsKCktPmlzU3RyaW5nKCk7Cit9CisKK2lubGluZSBi
b29sIEpTVmFsdWU6OmlzUHJpbWl0aXZlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIWlzQ2VsbCgp
IHx8IGFzQ2VsbCgpLT5pc1N0cmluZygpOworfQorCitpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0dl
dHRlclNldHRlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzQ2VsbCgpICYmIGFzQ2VsbCgpLT5p
c0dldHRlclNldHRlcigpOworfQorCitpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc09iamVjdCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIGlzQ2VsbCgpICYmIGFzQ2VsbCgpLT5pc09iamVjdCgpOworfQor
CitpbmxpbmUgYm9vbCBKU1ZhbHVlOjpnZXRTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBTdHJpbmcm
IHMpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzQ2VsbCgpICYmIGFzQ2VsbCgpLT5nZXRTdHJpbmco
ZXhlYywgcyk7Cit9CisKK2lubGluZSBTdHJpbmcgSlNWYWx1ZTo6Z2V0U3RyaW5nKEV4ZWNTdGF0
ZSogZXhlYykgY29uc3QKK3sKKyAgICByZXR1cm4gaXNDZWxsKCkgPyBhc0NlbGwoKS0+Z2V0U3Ry
aW5nKGV4ZWMpIDogU3RyaW5nKCk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBCYXNlPiBTdHJp
bmcgSGFuZGxlQ29udmVydGVyPEJhc2UsIFVua25vd24+OjpnZXRTdHJpbmcoRXhlY1N0YXRlKiBl
eGVjKSBjb25zdAoreworICAgIHJldHVybiBqc1ZhbHVlKCkuZ2V0U3RyaW5nKGV4ZWMpOworfQor
CitpbmxpbmUgSlNPYmplY3QqIEpTVmFsdWU6OmdldE9iamVjdCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIGlzQ2VsbCgpID8gYXNDZWxsKCktPmdldE9iamVjdCgpIDogMDsKK30KKworQUxXQVlTX0lO
TElORSBib29sIEpTVmFsdWU6OmdldFVJbnQzMih1aW50MzJfdCYgdikgY29uc3QKK3sKKyAgICBp
ZiAoaXNJbnQzMigpKSB7CisgICAgICAgIGludDMyX3QgaSA9IGFzSW50MzIoKTsKKyAgICAgICAg
diA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihpKTsKKyAgICAgICAgcmV0dXJuIGkgPj0gMDsKKyAg
ICB9CisgICAgaWYgKGlzRG91YmxlKCkpIHsKKyAgICAgICAgZG91YmxlIGQgPSBhc0RvdWJsZSgp
OworICAgICAgICB2ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGQpOworICAgICAgICByZXR1cm4g
diA9PSBkOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2lubGluZSBKU1ZhbHVlIEpT
VmFsdWU6OnRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSogZXhlYywgUHJlZmVycmVkUHJpbWl0aXZlVHlw
ZSBwcmVmZXJyZWRUeXBlKSBjb25zdAoreworICAgIHJldHVybiBpc0NlbGwoKSA/IGFzQ2VsbCgp
LT50b1ByaW1pdGl2ZShleGVjLCBwcmVmZXJyZWRUeXBlKSA6IGFzVmFsdWUoKTsKK30KKworaW5s
aW5lIGJvb2wgSlNWYWx1ZTo6Z2V0UHJpbWl0aXZlTnVtYmVyKEV4ZWNTdGF0ZSogZXhlYywgZG91
YmxlJiBudW1iZXIsIEpTVmFsdWUmIHZhbHVlKQoreworICAgIGlmIChpc0ludDMyKCkpIHsKKyAg
ICAgICAgbnVtYmVyID0gYXNJbnQzMigpOworICAgICAgICB2YWx1ZSA9ICp0aGlzOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgaWYgKGlzRG91YmxlKCkpIHsKKyAgICAgICAgbnVt
YmVyID0gYXNEb3VibGUoKTsKKyAgICAgICAgdmFsdWUgPSAqdGhpczsKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorICAgIGlmIChpc0NlbGwoKSkKKyAgICAgICAgcmV0dXJuIGFzQ2VsbCgp
LT5nZXRQcmltaXRpdmVOdW1iZXIoZXhlYywgbnVtYmVyLCB2YWx1ZSk7CisgICAgaWYgKGlzVHJ1
ZSgpKSB7CisgICAgICAgIG51bWJlciA9IDEuMDsKKyAgICAgICAgdmFsdWUgPSAqdGhpczsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGlmIChpc0ZhbHNlKCkgfHwgaXNOdWxsKCkp
IHsKKyAgICAgICAgbnVtYmVyID0gMC4wOworICAgICAgICB2YWx1ZSA9ICp0aGlzOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgQVNTRVJUKGlzVW5kZWZpbmVkKCkpOworICAgIG51
bWJlciA9IFFOYU47CisgICAgdmFsdWUgPSAqdGhpczsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
QUxXQVlTX0lOTElORSBkb3VibGUgSlNWYWx1ZTo6dG9OdW1iZXIoRXhlY1N0YXRlKiBleGVjKSBj
b25zdAoreworICAgIGlmIChpc0ludDMyKCkpCisgICAgICAgIHJldHVybiBhc0ludDMyKCk7Cisg
ICAgaWYgKGlzRG91YmxlKCkpCisgICAgICAgIHJldHVybiBhc0RvdWJsZSgpOworICAgIHJldHVy
biB0b051bWJlclNsb3dDYXNlKGV4ZWMpOworfQorCitpbmxpbmUgSlNPYmplY3QqIEpTVmFsdWU6
OnRvT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICByZXR1cm4gaXNDZWxsKCkg
PyBhc0NlbGwoKS0+dG9PYmplY3QoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSA6
IHRvT2JqZWN0U2xvd0Nhc2UoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKK30K
KworaW5saW5lIEpTT2JqZWN0KiBKU1ZhbHVlOjp0b09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzQ2VsbCgp
ID8gYXNDZWxsKCktPnRvT2JqZWN0KGV4ZWMsIGdsb2JhbE9iamVjdCkgOiB0b09iamVjdFNsb3dD
YXNlKGV4ZWMsIGdsb2JhbE9iamVjdCk7Cit9CisKK2lubGluZSBib29sIEpTVmFsdWU6OmlzRnVu
Y3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiBpc0NlbGwoKSAmJiAoYXNDZWxsKCktPmluaGVy
aXRzKCZKU0Z1bmN0aW9uOjpzX2luZm8pIHx8IGFzQ2VsbCgpLT5pbmhlcml0cygmSW50ZXJuYWxG
dW5jdGlvbjo6c19pbmZvKSk7Cit9CisKKy8vIHRoaXMgbWV0aG9kIGlzIGhlcmUgdG8gYmUgYWZ0
ZXIgdGhlIGlubGluZSBkZWNsYXJhdGlvbiBvZiBKU0NlbGw6OmluaGVyaXRzCitpbmxpbmUgYm9v
bCBKU1ZhbHVlOjppbmhlcml0cyhjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbykgY29uc3QKK3sK
KyAgICByZXR1cm4gaXNDZWxsKCkgJiYgYXNDZWxsKCktPmluaGVyaXRzKGNsYXNzSW5mbyk7Cit9
CisKK2lubGluZSBKU09iamVjdCogSlNWYWx1ZTo6dG9UaGlzT2JqZWN0KEV4ZWNTdGF0ZSogZXhl
YykgY29uc3QKK3sKKyAgICByZXR1cm4gaXNDZWxsKCkgPyBhc0NlbGwoKS0+bWV0aG9kVGFibGUo
KS0+dG9UaGlzT2JqZWN0KGFzQ2VsbCgpLCBleGVjKSA6IHRvVGhpc09iamVjdFNsb3dDYXNlKGV4
ZWMpOworfQorCitpbmxpbmUgSlNWYWx1ZSBKU1ZhbHVlOjpnZXQoRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdAoreworICAgIFByb3BlcnR5U2xvdCBzbG90
KGFzVmFsdWUoKSk7CisgICAgcmV0dXJuIGdldChleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwor
fQorCitpbmxpbmUgSlNWYWx1ZSBKU1ZhbHVlOjpnZXQoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpIGNvbnN0Cit7CisgICAgaWYg
KFVOTElLRUxZKCFpc0NlbGwoKSkpIHsKKyAgICAgICAgSlNPYmplY3QqIHByb3RvdHlwZSA9IHN5
bnRoZXNpemVQcm90b3R5cGUoZXhlYyk7CisgICAgICAgIGlmICghcHJvdG90eXBlLT5nZXRQcm9w
ZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KSkKKyAgICAgICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOworICAgICAgICByZXR1cm4gc2xvdC5nZXRWYWx1ZShleGVjLCBwcm9wZXJ0
eU5hbWUpOworICAgIH0KKyAgICBKU0NlbGwqIGNlbGwgPSBhc0NlbGwoKTsKKyAgICB3aGlsZSAo
dHJ1ZSkgeworICAgICAgICBpZiAoY2VsbC0+ZmFzdEdldE93blByb3BlcnR5U2xvdChleGVjLCBw
cm9wZXJ0eU5hbWUsIHNsb3QpKQorICAgICAgICAgICAgcmV0dXJuIHNsb3QuZ2V0VmFsdWUoZXhl
YywgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSBhc09iamVjdChj
ZWxsKS0+cHJvdG90eXBlKCk7CisgICAgICAgIGlmICghcHJvdG90eXBlLmlzT2JqZWN0KCkpCisg
ICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICAgICAgY2VsbCA9IGFzT2JqZWN0
KHByb3RvdHlwZSk7CisgICAgfQorfQorCitpbmxpbmUgSlNWYWx1ZSBKU1ZhbHVlOjpnZXQoRXhl
Y1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpIGNvbnN0Cit7CisgICAgUHJvcGVy
dHlTbG90IHNsb3QoYXNWYWx1ZSgpKTsKKyAgICByZXR1cm4gZ2V0KGV4ZWMsIHByb3BlcnR5TmFt
ZSwgc2xvdCk7Cit9CisKK2lubGluZSBKU1ZhbHVlIEpTVmFsdWU6OmdldChFeGVjU3RhdGUqIGV4
ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KSBjb25zdAorewor
ICAgIGlmIChVTkxJS0VMWSghaXNDZWxsKCkpKSB7CisgICAgICAgIEpTT2JqZWN0KiBwcm90b3R5
cGUgPSBzeW50aGVzaXplUHJvdG90eXBlKGV4ZWMpOworICAgICAgICBpZiAoIXByb3RvdHlwZS0+
Z2V0UHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCkpCisgICAgICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICAgICAgcmV0dXJuIHNsb3QuZ2V0VmFsdWUoZXhlYywg
cHJvcGVydHlOYW1lKTsKKyAgICB9CisgICAgSlNDZWxsKiBjZWxsID0gY29uc3RfY2FzdDxKU0Nl
bGwqPihhc0NlbGwoKSk7CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgaWYgKGNlbGwtPm1l
dGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoY2VsbCwgZXhlYywgcHJvcGVy
dHlOYW1lLCBzbG90KSkKKyAgICAgICAgICAgIHJldHVybiBzbG90LmdldFZhbHVlKGV4ZWMsIHBy
b3BlcnR5TmFtZSk7CisgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gYXNPYmplY3QoY2VsbCkt
PnByb3RvdHlwZSgpOworICAgICAgICBpZiAoIXByb3RvdHlwZS5pc09iamVjdCgpKQorICAgICAg
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgICAgIGNlbGwgPSBwcm90b3R5cGUuYXND
ZWxsKCk7CisgICAgfQorfQorCitpbmxpbmUgdm9pZCBKU1ZhbHVlOjpwdXQoRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmIHNsb3QpCit7CisgICAgaWYgKFVOTElLRUxZKCFpc0NlbGwoKSkpIHsKKyAgICAgICAg
cHV0VG9QcmltaXRpdmUoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgYXNDZWxsKCktPm1ldGhvZFRhYmxlKCktPnB1dChhc0NlbGwo
KSwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7Cit9CisKK2lubGluZSB2b2lkIEpT
VmFsdWU6OnB1dEJ5SW5kZXgoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCit7CisgICAgaWYgKFVOTElLRUxZKCFp
c0NlbGwoKSkpIHsKKyAgICAgICAgcHV0VG9QcmltaXRpdmVCeUluZGV4KGV4ZWMsIHByb3BlcnR5
TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBh
c0NlbGwoKS0+bWV0aG9kVGFibGUoKS0+cHV0QnlJbmRleChhc0NlbGwoKSwgZXhlYywgcHJvcGVy
dHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOworfQorCitpbmxpbmUgSlNWYWx1ZSBKU1ZhbHVl
OjpzdHJ1Y3R1cmVPclVuZGVmaW5lZCgpIGNvbnN0Cit7CisgICAgaWYgKGlzQ2VsbCgpKQorICAg
ICAgICByZXR1cm4gSlNWYWx1ZShhc0NlbGwoKS0+c3RydWN0dXJlKCkpOworICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOworfQorCisvLyBFQ01BIDExLjkuMworaW5saW5lIGJvb2wgSlNWYWx1ZTo6
ZXF1YWwoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQoreworICAgIGlm
ICh2MS5pc0ludDMyKCkgJiYgdjIuaXNJbnQzMigpKQorICAgICAgICByZXR1cm4gdjEgPT0gdjI7
CisKKyAgICByZXR1cm4gZXF1YWxTbG93Q2FzZShleGVjLCB2MSwgdjIpOworfQorCitBTFdBWVNf
SU5MSU5FIGJvb2wgSlNWYWx1ZTo6ZXF1YWxTbG93Q2FzZUlubGluZShFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCit7CisgICAgZG8geworICAgICAgICBpZiAodjEuaXNO
dW1iZXIoKSAmJiB2Mi5pc051bWJlcigpKQorICAgICAgICAgICAgcmV0dXJuIHYxLmFzTnVtYmVy
KCkgPT0gdjIuYXNOdW1iZXIoKTsKKworICAgICAgICBib29sIHMxID0gdjEuaXNTdHJpbmcoKTsK
KyAgICAgICAgYm9vbCBzMiA9IHYyLmlzU3RyaW5nKCk7CisgICAgICAgIGlmIChzMSAmJiBzMikK
KyAgICAgICAgICAgIHJldHVybiBhc1N0cmluZyh2MSktPnZhbHVlKGV4ZWMpID09IGFzU3RyaW5n
KHYyKS0+dmFsdWUoZXhlYyk7CisKKyAgICAgICAgaWYgKHYxLmlzVW5kZWZpbmVkT3JOdWxsKCkp
IHsKKyAgICAgICAgICAgIGlmICh2Mi5pc1VuZGVmaW5lZE9yTnVsbCgpKQorICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgaWYgKCF2Mi5pc0NlbGwoKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICByZXR1cm4gdjIuYXNDZWxsKCktPnN0
cnVjdHVyZSgpLT5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkKGV4ZWMtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAodjIuaXNVbmRlZmluZWRPck51bGwoKSkg
eworICAgICAgICAgICAgaWYgKCF2MS5pc0NlbGwoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICByZXR1cm4gdjEuYXNDZWxsKCktPnN0cnVjdHVyZSgpLT5tYXNx
dWVyYWRlc0FzVW5kZWZpbmVkKGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7CisgICAgICAg
IH0KKworICAgICAgICBpZiAodjEuaXNPYmplY3QoKSkgeworICAgICAgICAgICAgaWYgKHYyLmlz
T2JqZWN0KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHYxID09IHYyOworICAgICAgICAgICAg
SlNWYWx1ZSBwMSA9IHYxLnRvUHJpbWl0aXZlKGV4ZWMpOworICAgICAgICAgICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgIHYxID0gcDE7CisgICAgICAgICAgICBpZiAodjEuaXNJbnQzMigpICYmIHYyLmlzSW50MzIo
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdjEgPT0gdjI7CisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh2Mi5pc09iamVjdCgpKSB7CisgICAgICAgICAg
ICBKU1ZhbHVlIHAyID0gdjIudG9QcmltaXRpdmUoZXhlYyk7CisgICAgICAgICAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgdjIgPSBwMjsKKyAgICAgICAgICAgIGlmICh2MS5pc0ludDMyKCkgJiYgdjIuaXNJbnQz
MigpKQorICAgICAgICAgICAgICAgIHJldHVybiB2MSA9PSB2MjsKKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHMxIHx8IHMyKSB7CisgICAgICAgICAgICBk
b3VibGUgZDEgPSB2MS50b051bWJlcihleGVjKTsKKyAgICAgICAgICAgIGRvdWJsZSBkMiA9IHYy
LnRvTnVtYmVyKGV4ZWMpOworICAgICAgICAgICAgcmV0dXJuIGQxID09IGQyOworICAgICAgICB9
CisKKyAgICAgICAgaWYgKHYxLmlzQm9vbGVhbigpKSB7CisgICAgICAgICAgICBpZiAodjIuaXNO
dW1iZXIoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPih2MS5h
c0Jvb2xlYW4oKSkgPT0gdjIuYXNOdW1iZXIoKTsKKyAgICAgICAgfSBlbHNlIGlmICh2Mi5pc0Jv
b2xlYW4oKSkgeworICAgICAgICAgICAgaWYgKHYxLmlzTnVtYmVyKCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIHYxLmFzTnVtYmVyKCkgPT0gc3RhdGljX2Nhc3Q8ZG91YmxlPih2Mi5hc0Jvb2xl
YW4oKSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gdjEgPT0gdjI7CisgICAgfSB3aGls
ZSAodHJ1ZSk7Cit9CisKKy8vIEVDTUEgMTEuOS4zCitBTFdBWVNfSU5MSU5FIGJvb2wgSlNWYWx1
ZTo6c3RyaWN0RXF1YWxTbG93Q2FzZUlubGluZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdjEs
IEpTVmFsdWUgdjIpCit7CisgICAgQVNTRVJUKHYxLmlzQ2VsbCgpICYmIHYyLmlzQ2VsbCgpKTsK
KworICAgIGlmICh2MS5hc0NlbGwoKS0+aXNTdHJpbmcoKSAmJiB2Mi5hc0NlbGwoKS0+aXNTdHJp
bmcoKSkKKyAgICAgICAgcmV0dXJuIGFzU3RyaW5nKHYxKS0+dmFsdWUoZXhlYykgPT0gYXNTdHJp
bmcodjIpLT52YWx1ZShleGVjKTsKKworICAgIHJldHVybiB2MSA9PSB2MjsKK30KKworaW5saW5l
IGJvb2wgSlNWYWx1ZTo6c3RyaWN0RXF1YWwoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHYxLCBK
U1ZhbHVlIHYyKQoreworICAgIGlmICh2MS5pc0ludDMyKCkgJiYgdjIuaXNJbnQzMigpKQorICAg
ICAgICByZXR1cm4gdjEgPT0gdjI7CisKKyAgICBpZiAodjEuaXNOdW1iZXIoKSAmJiB2Mi5pc051
bWJlcigpKQorICAgICAgICByZXR1cm4gdjEuYXNOdW1iZXIoKSA9PSB2Mi5hc051bWJlcigpOwor
CisgICAgaWYgKCF2MS5pc0NlbGwoKSB8fCAhdjIuaXNDZWxsKCkpCisgICAgICAgIHJldHVybiB2
MSA9PSB2MjsKKworICAgIHJldHVybiBzdHJpY3RFcXVhbFNsb3dDYXNlSW5saW5lKGV4ZWMsIHYx
LCB2Mik7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gSlNWYWx1ZUlubGlu
ZXNfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5s
aW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pT
VmFsdWVJbmxpbmVzLmgJKHJldmlzaW9uIDE0MDE5NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDkgKzI3
LDkgQEAKICNkZWZpbmUgSlNWYWx1ZUlubGluZXNfaAogCiAjaW5jbHVkZSAiSW50ZXJuYWxGdW5j
dGlvbi5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU0NlbGxJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgotI2luY2x1ZGUgIkpTVmFsdWUuaCIKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsRGF0YS5oCShyZXZpc2lvbiAxNDAzNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbERhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsOCArMzYsOCBAQAog
I2luY2x1ZGUgIkludHJpbnNpYy5oIgogI2luY2x1ZGUgIkpJVFRodW5rcy5oIgogI2luY2x1ZGUg
IkpJVFRodW5rcy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU0xvY2su
aCIKLSNpbmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiTExJbnREYXRhLmgiCiAjaW5jbHVk
ZSAiTnVtZXJpY1N0cmluZ3MuaCIKICNpbmNsdWRlICJQcm9maWxlckRhdGFiYXNlLmgiCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
CShyZXZpc2lvbiAxNDAzNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRl
ICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgogI2luY2x1ZGUgIkpT
Qm91bmRGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSlNDYWxsYmFja0NvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSlNDYWxsYmFja0Z1bmN0aW9u
LmgiCiAjaW5jbHVkZSAiSlNDYWxsYmFja09iamVjdC5oIgpAQCAtNTcsNyArNTgsNiBAQAogI2lu
Y2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkpTTmFtZVNjb3BlLmgiCiAjaW5jbHVkZSAiSlNP
Tk9iamVjdC5oIgotI2luY2x1ZGUgIkpTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNXaXRo
U2NvcGUuaCIKICNpbmNsdWRlICJMZWdhY3lQcm9maWxlci5oIgogI2luY2x1ZGUgIkxvb2t1cC5o
IgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5j
dGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdEZ1bmN0aW9ucy5oCShyZXZpc2lvbiAxNDAzNDYpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNCw3ICsyNCw3IEBACiAjaWZuZGVmIEpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zX2gKICNk
ZWZpbmUgSlNHbG9iYWxPYmplY3RGdW5jdGlvbnNfaAogCi0jaW5jbHVkZSAiSlNWYWx1ZS5oIgor
I2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlIDx3dGYvdW5pY29kZS9Vbmljb2RlLmg+
CiAKIG5hbWVzcGFjZSBKU0MgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTdHJpbmdKb2luZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N0cmluZ0pvaW5lci5oCShyZXZpc2lvbiAxNDAzNDYpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0pvaW5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3
ICsyNiw3IEBACiAjaWZuZGVmIEpTU3RyaW5nSm9pbmVyX2gKICNkZWZpbmUgSlNTdHJpbmdKb2lu
ZXJfaAogCi0jaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuY3BwCShyZXZpc2lv
biAxNDAzNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSwzMjAgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKEMpIDE5
OTktMjAwMSBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykg
MjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQotICogIENvcHlyaWdodCAoQykgMjAwMywg
MjAwNywgMjAwOCwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAg
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICoK
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSlNWYWx1ZS5oIgotCi0jaW5j
bHVkZSAiQm9vbGVhbkNvbnN0cnVjdG9yLmgiCi0jaW5jbHVkZSAiQm9vbGVhblByb3RvdHlwZS5o
IgotI2luY2x1ZGUgIkVycm9yLmgiCi0jaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgotI2lu
Y2x1ZGUgIkdldHRlclNldHRlci5oIgotI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCi0jaW5j
bHVkZSAiSlNGdW5jdGlvbi5oIgotI2luY2x1ZGUgIkpTTm90QW5PYmplY3QuaCIKLSNpbmNsdWRl
ICJKU1ZhbHVlSW5saW5lcy5oIgotI2luY2x1ZGUgIk51bWJlck9iamVjdC5oIgotI2luY2x1ZGUg
PHd0Zi9NYXRoRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgotCi1uYW1l
c3BhY2UgSlNDIHsKLQotc3RhdGljIGNvbnN0IGRvdWJsZSBEMzIgPSA0Mjk0OTY3Mjk2LjA7Ci0K
LS8vIEVDTUEgOS40Ci1kb3VibGUgSlNWYWx1ZTo6dG9JbnRlZ2VyKEV4ZWNTdGF0ZSogZXhlYykg
Y29uc3QKLXsKLSAgICBpZiAoaXNJbnQzMigpKQotICAgICAgICByZXR1cm4gYXNJbnQzMigpOwot
ICAgIGRvdWJsZSBkID0gdG9OdW1iZXIoZXhlYyk7Ci0gICAgcmV0dXJuIGlzbmFuKGQpID8gMC4w
IDogdHJ1bmMoZCk7Ci19Ci0KLWRvdWJsZSBKU1ZhbHVlOjp0b0ludGVnZXJQcmVzZXJ2ZU5hTihF
eGVjU3RhdGUqIGV4ZWMpIGNvbnN0Ci17Ci0gICAgaWYgKGlzSW50MzIoKSkKLSAgICAgICAgcmV0
dXJuIGFzSW50MzIoKTsKLSAgICByZXR1cm4gdHJ1bmModG9OdW1iZXIoZXhlYykpOwotfQotCi1k
b3VibGUgSlNWYWx1ZTo6dG9OdW1iZXJTbG93Q2FzZShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Ci17
Ci0gICAgQVNTRVJUKCFpc0ludDMyKCkgJiYgIWlzRG91YmxlKCkpOwotICAgIGlmIChpc0NlbGwo
KSkKLSAgICAgICAgcmV0dXJuIGFzQ2VsbCgpLT50b051bWJlcihleGVjKTsKLSAgICBpZiAoaXNU
cnVlKCkpCi0gICAgICAgIHJldHVybiAxLjA7Ci0gICAgcmV0dXJuIGlzVW5kZWZpbmVkKCkgPyBR
TmFOIDogMDsgLy8gbnVsbCBhbmQgZmFsc2UgYm90aCBjb252ZXJ0IHRvIDAuCi19Ci0KLUpTT2Jq
ZWN0KiBKU1ZhbHVlOjp0b09iamVjdFNsb3dDYXNlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKLXsKLSAgICBBU1NFUlQoIWlzQ2VsbCgpKTsKLQot
ICAgIGlmIChpc0ludDMyKCkgfHwgaXNEb3VibGUoKSkKLSAgICAgICAgcmV0dXJuIGNvbnN0cnVj
dE51bWJlcihleGVjLCBnbG9iYWxPYmplY3QsIGFzVmFsdWUoKSk7Ci0gICAgaWYgKGlzVHJ1ZSgp
IHx8IGlzRmFsc2UoKSkKLSAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEJvb2xlYW5Gcm9tSW1tZWRp
YXRlQm9vbGVhbihleGVjLCBnbG9iYWxPYmplY3QsIGFzVmFsdWUoKSk7Ci0KLSAgICBBU1NFUlQo
aXNVbmRlZmluZWRPck51bGwoKSk7Ci0gICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVOb3RBbk9i
amVjdEVycm9yKGV4ZWMsICp0aGlzKSk7Ci0gICAgcmV0dXJuIEpTTm90QW5PYmplY3Q6OmNyZWF0
ZShleGVjKTsKLX0KLQotSlNPYmplY3QqIEpTVmFsdWU6OnRvVGhpc09iamVjdFNsb3dDYXNlKEV4
ZWNTdGF0ZSogZXhlYykgY29uc3QKLXsKLSAgICBBU1NFUlQoIWlzQ2VsbCgpKTsKLQotICAgIGlm
IChpc0ludDMyKCkgfHwgaXNEb3VibGUoKSkKLSAgICAgICAgcmV0dXJuIGNvbnN0cnVjdE51bWJl
cihleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGFzVmFsdWUoKSk7Ci0gICAgaWYg
KGlzVHJ1ZSgpIHx8IGlzRmFsc2UoKSkKLSAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEJvb2xlYW5G
cm9tSW1tZWRpYXRlQm9vbGVhbihleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGFz
VmFsdWUoKSk7Ci0gICAgQVNTRVJUKGlzVW5kZWZpbmVkT3JOdWxsKCkpOwotICAgIHJldHVybiBl
eGVjLT5nbG9iYWxUaGlzVmFsdWUoKTsKLX0KLQotSlNPYmplY3QqIEpTVmFsdWU6OnN5bnRoZXNp
emVQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjKSBjb25zdAotewotICAgIGlmIChpc0NlbGwoKSkg
ewotICAgICAgICBBU1NFUlQoaXNTdHJpbmcoKSk7Ci0gICAgICAgIHJldHVybiBleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCktPnN0cmluZ1Byb3RvdHlwZSgpOwotICAgIH0KLQotICAgIGlmIChp
c051bWJlcigpKQotICAgICAgICByZXR1cm4gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5u
dW1iZXJQcm90b3R5cGUoKTsKLSAgICBpZiAoaXNCb29sZWFuKCkpCi0gICAgICAgIHJldHVybiBl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmJvb2xlYW5Qcm90b3R5cGUoKTsKLQotICAgIEFT
U0VSVChpc1VuZGVmaW5lZE9yTnVsbCgpKTsKLSAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZU5v
dEFuT2JqZWN0RXJyb3IoZXhlYywgKnRoaXMpKTsKLSAgICByZXR1cm4gSlNOb3RBbk9iamVjdDo6
Y3JlYXRlKGV4ZWMpOwotfQotCi0vLyBFQ01BIDguNy4yCi12b2lkIEpTVmFsdWU6OnB1dFRvUHJp
bWl0aXZlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQotewotICAgIEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKLQotICAgIHVuc2lnbmVkIGluZGV4ID0gcHJv
cGVydHlOYW1lLmFzSW5kZXgoKTsKLSAgICBpZiAoaW5kZXggIT0gUHJvcGVydHlOYW1lOjpOb3RB
bkluZGV4KSB7Ci0gICAgICAgIHB1dFRvUHJpbWl0aXZlQnlJbmRleChleGVjLCBpbmRleCwgdmFs
dWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
Ly8gQ2hlY2sgaWYgdGhlcmUgYXJlIGFueSBzZXR0ZXJzIG9yIGdldHRlcnMgaW4gdGhlIHByb3Rv
dHlwZSBjaGFpbgotICAgIEpTT2JqZWN0KiBvYmogPSBzeW50aGVzaXplUHJvdG90eXBlKGV4ZWMp
OwotICAgIEpTVmFsdWUgcHJvdG90eXBlOwotICAgIGlmIChwcm9wZXJ0eU5hbWUgIT0gZXhlYy0+
cHJvcGVydHlOYW1lcygpLnVuZGVyc2NvcmVQcm90bykgewotICAgICAgICBmb3IgKDsgIW9iai0+
c3RydWN0dXJlKCktPmhhc1JlYWRPbmx5T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzRXhjbHVkaW5n
UHJvdG8oKTsgb2JqID0gYXNPYmplY3QocHJvdG90eXBlKSkgewotICAgICAgICAgICAgcHJvdG90
eXBlID0gb2JqLT5wcm90b3R5cGUoKTsKLSAgICAgICAgICAgIGlmIChwcm90b3R5cGUuaXNOdWxs
KCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKLSAgICAgICAg
ICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVy
dHlXcml0ZUVycm9yKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICB9Ci0KLSAgICBmb3IgKDsgOyBvYmogPSBhc09iamVjdChwcm90b3R5cGUp
KSB7Ci0gICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7Ci0gICAgICAgIEpTQ2VsbCogc3BlY2lm
aWNWYWx1ZTsKLSAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gb2JqLT5zdHJ1Y3R1cmUo
KS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1
ZSk7Ci0gICAgICAgIGlmIChvZmZzZXQgIT0gaW52YWxpZE9mZnNldCkgewotICAgICAgICAgICAg
aWYgKGF0dHJpYnV0ZXMgJiBSZWFkT25seSkgewotICAgICAgICAgICAgICAgIGlmIChzbG90Lmlz
U3RyaWN0TW9kZSgpKQotICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0
ZVR5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIEpT
VmFsdWUgZ3MgPSBvYmotPmdldERpcmVjdChvZmZzZXQpOwotICAgICAgICAgICAgaWYgKGdzLmlz
R2V0dGVyU2V0dGVyKCkpIHsKLSAgICAgICAgICAgICAgICBKU09iamVjdCogc2V0dGVyRnVuYyA9
IGFzR2V0dGVyU2V0dGVyKGdzKS0+c2V0dGVyKCk7ICAgICAgICAKLSAgICAgICAgICAgICAgICBp
ZiAoIXNldHRlckZ1bmMpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RN
b2RlKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoInNldHRpbmcgYSBwcm9wZXJ0eSB0aGF0IGhhcyBv
bmx5IGEgZ2V0dGVyIikpKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBDYWxsRGF0YSBjYWxs
RGF0YTsKLSAgICAgICAgICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IHNldHRlckZ1bmMtPm1l
dGhvZFRhYmxlKCktPmdldENhbGxEYXRhKHNldHRlckZ1bmMsIGNhbGxEYXRhKTsKLSAgICAgICAg
ICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwotICAgICAgICAgICAgICAgIGFyZ3Mu
YXBwZW5kKHZhbHVlKTsKLQotICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgV2ViQ29yZSdz
IGdsb2JhbCBvYmplY3QgdGhlbiB3ZSBuZWVkIHRvIHN1YnN0aXR1dGUgdGhlIHNoZWxsLgotICAg
ICAgICAgICAgICAgIGNhbGwoZXhlYywgc2V0dGVyRnVuYywgY2FsbFR5cGUsIGNhbGxEYXRhLCAq
dGhpcywgYXJncyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICAvLyBJZiB0aGVyZSdzIGFuIGV4aXN0aW5nIHByb3BlcnR5IG9uIHRoZSBvYmpl
Y3Qgb3Igb25lIG9mIGl0cyAKLSAgICAgICAgICAgIC8vIHByb3RvdHlwZXMgaXQgc2hvdWxkIGJl
IHJlcGxhY2VkLCBzbyBicmVhayBoZXJlLgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LQotICAgICAgICBwcm90b3R5cGUgPSBvYmotPnByb3RvdHlwZSgpOwotICAgICAgICBpZiAocHJv
dG90eXBlLmlzTnVsbCgpKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIAotICAgIGlm
IChzbG90LmlzU3RyaWN0TW9kZSgpKQotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJp
Y3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwotICAgIHJldHVybjsKLX0KLQotdm9p
ZCBKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZUJ5SW5kZXgoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25l
ZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCi17Ci0gICAg
aWYgKHByb3BlcnR5TmFtZSA+IE1BWF9BUlJBWV9JTkRFWCkgewotICAgICAgICBQdXRQcm9wZXJ0
eVNsb3Qgc2xvdChzaG91bGRUaHJvdyk7Ci0gICAgICAgIHB1dFRvUHJpbWl0aXZlKGV4ZWMsIElk
ZW50aWZpZXI6OmZyb20oZXhlYywgcHJvcGVydHlOYW1lKSwgdmFsdWUsIHNsb3QpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIGlmIChzeW50aGVzaXplUHJvdG90eXBlKGV4ZWMp
LT5hdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlRm9yUHJvdG90eXBlKGV4ZWMsICp0
aGlzLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdykpCi0gICAgICAgIHJldHVybjsK
LSAgICAKLSAgICBpZiAoc2hvdWxkVGhyb3cpCi0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMs
IFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7Ci19Ci0KLXZvaWQgSlNWYWx1
ZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAotewotICAgIGlmICghKnRoaXMpCi0gICAg
ICAgIG91dC5wcmludCgiPEpTVmFsdWUoKT4iKTsKLSAgICBlbHNlIGlmIChpc0ludDMyKCkpCi0g
ICAgICAgIG91dC5wcmludGYoIkludDMyOiAlZCIsIGFzSW50MzIoKSk7Ci0gICAgZWxzZSBpZiAo
aXNEb3VibGUoKSkgewotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIG91dC5wcmludGYoIkRv
dWJsZTogJWxsZCwgJWxmIiwgKGxvbmcgbG9uZylyZWludGVycHJldERvdWJsZVRvSW50NjQoYXNE
b3VibGUoKSksIGFzRG91YmxlKCkpOwotI2Vsc2UKLSAgICAgICAgdW5pb24gewotICAgICAgICAg
ICAgZG91YmxlIGFzRG91YmxlOwotICAgICAgICAgICAgdWludDMyX3QgYXNUd29JbnQzMnNbMl07
Ci0gICAgICAgIH0gdTsKLSAgICAgICAgdS5hc0RvdWJsZSA9IGFzRG91YmxlKCk7Ci0gICAgICAg
IG91dC5wcmludGYoIkRvdWJsZTogJTA4eDolMDh4LCAlbGYiLCB1LmFzVHdvSW50MzJzWzFdLCB1
LmFzVHdvSW50MzJzWzBdLCBhc0RvdWJsZSgpKTsKLSNlbmRpZgotICAgIH0gZWxzZSBpZiAoaXND
ZWxsKCkpIHsKLSAgICAgICAgaWYgKGFzQ2VsbCgpLT5pbmhlcml0cygmU3RydWN0dXJlOjpzX2lu
Zm8pKSB7Ci0gICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGpzQ2FzdDxTdHJ1Y3R1
cmUqPihhc0NlbGwoKSk7Ci0gICAgICAgICAgICBvdXQucHJpbnQoCi0gICAgICAgICAgICAgICAg
IlN0cnVjdHVyZTogIiwgUmF3UG9pbnRlcihzdHJ1Y3R1cmUpLCAiOiAiLCBzdHJ1Y3R1cmUtPmNs
YXNzSW5mbygpLT5jbGFzc05hbWUsCi0gICAgICAgICAgICAgICAgIiwgIiwgSW5kZXhpbmdUeXBl
RHVtcChzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZUluY2x1ZGluZ0hpc3RvcnkoKSkpOwotICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgb3V0LnByaW50KCJDZWxsOiAiLCBSYXdQb2ludGVyKGFz
Q2VsbCgpKSk7Ci0gICAgICAgICAgICBpZiAoaXNPYmplY3QoKSAmJiBhc09iamVjdCgqdGhpcykt
PmJ1dHRlcmZseSgpKQotICAgICAgICAgICAgICAgIG91dC5wcmludCgiLT4iLCBSYXdQb2ludGVy
KGFzT2JqZWN0KCp0aGlzKS0+YnV0dGVyZmx5KCkpKTsKLSAgICAgICAgICAgIG91dC5wcmludCgK
LSAgICAgICAgICAgICAgICAiICgiLCBSYXdQb2ludGVyKGFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKSks
ICI6ICIsIGFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSwKLSAg
ICAgICAgICAgICAgICAiLCAiLCBJbmRleGluZ1R5cGVEdW1wKGFzQ2VsbCgpLT5zdHJ1Y3R1cmUo
KS0+aW5kZXhpbmdUeXBlSW5jbHVkaW5nSGlzdG9yeSgpKSwgIikiKTsKLSAgICAgICAgfQotICAg
IH0gZWxzZSBpZiAoaXNUcnVlKCkpCi0gICAgICAgIG91dC5wcmludCgiVHJ1ZSIpOwotICAgIGVs
c2UgaWYgKGlzRmFsc2UoKSkKLSAgICAgICAgb3V0LnByaW50KCJGYWxzZSIpOwotICAgIGVsc2Ug
aWYgKGlzTnVsbCgpKQotICAgICAgICBvdXQucHJpbnQoIk51bGwiKTsKLSAgICBlbHNlIGlmIChp
c1VuZGVmaW5lZCgpKQotICAgICAgICBvdXQucHJpbnQoIlVuZGVmaW5lZCIpOwotICAgIGVsc2UK
LSAgICAgICAgb3V0LnByaW50KCJJTlZBTElEIik7Ci19Ci0KLS8vIFRoaXMgaW4gdGhlIFRvSW50
MzIgb3BlcmF0aW9uIGlzIGRlZmluZWQgaW4gc2VjdGlvbiA5LjUgb2YgdGhlIEVDTUEtMjYyIHNw
ZWMuCi0vLyBOb3RlIHRoYXQgdGhpcyBvcGVyYXRpb24gaXMgaWRlbnRpY2FsIHRvIFRvVUludDMy
IG90aGVyIHRoYW4gdG8gaW50ZXJwcmV0YXRpb24KLS8vIG9mIHRoZSByZXN1bHRpbmcgYml0LXBh
dHRlcm4gKGFzIHN1Y2ggdGhpcyBtZXRvZCBpcyBhbHNvIGNhbGxlZCB0byBpbXBsZW1lbnQKLS8v
IFRvVUludDMyKS4KLS8vCi0vLyBUaGUgb3BlcmF0aW9uIGNhbiBiZSBkZXNjaWJlZCBhcyByb3Vu
ZCB0b3dhcmRzIHplcm8sIHRoZW4gc2VsZWN0IHRoZSAzMiBsZWFzdAotLy8gYml0cyBvZiB0aGUg
cmVzdWx0aW5nIHZhbHVlIGluIDJzLWNvbXBsZW1lbnQgcmVwcmVzZW50YXRpb24uCi1pbnQzMl90
IHRvSW50MzIoZG91YmxlIG51bWJlcikKLXsKLSAgICBpbnQ2NF90IGJpdHMgPSBXVEY6OmJpdHdp
c2VfY2FzdDxpbnQ2NF90PihudW1iZXIpOwotICAgIGludDMyX3QgZXhwID0gKHN0YXRpY19jYXN0
PGludDMyX3Q+KGJpdHMgPj4gNTIpICYgMHg3ZmYpIC0gMHgzZmY7Ci0KLSAgICAvLyBJZiBleHBv
bmVudCA8IDAgdGhlcmUgd2lsbCBiZSBubyBiaXRzIHRvIHRoZSBsZWZ0IG9mIHRoZSBkZWNpbWFs
IHBvaW50Ci0gICAgLy8gYWZ0ZXIgcm91bmRpbmc7IGlmIHRoZSBleHBvbmVudCBpcyA+IDgzIHRo
ZW4gbm8gYml0cyBvZiBwcmVjaXNpb24gY2FuIGJlCi0gICAgLy8gbGVmdCBpbiB0aGUgbG93IDMy
LWJpdCByYW5nZSBvZiB0aGUgcmVzdWx0IChJRUVFLTc1NCBkb3VibGVzIGhhdmUgNTIgYml0cwot
ICAgIC8vIG9mIGZyYWN0aW9uYWwgcHJlY2lzaW9uKS4KLSAgICAvLyBOb3RlIHRoaXMgY2FzZSBo
YW5kbGVzIDAsIC0wLCBhbmQgYWxsIGluZmludGUsIE5hTiwgJiBkZW5vcm1hbCB2YWx1ZS4gCi0g
ICAgaWYgKGV4cCA8IDAgfHwgZXhwID4gODMpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgLy8g
U2VsZWN0IHRoZSBhcHByb3ByaWF0ZSAzMi1iaXRzIGZyb20gdGhlIGZsb2F0aW5nIHBvaW50IG1h
bnRpc3NhLiAgSWYgdGhlCi0gICAgLy8gZXhwb25lbnQgaXMgNTIgdGhlbiB0aGUgYml0cyB3ZSBu
ZWVkIHRvIHNlbGVjdCBhcmUgYWxyZWFkeSBhbGlnbmVkIHRvIHRoZQotICAgIC8vIGxvd2VzdCBi
aXRzIG9mIHRoZSA2NC1iaXQgaW50ZWdlciByZXByZXNlbnRhdGlvbiBvZiB0Z2hlIG51bWJlciwg
bm8gbmVlZAotICAgIC8vIHRvIHNoaWZ0LiAgSWYgdGhlIGV4cG9uZW50IGlzIGdyZWF0ZXIgdGhh
biA1MiB3ZSBuZWVkIHRvIHNoaWZ0IHRoZSB2YWx1ZQotICAgIC8vIGxlZnQgYnkgKGV4cCAtIDUy
KSwgaWYgdGhlIHZhbHVlIGlzIGxlc3MgdGhhbiA1MiB3ZSBuZWVkIHRvIHNoaWZ0IHJpZ2h0Ci0g
ICAgLy8gYWNjb3JkaW5nbHkuCi0gICAgaW50MzJfdCByZXN1bHQgPSAoZXhwID4gNTIpCi0gICAg
ICAgID8gc3RhdGljX2Nhc3Q8aW50MzJfdD4oYml0cyA8PCAoZXhwIC0gNTIpKQotICAgICAgICA6
IHN0YXRpY19jYXN0PGludDMyX3Q+KGJpdHMgPj4gKDUyIC0gZXhwKSk7Ci0KLSAgICAvLyBJRUVF
LTc1NCBkb3VibGUgcHJlY2lzaW9uIHZhbHVlcyBhcmUgc3RvcmVkIG9taXR0aW5nIGFuIGltcGxp
Y2l0IDEgYmVmb3JlCi0gICAgLy8gdGhlIGRlY2ltYWwgcG9pbnQ7IHdlIG5lZWQgdG8gcmVpbnNl
cnQgdGhpcyBub3cuICBXZSBtYXkgYWxzbyB0aGUgc2hpZnRlZAotICAgIC8vIGludmFsaWQgYml0
cyBpbnRvIHRoZSByZXN1bHQgdGhhdCBhcmUgbm90IGEgcGFydCBvZiB0aGUgbWFudGlzc2EgKHRo
ZSBzaWduCi0gICAgLy8gYW5kIGV4cG9uZW50IGJpdHMgZnJvbSB0aGUgZmxvYXRpbmdwb2ludCBy
ZXByZXNlbnRhdGlvbik7IG1hc2sgdGhlc2Ugb3V0LgotICAgIGlmIChleHAgPCAzMikgewotICAg
ICAgICBpbnQzMl90IG1pc3NpbmdPbmUgPSAxIDw8IGV4cDsKLSAgICAgICAgcmVzdWx0ICY9IG1p
c3NpbmdPbmUgLSAxOwotICAgICAgICByZXN1bHQgKz0gbWlzc2luZ09uZTsKLSAgICB9Ci0KLSAg
ICAvLyBJZiB0aGUgaW5wdXQgdmFsdWUgd2FzIG5lZ2F0aXZlICh3ZSBjb3VsZCB0ZXN0IGVpdGhl
ciAnbnVtYmVyJyBvciAnYml0cycsCi0gICAgLy8gYnV0IHRlc3RpbmcgJ2JpdHMnIGlzIGxpa2Vs
eSBmYXN0ZXIpIGludmVydCB0aGUgcmVzdWx0IGFwcHJvcHJpYXRlbHkuCi0gICAgcmV0dXJuIGJp
dHMgPCAwID8gLXJlc3VsdCA6IHJlc3VsdDsKLX0KLQotYm9vbCBKU1ZhbHVlOjppc1ZhbGlkQ2Fs
bGVlKCkKLXsKLSAgICByZXR1cm4gYXNPYmplY3QoYXNDZWxsKCkpLT5nbG9iYWxPYmplY3QoKTsK
LX0KLQotSlNTdHJpbmcqIEpTVmFsdWU6OnRvU3RyaW5nU2xvd0Nhc2UoRXhlY1N0YXRlKiBleGVj
KSBjb25zdAotewotICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERh
dGEoKTsKLSAgICBBU1NFUlQoIWlzU3RyaW5nKCkpOwotICAgIGlmIChpc0ludDMyKCkpCi0gICAg
ICAgIHJldHVybiBqc1N0cmluZygmZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS5udW1lcmljU3RyaW5n
cy5hZGQoYXNJbnQzMigpKSk7Ci0gICAgaWYgKGlzRG91YmxlKCkpCi0gICAgICAgIHJldHVybiBq
c1N0cmluZygmZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS5udW1lcmljU3RyaW5ncy5hZGQoYXNEb3Vi
bGUoKSkpOwotICAgIGlmIChpc1RydWUoKSkKLSAgICAgICAgcmV0dXJuIGdsb2JhbERhdGEuc21h
bGxTdHJpbmdzLnRydWVTdHJpbmcoKTsKLSAgICBpZiAoaXNGYWxzZSgpKQotICAgICAgICByZXR1
cm4gZ2xvYmFsRGF0YS5zbWFsbFN0cmluZ3MuZmFsc2VTdHJpbmcoKTsKLSAgICBpZiAoaXNOdWxs
KCkpCi0gICAgICAgIHJldHVybiBnbG9iYWxEYXRhLnNtYWxsU3RyaW5ncy5udWxsU3RyaW5nKCk7
Ci0gICAgaWYgKGlzVW5kZWZpbmVkKCkpCi0gICAgICAgIHJldHVybiBnbG9iYWxEYXRhLnNtYWxs
U3RyaW5ncy51bmRlZmluZWRTdHJpbmcoKTsKLQotICAgIEFTU0VSVChpc0NlbGwoKSk7Ci0gICAg
SlNWYWx1ZSB2YWx1ZSA9IGFzQ2VsbCgpLT50b1ByaW1pdGl2ZShleGVjLCBQcmVmZXJTdHJpbmcp
OwotICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuIGpzRW1wdHlT
dHJpbmcoZXhlYyk7Ci0gICAgQVNTRVJUKCF2YWx1ZS5pc09iamVjdCgpKTsKLSAgICByZXR1cm4g
dmFsdWUudG9TdHJpbmcoZXhlYyk7Ci19Ci0KLVN0cmluZyBKU1ZhbHVlOjp0b1dURlN0cmluZ1Ns
b3dDYXNlKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKLXsKLSAgICByZXR1cm4gaW5saW5lSlNWYWx1
ZU5vdFN0cmluZ3RvU3RyaW5nKCp0aGlzLCBleGVjKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlND
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCShyZXZpc2lvbiAx
NDAzNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNDk3ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIw
MDEgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDEg
UGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQs
IDIwMDUsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICog
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQot
ICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KLSAqCi0gKi8KLQotI2lmbmRlZiBKU1ZhbHVlX2gKLSNkZWZpbmUgSlNWYWx1ZV9o
Ci0KLSNpbmNsdWRlIDxtYXRoLmg+Ci0jaW5jbHVkZSA8c3RkZGVmLmg+IC8vIGZvciBzaXplX3QK
LSNpbmNsdWRlIDxzdGRpbnQuaD4KLSNpbmNsdWRlIDx3dGYvQWx3YXlzSW5saW5lLmg+Ci0jaW5j
bHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1
ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+Ci0jaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KLSNpbmNs
dWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotCi0vLyBUaGlzIGlz
IHVzZWQgYSBsb3QgdGhyb3VnaG91dCBKYXZhU2NyaXB0Q29yZSBmb3IgZXZlcnl0aGluZyBmcm9t
IHZhbHVlIGJveGluZyB0byBtYXJraW5nCi0vLyB2YWx1ZXMgYXMgYmVpbmcgbWlzc2luZywgc28g
aXQgaXMgdXNlZnVsIHRvIGhhdmUgaXQgYWJicmV2aWF0ZWQuCi0jZGVmaW5lIFFOYU4gKHN0ZDo6
bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCkpCi0KLWNsYXNzIEV4ZWNTdGF0ZTsK
LWNsYXNzIEpTQ2VsbDsKLWNsYXNzIEpTR2xvYmFsRGF0YTsKLWNsYXNzIEpTR2xvYmFsT2JqZWN0
OwotY2xhc3MgSlNPYmplY3Q7Ci1jbGFzcyBKU1N0cmluZzsKLWNsYXNzIFByb3BlcnR5TmFtZTsK
LWNsYXNzIFByb3BlcnR5U2xvdDsKLWNsYXNzIFB1dFByb3BlcnR5U2xvdDsKLSNpZiBFTkFCTEUo
REZHX0pJVCkKLW5hbWVzcGFjZSBERkcgewotY2xhc3MgQXNzZW1ibHlIZWxwZXJzOwotY2xhc3Mg
SklUQ29tcGlsZXI7Ci1jbGFzcyBKSVRDb2RlR2VuZXJhdG9yOwotY2xhc3MgSlNWYWx1ZVNvdXJj
ZTsKLWNsYXNzIE9TUkV4aXRDb21waWxlcjsKLWNsYXNzIFNwZWN1bGF0aXZlSklUOwotfQotI2Vu
ZGlmCi0jaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkKLW5hbWVzcGFjZSBMTEludCB7Ci1jbGFzcyBD
TG9vcDsKLX0KLSNlbmRpZgotCi1zdHJ1Y3QgQ2xhc3NJbmZvOwotc3RydWN0IEluc3RydWN0aW9u
Owotc3RydWN0IE1ldGhvZFRhYmxlOwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3MgV3JpdGVC
YXJyaWVyQmFzZTsKLQotZW51bSBQcmVmZXJyZWRQcmltaXRpdmVUeXBlIHsgTm9QcmVmZXJlbmNl
LCBQcmVmZXJOdW1iZXIsIFByZWZlclN0cmluZyB9OwotCi0KLXR5cGVkZWYgaW50NjRfdCBFbmNv
ZGVkSlNWYWx1ZTsKLSAgICAKLXVuaW9uIEVuY29kZWRWYWx1ZURlc2NyaXB0b3IgewotICAgIGlu
dDY0X3QgYXNJbnQ2NDsKLSNpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgIGRvdWJsZSBhc0RvdWJs
ZTsKLSNlbGlmIFVTRShKU1ZBTFVFNjQpCi0gICAgSlNDZWxsKiBwdHI7Ci0jZW5kaWYKLSAgICAg
ICAgCi0jaWYgQ1BVKEJJR19FTkRJQU4pCi0gICAgc3RydWN0IHsKLSAgICAgICAgaW50MzJfdCB0
YWc7Ci0gICAgICAgIGludDMyX3QgcGF5bG9hZDsKLSAgICB9IGFzQml0czsKLSNlbHNlCi0gICAg
c3RydWN0IHsKLSAgICAgICAgaW50MzJfdCBwYXlsb2FkOwotICAgICAgICBpbnQzMl90IHRhZzsK
LSAgICB9IGFzQml0czsKLSNlbmRpZgotfTsKLQotLy8gVGhpcyBpbXBsZW1lbnRzIFRvSW50MzIs
IGRlZmluZWQgaW4gRUNNQS0yNjIgOS41LgotSlNfRVhQT1JUX1BSSVZBVEUgaW50MzJfdCB0b0lu
dDMyKGRvdWJsZSk7Ci0KLS8vIFRoaXMgaW1wbGVtZW50cyBUb1VJbnQzMiwgZGVmaW5lZCBpbiBF
Q01BLTI2MiA5LjYuCi1pbmxpbmUgdWludDMyX3QgdG9VSW50MzIoZG91YmxlIG51bWJlcikKLXsK
LSAgICAvLyBBcyBjb21tZW50ZWQgaW4gdGhlIHNwZWMsIHRoZSBvcGVyYXRpb24gb2YgVG9JbnQz
MiBhbmQgVG9VaW50MzIgb25seSBkaWZmZXIKLSAgICAvLyBpbiBob3cgdGhlIHJlc3VsdCBpcyBp
bnRlcnByZXRlZDsgc2VlIE5PVEVzIGluIHNlY3Rpb25zIDkuNSBhbmQgOS42LgotICAgIHJldHVy
biB0b0ludDMyKG51bWJlcik7Ci19Ci0KLWNsYXNzIEpTVmFsdWUgewotICAgIGZyaWVuZCBzdHJ1
Y3QgRW5jb2RlZEpTVmFsdWVIYXNoVHJhaXRzOwotICAgIGZyaWVuZCBjbGFzcyBKSVQ7Ci0gICAg
ZnJpZW5kIGNsYXNzIEpJVFN0dWJzOwotICAgIGZyaWVuZCBjbGFzcyBKSVRTdHViQ2FsbDsKLSAg
ICBmcmllbmQgY2xhc3MgSlNJbnRlcmZhY2VKSVQ7Ci0gICAgZnJpZW5kIGNsYXNzIFNwZWNpYWxp
emVkVGh1bmtKSVQ7Ci0jaWYgRU5BQkxFKERGR19KSVQpCi0gICAgZnJpZW5kIGNsYXNzIERGRzo6
QXNzZW1ibHlIZWxwZXJzOwotICAgIGZyaWVuZCBjbGFzcyBERkc6OkpJVENvbXBpbGVyOwotICAg
IGZyaWVuZCBjbGFzcyBERkc6OkpJVENvZGVHZW5lcmF0b3I7Ci0gICAgZnJpZW5kIGNsYXNzIERG
Rzo6SlNWYWx1ZVNvdXJjZTsKLSAgICBmcmllbmQgY2xhc3MgREZHOjpPU1JFeGl0Q29tcGlsZXI7
Ci0gICAgZnJpZW5kIGNsYXNzIERGRzo6U3BlY3VsYXRpdmVKSVQ7Ci0jZW5kaWYKLSNpZiBFTkFC
TEUoTExJTlRfQ19MT09QKQotICAgIGZyaWVuZCBjbGFzcyBMTEludDo6Q0xvb3A7Ci0jZW5kaWYK
LQotcHVibGljOgotI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgZW51bSB7IEludDMyVGFnID0g
ICAgICAgIDB4ZmZmZmZmZmYgfTsKLSAgICBlbnVtIHsgQm9vbGVhblRhZyA9ICAgICAgMHhmZmZm
ZmZmZSB9OwotICAgIGVudW0geyBOdWxsVGFnID0gICAgICAgICAweGZmZmZmZmZkIH07Ci0gICAg
ZW51bSB7IFVuZGVmaW5lZFRhZyA9ICAgIDB4ZmZmZmZmZmMgfTsKLSAgICBlbnVtIHsgQ2VsbFRh
ZyA9ICAgICAgICAgMHhmZmZmZmZmYiB9OwotICAgIGVudW0geyBFbXB0eVZhbHVlVGFnID0gICAw
eGZmZmZmZmZhIH07Ci0gICAgZW51bSB7IERlbGV0ZWRWYWx1ZVRhZyA9IDB4ZmZmZmZmZjkgfTsK
LQotICAgIGVudW0geyBMb3dlc3RUYWcgPSAgRGVsZXRlZFZhbHVlVGFnIH07Ci0jZW5kaWYKLQot
ICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBlbmNvZGUoSlNWYWx1ZSk7Ci0gICAgc3RhdGljIEpT
VmFsdWUgZGVjb2RlKEVuY29kZWRKU1ZhbHVlKTsKLQotICAgIGVudW0gSlNOdWxsVGFnIHsgSlNO
dWxsIH07Ci0gICAgZW51bSBKU1VuZGVmaW5lZFRhZyB7IEpTVW5kZWZpbmVkIH07Ci0gICAgZW51
bSBKU1RydWVUYWcgeyBKU1RydWUgfTsKLSAgICBlbnVtIEpTRmFsc2VUYWcgeyBKU0ZhbHNlIH07
Ci0gICAgZW51bSBFbmNvZGVBc0RvdWJsZVRhZyB7IEVuY29kZUFzRG91YmxlIH07Ci0KLSAgICBK
U1ZhbHVlKCk7Ci0gICAgSlNWYWx1ZShKU051bGxUYWcpOwotICAgIEpTVmFsdWUoSlNVbmRlZmlu
ZWRUYWcpOwotICAgIEpTVmFsdWUoSlNUcnVlVGFnKTsKLSAgICBKU1ZhbHVlKEpTRmFsc2VUYWcp
OwotICAgIEpTVmFsdWUoSlNDZWxsKiBwdHIpOwotICAgIEpTVmFsdWUoY29uc3QgSlNDZWxsKiBw
dHIpOwotCi0gICAgLy8gTnVtYmVycwotICAgIEpTVmFsdWUoRW5jb2RlQXNEb3VibGVUYWcsIGRv
dWJsZSk7Ci0gICAgZXhwbGljaXQgSlNWYWx1ZShkb3VibGUpOwotICAgIGV4cGxpY2l0IEpTVmFs
dWUoY2hhcik7Ci0gICAgZXhwbGljaXQgSlNWYWx1ZSh1bnNpZ25lZCBjaGFyKTsKLSAgICBleHBs
aWNpdCBKU1ZhbHVlKHNob3J0KTsKLSAgICBleHBsaWNpdCBKU1ZhbHVlKHVuc2lnbmVkIHNob3J0
KTsKLSAgICBleHBsaWNpdCBKU1ZhbHVlKGludCk7Ci0gICAgZXhwbGljaXQgSlNWYWx1ZSh1bnNp
Z25lZCk7Ci0gICAgZXhwbGljaXQgSlNWYWx1ZShsb25nKTsKLSAgICBleHBsaWNpdCBKU1ZhbHVl
KHVuc2lnbmVkIGxvbmcpOwotICAgIGV4cGxpY2l0IEpTVmFsdWUobG9uZyBsb25nKTsKLSAgICBl
eHBsaWNpdCBKU1ZhbHVlKHVuc2lnbmVkIGxvbmcgbG9uZyk7Ci0KLSAgICBvcGVyYXRvciBib29s
KCkgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEpTVmFsdWUmIG90aGVyKSBjb25z
dDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgSlNWYWx1ZSYgb3RoZXIpIGNvbnN0OwotCi0g
ICAgYm9vbCBpc0ludDMyKCkgY29uc3Q7Ci0gICAgYm9vbCBpc1VJbnQzMigpIGNvbnN0OwotICAg
IGJvb2wgaXNEb3VibGUoKSBjb25zdDsKLSAgICBib29sIGlzVHJ1ZSgpIGNvbnN0OwotICAgIGJv
b2wgaXNGYWxzZSgpIGNvbnN0OwotCi0gICAgaW50MzJfdCBhc0ludDMyKCkgY29uc3Q7Ci0gICAg
dWludDMyX3QgYXNVSW50MzIoKSBjb25zdDsKLSAgICBkb3VibGUgYXNEb3VibGUoKSBjb25zdDsK
LSAgICBib29sIGFzQm9vbGVhbigpIGNvbnN0OwotICAgIGRvdWJsZSBhc051bWJlcigpIGNvbnN0
OwotCi0gICAgLy8gUXVlcnlpbmcgdGhlIHR5cGUuCi0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7
Ci0gICAgYm9vbCBpc0Z1bmN0aW9uKCkgY29uc3Q7Ci0gICAgYm9vbCBpc1VuZGVmaW5lZCgpIGNv
bnN0OwotICAgIGJvb2wgaXNOdWxsKCkgY29uc3Q7Ci0gICAgYm9vbCBpc1VuZGVmaW5lZE9yTnVs
bCgpIGNvbnN0OwotICAgIGJvb2wgaXNCb29sZWFuKCkgY29uc3Q7Ci0gICAgYm9vbCBpc051bWJl
cigpIGNvbnN0OwotICAgIGJvb2wgaXNTdHJpbmcoKSBjb25zdDsKLSAgICBib29sIGlzUHJpbWl0
aXZlKCkgY29uc3Q7Ci0gICAgYm9vbCBpc0dldHRlclNldHRlcigpIGNvbnN0OwotICAgIGJvb2wg
aXNPYmplY3QoKSBjb25zdDsKLSAgICBib29sIGluaGVyaXRzKGNvbnN0IENsYXNzSW5mbyopIGNv
bnN0OwotICAgICAgICAKLSAgICAvLyBFeHRyYWN0aW5nIHRoZSB2YWx1ZS4KLSAgICBib29sIGdl
dFN0cmluZyhFeGVjU3RhdGUqLCBXVEY6OlN0cmluZyYpIGNvbnN0OwotICAgIFdURjo6U3RyaW5n
IGdldFN0cmluZyhFeGVjU3RhdGUqKSBjb25zdDsgLy8gbnVsbCBzdHJpbmcgaWYgbm90IGEgc3Ry
aW5nCi0gICAgSlNPYmplY3QqIGdldE9iamVjdCgpIGNvbnN0OyAvLyAwIGlmIG5vdCBhbiBvYmpl
Y3QKLQotICAgIC8vIEV4dHJhY3RpbmcgaW50ZWdlciB2YWx1ZXMuCi0gICAgYm9vbCBnZXRVSW50
MzIodWludDMyX3QmKSBjb25zdDsKLSAgICAgICAgCi0gICAgLy8gQmFzaWMgY29udmVyc2lvbnMu
Ci0gICAgSlNWYWx1ZSB0b1ByaW1pdGl2ZShFeGVjU3RhdGUqLCBQcmVmZXJyZWRQcmltaXRpdmVU
eXBlID0gTm9QcmVmZXJlbmNlKSBjb25zdDsKLSAgICBib29sIGdldFByaW1pdGl2ZU51bWJlcihF
eGVjU3RhdGUqLCBkb3VibGUmIG51bWJlciwgSlNWYWx1ZSYpOwotCi0gICAgYm9vbCB0b0Jvb2xl
YW4oRXhlY1N0YXRlKikgY29uc3Q7Ci0KLSAgICAvLyB0b051bWJlciBjb252ZXJzaW9uIGlzIGV4
cGVjdGVkIHRvIGJlIHNpZGUgZWZmZWN0IGZyZWUgaWYgYW4gZXhjZXB0aW9uIGhhcwotICAgIC8v
IGJlZW4gc2V0IGluIHRoZSBFeGVjU3RhdGUgYWxyZWFkeS4KLSAgICBkb3VibGUgdG9OdW1iZXIo
RXhlY1N0YXRlKikgY29uc3Q7Ci0gICAgSlNTdHJpbmcqIHRvU3RyaW5nKEV4ZWNTdGF0ZSopIGNv
bnN0OwotICAgIFdURjo6U3RyaW5nIHRvV1RGU3RyaW5nKEV4ZWNTdGF0ZSopIGNvbnN0OwotICAg
IFdURjo6U3RyaW5nIHRvV1RGU3RyaW5nSW5saW5lKEV4ZWNTdGF0ZSopIGNvbnN0OwotICAgIEpT
T2JqZWN0KiB0b09iamVjdChFeGVjU3RhdGUqKSBjb25zdDsKLSAgICBKU09iamVjdCogdG9PYmpl
Y3QoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKLQotICAgIC8vIEludGVnZXIg
Y29udmVyc2lvbnMuCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgZG91YmxlIHRvSW50ZWdlcihFeGVj
U3RhdGUqKSBjb25zdDsKLSAgICBkb3VibGUgdG9JbnRlZ2VyUHJlc2VydmVOYU4oRXhlY1N0YXRl
KikgY29uc3Q7Ci0gICAgaW50MzJfdCB0b0ludDMyKEV4ZWNTdGF0ZSopIGNvbnN0OwotICAgIHVp
bnQzMl90IHRvVUludDMyKEV4ZWNTdGF0ZSopIGNvbnN0OwotCi0gICAgLy8gRmxvYXRpbmcgcG9p
bnQgY29udmVyc2lvbnMgKHRoaXMgaXMgYSBjb252ZW5pZW5jZSBtZXRob2QgZm9yIHdlYmNvcmU7
Ci0gICAgLy8gc2lnbmxlIHByZWNpc2lvbiBmbG9hdCBpcyBub3QgYSByZXByZXNlbnRhdGlvbiB1
c2VkIGluIEpTIG9yIEpTQykuCi0gICAgZmxvYXQgdG9GbG9hdChFeGVjU3RhdGUqIGV4ZWMpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0Pih0b051bWJlcihleGVjKSk7IH0KLQotICAg
IC8vIE9iamVjdCBvcGVyYXRpb25zLCB3aXRoIHRoZSB0b09iamVjdCBvcGVyYXRpb24gaW5jbHVk
ZWQuCi0gICAgSlNWYWx1ZSBnZXQoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKSBjb25zdDsKLSAg
ICBKU1ZhbHVlIGdldChFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpIGNv
bnN0OwotICAgIEpTVmFsdWUgZ2V0KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSkg
Y29uc3Q7Ci0gICAgSlNWYWx1ZSBnZXQoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmKSBjb25zdDsKLSAgICB2b2lkIHB1dChFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwotICAgIHZvaWQgcHV0VG9QcmltaXRp
dmUoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsK
LSAgICB2b2lkIHB1dFRvUHJpbWl0aXZlQnlJbmRleChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwotICAgIHZvaWQgcHV0QnlJbmRl
eChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxk
VGhyb3cpOwotCi0gICAgSlNPYmplY3QqIHRvVGhpc09iamVjdChFeGVjU3RhdGUqKSBjb25zdDsK
LQotICAgIHN0YXRpYyBib29sIGVxdWFsKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2MSwgSlNW
YWx1ZSB2Mik7Ci0gICAgc3RhdGljIGJvb2wgZXF1YWxTbG93Q2FzZShFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpOwotICAgIHN0YXRpYyBib29sIGVxdWFsU2xvd0Nhc2VJ
bmxpbmUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKTsKLSAgICBzdGF0
aWMgYm9vbCBzdHJpY3RFcXVhbChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdjEsIEpTVmFsdWUg
djIpOwotICAgIHN0YXRpYyBib29sIHN0cmljdEVxdWFsU2xvd0Nhc2UoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKTsKLSAgICBzdGF0aWMgYm9vbCBzdHJpY3RFcXVhbFNs
b3dDYXNlSW5saW5lKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2Mik7Ci0K
LSAgICBib29sIGlzQ2VsbCgpIGNvbnN0OwotICAgIEpTQ2VsbCogYXNDZWxsKCkgY29uc3Q7Ci0g
ICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc1ZhbGlkQ2FsbGVlKCk7Ci0gICAgICAgIAotICAg
IEpTVmFsdWUgc3RydWN0dXJlT3JVbmRlZmluZWQoKSBjb25zdDsKLQotICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwotCi0gICAgSlNfRVhQT1JUX1BS
SVZBVEUgSlNPYmplY3QqIHN5bnRoZXNpemVQcm90b3R5cGUoRXhlY1N0YXRlKikgY29uc3Q7Ci0K
LXByaXZhdGU6Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFQ+IEpTVmFsdWUoV3JpdGVCYXJyaWVyQmFz
ZTxUPik7Ci0KLSAgICBlbnVtIEhhc2hUYWJsZURlbGV0ZWRWYWx1ZVRhZyB7IEhhc2hUYWJsZURl
bGV0ZWRWYWx1ZSB9OwotICAgIEpTVmFsdWUoSGFzaFRhYmxlRGVsZXRlZFZhbHVlVGFnKTsKLQot
ICAgIGlubGluZSBjb25zdCBKU1ZhbHVlIGFzVmFsdWUoKSBjb25zdCB7IHJldHVybiAqdGhpczsg
fQotICAgIEpTX0VYUE9SVF9QUklWQVRFIGRvdWJsZSB0b051bWJlclNsb3dDYXNlKEV4ZWNTdGF0
ZSopIGNvbnN0OwotICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTU3RyaW5nKiB0b1N0cmluZ1Nsb3dD
YXNlKEV4ZWNTdGF0ZSopIGNvbnN0OwotICAgIEpTX0VYUE9SVF9QUklWQVRFIFdURjo6U3RyaW5n
IHRvV1RGU3RyaW5nU2xvd0Nhc2UoRXhlY1N0YXRlKikgY29uc3Q7Ci0gICAgSlNfRVhQT1JUX1BS
SVZBVEUgSlNPYmplY3QqIHRvT2JqZWN0U2xvd0Nhc2UoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmpl
Y3QqKSBjb25zdDsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogdG9UaGlzT2JqZWN0
U2xvd0Nhc2UoRXhlY1N0YXRlKikgY29uc3Q7Ci0KLSNpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAg
IC8qCi0gICAgICogT24gMzItYml0IHBsYXRmb3JtcyBVU0UoSlNWQUxVRTMyXzY0KSBzaG91bGQg
YmUgZGVmaW5lZCwgYW5kIHdlIHVzZSBhIE5hTi1lbmNvZGVkCi0gICAgICogZm9ybSBmb3IgaW1t
ZWRpYXRlcy4KLSAgICAgKgotICAgICAqIFRoZSBlbmNvZGluZyBtYWtlcyB1c2Ugb2YgdW51c2Vk
IE5hTiBzcGFjZSBpbiB0aGUgSUVFRTc1NCByZXByZXNlbnRhdGlvbi4gIEFueSB2YWx1ZQotICAg
ICAqIHdpdGggdGhlIHRvcCAxMyBiaXRzIHNldCByZXByZXNlbnRzIGEgUU5hTiAod2l0aCB0aGUg
c2lnbiBiaXQgc2V0KS4gIFFOYU4gdmFsdWVzCi0gICAgICogY2FuIGVuY29kZSBhIDUxLWJpdCBw
YXlsb2FkLiAgSGFyZHdhcmUgcHJvZHVjZWQgYW5kIEMtbGlicmFyeSBwYXlsb2FkcyB0eXBpY2Fs
bHkKLSAgICAgKiBoYXZlIGEgcGF5bG9hZCBvZiB6ZXJvLiAgV2UgYXNzdW1lIHRoYXQgbm9uLXpl
cm8gcGF5bG9hZHMgYXJlIGF2YWlsYWJsZSB0byBlbmNvZGUKLSAgICAgKiBwb2ludGVyIGFuZCBp
bnRlZ2VyIHZhbHVlcy4gIFNpbmNlIGFueSA2NC1iaXQgYml0IHBhdHRlcm4gd2hlcmUgdGhlIHRv
cCAxNSBiaXRzIGFyZQotICAgICAqIGFsbCBzZXQgcmVwcmVzZW50cyBhIE5hTiB3aXRoIGEgbm9u
LXplcm8gcGF5bG9hZCwgd2UgY2FuIHVzZSB0aGlzIHNwYWNlIGluIHRoZSBOYU4KLSAgICAgKiBy
YW5nZXMgdG8gZW5jb2RlIG90aGVyIHZhbHVlcyAoaG93ZXZlciB0aGVyZSBhcmUgYWxzbyBvdGhl
ciByYW5nZXMgb2YgTmFOIHNwYWNlIHRoYXQKLSAgICAgKiBjb3VsZCBoYXZlIGJlZW4gc2VsZWN0
ZWQpLgotICAgICAqCi0gICAgICogRm9yIEpTVmFsdWVzIHRoYXQgZG8gbm90IGNvbnRhaW4gYSBk
b3VibGUgdmFsdWUsIHRoZSBoaWdoIDMyIGJpdHMgY29udGFpbiB0aGUgdGFnCi0gICAgICogdmFs
dWVzIGxpc3RlZCBpbiB0aGUgZW51bXMgYmVsb3csIHdoaWNoIGFsbCBjb3JyZXNwb25kIHRvIE5h
Ti1zcGFjZS4gSW4gdGhlIGNhc2Ugb2YKLSAgICAgKiBjZWxsLCBpbnRlZ2VyIGFuZCBib29sIHZh
bHVlcyB0aGUgbG93ZXIgMzIgYml0cyAodGhlICdwYXlsb2FkJykgY29udGFpbiB0aGUgcG9pbnRl
cgotICAgICAqIGludGVnZXIgb3IgYm9vbGVhbiB2YWx1ZTsgaW4gdGhlIGNhc2Ugb2YgYWxsIG90
aGVyIHRhZ3MgdGhlIHBheWxvYWQgaXMgMC4KLSAgICAgKi8KLSAgICB1aW50MzJfdCB0YWcoKSBj
b25zdDsKLSAgICBpbnQzMl90IHBheWxvYWQoKSBjb25zdDsKLQotI2lmIEVOQUJMRShMTElOVF9D
X0xPT1ApCi0gICAgLy8gVGhpcyBzaG91bGQgb25seSBiZSB1c2VkIGJ5IHRoZSBMTEludCBDIExv
b3AgaW50ZXJwcmV0ZXIgd2hvIG5lZWRzCi0gICAgLy8gc3ludGhlc2l6ZSBKU1ZhbHVlIGZyb20g
aXRzICJyZWdpc3RlciJzIGhvbGRpbmcgdGFnIGFuZCBwYXlsb2FkCi0gICAgLy8gdmFsdWVzLgot
ICAgIGV4cGxpY2l0IEpTVmFsdWUoaW50MzJfdCB0YWcsIGludDMyX3QgcGF5bG9hZCk7Ci0jZW5k
aWYKLQotI2VsaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAvKgotICAgICAqIE9uIDY0LWJpdCBwbGF0
Zm9ybXMgVVNFKEpTVkFMVUU2NCkgc2hvdWxkIGJlIGRlZmluZWQsIGFuZCB3ZSB1c2UgYSBOYU4t
ZW5jb2RlZAotICAgICAqIGZvcm0gZm9yIGltbWVkaWF0ZXMuCi0gICAgICoKLSAgICAgKiBUaGUg
ZW5jb2RpbmcgbWFrZXMgdXNlIG9mIHVudXNlZCBOYU4gc3BhY2UgaW4gdGhlIElFRUU3NTQgcmVw
cmVzZW50YXRpb24uICBBbnkgdmFsdWUKLSAgICAgKiB3aXRoIHRoZSB0b3AgMTMgYml0cyBzZXQg
cmVwcmVzZW50cyBhIFFOYU4gKHdpdGggdGhlIHNpZ24gYml0IHNldCkuICBRTmFOIHZhbHVlcwot
ICAgICAqIGNhbiBlbmNvZGUgYSA1MS1iaXQgcGF5bG9hZC4gIEhhcmR3YXJlIHByb2R1Y2VkIGFu
ZCBDLWxpYnJhcnkgcGF5bG9hZHMgdHlwaWNhbGx5Ci0gICAgICogaGF2ZSBhIHBheWxvYWQgb2Yg
emVyby4gIFdlIGFzc3VtZSB0aGF0IG5vbi16ZXJvIHBheWxvYWRzIGFyZSBhdmFpbGFibGUgdG8g
ZW5jb2RlCi0gICAgICogcG9pbnRlciBhbmQgaW50ZWdlciB2YWx1ZXMuICBTaW5jZSBhbnkgNjQt
Yml0IGJpdCBwYXR0ZXJuIHdoZXJlIHRoZSB0b3AgMTUgYml0cyBhcmUKLSAgICAgKiBhbGwgc2V0
IHJlcHJlc2VudHMgYSBOYU4gd2l0aCBhIG5vbi16ZXJvIHBheWxvYWQsIHdlIGNhbiB1c2UgdGhp
cyBzcGFjZSBpbiB0aGUgTmFOCi0gICAgICogcmFuZ2VzIHRvIGVuY29kZSBvdGhlciB2YWx1ZXMg
KGhvd2V2ZXIgdGhlcmUgYXJlIGFsc28gb3RoZXIgcmFuZ2VzIG9mIE5hTiBzcGFjZSB0aGF0Ci0g
ICAgICogY291bGQgaGF2ZSBiZWVuIHNlbGVjdGVkKS4KLSAgICAgKgotICAgICAqIFRoaXMgcmFu
Z2Ugb2YgTmFOIHNwYWNlIGlzIHJlcHJlc2VudGVkIGJ5IDY0LWJpdCBudW1iZXJzIGJlZ2luaW5n
IHdpdGggdGhlIDE2LWJpdAotICAgICAqIGhleCBwYXR0ZXJucyAweEZGRkUgYW5kIDB4RkZGRiAt
IHdlIHJlbHkgb24gdGhlIGZhY3QgdGhhdCBubyB2YWxpZCBkb3VibGUtcHJlY2lzaW9uCi0gICAg
ICogbnVtYmVycyB3aWxsIGJlZ2luIGZhbGwgaW4gdGhlc2UgcmFuZ2VzLgotICAgICAqCi0gICAg
ICogVGhlIHRvcCAxNi1iaXRzIGRlbm90ZSB0aGUgdHlwZSBvZiB0aGUgZW5jb2RlZCBKU1ZhbHVl
OgotICAgICAqCi0gICAgICogICAgIFBvaW50ZXIgeyAgMDAwMDpQUFBQOlBQUFA6UFBQUAotICAg
ICAqICAgICAgICAgICAgICAvIDAwMDE6KioqKjoqKioqOioqKioKLSAgICAgKiAgICAgRG91Ymxl
ICB7ICAgICAgICAgLi4uCi0gICAgICogICAgICAgICAgICAgIFwgRkZGRToqKioqOioqKio6Kioq
KgotICAgICAqICAgICBJbnRlZ2VyIHsgIEZGRkY6MDAwMDpJSUlJOklJSUkKLSAgICAgKgotICAg
ICAqIFRoZSBzY2hlbWUgd2UgaGF2ZSBpbXBsZW1lbnRlZCBlbmNvZGVzIGRvdWJsZSBwcmVjaXNp
b24gdmFsdWVzIGJ5IHBlcmZvcm1pbmcgYQotICAgICAqIDY0LWJpdCBpbnRlZ2VyIGFkZGl0aW9u
IG9mIHRoZSB2YWx1ZSAyXjQ4IHRvIHRoZSBudW1iZXIuIEFmdGVyIHRoaXMgbWFuaXB1bGF0aW9u
Ci0gICAgICogbm8gZW5jb2RlZCBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIHdpbGwgYmVnaW4gd2l0
aCB0aGUgcGF0dGVybiAweDAwMDAgb3IgMHhGRkZGLgotICAgICAqIFZhbHVlcyBtdXN0IGJlIGRl
Y29kZWQgYnkgcmV2ZXJzaW5nIHRoaXMgb3BlcmF0aW9uIGJlZm9yZSBzdWJzZXF1ZW50IGZsb2F0
aW5nIHBvaW50Ci0gICAgICogb3BlcmF0aW9ucyBteSBiZSBwZWZvcm1lZC4KLSAgICAgKgotICAg
ICAqIDMyLWJpdCBzaWduZWQgaW50ZWdlcnMgYXJlIG1hcmtlZCB3aXRoIHRoZSAxNi1iaXQgdGFn
IDB4RkZGRi4KLSAgICAgKgotICAgICAqIFRoZSB0YWcgMHgwMDAwIGRlbm90ZXMgYSBwb2ludGVy
LCBvciBhbm90aGVyIGZvcm0gb2YgdGFnZ2VkIGltbWVkaWF0ZS4gQm9vbGVhbiwKLSAgICAgKiBu
dWxsIGFuZCB1bmRlZmluZWQgdmFsdWVzIGFyZSByZXByZXNlbnRlZCBieSBzcGVjaWZpYywgaW52
YWxpZCBwb2ludGVyIHZhbHVlczoKLSAgICAgKgotICAgICAqICAgICBGYWxzZTogICAgIDB4MDYK
LSAgICAgKiAgICAgVHJ1ZTogICAgICAweDA3Ci0gICAgICogICAgIFVuZGVmaW5lZDogMHgwYQot
ICAgICAqICAgICBOdWxsOiAgICAgIDB4MDIKLSAgICAgKgotICAgICAqIFRoZXNlIHZhbHVlcyBo
YXZlIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczoKLSAgICAgKiAtIEJpdCAxIChUYWdCaXRUeXBl
T3RoZXIpIGlzIHNldCBmb3IgYWxsIGZvdXIgdmFsdWVzLCBhbGxvd2luZyByZWFsIHBvaW50ZXJz
IHRvIGJlCi0gICAgICogICBxdWlja2x5IGRpc3Rpbmd1aXNoZWQgZnJvbSBhbGwgaW1tZWRpYXRl
IHZhbHVlcywgaW5jbHVkaW5nIHRoZXNlIGludmFsaWQgcG9pbnRlcnMuCi0gICAgICogLSBXaXRo
IGJpdCAzIGlzIG1hc2tlZCBvdXQgKFRhZ0JpdFVuZGVmaW5lZCkgVW5kZWZpbmVkIGFuZCBOdWxs
IHNoYXJlIHRoZQotICAgICAqICAgc2FtZSB2YWx1ZSwgYWxsb3dpbmcgbnVsbCAmIHVuZGVmaW5l
ZCB0byBiZSBxdWlja2x5IGRldGVjdGVkLgotICAgICAqCi0gICAgICogTm8gdmFsaWQgSlNWYWx1
ZSB3aWxsIGhhdmUgdGhlIGJpdCBwYXR0ZXJuIDB4MCwgdGhpcyBpcyB1c2VkIHRvIHJlcHJlc2Vu
dCBhcnJheQotICAgICAqIGhvbGVzLCBhbmQgYXMgYSBDKysgJ25vIHZhbHVlJyByZXN1bHQgKGUu
Zy4gSlNWYWx1ZSgpIGhhcyBhbiBpbnRlcm5hbCB2YWx1ZSBvZiAwKS4KLSAgICAgKi8KLQotICAg
IC8vIFRoZXNlIHZhbHVlcyBhcmUgI2RlZmluZXMgc2luY2UgdXNpbmcgc3RhdGljIGNvbnN0IGlu
dGVnZXJzIGhlcmUgaXMgYSB+MSUgcmVncmVzc2lvbiEKLQotICAgIC8vIFRoaXMgdmFsdWUgaXMg
Ml40OCwgdXNlZCB0byBlbmNvZGUgZG91YmxlcyBzdWNoIHRoYXQgdGhlIGVuY29kZWQgdmFsdWUg
d2lsbCBiZWdpbgotICAgIC8vIHdpdGggYSAxNi1iaXQgcGF0dGVybiB3aXRoaW4gdGhlIHJhbmdl
IDB4MDAwMS4uMHhGRkZFLgotICAgICNkZWZpbmUgRG91YmxlRW5jb2RlT2Zmc2V0IDB4MTAwMDAw
MDAwMDAwMGxsCi0gICAgLy8gSWYgYWxsIGJpdHMgaW4gdGhlIG1hc2sgYXJlIHNldCwgdGhpcyBp
bmRpY2F0ZXMgYW4gaW50ZWdlciBudW1iZXIsCi0gICAgLy8gaWYgYW55IGJ1dCBub3QgYWxsIGFy
ZSBzZXQgdGhpcyB2YWx1ZSBpcyBhIGRvdWJsZSBwcmVjaXNpb24gbnVtYmVyLgotICAgICNkZWZp
bmUgVGFnVHlwZU51bWJlciAweGZmZmYwMDAwMDAwMDAwMDBsbAotCi0gICAgLy8gQWxsIG5vbi1u
dW1lcmljIChib29sLCBudWxsLCB1bmRlZmluZWQpIGltbWVkaWF0ZXMgaGF2ZSBiaXQgMiBzZXQu
Ci0gICAgI2RlZmluZSBUYWdCaXRUeXBlT3RoZXIgMHgybGwKLSAgICAjZGVmaW5lIFRhZ0JpdEJv
b2wgICAgICAweDRsbAotICAgICNkZWZpbmUgVGFnQml0VW5kZWZpbmVkIDB4OGxsCi0gICAgLy8g
Q29tYmluZWQgaW50ZWdlciB2YWx1ZSBmb3Igbm9uLW51bWVyaWMgaW1tZWRpYXRlcy4KLSAgICAj
ZGVmaW5lIFZhbHVlRmFsc2UgICAgIChUYWdCaXRUeXBlT3RoZXIgfCBUYWdCaXRCb29sIHwgZmFs
c2UpCi0gICAgI2RlZmluZSBWYWx1ZVRydWUgICAgICAoVGFnQml0VHlwZU90aGVyIHwgVGFnQml0
Qm9vbCB8IHRydWUpCi0gICAgI2RlZmluZSBWYWx1ZVVuZGVmaW5lZCAoVGFnQml0VHlwZU90aGVy
IHwgVGFnQml0VW5kZWZpbmVkKQotICAgICNkZWZpbmUgVmFsdWVOdWxsICAgICAgKFRhZ0JpdFR5
cGVPdGhlcikKLQotICAgIC8vIFRhZ01hc2sgaXMgdXNlZCB0byBjaGVjayBmb3IgYWxsIHR5cGVz
IG9mIGltbWVkaWF0ZSB2YWx1ZXMgKGVpdGhlciBudW1iZXIgb3IgJ290aGVyJykuCi0gICAgI2Rl
ZmluZSBUYWdNYXNrIChUYWdUeXBlTnVtYmVyIHwgVGFnQml0VHlwZU90aGVyKQotCi0gICAgLy8g
VGhlc2Ugc3BlY2lhbCB2YWx1ZXMgYXJlIG5ldmVyIHZpc2libGUgdG8gSmF2YVNjcmlwdCBjb2Rl
OyBFbXB0eSBpcyB1c2VkIHRvIHJlcHJlc2VudAotICAgIC8vIEFycmF5IGhvbGVzLCBhbmQgZm9y
IHVuaW5pdGlhbGl6ZWQgSlNWYWx1ZXMuIERlbGV0ZWQgaXMgdXNlZCBpbiBoYXNoIHRhYmxlIGNv
ZGUuCi0gICAgLy8gVGhlc2UgdmFsdWVzIHdvdWxkIG1hcCB0byBjZWxsIHR5cGVzIGluIHRoZSBK
U1ZhbHVlIGVuY29kaW5nLCBidXQgbm90IHZhbGlkIEdDIGNlbGwKLSAgICAvLyBwb2ludGVyIHNo
b3VsZCBoYXZlIGVpdGhlciBvZiB0aGVzZSB2YWx1ZXMgKEVtcHR5IGlzIG51bGwsIGRlbGV0ZWQg
aXMgYXQgYW4gaW52YWxpZAotICAgIC8vIGFsaWdubWVudCBmb3IgYSBHQyBjZWxsLCBhbmQgaW4g
dGhlIHplcm8gcGFnZSkuCi0gICAgI2RlZmluZSBWYWx1ZUVtcHR5ICAgMHgwbGwKLSAgICAjZGVm
aW5lIFZhbHVlRGVsZXRlZCAweDRsbAotI2VuZGlmCi0KLSAgICBFbmNvZGVkVmFsdWVEZXNjcmlw
dG9yIHU7Ci19OwotCi10eXBlZGVmIEludEhhc2g8RW5jb2RlZEpTVmFsdWU+IEVuY29kZWRKU1Zh
bHVlSGFzaDsKLQotI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi1zdHJ1Y3QgRW5jb2RlZEpTVmFsdWVI
YXNoVHJhaXRzIDogSGFzaFRyYWl0czxFbmNvZGVkSlNWYWx1ZT4gewotICAgIHN0YXRpYyBjb25z
dCBib29sIGVtcHR5VmFsdWVJc1plcm8gPSBmYWxzZTsKLSAgICBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOyB9Ci0g
ICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKEVuY29kZWRKU1ZhbHVlJiBzbG90
KSB7IHNsb3QgPSBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShKU1ZhbHVlOjpIYXNoVGFibGVEZWxl
dGVkVmFsdWUpKTsgfQotICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKEVuY29kZWRKU1Zh
bHVlIHZhbHVlKSB7IHJldHVybiB2YWx1ZSA9PSBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShKU1Zh
bHVlOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpKTsgfQotfTsKLSNlbHNlCi1zdHJ1Y3QgRW5jb2Rl
ZEpTVmFsdWVIYXNoVHJhaXRzIDogSGFzaFRyYWl0czxFbmNvZGVkSlNWYWx1ZT4gewotICAgIHN0
YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShFbmNvZGVkSlNWYWx1ZSYgc2xvdCkgeyBz
bG90ID0gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoSlNWYWx1ZTo6SGFzaFRhYmxlRGVsZXRlZFZh
bHVlKSk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShFbmNvZGVkSlNWYWx1ZSB2
YWx1ZSkgeyByZXR1cm4gdmFsdWUgPT0gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoSlNWYWx1ZTo6
SGFzaFRhYmxlRGVsZXRlZFZhbHVlKSk7IH0KLX07Ci0jZW5kaWYKLQotdHlwZWRlZiBIYXNoTWFw
PEVuY29kZWRKU1ZhbHVlLCB1bnNpZ25lZCwgRW5jb2RlZEpTVmFsdWVIYXNoLCBFbmNvZGVkSlNW
YWx1ZUhhc2hUcmFpdHM+IEpTVmFsdWVNYXA7Ci0KLS8vIFN0YW5kLWFsb25lIGhlbHBlciBmdW5j
dGlvbnMuCi1pbmxpbmUgSlNWYWx1ZSBqc051bGwoKQotewotICAgIHJldHVybiBKU1ZhbHVlKEpT
VmFsdWU6OkpTTnVsbCk7Ci19Ci0KLWlubGluZSBKU1ZhbHVlIGpzVW5kZWZpbmVkKCkKLXsKLSAg
ICByZXR1cm4gSlNWYWx1ZShKU1ZhbHVlOjpKU1VuZGVmaW5lZCk7Ci19Ci0KLWlubGluZSBKU1Zh
bHVlIGpzQm9vbGVhbihib29sIGIpCi17Ci0gICAgcmV0dXJuIGIgPyBKU1ZhbHVlKEpTVmFsdWU6
OkpTVHJ1ZSkgOiBKU1ZhbHVlKEpTVmFsdWU6OkpTRmFsc2UpOwotfQotCi1BTFdBWVNfSU5MSU5F
IEpTVmFsdWUganNEb3VibGVOdW1iZXIoZG91YmxlIGQpCi17Ci0gICAgQVNTRVJUKEpTVmFsdWUo
SlNWYWx1ZTo6RW5jb2RlQXNEb3VibGUsIGQpLmlzTnVtYmVyKCkpOwotICAgIHJldHVybiBKU1Zh
bHVlKEpTVmFsdWU6OkVuY29kZUFzRG91YmxlLCBkKTsKLX0KLQotQUxXQVlTX0lOTElORSBKU1Zh
bHVlIGpzTnVtYmVyKGRvdWJsZSBkKQotewotICAgIEFTU0VSVChKU1ZhbHVlKGQpLmlzTnVtYmVy
KCkpOwotICAgIHJldHVybiBKU1ZhbHVlKGQpOwotfQotCi1BTFdBWVNfSU5MSU5FIEpTVmFsdWUg
anNOdW1iZXIoY2hhciBpKQotewotICAgIHJldHVybiBKU1ZhbHVlKGkpOwotfQotCi1BTFdBWVNf
SU5MSU5FIEpTVmFsdWUganNOdW1iZXIodW5zaWduZWQgY2hhciBpKQotewotICAgIHJldHVybiBK
U1ZhbHVlKGkpOwotfQotCi1BTFdBWVNfSU5MSU5FIEpTVmFsdWUganNOdW1iZXIoc2hvcnQgaSkK
LXsKLSAgICByZXR1cm4gSlNWYWx1ZShpKTsKLX0KLQotQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpz
TnVtYmVyKHVuc2lnbmVkIHNob3J0IGkpCi17Ci0gICAgcmV0dXJuIEpTVmFsdWUoaSk7Ci19Ci0K
LUFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc051bWJlcihpbnQgaSkKLXsKLSAgICByZXR1cm4gSlNW
YWx1ZShpKTsKLX0KLQotQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzTnVtYmVyKHVuc2lnbmVkIGkp
Ci17Ci0gICAgcmV0dXJuIEpTVmFsdWUoaSk7Ci19Ci0KLUFMV0FZU19JTkxJTkUgSlNWYWx1ZSBq
c051bWJlcihsb25nIGkpCi17Ci0gICAgcmV0dXJuIEpTVmFsdWUoaSk7Ci19Ci0KLUFMV0FZU19J
TkxJTkUgSlNWYWx1ZSBqc051bWJlcih1bnNpZ25lZCBsb25nIGkpCi17Ci0gICAgcmV0dXJuIEpT
VmFsdWUoaSk7Ci19Ci0KLUFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc051bWJlcihsb25nIGxvbmcg
aSkKLXsKLSAgICByZXR1cm4gSlNWYWx1ZShpKTsKLX0KLQotQUxXQVlTX0lOTElORSBKU1ZhbHVl
IGpzTnVtYmVyKHVuc2lnbmVkIGxvbmcgbG9uZyBpKQotewotICAgIHJldHVybiBKU1ZhbHVlKGkp
OwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEpTVmFsdWUgYSwgY29uc3QgSlND
ZWxsKiBiKSB7IHJldHVybiBhID09IEpTVmFsdWUoYik7IH0KLWlubGluZSBib29sIG9wZXJhdG9y
PT0oY29uc3QgSlNDZWxsKiBhLCBjb25zdCBKU1ZhbHVlIGIpIHsgcmV0dXJuIEpTVmFsdWUoYSkg
PT0gYjsgfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEpTVmFsdWUgYSwgY29uc3Qg
SlNDZWxsKiBiKSB7IHJldHVybiBhICE9IEpTVmFsdWUoYik7IH0KLWlubGluZSBib29sIG9wZXJh
dG9yIT0oY29uc3QgSlNDZWxsKiBhLCBjb25zdCBKU1ZhbHVlIGIpIHsgcmV0dXJuIEpTVmFsdWUo
YSkgIT0gYjsgfQotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQotI2VuZGlmIC8vIEpTVmFsdWVfaApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZUlubGluZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlSW5saW5lcy5o
CShyZXZpc2lvbiAxNDAzNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Zh
bHVlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDc5OSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgSlNWYWx1
ZUlubGluZXNfaAotI2RlZmluZSBKU1ZhbHVlSW5saW5lc19oCi0KLSNpbmNsdWRlICJJbnRlcm5h
bEZ1bmN0aW9uLmgiCi0jaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgotI2luY2x1ZGUgIkpTRnVu
Y3Rpb24uaCIKLSNpbmNsdWRlICJKU1ZhbHVlLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi1BTFdB
WVNfSU5MSU5FIGludDMyX3QgSlNWYWx1ZTo6dG9JbnQzMihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0
Ci17Ci0gICAgaWYgKGlzSW50MzIoKSkKLSAgICAgICAgcmV0dXJuIGFzSW50MzIoKTsKLSAgICBy
ZXR1cm4gSlNDOjp0b0ludDMyKHRvTnVtYmVyKGV4ZWMpKTsKLX0KLQotaW5saW5lIHVpbnQzMl90
IEpTVmFsdWU6OnRvVUludDMyKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKLXsKLSAgICAvLyBTZWUg
Y29tbWVudCBvbiBKU0M6OnRvVUludDMyLCBhYm92ZS4KLSAgICByZXR1cm4gdG9JbnQzMihleGVj
KTsKLX0KLQotaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNVSW50MzIoKSBjb25zdAotewotICAgIHJl
dHVybiBpc0ludDMyKCkgJiYgYXNJbnQzMigpID49IDA7Ci19Ci0KLWlubGluZSB1aW50MzJfdCBK
U1ZhbHVlOjphc1VJbnQzMigpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKGlzVUludDMyKCkpOwotICAg
IHJldHVybiBhc0ludDMyKCk7Ci19Ci0KLWlubGluZSBkb3VibGUgSlNWYWx1ZTo6YXNOdW1iZXIo
KSBjb25zdAotewotICAgIEFTU0VSVChpc051bWJlcigpKTsKLSAgICByZXR1cm4gaXNJbnQzMigp
ID8gYXNJbnQzMigpIDogYXNEb3VibGUoKTsKLX0KLQotaW5saW5lIEpTVmFsdWUganNOYU4oKQot
ewotICAgIHJldHVybiBKU1ZhbHVlKFFOYU4pOwotfQotCi1pbmxpbmUgSlNWYWx1ZTo6SlNWYWx1
ZShjaGFyIGkpCi17Ci0gICAgKnRoaXMgPSBKU1ZhbHVlKHN0YXRpY19jYXN0PGludDMyX3Q+KGkp
KTsKLX0KLQotaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUodW5zaWduZWQgY2hhciBpKQotewotICAg
ICp0aGlzID0gSlNWYWx1ZShzdGF0aWNfY2FzdDxpbnQzMl90PihpKSk7Ci19Ci0KLWlubGluZSBK
U1ZhbHVlOjpKU1ZhbHVlKHNob3J0IGkpCi17Ci0gICAgKnRoaXMgPSBKU1ZhbHVlKHN0YXRpY19j
YXN0PGludDMyX3Q+KGkpKTsKLX0KLQotaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUodW5zaWduZWQg
c2hvcnQgaSkKLXsKLSAgICAqdGhpcyA9IEpTVmFsdWUoc3RhdGljX2Nhc3Q8aW50MzJfdD4oaSkp
OwotfQotCi1pbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZSh1bnNpZ25lZCBpKQotewotICAgIGlmIChz
dGF0aWNfY2FzdDxpbnQzMl90PihpKSA8IDApIHsKLSAgICAgICAgKnRoaXMgPSBKU1ZhbHVlKEVu
Y29kZUFzRG91YmxlLCBzdGF0aWNfY2FzdDxkb3VibGU+KGkpKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICAqdGhpcyA9IEpTVmFsdWUoc3RhdGljX2Nhc3Q8aW50MzJfdD4oaSkpOwotfQot
Ci1pbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShsb25nIGkpCi17Ci0gICAgaWYgKHN0YXRpY19jYXN0
PGludDMyX3Q+KGkpICE9IGkpIHsKLSAgICAgICAgKnRoaXMgPSBKU1ZhbHVlKEVuY29kZUFzRG91
YmxlLCBzdGF0aWNfY2FzdDxkb3VibGU+KGkpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICAqdGhpcyA9IEpTVmFsdWUoc3RhdGljX2Nhc3Q8aW50MzJfdD4oaSkpOwotfQotCi1pbmxpbmUg
SlNWYWx1ZTo6SlNWYWx1ZSh1bnNpZ25lZCBsb25nIGkpCi17Ci0gICAgaWYgKHN0YXRpY19jYXN0
PHVpbnQzMl90PihpKSAhPSBpKSB7Ci0gICAgICAgICp0aGlzID0gSlNWYWx1ZShFbmNvZGVBc0Rv
dWJsZSwgc3RhdGljX2Nhc3Q8ZG91YmxlPihpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgKnRoaXMgPSBKU1ZhbHVlKHN0YXRpY19jYXN0PHVpbnQzMl90PihpKSk7Ci19Ci0KLWlubGlu
ZSBKU1ZhbHVlOjpKU1ZhbHVlKGxvbmcgbG9uZyBpKQotewotICAgIGlmIChzdGF0aWNfY2FzdDxp
bnQzMl90PihpKSAhPSBpKSB7Ci0gICAgICAgICp0aGlzID0gSlNWYWx1ZShFbmNvZGVBc0RvdWJs
ZSwgc3RhdGljX2Nhc3Q8ZG91YmxlPihpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAg
KnRoaXMgPSBKU1ZhbHVlKHN0YXRpY19jYXN0PGludDMyX3Q+KGkpKTsKLX0KLQotaW5saW5lIEpT
VmFsdWU6OkpTVmFsdWUodW5zaWduZWQgbG9uZyBsb25nIGkpCi17Ci0gICAgaWYgKHN0YXRpY19j
YXN0PHVpbnQzMl90PihpKSAhPSBpKSB7Ci0gICAgICAgICp0aGlzID0gSlNWYWx1ZShFbmNvZGVB
c0RvdWJsZSwgc3RhdGljX2Nhc3Q8ZG91YmxlPihpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgKnRoaXMgPSBKU1ZhbHVlKHN0YXRpY19jYXN0PHVpbnQzMl90PihpKSk7Ci19Ci0KLWlu
bGluZSBKU1ZhbHVlOjpKU1ZhbHVlKGRvdWJsZSBkKQotewotICAgIGNvbnN0IGludDMyX3QgYXNJ
bnQzMiA9IHN0YXRpY19jYXN0PGludDMyX3Q+KGQpOwotICAgIGlmIChhc0ludDMyICE9IGQgfHwg
KCFhc0ludDMyICYmIHNpZ25iaXQoZCkpKSB7IC8vIHRydWUgZm9yIC0wLjAKLSAgICAgICAgKnRo
aXMgPSBKU1ZhbHVlKEVuY29kZUFzRG91YmxlLCBkKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICAqdGhpcyA9IEpTVmFsdWUoc3RhdGljX2Nhc3Q8aW50MzJfdD4oZCkpOwotfQotCi1pbmxp
bmUgRW5jb2RlZEpTVmFsdWUgSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUgdmFsdWUpCi17Ci0gICAg
cmV0dXJuIHZhbHVlLnUuYXNJbnQ2NDsKLX0KLQotaW5saW5lIEpTVmFsdWUgSlNWYWx1ZTo6ZGVj
b2RlKEVuY29kZWRKU1ZhbHVlIGVuY29kZWRKU1ZhbHVlKQotewotICAgIEpTVmFsdWUgdjsKLSAg
ICB2LnUuYXNJbnQ2NCA9IGVuY29kZWRKU1ZhbHVlOwotICAgIHJldHVybiB2OwotfQotCi0jaWYg
VVNFKEpTVkFMVUUzMl82NCkKLWlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKCkKLXsKLSAgICB1LmFz
Qml0cy50YWcgPSBFbXB0eVZhbHVlVGFnOwotICAgIHUuYXNCaXRzLnBheWxvYWQgPSAwOwotfQot
Ci1pbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShKU051bGxUYWcpCi17Ci0gICAgdS5hc0JpdHMudGFn
ID0gTnVsbFRhZzsKLSAgICB1LmFzQml0cy5wYXlsb2FkID0gMDsKLX0KLSAgICAKLWlubGluZSBK
U1ZhbHVlOjpKU1ZhbHVlKEpTVW5kZWZpbmVkVGFnKQotewotICAgIHUuYXNCaXRzLnRhZyA9IFVu
ZGVmaW5lZFRhZzsKLSAgICB1LmFzQml0cy5wYXlsb2FkID0gMDsKLX0KLSAgICAKLWlubGluZSBK
U1ZhbHVlOjpKU1ZhbHVlKEpTVHJ1ZVRhZykKLXsKLSAgICB1LmFzQml0cy50YWcgPSBCb29sZWFu
VGFnOwotICAgIHUuYXNCaXRzLnBheWxvYWQgPSAxOwotfQotICAgIAotaW5saW5lIEpTVmFsdWU6
OkpTVmFsdWUoSlNGYWxzZVRhZykKLXsKLSAgICB1LmFzQml0cy50YWcgPSBCb29sZWFuVGFnOwot
ICAgIHUuYXNCaXRzLnBheWxvYWQgPSAwOwotfQotCi1pbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShI
YXNoVGFibGVEZWxldGVkVmFsdWVUYWcpCi17Ci0gICAgdS5hc0JpdHMudGFnID0gRGVsZXRlZFZh
bHVlVGFnOwotICAgIHUuYXNCaXRzLnBheWxvYWQgPSAwOwotfQotCi1pbmxpbmUgSlNWYWx1ZTo6
SlNWYWx1ZShKU0NlbGwqIHB0cikKLXsKLSAgICBpZiAocHRyKQotICAgICAgICB1LmFzQml0cy50
YWcgPSBDZWxsVGFnOwotICAgIGVsc2UKLSAgICAgICAgdS5hc0JpdHMudGFnID0gRW1wdHlWYWx1
ZVRhZzsKLSAgICB1LmFzQml0cy5wYXlsb2FkID0gcmVpbnRlcnByZXRfY2FzdDxpbnQzMl90Pihw
dHIpOwotfQotCi1pbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShjb25zdCBKU0NlbGwqIHB0cikKLXsK
LSAgICBpZiAocHRyKQotICAgICAgICB1LmFzQml0cy50YWcgPSBDZWxsVGFnOwotICAgIGVsc2UK
LSAgICAgICAgdS5hc0JpdHMudGFnID0gRW1wdHlWYWx1ZVRhZzsKLSAgICB1LmFzQml0cy5wYXls
b2FkID0gcmVpbnRlcnByZXRfY2FzdDxpbnQzMl90Pihjb25zdF9jYXN0PEpTQ2VsbCo+KHB0cikp
OwotfQotCi1pbmxpbmUgSlNWYWx1ZTo6b3BlcmF0b3IgYm9vbCgpIGNvbnN0Ci17Ci0gICAgQVNT
RVJUKHRhZygpICE9IERlbGV0ZWRWYWx1ZVRhZyk7Ci0gICAgcmV0dXJuIHRhZygpICE9IEVtcHR5
VmFsdWVUYWc7Ci19Ci0KLWlubGluZSBib29sIEpTVmFsdWU6Om9wZXJhdG9yPT0oY29uc3QgSlNW
YWx1ZSYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHUuYXNJbnQ2NCA9PSBvdGhlci51LmFz
SW50NjQ7Ci19Ci0KLWlubGluZSBib29sIEpTVmFsdWU6Om9wZXJhdG9yIT0oY29uc3QgSlNWYWx1
ZSYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHUuYXNJbnQ2NCAhPSBvdGhlci51LmFzSW50
NjQ7Ci19Ci0KLWlubGluZSBib29sIEpTVmFsdWU6OmlzRW1wdHkoKSBjb25zdAotewotICAgIHJl
dHVybiB0YWcoKSA9PSBFbXB0eVZhbHVlVGFnOwotfQotCi1pbmxpbmUgYm9vbCBKU1ZhbHVlOjpp
c1VuZGVmaW5lZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHRhZygpID09IFVuZGVmaW5lZFRhZzsK
LX0KLQotaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNOdWxsKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
dGFnKCkgPT0gTnVsbFRhZzsKLX0KLQotaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNVbmRlZmluZWRP
ck51bGwoKSBjb25zdAotewotICAgIHJldHVybiBpc1VuZGVmaW5lZCgpIHx8IGlzTnVsbCgpOwot
fQotCi1pbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0NlbGwoKSBjb25zdAotewotICAgIHJldHVybiB0
YWcoKSA9PSBDZWxsVGFnOwotfQotCi1pbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0ludDMyKCkgY29u
c3QKLXsKLSAgICByZXR1cm4gdGFnKCkgPT0gSW50MzJUYWc7Ci19Ci0KLWlubGluZSBib29sIEpT
VmFsdWU6OmlzRG91YmxlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gdGFnKCkgPCBMb3dlc3RUYWc7
Ci19Ci0KLWlubGluZSBib29sIEpTVmFsdWU6OmlzVHJ1ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IHRhZygpID09IEJvb2xlYW5UYWcgJiYgcGF5bG9hZCgpOwotfQotCi1pbmxpbmUgYm9vbCBKU1Zh
bHVlOjppc0ZhbHNlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gdGFnKCkgPT0gQm9vbGVhblRhZyAm
JiAhcGF5bG9hZCgpOwotfQotCi1pbmxpbmUgdWludDMyX3QgSlNWYWx1ZTo6dGFnKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gdS5hc0JpdHMudGFnOwotfQotICAgIAotaW5saW5lIGludDMyX3QgSlNW
YWx1ZTo6cGF5bG9hZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHUuYXNCaXRzLnBheWxvYWQ7Ci19
Ci0gICAgCi1pbmxpbmUgaW50MzJfdCBKU1ZhbHVlOjphc0ludDMyKCkgY29uc3QKLXsKLSAgICBB
U1NFUlQoaXNJbnQzMigpKTsKLSAgICByZXR1cm4gdS5hc0JpdHMucGF5bG9hZDsKLX0KLSAgICAK
LWlubGluZSBkb3VibGUgSlNWYWx1ZTo6YXNEb3VibGUoKSBjb25zdAotewotICAgIEFTU0VSVChp
c0RvdWJsZSgpKTsKLSAgICByZXR1cm4gdS5hc0RvdWJsZTsKLX0KLSAgICAKLUFMV0FZU19JTkxJ
TkUgSlNDZWxsKiBKU1ZhbHVlOjphc0NlbGwoKSBjb25zdAotewotICAgIEFTU0VSVChpc0NlbGwo
KSk7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SlNDZWxsKj4odS5hc0JpdHMucGF5bG9h
ZCk7Ci19Ci0KLUFMV0FZU19JTkxJTkUgSlNWYWx1ZTo6SlNWYWx1ZShFbmNvZGVBc0RvdWJsZVRh
ZywgZG91YmxlIGQpCi17Ci0gICAgdS5hc0RvdWJsZSA9IGQ7Ci19Ci0KLWlubGluZSBKU1ZhbHVl
OjpKU1ZhbHVlKGludCBpKQotewotICAgIHUuYXNCaXRzLnRhZyA9IEludDMyVGFnOwotICAgIHUu
YXNCaXRzLnBheWxvYWQgPSBpOwotfQotCi0jaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkKLWlubGlu
ZSBKU1ZhbHVlOjpKU1ZhbHVlKGludDMyX3QgdGFnLCBpbnQzMl90IHBheWxvYWQpCi17Ci0gICAg
dS5hc0JpdHMudGFnID0gdGFnOwotICAgIHUuYXNCaXRzLnBheWxvYWQgPSBwYXlsb2FkOwotfQot
I2VuZGlmCi0KLWlubGluZSBib29sIEpTVmFsdWU6OmlzTnVtYmVyKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gaXNJbnQzMigpIHx8IGlzRG91YmxlKCk7Ci19Ci0KLWlubGluZSBib29sIEpTVmFsdWU6
OmlzQm9vbGVhbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGlzVHJ1ZSgpIHx8IGlzRmFsc2UoKTsK
LX0KLQotaW5saW5lIGJvb2wgSlNWYWx1ZTo6YXNCb29sZWFuKCkgY29uc3QKLXsKLSAgICBBU1NF
UlQoaXNCb29sZWFuKCkpOwotICAgIHJldHVybiBwYXlsb2FkKCk7Ci19Ci0KLSNlbHNlIC8vICFV
U0UoSlNWQUxVRTMyXzY0KSBpLmUuIFVTRShKU1ZBTFVFNjQpCi0KLS8vIDB4MCBjYW4gbmV2ZXIg
b2NjdXIgbmF0dXJhbGx5IGJlY2F1c2UgaXQgaGFzIGEgdGFnIG9mIDAwLCBpbmRpY2F0aW5nIGEg
cG9pbnRlciB2YWx1ZSwgYnV0IGEgcGF5bG9hZCBvZiAweDAsIHdoaWNoIGlzIGluIHRoZSAoaW52
YWxpZCkgemVybyBwYWdlLgotaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoKQotewotICAgIHUuYXNJ
bnQ2NCA9IFZhbHVlRW1wdHk7Ci19Ci0KLS8vIDB4NCBjYW4gbmV2ZXIgb2NjdXIgbmF0dXJhbGx5
IGJlY2F1c2UgaXQgaGFzIGEgdGFnIG9mIDAwLCBpbmRpY2F0aW5nIGEgcG9pbnRlciB2YWx1ZSwg
YnV0IGEgcGF5bG9hZCBvZiAweDQsIHdoaWNoIGlzIGluIHRoZSAoaW52YWxpZCkgemVybyBwYWdl
LgotaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoSGFzaFRhYmxlRGVsZXRlZFZhbHVlVGFnKQotewot
ICAgIHUuYXNJbnQ2NCA9IFZhbHVlRGVsZXRlZDsKLX0KLQotaW5saW5lIEpTVmFsdWU6OkpTVmFs
dWUoSlNDZWxsKiBwdHIpCi17Ci0gICAgdS5hc0ludDY0ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50
cHRyX3Q+KHB0cik7Ci19Ci0KLWlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKGNvbnN0IEpTQ2VsbCog
cHRyKQotewotICAgIHUuYXNJbnQ2NCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihjb25z
dF9jYXN0PEpTQ2VsbCo+KHB0cikpOwotfQotCi1pbmxpbmUgSlNWYWx1ZTo6b3BlcmF0b3IgYm9v
bCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHUuYXNJbnQ2NDsKLX0KLQotaW5saW5lIGJvb2wgSlNW
YWx1ZTo6b3BlcmF0b3I9PShjb25zdCBKU1ZhbHVlJiBvdGhlcikgY29uc3QKLXsKLSAgICByZXR1
cm4gdS5hc0ludDY0ID09IG90aGVyLnUuYXNJbnQ2NDsKLX0KLQotaW5saW5lIGJvb2wgSlNWYWx1
ZTo6b3BlcmF0b3IhPShjb25zdCBKU1ZhbHVlJiBvdGhlcikgY29uc3QKLXsKLSAgICByZXR1cm4g
dS5hc0ludDY0ICE9IG90aGVyLnUuYXNJbnQ2NDsKLX0KLQotaW5saW5lIGJvb2wgSlNWYWx1ZTo6
aXNFbXB0eSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHUuYXNJbnQ2NCA9PSBWYWx1ZUVtcHR5Owot
fQotCi1pbmxpbmUgYm9vbCBKU1ZhbHVlOjppc1VuZGVmaW5lZCgpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIGFzVmFsdWUoKSA9PSBKU1ZhbHVlKEpTVW5kZWZpbmVkKTsKLX0KLQotaW5saW5lIGJvb2wg
SlNWYWx1ZTo6aXNOdWxsKCkgY29uc3QKLXsKLSAgICByZXR1cm4gYXNWYWx1ZSgpID09IEpTVmFs
dWUoSlNOdWxsKTsKLX0KLQotaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNUcnVlKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gYXNWYWx1ZSgpID09IEpTVmFsdWUoSlNUcnVlKTsKLX0KLQotaW5saW5lIGJv
b2wgSlNWYWx1ZTo6aXNGYWxzZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGFzVmFsdWUoKSA9PSBK
U1ZhbHVlKEpTRmFsc2UpOwotfQotCi1pbmxpbmUgYm9vbCBKU1ZhbHVlOjphc0Jvb2xlYW4oKSBj
b25zdAotewotICAgIEFTU0VSVChpc0Jvb2xlYW4oKSk7Ci0gICAgcmV0dXJuIGFzVmFsdWUoKSA9
PSBKU1ZhbHVlKEpTVHJ1ZSk7Ci19Ci0KLWlubGluZSBpbnQzMl90IEpTVmFsdWU6OmFzSW50MzIo
KSBjb25zdAotewotICAgIEFTU0VSVChpc0ludDMyKCkpOwotICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxpbnQzMl90Pih1LmFzSW50NjQpOwotfQotCi1pbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0RvdWJs
ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGlzTnVtYmVyKCkgJiYgIWlzSW50MzIoKTsKLX0KLQot
aW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoSlNOdWxsVGFnKQotewotICAgIHUuYXNJbnQ2NCA9IFZh
bHVlTnVsbDsKLX0KLSAgICAKLWlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKEpTVW5kZWZpbmVkVGFn
KQotewotICAgIHUuYXNJbnQ2NCA9IFZhbHVlVW5kZWZpbmVkOwotfQotCi1pbmxpbmUgSlNWYWx1
ZTo6SlNWYWx1ZShKU1RydWVUYWcpCi17Ci0gICAgdS5hc0ludDY0ID0gVmFsdWVUcnVlOwotfQot
Ci1pbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShKU0ZhbHNlVGFnKQotewotICAgIHUuYXNJbnQ2NCA9
IFZhbHVlRmFsc2U7Ci19Ci0KLWlubGluZSBib29sIEpTVmFsdWU6OmlzVW5kZWZpbmVkT3JOdWxs
KCkgY29uc3QKLXsKLSAgICAvLyBVbmRlZmluZWQgYW5kIG51bGwgc2hhcmUgdGhlIHNhbWUgdmFs
dWUsIGJhciB0aGUgJ3VuZGVmaW5lZCcgYml0IGluIHRoZSBleHRlbmRlZCB0YWcuCi0gICAgcmV0
dXJuICh1LmFzSW50NjQgJiB+VGFnQml0VW5kZWZpbmVkKSA9PSBWYWx1ZU51bGw7Ci19Ci0KLWlu
bGluZSBib29sIEpTVmFsdWU6OmlzQm9vbGVhbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICh1LmFz
SW50NjQgJiB+MSkgPT0gVmFsdWVGYWxzZTsKLX0KLQotaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXND
ZWxsKCkgY29uc3QKLXsKLSAgICByZXR1cm4gISh1LmFzSW50NjQgJiBUYWdNYXNrKTsKLX0KLQot
aW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNJbnQzMigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICh1LmFz
SW50NjQgJiBUYWdUeXBlTnVtYmVyKSA9PSBUYWdUeXBlTnVtYmVyOwotfQotCi1pbmxpbmUgaW50
NjRfdCByZWludGVycHJldERvdWJsZVRvSW50NjQoZG91YmxlIHZhbHVlKQotewotICAgIHJldHVy
biBiaXR3aXNlX2Nhc3Q8aW50NjRfdD4odmFsdWUpOwotfQotaW5saW5lIGRvdWJsZSByZWludGVy
cHJldEludDY0VG9Eb3VibGUoaW50NjRfdCB2YWx1ZSkKLXsKLSAgICByZXR1cm4gYml0d2lzZV9j
YXN0PGRvdWJsZT4odmFsdWUpOwotfQotCi1BTFdBWVNfSU5MSU5FIEpTVmFsdWU6OkpTVmFsdWUo
RW5jb2RlQXNEb3VibGVUYWcsIGRvdWJsZSBkKQotewotICAgIHUuYXNJbnQ2NCA9IHJlaW50ZXJw
cmV0RG91YmxlVG9JbnQ2NChkKSArIERvdWJsZUVuY29kZU9mZnNldDsKLX0KLQotaW5saW5lIEpT
VmFsdWU6OkpTVmFsdWUoaW50IGkpCi17Ci0gICAgdS5hc0ludDY0ID0gVGFnVHlwZU51bWJlciB8
IHN0YXRpY19jYXN0PHVpbnQzMl90PihpKTsKLX0KLQotaW5saW5lIGRvdWJsZSBKU1ZhbHVlOjph
c0RvdWJsZSgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKGlzRG91YmxlKCkpOwotICAgIHJldHVybiBy
ZWludGVycHJldEludDY0VG9Eb3VibGUodS5hc0ludDY0IC0gRG91YmxlRW5jb2RlT2Zmc2V0KTsK
LX0KLQotaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNOdW1iZXIoKSBjb25zdAotewotICAgIHJldHVy
biB1LmFzSW50NjQgJiBUYWdUeXBlTnVtYmVyOwotfQotCi1BTFdBWVNfSU5MSU5FIEpTQ2VsbCog
SlNWYWx1ZTo6YXNDZWxsKCkgY29uc3QKLXsKLSAgICBBU1NFUlQoaXNDZWxsKCkpOwotICAgIHJl
dHVybiB1LnB0cjsKLX0KLQotI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCi0KLWlubGluZSBib29s
IEpTVmFsdWU6OmlzU3RyaW5nKCkgY29uc3QKLXsKLSAgICByZXR1cm4gaXNDZWxsKCkgJiYgYXND
ZWxsKCktPmlzU3RyaW5nKCk7Ci19Ci0KLWlubGluZSBib29sIEpTVmFsdWU6OmlzUHJpbWl0aXZl
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gIWlzQ2VsbCgpIHx8IGFzQ2VsbCgpLT5pc1N0cmluZygp
OwotfQotCi1pbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0dldHRlclNldHRlcigpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIGlzQ2VsbCgpICYmIGFzQ2VsbCgpLT5pc0dldHRlclNldHRlcigpOwotfQotCi1p
bmxpbmUgYm9vbCBKU1ZhbHVlOjppc09iamVjdCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGlzQ2Vs
bCgpICYmIGFzQ2VsbCgpLT5pc09iamVjdCgpOwotfQotCi1pbmxpbmUgYm9vbCBKU1ZhbHVlOjpn
ZXRTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBTdHJpbmcmIHMpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IGlzQ2VsbCgpICYmIGFzQ2VsbCgpLT5nZXRTdHJpbmcoZXhlYywgcyk7Ci19Ci0KLWlubGluZSBT
dHJpbmcgSlNWYWx1ZTo6Z2V0U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKLXsKLSAgICBy
ZXR1cm4gaXNDZWxsKCkgPyBhc0NlbGwoKS0+Z2V0U3RyaW5nKGV4ZWMpIDogU3RyaW5nKCk7Ci19
Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBCYXNlPiBTdHJpbmcgSGFuZGxlQ29udmVydGVyPEJhc2Us
IFVua25vd24+OjpnZXRTdHJpbmcoRXhlY1N0YXRlKiBleGVjKSBjb25zdAotewotICAgIHJldHVy
biBqc1ZhbHVlKCkuZ2V0U3RyaW5nKGV4ZWMpOwotfQotCi1pbmxpbmUgSlNPYmplY3QqIEpTVmFs
dWU6OmdldE9iamVjdCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGlzQ2VsbCgpID8gYXNDZWxsKCkt
PmdldE9iamVjdCgpIDogMDsKLX0KLQotQUxXQVlTX0lOTElORSBib29sIEpTVmFsdWU6OmdldFVJ
bnQzMih1aW50MzJfdCYgdikgY29uc3QKLXsKLSAgICBpZiAoaXNJbnQzMigpKSB7Ci0gICAgICAg
IGludDMyX3QgaSA9IGFzSW50MzIoKTsKLSAgICAgICAgdiA9IHN0YXRpY19jYXN0PHVpbnQzMl90
PihpKTsKLSAgICAgICAgcmV0dXJuIGkgPj0gMDsKLSAgICB9Ci0gICAgaWYgKGlzRG91YmxlKCkp
IHsKLSAgICAgICAgZG91YmxlIGQgPSBhc0RvdWJsZSgpOwotICAgICAgICB2ID0gc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KGQpOwotICAgICAgICByZXR1cm4gdiA9PSBkOwotICAgIH0KLSAgICByZXR1
cm4gZmFsc2U7Ci19Ci0KLWlubGluZSBKU1ZhbHVlIEpTVmFsdWU6OnRvUHJpbWl0aXZlKEV4ZWNT
dGF0ZSogZXhlYywgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSBwcmVmZXJyZWRUeXBlKSBjb25zdAot
ewotICAgIHJldHVybiBpc0NlbGwoKSA/IGFzQ2VsbCgpLT50b1ByaW1pdGl2ZShleGVjLCBwcmVm
ZXJyZWRUeXBlKSA6IGFzVmFsdWUoKTsKLX0KLQotaW5saW5lIGJvb2wgSlNWYWx1ZTo6Z2V0UHJp
bWl0aXZlTnVtYmVyKEV4ZWNTdGF0ZSogZXhlYywgZG91YmxlJiBudW1iZXIsIEpTVmFsdWUmIHZh
bHVlKQotewotICAgIGlmIChpc0ludDMyKCkpIHsKLSAgICAgICAgbnVtYmVyID0gYXNJbnQzMigp
OwotICAgICAgICB2YWx1ZSA9ICp0aGlzOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0g
ICAgaWYgKGlzRG91YmxlKCkpIHsKLSAgICAgICAgbnVtYmVyID0gYXNEb3VibGUoKTsKLSAgICAg
ICAgdmFsdWUgPSAqdGhpczsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIGlmIChp
c0NlbGwoKSkKLSAgICAgICAgcmV0dXJuIGFzQ2VsbCgpLT5nZXRQcmltaXRpdmVOdW1iZXIoZXhl
YywgbnVtYmVyLCB2YWx1ZSk7Ci0gICAgaWYgKGlzVHJ1ZSgpKSB7Ci0gICAgICAgIG51bWJlciA9
IDEuMDsKLSAgICAgICAgdmFsdWUgPSAqdGhpczsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
fQotICAgIGlmIChpc0ZhbHNlKCkgfHwgaXNOdWxsKCkpIHsKLSAgICAgICAgbnVtYmVyID0gMC4w
OwotICAgICAgICB2YWx1ZSA9ICp0aGlzOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0g
ICAgQVNTRVJUKGlzVW5kZWZpbmVkKCkpOwotICAgIG51bWJlciA9IFFOYU47Ci0gICAgdmFsdWUg
PSAqdGhpczsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotQUxXQVlTX0lOTElORSBkb3VibGUgSlNW
YWx1ZTo6dG9OdW1iZXIoRXhlY1N0YXRlKiBleGVjKSBjb25zdAotewotICAgIGlmIChpc0ludDMy
KCkpCi0gICAgICAgIHJldHVybiBhc0ludDMyKCk7Ci0gICAgaWYgKGlzRG91YmxlKCkpCi0gICAg
ICAgIHJldHVybiBhc0RvdWJsZSgpOwotICAgIHJldHVybiB0b051bWJlclNsb3dDYXNlKGV4ZWMp
OwotfQotCi1pbmxpbmUgSlNPYmplY3QqIEpTVmFsdWU6OnRvT2JqZWN0KEV4ZWNTdGF0ZSogZXhl
YykgY29uc3QKLXsKLSAgICByZXR1cm4gaXNDZWxsKCkgPyBhc0NlbGwoKS0+dG9PYmplY3QoZXhl
YywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSA6IHRvT2JqZWN0U2xvd0Nhc2UoZXhlYywg
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKLX0KLQotaW5saW5lIEpTT2JqZWN0KiBKU1Zh
bHVlOjp0b09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGlzQ2VsbCgpID8gYXNDZWxsKCktPnRvT2JqZWN0KGV4
ZWMsIGdsb2JhbE9iamVjdCkgOiB0b09iamVjdFNsb3dDYXNlKGV4ZWMsIGdsb2JhbE9iamVjdCk7
Ci19Ci0KLWlubGluZSBib29sIEpTVmFsdWU6OmlzRnVuY3Rpb24oKSBjb25zdAotewotICAgIHJl
dHVybiBpc0NlbGwoKSAmJiAoYXNDZWxsKCktPmluaGVyaXRzKCZKU0Z1bmN0aW9uOjpzX2luZm8p
IHx8IGFzQ2VsbCgpLT5pbmhlcml0cygmSW50ZXJuYWxGdW5jdGlvbjo6c19pbmZvKSk7Ci19Ci0K
LS8vIHRoaXMgbWV0aG9kIGlzIGhlcmUgdG8gYmUgYWZ0ZXIgdGhlIGlubGluZSBkZWNsYXJhdGlv
biBvZiBKU0NlbGw6OmluaGVyaXRzCi1pbmxpbmUgYm9vbCBKU1ZhbHVlOjppbmhlcml0cyhjb25z
dCBDbGFzc0luZm8qIGNsYXNzSW5mbykgY29uc3QKLXsKLSAgICByZXR1cm4gaXNDZWxsKCkgJiYg
YXNDZWxsKCktPmluaGVyaXRzKGNsYXNzSW5mbyk7Ci19Ci0KLWlubGluZSBKU09iamVjdCogSlNW
YWx1ZTo6dG9UaGlzT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKLXsKLSAgICByZXR1cm4g
aXNDZWxsKCkgPyBhc0NlbGwoKS0+bWV0aG9kVGFibGUoKS0+dG9UaGlzT2JqZWN0KGFzQ2VsbCgp
LCBleGVjKSA6IHRvVGhpc09iamVjdFNsb3dDYXNlKGV4ZWMpOwotfQotCi1pbmxpbmUgSlNWYWx1
ZSBKU1ZhbHVlOjpnZXQoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
KSBjb25zdAotewotICAgIFByb3BlcnR5U2xvdCBzbG90KGFzVmFsdWUoKSk7Ci0gICAgcmV0dXJu
IGdldChleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwotfQotCi1pbmxpbmUgSlNWYWx1ZSBKU1Zh
bHVlOjpnZXQoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmIHNsb3QpIGNvbnN0Ci17Ci0gICAgaWYgKFVOTElLRUxZKCFpc0NlbGwoKSkpIHsK
LSAgICAgICAgSlNPYmplY3QqIHByb3RvdHlwZSA9IHN5bnRoZXNpemVQcm90b3R5cGUoZXhlYyk7
Ci0gICAgICAgIGlmICghcHJvdG90eXBlLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlO
YW1lLCBzbG90KSkKLSAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgICAgICBy
ZXR1cm4gc2xvdC5nZXRWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUpOwotICAgIH0KLSAgICBKU0Nl
bGwqIGNlbGwgPSBhc0NlbGwoKTsKLSAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICBpZiAoY2Vs
bC0+ZmFzdEdldE93blByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQotICAg
ICAgICAgICAgcmV0dXJuIHNsb3QuZ2V0VmFsdWUoZXhlYywgcHJvcGVydHlOYW1lKTsKLSAgICAg
ICAgSlNWYWx1ZSBwcm90b3R5cGUgPSBhc09iamVjdChjZWxsKS0+cHJvdG90eXBlKCk7Ci0gICAg
ICAgIGlmICghcHJvdG90eXBlLmlzT2JqZWN0KCkpCi0gICAgICAgICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKLSAgICAgICAgY2VsbCA9IGFzT2JqZWN0KHByb3RvdHlwZSk7Ci0gICAgfQotfQot
Ci1pbmxpbmUgSlNWYWx1ZSBKU1ZhbHVlOjpnZXQoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBw
cm9wZXJ0eU5hbWUpIGNvbnN0Ci17Ci0gICAgUHJvcGVydHlTbG90IHNsb3QoYXNWYWx1ZSgpKTsK
LSAgICByZXR1cm4gZ2V0KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7Ci19Ci0KLWlubGluZSBK
U1ZhbHVlIEpTVmFsdWU6OmdldChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90JiBzbG90KSBjb25zdAotewotICAgIGlmIChVTkxJS0VMWSghaXNDZWxs
KCkpKSB7Ci0gICAgICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSBzeW50aGVzaXplUHJvdG90eXBl
KGV4ZWMpOwotICAgICAgICBpZiAoIXByb3RvdHlwZS0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIHBy
b3BlcnR5TmFtZSwgc2xvdCkpCi0gICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAg
ICAgICAgcmV0dXJuIHNsb3QuZ2V0VmFsdWUoZXhlYywgcHJvcGVydHlOYW1lKTsKLSAgICB9Ci0g
ICAgSlNDZWxsKiBjZWxsID0gY29uc3RfY2FzdDxKU0NlbGwqPihhc0NlbGwoKSk7Ci0gICAgd2hp
bGUgKHRydWUpIHsKLSAgICAgICAgaWYgKGNlbGwtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3Bl
cnR5U2xvdEJ5SW5kZXgoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KSkKLSAgICAgICAg
ICAgIHJldHVybiBzbG90LmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFtZSk7Ci0gICAgICAgIEpT
VmFsdWUgcHJvdG90eXBlID0gYXNPYmplY3QoY2VsbCktPnByb3RvdHlwZSgpOwotICAgICAgICBp
ZiAoIXByb3RvdHlwZS5pc09iamVjdCgpKQotICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7Ci0gICAgICAgIGNlbGwgPSBwcm90b3R5cGUuYXNDZWxsKCk7Ci0gICAgfQotfQotCi1pbmxp
bmUgdm9pZCBKU1ZhbHVlOjpwdXQoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCi17Ci0gICAgaWYg
KFVOTElLRUxZKCFpc0NlbGwoKSkpIHsKLSAgICAgICAgcHV0VG9QcmltaXRpdmUoZXhlYywgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgYXND
ZWxsKCktPm1ldGhvZFRhYmxlKCktPnB1dChhc0NlbGwoKSwgZXhlYywgcHJvcGVydHlOYW1lLCB2
YWx1ZSwgc2xvdCk7Ci19Ci0KLWlubGluZSB2b2lkIEpTVmFsdWU6OnB1dEJ5SW5kZXgoRXhlY1N0
YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hv
dWxkVGhyb3cpCi17Ci0gICAgaWYgKFVOTElLRUxZKCFpc0NlbGwoKSkpIHsKLSAgICAgICAgcHV0
VG9QcmltaXRpdmVCeUluZGV4KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBhc0NlbGwoKS0+bWV0aG9kVGFibGUoKS0+
cHV0QnlJbmRleChhc0NlbGwoKSwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhy
b3cpOwotfQotCi1pbmxpbmUgSlNWYWx1ZSBKU1ZhbHVlOjpzdHJ1Y3R1cmVPclVuZGVmaW5lZCgp
IGNvbnN0Ci17Ci0gICAgaWYgKGlzQ2VsbCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZShhc0Nl
bGwoKS0+c3RydWN0dXJlKCkpOwotICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotfQotCi0vLyBF
Q01BIDExLjkuMwotaW5saW5lIGJvb2wgSlNWYWx1ZTo6ZXF1YWwoRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQotewotICAgIGlmICh2MS5pc0ludDMyKCkgJiYgdjIuaXNJ
bnQzMigpKQotICAgICAgICByZXR1cm4gdjEgPT0gdjI7Ci0KLSAgICByZXR1cm4gZXF1YWxTbG93
Q2FzZShleGVjLCB2MSwgdjIpOwotfQotCi1BTFdBWVNfSU5MSU5FIGJvb2wgSlNWYWx1ZTo6ZXF1
YWxTbG93Q2FzZUlubGluZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIp
Ci17Ci0gICAgZG8gewotICAgICAgICBpZiAodjEuaXNOdW1iZXIoKSAmJiB2Mi5pc051bWJlcigp
KQotICAgICAgICAgICAgcmV0dXJuIHYxLmFzTnVtYmVyKCkgPT0gdjIuYXNOdW1iZXIoKTsKLQot
ICAgICAgICBib29sIHMxID0gdjEuaXNTdHJpbmcoKTsKLSAgICAgICAgYm9vbCBzMiA9IHYyLmlz
U3RyaW5nKCk7Ci0gICAgICAgIGlmIChzMSAmJiBzMikKLSAgICAgICAgICAgIHJldHVybiBhc1N0
cmluZyh2MSktPnZhbHVlKGV4ZWMpID09IGFzU3RyaW5nKHYyKS0+dmFsdWUoZXhlYyk7Ci0KLSAg
ICAgICAgaWYgKHYxLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKLSAgICAgICAgICAgIGlmICh2Mi5p
c1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAg
ICAgICAgaWYgKCF2Mi5pc0NlbGwoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgICAgICByZXR1cm4gdjIuYXNDZWxsKCktPnN0cnVjdHVyZSgpLT5tYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkKGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7Ci0gICAgICAgIH0KLQotICAg
ICAgICBpZiAodjIuaXNVbmRlZmluZWRPck51bGwoKSkgewotICAgICAgICAgICAgaWYgKCF2MS5p
c0NlbGwoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICByZXR1
cm4gdjEuYXNDZWxsKCktPnN0cnVjdHVyZSgpLT5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkKGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAodjEuaXNP
YmplY3QoKSkgewotICAgICAgICAgICAgaWYgKHYyLmlzT2JqZWN0KCkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIHYxID09IHYyOwotICAgICAgICAgICAgSlNWYWx1ZSBwMSA9IHYxLnRvUHJpbWl0
aXZlKGV4ZWMpOwotICAgICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIHYxID0gcDE7Ci0gICAgICAgICAg
ICBpZiAodjEuaXNJbnQzMigpICYmIHYyLmlzSW50MzIoKSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gdjEgPT0gdjI7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAg
IGlmICh2Mi5pc09iamVjdCgpKSB7Ci0gICAgICAgICAgICBKU1ZhbHVlIHAyID0gdjIudG9Qcmlt
aXRpdmUoZXhlYyk7Ci0gICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgdjIgPSBwMjsKLSAgICAgICAg
ICAgIGlmICh2MS5pc0ludDMyKCkgJiYgdjIuaXNJbnQzMigpKQotICAgICAgICAgICAgICAgIHJl
dHVybiB2MSA9PSB2MjsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAg
ICAgaWYgKHMxIHx8IHMyKSB7Ci0gICAgICAgICAgICBkb3VibGUgZDEgPSB2MS50b051bWJlcihl
eGVjKTsKLSAgICAgICAgICAgIGRvdWJsZSBkMiA9IHYyLnRvTnVtYmVyKGV4ZWMpOwotICAgICAg
ICAgICAgcmV0dXJuIGQxID09IGQyOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHYxLmlzQm9v
bGVhbigpKSB7Ci0gICAgICAgICAgICBpZiAodjIuaXNOdW1iZXIoKSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPih2MS5hc0Jvb2xlYW4oKSkgPT0gdjIuYXNOdW1i
ZXIoKTsKLSAgICAgICAgfSBlbHNlIGlmICh2Mi5pc0Jvb2xlYW4oKSkgewotICAgICAgICAgICAg
aWYgKHYxLmlzTnVtYmVyKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHYxLmFzTnVtYmVyKCkg
PT0gc3RhdGljX2Nhc3Q8ZG91YmxlPih2Mi5hc0Jvb2xlYW4oKSk7Ci0gICAgICAgIH0KLQotICAg
ICAgICByZXR1cm4gdjEgPT0gdjI7Ci0gICAgfSB3aGlsZSAodHJ1ZSk7Ci19Ci0KLS8vIEVDTUEg
MTEuOS4zCi1BTFdBWVNfSU5MSU5FIGJvb2wgSlNWYWx1ZTo6c3RyaWN0RXF1YWxTbG93Q2FzZUlu
bGluZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCi17Ci0gICAgQVNT
RVJUKHYxLmlzQ2VsbCgpICYmIHYyLmlzQ2VsbCgpKTsKLQotICAgIGlmICh2MS5hc0NlbGwoKS0+
aXNTdHJpbmcoKSAmJiB2Mi5hc0NlbGwoKS0+aXNTdHJpbmcoKSkKLSAgICAgICAgcmV0dXJuIGFz
U3RyaW5nKHYxKS0+dmFsdWUoZXhlYykgPT0gYXNTdHJpbmcodjIpLT52YWx1ZShleGVjKTsKLQot
ICAgIHJldHVybiB2MSA9PSB2MjsKLX0KLQotaW5saW5lIGJvb2wgSlNWYWx1ZTo6c3RyaWN0RXF1
YWwoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQotewotICAgIGlmICh2
MS5pc0ludDMyKCkgJiYgdjIuaXNJbnQzMigpKQotICAgICAgICByZXR1cm4gdjEgPT0gdjI7Ci0K
LSAgICBpZiAodjEuaXNOdW1iZXIoKSAmJiB2Mi5pc051bWJlcigpKQotICAgICAgICByZXR1cm4g
djEuYXNOdW1iZXIoKSA9PSB2Mi5hc051bWJlcigpOwotCi0gICAgaWYgKCF2MS5pc0NlbGwoKSB8
fCAhdjIuaXNDZWxsKCkpCi0gICAgICAgIHJldHVybiB2MSA9PSB2MjsKLQotICAgIHJldHVybiBz
dHJpY3RFcXVhbFNsb3dDYXNlSW5saW5lKGV4ZWMsIHYxLCB2Mik7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIEpTQwotCi0jZW5kaWYgLy8gSlNWYWx1ZUlubGluZXNfaAotCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5oCShyZXZpc2lvbiAxNDAzNDYp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI3LDggKzI3LDggQEAKICNkZWZpbmUgTGl0ZXJhbFBhcnNlcl9oCiAKICNp
bmNsdWRlICJJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUg
IkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCi0jaW5jbHVkZSAiSlNWYWx1ZS5oIgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgJKHJldmlzaW9uIDE0MDM0NikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAkod29ya2luZyBj
b3B5KQpAQCAtMjQsOSArMjQsOSBAQAogCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgog
I2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIK
ICNpbmNsdWRlICJKU1Byb3h5LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKLSNpbmNsdWRlICJK
U1ZhbHVlSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmgJKHJldmlzaW9u
IDE0MDM0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5RGVzY3Jp
cHRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIFByb3BlcnR5
RGVzY3JpcHRvcl9oCiAjZGVmaW5lIFByb3BlcnR5RGVzY3JpcHRvcl9oCiAKLSNpbmNsdWRlICJK
U1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKICAg
ICBjbGFzcyBHZXR0ZXJTZXR0ZXI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm9wZXJ0eVNsb3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm9wZXJ0eVNsb3QuaAkocmV2aXNpb24gMTQwMzQ2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgJKHdvcmtpbmcgY29weSkKQEAgLTIxLDcgKzIx
LDcgQEAKICNpZm5kZWYgUHJvcGVydHlTbG90X2gKICNkZWZpbmUgUHJvcGVydHlTbG90X2gKIAot
I2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAi
UHJvcGVydHlOYW1lLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlPZmZzZXQuaCIKICNpbmNsdWRlICJS
ZWdpc3Rlci5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdGVjdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RlY3QuaAko
cmV2aXNpb24gMTQwMzQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdGVj
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAjZGVmaW5lIFByb3RlY3RfaAog
CiAjaW5jbHVkZSAiSGVhcC5oIgotI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0NK
U1ZhbHVlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDE0MDM0NikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI0LDExICsyNCwxMSBAQAogI2luY2x1ZGUgIkFycmF5UHJvdG90eXBl
LmgiCiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAi
SlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU09iamVj
dC5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmdCdWlsZGVyLmgi
Ci0jaW5jbHVkZSAiSlNWYWx1ZS5oIgogI2luY2x1ZGUgIk9iamVjdFByb3RvdHlwZS5oIgogI2lu
Y2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJSZWdFeHBPYmplY3QuaCIKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCShyZXZpc2lvbiAxNDAzNDYp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkod29ya2luZyBj
b3B5KQpAQCAtMjgsOSArMjgsOSBAQAogCiAjaW5jbHVkZSAiQ2xhc3NJbmZvLmgiCiAjaW5jbHVk
ZSAiSW5kZXhpbmdUeXBlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpT
Q2VsbC5oIgogI2luY2x1ZGUgIkpTVHlwZS5oIgotI2luY2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNs
dWRlICJQcm9wZXJ0eU1hcEhhc2hUYWJsZS5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZS5oIgog
I2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAx
NDAzNDYpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwyOSBAQAorMjAxMy0wMS0xOCAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBw
bGUuY29tPgorCisgICAgICAgIE9iamVjdGl2ZS1DIEFQSTogUmVuYW1lIEpTVmFsdWUuaC9BUElK
U1ZhbHVlLmggdG8gSlNDSlNWYWx1ZS5oL0pTVmFsdWUuaAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3MzI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLgorCisgICAgICAgIFdlJ3Jl
IHJlbmFtaW5nIHRoZXNlIHR3byBmaWxlcywgc28gd2UgaGF2ZSB0byByZXBsYWNlIHRoZSBuYW1l
cyBldmVyeXdoZXJlLgorCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9KU0NK
U1ZhbHVlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1
bnRpbWUvSlNWYWx1ZS5oLgorICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSlNW
YWx1ZS5oOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQXJyYXlCdWZmZXJWaWV3
SGVscGVyLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIu
aDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcDoK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0ludGVudENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmg6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSmF2YVNj
cmlwdENhbGxGcmFtZS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNr
RmFjdG9yeS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuaDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKiBiaW5k
aW5ncy9vYmpjL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaDoKKyAgICAgICAgKiBicmlkZ2UvYy9j
X3V0aWxpdHkuaDoKKwogMjAxMy0wMS0yMSAgVmlhdGNoZXNsYXYgT3N0YXBlbmtvICA8c2wub3N0
YXBlbmtvQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdW1F0XVtXZWJHbF0gUmFuZG9tIGNy
YXNoIGluIEdyYXBoaWNzQ29udGV4dDNEOjpkcmF3QXJyYXlzCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTQ0pTVmFsdWUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTQ0pTVmFsdWUuaAkocmV2
aXNpb24gMTQwMTk2KQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50
aW1lL0pTVmFsdWUuaDoxNDAxOTYpCisrKyBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVy
cy9ydW50aW1lL0pTQ0pTVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQgQEAKKyNp
Zm5kZWYgV2ViQ29yZV9GV0RfSlNWYWx1ZV9oCisjZGVmaW5lIFdlYkNvcmVfRldEX0pTVmFsdWVf
aAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTVmFsdWUuaD4KKyNlbmRpZgpJbmRleDogU291
cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9KU0NKU1ZhbHVlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9KU0NKU1Zh
bHVlLmgJKHJldmlzaW9uIDE0MDE5NikKKysrIFNvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFk
ZXJzL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAog
I2lmbmRlZiBXZWJDb3JlX0ZXRF9KU1ZhbHVlX2gKICNkZWZpbmUgV2ViQ29yZV9GV0RfSlNWYWx1
ZV9oCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNWYWx1ZS5oPgorI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTQ0pTVmFsdWUuaD4KICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvRm9y
d2FyZGluZ0hlYWRlcnMvcnVudGltZS9KU1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9KU1ZhbHVlLmgJKHJldmlzaW9uIDE0MDM0
NikKKysrIFNvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSlNWYWx1ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzAsMCBAQAotI2lmbmRlZiBXZWJDb3JlX0ZXRF9KU1Zh
bHVlX2gKLSNkZWZpbmUgV2ViQ29yZV9GV0RfSlNWYWx1ZV9oCi0jaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNWYWx1ZS5oPgotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0FycmF5QnVmZmVyVmlld0hlbHBlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQXJyYXlCdWZmZXJWaWV3SGVscGVyLmgJKHJldmlzaW9uIDE0MDM0NikK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXJyYXlCdWZmZXJWaWV3SGVscGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMzLDggKzMzLDggQEAKICNpbmNsdWRlIDxpbnRlcnByZXRlci9D
YWxsRnJhbWUuaD4KICNpbmNsdWRlIDxydW50aW1lL0FyZ0xpc3QuaD4KICNpbmNsdWRlIDxydW50
aW1lL0Vycm9yLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlLmg+CiAjaW5jbHVkZSA8
cnVudGltZS9KU09iamVjdC5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNWYWx1ZS5oPgogI2luY2x1
ZGUgPHJ1bnRpbWUvT3BlcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZlclZpZXcu
aD4KICNpbmNsdWRlIDx3dGYvVHlwZWRBcnJheUJhc2UuaD4KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuaAkocmV2aXNp
b24gMTQwMzQ2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5T
UmVzb2x2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIlhQ
YXRoTlNSZXNvbHZlci5oIgogI2luY2x1ZGUgPGhlYXAvU3Ryb25nLmg+CiAjaW5jbHVkZSA8aGVh
cC9TdHJvbmdJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU1ZhbHVlLmg+CisjaW5jbHVk
ZSA8cnVudGltZS9KU0NKU1ZhbHVlLmg+CiAjaW5jbHVkZSA8cnVudGltZS9PcGVyYXRpb25zLmg+
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xs
ZWN0aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24gMTQwMzQ2KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJKU05vZGVMaXN0LmgiCiAjaW5jbHVkZSAiTm9kZS5o
IgogI2luY2x1ZGUgIlN0YXRpY05vZGVMaXN0LmgiCi0jaW5jbHVkZSA8cnVudGltZS9KU1ZhbHVl
Lmg+CisjaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ludGVudENvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ludGVudENvbnN0cnVjdG9yLmNwcAkocmV2
aXNpb24gMTQwMzQ2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnRlbnRDb25z
dHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyLDEwICsyMiwxMCBAQAogCiAjaW5jbHVk
ZSAiRGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJK
U0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNJbnRl
bnQuaCIKICNpbmNsdWRlICJKU01lc3NhZ2VQb3J0Q3VzdG9tLmgiCi0jaW5jbHVkZSAiSlNWYWx1
ZS5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KICNpbmNsdWRlIDx3dGYvQXJyYXlCdWZm
ZXIuaD4KIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1
c3RvbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2Fn
ZVBvcnRDdXN0b20uaAkocmV2aXNpb24gMTQwMzQ2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3
IEBACiAjZGVmaW5lIEpTTWVzc2FnZVBvcnRDdXN0b21faAogCiAjaW5jbHVkZSAiTWVzc2FnZVBv
cnQuaCIKLSNpbmNsdWRlIDxydW50aW1lL0pTVmFsdWUuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pT
Q0pTVmFsdWUuaD4KICNpbmNsdWRlIDxydW50aW1lL09wZXJhdGlvbnMuaD4KICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVG
aWx0ZXJDb25kaXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU05vZGVGaWx0ZXJDb25kaXRpb24uaAkocmV2aXNpb24gMTQwMzQ2KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTIyLDcgKzIyLDcgQEAKIAogI2luY2x1ZGUgIk5vZGVGaWx0ZXJDb25kaXRpb24uaCIKICNp
bmNsdWRlIDxoZWFwL1dlYWsuaD4KLSNpbmNsdWRlIDxydW50aW1lL0pTVmFsdWUuaD4KKyNpbmNs
dWRlIDxydW50aW1lL0pTQ0pTVmFsdWUuaD4KICNpbmNsdWRlIDxydW50aW1lL09wZXJhdGlvbnMu
aD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcAkocmV2aXNpb24gMTQw
MzQ2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSmF2YVNjcmlwdENhbGxGcmFtZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEwICszMywxMCBAQAogI2luY2x1ZGUgIkpTRE9NV2lu
ZG93QmFzZS5oIgogI2luY2x1ZGUgPGRlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmg+CiAjaW5j
bHVkZSA8cnVudGltZS9Db21wbGV0aW9uLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVl
Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0dsb2JhbE9iamVjdC5oPgogI2luY2x1ZGUgPHJ1bnRp
bWUvSlNMb2NrLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU09iamVjdC5oPgotI2luY2x1ZGUgPHJ1
bnRpbWUvSlNWYWx1ZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiB1c2lu
ZyBuYW1lc3BhY2UgSlNDOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q2FsbFN0YWNrRmFjdG9yeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAJKHJldmlzaW9uIDE0MDM0NikKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Miw5ICs0Miw5IEBACiAjaW5jbHVkZSA8aW50ZXJwcmV0ZXIvQ2FsbEZy
YW1lLmg+CiAjaW5jbHVkZSA8aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaD4KICNpbmNsdWRlIDxy
dW50aW1lL0FyZ0xpc3QuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWUuaD4KICNpbmNs
dWRlIDxydW50aW1lL0pTRnVuY3Rpb24uaD4KICNpbmNsdWRlIDxydW50aW1lL0pTR2xvYmFsRGF0
YS5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNWYWx1ZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0VmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5oCShyZXZpc2lvbiAxNDAzNDYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICsz
NSw3IEBACiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlIDxoZWFwL1N0cm9uZy5o
PgogI2luY2x1ZGUgPGhlYXAvU3Ryb25nSW5saW5lcy5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNW
YWx1ZS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZS5oPgogI2luY2x1ZGUgPHJ1bnRp
bWUvT3BlcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAkocmV2aXNpb24gMTQwMzQ2KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI5LDcgKzI5LDcgQEAKIAogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5j
bHVkZSA8aGVhcC9TdHJvbmcuaD4KLSNpbmNsdWRlIDxydW50aW1lL0pTVmFsdWUuaD4KKyNpbmNs
dWRlIDxydW50aW1lL0pTQ0pTVmFsdWUuaD4KICNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4K
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9iamVjdFByaXZhdGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9i
amVjdFByaXZhdGUuaAkocmV2aXNpb24gMTQwMzQ2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvb2JqYy9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcg
KzI3LDcgQEAKICNkZWZpbmUgX1dFQl9TQ1JJUFRfT0JKRUNUX1BSSVZBVEVfSF8KIAogI2ltcG9y
dCAiV2ViU2NyaXB0T2JqZWN0LmgiCi0jaW1wb3J0IDxydW50aW1lL0pTVmFsdWUuaD4KKyNpbXBv
cnQgPHJ1bnRpbWUvSlNDSlNWYWx1ZS5oPgogI2ltcG9ydCA8d3RmL1Bhc3NSZWZQdHIuaD4KIAog
bmFtZXNwYWNlIEpTQyB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX3V0aWxpdHku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX3V0aWxpdHkuaAkocmV2
aXNpb24gMTQwMzQ2KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY191dGlsaXR5LmgJKHdv
cmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lO
X0FQSSkKIAogI2luY2x1ZGUgIm5wcnVudGltZV9pbnRlcm5hbC5oIgotI2luY2x1ZGUgPHJ1bnRp
bWUvSlNWYWx1ZS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZS5oPgogI2luY2x1ZGUg
PHJ1bnRpbWUvT3BlcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE0MDM0NikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDEzLTAxLTE4ICBNYXJrIEhhaG5lbmJl
cmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgT2JqZWN0aXZlLUMgQVBJOiBS
ZW5hbWUgSlNWYWx1ZS5oL0FQSUpTVmFsdWUuaCB0byBKU0NKU1ZhbHVlLmgvSlNWYWx1ZS5oCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDczMjcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSdyZSByZW5h
bWluZyB0aGVzZSB0d28gZmlsZXMsIHNvIHdlIGhhdmUgdG8gcmVwbGFjZSB0aGUgbmFtZXMgZXZl
cnl3aGVyZS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKwog
MjAxMy0wMS0yMSAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z25zQGdub21lLm9yZz4KIAogICAg
ICAgICBSRUdSRVNTSU9OIChyMTQwMjg1KTogR1RLIHVzZXMgV0tQYWdlUmVzb3VyY2VMb2FkQ2xp
ZW50IHdoaWNoIHdhcyByZW1vdmVkCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAxNDAzNDYpCisrKyBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNyw4
ICsxMjcsOCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEl0ZXJhdG9yLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9WaXNpYmxlUG9zaXRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL21hcmt1cC5oPgor
I2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2Nr
Lmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU1ZhbHVlLmg+CiAjaW5jbHVkZSA8cnVudGltZS9PcGVy
YXRpb25zLmg+CiAKICNpZiBFTkFCTEUoTUhUTUwpCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAxNDAzNDYpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMy0wMS0xOCAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5l
bmJlcmdAYXBwbGUuY29tPgorCisgICAgICAgIE9iamVjdGl2ZS1DIEFQSTogUmVuYW1lIEpTVmFs
dWUuaC9BUElKU1ZhbHVlLmggdG8gSlNDSlNWYWx1ZS5oL0pTVmFsdWUuaAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3MzI3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UncmUgcmVuYW1pbmcgdGhlc2Ug
dHdvIGZpbGVzLCBzbyB3ZSBoYXZlIHRvIHJlcGxhY2UgdGhlIG5hbWVzIGV2ZXJ5d2hlcmUuCisK
KyAgICAgICAgKiBET00vV2ViRE9NT3BlcmF0aW9ucy5tbToKKyAgICAgICAgKiBXZWJWaWV3L1dl
YkZyYW1lLm1tOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKwogMjAxMy0wMS0xOSAg
UGhpbGlwIFJvZ2VycyAgPHBkckBnb29nbGUuY29tPgogCiAgICAgICAgIE1lcmdlIFNWR1N0eWxh
YmxlIGludG8gU1ZHU3R5bGVkRWxlbWVudApJbmRleDogU291cmNlL1dlYktpdC9tYWMvRE9NL1dl
YkRPTU9wZXJhdGlvbnMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvRE9NL1dl
YkRPTU9wZXJhdGlvbnMubW0JKHJldmlzaW9uIDE0MDM0NikKKysrIFNvdXJjZS9XZWJLaXQvbWFj
L0RPTS9XZWJET01PcGVyYXRpb25zLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBA
CiAjaW1wb3J0IDxXZWJLaXQvRE9NRXh0ZW5zaW9ucy5oPgogI2ltcG9ydCA8V2ViS2l0L0RPTUhU
TUwuaD4KICNpbXBvcnQgPHJ1bnRpbWUvSlNMb2NrLmg+Ci0jaW1wb3J0IDxydW50aW1lL0pTVmFs
dWUuaD4KKyNpbXBvcnQgPHJ1bnRpbWUvSlNDSlNWYWx1ZS5oPgogI2ltcG9ydCA8d3RmL0Fzc2Vy
dGlvbnMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViRnJhbWUubW0JKHJldmlzaW9uIDE0MDM0NikKKysrIFNvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViRnJhbWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTk3LDcgKzk3LDcgQEAK
ICNpbXBvcnQgPFdlYktpdFN5c3RlbUludGVyZmFjZS5oPgogI2ltcG9ydCA8cnVudGltZS9KU0xv
Y2suaD4KICNpbXBvcnQgPHJ1bnRpbWUvSlNPYmplY3QuaD4KLSNpbXBvcnQgPHJ1bnRpbWUvSlNW
YWx1ZS5oPgorI2ltcG9ydCA8cnVudGltZS9KU0NKU1ZhbHVlLmg+CiAjaW1wb3J0IDx3dGYvQ3Vy
cmVudFRpbWUuaD4KIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9uIDE0MDM0NikKKysrIFNvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTg4LDcgKzE4OCw3IEBACiAj
aW1wb3J0IDxydW50aW1lL0RhdGVJbnN0YW5jZS5oPgogI2ltcG9ydCA8cnVudGltZS9Jbml0aWFs
aXplVGhyZWFkaW5nLmg+CiAjaW1wb3J0IDxydW50aW1lL0pTTG9jay5oPgotI2ltcG9ydCA8cnVu
dGltZS9KU1ZhbHVlLmg+CisjaW1wb3J0IDxydW50aW1lL0pTQ0pTVmFsdWUuaD4KICNpbXBvcnQg
PHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW1wb3J0IDx3dGYvSGFzaFRyYWl0cy5oPgogI2ltcG9ydCA8
d3RmL01haW5UaHJlYWQuaD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183815</attachid>
            <date>2013-01-21 12:03:53 -0800</date>
            <delta_ts>2013-01-24 13:41:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107327-20130121120052.patch</filename>
            <type>text/plain</type>
            <size>209551</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQwMzQ5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkzIEBA
CisyMDEzLTAxLTIxICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgT2JqZWN0aXZlLUMgQVBJOiBSZW5hbWUgSlNWYWx1ZS5oL0FQSUpTVmFsdWUuaCB0
byBKU0NKU1ZhbHVlLmgvSlNWYWx1ZS5oCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDczMjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBXZSdyZSByZW5hbWluZyB0aGVzZSB0d28gZmlsZXMsIHNvIHdlIGhh
dmUgdG8gcmVwbGFjZSB0aGUgbmFtZXMgZXZlcnl3aGVyZS4KKworICAgICAgICAqIEFQSS9BUElD
YXN0Lmg6CisgICAgICAgICogQVBJL0FQSUpTVmFsdWUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBB
UEkvSlNCbG9ja0FkYXB0b3IubW06CisgICAgICAgICogQVBJL0pTU3RyaW5nUmVmQ0YuY3BwOgor
ICAgICAgICAqIEFQSS9KU1ZhbHVlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvQVBJSlNWYWx1ZS5oLgorICAgICAgICAqIEFQSS9KU1ZhbHVlLm1tOgorICAgICAgICAq
IEFQSS9KU1ZhbHVlSW50ZXJuYWwuaDoKKyAgICAgICAgKiBBUEkvSlNWYWx1ZVJlZi5jcHA6Cisg
ICAgICAgICogQVBJL0pTV2Vha09iamVjdE1hcFJlZlByaXZhdGUuY3BwOgorICAgICAgICAqIEFQ
SS9KYXZhU2NyaXB0Q29yZS5oOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9qL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRhcmdldC5wcmk6Cisg
ICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaDoKKyAgICAgICAgKiBieXRlY29kZS9D
b2RlQmxvY2suY3BwOgorICAgICAgICAqIGJ5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVBy
b2ZpbGUuaDoKKyAgICAgICAgKiBieXRlY29kZS9SZXNvbHZlR2xvYmFsU3RhdHVzLmNwcDoKKyAg
ICAgICAgKiBieXRlY29kZS9SZXNvbHZlR2xvYmFsU3RhdHVzLmg6CisgICAgICAgICogYnl0ZWNv
ZGUvU3BlY3VsYXRlZFR5cGUuaDoKKyAgICAgICAgKiBieXRlY29kZS9WYWx1ZVJlY292ZXJ5Lmg6
CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKiBkZmcvREZH
SklUQ29tcGlsZXIuY3BwOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgICogZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHA6CisgICAgICAgICogaGVhcC9Db3BpZWRCbG9jay5oOgorICAgICAgICAqIGhlYXAvSGFu
ZGxlU3RhY2suY3BwOgorICAgICAgICAqIGhlYXAvSGFuZGxlVHlwZXMuaDoKKyAgICAgICAgKiBo
ZWFwL1dlYWtJbXBsLmg6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAg
ICAgICAgKiBpbnRlcnByZXRlci9SZWdpc3Rlci5oOgorICAgICAgICAqIGludGVycHJldGVyL1ZN
SW5zcGVjdG9yLmg6CisgICAgICAgICogaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwOgorICAg
ICAgICAqIGppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmg6CisgICAgICAgICogaml0L0pJVENvZGUu
aDoKKyAgICAgICAgKiBqaXQvSklURXhjZXB0aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVEV4
Y2VwdGlvbnMuaDoKKyAgICAgICAgKiBqaXQvSlNJbnRlcmZhY2VKSVQuaDoKKyAgICAgICAgKiBs
bGludC9MTEludENMb29wLmg6CisgICAgICAgICogbGxpbnQvTExJbnREYXRhLmg6CisgICAgICAg
ICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVy
Qnl0ZWNvZGUuaDoKKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxlckJ5dGVjb2RlU2VxdWVuY2Uu
aDoKKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxlckJ5dGVjb2Rlcy5oOgorICAgICAgICAqIHBy
b2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb24uaDoKKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxl
ckNvbXBpbGVkQnl0ZWNvZGUuaDoKKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxlckRhdGFiYXNl
Lmg6CisgICAgICAgICogcHJvZmlsZXIvUHJvZmlsZXJPU1JFeGl0Lmg6CisgICAgICAgICogcHJv
ZmlsZXIvUHJvZmlsZXJPU1JFeGl0U2l0ZS5oOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVy
T3JpZ2luLmg6CisgICAgICAgICogcHJvZmlsZXIvUHJvZmlsZXJPcmlnaW5TdGFjay5oOgorICAg
ICAgICAqIHJ1bnRpbWUvQXJnTGlzdC5jcHA6CisgICAgICAgICogcnVudGltZS9DYWNoZWRUcmFu
c2NlbmRlbnRhbEZ1bmN0aW9uLmg6CisgICAgICAgICogcnVudGltZS9DYWxsRGF0YS5oOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29tcGxldGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvQ29uc3RydWN0
RGF0YS5oOgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAg
KiBydW50aW1lL0RhdGVJbnN0YW5jZS5jcHA6CisgICAgICAgICogcnVudGltZS9EYXRlUHJvdG90
eXBlLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTQVBJVmFsdWVXcmFwcGVyLmg6CisgICAgICAg
ICogcnVudGltZS9KU0NKU1ZhbHVlLmNwcDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAuCisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmg6
IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaC4KKyAg
ICAgICAgKEpTVmFsdWUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaDog
Q29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZUlubGluZXMu
aC4KKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5oOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5j
dGlvbnMuaDoKKyAgICAgICAgKiBydW50aW1lL0pTU3RyaW5nSm9pbmVyLmg6CisgICAgICAgICog
cnVudGltZS9KU1ZhbHVlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBydW50aW1lL0pTVmFsdWUu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBydW50aW1lL0pTVmFsdWVJbmxpbmVzLmg6IFJlbW92ZWQu
CisgICAgICAgICogcnVudGltZS9MaXRlcmFsUGFyc2VyLmg6CisgICAgICAgICogcnVudGltZS9P
cGVyYXRpb25zLmg6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuaDoKKyAg
ICAgICAgKiBydW50aW1lL1Byb3BlcnR5U2xvdC5oOgorICAgICAgICAqIHJ1bnRpbWUvUHJvdGVj
dC5oOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKiBy
dW50aW1lL1N0cnVjdHVyZS5oOgorCiAyMDEzLTAxLTIwICBHZW9mZnJleSBHYXJlbiAgPGdnYXJl
bkBhcHBsZS5jb20+CiAKICAgICAgICAgV2VhayBHQyBtYXBzIHNob3VsZCBiZSBlYXNpZXIgdG8g
dXNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxNDAz
NDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTI0Nyw3ICsyNDcsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIHJ1
bnRpbWUvSlNTdHJpbmcuY3BwCiAgICAgcnVudGltZS9KU1N0cmluZ0pvaW5lci5jcHAKICAgICBy
dW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwCi0gICAgcnVudGltZS9KU1ZhbHVlLmNwcAor
ICAgIHJ1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKICAgICBydW50aW1lL0pTVmFyaWFibGVPYmplY3Qu
Y3BwCiAgICAgcnVudGltZS9KU1dyYXBwZXJPYmplY3QuY3BwCiAgICAgcnVudGltZS9MaXRlcmFs
UGFyc2VyLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0JKHJldmlzaW9uIDE0MDM0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC02NDYsOSArNjQ2LDkgQEAgamF2YXNjcmlwdGNv
cmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xU
YWJsZU9iamVjdC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaCBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oIFwKLQlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmNwcCBcCi0JU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNWYWx1ZS5oIFwKLQlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1ZhbHVlSW5saW5lcy5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1Zh
bHVlLmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oIFwK
KwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oIFwKIAlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmNwcCBcCiAJU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oIFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dpdGhTY29wZS5oIFwKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9UYXJnZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9UYXJnZXQucHJpCShyZXZpc2lvbiAxNDAzNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
VGFyZ2V0LnByaQkod29ya2luZyBjb3B5KQpAQCAtMjY2LDcgKzI2Niw3IEBAIFNPVVJDRVMgKz0g
XAogICAgIHJ1bnRpbWUvSlNTdHJpbmcuY3BwIFwKICAgICBydW50aW1lL0pTU3RyaW5nSm9pbmVy
LmNwcCBcCiAgICAgcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcCBcCi0gICAgcnVudGlt
ZS9KU1ZhbHVlLmNwcCBcCisgICAgcnVudGltZS9KU0NKU1ZhbHVlLmNwcCBcCiAgICAgcnVudGlt
ZS9KU1ZhcmlhYmxlT2JqZWN0LmNwcCBcCiAgICAgcnVudGltZS9KU1dyYXBwZXJPYmplY3QuY3Bw
IFwKICAgICBydW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvQVBJQ2FzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvQVBJQ2FzdC5oCShyZXZpc2lvbiAxNDAzNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0FQSUNhc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsOCArMjcsOCBAQAogI2RlZmlu
ZSBBUElDYXN0X2gKIAogI2luY2x1ZGUgIkpTQVBJVmFsdWVXcmFwcGVyLmgiCisjaW5jbHVkZSAi
SlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCi0jaW5jbHVkZSAiSlNW
YWx1ZS5oIgogI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgogCiBuYW1lc3BhY2UgSlNDIHsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJSlNWYWx1ZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJSlNWYWx1ZS5oCShyZXZpc2lvbiAxNDAz
NDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUpTVmFsdWUuaAkod29ya2luZyBj
b3B5KQpAQCAtMSwyOTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQot
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKLSAqLwotCi0jaWYgSlNfT0JKQ19BUElfRU5BQkxFRAotCi1AY2xhc3MgSlNDb250ZXh0
OwotCi0vLyBBIEpTVmFsdWUgaXMgYSByZWZlcmVuY2UgdG8gYSB2YWx1ZSB3aXRoaW4gdGhlIEph
dmFTY3JpcHQgb2JqZWN0IHNwYWNlIG9mIGEKLS8vIEpTVmlydHVhbE1hY2hpbmUuIEFsbCBpbnN0
YW5jZXMgb2YgSlNWYWx1ZSBvcmlnaW5hdGUgZnJvbSBhIEpTQ29udGV4dCBhbmQKLS8vIGhvbGQg
YSBzdHJvbmcgcmVmZXJlbmNlIHRvIHRoaXMgSlNDb250ZXh0LiBBcyBsb25nIGFzIGFueSB2YWx1
ZSBhc3NvY2lhdGVkIHdpdGggCi0vLyBhIHBhcnRpY3VsYXIgSlNDb250ZXh0IGlzIHJldGFpbmVk
LCB0aGF0IEpTQ29udGV4dCB3aWxsIHJlbWFpbiBhbGl2ZS4gCi0vLyBXaGVyZSBhbiBpbnN0YW5j
ZSBtZXRob2QgaXMgaW52b2tlZCB1cG9uIGEgSlNWYWx1ZSwgYW5kIHRoaXMgcmV0dXJucyBhbm90
aGVyIAotLy8gSlNWYWx1ZSwgdGhlIHJldHVybmVkIEpTVmFsdWUgd2lsbCBvcmlnaW5hdGUgZnJv
bSB0aGUgc2FtZSBKU0NvbnRleHQgYXMgdGhlIAotLy8gSlNWYWx1ZSBvbiB3aGljaCB0aGUgbWV0
aG9kIHdhcyBpbnZva2VkLgotLy8KLS8vIEZvciBhbGwgbWV0aG9kcyB0YWtpbmcgYXJndW1lbnRz
IG9mIHR5cGUgaWQsIGFyZ3VtZW50cyB3aWxsIGJlIGNvbnZlcnRlZAotLy8gaW50byBhIEphdmFT
Y3JpcHQgdmFsdWUgYWNjb3JkaW5nIHRvIHRoZSBjb252ZXJzaW9uIHNwZWNpZmllZCBiZWxvdy4K
LS8vIEFsbCBKYXZhU2NyaXB0IHZhbHVlcyBhcmUgYXNzb2NpYXRlZCB3aXRoIGEgcGFydGljdWxh
ciBKU1ZpcnR1YWxNYWNoaW5lCi0vLyAodGhlIGFzc29jaWF0ZWQgSlNWaXJ0dWFsTWFjaGluZSBp
cyBhdmFpbGFibGUgaW5kaXJlY3RseSB2aWEgdGhlIGNvbnRleHQKLS8vIHByb3BlcnR5KS4gQW4g
aW5zdGFuY2Ugb2YgSlNWYWx1ZSBtYXkgb25seSBiZSBwYXNzZWQgYXMgYW4gYXJndW1lbnQgdG8K
LS8vIG1ldGhvZHMgb24gaW5zdGFuY2VzIG9mIEpTVmFsdWUgYW5kIEpTQ29udGV4dCB0aGF0IGJl
bG9uZyB0byB0aGUgc2FtZQotLy8gSlNWaXJ0dWFsTWFjaGluZSAtIHBhc3NpbmcgYSBKU1ZhbHVl
IHRvIGEgbWV0aG9kIG9uIGFuIG9iamVjdCBvcmlnaW5hdGluZwotLy8gZnJvbSBhIGRpZmZlcmVu
dCBKU1ZpcnR1YWxNYWNoaW5lIHdpbGwgcmVzdWx0IGluIGFuIE9iamVjdGl2ZS1DIGV4Y2VwdGlv
bgotLy8gYmVpbmcgcmFpc2VkLgotLy8KLS8vIENvbnZlcnNpb24gYmV0d2VlbiBPYmplY3RpdmUt
QyBhbmQgSmF2YVNjcmlwdCB0eXBlcy4KLS8vCi0vLyBXaGVuIGNvbnZlcnRpbmcgYmV0d2VlbiBK
YXZhU2NyaXB0IHZhbHVlcyBhbmQgT2JqZWN0aXZlLUMgb2JqZWN0cyBhIGNvcHkgaXMKLS8vIHBl
cmZvcm1lZC4gVmFsdWVzIG9mIHR5cGVzIGxpc3RlZCBiZWxvdyBhcmUgY29waWVkIHRvIHRoZSBj
b3JyZXNwb25kaW5nCi0vLyB0eXBlcyBvbiBjb252ZXJzaW9uIGluIGVhY2ggZGlyZWN0aW9uLiBG
b3IgTlNEaWN0aW9uYXJpZXMsIGVudHJpZXMgaW4gdGhlCi0vLyBkaWN0aW9uYXJ5IHRoYXQgYXJl
IGtleWVkIGJ5IHN0cmluZ3MgYXJlIGNvcGllZCBvbnRvIGEgSmF2YVNjcmlwdCBvYmplY3QuCi0v
LyBGb3IgZGljdGlvbmFyaWVzIGFuZCBhcnJheXMsIGNvbnZlcnNpb24gaXMgcmVjdXJzaXZlLCB3
aXRoIHRoZSBzYW1lIG9iamVjdAotLy8gY29udmVyc2lvbiBiZWluZyBhcHBsaWVkIHRvIGFsbCBl
bnRyaWVzIGluIHRoZSBjb2xsZWN0aW9uLgotLy8KLS8vICAgT2JqZWN0aXZlLUMgdHlwZSAgfCAg
IEphdmFTY3JpcHQgdHlwZQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi0vLyAgICAgICAgIG5pbCAgICAgICAgIHwgICAgIHVuZGVmaW5lZAotLy8gICAgICAg
IE5TTnVsbCAgICAgICB8ICAgICAgICBudWxsCi0vLyAgICAgICBOU1N0cmluZyAgICAgIHwgICAg
ICAgc3RyaW5nCi0vLyAgICAgICBOU051bWJlciAgICAgIHwgICBudW1iZXIsIGJvb2xlYW4KLS8v
ICAgICBOU0RpY3Rpb25hcnkgICAgfCAgIE9iamVjdCBvYmplY3QKLS8vICAgICAgIE5TQXJyYXkg
ICAgICAgfCAgICBBcnJheSBvYmplY3QKLS8vICAgICAgICBOU0RhdGUgICAgICAgfCAgICAgRGF0
ZSBvYmplY3QKLS8vICAgICAgIE5TQmxvY2sgKiAgICAgfCAgIEZ1bmN0aW9uIG9iamVjdCAqCi0v
LyAgICAgICAgICBpZCAqKiAgICAgIHwgICBXcmFwcGVyIG9iamVjdCAqKgotLy8gICAgICAgIENs
YXNzICoqKiAgICB8IENvbnN0cnVjdG9yIG9iamVjdCAqKioKLS8vCi0vLyAqIEluc3RhbmNlcyBv
ZiBOU0Jsb2NrIHdpdGggc3VwcG9ydGVkIGFyZ3VtZW50cyB0eXBlcyB3aWxsIGJlIHByZXNlbnRl
ZCB0bwotLy8gSmF2YVNjcmlwdCBhcyBhIGNhbGxhYmxlIEZ1bmN0aW9uIG9iamVjdC4gRm9yIG1v
cmUgaW5mb3JtYXRpb24gb24gc3VwcG9ydGVkCi0vLyBhcmd1bWVudCB0eXBlcyBzZWUgSlNFeHBv
cnQuaC4gSWYgYSBKYXZhU2NyaXB0IEZ1bmN0aW9uIG9yaWdpbmF0aW5nIGZyb20gYW4KLS8vIE9i
amVjdGl2ZS1DIGJsb2NrIGlzIGNvbnZlcnRlZCBiYWNrIHRvIGFuIE9iamVjdGl2ZS1DIG9iamVj
dCB0aGUgYmxvY2sgd2lsbAotLy8gYmUgcmV0dXJuZWQuIEFsbCBvdGhlciBKYXZhU2NyaXB0IGZ1
bmN0aW9ucyB3aWxsIGJlIGNvbnZlcnRlZCBpbiB0aGUgc2FtZQotLy8gbWFubmVyIGFzIGEgSmF2
YVNjcmlwdCBvYmplY3Qgb2YgdHlwZSBPYmplY3QuCi0vLwotLy8gKiogRm9yIE9iamVjdGl2ZS1D
IGluc3RhbmNlcyB0aGF0IGRvIG5vdCBkZXJpdmUgZnJvbSB0aGUgc2V0IG9mIHR5cGVzIGxpc3Rl
ZAotLy8gYWJvdmUsIGEgd3JhcHBlciBvYmplY3QgdG8gcHJvdmlkZSBhIHJldGFpbmluZyBoYW5k
bGUgdG8gdGhlIE9iamVjdGl2ZS1DCi0vLyBpbnN0YW5jZSBmcm9tIEphdmFTY3JpcHQuIEZvciBt
b3JlIGluZm9ybWF0aW9uIG9uIHRoZXNlIHdyYXBwZXIgb2JqZWN0cywgc2VlCi0vLyBKU0V4cG9y
dC5oLiBXaGVuIGEgSmF2YVNjcmlwdCB3cmFwcGVyIG9iamVjdCBpcyBjb252ZXJ0ZWQgYmFjayB0
byBPYmplY3RpdmUtQwotLy8gdGhlIE9iamVjdGl2ZS1DIGluc3RhbmNlIGJlaW5nIHJldGFpbmVk
IGJ5IHRoZSB3cmFwcGVyIGlzIHJldHVybmVkLgotLy8KLS8vICoqKiBGb3IgT2JqZWN0aXZlLUMg
Q2xhc3Mgb2JqZWN0cyBhIGNvbnN0cnVjdG9yIG9iamVjdCBjb250YWluaW5nIGV4cG9ydGVkCi0v
LyBjbGFzcyBtZXRob2RzIHdpbGwgYmUgcmV0dXJuZWQuIFNlZSBKU0V4cG9ydC5oIGZvciBtb3Jl
IGluZm9ybWF0aW9uIG9uCi0vLyBjb25zdHJ1Y3RvciBvYmplY3RzLgotCi1OU19DTEFTU19BVkFJ
TEFCTEUoMTBfOSwgTkEpCi1AaW50ZXJmYWNlIEpTVmFsdWUgOiBOU09iamVjdAotCi0vLyBDcmVh
dGUgYSBKU1ZhbHVlIGJ5IGNvbnZlcnRpbmcgYW4gT2JqZWN0aXZlLUMgb2JqZWN0LgotKyAoSlNW
YWx1ZSAqKXZhbHVlV2l0aE9iamVjdDooaWQpdmFsdWUgaW5Db250ZXh0OihKU0NvbnRleHQgKilj
b250ZXh0OwotLy8gQ3JlYXRlIGEgSmF2YVNjcmlwdCB2YWx1ZSBmcm9tIGFuIE9iamVjdGl2ZS1D
IHByaW1pdGl2ZSB0eXBlLgotKyAoSlNWYWx1ZSAqKXZhbHVlV2l0aEJvb2w6KEJPT0wpdmFsdWUg
aW5Db250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0OwotKyAoSlNWYWx1ZSAqKXZhbHVlV2l0aERv
dWJsZTooZG91YmxlKXZhbHVlIGluQ29udGV4dDooSlNDb250ZXh0ICopY29udGV4dDsKLSsgKEpT
VmFsdWUgKil2YWx1ZVdpdGhJbnQzMjooaW50MzJfdCl2YWx1ZSBpbkNvbnRleHQ6KEpTQ29udGV4
dCAqKWNvbnRleHQ7Ci0rIChKU1ZhbHVlICopdmFsdWVXaXRoVUludDMyOih1aW50MzJfdCl2YWx1
ZSBpbkNvbnRleHQ6KEpTQ29udGV4dCAqKWNvbnRleHQ7Ci0vLyBDcmVhdGUgYSBKYXZhU2NyaXB0
IHZhbHVlIGluIHRoaXMgY29udGV4dC4KLSsgKEpTVmFsdWUgKil2YWx1ZVdpdGhOZXdPYmplY3RJ
bkNvbnRleHQ6KEpTQ29udGV4dCAqKWNvbnRleHQ7Ci0rIChKU1ZhbHVlICopdmFsdWVXaXRoTmV3
QXJyYXlJbkNvbnRleHQ6KEpTQ29udGV4dCAqKWNvbnRleHQ7Ci0rIChKU1ZhbHVlICopdmFsdWVX
aXRoTmV3UmVndWxhckV4cHJlc3Npb25Gcm9tUGF0dGVybjooTlNTdHJpbmcgKilwYXR0ZXJuIGZs
YWdzOihOU1N0cmluZyAqKWZsYWdzIGluQ29udGV4dDooSlNDb250ZXh0ICopY29udGV4dDsKLSsg
KEpTVmFsdWUgKil2YWx1ZVdpdGhOZXdFcnJvckZyb21NZXNzYWdlOihOU1N0cmluZyAqKW1lc3Nh
Z2UgaW5Db250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0OwotKyAoSlNWYWx1ZSAqKXZhbHVlV2l0
aE51bGxJbkNvbnRleHQ6KEpTQ29udGV4dCAqKWNvbnRleHQ7Ci0rIChKU1ZhbHVlICopdmFsdWVX
aXRoVW5kZWZpbmVkSW5Db250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0OwotCi0vLyBDb252ZXJ0
IHRoaXMgdmFsdWUgdG8gYSBjb3JyZXNwb25kaW5nIE9iamVjdGl2ZS1DIG9iamVjdCwgYWNjb3Jk
aW5nIHRvIHRoZQotLy8gY29udmVyc2lvbiBzcGVjaWZpZWQgYWJvdmUuCi0tIChpZCl0b09iamVj
dDsKLS8vIENvbnZlcnQgdGhpcyB2YWx1ZSB0byBhIGNvcnJlc3BvbmRpbmcgT2JqZWN0aXZlLUMg
b2JqZWN0LCBpZiB0aGUgcmVzdWx0IGlzCi0vLyBub3Qgb2YgdGhlIHNwZWNpZmllZCBjbGFzcyB0
aGVuIG5pbCB3aWxsIGJlIHJldHVybmVkLgotLSAoaWQpdG9PYmplY3RPZkNsYXNzOihDbGFzcyll
eHBlY3RlZENsYXNzOwotLy8gVGhlIHZhbHVlIGlzIGNvcGllZCB0byBhIGJvb2xlYW4gYWNjb3Jk
aW5nIHRvIHRoZSBjb252ZXJzaW9uIHNwZWNpZmllZCBieSB0aGUKLS8vIEphdmFTY3JpcHQgbGFu
Z3VhZ2UuCi0tIChCT09MKXRvQm9vbDsKLS8vIFRoZSB2YWx1ZSBpcyBjb3BpZWQgdG8gYSBudW1i
ZXIgYWNjb3JkaW5nIHRvIHRoZSBjb252ZXJzaW9uIHNwZWNpZmllZCBieSB0aGUKLS8vIEphdmFT
Y3JpcHQgbGFuZ3VhZ2UuCi0tIChkb3VibGUpdG9Eb3VibGU7Ci0vLyBUaGUgdmFsdWUgaXMgY29w
aWVkIHRvIGFuIGludGVnZXIgYWNjb3JkaW5nIHRvIHRoZSBjb252ZXJzaW9uIHNwZWNpZmllZCBi
eQotLy8gdGhlIEphdmFTY3JpcHQgbGFuZ3VhZ2UuCi0tIChpbnQzMl90KXRvSW50MzI7Ci0vLyBU
aGUgdmFsdWUgaXMgY29waWVkIHRvIGFuIGludGVnZXIgYWNjb3JkaW5nIHRvIHRoZSBjb252ZXJz
aW9uIHNwZWNpZmllZCBieQotLy8gdGhlIEphdmFTY3JpcHQgbGFuZ3VhZ2UuCi0tICh1aW50MzJf
dCl0b1VJbnQzMjsKLS8vIElmIHRoZSB2YWx1ZSBpcyBhIGJvb2xlYW4sIGEgTlNOdW1iZXIgdmFs
dWUgb2YgQFlFUyBvciBATk8gd2lsbCBiZSByZXR1cm5lZC4KLS8vIEZvciBhbGwgb3RoZXIgdHlw
ZXMgdGhlIHZhbHVlIHdpbGwgYmUgY29waWVkIHRvIGEgbnVtYmVyIGFjY29yZGluZyB0byB0aGUK
LS8vIGNvbnZlcnNpb24gc3BlY2lmaWVkIGJ5IHRoZSBKYXZhU2NyaXB0IGxhbmd1YWdlLgotLSAo
TlNOdW1iZXIgKil0b051bWJlcjsKLS8vIFRoZSB2YWx1ZSBpcyBjb3BpZWQgdG8gYSBzdHJpbmcg
YWNjb3JkaW5nIHRvIHRoZSBjb252ZXJzaW9uIHNwZWNpZmllZCBieSB0aGUKLS8vIEphdmFTY3Jp
cHQgbGFuZ3VhZ2UuCi0tIChOU1N0cmluZyAqKXRvU3RyaW5nOwotLy8gVGhlIHZhbHVlIGlzIGNv
bnZlcnRlZCB0byBhIG51bWJlciByZXByZXNlbnRpbmcgYSB0aW1lIGludGVydmFsIHNpbmNlIDE5
NzAsCi0vLyBhbmQgYSBuZXcgTlNEYXRlIGluc3RhbmNlIGlzIHJldHVybmVkLgotLSAoTlNEYXRl
ICopdG9EYXRlOwotLy8gSWYgdGhlIHZhbHVlIGlzIG51bGwgb3IgdW5kZWZpbmVkIHRoZW4gbmls
IGlzIHJldHVybmVkLgotLy8gSWYgdGhlIHZhbHVlIGlzIG5vdCBhbiBvYmplY3QgdGhlbiBhIEph
dmFTY3JpcHQgVHlwZUVycm9yIHdpbGwgYmUgdGhyb3duLgotLy8gVGhlIHByb3BlcnR5ICJsZW5n
dGgiIGlzIHJlYWQgZnJvbSB0aGUgb2JqZWN0LCBjb252ZXJ0ZWQgdG8gYW4gdW5zaWduZWQKLS8v
IGludGVnZXIsIGFuZCBhbiBOU0FycmF5IG9mIHRoaXMgc2l6ZSBpcyBhbGxvY2F0ZWQuIFByb3Bl
cnRpZXMgY29ycmVzcG9uZGluZwotLy8gdG8gaW5kaWNpZXMgd2l0aGluIHRoZSBhcnJheSBib3Vu
ZHMgd2lsbCBiZSBjb3BpZWQgdG8gdGhlIGFycmF5LCB3aXRoCi0vLyBPYmplY3RpdmUtQyBvYmpl
Y3RzIGNvbnZlcnRlZCB0byBlcXVpdmFsZW50IEpTVmFsdWVzIGFzIHNwZWNpZmllZC4KLS0gKE5T
QXJyYXkgKil0b0FycmF5OwotLy8gSWYgdGhlIHZhbHVlIGlzIG51bGwgb3IgdW5kZWZpbmVkIHRo
ZW4gbmlsIGlzIHJldHVybmVkLgotLy8gSWYgdGhlIHZhbHVlIGlzIG5vdCBhbiBvYmplY3QgdGhl
biBhIEphdmFTY3JpcHQgVHlwZUVycm9yIHdpbGwgYmUgdGhyb3duLgotLy8gQWxsIGVudW1lcmFi
bGUgcHJvcGVydGllcyBvZiB0aGUgb2JqZWN0IGFyZSBjb3BpZWQgdG8gdGhlIGRpY3Rpb25hcnks
IHdpdGgKLS8vIE9iamVjdGl2ZS1DIG9iamVjdHMgY29udmVydGVkIHRvIGVxdWl2YWxlbnQgSlNW
YWx1ZXMgYXMgc3BlY2lmaWVkLgotLSAoTlNEaWN0aW9uYXJ5ICopdG9EaWN0aW9uYXJ5OwotCi0v
LyBBY2Nlc3MgYSBwcm9wZXJ0eSBmcm9tIHRoZSB2YWx1ZS4gVGhpcyBtZXRob2Qgd2lsbCByZXR1
cm4gdGhlIEphdmFTY3JpcHQgdmFsdWUKLS8vICd1bmRlZmluZWQnIGlmIHRoZSBwcm9wZXJ0eSBk
b2VzIG5vdCBleGlzdC4KLS0gKEpTVmFsdWUgKil2YWx1ZUZvclByb3BlcnR5OihOU1N0cmluZyAq
KXByb3BlcnR5OwotLy8gU2V0IGEgcHJvcGVydHkgb24gdGhlIHZhbHVlLgotLSAodm9pZClzZXRW
YWx1ZTooaWQpdmFsdWUgZm9yUHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVydHk7Ci0vLyBEZWxl
dGUgYSBwcm9wZXJ0eSBmcm9tIHRoZSB2YWx1ZSwgcmV0dXJucyBZRVMgaWYgZGVsZXRpb24gaXMg
c3VjY2Vzc2Z1bC4KLS0gKEJPT0wpZGVsZXRlUHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVydHk7
Ci0vLyBSZXR1cm5zIFlFUyBpZiBwcm9wZXJ0eSBpcyBwcmVzZW50IG9uIHRoZSB2YWx1ZS4KLS8v
IFRoaXMgbWV0aG9kIGhhcyB0aGUgc2FtZSBmdW5jdGlvbiBhcyB0aGUgSmF2YVNjcmlwdCBvcGVy
YXRvciAiaW4iLgotLSAoQk9PTCloYXNQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eTsKLS8v
IFRoaXMgbWV0aG9kIG1heSBiZSB1c2VkIHRvIGNyZWF0ZSBhIGRhdGEgb3IgYWNjZXNzb3IgcHJv
cGVydHkgb24gYW4gb2JqZWN0OwotLy8gdGhpcyBtZXRob2Qgb3BlcmF0ZXMgaW4gYWNjb3JkYW5j
ZSB3aXRoIHRoZSBPYmplY3QuZGVmaW5lUHJvcGVydHkgbWV0aG9kIGluCi0vLyB0aGUgSmF2YVNj
cmlwdCBsYW5nYXVhZ2UuCi0tICh2b2lkKWRlZmluZVByb3BlcnR5OihOU1N0cmluZyAqKXByb3Bl
cnR5IGRlc2NyaXB0b3I6KGlkKWRlc2NyaXB0b3I7Ci0KLS8vIEFjY2VzcyBhbiBpbmRleGVkIHBy
b3BlcnR5IGZyb20gdGhlIHZhbHVlLiBUaGlzIG1ldGhvZCB3aWxsIHJldHVybiB0aGUKLS8vIEph
dmFTY3JpcHQgdmFsdWUgJ3VuZGVmaW5lZCcgaWYgbm8gcHJvcGVydHkgZXhpc3RzIGF0IHRoYXQg
aW5kZXguCi0tIChKU1ZhbHVlICopdmFsdWVBdEluZGV4OihOU1VJbnRlZ2VyKWluZGV4OwotLy8g
U2V0IGFuIGluZGV4ZWQgcHJvcGVydHkgb24gdGhlIHZhbHVlLgotLSAodm9pZClzZXRWYWx1ZToo
aWQpdmFsdWUgYXRJbmRleDooTlNVSW50ZWdlcilpbmRleDsKLQotLy8gQWxsIEphdmFTY3JpcHQg
dmFsdWVzIGFyZSBwcmVjaXNlbHkgb25lIG9mIHRoZXNlIHR5cGVzLgotLSAoQk9PTClpc1VuZGVm
aW5lZDsKLS0gKEJPT0wpaXNOdWxsOwotLSAoQk9PTClpc0Jvb2xlYW47Ci0tIChCT09MKWlzTnVt
YmVyOwotLSAoQk9PTClpc1N0cmluZzsKLS0gKEJPT0wpaXNPYmplY3Q7Ci0KLS8vIFRoaXMgbWV0
aG9kIGhhcyB0aGUgc2FtZSBmdW5jdGlvbiBhcyB0aGUgSmF2YVNjcmlwdCBvcGVyYXRvciAiPT09
Ii4KLS0gKEJPT0wpaXNFcXVhbFRvT2JqZWN0OihpZCl2YWx1ZTsKLS8vIFRoaXMgbWV0aG9kIGhh
cyB0aGUgc2FtZSBmdW5jdGlvbiBhcyB0aGUgSmF2YVNjcmlwdCBvcGVyYXRvciAiPT0iLgotLSAo
Qk9PTClpc0VxdWFsV2l0aFR5cGVDb2VyY2lvblRvT2JqZWN0OihpZCl2YWx1ZTsKLS8vIFRoaXMg
bWV0aG9kIGhhcyB0aGUgc2FtZSBmdW5jdGlvbiBhcyB0aGUgSmF2YVNjcmlwdCBvcGVyYXRvciAi
aW5zdGFuY2VvZiIuCi0tIChCT09MKWlzSW5zdGFuY2VPZjooaWQpdmFsdWU7Ci0KLS8vIENhbGwg
dGhpcyB2YWx1ZSBhcyBhIGZ1bmN0aW9uIHBhc3NpbmcgdGhlIHNwZWNpZmllZCAidGhpcyIgdmFs
dWUgYW5kIGFyZ3VtZW50cy4KLS0gKEpTVmFsdWUgKiljYWxsV2l0aEFyZ3VtZW50czooTlNBcnJh
eSAqKWFyZ3VtZW50czsKLS8vIENhbGwgdGhpcyB2YWx1ZSBhcyBhIGNvbnN0cnVjdG9yIHBhc3Np
bmcgdGhlIHNwZWNpZmllZCBhcmd1bWVudHMuCi0tIChKU1ZhbHVlICopY29uc3RydWN0V2l0aEFy
Z3VtZW50czooTlNBcnJheSAqKWFyZ3VtZW50czsKLS8vIEFjY2VzcyB0aGUgcHJvcGVydHkgbmFt
ZWQgIm1ldGhvZCIgZnJvbSB0aGlzIHZhbHVlOyBjYWxsIHRoZSB2YWx1ZSByZXN1bHRpbmcKLS8v
IGZyb20gdGhlIHByb3BlcnR5IGFjY2VzcyBhcyBhIGZ1bmN0aW9uLCBwYXNzaW5nIHRoaXMgdmFs
dWUgYXMgdGhlICJ0aGlzIgotLy8gdmFsdWUsIGFuZCB0aGUgc3BlY2lmaWVkIGFncnVtZW50cy4K
LS0gKEpTVmFsdWUgKilpbnZva2VNZXRob2Q6KE5TU3RyaW5nICopbWV0aG9kIHdpdGhBcmd1bWVu
dHM6KE5TQXJyYXkgKilhcmd1bWVudHM7Ci0KLS8vIFRoZSBKU0NvbnRleHQgdGhhdCB0aGlzIHZh
bHVlIG9yaWdpbmF0ZXMgZnJvbS4KLUBwcm9wZXJ0eShyZWFkb25seSwgcmV0YWluKSBKU0NvbnRl
eHQgKmNvbnRleHQ7Ci0KLUBlbmQKLQotLy8gT2JqZWN0aXZlLUMgbWV0aG9kcyBleHBvcnRlZCB0
byBKYXZhU2NyaXB0IG1heSBoYXZlIGFyZ3VtZW50IGFuZC9vciByZXR1cm4KLS8vIHZhbHVlcyBv
ZiBzdHJ1Y3QgdHlwZXMgaWYgdGhlIHN0cnVjdCBpZiBjb252ZXJzaW9uIHRvIGFuZCBmcm9tIHRo
ZSBzdHJ1Y3QKLS8vIGlzIHN1cHBvcnRlZCBieSBKU1ZhbHVlLiBTdXBwb3J0IGlzIHByb3ZpZGVk
IGZvciBhbnkgdHlwZXMgd2hlcmUgSlNWYWx1ZQotLy8gY29udGFpbnMgYm90aCBhIGNsYXNzIG1l
dGhvZCAidmFsdWVXaXRoPFR5cGU+OmluQ29udGV4dDoiLCBhbmQgYW5kIGluc3RhbmNlCi0vLyBt
ZXRob2QgInRvPFR5cGU+IiAtIHdoZXJlIHRoZSBzdHJpbmcgIjxUeXBlPiIgaW4gdGhlc2Ugc2Vs
ZWN0b3IgbmFtZXMgbWF0Y2gsCi0vLyB3aXRoIHRoZSBmaXJzdCBhcmd1bWVudCB0byB0aGUgZm9y
bWVyIGJlaW5nIG9mIHRoZSBzYW1lIHN0cnVjdCB0eXBlIGFzIHRoZQotLy8gcmV0dXJuIHR5cGUg
b2YgdGhlIGxhdHRlci4KLS8vIFN1cHBvcnQgaXMgcHJvdmlkZWQgZm9yIHN0cnVjdHMgb2YgdHlw
ZSBDR1BvaW50LCBOU1JhbmdlLCBDR1JlY3QgYW5kIENHU2l6ZS4KLUBpbnRlcmZhY2UgSlNWYWx1
ZShTdHJ1Y3RTdXBwb3J0KQotCi0vLyBUaGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3bHkgYWxsb2Nh
dGVkIEphdmFTY3JpcHQgb2JqZWN0IGNvbnRhaW5pbmcgcHJvcGVydGllcwotLy8gbmFtZWQgIngi
IGFuZCAieSIsIHdpdGggdmFsdWVzIGZyb20gdGhlIENHUG9pbnQuCi0rIChKU1ZhbHVlICopdmFs
dWVXaXRoUG9pbnQ6KENHUG9pbnQpcG9pbnQgaW5Db250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0
OwotLy8gVGhpcyBtZXRob2QgcmV0dXJucyBhIG5ld2x5IGFsbG9jYXRlZCBKYXZhU2NyaXB0IG9i
amVjdCBjb250YWluaW5nIHByb3BlcnRpZXMKLS8vIG5hbWVkICJsb2NhdGlvbiIgYW5kICJsZW5n
dGgiLCB3aXRoIHZhbHVlcyBmcm9tIHRoZSBOU1JhbmdlLgotKyAoSlNWYWx1ZSAqKXZhbHVlV2l0
aFJhbmdlOihOU1JhbmdlKXJhbmdlIGluQ29udGV4dDooSlNDb250ZXh0ICopY29udGV4dDsKLS8v
IFRoaXMgbWV0aG9kIHJldHVybnMgYSBuZXdseSBhbGxvY2F0ZWQgSmF2YVNjcmlwdCBvYmplY3Qg
Y29udGFpbmluZyBwcm9wZXJ0aWVzCi0vLyBuYW1lZCAieCIsICJ5IiwgIndpZHRoIiwgYW5kICJo
ZWlnaHQiLCB3aXRoIHZhbHVlcyBmcm9tIHRoZSBDR1JlY3QuCi0rIChKU1ZhbHVlICopdmFsdWVX
aXRoUmVjdDooQ0dSZWN0KXJlY3QgaW5Db250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0OwotLy8g
VGhpcyBtZXRob2QgcmV0dXJucyBhIG5ld2x5IGFsbG9jYXRlZCBKYXZhU2NyaXB0IG9iamVjdCBj
b250YWluaW5nIHByb3BlcnRpZXMKLS8vIG5hbWVkICJ3aWR0aCIgYW5kICJoZWlnaHQiLCB3aXRo
IHZhbHVlcyBmcm9tIHRoZSBDR1NpemUuCi0rIChKU1ZhbHVlICopdmFsdWVXaXRoU2l6ZTooQ0dT
aXplKXNpemUgaW5Db250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0OwotCi0vLyBDb252ZXJ0IGEg
dmFsdWUgdG8gdHlwZSBDR1BvaW50IGJ5IHJlYWRpbmcgcHJvcGVydGllcyBuYW1lZCAieCIgYW5k
ICJ5IiBmcm9tCi0vLyB0aGlzIHZhbHVlLCBhbmQgY29udmVydGluZyB0aGUgcmVzdWx0cyB0byBk
b3VibGUuCi0tIChDR1BvaW50KXRvUG9pbnQ7Ci0vLyBDb252ZXJ0IGEgdmFsdWUgdG8gdHlwZSBO
U1JhbmdlIGJ5IGFjY2Vzc2luZyBwcm9wZXJ0aWVzIG5hbWVkICJsb2NhdGlvbiIgYW5kCi0vLyAi
bGVuZ3RoIiBmcm9tIHRoaXMgdmFsdWUgY29udmVydGluZyB0aGUgcmVzdWx0cyB0byBkb3VibGUu
Ci0tIChOU1JhbmdlKXRvUmFuZ2U7Ci0vLyBDb252ZXJ0IGEgdmFsdWUgdG8gdHlwZSBDR1JlY3Qg
YnkgcmVhZGluZyBwcm9wZXJ0aWVzIG5hbWVkICJ4IiwgInkiLCAid2lkdGgiLAotLy8gYW5kICJo
ZWlnaHQiIGZyb20gdGhpcyB2YWx1ZSwgYW5kIGNvbnZlcnRpbmcgdGhlIHJlc3VsdHMgdG8gZG91
YmxlLgotLSAoQ0dSZWN0KXRvUmVjdDsKLS8vIENvbnZlcnQgYSB2YWx1ZSB0byB0eXBlIENHUmFu
Z2UgYnkgYWNjZXNzaW5nIHByb3BlcnRpZXMgbmFtZWQgIndpZHRoIiBhbmQKLS8vICJoZWlnaHQi
IGZyb20gdGhpcyB2YWx1ZSBjb252ZXJ0aW5nIHRoZSByZXN1bHRzIHRvIGRvdWJsZS4KLS0gKENH
U2l6ZSl0b1NpemU7Ci0KLUBlbmQKLQotLy8gSW5zdGFuY2VzIG9mIEpTVmFsdWUgaW1wbGVtZW50
IHRoZSBmb2xsb3dpbmcgbWV0aG9kcyBpbiBvcmRlciB0byBlbmFibGUKLS8vIHN1cHBvcnQgZm9y
IHN1YnNjcmlwdCBhY2Nlc3MgYnkga2V5IGFuZCBpbmRleCwgZm9yIGV4YW1wbGU6Ci0vLwotLy8g
ICAgSlNWYWx1ZSAqb2JqZWN0QSwgKm9iamVjdEI7Ci0vLyAgICBKU1ZhbHVlICp2MSA9IG9iamVj
dFtAIlgiXTsgLy8gR2V0IHZhbHVlIGZvciBwcm9wZXJ0eSAiWCIgZnJvbSAnb2JqZWN0Jy4KLS8v
ICAgIEpTVmFsdWUgKnYyID0gb2JqZWN0WzQyXTsgICAvLyBHZXQgdmFsdWUgZm9yIGluZGV4IDQy
IGZyb20gJ29iamVjdCcuCi0vLyAgICBvYmplY3RbQCJZIl0gPSB2MTsgICAgICAgICAgLy8gQXNz
aWduICd2MScgdG8gcHJvcGVydHkgIlkiIG9mICdvYmplY3QnLgotLy8gICAgb2JqZWN0WzEwMV0g
PSB2MjsgICAgICAgICAgIC8vIEFzc2lnbiAndjInIHRvIGluZGV4IDEwMSBvZiAnb2JqZWN0Jy4K
LS8vCi0vLyBBbiBvYmplY3Qga2V5IHBhc3NlZCBhcyBhIHN1YnNjcmlwdCB3aWxsIGJlIGNvbnZl
cnRlZCB0byBhIEphdmFTY2lwdCB2YWx1ZSwKLS8vIGFuZCB0aGVuIHRoZSB2YWx1ZSBjb252ZXJ0
ZWQgdG8gYSBzdHJpbmcgdXNlZCBhcyBhIHByb3BlcnR5IG5hbWUuCi1AaW50ZXJmYWNlIEpTVmFs
dWUoU3Vic2NyaXB0U3VwcG9ydCkKLQotLSAoSlNWYWx1ZSAqKW9iamVjdEZvcktleWVkU3Vic2Ny
aXB0OihpZClrZXk7Ci0tIChKU1ZhbHVlICopb2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0OihOU1VJ
bnRlZ2VyKWluZGV4OwotLSAodm9pZClzZXRPYmplY3Q6KGlkKW9iamVjdCBmb3JLZXllZFN1YnNj
cmlwdDooTlNPYmplY3QgPE5TQ29weWluZz4gKilrZXk7Ci0tICh2b2lkKXNldE9iamVjdDooaWQp
b2JqZWN0IGF0SW5kZXhlZFN1YnNjcmlwdDooTlNVSW50ZWdlcilpbmRleDsKLQotQGVuZAotCi0j
aWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLS8vIFRoZXNlIGtleXMg
bWF5IGFzc2lzdCBpbiBjcmVhdGluZyBhIHByb3BlcnR5IGRlc2NyaXB0b3IgZm9yIHVzZSB3aXRo
IHRoZQotLy8gZGVmaW5lUHJvcGVydHkgbWV0aG9kIG9uIEpTVmFsdWUuCi0vLyBQcm9wZXJ0eSBk
ZXNjcmlwdG9ycyBtdXN0IGZpdCBvbmUgb2YgdGhyZWUgZGVzY3JpcHRpb25zOgotLy8gRGF0YSBE
ZXNjcmlwdG9yOgotLy8gIC0gQSBkZXNjcmlwdG9yIGNvbnRhaW5pbmcgb25lIG9yIGJvdGggb2Yg
dGhlIGtleXMgInZhbHVlIiBhbmQgIndyaXRhYmxlIiwKLS8vICAgIGFuZCBvcHRpb25hbGx5IGNv
bnRhaW5pbmcgb25lIG9yIGJvdGggb2YgdGhlIGtleXMgImVudW1lcmFibGUiIGFuZAotLy8gICAg
ImNvbmZpZ3VyYWJsZSIuIEEgZGF0YSBkZXNjcmlwdG9yIG1heSBub3QgY29udGFpbiBlaXRoZXIg
dGhlICJnZXQiIG9yCi0vLyAgICAic2V0IiBrZXkuCi0vLyAgICBBIGRhdGEgZGVzY3JpcHRvciBt
YXkgYmUgdXNlZCB0byBjcmVhdGUgb3IgbW9kaWZ5IHRoZSBhdHRyaWJ1dGVzIG9mIGEKLS8vICAg
IGRhdGEgcHJvcGVydHkgb24gYW4gb2JqZWN0IChyZXBsYWNpbmcgYW55IGV4aXN0aW5nIGFjY2Vz
c29yIHByb3BlcnR5KS4KLS8vIEFjY2Vzc29yIERlc2NyaXB0b3I6Ci0vLyAgLSBBIGRlc2NyaXB0
b3IgY29udGFpbmluZyBvbmUgb3IgYm90aCBvZiB0aGUga2V5cyAiZ2V0IiBhbmQgInNldCIsIGFu
ZAotLy8gICAgb3B0aW9uYWxseSBjb250YWluaW5nIG9uZSBvciBib3RoIG9mIHRoZSBrZXlzICJl
bnVtZXJhYmxlIiBhbmQKLS8vICAgICJjb25maWd1cmFibGUiLiBBbiBhY2Nlc3NvciBkZXNjcmlw
dG9yIG1heSBub3QgY29udGFpbiBlaXRoZXIgdGhlICJ2YWx1ZSIKLS8vICAgIG9yICJ3cml0YWJs
ZSIga2V5LgotLy8gICAgQW4gYWNjZXNzb3IgZGVzY3JpcHRvciBtYXkgYmUgdXNlZCB0byBjcmVh
dGUgb3IgbW9kaWZ5IHRoZSBhdHRyaWJ1dGVzIG9mCi0vLyAgICBhbiBhY2Nlc3NvciBwcm9wZXJ0
eSBvbiBhbiBvYmplY3QgKHJlcGxhY2luZyBhbnkgZXhpc3RpbmcgZGF0YSBwcm9wZXJ0eSkuCi0v
LyBHZW5lcmljIERlc2NyaXB0b3I6Ci0vLyAgLSBBIGRlc2NyaXB0b3IgY29udGFpbmluZyBvbmUg
b3IgYm90aCBvZiB0aGUga2V5cyAiZW51bWVyYWJsZSIgYW5kCi0vLyAgICAiY29uZmlndXJhYmxl
Ii4gQSBnZW5lcmljIGRlc2NyaXB0b3IgbWF5IG5vdCBjb250YWluIGFueSBvZiB0aGUga2V5cwot
Ly8gICAgInZhbHVlIiwgIiB3cml0YWJsZSIsICJnZXQiLCBvciAic2V0Ii4KLS8vICAgIEEgZ2Vu
ZXJpYyBkZXNjcmlwdG9yIG1heSBiZSB1c2VkIHRvIG1vZGlmeSB0aGUgYXR0cmlidXRlcyBvZiBh
biBleGlzdGluZwotLy8gICAgZGF0YSBvciBhY2Nlc3NvciBwcm9wZXJ0eSwgb3IgdG8gY3JlYXRl
IGEgbmV3IGRhdGEgcHJvcGVydHkuCi1KU19FWFBPUlQgZXh0ZXJuIE5TU3RyaW5nICogY29uc3Qg
SlNQcm9wZXJ0eURlc2NyaXB0b3JXcml0YWJsZUtleTsKLUpTX0VYUE9SVCBleHRlcm4gTlNTdHJp
bmcgKiBjb25zdCBKU1Byb3BlcnR5RGVzY3JpcHRvckVudW1lcmFibGVLZXk7Ci1KU19FWFBPUlQg
ZXh0ZXJuIE5TU3RyaW5nICogY29uc3QgSlNQcm9wZXJ0eURlc2NyaXB0b3JDb25maWd1cmFibGVL
ZXk7Ci1KU19FWFBPUlQgZXh0ZXJuIE5TU3RyaW5nICogY29uc3QgSlNQcm9wZXJ0eURlc2NyaXB0
b3JWYWx1ZUtleTsKLUpTX0VYUE9SVCBleHRlcm4gTlNTdHJpbmcgKiBjb25zdCBKU1Byb3BlcnR5
RGVzY3JpcHRvckdldEtleTsKLUpTX0VYUE9SVCBleHRlcm4gTlNTdHJpbmcgKiBjb25zdCBKU1By
b3BlcnR5RGVzY3JpcHRvclNldEtleTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19IC8vIGV4dGVy
biAiQyIKLSNlbmRpZgotCi0jZW5kaWYKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0Jsb2NrQWRhcHRvci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQmxvY2tBZGFwdG9yLm1tCShyZXZpc2lvbiAxNDAzNDYpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQmxvY2tBZGFwdG9yLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICsz
NCw3IEBACiAjaW1wb3J0ICJKU0Jsb2NrQWRhcHRvci5oIgogI2ltcG9ydCAiSlNDb250ZXh0SW50
ZXJuYWwuaCIKICNpbXBvcnQgIkpTV3JhcHBlck1hcC5oIgotI2ltcG9ydCAiSlNWYWx1ZS5oIgor
I2ltcG9ydCAiSlNDSlNWYWx1ZS5oIgogI2ltcG9ydCAiSlNWYWx1ZUludGVybmFsLmgiCiAjaW1w
b3J0ICJPYmpjUnVudGltZUV4dHJhcy5oIgogI2ltcG9ydCAiT3BlcmF0aW9ucy5oIgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1N0cmluZ1JlZkNGLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU3RyaW5nUmVmQ0YuY3BwCShyZXZpc2lvbiAx
NDAzNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU3RyaW5nUmVmQ0YuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiSW5pdGlhbGl6ZVRocmVh
ZGluZy5oIgogI2luY2x1ZGUgIkpTU3RyaW5nUmVmLmgiCiAjaW5jbHVkZSAiT3BhcXVlSlNTdHJp
bmcuaCIKLSNpbmNsdWRlIDxydW50aW1lL0pTVmFsdWUuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pT
Q0pTVmFsdWUuaD4KICNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KIAogSlNTdHJpbmdSZWYg
SlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoQ0ZTdHJpbmdSZWYgc3RyaW5nKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLmgJKHJldmlzaW9uIDE0MDE5NykJKGZyb20gU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9BUElKU1ZhbHVlLmg6MTQwMTk3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyOTMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmIEpTX09C
SkNfQVBJX0VOQUJMRUQKKworQGNsYXNzIEpTQ29udGV4dDsKKworLy8gQSBKU1ZhbHVlIGlzIGEg
cmVmZXJlbmNlIHRvIGEgdmFsdWUgd2l0aGluIHRoZSBKYXZhU2NyaXB0IG9iamVjdCBzcGFjZSBv
ZiBhCisvLyBKU1ZpcnR1YWxNYWNoaW5lLiBBbGwgaW5zdGFuY2VzIG9mIEpTVmFsdWUgb3JpZ2lu
YXRlIGZyb20gYSBKU0NvbnRleHQgYW5kCisvLyBob2xkIGEgc3Ryb25nIHJlZmVyZW5jZSB0byB0
aGlzIEpTQ29udGV4dC4gQXMgbG9uZyBhcyBhbnkgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIAorLy8g
YSBwYXJ0aWN1bGFyIEpTQ29udGV4dCBpcyByZXRhaW5lZCwgdGhhdCBKU0NvbnRleHQgd2lsbCBy
ZW1haW4gYWxpdmUuIAorLy8gV2hlcmUgYW4gaW5zdGFuY2UgbWV0aG9kIGlzIGludm9rZWQgdXBv
biBhIEpTVmFsdWUsIGFuZCB0aGlzIHJldHVybnMgYW5vdGhlciAKKy8vIEpTVmFsdWUsIHRoZSBy
ZXR1cm5lZCBKU1ZhbHVlIHdpbGwgb3JpZ2luYXRlIGZyb20gdGhlIHNhbWUgSlNDb250ZXh0IGFz
IHRoZSAKKy8vIEpTVmFsdWUgb24gd2hpY2ggdGhlIG1ldGhvZCB3YXMgaW52b2tlZC4KKy8vCisv
LyBGb3IgYWxsIG1ldGhvZHMgdGFraW5nIGFyZ3VtZW50cyBvZiB0eXBlIGlkLCBhcmd1bWVudHMg
d2lsbCBiZSBjb252ZXJ0ZWQKKy8vIGludG8gYSBKYXZhU2NyaXB0IHZhbHVlIGFjY29yZGluZyB0
byB0aGUgY29udmVyc2lvbiBzcGVjaWZpZWQgYmVsb3cuCisvLyBBbGwgSmF2YVNjcmlwdCB2YWx1
ZXMgYXJlIGFzc29jaWF0ZWQgd2l0aCBhIHBhcnRpY3VsYXIgSlNWaXJ0dWFsTWFjaGluZQorLy8g
KHRoZSBhc3NvY2lhdGVkIEpTVmlydHVhbE1hY2hpbmUgaXMgYXZhaWxhYmxlIGluZGlyZWN0bHkg
dmlhIHRoZSBjb250ZXh0CisvLyBwcm9wZXJ0eSkuIEFuIGluc3RhbmNlIG9mIEpTVmFsdWUgbWF5
IG9ubHkgYmUgcGFzc2VkIGFzIGFuIGFyZ3VtZW50IHRvCisvLyBtZXRob2RzIG9uIGluc3RhbmNl
cyBvZiBKU1ZhbHVlIGFuZCBKU0NvbnRleHQgdGhhdCBiZWxvbmcgdG8gdGhlIHNhbWUKKy8vIEpT
VmlydHVhbE1hY2hpbmUgLSBwYXNzaW5nIGEgSlNWYWx1ZSB0byBhIG1ldGhvZCBvbiBhbiBvYmpl
Y3Qgb3JpZ2luYXRpbmcKKy8vIGZyb20gYSBkaWZmZXJlbnQgSlNWaXJ0dWFsTWFjaGluZSB3aWxs
IHJlc3VsdCBpbiBhbiBPYmplY3RpdmUtQyBleGNlcHRpb24KKy8vIGJlaW5nIHJhaXNlZC4KKy8v
CisvLyBDb252ZXJzaW9uIGJldHdlZW4gT2JqZWN0aXZlLUMgYW5kIEphdmFTY3JpcHQgdHlwZXMu
CisvLworLy8gV2hlbiBjb252ZXJ0aW5nIGJldHdlZW4gSmF2YVNjcmlwdCB2YWx1ZXMgYW5kIE9i
amVjdGl2ZS1DIG9iamVjdHMgYSBjb3B5IGlzCisvLyBwZXJmb3JtZWQuIFZhbHVlcyBvZiB0eXBl
cyBsaXN0ZWQgYmVsb3cgYXJlIGNvcGllZCB0byB0aGUgY29ycmVzcG9uZGluZworLy8gdHlwZXMg
b24gY29udmVyc2lvbiBpbiBlYWNoIGRpcmVjdGlvbi4gRm9yIE5TRGljdGlvbmFyaWVzLCBlbnRy
aWVzIGluIHRoZQorLy8gZGljdGlvbmFyeSB0aGF0IGFyZSBrZXllZCBieSBzdHJpbmdzIGFyZSBj
b3BpZWQgb250byBhIEphdmFTY3JpcHQgb2JqZWN0LgorLy8gRm9yIGRpY3Rpb25hcmllcyBhbmQg
YXJyYXlzLCBjb252ZXJzaW9uIGlzIHJlY3Vyc2l2ZSwgd2l0aCB0aGUgc2FtZSBvYmplY3QKKy8v
IGNvbnZlcnNpb24gYmVpbmcgYXBwbGllZCB0byBhbGwgZW50cmllcyBpbiB0aGUgY29sbGVjdGlv
bi4KKy8vCisvLyAgIE9iamVjdGl2ZS1DIHR5cGUgIHwgICBKYXZhU2NyaXB0IHR5cGUKKy8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICBuaWwg
ICAgICAgICB8ICAgICB1bmRlZmluZWQKKy8vICAgICAgICBOU051bGwgICAgICAgfCAgICAgICAg
bnVsbAorLy8gICAgICAgTlNTdHJpbmcgICAgICB8ICAgICAgIHN0cmluZworLy8gICAgICAgTlNO
dW1iZXIgICAgICB8ICAgbnVtYmVyLCBib29sZWFuCisvLyAgICAgTlNEaWN0aW9uYXJ5ICAgIHwg
ICBPYmplY3Qgb2JqZWN0CisvLyAgICAgICBOU0FycmF5ICAgICAgIHwgICAgQXJyYXkgb2JqZWN0
CisvLyAgICAgICAgTlNEYXRlICAgICAgIHwgICAgIERhdGUgb2JqZWN0CisvLyAgICAgICBOU0Js
b2NrICogICAgIHwgICBGdW5jdGlvbiBvYmplY3QgKgorLy8gICAgICAgICAgaWQgKiogICAgICB8
ICAgV3JhcHBlciBvYmplY3QgKioKKy8vICAgICAgICBDbGFzcyAqKiogICAgfCBDb25zdHJ1Y3Rv
ciBvYmplY3QgKioqCisvLworLy8gKiBJbnN0YW5jZXMgb2YgTlNCbG9jayB3aXRoIHN1cHBvcnRl
ZCBhcmd1bWVudHMgdHlwZXMgd2lsbCBiZSBwcmVzZW50ZWQgdG8KKy8vIEphdmFTY3JpcHQgYXMg
YSBjYWxsYWJsZSBGdW5jdGlvbiBvYmplY3QuIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHN1cHBv
cnRlZAorLy8gYXJndW1lbnQgdHlwZXMgc2VlIEpTRXhwb3J0LmguIElmIGEgSmF2YVNjcmlwdCBG
dW5jdGlvbiBvcmlnaW5hdGluZyBmcm9tIGFuCisvLyBPYmplY3RpdmUtQyBibG9jayBpcyBjb252
ZXJ0ZWQgYmFjayB0byBhbiBPYmplY3RpdmUtQyBvYmplY3QgdGhlIGJsb2NrIHdpbGwKKy8vIGJl
IHJldHVybmVkLiBBbGwgb3RoZXIgSmF2YVNjcmlwdCBmdW5jdGlvbnMgd2lsbCBiZSBjb252ZXJ0
ZWQgaW4gdGhlIHNhbWUKKy8vIG1hbm5lciBhcyBhIEphdmFTY3JpcHQgb2JqZWN0IG9mIHR5cGUg
T2JqZWN0LgorLy8KKy8vICoqIEZvciBPYmplY3RpdmUtQyBpbnN0YW5jZXMgdGhhdCBkbyBub3Qg
ZGVyaXZlIGZyb20gdGhlIHNldCBvZiB0eXBlcyBsaXN0ZWQKKy8vIGFib3ZlLCBhIHdyYXBwZXIg
b2JqZWN0IHRvIHByb3ZpZGUgYSByZXRhaW5pbmcgaGFuZGxlIHRvIHRoZSBPYmplY3RpdmUtQwor
Ly8gaW5zdGFuY2UgZnJvbSBKYXZhU2NyaXB0LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGVz
ZSB3cmFwcGVyIG9iamVjdHMsIHNlZQorLy8gSlNFeHBvcnQuaC4gV2hlbiBhIEphdmFTY3JpcHQg
d3JhcHBlciBvYmplY3QgaXMgY29udmVydGVkIGJhY2sgdG8gT2JqZWN0aXZlLUMKKy8vIHRoZSBP
YmplY3RpdmUtQyBpbnN0YW5jZSBiZWluZyByZXRhaW5lZCBieSB0aGUgd3JhcHBlciBpcyByZXR1
cm5lZC4KKy8vCisvLyAqKiogRm9yIE9iamVjdGl2ZS1DIENsYXNzIG9iamVjdHMgYSBjb25zdHJ1
Y3RvciBvYmplY3QgY29udGFpbmluZyBleHBvcnRlZAorLy8gY2xhc3MgbWV0aG9kcyB3aWxsIGJl
IHJldHVybmVkLiBTZWUgSlNFeHBvcnQuaCBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbgorLy8gY29u
c3RydWN0b3Igb2JqZWN0cy4KKworTlNfQ0xBU1NfQVZBSUxBQkxFKDEwXzksIE5BKQorQGludGVy
ZmFjZSBKU1ZhbHVlIDogTlNPYmplY3QKKworLy8gQ3JlYXRlIGEgSlNWYWx1ZSBieSBjb252ZXJ0
aW5nIGFuIE9iamVjdGl2ZS1DIG9iamVjdC4KKysgKEpTVmFsdWUgKil2YWx1ZVdpdGhPYmplY3Q6
KGlkKXZhbHVlIGluQ29udGV4dDooSlNDb250ZXh0ICopY29udGV4dDsKKy8vIENyZWF0ZSBhIEph
dmFTY3JpcHQgdmFsdWUgZnJvbSBhbiBPYmplY3RpdmUtQyBwcmltaXRpdmUgdHlwZS4KKysgKEpT
VmFsdWUgKil2YWx1ZVdpdGhCb29sOihCT09MKXZhbHVlIGluQ29udGV4dDooSlNDb250ZXh0ICop
Y29udGV4dDsKKysgKEpTVmFsdWUgKil2YWx1ZVdpdGhEb3VibGU6KGRvdWJsZSl2YWx1ZSBpbkNv
bnRleHQ6KEpTQ29udGV4dCAqKWNvbnRleHQ7CisrIChKU1ZhbHVlICopdmFsdWVXaXRoSW50MzI6
KGludDMyX3QpdmFsdWUgaW5Db250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0OworKyAoSlNWYWx1
ZSAqKXZhbHVlV2l0aFVJbnQzMjoodWludDMyX3QpdmFsdWUgaW5Db250ZXh0OihKU0NvbnRleHQg
Kiljb250ZXh0OworLy8gQ3JlYXRlIGEgSmF2YVNjcmlwdCB2YWx1ZSBpbiB0aGlzIGNvbnRleHQu
CisrIChKU1ZhbHVlICopdmFsdWVXaXRoTmV3T2JqZWN0SW5Db250ZXh0OihKU0NvbnRleHQgKilj
b250ZXh0OworKyAoSlNWYWx1ZSAqKXZhbHVlV2l0aE5ld0FycmF5SW5Db250ZXh0OihKU0NvbnRl
eHQgKiljb250ZXh0OworKyAoSlNWYWx1ZSAqKXZhbHVlV2l0aE5ld1JlZ3VsYXJFeHByZXNzaW9u
RnJvbVBhdHRlcm46KE5TU3RyaW5nICopcGF0dGVybiBmbGFnczooTlNTdHJpbmcgKilmbGFncyBp
bkNvbnRleHQ6KEpTQ29udGV4dCAqKWNvbnRleHQ7CisrIChKU1ZhbHVlICopdmFsdWVXaXRoTmV3
RXJyb3JGcm9tTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlIGluQ29udGV4dDooSlNDb250ZXh0
ICopY29udGV4dDsKKysgKEpTVmFsdWUgKil2YWx1ZVdpdGhOdWxsSW5Db250ZXh0OihKU0NvbnRl
eHQgKiljb250ZXh0OworKyAoSlNWYWx1ZSAqKXZhbHVlV2l0aFVuZGVmaW5lZEluQ29udGV4dDoo
SlNDb250ZXh0ICopY29udGV4dDsKKworLy8gQ29udmVydCB0aGlzIHZhbHVlIHRvIGEgY29ycmVz
cG9uZGluZyBPYmplY3RpdmUtQyBvYmplY3QsIGFjY29yZGluZyB0byB0aGUKKy8vIGNvbnZlcnNp
b24gc3BlY2lmaWVkIGFib3ZlLgorLSAoaWQpdG9PYmplY3Q7CisvLyBDb252ZXJ0IHRoaXMgdmFs
dWUgdG8gYSBjb3JyZXNwb25kaW5nIE9iamVjdGl2ZS1DIG9iamVjdCwgaWYgdGhlIHJlc3VsdCBp
cworLy8gbm90IG9mIHRoZSBzcGVjaWZpZWQgY2xhc3MgdGhlbiBuaWwgd2lsbCBiZSByZXR1cm5l
ZC4KKy0gKGlkKXRvT2JqZWN0T2ZDbGFzczooQ2xhc3MpZXhwZWN0ZWRDbGFzczsKKy8vIFRoZSB2
YWx1ZSBpcyBjb3BpZWQgdG8gYSBib29sZWFuIGFjY29yZGluZyB0byB0aGUgY29udmVyc2lvbiBz
cGVjaWZpZWQgYnkgdGhlCisvLyBKYXZhU2NyaXB0IGxhbmd1YWdlLgorLSAoQk9PTCl0b0Jvb2w7
CisvLyBUaGUgdmFsdWUgaXMgY29waWVkIHRvIGEgbnVtYmVyIGFjY29yZGluZyB0byB0aGUgY29u
dmVyc2lvbiBzcGVjaWZpZWQgYnkgdGhlCisvLyBKYXZhU2NyaXB0IGxhbmd1YWdlLgorLSAoZG91
YmxlKXRvRG91YmxlOworLy8gVGhlIHZhbHVlIGlzIGNvcGllZCB0byBhbiBpbnRlZ2VyIGFjY29y
ZGluZyB0byB0aGUgY29udmVyc2lvbiBzcGVjaWZpZWQgYnkKKy8vIHRoZSBKYXZhU2NyaXB0IGxh
bmd1YWdlLgorLSAoaW50MzJfdCl0b0ludDMyOworLy8gVGhlIHZhbHVlIGlzIGNvcGllZCB0byBh
biBpbnRlZ2VyIGFjY29yZGluZyB0byB0aGUgY29udmVyc2lvbiBzcGVjaWZpZWQgYnkKKy8vIHRo
ZSBKYXZhU2NyaXB0IGxhbmd1YWdlLgorLSAodWludDMyX3QpdG9VSW50MzI7CisvLyBJZiB0aGUg
dmFsdWUgaXMgYSBib29sZWFuLCBhIE5TTnVtYmVyIHZhbHVlIG9mIEBZRVMgb3IgQE5PIHdpbGwg
YmUgcmV0dXJuZWQuCisvLyBGb3IgYWxsIG90aGVyIHR5cGVzIHRoZSB2YWx1ZSB3aWxsIGJlIGNv
cGllZCB0byBhIG51bWJlciBhY2NvcmRpbmcgdG8gdGhlCisvLyBjb252ZXJzaW9uIHNwZWNpZmll
ZCBieSB0aGUgSmF2YVNjcmlwdCBsYW5ndWFnZS4KKy0gKE5TTnVtYmVyICopdG9OdW1iZXI7Cisv
LyBUaGUgdmFsdWUgaXMgY29waWVkIHRvIGEgc3RyaW5nIGFjY29yZGluZyB0byB0aGUgY29udmVy
c2lvbiBzcGVjaWZpZWQgYnkgdGhlCisvLyBKYXZhU2NyaXB0IGxhbmd1YWdlLgorLSAoTlNTdHJp
bmcgKil0b1N0cmluZzsKKy8vIFRoZSB2YWx1ZSBpcyBjb252ZXJ0ZWQgdG8gYSBudW1iZXIgcmVw
cmVzZW50aW5nIGEgdGltZSBpbnRlcnZhbCBzaW5jZSAxOTcwLAorLy8gYW5kIGEgbmV3IE5TRGF0
ZSBpbnN0YW5jZSBpcyByZXR1cm5lZC4KKy0gKE5TRGF0ZSAqKXRvRGF0ZTsKKy8vIElmIHRoZSB2
YWx1ZSBpcyBudWxsIG9yIHVuZGVmaW5lZCB0aGVuIG5pbCBpcyByZXR1cm5lZC4KKy8vIElmIHRo
ZSB2YWx1ZSBpcyBub3QgYW4gb2JqZWN0IHRoZW4gYSBKYXZhU2NyaXB0IFR5cGVFcnJvciB3aWxs
IGJlIHRocm93bi4KKy8vIFRoZSBwcm9wZXJ0eSAibGVuZ3RoIiBpcyByZWFkIGZyb20gdGhlIG9i
amVjdCwgY29udmVydGVkIHRvIGFuIHVuc2lnbmVkCisvLyBpbnRlZ2VyLCBhbmQgYW4gTlNBcnJh
eSBvZiB0aGlzIHNpemUgaXMgYWxsb2NhdGVkLiBQcm9wZXJ0aWVzIGNvcnJlc3BvbmRpbmcKKy8v
IHRvIGluZGljaWVzIHdpdGhpbiB0aGUgYXJyYXkgYm91bmRzIHdpbGwgYmUgY29waWVkIHRvIHRo
ZSBhcnJheSwgd2l0aAorLy8gT2JqZWN0aXZlLUMgb2JqZWN0cyBjb252ZXJ0ZWQgdG8gZXF1aXZh
bGVudCBKU1ZhbHVlcyBhcyBzcGVjaWZpZWQuCistIChOU0FycmF5ICopdG9BcnJheTsKKy8vIElm
IHRoZSB2YWx1ZSBpcyBudWxsIG9yIHVuZGVmaW5lZCB0aGVuIG5pbCBpcyByZXR1cm5lZC4KKy8v
IElmIHRoZSB2YWx1ZSBpcyBub3QgYW4gb2JqZWN0IHRoZW4gYSBKYXZhU2NyaXB0IFR5cGVFcnJv
ciB3aWxsIGJlIHRocm93bi4KKy8vIEFsbCBlbnVtZXJhYmxlIHByb3BlcnRpZXMgb2YgdGhlIG9i
amVjdCBhcmUgY29waWVkIHRvIHRoZSBkaWN0aW9uYXJ5LCB3aXRoCisvLyBPYmplY3RpdmUtQyBv
YmplY3RzIGNvbnZlcnRlZCB0byBlcXVpdmFsZW50IEpTVmFsdWVzIGFzIHNwZWNpZmllZC4KKy0g
KE5TRGljdGlvbmFyeSAqKXRvRGljdGlvbmFyeTsKKworLy8gQWNjZXNzIGEgcHJvcGVydHkgZnJv
bSB0aGUgdmFsdWUuIFRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuIHRoZSBKYXZhU2NyaXB0IHZhbHVl
CisvLyAndW5kZWZpbmVkJyBpZiB0aGUgcHJvcGVydHkgZG9lcyBub3QgZXhpc3QuCistIChKU1Zh
bHVlICopdmFsdWVGb3JQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eTsKKy8vIFNldCBhIHBy
b3BlcnR5IG9uIHRoZSB2YWx1ZS4KKy0gKHZvaWQpc2V0VmFsdWU6KGlkKXZhbHVlIGZvclByb3Bl
cnR5OihOU1N0cmluZyAqKXByb3BlcnR5OworLy8gRGVsZXRlIGEgcHJvcGVydHkgZnJvbSB0aGUg
dmFsdWUsIHJldHVybnMgWUVTIGlmIGRlbGV0aW9uIGlzIHN1Y2Nlc3NmdWwuCistIChCT09MKWRl
bGV0ZVByb3BlcnR5OihOU1N0cmluZyAqKXByb3BlcnR5OworLy8gUmV0dXJucyBZRVMgaWYgcHJv
cGVydHkgaXMgcHJlc2VudCBvbiB0aGUgdmFsdWUuCisvLyBUaGlzIG1ldGhvZCBoYXMgdGhlIHNh
bWUgZnVuY3Rpb24gYXMgdGhlIEphdmFTY3JpcHQgb3BlcmF0b3IgImluIi4KKy0gKEJPT0wpaGFz
UHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVydHk7CisvLyBUaGlzIG1ldGhvZCBtYXkgYmUgdXNl
ZCB0byBjcmVhdGUgYSBkYXRhIG9yIGFjY2Vzc29yIHByb3BlcnR5IG9uIGFuIG9iamVjdDsKKy8v
IHRoaXMgbWV0aG9kIG9wZXJhdGVzIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgT2JqZWN0LmRlZmlu
ZVByb3BlcnR5IG1ldGhvZCBpbgorLy8gdGhlIEphdmFTY3JpcHQgbGFuZ2F1YWdlLgorLSAodm9p
ZClkZWZpbmVQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eSBkZXNjcmlwdG9yOihpZClkZXNj
cmlwdG9yOworCisvLyBBY2Nlc3MgYW4gaW5kZXhlZCBwcm9wZXJ0eSBmcm9tIHRoZSB2YWx1ZS4g
VGhpcyBtZXRob2Qgd2lsbCByZXR1cm4gdGhlCisvLyBKYXZhU2NyaXB0IHZhbHVlICd1bmRlZmlu
ZWQnIGlmIG5vIHByb3BlcnR5IGV4aXN0cyBhdCB0aGF0IGluZGV4LgorLSAoSlNWYWx1ZSAqKXZh
bHVlQXRJbmRleDooTlNVSW50ZWdlcilpbmRleDsKKy8vIFNldCBhbiBpbmRleGVkIHByb3BlcnR5
IG9uIHRoZSB2YWx1ZS4KKy0gKHZvaWQpc2V0VmFsdWU6KGlkKXZhbHVlIGF0SW5kZXg6KE5TVUlu
dGVnZXIpaW5kZXg7CisKKy8vIEFsbCBKYXZhU2NyaXB0IHZhbHVlcyBhcmUgcHJlY2lzZWx5IG9u
ZSBvZiB0aGVzZSB0eXBlcy4KKy0gKEJPT0wpaXNVbmRlZmluZWQ7CistIChCT09MKWlzTnVsbDsK
Ky0gKEJPT0wpaXNCb29sZWFuOworLSAoQk9PTClpc051bWJlcjsKKy0gKEJPT0wpaXNTdHJpbmc7
CistIChCT09MKWlzT2JqZWN0OworCisvLyBUaGlzIG1ldGhvZCBoYXMgdGhlIHNhbWUgZnVuY3Rp
b24gYXMgdGhlIEphdmFTY3JpcHQgb3BlcmF0b3IgIj09PSIuCistIChCT09MKWlzRXF1YWxUb09i
amVjdDooaWQpdmFsdWU7CisvLyBUaGlzIG1ldGhvZCBoYXMgdGhlIHNhbWUgZnVuY3Rpb24gYXMg
dGhlIEphdmFTY3JpcHQgb3BlcmF0b3IgIj09Ii4KKy0gKEJPT0wpaXNFcXVhbFdpdGhUeXBlQ29l
cmNpb25Ub09iamVjdDooaWQpdmFsdWU7CisvLyBUaGlzIG1ldGhvZCBoYXMgdGhlIHNhbWUgZnVu
Y3Rpb24gYXMgdGhlIEphdmFTY3JpcHQgb3BlcmF0b3IgImluc3RhbmNlb2YiLgorLSAoQk9PTClp
c0luc3RhbmNlT2Y6KGlkKXZhbHVlOworCisvLyBDYWxsIHRoaXMgdmFsdWUgYXMgYSBmdW5jdGlv
biBwYXNzaW5nIHRoZSBzcGVjaWZpZWQgInRoaXMiIHZhbHVlIGFuZCBhcmd1bWVudHMuCistIChK
U1ZhbHVlICopY2FsbFdpdGhBcmd1bWVudHM6KE5TQXJyYXkgKilhcmd1bWVudHM7CisvLyBDYWxs
IHRoaXMgdmFsdWUgYXMgYSBjb25zdHJ1Y3RvciBwYXNzaW5nIHRoZSBzcGVjaWZpZWQgYXJndW1l
bnRzLgorLSAoSlNWYWx1ZSAqKWNvbnN0cnVjdFdpdGhBcmd1bWVudHM6KE5TQXJyYXkgKilhcmd1
bWVudHM7CisvLyBBY2Nlc3MgdGhlIHByb3BlcnR5IG5hbWVkICJtZXRob2QiIGZyb20gdGhpcyB2
YWx1ZTsgY2FsbCB0aGUgdmFsdWUgcmVzdWx0aW5nCisvLyBmcm9tIHRoZSBwcm9wZXJ0eSBhY2Nl
c3MgYXMgYSBmdW5jdGlvbiwgcGFzc2luZyB0aGlzIHZhbHVlIGFzIHRoZSAidGhpcyIKKy8vIHZh
bHVlLCBhbmQgdGhlIHNwZWNpZmllZCBhZ3J1bWVudHMuCistIChKU1ZhbHVlICopaW52b2tlTWV0
aG9kOihOU1N0cmluZyAqKW1ldGhvZCB3aXRoQXJndW1lbnRzOihOU0FycmF5ICopYXJndW1lbnRz
OworCisvLyBUaGUgSlNDb250ZXh0IHRoYXQgdGhpcyB2YWx1ZSBvcmlnaW5hdGVzIGZyb20uCitA
cHJvcGVydHkocmVhZG9ubHksIHJldGFpbikgSlNDb250ZXh0ICpjb250ZXh0OworCitAZW5kCisK
Ky8vIE9iamVjdGl2ZS1DIG1ldGhvZHMgZXhwb3J0ZWQgdG8gSmF2YVNjcmlwdCBtYXkgaGF2ZSBh
cmd1bWVudCBhbmQvb3IgcmV0dXJuCisvLyB2YWx1ZXMgb2Ygc3RydWN0IHR5cGVzIGlmIHRoZSBz
dHJ1Y3QgaWYgY29udmVyc2lvbiB0byBhbmQgZnJvbSB0aGUgc3RydWN0CisvLyBpcyBzdXBwb3J0
ZWQgYnkgSlNWYWx1ZS4gU3VwcG9ydCBpcyBwcm92aWRlZCBmb3IgYW55IHR5cGVzIHdoZXJlIEpT
VmFsdWUKKy8vIGNvbnRhaW5zIGJvdGggYSBjbGFzcyBtZXRob2QgInZhbHVlV2l0aDxUeXBlPjpp
bkNvbnRleHQ6IiwgYW5kIGFuZCBpbnN0YW5jZQorLy8gbWV0aG9kICJ0bzxUeXBlPiIgLSB3aGVy
ZSB0aGUgc3RyaW5nICI8VHlwZT4iIGluIHRoZXNlIHNlbGVjdG9yIG5hbWVzIG1hdGNoLAorLy8g
d2l0aCB0aGUgZmlyc3QgYXJndW1lbnQgdG8gdGhlIGZvcm1lciBiZWluZyBvZiB0aGUgc2FtZSBz
dHJ1Y3QgdHlwZSBhcyB0aGUKKy8vIHJldHVybiB0eXBlIG9mIHRoZSBsYXR0ZXIuCisvLyBTdXBw
b3J0IGlzIHByb3ZpZGVkIGZvciBzdHJ1Y3RzIG9mIHR5cGUgQ0dQb2ludCwgTlNSYW5nZSwgQ0dS
ZWN0IGFuZCBDR1NpemUuCitAaW50ZXJmYWNlIEpTVmFsdWUoU3RydWN0U3VwcG9ydCkKKworLy8g
VGhpcyBtZXRob2QgcmV0dXJucyBhIG5ld2x5IGFsbG9jYXRlZCBKYXZhU2NyaXB0IG9iamVjdCBj
b250YWluaW5nIHByb3BlcnRpZXMKKy8vIG5hbWVkICJ4IiBhbmQgInkiLCB3aXRoIHZhbHVlcyBm
cm9tIHRoZSBDR1BvaW50LgorKyAoSlNWYWx1ZSAqKXZhbHVlV2l0aFBvaW50OihDR1BvaW50KXBv
aW50IGluQ29udGV4dDooSlNDb250ZXh0ICopY29udGV4dDsKKy8vIFRoaXMgbWV0aG9kIHJldHVy
bnMgYSBuZXdseSBhbGxvY2F0ZWQgSmF2YVNjcmlwdCBvYmplY3QgY29udGFpbmluZyBwcm9wZXJ0
aWVzCisvLyBuYW1lZCAibG9jYXRpb24iIGFuZCAibGVuZ3RoIiwgd2l0aCB2YWx1ZXMgZnJvbSB0
aGUgTlNSYW5nZS4KKysgKEpTVmFsdWUgKil2YWx1ZVdpdGhSYW5nZTooTlNSYW5nZSlyYW5nZSBp
bkNvbnRleHQ6KEpTQ29udGV4dCAqKWNvbnRleHQ7CisvLyBUaGlzIG1ldGhvZCByZXR1cm5zIGEg
bmV3bHkgYWxsb2NhdGVkIEphdmFTY3JpcHQgb2JqZWN0IGNvbnRhaW5pbmcgcHJvcGVydGllcwor
Ly8gbmFtZWQgIngiLCAieSIsICJ3aWR0aCIsIGFuZCAiaGVpZ2h0Iiwgd2l0aCB2YWx1ZXMgZnJv
bSB0aGUgQ0dSZWN0LgorKyAoSlNWYWx1ZSAqKXZhbHVlV2l0aFJlY3Q6KENHUmVjdClyZWN0IGlu
Q29udGV4dDooSlNDb250ZXh0ICopY29udGV4dDsKKy8vIFRoaXMgbWV0aG9kIHJldHVybnMgYSBu
ZXdseSBhbGxvY2F0ZWQgSmF2YVNjcmlwdCBvYmplY3QgY29udGFpbmluZyBwcm9wZXJ0aWVzCisv
LyBuYW1lZCAid2lkdGgiIGFuZCAiaGVpZ2h0Iiwgd2l0aCB2YWx1ZXMgZnJvbSB0aGUgQ0dTaXpl
LgorKyAoSlNWYWx1ZSAqKXZhbHVlV2l0aFNpemU6KENHU2l6ZSlzaXplIGluQ29udGV4dDooSlND
b250ZXh0ICopY29udGV4dDsKKworLy8gQ29udmVydCBhIHZhbHVlIHRvIHR5cGUgQ0dQb2ludCBi
eSByZWFkaW5nIHByb3BlcnRpZXMgbmFtZWQgIngiIGFuZCAieSIgZnJvbQorLy8gdGhpcyB2YWx1
ZSwgYW5kIGNvbnZlcnRpbmcgdGhlIHJlc3VsdHMgdG8gZG91YmxlLgorLSAoQ0dQb2ludCl0b1Bv
aW50OworLy8gQ29udmVydCBhIHZhbHVlIHRvIHR5cGUgTlNSYW5nZSBieSBhY2Nlc3NpbmcgcHJv
cGVydGllcyBuYW1lZCAibG9jYXRpb24iIGFuZAorLy8gImxlbmd0aCIgZnJvbSB0aGlzIHZhbHVl
IGNvbnZlcnRpbmcgdGhlIHJlc3VsdHMgdG8gZG91YmxlLgorLSAoTlNSYW5nZSl0b1JhbmdlOwor
Ly8gQ29udmVydCBhIHZhbHVlIHRvIHR5cGUgQ0dSZWN0IGJ5IHJlYWRpbmcgcHJvcGVydGllcyBu
YW1lZCAieCIsICJ5IiwgIndpZHRoIiwKKy8vIGFuZCAiaGVpZ2h0IiBmcm9tIHRoaXMgdmFsdWUs
IGFuZCBjb252ZXJ0aW5nIHRoZSByZXN1bHRzIHRvIGRvdWJsZS4KKy0gKENHUmVjdCl0b1JlY3Q7
CisvLyBDb252ZXJ0IGEgdmFsdWUgdG8gdHlwZSBDR1JhbmdlIGJ5IGFjY2Vzc2luZyBwcm9wZXJ0
aWVzIG5hbWVkICJ3aWR0aCIgYW5kCisvLyAiaGVpZ2h0IiBmcm9tIHRoaXMgdmFsdWUgY29udmVy
dGluZyB0aGUgcmVzdWx0cyB0byBkb3VibGUuCistIChDR1NpemUpdG9TaXplOworCitAZW5kCisK
Ky8vIEluc3RhbmNlcyBvZiBKU1ZhbHVlIGltcGxlbWVudCB0aGUgZm9sbG93aW5nIG1ldGhvZHMg
aW4gb3JkZXIgdG8gZW5hYmxlCisvLyBzdXBwb3J0IGZvciBzdWJzY3JpcHQgYWNjZXNzIGJ5IGtl
eSBhbmQgaW5kZXgsIGZvciBleGFtcGxlOgorLy8KKy8vICAgIEpTVmFsdWUgKm9iamVjdEEsICpv
YmplY3RCOworLy8gICAgSlNWYWx1ZSAqdjEgPSBvYmplY3RbQCJYIl07IC8vIEdldCB2YWx1ZSBm
b3IgcHJvcGVydHkgIlgiIGZyb20gJ29iamVjdCcuCisvLyAgICBKU1ZhbHVlICp2MiA9IG9iamVj
dFs0Ml07ICAgLy8gR2V0IHZhbHVlIGZvciBpbmRleCA0MiBmcm9tICdvYmplY3QnLgorLy8gICAg
b2JqZWN0W0AiWSJdID0gdjE7ICAgICAgICAgIC8vIEFzc2lnbiAndjEnIHRvIHByb3BlcnR5ICJZ
IiBvZiAnb2JqZWN0Jy4KKy8vICAgIG9iamVjdFsxMDFdID0gdjI7ICAgICAgICAgICAvLyBBc3Np
Z24gJ3YyJyB0byBpbmRleCAxMDEgb2YgJ29iamVjdCcuCisvLworLy8gQW4gb2JqZWN0IGtleSBw
YXNzZWQgYXMgYSBzdWJzY3JpcHQgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gYSBKYXZhU2NpcHQgdmFs
dWUsCisvLyBhbmQgdGhlbiB0aGUgdmFsdWUgY29udmVydGVkIHRvIGEgc3RyaW5nIHVzZWQgYXMg
YSBwcm9wZXJ0eSBuYW1lLgorQGludGVyZmFjZSBKU1ZhbHVlKFN1YnNjcmlwdFN1cHBvcnQpCisK
Ky0gKEpTVmFsdWUgKilvYmplY3RGb3JLZXllZFN1YnNjcmlwdDooaWQpa2V5OworLSAoSlNWYWx1
ZSAqKW9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdDooTlNVSW50ZWdlcilpbmRleDsKKy0gKHZvaWQp
c2V0T2JqZWN0OihpZClvYmplY3QgZm9yS2V5ZWRTdWJzY3JpcHQ6KE5TT2JqZWN0IDxOU0NvcHlp
bmc+ICopa2V5OworLSAodm9pZClzZXRPYmplY3Q6KGlkKW9iamVjdCBhdEluZGV4ZWRTdWJzY3Jp
cHQ6KE5TVUludGVnZXIpaW5kZXg7CisKK0BlbmQKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRl
cm4gIkMiIHsKKyNlbmRpZgorCisvLyBUaGVzZSBrZXlzIG1heSBhc3Npc3QgaW4gY3JlYXRpbmcg
YSBwcm9wZXJ0eSBkZXNjcmlwdG9yIGZvciB1c2Ugd2l0aCB0aGUKKy8vIGRlZmluZVByb3BlcnR5
IG1ldGhvZCBvbiBKU1ZhbHVlLgorLy8gUHJvcGVydHkgZGVzY3JpcHRvcnMgbXVzdCBmaXQgb25l
IG9mIHRocmVlIGRlc2NyaXB0aW9uczoKKy8vIERhdGEgRGVzY3JpcHRvcjoKKy8vICAtIEEgZGVz
Y3JpcHRvciBjb250YWluaW5nIG9uZSBvciBib3RoIG9mIHRoZSBrZXlzICJ2YWx1ZSIgYW5kICJ3
cml0YWJsZSIsCisvLyAgICBhbmQgb3B0aW9uYWxseSBjb250YWluaW5nIG9uZSBvciBib3RoIG9m
IHRoZSBrZXlzICJlbnVtZXJhYmxlIiBhbmQKKy8vICAgICJjb25maWd1cmFibGUiLiBBIGRhdGEg
ZGVzY3JpcHRvciBtYXkgbm90IGNvbnRhaW4gZWl0aGVyIHRoZSAiZ2V0IiBvcgorLy8gICAgInNl
dCIga2V5LgorLy8gICAgQSBkYXRhIGRlc2NyaXB0b3IgbWF5IGJlIHVzZWQgdG8gY3JlYXRlIG9y
IG1vZGlmeSB0aGUgYXR0cmlidXRlcyBvZiBhCisvLyAgICBkYXRhIHByb3BlcnR5IG9uIGFuIG9i
amVjdCAocmVwbGFjaW5nIGFueSBleGlzdGluZyBhY2Nlc3NvciBwcm9wZXJ0eSkuCisvLyBBY2Nl
c3NvciBEZXNjcmlwdG9yOgorLy8gIC0gQSBkZXNjcmlwdG9yIGNvbnRhaW5pbmcgb25lIG9yIGJv
dGggb2YgdGhlIGtleXMgImdldCIgYW5kICJzZXQiLCBhbmQKKy8vICAgIG9wdGlvbmFsbHkgY29u
dGFpbmluZyBvbmUgb3IgYm90aCBvZiB0aGUga2V5cyAiZW51bWVyYWJsZSIgYW5kCisvLyAgICAi
Y29uZmlndXJhYmxlIi4gQW4gYWNjZXNzb3IgZGVzY3JpcHRvciBtYXkgbm90IGNvbnRhaW4gZWl0
aGVyIHRoZSAidmFsdWUiCisvLyAgICBvciAid3JpdGFibGUiIGtleS4KKy8vICAgIEFuIGFjY2Vz
c29yIGRlc2NyaXB0b3IgbWF5IGJlIHVzZWQgdG8gY3JlYXRlIG9yIG1vZGlmeSB0aGUgYXR0cmli
dXRlcyBvZgorLy8gICAgYW4gYWNjZXNzb3IgcHJvcGVydHkgb24gYW4gb2JqZWN0IChyZXBsYWNp
bmcgYW55IGV4aXN0aW5nIGRhdGEgcHJvcGVydHkpLgorLy8gR2VuZXJpYyBEZXNjcmlwdG9yOgor
Ly8gIC0gQSBkZXNjcmlwdG9yIGNvbnRhaW5pbmcgb25lIG9yIGJvdGggb2YgdGhlIGtleXMgImVu
dW1lcmFibGUiIGFuZAorLy8gICAgImNvbmZpZ3VyYWJsZSIuIEEgZ2VuZXJpYyBkZXNjcmlwdG9y
IG1heSBub3QgY29udGFpbiBhbnkgb2YgdGhlIGtleXMKKy8vICAgICJ2YWx1ZSIsICIgd3JpdGFi
bGUiLCAiZ2V0Iiwgb3IgInNldCIuCisvLyAgICBBIGdlbmVyaWMgZGVzY3JpcHRvciBtYXkgYmUg
dXNlZCB0byBtb2RpZnkgdGhlIGF0dHJpYnV0ZXMgb2YgYW4gZXhpc3RpbmcKKy8vICAgIGRhdGEg
b3IgYWNjZXNzb3IgcHJvcGVydHksIG9yIHRvIGNyZWF0ZSBhIG5ldyBkYXRhIHByb3BlcnR5Lgor
SlNfRVhQT1JUIGV4dGVybiBOU1N0cmluZyAqIGNvbnN0IEpTUHJvcGVydHlEZXNjcmlwdG9yV3Jp
dGFibGVLZXk7CitKU19FWFBPUlQgZXh0ZXJuIE5TU3RyaW5nICogY29uc3QgSlNQcm9wZXJ0eURl
c2NyaXB0b3JFbnVtZXJhYmxlS2V5OworSlNfRVhQT1JUIGV4dGVybiBOU1N0cmluZyAqIGNvbnN0
IEpTUHJvcGVydHlEZXNjcmlwdG9yQ29uZmlndXJhYmxlS2V5OworSlNfRVhQT1JUIGV4dGVybiBO
U1N0cmluZyAqIGNvbnN0IEpTUHJvcGVydHlEZXNjcmlwdG9yVmFsdWVLZXk7CitKU19FWFBPUlQg
ZXh0ZXJuIE5TU3RyaW5nICogY29uc3QgSlNQcm9wZXJ0eURlc2NyaXB0b3JHZXRLZXk7CitKU19F
WFBPUlQgZXh0ZXJuIE5TU3RyaW5nICogY29uc3QgSlNQcm9wZXJ0eURlc2NyaXB0b3JTZXRLZXk7
CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfSAvLyBleHRlcm4gIkMiCisjZW5kaWYKKworI2VuZGlm
CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUubW0JKHJldmlzaW9uIDE0MDM0
NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQkod29ya2luZyBjb3B5
KQpAQCAtMzUsNyArMzUsNyBAQAogI2ltcG9ydCAiSlNXcmFwcGVyTWFwLmgiCiAjaW1wb3J0ICJP
YmpjUnVudGltZUV4dHJhcy5oIgogI2ltcG9ydCAiT3BlcmF0aW9ucy5oIgotI2ltcG9ydCAiSlNW
YWx1ZS5oIgorI2ltcG9ydCAiSlNDSlNWYWx1ZS5oIgogI2ltcG9ydCAid3RmL0hhc2hNYXAuaCIK
ICNpbXBvcnQgInd0Zi9IYXNoU2V0LmgiCiAjaW1wb3J0ICJ3dGYvVmVjdG9yLmgiCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVJbnRlcm5hbC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZUludGVybmFsLmgJKHJldmlzaW9uIDE0
MDM0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZUludGVybmFsLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiAjaW1wb3J0IDxKYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS5oPgotI2ltcG9ydCAiQVBJSlNWYWx1ZS5oIgorI2ltcG9ydCAi
SlNWYWx1ZS5oIgogCiAjaWYgSlNfT0JKQ19BUElfRU5BQkxFRAogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5jcHAJKHJldmlzaW9uIDE0MDM0NikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMw
LDEzICszMCwxMyBAQAogI2luY2x1ZGUgIkFQSVNoaW1zLmgiCiAjaW5jbHVkZSAiSlNDYWxsYmFj
a09iamVjdC5oIgogCisjaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlLmg+CiAjaW5jbHVkZSA8
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNPTk9iamVjdC5o
PgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJpbmcuaD4KICNpbmNsdWRlIDxydW50aW1lL0xpdGVy
YWxQYXJzZXIuaD4KICNpbmNsdWRlIDxydW50aW1lL09wZXJhdGlvbnMuaD4KICNpbmNsdWRlIDxy
dW50aW1lL1Byb3RlY3QuaD4KLSNpbmNsdWRlIDxydW50aW1lL0pTVmFsdWUuaD4KIAogI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dlYWtPYmplY3RNYXBSZWZQcml2YXRl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV2Vha09iamVj
dE1hcFJlZlByaXZhdGUuY3BwCShyZXZpc2lvbiAxNDAzNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTV2Vha09iamVjdE1hcFJlZlByaXZhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yOCw4ICsyOCw4IEBACiAKICNpbmNsdWRlICJBUElDYXN0LmgiCiAjaW5jbHVkZSAiQVBJU2hp
bXMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNDYWxsYmFja09iamVj
dC5oIgotI2luY2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNsdWRlICJKU1dlYWtPYmplY3RNYXBSZWZJ
bnRlcm5hbC5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KYXZhU2NyaXB0Q29yZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSmF2YVNjcmlwdENvcmUuaAko
cmV2aXNpb24gMTQwMzQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KYXZhU2NyaXB0
Q29yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAjaWYgZGVmaW5lZChfX09C
SkNfXykgJiYgSlNfT0JKQ19BUElfRU5BQkxFRAogCiAjaW1wb3J0ICJKU0NvbnRleHQuaCIKLSNp
bXBvcnQgIkFQSUpTVmFsdWUuaCIKKyNpbXBvcnQgIkpTVmFsdWUuaCIKICNpbXBvcnQgIkpTVmly
dHVhbE1hY2hpbmUuaCIKICNpbXBvcnQgIkpTRXhwb3J0LmgiCiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCShyZXZp
c2lvbiAxNDAzNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNw
cm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpA
QCAtOTgyLDE1ICs5ODIsMTUgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQotCQkJCVJl
bGF0aXZlUGF0aD0iLi5cLi5ccnVudGltZVxKU1ZhbHVlLmNwcCIKKwkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXC4uXHJ1bnRpbWVcSlNDSlNWYWx1ZS5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZp
bGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHJ1bnRpbWVcSlNWYWx1ZS5oIgorCQkJCVJlbGF0
aXZlUGF0aD0iLi5cLi5ccnVudGltZVxKU0NKU1ZhbHVlLmgiCiAJCQkJPgogCQkJPC9GaWxlPgog
CQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHJ1bnRpbWVcSlNWYWx1ZUlubGluZXMu
aCIKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHJ1bnRpbWVcSlNDSlNWYWx1ZUlubGluZXMuaCIK
IAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDE0MDM0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00MjYs
NyArNDI2LDcgQEAKIAkJMTQ3RjM5RDIxMDdFQzM3NjAwNDI3QTQ4IC8qIEpTR2xvYmFsT2JqZWN0
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0REUw
RDY4MEQwMjQzMTQwMEFBQ0NBMiAvKiBKU0dsb2JhbE9iamVjdC5jcHAgKi87IH07CiAJCTE0N0Yz
OUQ0MTA3RUMzNzYwMDQyN0E0OCAvKiBKU09iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzIyQTM5ODBFMTZFMTQ4MDBBRjIxQzggLyogSlNP
YmplY3QuY3BwICovOyB9OwogCQkxNDdGMzlENTEwN0VDMzc2MDA0MjdBNDggLyogSlNTdHJpbmcu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwMkU5
QjYwRTE4NDJGQTAwMEY5Mjk3IC8qIEpTU3RyaW5nLmNwcCAqLzsgfTsKLQkJMTQ3RjM5RDYxMDdF
QzM3NjAwNDI3QTQ4IC8qIEpTVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRjY5MkE4ODcwMjU1NTk3RDAxRkY2MEY3IC8qIEpTVmFsdWUuY3Bw
ICovOyB9OworCQkxNDdGMzlENjEwN0VDMzc2MDA0MjdBNDggLyogSlNDSlNWYWx1ZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjkyQTg4NzAyNTU1
OTdEMDFGRjYwRjcgLyogSlNDSlNWYWx1ZS5jcHAgKi87IH07CiAJCTE0N0YzOUQ3MTA3RUMzNzYw
MDQyN0E0OCAvKiBKU1ZhcmlhYmxlT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMjJBMzlBMEUxNkUxNDgwMEFGMjFDOCAvKiBKU1Zhcmlh
YmxlT2JqZWN0LmNwcCAqLzsgfTsKIAkJMTQ4MTZFMUIxNTRDQzU2QzAwQjgwNTRDIC8qIEJsb2Nr
QWxsb2NhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDE0ODE2RTE5MTU0Q0M1NkMwMEI4MDU0QyAvKiBCbG9ja0FsbG9jYXRvci5jcHAgKi87IH07
CiAJCTE0ODE2RTFDMTU0Q0M1NkMwMEI4MDU0QyAvKiBCbG9ja0FsbG9jYXRvci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ4MTZFMUExNTRDQzU2QzAw
QjgwNTRDIC8qIEJsb2NrQWxsb2NhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTUwMiw3ICs1MDIsNyBAQAogCQk4NjNDNkQ5QzE1MjExMTFB
MDA1ODVFNEUgLyogWWFyckNhbm9uaWNhbGl6ZVVDUzIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYzQzZEOTgxNTIxMTExMjAwNTg1RTRFIC8qIFlh
cnJDYW5vbmljYWxpemVVQ1MyLmNwcCAqLzsgfTsKIAkJODY0MkM1MTAxNTFDMDZBOTAwNDZENEVG
IC8qIFJlZ0V4cENhY2hlZFJlc3VsdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NkY3NUVGQjE1MUMwNjJGMDA3QzlCQTMgLyogUmVnRXhwQ2FjaGVk
UmVzdWx0LmNwcCAqLzsgfTsKIAkJODY0MkM1MTIxNTFDMDgzRDAwNDZENEVGIC8qIFJlZ0V4cE1h
dGNoZXNBcnJheS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4NkY3NUVGRDE1MUMwNjJGMDA3QzlCQTMgLyogUmVnRXhwTWF0Y2hlc0FycmF5LmNwcCAq
LzsgfTsKLQkJODY1QTMwRjExMzUwMDdFMTAwQ0RCNDlFIC8qIEpTVmFsdWVJbmxpbmVzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjVBMzBGMDEzNTAw
N0UxMDBDREI0OUUgLyogSlNWYWx1ZUlubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NjVBMzBGMTEzNTAwN0UxMDBDREI0OUUgLyogSlND
SlNWYWx1ZUlubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg2NUEzMEYwMTM1MDA3RTEwMENEQjQ5RSAvKiBKU0NKU1ZhbHVlSW5saW5lcy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2NUY0MDg4
MTBFN0Q1NjMwMDk0NzM2MSAvKiBBUElTaGltcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODY1RjQwODcxMEU3RDU2MzAwOTQ3MzYxIC8qIEFQSVNoaW1z
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY2
NzM5RDIxM0JGREU3MTAwMjNEODdDIC8qIEJpZ0ludGVnZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NjczOUQwMTNCRkRFNzEwMDIzRDg3QyAvKiBC
aWdJbnRlZ2VyLmggKi87IH07CiAJCTg2NjczOUQzMTNCRkRFNzEwMDIzRDg3QyAvKiBVaW50MTZX
aXRoRnJhY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg2NjczOUQxMTNCRkRFNzEwMDIzRDg3QyAvKiBVaW50MTZXaXRoRnJhY3Rpb24uaCAqLzsg
fTsKQEAgLTU1MSw3ICs1NTEsNyBAQAogCQk4NkQzQjNDNDEwMTU5RDdGMDAyODY1RTcgLyogUmVw
YXRjaEJ1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODZEM0IzQzIxMDE1OUQ3RjAwMjg2NUU3IC8qIFJlcGF0Y2hCdWZmZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkRCNjQ2NDBGOTVDNkZD
MDBEN0Q5MjEgLyogRXhlY3V0YWJsZUFsbG9jYXRvckZpeGVkVk1Qb29sLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2REI2NDYzMEY5NUM2RkMwMEQ3
RDkyMSAvKiBFeGVjdXRhYmxlQWxsb2NhdG9yRml4ZWRWTVBvb2wuY3BwICovOyB9OwogCQk4NkUx
MTZCMTBGRTc1QUM4MDBCNTEyQkMgLyogQ29kZUxvY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkUxMTZCMDBGRTc1QUM4MDBCNTEyQkMgLyog
Q29kZUxvY2F0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKLQkJODZFM0M2MTIxNjdCQUJENzAwNkQ3NjBBIC8qIEFQSUpTVmFsdWUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RTNDNjA2MTY3QkFCODcw
MDZENzYwQSAvKiBBUElKU1ZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVi
bGljLCApOyB9OyB9OworCQk4NkUzQzYxMjE2N0JBQkQ3MDA2RDc2MEEgLyogSlNWYWx1ZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZFM0M2MDYxNjdC
QUI4NzAwNkQ3NjBBIC8qIEpTVmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
dWJsaWMsICk7IH07IH07CiAJCTg2RTNDNjEzMTY3QkFCRDcwMDZENzYwQSAvKiBKU0NvbnRleHQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RTNDNjA3
MTY3QkFCODcwMDZENzYwQSAvKiBKU0NvbnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQdWJsaWMsICk7IH07IH07CiAJCTg2RTNDNjE0MTY3QkFCRDcwMDZENzYwQSAvKiBKU0V4
cG9ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZF
M0M2MEExNjdCQUI4NzAwNkQ3NjBBIC8qIEpTRXhwb3J0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQk4NkUzQzYxNTE2N0JBQkQ3MDA2RDc2MEEgLyog
SlNWaXJ0dWFsTWFjaGluZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODZFM0M2MEYxNjdCQUI4NzAwNkQ3NjBBIC8qIEpTVmlydHVhbE1hY2hpbmUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CkBAIC03MTksNyAr
NzE5LDcgQEAKIAkJQkMxOEM0MjgwRTE2RjVDRDAwQjM0NDYwIC8qIEpTU3RyaW5nUmVmLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDgyQjc0QjBBNDMw
MzI4MDA1MTdDRkMgLyogSlNTdHJpbmdSZWYuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQdWJsaWMsICk7IH07IH07CiAJCUJDMThDNDI5MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU1N0cmlu
Z1JlZkNGLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
NDZBQUIyQTBCNjZBODQ5MDBFNTVGMTYgLyogSlNTdHJpbmdSZWZDRi5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJQkMxOEM0MkEwRTE2RjVDRDAwQjM0
NDYwIC8qIEpTVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMTRBQkI0NTQwOTlDMkEwRjAwRTJBMjRGIC8qIEpTVHlwZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUJDMThDNDJCMEUxNkY1Q0QwMEIz
NDQ2MCAvKiBKU1ZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxNEFCQjM2RTA5OUMwNzY0MDBFMkEyNEYgLyogSlNWYWx1ZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUJDMThDNDJCMEUxNkY1Q0Qw
MEIzNDQ2MCAvKiBKU0NKU1ZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxNEFCQjM2RTA5OUMwNzY0MDBFMkEyNEYgLyogSlNDSlNWYWx1ZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDMThDNDJD
MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU1ZhbHVlUmVmLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDgyQjZFQTBBNDMwMEIzMDA1MTdDRkMgLyogSlNWYWx1
ZVJlZi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJ
QkMxOEM0MkQwRTE2RjVDRDAwQjM0NDYwIC8qIEpTVmFyaWFibGVPYmplY3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RjI1MjU2MEQwOEREOEQwMDRF
Q0ZGRiAvKiBKU1ZhcmlhYmxlT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkMxOEM0MkUwRTE2RjVDRDAwQjM0NDYwIC8qIEpTV3JhcHBl
ck9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NjVDN0ExNzIwQThFQUFDQjAwRkEzN0VBIC8qIEpTV3JhcHBlck9iamVjdC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMjYzLDcgKzEyNjMsNyBA
QAogCQkxNEE0MkUzRDBGNEY2MEVFMDA1OTkwOTkgLyogVGltZW91dENoZWNrZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGltZW91dENoZWNrZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNEE0MkUzRTBGNEY2MEVFMDA1OTkwOTkgLyogVGlt
ZW91dENoZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGltZW91dENo
ZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTRBNjU4MUEwRjRFMzZGNDAw
MDE1MEZEIC8qIEpJVFN0dWJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJ
VFN0dWJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTE0QUJCMzZFMDk5QzA3NjQw
MEUyQTI0RiAvKiBKU1ZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U1ZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0QUJCMzZFMDk5QzA3NjQw
MEUyQTI0RiAvKiBKU0NKU1ZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU0NKU1ZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0QUJCNDU0MDk5
QzJBMEYwMEUyQTI0RiAvKiBKU1R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0QUJERjVEMEE0MzdG
RUYwMEVDQ0EwMSAvKiBKU0NhbGxiYWNrT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTQ2FsbGJhY2tPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMTRBQkRGNUUwQTQzN0ZFRjAwRUNDQTAxIC8qIEpTQ2FsbGJhY2tPYmplY3QuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDYWxsYmFja09iamVjdC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzU2LDcgKzEzNTYsNyBAQAogCQk4NjNDNkQ5
ODE1MjExMTEyMDA1ODVFNEUgLyogWWFyckNhbm9uaWNhbGl6ZVVDUzIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gWWFyckNhbm9uaWNhbGl6ZVVDUzIuY3BwOyBwYXRo
ID0geWFyci9ZYXJyQ2Fub25pY2FsaXplVUNTMi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTg2M0M2RDk5MTUyMTExMTIwMDU4NUU0RSAvKiBZYXJyQ2Fub25pY2FsaXplVUNTMi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBZYXJyQ2Fub25pY2FsaXplVUNTMi5o
OyBwYXRoID0geWFyci9ZYXJyQ2Fub25pY2FsaXplVUNTMi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4NjNDNkQ5QTE1MjExMTEyMDA1ODVFNEUgLyogWWFyckNhbm9uaWNhbGl6ZVVD
UzIuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IG5hbWUgPSBZYXJyQ2Fub25p
Y2FsaXplVUNTMi5qczsgcGF0aCA9IHlhcnIvWWFyckNhbm9uaWNhbGl6ZVVDUzIuanM7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg2NUEzMEYwMTM1MDA3RTEwMENEQjQ5RSAvKiBKU1Zh
bHVlSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1ZhbHVlSW5s
aW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NjVBMzBGMDEzNTAwN0UxMDBD
REI0OUUgLyogSlNDSlNWYWx1ZUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNDSlNWYWx1ZUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODY1RjQwODcxMEU3RDU2MzAwOTQ3MzYxIC8qIEFQSVNoaW1zLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEFQSVNoaW1zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTg2NjczOUQwMTNCRkRFNzEwMDIzRDg3QyAvKiBCaWdJbnRlZ2VyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEJpZ0ludGVnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJODY2NzM5RDExM0JGREU3MTAwMjNEODdDIC8qIFVpbnQxNldpdGhGcmFjdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVaW50MTZXaXRoRnJhY3Rpb24uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0MTEsNyArMTQxMSw3IEBACiAJCTg2RDNCM0My
MTAxNTlEN0YwMDI4NjVFNyAvKiBSZXBhdGNoQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlcGF0Y2hCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJODZEQjY0NjMwRjk1QzZGQzAwRDdEOTIxIC8qIEV4ZWN1dGFibGVBbGxvY2F0b3JGaXhlZFZN
UG9vbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeGVjdXRhYmxl
QWxsb2NhdG9yRml4ZWRWTVBvb2wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4
NkUxMTZCMDBGRTc1QUM4MDBCNTEyQkMgLyogQ29kZUxvY2F0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENvZGVMb2NhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk4NkUzQzYwNjE2N0JBQjg3MDA2RDc2MEEgLyogQVBJSlNWYWx1ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElKU1ZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTg2RTNDNjA2MTY3QkFCODcwMDZENzYwQSAvKiBKU1ZhbHVlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJODZFM0M2MDcxNjdCQUI4NzAwNkQ3NjBBIC8qIEpTQ29udGV4dC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODZFM0M2MDgxNjdCQUI4NzAwNkQ3NjBBIC8qIEpTQ29udGV4dC5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEpTQ29udGV4dC5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODZFM0M2MDkxNjdCQUI4NzAwNkQ3NjBBIC8qIEpT
Q29udGV4dEludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ29u
dGV4dEludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzE4LDcgKzE3
MTgsNyBAQAogCQlGNjkyQTg3QzAyNTU1OTdEMDFGRjYwRjcgLyogUmVnRXhwT2JqZWN0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRo
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cE9i
amVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CiAJCUY2OTJB
ODdEMDI1NTU5N0QwMUZGNjBGNyAvKiBSZWdFeHAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVnRXhwLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9OwogCQlGNjkyQTg3RTAyNTU1OTdEMDFGRjYwRjcg
LyogUmVnRXhwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlZ0V4cC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07
Ci0JCUY2OTJBODg3MDI1NTU5N0QwMUZGNjBGNyAvKiBKU1ZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVmFsdWUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CisJCUY2OTJBODg3MDI1NTU5
N0QwMUZGNjBGNyAvKiBKU0NKU1ZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ0pTVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CiAJCUZFMjBDRTlCMTVGMDRBOTUwMERGMzQzMCAv
KiBMTEludENMb29wLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExM
SW50Q0xvb3AuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRDTG9vcC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUZFMjBDRTlDMTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENMb29wLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50Q0xvb3AuaDsgcGF0aCA9IGxs
aW50L0xMSW50Q0xvb3AuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU0QTMzMUQx
NUJEMkUwNzAwNkY1NEYzIC8qIFZNSW5zcGVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFZNSW5zcGVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTIwODgsNyArMjA4OCw3IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAogCQkJCTE0ODJCNzhBMEE0MzA1QUIwMDUxN0NGQyAvKiBBUElDYXN0LmggKi8sCi0JCQkJ
ODZFM0M2MDYxNjdCQUI4NzAwNkQ3NjBBIC8qIEFQSUpTVmFsdWUuaCAqLywKKwkJCQk4NkUzQzYw
NjE2N0JBQjg3MDA2RDc2MEEgLyogSlNWYWx1ZS5oICovLAogCQkJCTg2NUY0MDg3MTBFN0Q1NjMw
MDk0NzM2MSAvKiBBUElTaGltcy5oICovLAogCQkJCTFDQUE4QjRBMEQzMkMzOUEwMDQxQkNGRiAv
KiBKYXZhU2NyaXB0LmggKi8sCiAJCQkJMUNBQThCNEIwRDMyQzM5QTAwNDFCQ0ZGIC8qIEphdmFT
Y3JpcHRDb3JlLmggKi8sCkBAIC0yMzg5LDkgKzIzODksOSBAQAogCQkJCTBGOTE5RDBBMTU3RUUw
OUQwMDRBNEU3RCAvKiBKU1N5bWJvbFRhYmxlT2JqZWN0LmggKi8sCiAJCQkJMTRBQkI0NTQwOTlD
MkEwRjAwRTJBMjRGIC8qIEpTVHlwZS5oICovLAogCQkJCTY1MDdEMjk3MEU4NzFFNEEwMEQ3RDg5
NiAvKiBKU1R5cGVJbmZvLmggKi8sCi0JCQkJRjY5MkE4ODcwMjU1NTk3RDAxRkY2MEY3IC8qIEpT
VmFsdWUuY3BwICovLAotCQkJCTE0QUJCMzZFMDk5QzA3NjQwMEUyQTI0RiAvKiBKU1ZhbHVlLmgg
Ki8sCi0JCQkJODY1QTMwRjAxMzUwMDdFMTAwQ0RCNDlFIC8qIEpTVmFsdWVJbmxpbmVzLmggKi8s
CisJCQkJRjY5MkE4ODcwMjU1NTk3RDAxRkY2MEY3IC8qIEpTQ0pTVmFsdWUuY3BwICovLAorCQkJ
CTE0QUJCMzZFMDk5QzA3NjQwMEUyQTI0RiAvKiBKU0NKU1ZhbHVlLmggKi8sCisJCQkJODY1QTMw
RjAxMzUwMDdFMTAwQ0RCNDlFIC8qIEpTQ0pTVmFsdWVJbmxpbmVzLmggKi8sCiAJCQkJQkMyMkEz
OUEwRTE2RTE0ODAwQUYyMUM4IC8qIEpTVmFyaWFibGVPYmplY3QuY3BwICovLAogCQkJCTE0RjI1
MjU2MEQwOEREOEQwMDRFQ0ZGRiAvKiBKU1ZhcmlhYmxlT2JqZWN0LmggKi8sCiAJCQkJMTQ0MjU2
NUYxNUVERTk4RDAwNjZBNDlCIC8qIEpTV2l0aFNjb3BlLmNwcCAqLywKQEAgLTI4MzgsNyArMjgz
OCw3IEBACiAJCQkJODYwMTYxRTMwRjNBODNDMTAwRjg0NzEwIC8qIEFic3RyYWN0TWFjcm9Bc3Nl
bWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTVGMEY1MTREMTA2M0MwMEFDNzY0OSAvKiBB
YnN0cmFjdFBDLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzNFNTBFMTZGNUNEMDBCMzQ0NjAg
LyogQVBJQ2FzdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJODZFM0M2MTIxNjdCQUJENzAwNkQ3NjBB
IC8qIEFQSUpTVmFsdWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTg2RTNDNjEyMTY3QkFCRDcwMDZE
NzYwQSAvKiBKU1ZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjVGNDA4ODEwRTdENTYzMDA5
NDczNjEgLyogQVBJU2hpbXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRjYwNTE0MEUyMDNFRjgw
MEI5QTY0RCAvKiBBcmdMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzI1N0RFODBFMUY1MUM1
MDAxNkI2QzkgLyogQXJndW1lbnRzLmggaW4gSGVhZGVycyAqLywKQEAgLTMwNzYsOCArMzA3Niw4
IEBACiAJCQkJMEY5MTlEMEQxNTdFRTBBMjAwNEE0RTdEIC8qIEpTU3ltYm9sVGFibGVPYmplY3Qu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDJBMEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU1R5cGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTY1MDdEMjlFMEU4NzFFNUUwMEQ3RDg5NiAvKiBKU1R5cGVJ
bmZvLmggaW4gSGVhZGVycyAqLywKLQkJCQlCQzE4QzQyQjBFMTZGNUNEMDBCMzQ0NjAgLyogSlNW
YWx1ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJODY1QTMwRjExMzUwMDdFMTAwQ0RCNDlFIC8qIEpT
VmFsdWVJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzE4QzQyQjBFMTZGNUNEMDBCMzQ0
NjAgLyogSlNDSlNWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJODY1QTMwRjExMzUwMDdFMTAw
Q0RCNDlFIC8qIEpTQ0pTVmFsdWVJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkUzQzYx
QjE2N0JBQkVFMDA2RDc2MEEgLyogSlNWYWx1ZUludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzE4QzQyQzBFMTZGNUNEMDBCMzQ0NjAgLyogSlNWYWx1ZVJlZi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkMxOEM0MkQwRTE2RjVDRDAwQjM0NDYwIC8qIEpTVmFyaWFibGVPYmplY3QuaCBpbiBI
ZWFkZXJzICovLApAQCAtMzc4NCw3ICszNzg0LDcgQEAKIAkJCQkxNDgyQjc0RTBBNDMwMzI4MDA1
MTdDRkMgLyogSlNTdHJpbmdSZWYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ2QUFCMzgwQjY2
QTk0NDAwRTU1RjE2IC8qIEpTU3RyaW5nUmVmQ0YuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5
MTlEMEMxNTdFRTA5RjAwNEE0RTdEIC8qIEpTU3ltYm9sVGFibGVPYmplY3QuY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJMTQ3RjM5RDYxMDdFQzM3NjAwNDI3QTQ4IC8qIEpTVmFsdWUuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJMTQ3RjM5RDYxMDdFQzM3NjAwNDI3QTQ4IC8qIEpTQ0pTVmFsdWUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJODZFM0M2MUExNjdCQUJFRTAwNkQ3NjBBIC8qIEpTVmFsdWUu
bW0gaW4gU291cmNlcyAqLywKIAkJCQkxNEJENUEzMjBBM0U5MUY2MDBCQUY1OUMgLyogSlNWYWx1
ZVJlZi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlENzEwN0VDMzc2MDA0MjdBNDggLyog
SlNWYXJpYWJsZU9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5oCShyZXZpc2lvbiAxNDAzNDYp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAkod29y
a2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0
aW9uS2luZC5oIgogI2luY2x1ZGUgIkludHJpbnNpYy5oIgotI2luY2x1ZGUgIkpTVmFsdWUuaCIK
KyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMTQw
MzQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQxLDkgKzQxLDkgQEAKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRl
ICJKSVRTdHVicy5oIgogI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgorI2luY2x1ZGUgIkpTQ0pT
VmFsdWUuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNOYW1lU2NvcGUu
aCIKLSNpbmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5o
IgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJSZWR1Y2VXaGl0ZXNwYWNlLmgi
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZh
bHVlUHJvZmlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmgJKHJldmlzaW9uIDE0MDM0NikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAKIC8vIHRoZXNlICNpZidzIHdpbGwg
ZGlzYXBwZWFyLi4uCiAjaWYgRU5BQkxFKERGR19KSVQpCiAKLSNpbmNsdWRlICJKU1ZhbHVlLmgi
CisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Jlc29sdmVHbG9iYWxTdGF0dXMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXNvbHZlR2xvYmFsU3Rh
dHVzLmNwcAkocmV2aXNpb24gMTQwMzQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1Jlc29sdmVHbG9iYWxTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3
IEBACiAjaW5jbHVkZSAiUmVzb2x2ZUdsb2JhbFN0YXR1cy5oIgogCiAjaW5jbHVkZSAiQ29kZUJs
b2NrLmgiCi0jaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNp
bmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXNvbHZlR2xvYmFsU3RhdHVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Jlc29sdmVHbG9iYWxTdGF0
dXMuaAkocmV2aXNpb24gMTQwMzQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1Jlc29sdmVHbG9iYWxTdGF0dXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAog
I2lmbmRlZiBSZXNvbHZlR2xvYmFsU3RhdHVzX2gKICNkZWZpbmUgUmVzb2x2ZUdsb2JhbFN0YXR1
c19oCiAKLSNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2lu
Y2x1ZGUgIlByb3BlcnR5T2Zmc2V0LmgiCiAjaW5jbHVkZSA8d3RmL05vdEZvdW5kLmg+CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5o
CShyZXZpc2lvbiAxNDAzNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3Bl
Y3VsYXRlZFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogI2lmbmRlZiBT
cGVjdWxhdGVkVHlwZV9oCiAjZGVmaW5lIFNwZWN1bGF0ZWRUeXBlX2gKIAotI2luY2x1ZGUgIkpT
VmFsdWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVSZWNvdmVyeS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVJlY292ZXJ5LmgJ
KHJldmlzaW9uIDE0MDM0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1
ZVJlY292ZXJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICNkZWZpbmUgVmFs
dWVSZWNvdmVyeV9oCiAKICNpbmNsdWRlICJEYXRhRm9ybWF0LmgiCi0jaW5jbHVkZSAiSlNWYWx1
ZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5o
IgogI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rlci5oIgogI2luY2x1ZGUgPHN0ZGlvLmg+CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAko
cmV2aXNpb24gMTQwMzQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlICJE
RkdBcnJheU1vZGUuaCIKICNpbmNsdWRlICJERkdDYXBhYmlsaXRpZXMuaCIKICNpbmNsdWRlICJH
ZXRCeUlkU3RhdHVzLmgiCi0jaW5jbHVkZSAiSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJK
U0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRTdGF0dXMuaCIKICNpbmNsdWRl
ICJSZXNvbHZlR2xvYmFsU3RhdHVzLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCShyZXZpc2lv
biAxNDAzNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzUsOCArMzUsOCBAQAogI2luY2x1ZGUgIkRGR1Nsb3dQYXRo
R2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiREZHU3BlY3VsYXRpdmVKSVQuaCIKICNpbmNsdWRlICJE
RkdUaHVua3MuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpT
R2xvYmFsRGF0YS5oIgotI2luY2x1ZGUgIkpTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTGlu
a0J1ZmZlci5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMTQwMzQ2KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcg
QEAKICNpbmNsdWRlICJERkdOb2RlRmxhZ3MuaCIKICNpbmNsdWRlICJERkdOb2RlVHlwZS5oIgog
I2luY2x1ZGUgIkRGR1ZhcmlhYmxlQWNjZXNzRGF0YS5oIgotI2luY2x1ZGUgIkpTVmFsdWUuaCIK
KyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiT3BlcmFuZHMuaCIKICNpbmNsdWRl
ICJTcGVjdWxhdGVkVHlwZS5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVNldC5oIgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShy
ZXZpc2lvbiAxNDAzNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSAi
QXJyYXlQcm90b3R5cGUuaCIKICNpbmNsdWRlICJERkdDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0
aEdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkRGR1Nsb3dQYXRoR2VuZXJhdG9yLmgiCi0jaW5jbHVk
ZSAiSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIk9iamVjdFByb3RvdHlwZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcAkocmV2aXNpb24gMTQwMzQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKICNp
bmNsdWRlICJERkdBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiREZHQ2Fs
bEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJERkdTbG93UGF0
aEdlbmVyYXRvci5oIgotI2luY2x1ZGUgIkpTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlND
SlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCiAKIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgREZHIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Nv
cGllZEJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29w
aWVkQmxvY2suaAkocmV2aXNpb24gMTQwMzQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvQ29waWVkQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogI2luY2x1
ZGUgIkJsb2NrQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiQ29weVdvcmtMaXN0LmgiCiAjaW5jbHVk
ZSAiSGVhcEJsb2NrLmgiCi0jaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFs
dWUuaCIKICNpbmNsdWRlICJPcHRpb25zLmgiCiAjaW5jbHVkZSA8d3RmL0F0b21pY3MuaD4KICNp
bmNsdWRlIDx3dGYvT3duUHRyLmg+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
YW5kbGVTdGFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGFuZGxlU3RhY2suY3BwCShyZXZpc2lvbiAxNDAzNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IYW5kbGVTdGFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDggKzI3LDggQEAK
ICNpbmNsdWRlICJIYW5kbGVTdGFjay5oIgogCiAjaW5jbHVkZSAiSGVhcFJvb3RWaXNpdG9yLmgi
CisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgot
I2luY2x1ZGUgIkpTVmFsdWVJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGVUeXBlcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZVR5cGVzLmgJKHJldmlzaW9uIDE0MDM0NikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZVR5cGVzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgSGFuZGxlVHlwZXNfaAogI2RlZmluZSBIYW5k
bGVUeXBlc19oCiAKLSNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5o
IgogCiBuYW1lc3BhY2UgSlNDIHsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
V2Vha0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFr
SW1wbC5oCShyZXZpc2lvbiAxNDAzNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9X
ZWFrSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIFdlYWtJ
bXBsX2gKICNkZWZpbmUgV2Vha0ltcGxfaAogCi0jaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1
ZGUgIkpTQ0pTVmFsdWUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCShyZXZpc2lvbiAxNDAz
NDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMzEsOSArMzEsOSBAQAogI2RlZmluZSBJbnRlcnByZXRlcl9oCiAK
ICNpbmNsdWRlICJBcmdMaXN0LmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUg
IkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKLSNpbmNsdWRlICJKU1ZhbHVlLmgi
CiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJKU1N0YWNrLmgiCiAjaW5jbHVkZSAi
TExJbnREYXRhLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVn
aXN0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
UmVnaXN0ZXIuaAkocmV2aXNpb24gMTQwMzQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL1JlZ2lzdGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKICNp
Zm5kZWYgUmVnaXN0ZXJfaAogI2RlZmluZSBSZWdpc3Rlcl9oCiAKLSNpbmNsdWRlICJKU1ZhbHVl
LmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+
CiAjaW5jbHVkZSA8d3RmL1ZlY3RvclRyYWl0cy5oPgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvVk1JbnNwZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvVk1JbnNwZWN0b3IuaAkocmV2aXNpb24gMTQwMzQ2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1ZNSW5zcGVjdG9yLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKICNkZWZpbmUgRU5BQkxFX1ZNSU5TUEVDVE9SIDAK
IAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgotI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRl
ICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSA8c3RkYXJnLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcAkocmV2aXNpb24gMTQwMzQ2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjcsOSArMjcsOSBAQAogI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJu
VmFsdWUuaCIKIAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgotI2luY2x1ZGUgPHd0Zi9JbmxpbmVB
U00uaD4KKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTT2JqZWN0
LmgiCi0jaW5jbHVkZSAiSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlIDx3dGYvSW5saW5lQVNN
Lmg+CiAKIAogbmFtZXNwYWNlIEpTQyB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0hvc3RDYWxsUmV0dXJuVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuaAkocmV2aXNpb24gMTQwMzQ2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgSG9zdENhbGxSZXR1cm5WYWx1ZV9oCiAjZGVmaW5l
IEhvc3RDYWxsUmV0dXJuVmFsdWVfaAogCi0jaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUg
IkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKICNpbmNs
dWRlIDx3dGYvUGxhdGZvcm0uaD4KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRDb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2Rl
LmgJKHJldmlzaW9uIDE0MDM0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29k
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiQ2FsbEZyYW1l
LmgiCiAjaW5jbHVkZSAiRGlzYXNzZW1ibGVyLmgiCiAjaW5jbHVkZSAiSklUU3R1YnMuaCIKLSNp
bmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkxl
Z2FjeVByb2ZpbGVyLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiCiAjZW5k
aWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmNwcAko
cmV2aXNpb24gMTQwMzQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRFeGNlcHRp
b25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksOCArMjksOCBAQAogI2luY2x1ZGUgIkNhbGxG
cmFtZS5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgi
CisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTR2xvYmFsRGF0YS5oIgotI2lu
Y2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAKICNpZiBFTkFCTEUo
SklUKSB8fCBFTkFCTEUoTExJTlQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VEV4Y2VwdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VEV4Y2VwdGlvbnMuaAkocmV2aXNpb24gMTQwMzQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRFeGNlcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNp
Zm5kZWYgSklURXhjZXB0aW9uc19oCiAjZGVmaW5lIEpJVEV4Y2VwdGlvbnNfaAogCi0jaW5jbHVk
ZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJNYWNyb0Fz
c2VtYmxlckNvZGVSZWYuaCIKIAogI2lmIEVOQUJMRShKSVQpIHx8IEVOQUJMRShMTElOVCkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgJKHJldmlzaW9u
IDE0MDM0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAko
d29ya2luZyBjb3B5KQpAQCAtMjksOSArMjksOSBAQAogI2luY2x1ZGUgIkJ5dGVjb2RlQ29udmVu
dGlvbnMuaCIKICNpbmNsdWRlICJKSVRDb2RlLmgiCiAjaW5jbHVkZSAiSklUU3R1YnMuaCIKKyNp
bmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNTdGFjay5oIgogI2luY2x1ZGUgIkpT
U3RyaW5nLmgiCi0jaW5jbHVkZSAiSlNWYWx1ZS5oIgogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVy
LmgiCiAjaW5jbHVkZSA8d3RmL0Fsd2F5c0lubGluZS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludENMb29wLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50Q0xvb3AuaAkocmV2aXNp
b24gMTQwMzQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50Q0xvb3AuaAko
d29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogI2lmIEVOQUJMRShMTElOVF9DX0xPT1Ap
CiAKICNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCi0jaW5jbHVkZSAiSlNWYWx1
ZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNv
ZGVSZWYuaCIKICNpbmNsdWRlICJPcGNvZGUuaCIKICNpbmNsdWRlICJSZWdpc3Rlci5oIgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaAkocmV2aXNpb24gMTQwMzQ2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIExMSW50RGF0YV9oCiAjZGVmaW5lIExMSW50
RGF0YV9oCiAKLSNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgog
I2luY2x1ZGUgIk9wY29kZS5oIgogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlz
aW9uIDE0MDM0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDExICszOCwxMSBAQAogI2luY2x1ZGUgIkpJVC5o
IgogI2luY2x1ZGUgIkpJVERyaXZlci5oIgogI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgorI2lu
Y2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5o
IgogI2luY2x1ZGUgIkpTTmFtZVNjb3BlLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvci5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCi0jaW5jbHVkZSAiSlNWYWx1ZS5oIgogI2lu
Y2x1ZGUgIkpTV2l0aFNjb3BlLmgiCiAjaW5jbHVkZSAiTExJbnRDb21tb24uaCIKICNpbmNsdWRl
ICJMTEludEV4Y2VwdGlvbnMuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxl
ci9Qcm9maWxlckJ5dGVjb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Byb2ZpbGVyL1Byb2ZpbGVyQnl0ZWNvZGUuaAkocmV2aXNpb24gMTQwMzQ2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQnl0ZWNvZGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBQcm9maWxlckJ5dGVjb2RlX2gKICNkZWZpbmUg
UHJvZmlsZXJCeXRlY29kZV9oCiAKLSNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlND
SlNWYWx1ZS5oIgogI2luY2x1ZGUgIk9wY29kZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQnl0
ZWNvZGVTZXF1ZW5jZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9m
aWxlci9Qcm9maWxlckJ5dGVjb2RlU2VxdWVuY2UuaAkocmV2aXNpb24gMTQwMzQ2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQnl0ZWNvZGVTZXF1ZW5jZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIFByb2ZpbGVyQnl0ZWNvZGVT
ZXF1ZW5jZV9oCiAjZGVmaW5lIFByb2ZpbGVyQnl0ZWNvZGVTZXF1ZW5jZV9oCiAKLSNpbmNsdWRl
ICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIlByb2ZpbGVy
Qnl0ZWNvZGUuaCIKICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJC
eXRlY29kZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIv
UHJvZmlsZXJCeXRlY29kZXMuaAkocmV2aXNpb24gMTQwMzQ2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQnl0ZWNvZGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3
LDcgKzI3LDcgQEAKICNkZWZpbmUgUHJvZmlsZXJCeXRlY29kZXNfaAogCiAjaW5jbHVkZSAiQ29k
ZUJsb2NrSGFzaC5oIgotI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVl
LmgiCiAjaW5jbHVkZSAiUHJvZmlsZXJCeXRlY29kZVNlcXVlbmNlLmgiCiAjaW5jbHVkZSA8d3Rm
L1ByaW50U3RyZWFtLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckNvbXBpbGF0
aW9uLmgJKHJldmlzaW9uIDE0MDM0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxl
ci9Qcm9maWxlckNvbXBpbGF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAK
ICNkZWZpbmUgUHJvZmlsZXJDb21waWxhdGlvbl9oCiAKICNpbmNsdWRlICJFeGl0S2luZC5oIgot
I2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAi
UHJvZmlsZXJDb21waWxhdGlvbktpbmQuaCIKICNpbmNsdWRlICJQcm9maWxlckNvbXBpbGVkQnl0
ZWNvZGUuaCIKICNpbmNsdWRlICJQcm9maWxlckV4ZWN1dGlvbkNvdW50ZXIuaCIKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckNvbXBpbGVkQnl0ZWNvZGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJDb21w
aWxlZEJ5dGVjb2RlLmgJKHJldmlzaW9uIDE0MDM0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wcm9maWxlci9Qcm9maWxlckNvbXBpbGVkQnl0ZWNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MjYsNyArMjYsNyBAQAogI2lmbmRlZiBQcm9maWxlckNvbXBpbGVkQnl0ZWNvZGVfaAogI2RlZmlu
ZSBQcm9maWxlckNvbXBpbGVkQnl0ZWNvZGVfaAogCi0jaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2lu
Y2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJQcm9maWxlck9yaWdpblN0YWNrLmgiCiAj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcHJvZmlsZXIvUHJvZmlsZXJEYXRhYmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckRhdGFiYXNlLmgJKHJldmlzaW9uIDE0MDM0NikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckRhdGFiYXNlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgUHJvZmlsZXJEYXRhYmFzZV9o
CiAjZGVmaW5lIFByb2ZpbGVyRGF0YWJhc2VfaAogCi0jaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2lu
Y2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJQcm9maWxlckJ5dGVjb2Rlcy5oIgogI2lu
Y2x1ZGUgIlByb2ZpbGVyQ29tcGlsYXRpb24uaCIKICNpbmNsdWRlICJQcm9maWxlckNvbXBpbGF0
aW9uS2luZC5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVy
T1NSRXhpdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Q
cm9maWxlck9TUkV4aXQuaAkocmV2aXNpb24gMTQwMzQ2KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3Byb2ZpbGVyL1Byb2ZpbGVyT1NSRXhpdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsy
Nyw3IEBACiAjZGVmaW5lIFByb2ZpbGVyT1NSRXhpdF9oCiAKICNpbmNsdWRlICJFeGl0S2luZC5o
IgotI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVk
ZSAiUHJvZmlsZXJPcmlnaW5TdGFjay5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFBy
b2ZpbGVyIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlck9T
UkV4aXRTaXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVy
L1Byb2ZpbGVyT1NSRXhpdFNpdGUuaAkocmV2aXNpb24gMTQwMzQ2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyT1NSRXhpdFNpdGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBQcm9maWxlck9TUkV4aXRTaXRlX2gKICNkZWZpbmUg
UHJvZmlsZXJPU1JFeGl0U2l0ZV9oCiAKLSNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAi
SlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBQcm9maWxlciB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmls
ZXIvUHJvZmlsZXJPcmlnaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cHJvZmlsZXIvUHJvZmlsZXJPcmlnaW4uaAkocmV2aXNpb24gMTQwMzQ2KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyT3JpZ2luLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDcgKzI3LDcgQEAKICNkZWZpbmUgUHJvZmlsZXJPcmlnaW5faAogCiAjaW5jbHVkZSAiQ29k
ZUJsb2NrSGFzaC5oIgotI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVl
LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0u
aD4KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyT3JpZ2lu
U3RhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJv
ZmlsZXJPcmlnaW5TdGFjay5oCShyZXZpc2lvbiAxNDAzNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcHJvZmlsZXIvUHJvZmlsZXJPcmlnaW5TdGFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
Niw3ICsyNiw3IEBACiAjaWZuZGVmIFByb2ZpbGVyT3JpZ2luU3RhY2tfaAogI2RlZmluZSBQcm9m
aWxlck9yaWdpblN0YWNrX2gKIAotI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0NK
U1ZhbHVlLmgiCiAjaW5jbHVkZSAiUHJvZmlsZXJPcmlnaW4uaCIKICNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5jcHAJKHJldmlzaW9uIDE0MDM0NikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
Miw3ICsyMiw3IEBACiAjaW5jbHVkZSAiQXJnTGlzdC5oIgogCiAjaW5jbHVkZSAiSGVhcFJvb3RW
aXNpdG9yLmgiCi0jaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIK
ICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHJhbnNjZW5kZW50YWxGdW5jdGlv
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFRy
YW5zY2VuZGVudGFsRnVuY3Rpb24uaAkocmV2aXNpb24gMTQwMzQ2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHJhbnNjZW5kZW50YWxGdW5jdGlvbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIENhY2hlZFRyYW5zY2VuZGVudGFsRnVu
Y3Rpb25faAogI2RlZmluZSBDYWNoZWRUcmFuc2NlbmRlbnRhbEZ1bmN0aW9uX2gKIAotI2luY2x1
ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAKIG5hbWVzcGFjZSBKU0Mg
ewogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWxsRGF0YS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhbGxEYXRhLmgJKHJldmlz
aW9uIDE0MDM0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhbGxEYXRhLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKICNpZm5kZWYgQ2FsbERhdGFfaAogI2Rl
ZmluZSBDYWxsRGF0YV9oCiAKLSNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNW
YWx1ZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tcGxldGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbXBsZXRpb24uaAkocmV2aXNpb24gMTQwMzQ2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsy
Myw3IEBACiAjaWZuZGVmIENvbXBsZXRpb25faAogI2RlZmluZSBDb21wbGV0aW9uX2gKIAotI2lu
Y2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAKIG5hbWVzcGFjZSBK
U0MgewogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zdHJ1Y3REYXRh
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc3RydWN0
RGF0YS5oCShyZXZpc2lvbiAxNDAzNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db25zdHJ1Y3REYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICNkZWZp
bmUgQ29uc3RydWN0RGF0YV9oCiAKICNpbmNsdWRlICJDYWxsRGF0YS5oIgotI2luY2x1ZGUgIkpT
VmFsdWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rv
ci5jcHAJKHJldmlzaW9uIDE0MDM0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0RhdGVDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDEyICsyNSwxMiBAQAog
I2luY2x1ZGUgIkRhdGVDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSAiRGF0ZUluc3RhbmNlLmgiCiAj
aW5jbHVkZSAiRGF0ZVByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiSlNEYXRlTWF0aC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNs
dWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCiAjaW5jbHVkZSAi
SlNTdHJpbmdCdWlsZGVyLmgiCi0jaW5jbHVkZSAiSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRl
ICJPYmplY3RQcm90b3R5cGUuaCIKICNpbmNsdWRlIDxtYXRoLmg+CiAjaW5jbHVkZSA8dGltZS5o
PgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2Uu
Y3BwCShyZXZpc2lvbiAxNDAzNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9E
YXRlSW5zdGFuY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw5ICsyMiw5IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRGF0ZUluc3RhbmNlLmgiCiAKKyNpbmNsdWRlICJKU0NK
U1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRGF0ZU1hdGguaCIKICNpbmNsdWRlICJKU0ds
b2JhbE9iamVjdC5oIgotI2luY2x1ZGUgIkpTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSA8bWF0
aC5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAxNDAzNDYp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjcsMTEgKzI3LDExIEBACiAjaW5jbHVkZSAiRGF0ZUNvbnZlcnNpb24u
aCIKICNpbmNsdWRlICJEYXRlSW5zdGFuY2UuaCIKICNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1
ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNEYXRlTWF0aC5oIgogI2luY2x1
ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJK
U1N0cmluZ0J1aWxkZXIuaCIKLSNpbmNsdWRlICJKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUg
Ikxvb2t1cC5oIgogI2luY2x1ZGUgIk9iamVjdFByb3RvdHlwZS5oIgogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FQSVZhbHVlV3JhcHBlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQVBJVmFsdWVXcmFwcGVyLmgJKHJldmlz
aW9uIDE0MDM0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQVBJVmFsdWVX
cmFwcGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDggKzIzLDggQEAKICNpZm5kZWYgSlNBUElW
YWx1ZVdyYXBwZXJfaAogI2RlZmluZSBKU0FQSVZhbHVlV3JhcHBlcl9oCiAKKyNpbmNsdWRlICJK
U0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCi0jaW5jbHVkZSAiSlNWYWx1ZS5oIgog
I2luY2x1ZGUgIkNhbGxGcmFtZS5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAkocmV2aXNpb24g
MTQwMTk2KQkoZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmNwcDox
NDAxOTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMyMCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDE5
OTktMjAwMSBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQorICogIENvcHlyaWdodCAoQykg
MjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQorICogIENvcHlyaWdodCAoQykgMjAwMywg
MjAwNywgMjAwOCwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAg
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAorICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoK
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNWYWx1ZS5oIgorCisjaW5j
bHVkZSAiQm9vbGVhbkNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiQm9vbGVhblByb3RvdHlwZS5o
IgorI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgorI2lu
Y2x1ZGUgIkdldHRlclNldHRlci5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5j
bHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTTm90QW5PYmplY3QuaCIKKyNpbmNsdWRl
ICJKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIk51bWJlck9iamVjdC5oIgorI2luY2x1ZGUg
PHd0Zi9NYXRoRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgorCituYW1l
c3BhY2UgSlNDIHsKKworc3RhdGljIGNvbnN0IGRvdWJsZSBEMzIgPSA0Mjk0OTY3Mjk2LjA7CisK
Ky8vIEVDTUEgOS40Citkb3VibGUgSlNWYWx1ZTo6dG9JbnRlZ2VyKEV4ZWNTdGF0ZSogZXhlYykg
Y29uc3QKK3sKKyAgICBpZiAoaXNJbnQzMigpKQorICAgICAgICByZXR1cm4gYXNJbnQzMigpOwor
ICAgIGRvdWJsZSBkID0gdG9OdW1iZXIoZXhlYyk7CisgICAgcmV0dXJuIGlzbmFuKGQpID8gMC4w
IDogdHJ1bmMoZCk7Cit9CisKK2RvdWJsZSBKU1ZhbHVlOjp0b0ludGVnZXJQcmVzZXJ2ZU5hTihF
eGVjU3RhdGUqIGV4ZWMpIGNvbnN0Cit7CisgICAgaWYgKGlzSW50MzIoKSkKKyAgICAgICAgcmV0
dXJuIGFzSW50MzIoKTsKKyAgICByZXR1cm4gdHJ1bmModG9OdW1iZXIoZXhlYykpOworfQorCitk
b3VibGUgSlNWYWx1ZTo6dG9OdW1iZXJTbG93Q2FzZShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Cit7
CisgICAgQVNTRVJUKCFpc0ludDMyKCkgJiYgIWlzRG91YmxlKCkpOworICAgIGlmIChpc0NlbGwo
KSkKKyAgICAgICAgcmV0dXJuIGFzQ2VsbCgpLT50b051bWJlcihleGVjKTsKKyAgICBpZiAoaXNU
cnVlKCkpCisgICAgICAgIHJldHVybiAxLjA7CisgICAgcmV0dXJuIGlzVW5kZWZpbmVkKCkgPyBR
TmFOIDogMDsgLy8gbnVsbCBhbmQgZmFsc2UgYm90aCBjb252ZXJ0IHRvIDAuCit9CisKK0pTT2Jq
ZWN0KiBKU1ZhbHVlOjp0b09iamVjdFNsb3dDYXNlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKK3sKKyAgICBBU1NFUlQoIWlzQ2VsbCgpKTsKKwor
ICAgIGlmIChpc0ludDMyKCkgfHwgaXNEb3VibGUoKSkKKyAgICAgICAgcmV0dXJuIGNvbnN0cnVj
dE51bWJlcihleGVjLCBnbG9iYWxPYmplY3QsIGFzVmFsdWUoKSk7CisgICAgaWYgKGlzVHJ1ZSgp
IHx8IGlzRmFsc2UoKSkKKyAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEJvb2xlYW5Gcm9tSW1tZWRp
YXRlQm9vbGVhbihleGVjLCBnbG9iYWxPYmplY3QsIGFzVmFsdWUoKSk7CisKKyAgICBBU1NFUlQo
aXNVbmRlZmluZWRPck51bGwoKSk7CisgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVOb3RBbk9i
amVjdEVycm9yKGV4ZWMsICp0aGlzKSk7CisgICAgcmV0dXJuIEpTTm90QW5PYmplY3Q6OmNyZWF0
ZShleGVjKTsKK30KKworSlNPYmplY3QqIEpTVmFsdWU6OnRvVGhpc09iamVjdFNsb3dDYXNlKEV4
ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICBBU1NFUlQoIWlzQ2VsbCgpKTsKKworICAgIGlm
IChpc0ludDMyKCkgfHwgaXNEb3VibGUoKSkKKyAgICAgICAgcmV0dXJuIGNvbnN0cnVjdE51bWJl
cihleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGFzVmFsdWUoKSk7CisgICAgaWYg
KGlzVHJ1ZSgpIHx8IGlzRmFsc2UoKSkKKyAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEJvb2xlYW5G
cm9tSW1tZWRpYXRlQm9vbGVhbihleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGFz
VmFsdWUoKSk7CisgICAgQVNTRVJUKGlzVW5kZWZpbmVkT3JOdWxsKCkpOworICAgIHJldHVybiBl
eGVjLT5nbG9iYWxUaGlzVmFsdWUoKTsKK30KKworSlNPYmplY3QqIEpTVmFsdWU6OnN5bnRoZXNp
emVQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjKSBjb25zdAoreworICAgIGlmIChpc0NlbGwoKSkg
eworICAgICAgICBBU1NFUlQoaXNTdHJpbmcoKSk7CisgICAgICAgIHJldHVybiBleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCktPnN0cmluZ1Byb3RvdHlwZSgpOworICAgIH0KKworICAgIGlmIChp
c051bWJlcigpKQorICAgICAgICByZXR1cm4gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5u
dW1iZXJQcm90b3R5cGUoKTsKKyAgICBpZiAoaXNCb29sZWFuKCkpCisgICAgICAgIHJldHVybiBl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmJvb2xlYW5Qcm90b3R5cGUoKTsKKworICAgIEFT
U0VSVChpc1VuZGVmaW5lZE9yTnVsbCgpKTsKKyAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZU5v
dEFuT2JqZWN0RXJyb3IoZXhlYywgKnRoaXMpKTsKKyAgICByZXR1cm4gSlNOb3RBbk9iamVjdDo6
Y3JlYXRlKGV4ZWMpOworfQorCisvLyBFQ01BIDguNy4yCit2b2lkIEpTVmFsdWU6OnB1dFRvUHJp
bWl0aXZlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQoreworICAgIEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKKworICAgIHVuc2lnbmVkIGluZGV4ID0gcHJv
cGVydHlOYW1lLmFzSW5kZXgoKTsKKyAgICBpZiAoaW5kZXggIT0gUHJvcGVydHlOYW1lOjpOb3RB
bkluZGV4KSB7CisgICAgICAgIHB1dFRvUHJpbWl0aXZlQnlJbmRleChleGVjLCBpbmRleCwgdmFs
dWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
Ly8gQ2hlY2sgaWYgdGhlcmUgYXJlIGFueSBzZXR0ZXJzIG9yIGdldHRlcnMgaW4gdGhlIHByb3Rv
dHlwZSBjaGFpbgorICAgIEpTT2JqZWN0KiBvYmogPSBzeW50aGVzaXplUHJvdG90eXBlKGV4ZWMp
OworICAgIEpTVmFsdWUgcHJvdG90eXBlOworICAgIGlmIChwcm9wZXJ0eU5hbWUgIT0gZXhlYy0+
cHJvcGVydHlOYW1lcygpLnVuZGVyc2NvcmVQcm90bykgeworICAgICAgICBmb3IgKDsgIW9iai0+
c3RydWN0dXJlKCktPmhhc1JlYWRPbmx5T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzRXhjbHVkaW5n
UHJvdG8oKTsgb2JqID0gYXNPYmplY3QocHJvdG90eXBlKSkgeworICAgICAgICAgICAgcHJvdG90
eXBlID0gb2JqLT5wcm90b3R5cGUoKTsKKyAgICAgICAgICAgIGlmIChwcm90b3R5cGUuaXNOdWxs
KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAg
ICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVy
dHlXcml0ZUVycm9yKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBmb3IgKDsgOyBvYmogPSBhc09iamVjdChwcm90b3R5cGUp
KSB7CisgICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CisgICAgICAgIEpTQ2VsbCogc3BlY2lm
aWNWYWx1ZTsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gb2JqLT5zdHJ1Y3R1cmUo
KS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1
ZSk7CisgICAgICAgIGlmIChvZmZzZXQgIT0gaW52YWxpZE9mZnNldCkgeworICAgICAgICAgICAg
aWYgKGF0dHJpYnV0ZXMgJiBSZWFkT25seSkgeworICAgICAgICAgICAgICAgIGlmIChzbG90Lmlz
U3RyaWN0TW9kZSgpKQorICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0
ZVR5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEpT
VmFsdWUgZ3MgPSBvYmotPmdldERpcmVjdChvZmZzZXQpOworICAgICAgICAgICAgaWYgKGdzLmlz
R2V0dGVyU2V0dGVyKCkpIHsKKyAgICAgICAgICAgICAgICBKU09iamVjdCogc2V0dGVyRnVuYyA9
IGFzR2V0dGVyU2V0dGVyKGdzKS0+c2V0dGVyKCk7ICAgICAgICAKKyAgICAgICAgICAgICAgICBp
ZiAoIXNldHRlckZ1bmMpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RN
b2RlKCkpCisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoInNldHRpbmcgYSBwcm9wZXJ0eSB0aGF0IGhhcyBv
bmx5IGEgZ2V0dGVyIikpKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBDYWxsRGF0YSBjYWxs
RGF0YTsKKyAgICAgICAgICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IHNldHRlckZ1bmMtPm1l
dGhvZFRhYmxlKCktPmdldENhbGxEYXRhKHNldHRlckZ1bmMsIGNhbGxEYXRhKTsKKyAgICAgICAg
ICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOworICAgICAgICAgICAgICAgIGFyZ3Mu
YXBwZW5kKHZhbHVlKTsKKworICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgV2ViQ29yZSdz
IGdsb2JhbCBvYmplY3QgdGhlbiB3ZSBuZWVkIHRvIHN1YnN0aXR1dGUgdGhlIHNoZWxsLgorICAg
ICAgICAgICAgICAgIGNhbGwoZXhlYywgc2V0dGVyRnVuYywgY2FsbFR5cGUsIGNhbGxEYXRhLCAq
dGhpcywgYXJncyk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAvLyBJZiB0aGVyZSdzIGFuIGV4aXN0aW5nIHByb3BlcnR5IG9uIHRoZSBvYmpl
Y3Qgb3Igb25lIG9mIGl0cyAKKyAgICAgICAgICAgIC8vIHByb3RvdHlwZXMgaXQgc2hvdWxkIGJl
IHJlcGxhY2VkLCBzbyBicmVhayBoZXJlLgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KworICAgICAgICBwcm90b3R5cGUgPSBvYmotPnByb3RvdHlwZSgpOworICAgICAgICBpZiAocHJv
dG90eXBlLmlzTnVsbCgpKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIAorICAgIGlm
IChzbG90LmlzU3RyaWN0TW9kZSgpKQorICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJp
Y3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOworICAgIHJldHVybjsKK30KKwordm9p
ZCBKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZUJ5SW5kZXgoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25l
ZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCit7CisgICAg
aWYgKHByb3BlcnR5TmFtZSA+IE1BWF9BUlJBWV9JTkRFWCkgeworICAgICAgICBQdXRQcm9wZXJ0
eVNsb3Qgc2xvdChzaG91bGRUaHJvdyk7CisgICAgICAgIHB1dFRvUHJpbWl0aXZlKGV4ZWMsIElk
ZW50aWZpZXI6OmZyb20oZXhlYywgcHJvcGVydHlOYW1lKSwgdmFsdWUsIHNsb3QpOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIAorICAgIGlmIChzeW50aGVzaXplUHJvdG90eXBlKGV4ZWMp
LT5hdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlRm9yUHJvdG90eXBlKGV4ZWMsICp0
aGlzLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdykpCisgICAgICAgIHJldHVybjsK
KyAgICAKKyAgICBpZiAoc2hvdWxkVGhyb3cpCisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMs
IFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7Cit9CisKK3ZvaWQgSlNWYWx1
ZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIGlmICghKnRoaXMpCisgICAg
ICAgIG91dC5wcmludCgiPEpTVmFsdWUoKT4iKTsKKyAgICBlbHNlIGlmIChpc0ludDMyKCkpCisg
ICAgICAgIG91dC5wcmludGYoIkludDMyOiAlZCIsIGFzSW50MzIoKSk7CisgICAgZWxzZSBpZiAo
aXNEb3VibGUoKSkgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIG91dC5wcmludGYoIkRv
dWJsZTogJWxsZCwgJWxmIiwgKGxvbmcgbG9uZylyZWludGVycHJldERvdWJsZVRvSW50NjQoYXNE
b3VibGUoKSksIGFzRG91YmxlKCkpOworI2Vsc2UKKyAgICAgICAgdW5pb24geworICAgICAgICAg
ICAgZG91YmxlIGFzRG91YmxlOworICAgICAgICAgICAgdWludDMyX3QgYXNUd29JbnQzMnNbMl07
CisgICAgICAgIH0gdTsKKyAgICAgICAgdS5hc0RvdWJsZSA9IGFzRG91YmxlKCk7CisgICAgICAg
IG91dC5wcmludGYoIkRvdWJsZTogJTA4eDolMDh4LCAlbGYiLCB1LmFzVHdvSW50MzJzWzFdLCB1
LmFzVHdvSW50MzJzWzBdLCBhc0RvdWJsZSgpKTsKKyNlbmRpZgorICAgIH0gZWxzZSBpZiAoaXND
ZWxsKCkpIHsKKyAgICAgICAgaWYgKGFzQ2VsbCgpLT5pbmhlcml0cygmU3RydWN0dXJlOjpzX2lu
Zm8pKSB7CisgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGpzQ2FzdDxTdHJ1Y3R1
cmUqPihhc0NlbGwoKSk7CisgICAgICAgICAgICBvdXQucHJpbnQoCisgICAgICAgICAgICAgICAg
IlN0cnVjdHVyZTogIiwgUmF3UG9pbnRlcihzdHJ1Y3R1cmUpLCAiOiAiLCBzdHJ1Y3R1cmUtPmNs
YXNzSW5mbygpLT5jbGFzc05hbWUsCisgICAgICAgICAgICAgICAgIiwgIiwgSW5kZXhpbmdUeXBl
RHVtcChzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZUluY2x1ZGluZ0hpc3RvcnkoKSkpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgb3V0LnByaW50KCJDZWxsOiAiLCBSYXdQb2ludGVyKGFz
Q2VsbCgpKSk7CisgICAgICAgICAgICBpZiAoaXNPYmplY3QoKSAmJiBhc09iamVjdCgqdGhpcykt
PmJ1dHRlcmZseSgpKQorICAgICAgICAgICAgICAgIG91dC5wcmludCgiLT4iLCBSYXdQb2ludGVy
KGFzT2JqZWN0KCp0aGlzKS0+YnV0dGVyZmx5KCkpKTsKKyAgICAgICAgICAgIG91dC5wcmludCgK
KyAgICAgICAgICAgICAgICAiICgiLCBSYXdQb2ludGVyKGFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKSks
ICI6ICIsIGFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSwKKyAg
ICAgICAgICAgICAgICAiLCAiLCBJbmRleGluZ1R5cGVEdW1wKGFzQ2VsbCgpLT5zdHJ1Y3R1cmUo
KS0+aW5kZXhpbmdUeXBlSW5jbHVkaW5nSGlzdG9yeSgpKSwgIikiKTsKKyAgICAgICAgfQorICAg
IH0gZWxzZSBpZiAoaXNUcnVlKCkpCisgICAgICAgIG91dC5wcmludCgiVHJ1ZSIpOworICAgIGVs
c2UgaWYgKGlzRmFsc2UoKSkKKyAgICAgICAgb3V0LnByaW50KCJGYWxzZSIpOworICAgIGVsc2Ug
aWYgKGlzTnVsbCgpKQorICAgICAgICBvdXQucHJpbnQoIk51bGwiKTsKKyAgICBlbHNlIGlmIChp
c1VuZGVmaW5lZCgpKQorICAgICAgICBvdXQucHJpbnQoIlVuZGVmaW5lZCIpOworICAgIGVsc2UK
KyAgICAgICAgb3V0LnByaW50KCJJTlZBTElEIik7Cit9CisKKy8vIFRoaXMgaW4gdGhlIFRvSW50
MzIgb3BlcmF0aW9uIGlzIGRlZmluZWQgaW4gc2VjdGlvbiA5LjUgb2YgdGhlIEVDTUEtMjYyIHNw
ZWMuCisvLyBOb3RlIHRoYXQgdGhpcyBvcGVyYXRpb24gaXMgaWRlbnRpY2FsIHRvIFRvVUludDMy
IG90aGVyIHRoYW4gdG8gaW50ZXJwcmV0YXRpb24KKy8vIG9mIHRoZSByZXN1bHRpbmcgYml0LXBh
dHRlcm4gKGFzIHN1Y2ggdGhpcyBtZXRvZCBpcyBhbHNvIGNhbGxlZCB0byBpbXBsZW1lbnQKKy8v
IFRvVUludDMyKS4KKy8vCisvLyBUaGUgb3BlcmF0aW9uIGNhbiBiZSBkZXNjaWJlZCBhcyByb3Vu
ZCB0b3dhcmRzIHplcm8sIHRoZW4gc2VsZWN0IHRoZSAzMiBsZWFzdAorLy8gYml0cyBvZiB0aGUg
cmVzdWx0aW5nIHZhbHVlIGluIDJzLWNvbXBsZW1lbnQgcmVwcmVzZW50YXRpb24uCitpbnQzMl90
IHRvSW50MzIoZG91YmxlIG51bWJlcikKK3sKKyAgICBpbnQ2NF90IGJpdHMgPSBXVEY6OmJpdHdp
c2VfY2FzdDxpbnQ2NF90PihudW1iZXIpOworICAgIGludDMyX3QgZXhwID0gKHN0YXRpY19jYXN0
PGludDMyX3Q+KGJpdHMgPj4gNTIpICYgMHg3ZmYpIC0gMHgzZmY7CisKKyAgICAvLyBJZiBleHBv
bmVudCA8IDAgdGhlcmUgd2lsbCBiZSBubyBiaXRzIHRvIHRoZSBsZWZ0IG9mIHRoZSBkZWNpbWFs
IHBvaW50CisgICAgLy8gYWZ0ZXIgcm91bmRpbmc7IGlmIHRoZSBleHBvbmVudCBpcyA+IDgzIHRo
ZW4gbm8gYml0cyBvZiBwcmVjaXNpb24gY2FuIGJlCisgICAgLy8gbGVmdCBpbiB0aGUgbG93IDMy
LWJpdCByYW5nZSBvZiB0aGUgcmVzdWx0IChJRUVFLTc1NCBkb3VibGVzIGhhdmUgNTIgYml0cwor
ICAgIC8vIG9mIGZyYWN0aW9uYWwgcHJlY2lzaW9uKS4KKyAgICAvLyBOb3RlIHRoaXMgY2FzZSBo
YW5kbGVzIDAsIC0wLCBhbmQgYWxsIGluZmludGUsIE5hTiwgJiBkZW5vcm1hbCB2YWx1ZS4gCisg
ICAgaWYgKGV4cCA8IDAgfHwgZXhwID4gODMpCisgICAgICAgIHJldHVybiAwOworCisgICAgLy8g
U2VsZWN0IHRoZSBhcHByb3ByaWF0ZSAzMi1iaXRzIGZyb20gdGhlIGZsb2F0aW5nIHBvaW50IG1h
bnRpc3NhLiAgSWYgdGhlCisgICAgLy8gZXhwb25lbnQgaXMgNTIgdGhlbiB0aGUgYml0cyB3ZSBu
ZWVkIHRvIHNlbGVjdCBhcmUgYWxyZWFkeSBhbGlnbmVkIHRvIHRoZQorICAgIC8vIGxvd2VzdCBi
aXRzIG9mIHRoZSA2NC1iaXQgaW50ZWdlciByZXByZXNlbnRhdGlvbiBvZiB0Z2hlIG51bWJlciwg
bm8gbmVlZAorICAgIC8vIHRvIHNoaWZ0LiAgSWYgdGhlIGV4cG9uZW50IGlzIGdyZWF0ZXIgdGhh
biA1MiB3ZSBuZWVkIHRvIHNoaWZ0IHRoZSB2YWx1ZQorICAgIC8vIGxlZnQgYnkgKGV4cCAtIDUy
KSwgaWYgdGhlIHZhbHVlIGlzIGxlc3MgdGhhbiA1MiB3ZSBuZWVkIHRvIHNoaWZ0IHJpZ2h0Cisg
ICAgLy8gYWNjb3JkaW5nbHkuCisgICAgaW50MzJfdCByZXN1bHQgPSAoZXhwID4gNTIpCisgICAg
ICAgID8gc3RhdGljX2Nhc3Q8aW50MzJfdD4oYml0cyA8PCAoZXhwIC0gNTIpKQorICAgICAgICA6
IHN0YXRpY19jYXN0PGludDMyX3Q+KGJpdHMgPj4gKDUyIC0gZXhwKSk7CisKKyAgICAvLyBJRUVF
LTc1NCBkb3VibGUgcHJlY2lzaW9uIHZhbHVlcyBhcmUgc3RvcmVkIG9taXR0aW5nIGFuIGltcGxp
Y2l0IDEgYmVmb3JlCisgICAgLy8gdGhlIGRlY2ltYWwgcG9pbnQ7IHdlIG5lZWQgdG8gcmVpbnNl
cnQgdGhpcyBub3cuICBXZSBtYXkgYWxzbyB0aGUgc2hpZnRlZAorICAgIC8vIGludmFsaWQgYml0
cyBpbnRvIHRoZSByZXN1bHQgdGhhdCBhcmUgbm90IGEgcGFydCBvZiB0aGUgbWFudGlzc2EgKHRo
ZSBzaWduCisgICAgLy8gYW5kIGV4cG9uZW50IGJpdHMgZnJvbSB0aGUgZmxvYXRpbmdwb2ludCBy
ZXByZXNlbnRhdGlvbik7IG1hc2sgdGhlc2Ugb3V0LgorICAgIGlmIChleHAgPCAzMikgeworICAg
ICAgICBpbnQzMl90IG1pc3NpbmdPbmUgPSAxIDw8IGV4cDsKKyAgICAgICAgcmVzdWx0ICY9IG1p
c3NpbmdPbmUgLSAxOworICAgICAgICByZXN1bHQgKz0gbWlzc2luZ09uZTsKKyAgICB9CisKKyAg
ICAvLyBJZiB0aGUgaW5wdXQgdmFsdWUgd2FzIG5lZ2F0aXZlICh3ZSBjb3VsZCB0ZXN0IGVpdGhl
ciAnbnVtYmVyJyBvciAnYml0cycsCisgICAgLy8gYnV0IHRlc3RpbmcgJ2JpdHMnIGlzIGxpa2Vs
eSBmYXN0ZXIpIGludmVydCB0aGUgcmVzdWx0IGFwcHJvcHJpYXRlbHkuCisgICAgcmV0dXJuIGJp
dHMgPCAwID8gLXJlc3VsdCA6IHJlc3VsdDsKK30KKworYm9vbCBKU1ZhbHVlOjppc1ZhbGlkQ2Fs
bGVlKCkKK3sKKyAgICByZXR1cm4gYXNPYmplY3QoYXNDZWxsKCkpLT5nbG9iYWxPYmplY3QoKTsK
K30KKworSlNTdHJpbmcqIEpTVmFsdWU6OnRvU3RyaW5nU2xvd0Nhc2UoRXhlY1N0YXRlKiBleGVj
KSBjb25zdAoreworICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERh
dGEoKTsKKyAgICBBU1NFUlQoIWlzU3RyaW5nKCkpOworICAgIGlmIChpc0ludDMyKCkpCisgICAg
ICAgIHJldHVybiBqc1N0cmluZygmZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS5udW1lcmljU3RyaW5n
cy5hZGQoYXNJbnQzMigpKSk7CisgICAgaWYgKGlzRG91YmxlKCkpCisgICAgICAgIHJldHVybiBq
c1N0cmluZygmZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS5udW1lcmljU3RyaW5ncy5hZGQoYXNEb3Vi
bGUoKSkpOworICAgIGlmIChpc1RydWUoKSkKKyAgICAgICAgcmV0dXJuIGdsb2JhbERhdGEuc21h
bGxTdHJpbmdzLnRydWVTdHJpbmcoKTsKKyAgICBpZiAoaXNGYWxzZSgpKQorICAgICAgICByZXR1
cm4gZ2xvYmFsRGF0YS5zbWFsbFN0cmluZ3MuZmFsc2VTdHJpbmcoKTsKKyAgICBpZiAoaXNOdWxs
KCkpCisgICAgICAgIHJldHVybiBnbG9iYWxEYXRhLnNtYWxsU3RyaW5ncy5udWxsU3RyaW5nKCk7
CisgICAgaWYgKGlzVW5kZWZpbmVkKCkpCisgICAgICAgIHJldHVybiBnbG9iYWxEYXRhLnNtYWxs
U3RyaW5ncy51bmRlZmluZWRTdHJpbmcoKTsKKworICAgIEFTU0VSVChpc0NlbGwoKSk7CisgICAg
SlNWYWx1ZSB2YWx1ZSA9IGFzQ2VsbCgpLT50b1ByaW1pdGl2ZShleGVjLCBQcmVmZXJTdHJpbmcp
OworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGpzRW1wdHlT
dHJpbmcoZXhlYyk7CisgICAgQVNTRVJUKCF2YWx1ZS5pc09iamVjdCgpKTsKKyAgICByZXR1cm4g
dmFsdWUudG9TdHJpbmcoZXhlYyk7Cit9CisKK1N0cmluZyBKU1ZhbHVlOjp0b1dURlN0cmluZ1Ns
b3dDYXNlKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICByZXR1cm4gaW5saW5lSlNWYWx1
ZU5vdFN0cmluZ3RvU3RyaW5nKCp0aGlzLCBleGVjKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlND
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAko
cmV2aXNpb24gMTQwMTk2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNW
YWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxLDE3ICsyMSwxNyBAQAogICovCiAKICNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1
ZS5oIgogCiAjaW5jbHVkZSAiQm9vbGVhbkNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiQm9vbGVh
blByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVs
cGVycy5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgotI2luY2x1ZGUgIkpTR2xvYmFsT2Jq
ZWN0LmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0
aW9uLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU05vdEFuT2Jq
ZWN0LmgiCi0jaW5jbHVkZSAiSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJOdW1iZXJPYmpl
Y3QuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdF
eHRyYXMuaD4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVl
LmgJKHJldmlzaW9uIDE0MDE5NikJKGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNWYWx1ZS5oOjE0MDE5NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pT
VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ5NyBAQAorLyoKKyAqICBDb3B5cmln
aHQgKEMpIDE5OTktMjAwMSBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQorICogIENvcHly
aWdodCAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQorICogIENvcHlyaWdodCAo
QykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaWZuZGVmIEpTVmFsdWVfaAorI2Rl
ZmluZSBKU1ZhbHVlX2gKKworI2luY2x1ZGUgPG1hdGguaD4KKyNpbmNsdWRlIDxzdGRkZWYuaD4g
Ly8gZm9yIHNpemVfdAorI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHd0Zi9BbHdheXNJ
bmxpbmUuaD4KKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KKyNpbmNsdWRlIDx3dGYvTWF0aEV4
dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKworbmFtZXNwYWNlIEpTQyB7
CisKKy8vIFRoaXMgaXMgdXNlZCBhIGxvdCB0aHJvdWdob3V0IEphdmFTY3JpcHRDb3JlIGZvciBl
dmVyeXRoaW5nIGZyb20gdmFsdWUgYm94aW5nIHRvIG1hcmtpbmcKKy8vIHZhbHVlcyBhcyBiZWlu
ZyBtaXNzaW5nLCBzbyBpdCBpcyB1c2VmdWwgdG8gaGF2ZSBpdCBhYmJyZXZpYXRlZC4KKyNkZWZp
bmUgUU5hTiAoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSkKKworY2xh
c3MgRXhlY1N0YXRlOworY2xhc3MgSlNDZWxsOworY2xhc3MgSlNHbG9iYWxEYXRhOworY2xhc3Mg
SlNHbG9iYWxPYmplY3Q7CitjbGFzcyBKU09iamVjdDsKK2NsYXNzIEpTU3RyaW5nOworY2xhc3Mg
UHJvcGVydHlOYW1lOworY2xhc3MgUHJvcGVydHlTbG90OworY2xhc3MgUHV0UHJvcGVydHlTbG90
OworI2lmIEVOQUJMRShERkdfSklUKQorbmFtZXNwYWNlIERGRyB7CitjbGFzcyBBc3NlbWJseUhl
bHBlcnM7CitjbGFzcyBKSVRDb21waWxlcjsKK2NsYXNzIEpJVENvZGVHZW5lcmF0b3I7CitjbGFz
cyBKU1ZhbHVlU291cmNlOworY2xhc3MgT1NSRXhpdENvbXBpbGVyOworY2xhc3MgU3BlY3VsYXRp
dmVKSVQ7Cit9CisjZW5kaWYKKyNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQorbmFtZXNwYWNlIExM
SW50IHsKK2NsYXNzIENMb29wOworfQorI2VuZGlmCisKK3N0cnVjdCBDbGFzc0luZm87CitzdHJ1
Y3QgSW5zdHJ1Y3Rpb247CitzdHJ1Y3QgTWV0aG9kVGFibGU7CisKK3RlbXBsYXRlIDxjbGFzcyBU
PiBjbGFzcyBXcml0ZUJhcnJpZXJCYXNlOworCitlbnVtIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUg
eyBOb1ByZWZlcmVuY2UsIFByZWZlck51bWJlciwgUHJlZmVyU3RyaW5nIH07CisKKwordHlwZWRl
ZiBpbnQ2NF90IEVuY29kZWRKU1ZhbHVlOworICAgIAordW5pb24gRW5jb2RlZFZhbHVlRGVzY3Jp
cHRvciB7CisgICAgaW50NjRfdCBhc0ludDY0OworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAg
ZG91YmxlIGFzRG91YmxlOworI2VsaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBKU0NlbGwqIHB0cjsK
KyNlbmRpZgorICAgICAgICAKKyNpZiBDUFUoQklHX0VORElBTikKKyAgICBzdHJ1Y3QgeworICAg
ICAgICBpbnQzMl90IHRhZzsKKyAgICAgICAgaW50MzJfdCBwYXlsb2FkOworICAgIH0gYXNCaXRz
OworI2Vsc2UKKyAgICBzdHJ1Y3QgeworICAgICAgICBpbnQzMl90IHBheWxvYWQ7CisgICAgICAg
IGludDMyX3QgdGFnOworICAgIH0gYXNCaXRzOworI2VuZGlmCit9OworCisvLyBUaGlzIGltcGxl
bWVudHMgVG9JbnQzMiwgZGVmaW5lZCBpbiBFQ01BLTI2MiA5LjUuCitKU19FWFBPUlRfUFJJVkFU
RSBpbnQzMl90IHRvSW50MzIoZG91YmxlKTsKKworLy8gVGhpcyBpbXBsZW1lbnRzIFRvVUludDMy
LCBkZWZpbmVkIGluIEVDTUEtMjYyIDkuNi4KK2lubGluZSB1aW50MzJfdCB0b1VJbnQzMihkb3Vi
bGUgbnVtYmVyKQoreworICAgIC8vIEFzIGNvbW1lbnRlZCBpbiB0aGUgc3BlYywgdGhlIG9wZXJh
dGlvbiBvZiBUb0ludDMyIGFuZCBUb1VpbnQzMiBvbmx5IGRpZmZlcgorICAgIC8vIGluIGhvdyB0
aGUgcmVzdWx0IGlzIGludGVycHJldGVkOyBzZWUgTk9URXMgaW4gc2VjdGlvbnMgOS41IGFuZCA5
LjYuCisgICAgcmV0dXJuIHRvSW50MzIobnVtYmVyKTsKK30KKworY2xhc3MgSlNWYWx1ZSB7Cisg
ICAgZnJpZW5kIHN0cnVjdCBFbmNvZGVkSlNWYWx1ZUhhc2hUcmFpdHM7CisgICAgZnJpZW5kIGNs
YXNzIEpJVDsKKyAgICBmcmllbmQgY2xhc3MgSklUU3R1YnM7CisgICAgZnJpZW5kIGNsYXNzIEpJ
VFN0dWJDYWxsOworICAgIGZyaWVuZCBjbGFzcyBKU0ludGVyZmFjZUpJVDsKKyAgICBmcmllbmQg
Y2xhc3MgU3BlY2lhbGl6ZWRUaHVua0pJVDsKKyNpZiBFTkFCTEUoREZHX0pJVCkKKyAgICBmcmll
bmQgY2xhc3MgREZHOjpBc3NlbWJseUhlbHBlcnM7CisgICAgZnJpZW5kIGNsYXNzIERGRzo6SklU
Q29tcGlsZXI7CisgICAgZnJpZW5kIGNsYXNzIERGRzo6SklUQ29kZUdlbmVyYXRvcjsKKyAgICBm
cmllbmQgY2xhc3MgREZHOjpKU1ZhbHVlU291cmNlOworICAgIGZyaWVuZCBjbGFzcyBERkc6Ok9T
UkV4aXRDb21waWxlcjsKKyAgICBmcmllbmQgY2xhc3MgREZHOjpTcGVjdWxhdGl2ZUpJVDsKKyNl
bmRpZgorI2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCisgICAgZnJpZW5kIGNsYXNzIExMSW50OjpD
TG9vcDsKKyNlbmRpZgorCitwdWJsaWM6CisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICBlbnVt
IHsgSW50MzJUYWcgPSAgICAgICAgMHhmZmZmZmZmZiB9OworICAgIGVudW0geyBCb29sZWFuVGFn
ID0gICAgICAweGZmZmZmZmZlIH07CisgICAgZW51bSB7IE51bGxUYWcgPSAgICAgICAgIDB4ZmZm
ZmZmZmQgfTsKKyAgICBlbnVtIHsgVW5kZWZpbmVkVGFnID0gICAgMHhmZmZmZmZmYyB9OworICAg
IGVudW0geyBDZWxsVGFnID0gICAgICAgICAweGZmZmZmZmZiIH07CisgICAgZW51bSB7IEVtcHR5
VmFsdWVUYWcgPSAgIDB4ZmZmZmZmZmEgfTsKKyAgICBlbnVtIHsgRGVsZXRlZFZhbHVlVGFnID0g
MHhmZmZmZmZmOSB9OworCisgICAgZW51bSB7IExvd2VzdFRhZyA9ICBEZWxldGVkVmFsdWVUYWcg
fTsKKyNlbmRpZgorCisgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIGVuY29kZShKU1ZhbHVlKTsK
KyAgICBzdGF0aWMgSlNWYWx1ZSBkZWNvZGUoRW5jb2RlZEpTVmFsdWUpOworCisgICAgZW51bSBK
U051bGxUYWcgeyBKU051bGwgfTsKKyAgICBlbnVtIEpTVW5kZWZpbmVkVGFnIHsgSlNVbmRlZmlu
ZWQgfTsKKyAgICBlbnVtIEpTVHJ1ZVRhZyB7IEpTVHJ1ZSB9OworICAgIGVudW0gSlNGYWxzZVRh
ZyB7IEpTRmFsc2UgfTsKKyAgICBlbnVtIEVuY29kZUFzRG91YmxlVGFnIHsgRW5jb2RlQXNEb3Vi
bGUgfTsKKworICAgIEpTVmFsdWUoKTsKKyAgICBKU1ZhbHVlKEpTTnVsbFRhZyk7CisgICAgSlNW
YWx1ZShKU1VuZGVmaW5lZFRhZyk7CisgICAgSlNWYWx1ZShKU1RydWVUYWcpOworICAgIEpTVmFs
dWUoSlNGYWxzZVRhZyk7CisgICAgSlNWYWx1ZShKU0NlbGwqIHB0cik7CisgICAgSlNWYWx1ZShj
b25zdCBKU0NlbGwqIHB0cik7CisKKyAgICAvLyBOdW1iZXJzCisgICAgSlNWYWx1ZShFbmNvZGVB
c0RvdWJsZVRhZywgZG91YmxlKTsKKyAgICBleHBsaWNpdCBKU1ZhbHVlKGRvdWJsZSk7CisgICAg
ZXhwbGljaXQgSlNWYWx1ZShjaGFyKTsKKyAgICBleHBsaWNpdCBKU1ZhbHVlKHVuc2lnbmVkIGNo
YXIpOworICAgIGV4cGxpY2l0IEpTVmFsdWUoc2hvcnQpOworICAgIGV4cGxpY2l0IEpTVmFsdWUo
dW5zaWduZWQgc2hvcnQpOworICAgIGV4cGxpY2l0IEpTVmFsdWUoaW50KTsKKyAgICBleHBsaWNp
dCBKU1ZhbHVlKHVuc2lnbmVkKTsKKyAgICBleHBsaWNpdCBKU1ZhbHVlKGxvbmcpOworICAgIGV4
cGxpY2l0IEpTVmFsdWUodW5zaWduZWQgbG9uZyk7CisgICAgZXhwbGljaXQgSlNWYWx1ZShsb25n
IGxvbmcpOworICAgIGV4cGxpY2l0IEpTVmFsdWUodW5zaWduZWQgbG9uZyBsb25nKTsKKworICAg
IG9wZXJhdG9yIGJvb2woKSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgSlNWYWx1
ZSYgb3RoZXIpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBKU1ZhbHVlJiBvdGhl
cikgY29uc3Q7CisKKyAgICBib29sIGlzSW50MzIoKSBjb25zdDsKKyAgICBib29sIGlzVUludDMy
KCkgY29uc3Q7CisgICAgYm9vbCBpc0RvdWJsZSgpIGNvbnN0OworICAgIGJvb2wgaXNUcnVlKCkg
Y29uc3Q7CisgICAgYm9vbCBpc0ZhbHNlKCkgY29uc3Q7CisKKyAgICBpbnQzMl90IGFzSW50MzIo
KSBjb25zdDsKKyAgICB1aW50MzJfdCBhc1VJbnQzMigpIGNvbnN0OworICAgIGRvdWJsZSBhc0Rv
dWJsZSgpIGNvbnN0OworICAgIGJvb2wgYXNCb29sZWFuKCkgY29uc3Q7CisgICAgZG91YmxlIGFz
TnVtYmVyKCkgY29uc3Q7CisKKyAgICAvLyBRdWVyeWluZyB0aGUgdHlwZS4KKyAgICBib29sIGlz
RW1wdHkoKSBjb25zdDsKKyAgICBib29sIGlzRnVuY3Rpb24oKSBjb25zdDsKKyAgICBib29sIGlz
VW5kZWZpbmVkKCkgY29uc3Q7CisgICAgYm9vbCBpc051bGwoKSBjb25zdDsKKyAgICBib29sIGlz
VW5kZWZpbmVkT3JOdWxsKCkgY29uc3Q7CisgICAgYm9vbCBpc0Jvb2xlYW4oKSBjb25zdDsKKyAg
ICBib29sIGlzTnVtYmVyKCkgY29uc3Q7CisgICAgYm9vbCBpc1N0cmluZygpIGNvbnN0OworICAg
IGJvb2wgaXNQcmltaXRpdmUoKSBjb25zdDsKKyAgICBib29sIGlzR2V0dGVyU2V0dGVyKCkgY29u
c3Q7CisgICAgYm9vbCBpc09iamVjdCgpIGNvbnN0OworICAgIGJvb2wgaW5oZXJpdHMoY29uc3Qg
Q2xhc3NJbmZvKikgY29uc3Q7CisgICAgICAgIAorICAgIC8vIEV4dHJhY3RpbmcgdGhlIHZhbHVl
LgorICAgIGJvb2wgZ2V0U3RyaW5nKEV4ZWNTdGF0ZSosIFdURjo6U3RyaW5nJikgY29uc3Q7Cisg
ICAgV1RGOjpTdHJpbmcgZ2V0U3RyaW5nKEV4ZWNTdGF0ZSopIGNvbnN0OyAvLyBudWxsIHN0cmlu
ZyBpZiBub3QgYSBzdHJpbmcKKyAgICBKU09iamVjdCogZ2V0T2JqZWN0KCkgY29uc3Q7IC8vIDAg
aWYgbm90IGFuIG9iamVjdAorCisgICAgLy8gRXh0cmFjdGluZyBpbnRlZ2VyIHZhbHVlcy4KKyAg
ICBib29sIGdldFVJbnQzMih1aW50MzJfdCYpIGNvbnN0OworICAgICAgICAKKyAgICAvLyBCYXNp
YyBjb252ZXJzaW9ucy4KKyAgICBKU1ZhbHVlIHRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSosIFByZWZl
cnJlZFByaW1pdGl2ZVR5cGUgPSBOb1ByZWZlcmVuY2UpIGNvbnN0OworICAgIGJvb2wgZ2V0UHJp
bWl0aXZlTnVtYmVyKEV4ZWNTdGF0ZSosIGRvdWJsZSYgbnVtYmVyLCBKU1ZhbHVlJik7CisKKyAg
ICBib29sIHRvQm9vbGVhbihFeGVjU3RhdGUqKSBjb25zdDsKKworICAgIC8vIHRvTnVtYmVyIGNv
bnZlcnNpb24gaXMgZXhwZWN0ZWQgdG8gYmUgc2lkZSBlZmZlY3QgZnJlZSBpZiBhbiBleGNlcHRp
b24gaGFzCisgICAgLy8gYmVlbiBzZXQgaW4gdGhlIEV4ZWNTdGF0ZSBhbHJlYWR5LgorICAgIGRv
dWJsZSB0b051bWJlcihFeGVjU3RhdGUqKSBjb25zdDsKKyAgICBKU1N0cmluZyogdG9TdHJpbmco
RXhlY1N0YXRlKikgY29uc3Q7CisgICAgV1RGOjpTdHJpbmcgdG9XVEZTdHJpbmcoRXhlY1N0YXRl
KikgY29uc3Q7CisgICAgV1RGOjpTdHJpbmcgdG9XVEZTdHJpbmdJbmxpbmUoRXhlY1N0YXRlKikg
Y29uc3Q7CisgICAgSlNPYmplY3QqIHRvT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0OworICAgIEpT
T2JqZWN0KiB0b09iamVjdChFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCopIGNvbnN0OworCisg
ICAgLy8gSW50ZWdlciBjb252ZXJzaW9ucy4KKyAgICBKU19FWFBPUlRfUFJJVkFURSBkb3VibGUg
dG9JbnRlZ2VyKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgIGRvdWJsZSB0b0ludGVnZXJQcmVzZXJ2
ZU5hTihFeGVjU3RhdGUqKSBjb25zdDsKKyAgICBpbnQzMl90IHRvSW50MzIoRXhlY1N0YXRlKikg
Y29uc3Q7CisgICAgdWludDMyX3QgdG9VSW50MzIoRXhlY1N0YXRlKikgY29uc3Q7CisKKyAgICAv
LyBGbG9hdGluZyBwb2ludCBjb252ZXJzaW9ucyAodGhpcyBpcyBhIGNvbnZlbmllbmNlIG1ldGhv
ZCBmb3Igd2ViY29yZTsKKyAgICAvLyBzaWdubGUgcHJlY2lzaW9uIGZsb2F0IGlzIG5vdCBhIHJl
cHJlc2VudGF0aW9uIHVzZWQgaW4gSlMgb3IgSlNDKS4KKyAgICBmbG9hdCB0b0Zsb2F0KEV4ZWNT
dGF0ZSogZXhlYykgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHRvTnVtYmVyKGV4
ZWMpKTsgfQorCisgICAgLy8gT2JqZWN0IG9wZXJhdGlvbnMsIHdpdGggdGhlIHRvT2JqZWN0IG9w
ZXJhdGlvbiBpbmNsdWRlZC4KKyAgICBKU1ZhbHVlIGdldChFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWUpIGNvbnN0OworICAgIEpTVmFsdWUgZ2V0KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90JikgY29uc3Q7CisgICAgSlNWYWx1ZSBnZXQoRXhlY1N0YXRlKiwgdW5zaWduZWQg
cHJvcGVydHlOYW1lKSBjb25zdDsKKyAgICBKU1ZhbHVlIGdldChFeGVjU3RhdGUqLCB1bnNpZ25l
ZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpIGNvbnN0OworICAgIHZvaWQgcHV0KEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgdm9p
ZCBwdXRUb1ByaW1pdGl2ZShFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYpOworICAgIHZvaWQgcHV0VG9QcmltaXRpdmVCeUluZGV4KEV4ZWNTdGF0ZSos
IHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CisgICAg
dm9pZCBwdXRCeUluZGV4KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgYm9vbCBzaG91bGRUaHJvdyk7CisKKyAgICBKU09iamVjdCogdG9UaGlzT2JqZWN0KEV4ZWNT
dGF0ZSopIGNvbnN0OworCisgICAgc3RhdGljIGJvb2wgZXF1YWwoRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKTsKKyAgICBzdGF0aWMgYm9vbCBlcXVhbFNsb3dDYXNlKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2Mik7CisgICAgc3RhdGljIGJvb2wg
ZXF1YWxTbG93Q2FzZUlubGluZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdjEsIEpTVmFsdWUg
djIpOworICAgIHN0YXRpYyBib29sIHN0cmljdEVxdWFsKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSB2MSwgSlNWYWx1ZSB2Mik7CisgICAgc3RhdGljIGJvb2wgc3RyaWN0RXF1YWxTbG93Q2FzZShF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpOworICAgIHN0YXRpYyBib29s
IHN0cmljdEVxdWFsU2xvd0Nhc2VJbmxpbmUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHYxLCBK
U1ZhbHVlIHYyKTsKKworICAgIGJvb2wgaXNDZWxsKCkgY29uc3Q7CisgICAgSlNDZWxsKiBhc0Nl
bGwoKSBjb25zdDsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGlzVmFsaWRDYWxsZWUoKTsK
KyAgICAgICAgCisgICAgSlNWYWx1ZSBzdHJ1Y3R1cmVPclVuZGVmaW5lZCgpIGNvbnN0OworCisg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CisKKyAg
ICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogc3ludGhlc2l6ZVByb3RvdHlwZShFeGVjU3Rh
dGUqKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gSlNWYWx1ZShX
cml0ZUJhcnJpZXJCYXNlPFQ+KTsKKworICAgIGVudW0gSGFzaFRhYmxlRGVsZXRlZFZhbHVlVGFn
IHsgSGFzaFRhYmxlRGVsZXRlZFZhbHVlIH07CisgICAgSlNWYWx1ZShIYXNoVGFibGVEZWxldGVk
VmFsdWVUYWcpOworCisgICAgaW5saW5lIGNvbnN0IEpTVmFsdWUgYXNWYWx1ZSgpIGNvbnN0IHsg
cmV0dXJuICp0aGlzOyB9CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgZG91YmxlIHRvTnVtYmVyU2xv
d0Nhc2UoRXhlY1N0YXRlKikgY29uc3Q7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNTdHJpbmcq
IHRvU3RyaW5nU2xvd0Nhc2UoRXhlY1N0YXRlKikgY29uc3Q7CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgV1RGOjpTdHJpbmcgdG9XVEZTdHJpbmdTbG93Q2FzZShFeGVjU3RhdGUqKSBjb25zdDsKKyAg
ICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogdG9PYmplY3RTbG93Q2FzZShFeGVjU3RhdGUq
LCBKU0dsb2JhbE9iamVjdCopIGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0
KiB0b1RoaXNPYmplY3RTbG93Q2FzZShFeGVjU3RhdGUqKSBjb25zdDsKKworI2lmIFVTRShKU1ZB
TFVFMzJfNjQpCisgICAgLyoKKyAgICAgKiBPbiAzMi1iaXQgcGxhdGZvcm1zIFVTRShKU1ZBTFVF
MzJfNjQpIHNob3VsZCBiZSBkZWZpbmVkLCBhbmQgd2UgdXNlIGEgTmFOLWVuY29kZWQKKyAgICAg
KiBmb3JtIGZvciBpbW1lZGlhdGVzLgorICAgICAqCisgICAgICogVGhlIGVuY29kaW5nIG1ha2Vz
IHVzZSBvZiB1bnVzZWQgTmFOIHNwYWNlIGluIHRoZSBJRUVFNzU0IHJlcHJlc2VudGF0aW9uLiAg
QW55IHZhbHVlCisgICAgICogd2l0aCB0aGUgdG9wIDEzIGJpdHMgc2V0IHJlcHJlc2VudHMgYSBR
TmFOICh3aXRoIHRoZSBzaWduIGJpdCBzZXQpLiAgUU5hTiB2YWx1ZXMKKyAgICAgKiBjYW4gZW5j
b2RlIGEgNTEtYml0IHBheWxvYWQuICBIYXJkd2FyZSBwcm9kdWNlZCBhbmQgQy1saWJyYXJ5IHBh
eWxvYWRzIHR5cGljYWxseQorICAgICAqIGhhdmUgYSBwYXlsb2FkIG9mIHplcm8uICBXZSBhc3N1
bWUgdGhhdCBub24temVybyBwYXlsb2FkcyBhcmUgYXZhaWxhYmxlIHRvIGVuY29kZQorICAgICAq
IHBvaW50ZXIgYW5kIGludGVnZXIgdmFsdWVzLiAgU2luY2UgYW55IDY0LWJpdCBiaXQgcGF0dGVy
biB3aGVyZSB0aGUgdG9wIDE1IGJpdHMgYXJlCisgICAgICogYWxsIHNldCByZXByZXNlbnRzIGEg
TmFOIHdpdGggYSBub24temVybyBwYXlsb2FkLCB3ZSBjYW4gdXNlIHRoaXMgc3BhY2UgaW4gdGhl
IE5hTgorICAgICAqIHJhbmdlcyB0byBlbmNvZGUgb3RoZXIgdmFsdWVzIChob3dldmVyIHRoZXJl
IGFyZSBhbHNvIG90aGVyIHJhbmdlcyBvZiBOYU4gc3BhY2UgdGhhdAorICAgICAqIGNvdWxkIGhh
dmUgYmVlbiBzZWxlY3RlZCkuCisgICAgICoKKyAgICAgKiBGb3IgSlNWYWx1ZXMgdGhhdCBkbyBu
b3QgY29udGFpbiBhIGRvdWJsZSB2YWx1ZSwgdGhlIGhpZ2ggMzIgYml0cyBjb250YWluIHRoZSB0
YWcKKyAgICAgKiB2YWx1ZXMgbGlzdGVkIGluIHRoZSBlbnVtcyBiZWxvdywgd2hpY2ggYWxsIGNv
cnJlc3BvbmQgdG8gTmFOLXNwYWNlLiBJbiB0aGUgY2FzZSBvZgorICAgICAqIGNlbGwsIGludGVn
ZXIgYW5kIGJvb2wgdmFsdWVzIHRoZSBsb3dlciAzMiBiaXRzICh0aGUgJ3BheWxvYWQnKSBjb250
YWluIHRoZSBwb2ludGVyCisgICAgICogaW50ZWdlciBvciBib29sZWFuIHZhbHVlOyBpbiB0aGUg
Y2FzZSBvZiBhbGwgb3RoZXIgdGFncyB0aGUgcGF5bG9hZCBpcyAwLgorICAgICAqLworICAgIHVp
bnQzMl90IHRhZygpIGNvbnN0OworICAgIGludDMyX3QgcGF5bG9hZCgpIGNvbnN0OworCisjaWYg
RU5BQkxFKExMSU5UX0NfTE9PUCkKKyAgICAvLyBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgYnkg
dGhlIExMSW50IEMgTG9vcCBpbnRlcnByZXRlciB3aG8gbmVlZHMKKyAgICAvLyBzeW50aGVzaXpl
IEpTVmFsdWUgZnJvbSBpdHMgInJlZ2lzdGVyInMgaG9sZGluZyB0YWcgYW5kIHBheWxvYWQKKyAg
ICAvLyB2YWx1ZXMuCisgICAgZXhwbGljaXQgSlNWYWx1ZShpbnQzMl90IHRhZywgaW50MzJfdCBw
YXlsb2FkKTsKKyNlbmRpZgorCisjZWxpZiBVU0UoSlNWQUxVRTY0KQorICAgIC8qCisgICAgICog
T24gNjQtYml0IHBsYXRmb3JtcyBVU0UoSlNWQUxVRTY0KSBzaG91bGQgYmUgZGVmaW5lZCwgYW5k
IHdlIHVzZSBhIE5hTi1lbmNvZGVkCisgICAgICogZm9ybSBmb3IgaW1tZWRpYXRlcy4KKyAgICAg
KgorICAgICAqIFRoZSBlbmNvZGluZyBtYWtlcyB1c2Ugb2YgdW51c2VkIE5hTiBzcGFjZSBpbiB0
aGUgSUVFRTc1NCByZXByZXNlbnRhdGlvbi4gIEFueSB2YWx1ZQorICAgICAqIHdpdGggdGhlIHRv
cCAxMyBiaXRzIHNldCByZXByZXNlbnRzIGEgUU5hTiAod2l0aCB0aGUgc2lnbiBiaXQgc2V0KS4g
IFFOYU4gdmFsdWVzCisgICAgICogY2FuIGVuY29kZSBhIDUxLWJpdCBwYXlsb2FkLiAgSGFyZHdh
cmUgcHJvZHVjZWQgYW5kIEMtbGlicmFyeSBwYXlsb2FkcyB0eXBpY2FsbHkKKyAgICAgKiBoYXZl
IGEgcGF5bG9hZCBvZiB6ZXJvLiAgV2UgYXNzdW1lIHRoYXQgbm9uLXplcm8gcGF5bG9hZHMgYXJl
IGF2YWlsYWJsZSB0byBlbmNvZGUKKyAgICAgKiBwb2ludGVyIGFuZCBpbnRlZ2VyIHZhbHVlcy4g
IFNpbmNlIGFueSA2NC1iaXQgYml0IHBhdHRlcm4gd2hlcmUgdGhlIHRvcCAxNSBiaXRzIGFyZQor
ICAgICAqIGFsbCBzZXQgcmVwcmVzZW50cyBhIE5hTiB3aXRoIGEgbm9uLXplcm8gcGF5bG9hZCwg
d2UgY2FuIHVzZSB0aGlzIHNwYWNlIGluIHRoZSBOYU4KKyAgICAgKiByYW5nZXMgdG8gZW5jb2Rl
IG90aGVyIHZhbHVlcyAoaG93ZXZlciB0aGVyZSBhcmUgYWxzbyBvdGhlciByYW5nZXMgb2YgTmFO
IHNwYWNlIHRoYXQKKyAgICAgKiBjb3VsZCBoYXZlIGJlZW4gc2VsZWN0ZWQpLgorICAgICAqCisg
ICAgICogVGhpcyByYW5nZSBvZiBOYU4gc3BhY2UgaXMgcmVwcmVzZW50ZWQgYnkgNjQtYml0IG51
bWJlcnMgYmVnaW5pbmcgd2l0aCB0aGUgMTYtYml0CisgICAgICogaGV4IHBhdHRlcm5zIDB4RkZG
RSBhbmQgMHhGRkZGIC0gd2UgcmVseSBvbiB0aGUgZmFjdCB0aGF0IG5vIHZhbGlkIGRvdWJsZS1w
cmVjaXNpb24KKyAgICAgKiBudW1iZXJzIHdpbGwgYmVnaW4gZmFsbCBpbiB0aGVzZSByYW5nZXMu
CisgICAgICoKKyAgICAgKiBUaGUgdG9wIDE2LWJpdHMgZGVub3RlIHRoZSB0eXBlIG9mIHRoZSBl
bmNvZGVkIEpTVmFsdWU6CisgICAgICoKKyAgICAgKiAgICAgUG9pbnRlciB7ICAwMDAwOlBQUFA6
UFBQUDpQUFBQCisgICAgICogICAgICAgICAgICAgIC8gMDAwMToqKioqOioqKio6KioqKgorICAg
ICAqICAgICBEb3VibGUgIHsgICAgICAgICAuLi4KKyAgICAgKiAgICAgICAgICAgICAgXCBGRkZF
OioqKio6KioqKjoqKioqCisgICAgICogICAgIEludGVnZXIgeyAgRkZGRjowMDAwOklJSUk6SUlJ
SQorICAgICAqCisgICAgICogVGhlIHNjaGVtZSB3ZSBoYXZlIGltcGxlbWVudGVkIGVuY29kZXMg
ZG91YmxlIHByZWNpc2lvbiB2YWx1ZXMgYnkgcGVyZm9ybWluZyBhCisgICAgICogNjQtYml0IGlu
dGVnZXIgYWRkaXRpb24gb2YgdGhlIHZhbHVlIDJeNDggdG8gdGhlIG51bWJlci4gQWZ0ZXIgdGhp
cyBtYW5pcHVsYXRpb24KKyAgICAgKiBubyBlbmNvZGVkIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUg
d2lsbCBiZWdpbiB3aXRoIHRoZSBwYXR0ZXJuIDB4MDAwMCBvciAweEZGRkYuCisgICAgICogVmFs
dWVzIG11c3QgYmUgZGVjb2RlZCBieSByZXZlcnNpbmcgdGhpcyBvcGVyYXRpb24gYmVmb3JlIHN1
YnNlcXVlbnQgZmxvYXRpbmcgcG9pbnQKKyAgICAgKiBvcGVyYXRpb25zIG15IGJlIHBlZm9ybWVk
LgorICAgICAqCisgICAgICogMzItYml0IHNpZ25lZCBpbnRlZ2VycyBhcmUgbWFya2VkIHdpdGgg
dGhlIDE2LWJpdCB0YWcgMHhGRkZGLgorICAgICAqCisgICAgICogVGhlIHRhZyAweDAwMDAgZGVu
b3RlcyBhIHBvaW50ZXIsIG9yIGFub3RoZXIgZm9ybSBvZiB0YWdnZWQgaW1tZWRpYXRlLiBCb29s
ZWFuLAorICAgICAqIG51bGwgYW5kIHVuZGVmaW5lZCB2YWx1ZXMgYXJlIHJlcHJlc2VudGVkIGJ5
IHNwZWNpZmljLCBpbnZhbGlkIHBvaW50ZXIgdmFsdWVzOgorICAgICAqCisgICAgICogICAgIEZh
bHNlOiAgICAgMHgwNgorICAgICAqICAgICBUcnVlOiAgICAgIDB4MDcKKyAgICAgKiAgICAgVW5k
ZWZpbmVkOiAweDBhCisgICAgICogICAgIE51bGw6ICAgICAgMHgwMgorICAgICAqCisgICAgICog
VGhlc2UgdmFsdWVzIGhhdmUgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOgorICAgICAqIC0gQml0
IDEgKFRhZ0JpdFR5cGVPdGhlcikgaXMgc2V0IGZvciBhbGwgZm91ciB2YWx1ZXMsIGFsbG93aW5n
IHJlYWwgcG9pbnRlcnMgdG8gYmUKKyAgICAgKiAgIHF1aWNrbHkgZGlzdGluZ3Vpc2hlZCBmcm9t
IGFsbCBpbW1lZGlhdGUgdmFsdWVzLCBpbmNsdWRpbmcgdGhlc2UgaW52YWxpZCBwb2ludGVycy4K
KyAgICAgKiAtIFdpdGggYml0IDMgaXMgbWFza2VkIG91dCAoVGFnQml0VW5kZWZpbmVkKSBVbmRl
ZmluZWQgYW5kIE51bGwgc2hhcmUgdGhlCisgICAgICogICBzYW1lIHZhbHVlLCBhbGxvd2luZyBu
dWxsICYgdW5kZWZpbmVkIHRvIGJlIHF1aWNrbHkgZGV0ZWN0ZWQuCisgICAgICoKKyAgICAgKiBO
byB2YWxpZCBKU1ZhbHVlIHdpbGwgaGF2ZSB0aGUgYml0IHBhdHRlcm4gMHgwLCB0aGlzIGlzIHVz
ZWQgdG8gcmVwcmVzZW50IGFycmF5CisgICAgICogaG9sZXMsIGFuZCBhcyBhIEMrKyAnbm8gdmFs
dWUnIHJlc3VsdCAoZS5nLiBKU1ZhbHVlKCkgaGFzIGFuIGludGVybmFsIHZhbHVlIG9mIDApLgor
ICAgICAqLworCisgICAgLy8gVGhlc2UgdmFsdWVzIGFyZSAjZGVmaW5lcyBzaW5jZSB1c2luZyBz
dGF0aWMgY29uc3QgaW50ZWdlcnMgaGVyZSBpcyBhIH4xJSByZWdyZXNzaW9uIQorCisgICAgLy8g
VGhpcyB2YWx1ZSBpcyAyXjQ4LCB1c2VkIHRvIGVuY29kZSBkb3VibGVzIHN1Y2ggdGhhdCB0aGUg
ZW5jb2RlZCB2YWx1ZSB3aWxsIGJlZ2luCisgICAgLy8gd2l0aCBhIDE2LWJpdCBwYXR0ZXJuIHdp
dGhpbiB0aGUgcmFuZ2UgMHgwMDAxLi4weEZGRkUuCisgICAgI2RlZmluZSBEb3VibGVFbmNvZGVP
ZmZzZXQgMHgxMDAwMDAwMDAwMDAwbGwKKyAgICAvLyBJZiBhbGwgYml0cyBpbiB0aGUgbWFzayBh
cmUgc2V0LCB0aGlzIGluZGljYXRlcyBhbiBpbnRlZ2VyIG51bWJlciwKKyAgICAvLyBpZiBhbnkg
YnV0IG5vdCBhbGwgYXJlIHNldCB0aGlzIHZhbHVlIGlzIGEgZG91YmxlIHByZWNpc2lvbiBudW1i
ZXIuCisgICAgI2RlZmluZSBUYWdUeXBlTnVtYmVyIDB4ZmZmZjAwMDAwMDAwMDAwMGxsCisKKyAg
ICAvLyBBbGwgbm9uLW51bWVyaWMgKGJvb2wsIG51bGwsIHVuZGVmaW5lZCkgaW1tZWRpYXRlcyBo
YXZlIGJpdCAyIHNldC4KKyAgICAjZGVmaW5lIFRhZ0JpdFR5cGVPdGhlciAweDJsbAorICAgICNk
ZWZpbmUgVGFnQml0Qm9vbCAgICAgIDB4NGxsCisgICAgI2RlZmluZSBUYWdCaXRVbmRlZmluZWQg
MHg4bGwKKyAgICAvLyBDb21iaW5lZCBpbnRlZ2VyIHZhbHVlIGZvciBub24tbnVtZXJpYyBpbW1l
ZGlhdGVzLgorICAgICNkZWZpbmUgVmFsdWVGYWxzZSAgICAgKFRhZ0JpdFR5cGVPdGhlciB8IFRh
Z0JpdEJvb2wgfCBmYWxzZSkKKyAgICAjZGVmaW5lIFZhbHVlVHJ1ZSAgICAgIChUYWdCaXRUeXBl
T3RoZXIgfCBUYWdCaXRCb29sIHwgdHJ1ZSkKKyAgICAjZGVmaW5lIFZhbHVlVW5kZWZpbmVkIChU
YWdCaXRUeXBlT3RoZXIgfCBUYWdCaXRVbmRlZmluZWQpCisgICAgI2RlZmluZSBWYWx1ZU51bGwg
ICAgICAoVGFnQml0VHlwZU90aGVyKQorCisgICAgLy8gVGFnTWFzayBpcyB1c2VkIHRvIGNoZWNr
IGZvciBhbGwgdHlwZXMgb2YgaW1tZWRpYXRlIHZhbHVlcyAoZWl0aGVyIG51bWJlciBvciAnb3Ro
ZXInKS4KKyAgICAjZGVmaW5lIFRhZ01hc2sgKFRhZ1R5cGVOdW1iZXIgfCBUYWdCaXRUeXBlT3Ro
ZXIpCisKKyAgICAvLyBUaGVzZSBzcGVjaWFsIHZhbHVlcyBhcmUgbmV2ZXIgdmlzaWJsZSB0byBK
YXZhU2NyaXB0IGNvZGU7IEVtcHR5IGlzIHVzZWQgdG8gcmVwcmVzZW50CisgICAgLy8gQXJyYXkg
aG9sZXMsIGFuZCBmb3IgdW5pbml0aWFsaXplZCBKU1ZhbHVlcy4gRGVsZXRlZCBpcyB1c2VkIGlu
IGhhc2ggdGFibGUgY29kZS4KKyAgICAvLyBUaGVzZSB2YWx1ZXMgd291bGQgbWFwIHRvIGNlbGwg
dHlwZXMgaW4gdGhlIEpTVmFsdWUgZW5jb2RpbmcsIGJ1dCBub3QgdmFsaWQgR0MgY2VsbAorICAg
IC8vIHBvaW50ZXIgc2hvdWxkIGhhdmUgZWl0aGVyIG9mIHRoZXNlIHZhbHVlcyAoRW1wdHkgaXMg
bnVsbCwgZGVsZXRlZCBpcyBhdCBhbiBpbnZhbGlkCisgICAgLy8gYWxpZ25tZW50IGZvciBhIEdD
IGNlbGwsIGFuZCBpbiB0aGUgemVybyBwYWdlKS4KKyAgICAjZGVmaW5lIFZhbHVlRW1wdHkgICAw
eDBsbAorICAgICNkZWZpbmUgVmFsdWVEZWxldGVkIDB4NGxsCisjZW5kaWYKKworICAgIEVuY29k
ZWRWYWx1ZURlc2NyaXB0b3IgdTsKK307CisKK3R5cGVkZWYgSW50SGFzaDxFbmNvZGVkSlNWYWx1
ZT4gRW5jb2RlZEpTVmFsdWVIYXNoOworCisjaWYgVVNFKEpTVkFMVUUzMl82NCkKK3N0cnVjdCBF
bmNvZGVkSlNWYWx1ZUhhc2hUcmFpdHMgOiBIYXNoVHJhaXRzPEVuY29kZWRKU1ZhbHVlPiB7Cisg
ICAgc3RhdGljIGNvbnN0IGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IGZhbHNlOworICAgIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBlbXB0eVZhbHVlKCkgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpT
VmFsdWUoKSk7IH0KKyAgICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoRW5jb2Rl
ZEpTVmFsdWUmIHNsb3QpIHsgc2xvdCA9IEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKEpTVmFsdWU6
Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkpOyB9CisgICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFs
dWUoRW5jb2RlZEpTVmFsdWUgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID09IEpTVmFsdWU6OmVuY29k
ZShKU1ZhbHVlKEpTVmFsdWU6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkpOyB9Cit9OworI2Vsc2UK
K3N0cnVjdCBFbmNvZGVkSlNWYWx1ZUhhc2hUcmFpdHMgOiBIYXNoVHJhaXRzPEVuY29kZWRKU1Zh
bHVlPiB7CisgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKEVuY29kZWRKU1Zh
bHVlJiBzbG90KSB7IHNsb3QgPSBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShKU1ZhbHVlOjpIYXNo
VGFibGVEZWxldGVkVmFsdWUpKTsgfQorICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKEVu
Y29kZWRKU1ZhbHVlIHZhbHVlKSB7IHJldHVybiB2YWx1ZSA9PSBKU1ZhbHVlOjplbmNvZGUoSlNW
YWx1ZShKU1ZhbHVlOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpKTsgfQorfTsKKyNlbmRpZgorCit0
eXBlZGVmIEhhc2hNYXA8RW5jb2RlZEpTVmFsdWUsIHVuc2lnbmVkLCBFbmNvZGVkSlNWYWx1ZUhh
c2gsIEVuY29kZWRKU1ZhbHVlSGFzaFRyYWl0cz4gSlNWYWx1ZU1hcDsKKworLy8gU3RhbmQtYWxv
bmUgaGVscGVyIGZ1bmN0aW9ucy4KK2lubGluZSBKU1ZhbHVlIGpzTnVsbCgpCit7CisgICAgcmV0
dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNOdWxsKTsKK30KKworaW5saW5lIEpTVmFsdWUganNVbmRl
ZmluZWQoKQoreworICAgIHJldHVybiBKU1ZhbHVlKEpTVmFsdWU6OkpTVW5kZWZpbmVkKTsKK30K
KworaW5saW5lIEpTVmFsdWUganNCb29sZWFuKGJvb2wgYikKK3sKKyAgICByZXR1cm4gYiA/IEpT
VmFsdWUoSlNWYWx1ZTo6SlNUcnVlKSA6IEpTVmFsdWUoSlNWYWx1ZTo6SlNGYWxzZSk7Cit9CisK
K0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc0RvdWJsZU51bWJlcihkb3VibGUgZCkKK3sKKyAgICBB
U1NFUlQoSlNWYWx1ZShKU1ZhbHVlOjpFbmNvZGVBc0RvdWJsZSwgZCkuaXNOdW1iZXIoKSk7Cisg
ICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1ZTo6RW5jb2RlQXNEb3VibGUsIGQpOworfQorCitBTFdB
WVNfSU5MSU5FIEpTVmFsdWUganNOdW1iZXIoZG91YmxlIGQpCit7CisgICAgQVNTRVJUKEpTVmFs
dWUoZCkuaXNOdW1iZXIoKSk7CisgICAgcmV0dXJuIEpTVmFsdWUoZCk7Cit9CisKK0FMV0FZU19J
TkxJTkUgSlNWYWx1ZSBqc051bWJlcihjaGFyIGkpCit7CisgICAgcmV0dXJuIEpTVmFsdWUoaSk7
Cit9CisKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc051bWJlcih1bnNpZ25lZCBjaGFyIGkpCit7
CisgICAgcmV0dXJuIEpTVmFsdWUoaSk7Cit9CisKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc051
bWJlcihzaG9ydCBpKQoreworICAgIHJldHVybiBKU1ZhbHVlKGkpOworfQorCitBTFdBWVNfSU5M
SU5FIEpTVmFsdWUganNOdW1iZXIodW5zaWduZWQgc2hvcnQgaSkKK3sKKyAgICByZXR1cm4gSlNW
YWx1ZShpKTsKK30KKworQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzTnVtYmVyKGludCBpKQorewor
ICAgIHJldHVybiBKU1ZhbHVlKGkpOworfQorCitBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNOdW1i
ZXIodW5zaWduZWQgaSkKK3sKKyAgICByZXR1cm4gSlNWYWx1ZShpKTsKK30KKworQUxXQVlTX0lO
TElORSBKU1ZhbHVlIGpzTnVtYmVyKGxvbmcgaSkKK3sKKyAgICByZXR1cm4gSlNWYWx1ZShpKTsK
K30KKworQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzTnVtYmVyKHVuc2lnbmVkIGxvbmcgaSkKK3sK
KyAgICByZXR1cm4gSlNWYWx1ZShpKTsKK30KKworQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzTnVt
YmVyKGxvbmcgbG9uZyBpKQoreworICAgIHJldHVybiBKU1ZhbHVlKGkpOworfQorCitBTFdBWVNf
SU5MSU5FIEpTVmFsdWUganNOdW1iZXIodW5zaWduZWQgbG9uZyBsb25nIGkpCit7CisgICAgcmV0
dXJuIEpTVmFsdWUoaSk7Cit9CisKK2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgSlNWYWx1
ZSBhLCBjb25zdCBKU0NlbGwqIGIpIHsgcmV0dXJuIGEgPT0gSlNWYWx1ZShiKTsgfQoraW5saW5l
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBKU0NlbGwqIGEsIGNvbnN0IEpTVmFsdWUgYikgeyByZXR1
cm4gSlNWYWx1ZShhKSA9PSBiOyB9CisKK2lubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgSlNW
YWx1ZSBhLCBjb25zdCBKU0NlbGwqIGIpIHsgcmV0dXJuIGEgIT0gSlNWYWx1ZShiKTsgfQoraW5s
aW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBKU0NlbGwqIGEsIGNvbnN0IEpTVmFsdWUgYikgeyBy
ZXR1cm4gSlNWYWx1ZShhKSAhPSBiOyB9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYg
Ly8gSlNWYWx1ZV9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1Zh
bHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNW
YWx1ZS5oCShyZXZpc2lvbiAxNDAxOTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NKU1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwLDggKzIwLDggQEAKICAqCiAgKi8K
IAotI2lmbmRlZiBKU1ZhbHVlX2gKLSNkZWZpbmUgSlNWYWx1ZV9oCisjaWZuZGVmIEpTQ0pTVmFs
dWVfaAorI2RlZmluZSBKU0NKU1ZhbHVlX2gKIAogI2luY2x1ZGUgPG1hdGguaD4KICNpbmNsdWRl
IDxzdGRkZWYuaD4gLy8gZm9yIHNpemVfdApAQCAtMjQ1LDEyICsyNDUsMTIgQEAgcHVibGljOgog
CiAgICAgSlNPYmplY3QqIHRvVGhpc09iamVjdChFeGVjU3RhdGUqKSBjb25zdDsKIAotICAgIHN0
YXRpYyBib29sIGVxdWFsKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2Mik7
Ci0gICAgc3RhdGljIGJvb2wgZXF1YWxTbG93Q2FzZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
djEsIEpTVmFsdWUgdjIpOwotICAgIHN0YXRpYyBib29sIGVxdWFsU2xvd0Nhc2VJbmxpbmUoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKTsKLSAgICBzdGF0aWMgYm9vbCBz
dHJpY3RFcXVhbChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpOwotICAg
IHN0YXRpYyBib29sIHN0cmljdEVxdWFsU2xvd0Nhc2UoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
IHYxLCBKU1ZhbHVlIHYyKTsKLSAgICBzdGF0aWMgYm9vbCBzdHJpY3RFcXVhbFNsb3dDYXNlSW5s
aW5lKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2Mik7CisgICAgc3RhdGlj
IGJvb2wgZXF1YWwoRXhlY1N0YXRlKiwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2Mik7CisgICAgc3Rh
dGljIGJvb2wgZXF1YWxTbG93Q2FzZShFeGVjU3RhdGUqLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYy
KTsKKyAgICBzdGF0aWMgYm9vbCBlcXVhbFNsb3dDYXNlSW5saW5lKEV4ZWNTdGF0ZSosIEpTVmFs
dWUgdjEsIEpTVmFsdWUgdjIpOworICAgIHN0YXRpYyBib29sIHN0cmljdEVxdWFsKEV4ZWNTdGF0
ZSosIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpOworICAgIHN0YXRpYyBib29sIHN0cmljdEVxdWFs
U2xvd0Nhc2UoRXhlY1N0YXRlKiwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2Mik7CisgICAgc3RhdGlj
IGJvb2wgc3RyaWN0RXF1YWxTbG93Q2FzZUlubGluZShFeGVjU3RhdGUqLCBKU1ZhbHVlIHYxLCBK
U1ZhbHVlIHYyKTsKIAogICAgIGJvb2wgaXNDZWxsKCkgY29uc3Q7CiAgICAgSlNDZWxsKiBhc0Nl
bGwoKSBjb25zdDsKQEAgLTQ5NCw0ICs0OTQsNCBAQCBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IEpTQ2VsbCogYSwgCiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCi0jZW5kaWYgLy8gSlNWYWx1
ZV9oCisjZW5kaWYgLy8gSlNDSlNWYWx1ZV9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgJKHJldmlzaW9uIDE0MDE5NikJKGZy
b20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZUlubGluZXMuaDoxNDAxOTYp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzk5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEx
LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgSlNWYWx1ZUlubGluZXNfaAorI2Rl
ZmluZSBKU1ZhbHVlSW5saW5lc19oCisKKyNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisj
aW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNs
dWRlICJKU1ZhbHVlLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitBTFdBWVNfSU5MSU5FIGludDMy
X3QgSlNWYWx1ZTo6dG9JbnQzMihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Cit7CisgICAgaWYgKGlz
SW50MzIoKSkKKyAgICAgICAgcmV0dXJuIGFzSW50MzIoKTsKKyAgICByZXR1cm4gSlNDOjp0b0lu
dDMyKHRvTnVtYmVyKGV4ZWMpKTsKK30KKworaW5saW5lIHVpbnQzMl90IEpTVmFsdWU6OnRvVUlu
dDMyKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICAvLyBTZWUgY29tbWVudCBvbiBKU0M6
OnRvVUludDMyLCBhYm92ZS4KKyAgICByZXR1cm4gdG9JbnQzMihleGVjKTsKK30KKworaW5saW5l
IGJvb2wgSlNWYWx1ZTo6aXNVSW50MzIoKSBjb25zdAoreworICAgIHJldHVybiBpc0ludDMyKCkg
JiYgYXNJbnQzMigpID49IDA7Cit9CisKK2lubGluZSB1aW50MzJfdCBKU1ZhbHVlOjphc1VJbnQz
MigpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzVUludDMyKCkpOworICAgIHJldHVybiBhc0ludDMy
KCk7Cit9CisKK2lubGluZSBkb3VibGUgSlNWYWx1ZTo6YXNOdW1iZXIoKSBjb25zdAoreworICAg
IEFTU0VSVChpc051bWJlcigpKTsKKyAgICByZXR1cm4gaXNJbnQzMigpID8gYXNJbnQzMigpIDog
YXNEb3VibGUoKTsKK30KKworaW5saW5lIEpTVmFsdWUganNOYU4oKQoreworICAgIHJldHVybiBK
U1ZhbHVlKFFOYU4pOworfQorCitpbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShjaGFyIGkpCit7Cisg
ICAgKnRoaXMgPSBKU1ZhbHVlKHN0YXRpY19jYXN0PGludDMyX3Q+KGkpKTsKK30KKworaW5saW5l
IEpTVmFsdWU6OkpTVmFsdWUodW5zaWduZWQgY2hhciBpKQoreworICAgICp0aGlzID0gSlNWYWx1
ZShzdGF0aWNfY2FzdDxpbnQzMl90PihpKSk7Cit9CisKK2lubGluZSBKU1ZhbHVlOjpKU1ZhbHVl
KHNob3J0IGkpCit7CisgICAgKnRoaXMgPSBKU1ZhbHVlKHN0YXRpY19jYXN0PGludDMyX3Q+KGkp
KTsKK30KKworaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUodW5zaWduZWQgc2hvcnQgaSkKK3sKKyAg
ICAqdGhpcyA9IEpTVmFsdWUoc3RhdGljX2Nhc3Q8aW50MzJfdD4oaSkpOworfQorCitpbmxpbmUg
SlNWYWx1ZTo6SlNWYWx1ZSh1bnNpZ25lZCBpKQoreworICAgIGlmIChzdGF0aWNfY2FzdDxpbnQz
Ml90PihpKSA8IDApIHsKKyAgICAgICAgKnRoaXMgPSBKU1ZhbHVlKEVuY29kZUFzRG91YmxlLCBz
dGF0aWNfY2FzdDxkb3VibGU+KGkpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAqdGhp
cyA9IEpTVmFsdWUoc3RhdGljX2Nhc3Q8aW50MzJfdD4oaSkpOworfQorCitpbmxpbmUgSlNWYWx1
ZTo6SlNWYWx1ZShsb25nIGkpCit7CisgICAgaWYgKHN0YXRpY19jYXN0PGludDMyX3Q+KGkpICE9
IGkpIHsKKyAgICAgICAgKnRoaXMgPSBKU1ZhbHVlKEVuY29kZUFzRG91YmxlLCBzdGF0aWNfY2Fz
dDxkb3VibGU+KGkpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAqdGhpcyA9IEpTVmFs
dWUoc3RhdGljX2Nhc3Q8aW50MzJfdD4oaSkpOworfQorCitpbmxpbmUgSlNWYWx1ZTo6SlNWYWx1
ZSh1bnNpZ25lZCBsb25nIGkpCit7CisgICAgaWYgKHN0YXRpY19jYXN0PHVpbnQzMl90PihpKSAh
PSBpKSB7CisgICAgICAgICp0aGlzID0gSlNWYWx1ZShFbmNvZGVBc0RvdWJsZSwgc3RhdGljX2Nh
c3Q8ZG91YmxlPihpKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgKnRoaXMgPSBKU1Zh
bHVlKHN0YXRpY19jYXN0PHVpbnQzMl90PihpKSk7Cit9CisKK2lubGluZSBKU1ZhbHVlOjpKU1Zh
bHVlKGxvbmcgbG9uZyBpKQoreworICAgIGlmIChzdGF0aWNfY2FzdDxpbnQzMl90PihpKSAhPSBp
KSB7CisgICAgICAgICp0aGlzID0gSlNWYWx1ZShFbmNvZGVBc0RvdWJsZSwgc3RhdGljX2Nhc3Q8
ZG91YmxlPihpKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgKnRoaXMgPSBKU1ZhbHVl
KHN0YXRpY19jYXN0PGludDMyX3Q+KGkpKTsKK30KKworaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUo
dW5zaWduZWQgbG9uZyBsb25nIGkpCit7CisgICAgaWYgKHN0YXRpY19jYXN0PHVpbnQzMl90Pihp
KSAhPSBpKSB7CisgICAgICAgICp0aGlzID0gSlNWYWx1ZShFbmNvZGVBc0RvdWJsZSwgc3RhdGlj
X2Nhc3Q8ZG91YmxlPihpKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgKnRoaXMgPSBK
U1ZhbHVlKHN0YXRpY19jYXN0PHVpbnQzMl90PihpKSk7Cit9CisKK2lubGluZSBKU1ZhbHVlOjpK
U1ZhbHVlKGRvdWJsZSBkKQoreworICAgIGNvbnN0IGludDMyX3QgYXNJbnQzMiA9IHN0YXRpY19j
YXN0PGludDMyX3Q+KGQpOworICAgIGlmIChhc0ludDMyICE9IGQgfHwgKCFhc0ludDMyICYmIHNp
Z25iaXQoZCkpKSB7IC8vIHRydWUgZm9yIC0wLjAKKyAgICAgICAgKnRoaXMgPSBKU1ZhbHVlKEVu
Y29kZUFzRG91YmxlLCBkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAqdGhpcyA9IEpT
VmFsdWUoc3RhdGljX2Nhc3Q8aW50MzJfdD4oZCkpOworfQorCitpbmxpbmUgRW5jb2RlZEpTVmFs
dWUgSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUgdmFsdWUpCit7CisgICAgcmV0dXJuIHZhbHVlLnUu
YXNJbnQ2NDsKK30KKworaW5saW5lIEpTVmFsdWUgSlNWYWx1ZTo6ZGVjb2RlKEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRKU1ZhbHVlKQoreworICAgIEpTVmFsdWUgdjsKKyAgICB2LnUuYXNJbnQ2NCA9
IGVuY29kZWRKU1ZhbHVlOworICAgIHJldHVybiB2OworfQorCisjaWYgVVNFKEpTVkFMVUUzMl82
NCkKK2lubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKCkKK3sKKyAgICB1LmFzQml0cy50YWcgPSBFbXB0
eVZhbHVlVGFnOworICAgIHUuYXNCaXRzLnBheWxvYWQgPSAwOworfQorCitpbmxpbmUgSlNWYWx1
ZTo6SlNWYWx1ZShKU051bGxUYWcpCit7CisgICAgdS5hc0JpdHMudGFnID0gTnVsbFRhZzsKKyAg
ICB1LmFzQml0cy5wYXlsb2FkID0gMDsKK30KKyAgICAKK2lubGluZSBKU1ZhbHVlOjpKU1ZhbHVl
KEpTVW5kZWZpbmVkVGFnKQoreworICAgIHUuYXNCaXRzLnRhZyA9IFVuZGVmaW5lZFRhZzsKKyAg
ICB1LmFzQml0cy5wYXlsb2FkID0gMDsKK30KKyAgICAKK2lubGluZSBKU1ZhbHVlOjpKU1ZhbHVl
KEpTVHJ1ZVRhZykKK3sKKyAgICB1LmFzQml0cy50YWcgPSBCb29sZWFuVGFnOworICAgIHUuYXNC
aXRzLnBheWxvYWQgPSAxOworfQorICAgIAoraW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoSlNGYWxz
ZVRhZykKK3sKKyAgICB1LmFzQml0cy50YWcgPSBCb29sZWFuVGFnOworICAgIHUuYXNCaXRzLnBh
eWxvYWQgPSAwOworfQorCitpbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShIYXNoVGFibGVEZWxldGVk
VmFsdWVUYWcpCit7CisgICAgdS5hc0JpdHMudGFnID0gRGVsZXRlZFZhbHVlVGFnOworICAgIHUu
YXNCaXRzLnBheWxvYWQgPSAwOworfQorCitpbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShKU0NlbGwq
IHB0cikKK3sKKyAgICBpZiAocHRyKQorICAgICAgICB1LmFzQml0cy50YWcgPSBDZWxsVGFnOwor
ICAgIGVsc2UKKyAgICAgICAgdS5hc0JpdHMudGFnID0gRW1wdHlWYWx1ZVRhZzsKKyAgICB1LmFz
Qml0cy5wYXlsb2FkID0gcmVpbnRlcnByZXRfY2FzdDxpbnQzMl90PihwdHIpOworfQorCitpbmxp
bmUgSlNWYWx1ZTo6SlNWYWx1ZShjb25zdCBKU0NlbGwqIHB0cikKK3sKKyAgICBpZiAocHRyKQor
ICAgICAgICB1LmFzQml0cy50YWcgPSBDZWxsVGFnOworICAgIGVsc2UKKyAgICAgICAgdS5hc0Jp
dHMudGFnID0gRW1wdHlWYWx1ZVRhZzsKKyAgICB1LmFzQml0cy5wYXlsb2FkID0gcmVpbnRlcnBy
ZXRfY2FzdDxpbnQzMl90Pihjb25zdF9jYXN0PEpTQ2VsbCo+KHB0cikpOworfQorCitpbmxpbmUg
SlNWYWx1ZTo6b3BlcmF0b3IgYm9vbCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKHRhZygpICE9IERl
bGV0ZWRWYWx1ZVRhZyk7CisgICAgcmV0dXJuIHRhZygpICE9IEVtcHR5VmFsdWVUYWc7Cit9CisK
K2lubGluZSBib29sIEpTVmFsdWU6Om9wZXJhdG9yPT0oY29uc3QgSlNWYWx1ZSYgb3RoZXIpIGNv
bnN0Cit7CisgICAgcmV0dXJuIHUuYXNJbnQ2NCA9PSBvdGhlci51LmFzSW50NjQ7Cit9CisKK2lu
bGluZSBib29sIEpTVmFsdWU6Om9wZXJhdG9yIT0oY29uc3QgSlNWYWx1ZSYgb3RoZXIpIGNvbnN0
Cit7CisgICAgcmV0dXJuIHUuYXNJbnQ2NCAhPSBvdGhlci51LmFzSW50NjQ7Cit9CisKK2lubGlu
ZSBib29sIEpTVmFsdWU6OmlzRW1wdHkoKSBjb25zdAoreworICAgIHJldHVybiB0YWcoKSA9PSBF
bXB0eVZhbHVlVGFnOworfQorCitpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc1VuZGVmaW5lZCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIHRhZygpID09IFVuZGVmaW5lZFRhZzsKK30KKworaW5saW5lIGJv
b2wgSlNWYWx1ZTo6aXNOdWxsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gdGFnKCkgPT0gTnVsbFRh
ZzsKK30KKworaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNVbmRlZmluZWRPck51bGwoKSBjb25zdAor
eworICAgIHJldHVybiBpc1VuZGVmaW5lZCgpIHx8IGlzTnVsbCgpOworfQorCitpbmxpbmUgYm9v
bCBKU1ZhbHVlOjppc0NlbGwoKSBjb25zdAoreworICAgIHJldHVybiB0YWcoKSA9PSBDZWxsVGFn
OworfQorCitpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0ludDMyKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gdGFnKCkgPT0gSW50MzJUYWc7Cit9CisKK2lubGluZSBib29sIEpTVmFsdWU6OmlzRG91Ymxl
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gdGFnKCkgPCBMb3dlc3RUYWc7Cit9CisKK2lubGluZSBi
b29sIEpTVmFsdWU6OmlzVHJ1ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRhZygpID09IEJvb2xl
YW5UYWcgJiYgcGF5bG9hZCgpOworfQorCitpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0ZhbHNlKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gdGFnKCkgPT0gQm9vbGVhblRhZyAmJiAhcGF5bG9hZCgpOwor
fQorCitpbmxpbmUgdWludDMyX3QgSlNWYWx1ZTo6dGFnKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
dS5hc0JpdHMudGFnOworfQorICAgIAoraW5saW5lIGludDMyX3QgSlNWYWx1ZTo6cGF5bG9hZCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIHUuYXNCaXRzLnBheWxvYWQ7Cit9CisgICAgCitpbmxpbmUg
aW50MzJfdCBKU1ZhbHVlOjphc0ludDMyKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNJbnQzMigp
KTsKKyAgICByZXR1cm4gdS5hc0JpdHMucGF5bG9hZDsKK30KKyAgICAKK2lubGluZSBkb3VibGUg
SlNWYWx1ZTo6YXNEb3VibGUoKSBjb25zdAoreworICAgIEFTU0VSVChpc0RvdWJsZSgpKTsKKyAg
ICByZXR1cm4gdS5hc0RvdWJsZTsKK30KKyAgICAKK0FMV0FZU19JTkxJTkUgSlNDZWxsKiBKU1Zh
bHVlOjphc0NlbGwoKSBjb25zdAoreworICAgIEFTU0VSVChpc0NlbGwoKSk7CisgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8SlNDZWxsKj4odS5hc0JpdHMucGF5bG9hZCk7Cit9CisKK0FMV0FZ
U19JTkxJTkUgSlNWYWx1ZTo6SlNWYWx1ZShFbmNvZGVBc0RvdWJsZVRhZywgZG91YmxlIGQpCit7
CisgICAgdS5hc0RvdWJsZSA9IGQ7Cit9CisKK2lubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKGludCBp
KQoreworICAgIHUuYXNCaXRzLnRhZyA9IEludDMyVGFnOworICAgIHUuYXNCaXRzLnBheWxvYWQg
PSBpOworfQorCisjaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkKK2lubGluZSBKU1ZhbHVlOjpKU1Zh
bHVlKGludDMyX3QgdGFnLCBpbnQzMl90IHBheWxvYWQpCit7CisgICAgdS5hc0JpdHMudGFnID0g
dGFnOworICAgIHUuYXNCaXRzLnBheWxvYWQgPSBwYXlsb2FkOworfQorI2VuZGlmCisKK2lubGlu
ZSBib29sIEpTVmFsdWU6OmlzTnVtYmVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaXNJbnQzMigp
IHx8IGlzRG91YmxlKCk7Cit9CisKK2lubGluZSBib29sIEpTVmFsdWU6OmlzQm9vbGVhbigpIGNv
bnN0Cit7CisgICAgcmV0dXJuIGlzVHJ1ZSgpIHx8IGlzRmFsc2UoKTsKK30KKworaW5saW5lIGJv
b2wgSlNWYWx1ZTo6YXNCb29sZWFuKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNCb29sZWFuKCkp
OworICAgIHJldHVybiBwYXlsb2FkKCk7Cit9CisKKyNlbHNlIC8vICFVU0UoSlNWQUxVRTMyXzY0
KSBpLmUuIFVTRShKU1ZBTFVFNjQpCisKKy8vIDB4MCBjYW4gbmV2ZXIgb2NjdXIgbmF0dXJhbGx5
IGJlY2F1c2UgaXQgaGFzIGEgdGFnIG9mIDAwLCBpbmRpY2F0aW5nIGEgcG9pbnRlciB2YWx1ZSwg
YnV0IGEgcGF5bG9hZCBvZiAweDAsIHdoaWNoIGlzIGluIHRoZSAoaW52YWxpZCkgemVybyBwYWdl
LgoraW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoKQoreworICAgIHUuYXNJbnQ2NCA9IFZhbHVlRW1w
dHk7Cit9CisKKy8vIDB4NCBjYW4gbmV2ZXIgb2NjdXIgbmF0dXJhbGx5IGJlY2F1c2UgaXQgaGFz
IGEgdGFnIG9mIDAwLCBpbmRpY2F0aW5nIGEgcG9pbnRlciB2YWx1ZSwgYnV0IGEgcGF5bG9hZCBv
ZiAweDQsIHdoaWNoIGlzIGluIHRoZSAoaW52YWxpZCkgemVybyBwYWdlLgoraW5saW5lIEpTVmFs
dWU6OkpTVmFsdWUoSGFzaFRhYmxlRGVsZXRlZFZhbHVlVGFnKQoreworICAgIHUuYXNJbnQ2NCA9
IFZhbHVlRGVsZXRlZDsKK30KKworaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoSlNDZWxsKiBwdHIp
Cit7CisgICAgdS5hc0ludDY0ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHB0cik7Cit9
CisKK2lubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKGNvbnN0IEpTQ2VsbCogcHRyKQoreworICAgIHUu
YXNJbnQ2NCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihjb25zdF9jYXN0PEpTQ2VsbCo+
KHB0cikpOworfQorCitpbmxpbmUgSlNWYWx1ZTo6b3BlcmF0b3IgYm9vbCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIHUuYXNJbnQ2NDsKK30KKworaW5saW5lIGJvb2wgSlNWYWx1ZTo6b3BlcmF0b3I9
PShjb25zdCBKU1ZhbHVlJiBvdGhlcikgY29uc3QKK3sKKyAgICByZXR1cm4gdS5hc0ludDY0ID09
IG90aGVyLnUuYXNJbnQ2NDsKK30KKworaW5saW5lIGJvb2wgSlNWYWx1ZTo6b3BlcmF0b3IhPShj
b25zdCBKU1ZhbHVlJiBvdGhlcikgY29uc3QKK3sKKyAgICByZXR1cm4gdS5hc0ludDY0ICE9IG90
aGVyLnUuYXNJbnQ2NDsKK30KKworaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNFbXB0eSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIHUuYXNJbnQ2NCA9PSBWYWx1ZUVtcHR5OworfQorCitpbmxpbmUgYm9v
bCBKU1ZhbHVlOjppc1VuZGVmaW5lZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGFzVmFsdWUoKSA9
PSBKU1ZhbHVlKEpTVW5kZWZpbmVkKTsKK30KKworaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNOdWxs
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gYXNWYWx1ZSgpID09IEpTVmFsdWUoSlNOdWxsKTsKK30K
KworaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNUcnVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gYXNW
YWx1ZSgpID09IEpTVmFsdWUoSlNUcnVlKTsKK30KKworaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNG
YWxzZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGFzVmFsdWUoKSA9PSBKU1ZhbHVlKEpTRmFsc2Up
OworfQorCitpbmxpbmUgYm9vbCBKU1ZhbHVlOjphc0Jvb2xlYW4oKSBjb25zdAoreworICAgIEFT
U0VSVChpc0Jvb2xlYW4oKSk7CisgICAgcmV0dXJuIGFzVmFsdWUoKSA9PSBKU1ZhbHVlKEpTVHJ1
ZSk7Cit9CisKK2lubGluZSBpbnQzMl90IEpTVmFsdWU6OmFzSW50MzIoKSBjb25zdAoreworICAg
IEFTU0VSVChpc0ludDMyKCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQzMl90Pih1LmFz
SW50NjQpOworfQorCitpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0RvdWJsZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGlzTnVtYmVyKCkgJiYgIWlzSW50MzIoKTsKK30KKworaW5saW5lIEpTVmFsdWU6
OkpTVmFsdWUoSlNOdWxsVGFnKQoreworICAgIHUuYXNJbnQ2NCA9IFZhbHVlTnVsbDsKK30KKyAg
ICAKK2lubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKEpTVW5kZWZpbmVkVGFnKQoreworICAgIHUuYXNJ
bnQ2NCA9IFZhbHVlVW5kZWZpbmVkOworfQorCitpbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShKU1Ry
dWVUYWcpCit7CisgICAgdS5hc0ludDY0ID0gVmFsdWVUcnVlOworfQorCitpbmxpbmUgSlNWYWx1
ZTo6SlNWYWx1ZShKU0ZhbHNlVGFnKQoreworICAgIHUuYXNJbnQ2NCA9IFZhbHVlRmFsc2U7Cit9
CisKK2lubGluZSBib29sIEpTVmFsdWU6OmlzVW5kZWZpbmVkT3JOdWxsKCkgY29uc3QKK3sKKyAg
ICAvLyBVbmRlZmluZWQgYW5kIG51bGwgc2hhcmUgdGhlIHNhbWUgdmFsdWUsIGJhciB0aGUgJ3Vu
ZGVmaW5lZCcgYml0IGluIHRoZSBleHRlbmRlZCB0YWcuCisgICAgcmV0dXJuICh1LmFzSW50NjQg
JiB+VGFnQml0VW5kZWZpbmVkKSA9PSBWYWx1ZU51bGw7Cit9CisKK2lubGluZSBib29sIEpTVmFs
dWU6OmlzQm9vbGVhbigpIGNvbnN0Cit7CisgICAgcmV0dXJuICh1LmFzSW50NjQgJiB+MSkgPT0g
VmFsdWVGYWxzZTsKK30KKworaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNDZWxsKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gISh1LmFzSW50NjQgJiBUYWdNYXNrKTsKK30KKworaW5saW5lIGJvb2wgSlNW
YWx1ZTo6aXNJbnQzMigpIGNvbnN0Cit7CisgICAgcmV0dXJuICh1LmFzSW50NjQgJiBUYWdUeXBl
TnVtYmVyKSA9PSBUYWdUeXBlTnVtYmVyOworfQorCitpbmxpbmUgaW50NjRfdCByZWludGVycHJl
dERvdWJsZVRvSW50NjQoZG91YmxlIHZhbHVlKQoreworICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8
aW50NjRfdD4odmFsdWUpOworfQoraW5saW5lIGRvdWJsZSByZWludGVycHJldEludDY0VG9Eb3Vi
bGUoaW50NjRfdCB2YWx1ZSkKK3sKKyAgICByZXR1cm4gYml0d2lzZV9jYXN0PGRvdWJsZT4odmFs
dWUpOworfQorCitBTFdBWVNfSU5MSU5FIEpTVmFsdWU6OkpTVmFsdWUoRW5jb2RlQXNEb3VibGVU
YWcsIGRvdWJsZSBkKQoreworICAgIHUuYXNJbnQ2NCA9IHJlaW50ZXJwcmV0RG91YmxlVG9JbnQ2
NChkKSArIERvdWJsZUVuY29kZU9mZnNldDsKK30KKworaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUo
aW50IGkpCit7CisgICAgdS5hc0ludDY0ID0gVGFnVHlwZU51bWJlciB8IHN0YXRpY19jYXN0PHVp
bnQzMl90PihpKTsKK30KKworaW5saW5lIGRvdWJsZSBKU1ZhbHVlOjphc0RvdWJsZSgpIGNvbnN0
Cit7CisgICAgQVNTRVJUKGlzRG91YmxlKCkpOworICAgIHJldHVybiByZWludGVycHJldEludDY0
VG9Eb3VibGUodS5hc0ludDY0IC0gRG91YmxlRW5jb2RlT2Zmc2V0KTsKK30KKworaW5saW5lIGJv
b2wgSlNWYWx1ZTo6aXNOdW1iZXIoKSBjb25zdAoreworICAgIHJldHVybiB1LmFzSW50NjQgJiBU
YWdUeXBlTnVtYmVyOworfQorCitBTFdBWVNfSU5MSU5FIEpTQ2VsbCogSlNWYWx1ZTo6YXNDZWxs
KCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNDZWxsKCkpOworICAgIHJldHVybiB1LnB0cjsKK30K
KworI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCisKK2lubGluZSBib29sIEpTVmFsdWU6OmlzU3Ry
aW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaXNDZWxsKCkgJiYgYXNDZWxsKCktPmlzU3RyaW5n
KCk7Cit9CisKK2lubGluZSBib29sIEpTVmFsdWU6OmlzUHJpbWl0aXZlKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gIWlzQ2VsbCgpIHx8IGFzQ2VsbCgpLT5pc1N0cmluZygpOworfQorCitpbmxpbmUg
Ym9vbCBKU1ZhbHVlOjppc0dldHRlclNldHRlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzQ2Vs
bCgpICYmIGFzQ2VsbCgpLT5pc0dldHRlclNldHRlcigpOworfQorCitpbmxpbmUgYm9vbCBKU1Zh
bHVlOjppc09iamVjdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzQ2VsbCgpICYmIGFzQ2VsbCgp
LT5pc09iamVjdCgpOworfQorCitpbmxpbmUgYm9vbCBKU1ZhbHVlOjpnZXRTdHJpbmcoRXhlY1N0
YXRlKiBleGVjLCBTdHJpbmcmIHMpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzQ2VsbCgpICYmIGFz
Q2VsbCgpLT5nZXRTdHJpbmcoZXhlYywgcyk7Cit9CisKK2lubGluZSBTdHJpbmcgSlNWYWx1ZTo6
Z2V0U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICByZXR1cm4gaXNDZWxsKCkg
PyBhc0NlbGwoKS0+Z2V0U3RyaW5nKGV4ZWMpIDogU3RyaW5nKCk7Cit9CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBCYXNlPiBTdHJpbmcgSGFuZGxlQ29udmVydGVyPEJhc2UsIFVua25vd24+OjpnZXRT
dHJpbmcoRXhlY1N0YXRlKiBleGVjKSBjb25zdAoreworICAgIHJldHVybiBqc1ZhbHVlKCkuZ2V0
U3RyaW5nKGV4ZWMpOworfQorCitpbmxpbmUgSlNPYmplY3QqIEpTVmFsdWU6OmdldE9iamVjdCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIGlzQ2VsbCgpID8gYXNDZWxsKCktPmdldE9iamVjdCgpIDog
MDsKK30KKworQUxXQVlTX0lOTElORSBib29sIEpTVmFsdWU6OmdldFVJbnQzMih1aW50MzJfdCYg
dikgY29uc3QKK3sKKyAgICBpZiAoaXNJbnQzMigpKSB7CisgICAgICAgIGludDMyX3QgaSA9IGFz
SW50MzIoKTsKKyAgICAgICAgdiA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihpKTsKKyAgICAgICAg
cmV0dXJuIGkgPj0gMDsKKyAgICB9CisgICAgaWYgKGlzRG91YmxlKCkpIHsKKyAgICAgICAgZG91
YmxlIGQgPSBhc0RvdWJsZSgpOworICAgICAgICB2ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGQp
OworICAgICAgICByZXR1cm4gdiA9PSBkOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K2lubGluZSBKU1ZhbHVlIEpTVmFsdWU6OnRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSogZXhlYywgUHJl
ZmVycmVkUHJpbWl0aXZlVHlwZSBwcmVmZXJyZWRUeXBlKSBjb25zdAoreworICAgIHJldHVybiBp
c0NlbGwoKSA/IGFzQ2VsbCgpLT50b1ByaW1pdGl2ZShleGVjLCBwcmVmZXJyZWRUeXBlKSA6IGFz
VmFsdWUoKTsKK30KKworaW5saW5lIGJvb2wgSlNWYWx1ZTo6Z2V0UHJpbWl0aXZlTnVtYmVyKEV4
ZWNTdGF0ZSogZXhlYywgZG91YmxlJiBudW1iZXIsIEpTVmFsdWUmIHZhbHVlKQoreworICAgIGlm
IChpc0ludDMyKCkpIHsKKyAgICAgICAgbnVtYmVyID0gYXNJbnQzMigpOworICAgICAgICB2YWx1
ZSA9ICp0aGlzOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgaWYgKGlzRG91Ymxl
KCkpIHsKKyAgICAgICAgbnVtYmVyID0gYXNEb3VibGUoKTsKKyAgICAgICAgdmFsdWUgPSAqdGhp
czsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGlmIChpc0NlbGwoKSkKKyAgICAg
ICAgcmV0dXJuIGFzQ2VsbCgpLT5nZXRQcmltaXRpdmVOdW1iZXIoZXhlYywgbnVtYmVyLCB2YWx1
ZSk7CisgICAgaWYgKGlzVHJ1ZSgpKSB7CisgICAgICAgIG51bWJlciA9IDEuMDsKKyAgICAgICAg
dmFsdWUgPSAqdGhpczsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGlmIChpc0Zh
bHNlKCkgfHwgaXNOdWxsKCkpIHsKKyAgICAgICAgbnVtYmVyID0gMC4wOworICAgICAgICB2YWx1
ZSA9ICp0aGlzOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgQVNTRVJUKGlzVW5k
ZWZpbmVkKCkpOworICAgIG51bWJlciA9IFFOYU47CisgICAgdmFsdWUgPSAqdGhpczsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworQUxXQVlTX0lOTElORSBkb3VibGUgSlNWYWx1ZTo6dG9OdW1iZXIo
RXhlY1N0YXRlKiBleGVjKSBjb25zdAoreworICAgIGlmIChpc0ludDMyKCkpCisgICAgICAgIHJl
dHVybiBhc0ludDMyKCk7CisgICAgaWYgKGlzRG91YmxlKCkpCisgICAgICAgIHJldHVybiBhc0Rv
dWJsZSgpOworICAgIHJldHVybiB0b051bWJlclNsb3dDYXNlKGV4ZWMpOworfQorCitpbmxpbmUg
SlNPYmplY3QqIEpTVmFsdWU6OnRvT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAg
ICByZXR1cm4gaXNDZWxsKCkgPyBhc0NlbGwoKS0+dG9PYmplY3QoZXhlYywgZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpKSA6IHRvT2JqZWN0U2xvd0Nhc2UoZXhlYywgZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpKTsKK30KKworaW5saW5lIEpTT2JqZWN0KiBKU1ZhbHVlOjp0b09iamVjdChF
eGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGlzQ2VsbCgpID8gYXNDZWxsKCktPnRvT2JqZWN0KGV4ZWMsIGdsb2JhbE9iamVj
dCkgOiB0b09iamVjdFNsb3dDYXNlKGV4ZWMsIGdsb2JhbE9iamVjdCk7Cit9CisKK2lubGluZSBi
b29sIEpTVmFsdWU6OmlzRnVuY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiBpc0NlbGwoKSAm
JiAoYXNDZWxsKCktPmluaGVyaXRzKCZKU0Z1bmN0aW9uOjpzX2luZm8pIHx8IGFzQ2VsbCgpLT5p
bmhlcml0cygmSW50ZXJuYWxGdW5jdGlvbjo6c19pbmZvKSk7Cit9CisKKy8vIHRoaXMgbWV0aG9k
IGlzIGhlcmUgdG8gYmUgYWZ0ZXIgdGhlIGlubGluZSBkZWNsYXJhdGlvbiBvZiBKU0NlbGw6Omlu
aGVyaXRzCitpbmxpbmUgYm9vbCBKU1ZhbHVlOjppbmhlcml0cyhjb25zdCBDbGFzc0luZm8qIGNs
YXNzSW5mbykgY29uc3QKK3sKKyAgICByZXR1cm4gaXNDZWxsKCkgJiYgYXNDZWxsKCktPmluaGVy
aXRzKGNsYXNzSW5mbyk7Cit9CisKK2lubGluZSBKU09iamVjdCogSlNWYWx1ZTo6dG9UaGlzT2Jq
ZWN0KEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICByZXR1cm4gaXNDZWxsKCkgPyBhc0Nl
bGwoKS0+bWV0aG9kVGFibGUoKS0+dG9UaGlzT2JqZWN0KGFzQ2VsbCgpLCBleGVjKSA6IHRvVGhp
c09iamVjdFNsb3dDYXNlKGV4ZWMpOworfQorCitpbmxpbmUgSlNWYWx1ZSBKU1ZhbHVlOjpnZXQo
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdAoreworICAg
IFByb3BlcnR5U2xvdCBzbG90KGFzVmFsdWUoKSk7CisgICAgcmV0dXJuIGdldChleGVjLCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOworfQorCitpbmxpbmUgSlNWYWx1ZSBKU1ZhbHVlOjpnZXQoRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3Qp
IGNvbnN0Cit7CisgICAgaWYgKFVOTElLRUxZKCFpc0NlbGwoKSkpIHsKKyAgICAgICAgSlNPYmpl
Y3QqIHByb3RvdHlwZSA9IHN5bnRoZXNpemVQcm90b3R5cGUoZXhlYyk7CisgICAgICAgIGlmICgh
cHJvdG90eXBlLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KSkKKyAg
ICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgICAgICByZXR1cm4gc2xvdC5nZXRW
YWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUpOworICAgIH0KKyAgICBKU0NlbGwqIGNlbGwgPSBhc0Nl
bGwoKTsKKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBpZiAoY2VsbC0+ZmFzdEdldE93blBy
b3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQorICAgICAgICAgICAgcmV0dXJu
IHNsb3QuZ2V0VmFsdWUoZXhlYywgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgSlNWYWx1ZSBwcm90
b3R5cGUgPSBhc09iamVjdChjZWxsKS0+cHJvdG90eXBlKCk7CisgICAgICAgIGlmICghcHJvdG90
eXBlLmlzT2JqZWN0KCkpCisgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICAg
ICAgY2VsbCA9IGFzT2JqZWN0KHByb3RvdHlwZSk7CisgICAgfQorfQorCitpbmxpbmUgSlNWYWx1
ZSBKU1ZhbHVlOjpnZXQoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpIGNv
bnN0Cit7CisgICAgUHJvcGVydHlTbG90IHNsb3QoYXNWYWx1ZSgpKTsKKyAgICByZXR1cm4gZ2V0
KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CisKK2lubGluZSBKU1ZhbHVlIEpTVmFsdWU6
OmdldChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
JiBzbG90KSBjb25zdAoreworICAgIGlmIChVTkxJS0VMWSghaXNDZWxsKCkpKSB7CisgICAgICAg
IEpTT2JqZWN0KiBwcm90b3R5cGUgPSBzeW50aGVzaXplUHJvdG90eXBlKGV4ZWMpOworICAgICAg
ICBpZiAoIXByb3RvdHlwZS0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xv
dCkpCisgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICAgICAgcmV0dXJuIHNs
b3QuZ2V0VmFsdWUoZXhlYywgcHJvcGVydHlOYW1lKTsKKyAgICB9CisgICAgSlNDZWxsKiBjZWxs
ID0gY29uc3RfY2FzdDxKU0NlbGwqPihhc0NlbGwoKSk7CisgICAgd2hpbGUgKHRydWUpIHsKKyAg
ICAgICAgaWYgKGNlbGwtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgo
Y2VsbCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KSkKKyAgICAgICAgICAgIHJldHVybiBzbG90
LmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFtZSk7CisgICAgICAgIEpTVmFsdWUgcHJvdG90eXBl
ID0gYXNPYmplY3QoY2VsbCktPnByb3RvdHlwZSgpOworICAgICAgICBpZiAoIXByb3RvdHlwZS5p
c09iamVjdCgpKQorICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgICAgIGNl
bGwgPSBwcm90b3R5cGUuYXNDZWxsKCk7CisgICAgfQorfQorCitpbmxpbmUgdm9pZCBKU1ZhbHVl
OjpwdXQoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
IHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgaWYgKFVOTElLRUxZKCFpc0Nl
bGwoKSkpIHsKKyAgICAgICAgcHV0VG9QcmltaXRpdmUoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1
ZSwgc2xvdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXNDZWxsKCktPm1ldGhvZFRh
YmxlKCktPnB1dChhc0NlbGwoKSwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7Cit9
CisKK2lubGluZSB2b2lkIEpTVmFsdWU6OnB1dEJ5SW5kZXgoRXhlY1N0YXRlKiBleGVjLCB1bnNp
Z25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCit7Cisg
ICAgaWYgKFVOTElLRUxZKCFpc0NlbGwoKSkpIHsKKyAgICAgICAgcHV0VG9QcmltaXRpdmVCeUlu
ZGV4KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICBhc0NlbGwoKS0+bWV0aG9kVGFibGUoKS0+cHV0QnlJbmRleChhc0Nl
bGwoKSwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOworfQorCitpbmxp
bmUgSlNWYWx1ZSBKU1ZhbHVlOjpzdHJ1Y3R1cmVPclVuZGVmaW5lZCgpIGNvbnN0Cit7CisgICAg
aWYgKGlzQ2VsbCgpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZShhc0NlbGwoKS0+c3RydWN0dXJl
KCkpOworICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworfQorCisvLyBFQ01BIDExLjkuMworaW5s
aW5lIGJvb2wgSlNWYWx1ZTo6ZXF1YWwoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHYxLCBKU1Zh
bHVlIHYyKQoreworICAgIGlmICh2MS5pc0ludDMyKCkgJiYgdjIuaXNJbnQzMigpKQorICAgICAg
ICByZXR1cm4gdjEgPT0gdjI7CisKKyAgICByZXR1cm4gZXF1YWxTbG93Q2FzZShleGVjLCB2MSwg
djIpOworfQorCitBTFdBWVNfSU5MSU5FIGJvb2wgSlNWYWx1ZTo6ZXF1YWxTbG93Q2FzZUlubGlu
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCit7CisgICAgZG8gewor
ICAgICAgICBpZiAodjEuaXNOdW1iZXIoKSAmJiB2Mi5pc051bWJlcigpKQorICAgICAgICAgICAg
cmV0dXJuIHYxLmFzTnVtYmVyKCkgPT0gdjIuYXNOdW1iZXIoKTsKKworICAgICAgICBib29sIHMx
ID0gdjEuaXNTdHJpbmcoKTsKKyAgICAgICAgYm9vbCBzMiA9IHYyLmlzU3RyaW5nKCk7CisgICAg
ICAgIGlmIChzMSAmJiBzMikKKyAgICAgICAgICAgIHJldHVybiBhc1N0cmluZyh2MSktPnZhbHVl
KGV4ZWMpID09IGFzU3RyaW5nKHYyKS0+dmFsdWUoZXhlYyk7CisKKyAgICAgICAgaWYgKHYxLmlz
VW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAgICAgIGlmICh2Mi5pc1VuZGVmaW5lZE9yTnVs
bCgpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgaWYgKCF2Mi5p
c0NlbGwoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICByZXR1
cm4gdjIuYXNDZWxsKCktPnN0cnVjdHVyZSgpLT5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkKGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAodjIuaXNV
bmRlZmluZWRPck51bGwoKSkgeworICAgICAgICAgICAgaWYgKCF2MS5pc0NlbGwoKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICByZXR1cm4gdjEuYXNDZWxsKCkt
PnN0cnVjdHVyZSgpLT5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkKGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAodjEuaXNPYmplY3QoKSkgeworICAg
ICAgICAgICAgaWYgKHYyLmlzT2JqZWN0KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHYxID09
IHYyOworICAgICAgICAgICAgSlNWYWx1ZSBwMSA9IHYxLnRvUHJpbWl0aXZlKGV4ZWMpOworICAg
ICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgIHYxID0gcDE7CisgICAgICAgICAgICBpZiAodjEuaXNJbnQz
MigpICYmIHYyLmlzSW50MzIoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdjEgPT0gdjI7Cisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh2Mi5pc09iamVj
dCgpKSB7CisgICAgICAgICAgICBKU1ZhbHVlIHAyID0gdjIudG9QcmltaXRpdmUoZXhlYyk7Cisg
ICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgdjIgPSBwMjsKKyAgICAgICAgICAgIGlmICh2MS5pc0lu
dDMyKCkgJiYgdjIuaXNJbnQzMigpKQorICAgICAgICAgICAgICAgIHJldHVybiB2MSA9PSB2MjsK
KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHMxIHx8IHMy
KSB7CisgICAgICAgICAgICBkb3VibGUgZDEgPSB2MS50b051bWJlcihleGVjKTsKKyAgICAgICAg
ICAgIGRvdWJsZSBkMiA9IHYyLnRvTnVtYmVyKGV4ZWMpOworICAgICAgICAgICAgcmV0dXJuIGQx
ID09IGQyOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHYxLmlzQm9vbGVhbigpKSB7CisgICAg
ICAgICAgICBpZiAodjIuaXNOdW1iZXIoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8ZG91YmxlPih2MS5hc0Jvb2xlYW4oKSkgPT0gdjIuYXNOdW1iZXIoKTsKKyAgICAgICAg
fSBlbHNlIGlmICh2Mi5pc0Jvb2xlYW4oKSkgeworICAgICAgICAgICAgaWYgKHYxLmlzTnVtYmVy
KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHYxLmFzTnVtYmVyKCkgPT0gc3RhdGljX2Nhc3Q8
ZG91YmxlPih2Mi5hc0Jvb2xlYW4oKSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gdjEg
PT0gdjI7CisgICAgfSB3aGlsZSAodHJ1ZSk7Cit9CisKKy8vIEVDTUEgMTEuOS4zCitBTFdBWVNf
SU5MSU5FIGJvb2wgSlNWYWx1ZTo6c3RyaWN0RXF1YWxTbG93Q2FzZUlubGluZShFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCit7CisgICAgQVNTRVJUKHYxLmlzQ2VsbCgp
ICYmIHYyLmlzQ2VsbCgpKTsKKworICAgIGlmICh2MS5hc0NlbGwoKS0+aXNTdHJpbmcoKSAmJiB2
Mi5hc0NlbGwoKS0+aXNTdHJpbmcoKSkKKyAgICAgICAgcmV0dXJuIGFzU3RyaW5nKHYxKS0+dmFs
dWUoZXhlYykgPT0gYXNTdHJpbmcodjIpLT52YWx1ZShleGVjKTsKKworICAgIHJldHVybiB2MSA9
PSB2MjsKK30KKworaW5saW5lIGJvb2wgSlNWYWx1ZTo6c3RyaWN0RXF1YWwoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQoreworICAgIGlmICh2MS5pc0ludDMyKCkgJiYg
djIuaXNJbnQzMigpKQorICAgICAgICByZXR1cm4gdjEgPT0gdjI7CisKKyAgICBpZiAodjEuaXNO
dW1iZXIoKSAmJiB2Mi5pc051bWJlcigpKQorICAgICAgICByZXR1cm4gdjEuYXNOdW1iZXIoKSA9
PSB2Mi5hc051bWJlcigpOworCisgICAgaWYgKCF2MS5pc0NlbGwoKSB8fCAhdjIuaXNDZWxsKCkp
CisgICAgICAgIHJldHVybiB2MSA9PSB2MjsKKworICAgIHJldHVybiBzdHJpY3RFcXVhbFNsb3dD
YXNlSW5saW5lKGV4ZWMsIHYxLCB2Mik7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5k
aWYgLy8gSlNWYWx1ZUlubGluZXNfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgJKHJldmlzaW9uIDE0MDE5NikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDkgKzI3LDkgQEAKICNkZWZpbmUgSlNWYWx1ZUlubGluZXNfaAogCiAjaW5j
bHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNs
dWRlICJKU0NlbGxJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgotI2luY2x1ZGUg
IkpTVmFsdWUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCShyZXZpc2lvbiAxNDAzNDYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAkod29ya2luZyBjb3B5KQpA
QCAtMzYsOCArMzYsOCBAQAogI2luY2x1ZGUgIkludHJpbnNpYy5oIgogI2luY2x1ZGUgIkpJVFRo
dW5rcy5oIgogI2luY2x1ZGUgIkpJVFRodW5rcy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIK
ICNpbmNsdWRlICJKU0xvY2suaCIKLSNpbmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiTExJ
bnREYXRhLmgiCiAjaW5jbHVkZSAiTnVtZXJpY1N0cmluZ3MuaCIKICNpbmNsdWRlICJQcm9maWxl
ckRhdGFiYXNlLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAxNDAzNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYg
KzQ5LDcgQEAKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTQWN0aXZhdGlv
bi5oIgogI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDYWxsYmFja0NvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAi
SlNDYWxsYmFja0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDYWxsYmFja09iamVjdC5oIgpAQCAt
NTcsNyArNTgsNiBAQAogI2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkpTTmFtZVNjb3Bl
LmgiCiAjaW5jbHVkZSAiSlNPTk9iamVjdC5oIgotI2luY2x1ZGUgIkpTVmFsdWVJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiSlNXaXRoU2NvcGUuaCIKICNpbmNsdWRlICJMZWdhY3lQcm9maWxlci5oIgog
I2luY2x1ZGUgIkxvb2t1cC5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oCShyZXZpc2lvbiAxNDAzNDYp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9u
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAjaWZuZGVmIEpTR2xvYmFsT2Jq
ZWN0RnVuY3Rpb25zX2gKICNkZWZpbmUgSlNHbG9iYWxPYmplY3RGdW5jdGlvbnNfaAogCi0jaW5j
bHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlIDx3dGYv
dW5pY29kZS9Vbmljb2RlLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdKb2luZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0pvaW5lci5oCShyZXZpc2lvbiAxNDAzNDYp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0pvaW5lci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIEpTU3RyaW5nSm9pbmVyX2gKICNk
ZWZpbmUgSlNTdHJpbmdKb2luZXJfaAogCi0jaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUg
IkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
VmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
VmFsdWUuY3BwCShyZXZpc2lvbiAxNDAzNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1ZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwzMjAgKzAsMCBAQAotLyoKLSAq
ICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMSBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQot
ICogIENvcHlyaWdodCAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQotICogIENv
cHlyaWdodCAoQykgMjAwMywgMjAwNywgMjAwOCwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAq
Ci0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgotICoKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
SlNWYWx1ZS5oIgotCi0jaW5jbHVkZSAiQm9vbGVhbkNvbnN0cnVjdG9yLmgiCi0jaW5jbHVkZSAi
Qm9vbGVhblByb3RvdHlwZS5oIgotI2luY2x1ZGUgIkVycm9yLmgiCi0jaW5jbHVkZSAiRXhjZXB0
aW9uSGVscGVycy5oIgotI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgotI2luY2x1ZGUgIkpTR2xv
YmFsT2JqZWN0LmgiCi0jaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgotI2luY2x1ZGUgIkpTTm90QW5P
YmplY3QuaCIKLSNpbmNsdWRlICJKU1ZhbHVlSW5saW5lcy5oIgotI2luY2x1ZGUgIk51bWJlck9i
amVjdC5oIgotI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL1N0cmlu
Z0V4dHJhcy5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLQotc3RhdGljIGNvbnN0IGRvdWJsZSBEMzIg
PSA0Mjk0OTY3Mjk2LjA7Ci0KLS8vIEVDTUEgOS40Ci1kb3VibGUgSlNWYWx1ZTo6dG9JbnRlZ2Vy
KEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKLXsKLSAgICBpZiAoaXNJbnQzMigpKQotICAgICAgICBy
ZXR1cm4gYXNJbnQzMigpOwotICAgIGRvdWJsZSBkID0gdG9OdW1iZXIoZXhlYyk7Ci0gICAgcmV0
dXJuIGlzbmFuKGQpID8gMC4wIDogdHJ1bmMoZCk7Ci19Ci0KLWRvdWJsZSBKU1ZhbHVlOjp0b0lu
dGVnZXJQcmVzZXJ2ZU5hTihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Ci17Ci0gICAgaWYgKGlzSW50
MzIoKSkKLSAgICAgICAgcmV0dXJuIGFzSW50MzIoKTsKLSAgICByZXR1cm4gdHJ1bmModG9OdW1i
ZXIoZXhlYykpOwotfQotCi1kb3VibGUgSlNWYWx1ZTo6dG9OdW1iZXJTbG93Q2FzZShFeGVjU3Rh
dGUqIGV4ZWMpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKCFpc0ludDMyKCkgJiYgIWlzRG91YmxlKCkp
OwotICAgIGlmIChpc0NlbGwoKSkKLSAgICAgICAgcmV0dXJuIGFzQ2VsbCgpLT50b051bWJlcihl
eGVjKTsKLSAgICBpZiAoaXNUcnVlKCkpCi0gICAgICAgIHJldHVybiAxLjA7Ci0gICAgcmV0dXJu
IGlzVW5kZWZpbmVkKCkgPyBRTmFOIDogMDsgLy8gbnVsbCBhbmQgZmFsc2UgYm90aCBjb252ZXJ0
IHRvIDAuCi19Ci0KLUpTT2JqZWN0KiBKU1ZhbHVlOjp0b09iamVjdFNsb3dDYXNlKEV4ZWNTdGF0
ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKLXsKLSAgICBBU1NF
UlQoIWlzQ2VsbCgpKTsKLQotICAgIGlmIChpc0ludDMyKCkgfHwgaXNEb3VibGUoKSkKLSAgICAg
ICAgcmV0dXJuIGNvbnN0cnVjdE51bWJlcihleGVjLCBnbG9iYWxPYmplY3QsIGFzVmFsdWUoKSk7
Ci0gICAgaWYgKGlzVHJ1ZSgpIHx8IGlzRmFsc2UoKSkKLSAgICAgICAgcmV0dXJuIGNvbnN0cnVj
dEJvb2xlYW5Gcm9tSW1tZWRpYXRlQm9vbGVhbihleGVjLCBnbG9iYWxPYmplY3QsIGFzVmFsdWUo
KSk7Ci0KLSAgICBBU1NFUlQoaXNVbmRlZmluZWRPck51bGwoKSk7Ci0gICAgdGhyb3dFcnJvcihl
eGVjLCBjcmVhdGVOb3RBbk9iamVjdEVycm9yKGV4ZWMsICp0aGlzKSk7Ci0gICAgcmV0dXJuIEpT
Tm90QW5PYmplY3Q6OmNyZWF0ZShleGVjKTsKLX0KLQotSlNPYmplY3QqIEpTVmFsdWU6OnRvVGhp
c09iamVjdFNsb3dDYXNlKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKLXsKLSAgICBBU1NFUlQoIWlz
Q2VsbCgpKTsKLQotICAgIGlmIChpc0ludDMyKCkgfHwgaXNEb3VibGUoKSkKLSAgICAgICAgcmV0
dXJuIGNvbnN0cnVjdE51bWJlcihleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGFz
VmFsdWUoKSk7Ci0gICAgaWYgKGlzVHJ1ZSgpIHx8IGlzRmFsc2UoKSkKLSAgICAgICAgcmV0dXJu
IGNvbnN0cnVjdEJvb2xlYW5Gcm9tSW1tZWRpYXRlQm9vbGVhbihleGVjLCBleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCksIGFzVmFsdWUoKSk7Ci0gICAgQVNTRVJUKGlzVW5kZWZpbmVkT3JOdWxs
KCkpOwotICAgIHJldHVybiBleGVjLT5nbG9iYWxUaGlzVmFsdWUoKTsKLX0KLQotSlNPYmplY3Qq
IEpTVmFsdWU6OnN5bnRoZXNpemVQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjKSBjb25zdAotewot
ICAgIGlmIChpc0NlbGwoKSkgewotICAgICAgICBBU1NFUlQoaXNTdHJpbmcoKSk7Ci0gICAgICAg
IHJldHVybiBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnN0cmluZ1Byb3RvdHlwZSgpOwot
ICAgIH0KLQotICAgIGlmIChpc051bWJlcigpKQotICAgICAgICByZXR1cm4gZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpLT5udW1iZXJQcm90b3R5cGUoKTsKLSAgICBpZiAoaXNCb29sZWFuKCkp
Ci0gICAgICAgIHJldHVybiBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmJvb2xlYW5Qcm90
b3R5cGUoKTsKLQotICAgIEFTU0VSVChpc1VuZGVmaW5lZE9yTnVsbCgpKTsKLSAgICB0aHJvd0Vy
cm9yKGV4ZWMsIGNyZWF0ZU5vdEFuT2JqZWN0RXJyb3IoZXhlYywgKnRoaXMpKTsKLSAgICByZXR1
cm4gSlNOb3RBbk9iamVjdDo6Y3JlYXRlKGV4ZWMpOwotfQotCi0vLyBFQ01BIDguNy4yCi12b2lk
IEpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQotewotICAg
IEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKLQotICAgIHVu
c2lnbmVkIGluZGV4ID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTsKLSAgICBpZiAoaW5kZXggIT0g
UHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KSB7Ci0gICAgICAgIHB1dFRvUHJpbWl0aXZlQnlJbmRl
eChleGVjLCBpbmRleCwgdmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgLy8gQ2hlY2sgaWYgdGhlcmUgYXJlIGFueSBzZXR0ZXJzIG9yIGdl
dHRlcnMgaW4gdGhlIHByb3RvdHlwZSBjaGFpbgotICAgIEpTT2JqZWN0KiBvYmogPSBzeW50aGVz
aXplUHJvdG90eXBlKGV4ZWMpOwotICAgIEpTVmFsdWUgcHJvdG90eXBlOwotICAgIGlmIChwcm9w
ZXJ0eU5hbWUgIT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnVuZGVyc2NvcmVQcm90bykgewotICAg
ICAgICBmb3IgKDsgIW9iai0+c3RydWN0dXJlKCktPmhhc1JlYWRPbmx5T3JHZXR0ZXJTZXR0ZXJQ
cm9wZXJ0aWVzRXhjbHVkaW5nUHJvdG8oKTsgb2JqID0gYXNPYmplY3QocHJvdG90eXBlKSkgewot
ICAgICAgICAgICAgcHJvdG90eXBlID0gb2JqLT5wcm90b3R5cGUoKTsKLSAgICAgICAgICAgIGlm
IChwcm90b3R5cGUuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoc2xvdC5pc1N0cmlj
dE1vZGUoKSkKLSAgICAgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0
TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBmb3IgKDsgOyBvYmogPSBh
c09iamVjdChwcm90b3R5cGUpKSB7Ci0gICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7Ci0gICAg
ICAgIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZTsKLSAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0
ID0gb2JqLT5zdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmli
dXRlcywgc3BlY2lmaWNWYWx1ZSk7Ci0gICAgICAgIGlmIChvZmZzZXQgIT0gaW52YWxpZE9mZnNl
dCkgewotICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBSZWFkT25seSkgewotICAgICAgICAg
ICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQotICAgICAgICAgICAgICAgICAgICB0aHJv
d0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9w
ZXJ0eVdyaXRlRXJyb3IpKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIEpTVmFsdWUgZ3MgPSBvYmotPmdldERpcmVjdChvZmZzZXQpOwotICAg
ICAgICAgICAgaWYgKGdzLmlzR2V0dGVyU2V0dGVyKCkpIHsKLSAgICAgICAgICAgICAgICBKU09i
amVjdCogc2V0dGVyRnVuYyA9IGFzR2V0dGVyU2V0dGVyKGdzKS0+c2V0dGVyKCk7ICAgICAgICAK
LSAgICAgICAgICAgICAgICBpZiAoIXNldHRlckZ1bmMpIHsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICB0aHJvd0Vy
cm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoInNldHRpbmcgYSBw
cm9wZXJ0eSB0aGF0IGhhcyBvbmx5IGEgZ2V0dGVyIikpKTsKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
ICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICAgICAgICAgICAgICBDYWxsVHlwZSBjYWxsVHlw
ZSA9IHNldHRlckZ1bmMtPm1ldGhvZFRhYmxlKCktPmdldENhbGxEYXRhKHNldHRlckZ1bmMsIGNh
bGxEYXRhKTsKLSAgICAgICAgICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwotICAg
ICAgICAgICAgICAgIGFyZ3MuYXBwZW5kKHZhbHVlKTsKLQotICAgICAgICAgICAgICAgIC8vIElm
IHRoaXMgaXMgV2ViQ29yZSdzIGdsb2JhbCBvYmplY3QgdGhlbiB3ZSBuZWVkIHRvIHN1YnN0aXR1
dGUgdGhlIHNoZWxsLgotICAgICAgICAgICAgICAgIGNhbGwoZXhlYywgc2V0dGVyRnVuYywgY2Fs
bFR5cGUsIGNhbGxEYXRhLCAqdGhpcywgYXJncyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBJZiB0aGVyZSdzIGFuIGV4aXN0aW5nIHBy
b3BlcnR5IG9uIHRoZSBvYmplY3Qgb3Igb25lIG9mIGl0cyAKLSAgICAgICAgICAgIC8vIHByb3Rv
dHlwZXMgaXQgc2hvdWxkIGJlIHJlcGxhY2VkLCBzbyBicmVhayBoZXJlLgotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAgICBwcm90b3R5cGUgPSBvYmotPnByb3RvdHlwZSgp
OwotICAgICAgICBpZiAocHJvdG90eXBlLmlzTnVsbCgpKQotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgfQotICAgIAotICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQotICAgICAgICB0aHJvd1R5
cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwotICAg
IHJldHVybjsKLX0KLQotdm9pZCBKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZUJ5SW5kZXgoRXhlY1N0
YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hv
dWxkVGhyb3cpCi17Ci0gICAgaWYgKHByb3BlcnR5TmFtZSA+IE1BWF9BUlJBWV9JTkRFWCkgewot
ICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChzaG91bGRUaHJvdyk7Ci0gICAgICAgIHB1dFRv
UHJpbWl0aXZlKGV4ZWMsIElkZW50aWZpZXI6OmZyb20oZXhlYywgcHJvcGVydHlOYW1lKSwgdmFs
dWUsIHNsb3QpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIGlmIChzeW50aGVz
aXplUHJvdG90eXBlKGV4ZWMpLT5hdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlRm9y
UHJvdG90eXBlKGV4ZWMsICp0aGlzLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdykp
Ci0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBpZiAoc2hvdWxkVGhyb3cpCi0gICAgICAgIHRo
cm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7
Ci19Ci0KLXZvaWQgSlNWYWx1ZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAotewotICAg
IGlmICghKnRoaXMpCi0gICAgICAgIG91dC5wcmludCgiPEpTVmFsdWUoKT4iKTsKLSAgICBlbHNl
IGlmIChpc0ludDMyKCkpCi0gICAgICAgIG91dC5wcmludGYoIkludDMyOiAlZCIsIGFzSW50MzIo
KSk7Ci0gICAgZWxzZSBpZiAoaXNEb3VibGUoKSkgewotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAg
ICAgIG91dC5wcmludGYoIkRvdWJsZTogJWxsZCwgJWxmIiwgKGxvbmcgbG9uZylyZWludGVycHJl
dERvdWJsZVRvSW50NjQoYXNEb3VibGUoKSksIGFzRG91YmxlKCkpOwotI2Vsc2UKLSAgICAgICAg
dW5pb24gewotICAgICAgICAgICAgZG91YmxlIGFzRG91YmxlOwotICAgICAgICAgICAgdWludDMy
X3QgYXNUd29JbnQzMnNbMl07Ci0gICAgICAgIH0gdTsKLSAgICAgICAgdS5hc0RvdWJsZSA9IGFz
RG91YmxlKCk7Ci0gICAgICAgIG91dC5wcmludGYoIkRvdWJsZTogJTA4eDolMDh4LCAlbGYiLCB1
LmFzVHdvSW50MzJzWzFdLCB1LmFzVHdvSW50MzJzWzBdLCBhc0RvdWJsZSgpKTsKLSNlbmRpZgot
ICAgIH0gZWxzZSBpZiAoaXNDZWxsKCkpIHsKLSAgICAgICAgaWYgKGFzQ2VsbCgpLT5pbmhlcml0
cygmU3RydWN0dXJlOjpzX2luZm8pKSB7Ci0gICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IGpzQ2FzdDxTdHJ1Y3R1cmUqPihhc0NlbGwoKSk7Ci0gICAgICAgICAgICBvdXQucHJpbnQo
Ci0gICAgICAgICAgICAgICAgIlN0cnVjdHVyZTogIiwgUmF3UG9pbnRlcihzdHJ1Y3R1cmUpLCAi
OiAiLCBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLT5jbGFzc05hbWUsCi0gICAgICAgICAgICAgICAg
IiwgIiwgSW5kZXhpbmdUeXBlRHVtcChzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZUluY2x1ZGluZ0hp
c3RvcnkoKSkpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgb3V0LnByaW50KCJDZWxs
OiAiLCBSYXdQb2ludGVyKGFzQ2VsbCgpKSk7Ci0gICAgICAgICAgICBpZiAoaXNPYmplY3QoKSAm
JiBhc09iamVjdCgqdGhpcyktPmJ1dHRlcmZseSgpKQotICAgICAgICAgICAgICAgIG91dC5wcmlu
dCgiLT4iLCBSYXdQb2ludGVyKGFzT2JqZWN0KCp0aGlzKS0+YnV0dGVyZmx5KCkpKTsKLSAgICAg
ICAgICAgIG91dC5wcmludCgKLSAgICAgICAgICAgICAgICAiICgiLCBSYXdQb2ludGVyKGFzQ2Vs
bCgpLT5zdHJ1Y3R1cmUoKSksICI6ICIsIGFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZv
KCktPmNsYXNzTmFtZSwKLSAgICAgICAgICAgICAgICAiLCAiLCBJbmRleGluZ1R5cGVEdW1wKGFz
Q2VsbCgpLT5zdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlSW5jbHVkaW5nSGlzdG9yeSgpKSwgIiki
KTsKLSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoaXNUcnVlKCkpCi0gICAgICAgIG91dC5wcmlu
dCgiVHJ1ZSIpOwotICAgIGVsc2UgaWYgKGlzRmFsc2UoKSkKLSAgICAgICAgb3V0LnByaW50KCJG
YWxzZSIpOwotICAgIGVsc2UgaWYgKGlzTnVsbCgpKQotICAgICAgICBvdXQucHJpbnQoIk51bGwi
KTsKLSAgICBlbHNlIGlmIChpc1VuZGVmaW5lZCgpKQotICAgICAgICBvdXQucHJpbnQoIlVuZGVm
aW5lZCIpOwotICAgIGVsc2UKLSAgICAgICAgb3V0LnByaW50KCJJTlZBTElEIik7Ci19Ci0KLS8v
IFRoaXMgaW4gdGhlIFRvSW50MzIgb3BlcmF0aW9uIGlzIGRlZmluZWQgaW4gc2VjdGlvbiA5LjUg
b2YgdGhlIEVDTUEtMjYyIHNwZWMuCi0vLyBOb3RlIHRoYXQgdGhpcyBvcGVyYXRpb24gaXMgaWRl
bnRpY2FsIHRvIFRvVUludDMyIG90aGVyIHRoYW4gdG8gaW50ZXJwcmV0YXRpb24KLS8vIG9mIHRo
ZSByZXN1bHRpbmcgYml0LXBhdHRlcm4gKGFzIHN1Y2ggdGhpcyBtZXRvZCBpcyBhbHNvIGNhbGxl
ZCB0byBpbXBsZW1lbnQKLS8vIFRvVUludDMyKS4KLS8vCi0vLyBUaGUgb3BlcmF0aW9uIGNhbiBi
ZSBkZXNjaWJlZCBhcyByb3VuZCB0b3dhcmRzIHplcm8sIHRoZW4gc2VsZWN0IHRoZSAzMiBsZWFz
dAotLy8gYml0cyBvZiB0aGUgcmVzdWx0aW5nIHZhbHVlIGluIDJzLWNvbXBsZW1lbnQgcmVwcmVz
ZW50YXRpb24uCi1pbnQzMl90IHRvSW50MzIoZG91YmxlIG51bWJlcikKLXsKLSAgICBpbnQ2NF90
IGJpdHMgPSBXVEY6OmJpdHdpc2VfY2FzdDxpbnQ2NF90PihudW1iZXIpOwotICAgIGludDMyX3Qg
ZXhwID0gKHN0YXRpY19jYXN0PGludDMyX3Q+KGJpdHMgPj4gNTIpICYgMHg3ZmYpIC0gMHgzZmY7
Ci0KLSAgICAvLyBJZiBleHBvbmVudCA8IDAgdGhlcmUgd2lsbCBiZSBubyBiaXRzIHRvIHRoZSBs
ZWZ0IG9mIHRoZSBkZWNpbWFsIHBvaW50Ci0gICAgLy8gYWZ0ZXIgcm91bmRpbmc7IGlmIHRoZSBl
eHBvbmVudCBpcyA+IDgzIHRoZW4gbm8gYml0cyBvZiBwcmVjaXNpb24gY2FuIGJlCi0gICAgLy8g
bGVmdCBpbiB0aGUgbG93IDMyLWJpdCByYW5nZSBvZiB0aGUgcmVzdWx0IChJRUVFLTc1NCBkb3Vi
bGVzIGhhdmUgNTIgYml0cwotICAgIC8vIG9mIGZyYWN0aW9uYWwgcHJlY2lzaW9uKS4KLSAgICAv
LyBOb3RlIHRoaXMgY2FzZSBoYW5kbGVzIDAsIC0wLCBhbmQgYWxsIGluZmludGUsIE5hTiwgJiBk
ZW5vcm1hbCB2YWx1ZS4gCi0gICAgaWYgKGV4cCA8IDAgfHwgZXhwID4gODMpCi0gICAgICAgIHJl
dHVybiAwOwotCi0gICAgLy8gU2VsZWN0IHRoZSBhcHByb3ByaWF0ZSAzMi1iaXRzIGZyb20gdGhl
IGZsb2F0aW5nIHBvaW50IG1hbnRpc3NhLiAgSWYgdGhlCi0gICAgLy8gZXhwb25lbnQgaXMgNTIg
dGhlbiB0aGUgYml0cyB3ZSBuZWVkIHRvIHNlbGVjdCBhcmUgYWxyZWFkeSBhbGlnbmVkIHRvIHRo
ZQotICAgIC8vIGxvd2VzdCBiaXRzIG9mIHRoZSA2NC1iaXQgaW50ZWdlciByZXByZXNlbnRhdGlv
biBvZiB0Z2hlIG51bWJlciwgbm8gbmVlZAotICAgIC8vIHRvIHNoaWZ0LiAgSWYgdGhlIGV4cG9u
ZW50IGlzIGdyZWF0ZXIgdGhhbiA1MiB3ZSBuZWVkIHRvIHNoaWZ0IHRoZSB2YWx1ZQotICAgIC8v
IGxlZnQgYnkgKGV4cCAtIDUyKSwgaWYgdGhlIHZhbHVlIGlzIGxlc3MgdGhhbiA1MiB3ZSBuZWVk
IHRvIHNoaWZ0IHJpZ2h0Ci0gICAgLy8gYWNjb3JkaW5nbHkuCi0gICAgaW50MzJfdCByZXN1bHQg
PSAoZXhwID4gNTIpCi0gICAgICAgID8gc3RhdGljX2Nhc3Q8aW50MzJfdD4oYml0cyA8PCAoZXhw
IC0gNTIpKQotICAgICAgICA6IHN0YXRpY19jYXN0PGludDMyX3Q+KGJpdHMgPj4gKDUyIC0gZXhw
KSk7Ci0KLSAgICAvLyBJRUVFLTc1NCBkb3VibGUgcHJlY2lzaW9uIHZhbHVlcyBhcmUgc3RvcmVk
IG9taXR0aW5nIGFuIGltcGxpY2l0IDEgYmVmb3JlCi0gICAgLy8gdGhlIGRlY2ltYWwgcG9pbnQ7
IHdlIG5lZWQgdG8gcmVpbnNlcnQgdGhpcyBub3cuICBXZSBtYXkgYWxzbyB0aGUgc2hpZnRlZAot
ICAgIC8vIGludmFsaWQgYml0cyBpbnRvIHRoZSByZXN1bHQgdGhhdCBhcmUgbm90IGEgcGFydCBv
ZiB0aGUgbWFudGlzc2EgKHRoZSBzaWduCi0gICAgLy8gYW5kIGV4cG9uZW50IGJpdHMgZnJvbSB0
aGUgZmxvYXRpbmdwb2ludCByZXByZXNlbnRhdGlvbik7IG1hc2sgdGhlc2Ugb3V0LgotICAgIGlm
IChleHAgPCAzMikgewotICAgICAgICBpbnQzMl90IG1pc3NpbmdPbmUgPSAxIDw8IGV4cDsKLSAg
ICAgICAgcmVzdWx0ICY9IG1pc3NpbmdPbmUgLSAxOwotICAgICAgICByZXN1bHQgKz0gbWlzc2lu
Z09uZTsKLSAgICB9Ci0KLSAgICAvLyBJZiB0aGUgaW5wdXQgdmFsdWUgd2FzIG5lZ2F0aXZlICh3
ZSBjb3VsZCB0ZXN0IGVpdGhlciAnbnVtYmVyJyBvciAnYml0cycsCi0gICAgLy8gYnV0IHRlc3Rp
bmcgJ2JpdHMnIGlzIGxpa2VseSBmYXN0ZXIpIGludmVydCB0aGUgcmVzdWx0IGFwcHJvcHJpYXRl
bHkuCi0gICAgcmV0dXJuIGJpdHMgPCAwID8gLXJlc3VsdCA6IHJlc3VsdDsKLX0KLQotYm9vbCBK
U1ZhbHVlOjppc1ZhbGlkQ2FsbGVlKCkKLXsKLSAgICByZXR1cm4gYXNPYmplY3QoYXNDZWxsKCkp
LT5nbG9iYWxPYmplY3QoKTsKLX0KLQotSlNTdHJpbmcqIEpTVmFsdWU6OnRvU3RyaW5nU2xvd0Nh
c2UoRXhlY1N0YXRlKiBleGVjKSBjb25zdAotewotICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKLSAgICBBU1NFUlQoIWlzU3RyaW5nKCkpOwotICAgIGlm
IChpc0ludDMyKCkpCi0gICAgICAgIHJldHVybiBqc1N0cmluZygmZ2xvYmFsRGF0YSwgZ2xvYmFs
RGF0YS5udW1lcmljU3RyaW5ncy5hZGQoYXNJbnQzMigpKSk7Ci0gICAgaWYgKGlzRG91YmxlKCkp
Ci0gICAgICAgIHJldHVybiBqc1N0cmluZygmZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS5udW1lcmlj
U3RyaW5ncy5hZGQoYXNEb3VibGUoKSkpOwotICAgIGlmIChpc1RydWUoKSkKLSAgICAgICAgcmV0
dXJuIGdsb2JhbERhdGEuc21hbGxTdHJpbmdzLnRydWVTdHJpbmcoKTsKLSAgICBpZiAoaXNGYWxz
ZSgpKQotICAgICAgICByZXR1cm4gZ2xvYmFsRGF0YS5zbWFsbFN0cmluZ3MuZmFsc2VTdHJpbmco
KTsKLSAgICBpZiAoaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBnbG9iYWxEYXRhLnNtYWxsU3Ry
aW5ncy5udWxsU3RyaW5nKCk7Ci0gICAgaWYgKGlzVW5kZWZpbmVkKCkpCi0gICAgICAgIHJldHVy
biBnbG9iYWxEYXRhLnNtYWxsU3RyaW5ncy51bmRlZmluZWRTdHJpbmcoKTsKLQotICAgIEFTU0VS
VChpc0NlbGwoKSk7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IGFzQ2VsbCgpLT50b1ByaW1pdGl2ZShl
eGVjLCBQcmVmZXJTdHJpbmcpOwotICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAg
ICAgcmV0dXJuIGpzRW1wdHlTdHJpbmcoZXhlYyk7Ci0gICAgQVNTRVJUKCF2YWx1ZS5pc09iamVj
dCgpKTsKLSAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoZXhlYyk7Ci19Ci0KLVN0cmluZyBKU1Zh
bHVlOjp0b1dURlN0cmluZ1Nsb3dDYXNlKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKLXsKLSAgICBy
ZXR1cm4gaW5saW5lSlNWYWx1ZU5vdFN0cmluZ3RvU3RyaW5nKCp0aGlzLCBleGVjKTsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNW
YWx1ZS5oCShyZXZpc2lvbiAxNDAzNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNDk3ICswLDAgQEAKLS8qCi0gKiAgQ29w
eXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBD
b3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKLSAqICBDb3B5cmln
aHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAq
ICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8KLQotI2lmbmRlZiBKU1ZhbHVlX2gK
LSNkZWZpbmUgSlNWYWx1ZV9oCi0KLSNpbmNsdWRlIDxtYXRoLmg+Ci0jaW5jbHVkZSA8c3RkZGVm
Lmg+IC8vIGZvciBzaXplX3QKLSNpbmNsdWRlIDxzdGRpbnQuaD4KLSNpbmNsdWRlIDx3dGYvQWx3
YXlzSW5saW5lLmg+Ci0jaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLSNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+Ci0jaW5jbHVkZSA8d3RmL01h
dGhFeHRyYXMuaD4KLSNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+Ci0KLW5hbWVzcGFjZSBK
U0MgewotCi0vLyBUaGlzIGlzIHVzZWQgYSBsb3QgdGhyb3VnaG91dCBKYXZhU2NyaXB0Q29yZSBm
b3IgZXZlcnl0aGluZyBmcm9tIHZhbHVlIGJveGluZyB0byBtYXJraW5nCi0vLyB2YWx1ZXMgYXMg
YmVpbmcgbWlzc2luZywgc28gaXQgaXMgdXNlZnVsIHRvIGhhdmUgaXQgYWJicmV2aWF0ZWQuCi0j
ZGVmaW5lIFFOYU4gKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCkpCi0K
LWNsYXNzIEV4ZWNTdGF0ZTsKLWNsYXNzIEpTQ2VsbDsKLWNsYXNzIEpTR2xvYmFsRGF0YTsKLWNs
YXNzIEpTR2xvYmFsT2JqZWN0OwotY2xhc3MgSlNPYmplY3Q7Ci1jbGFzcyBKU1N0cmluZzsKLWNs
YXNzIFByb3BlcnR5TmFtZTsKLWNsYXNzIFByb3BlcnR5U2xvdDsKLWNsYXNzIFB1dFByb3BlcnR5
U2xvdDsKLSNpZiBFTkFCTEUoREZHX0pJVCkKLW5hbWVzcGFjZSBERkcgewotY2xhc3MgQXNzZW1i
bHlIZWxwZXJzOwotY2xhc3MgSklUQ29tcGlsZXI7Ci1jbGFzcyBKSVRDb2RlR2VuZXJhdG9yOwot
Y2xhc3MgSlNWYWx1ZVNvdXJjZTsKLWNsYXNzIE9TUkV4aXRDb21waWxlcjsKLWNsYXNzIFNwZWN1
bGF0aXZlSklUOwotfQotI2VuZGlmCi0jaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkKLW5hbWVzcGFj
ZSBMTEludCB7Ci1jbGFzcyBDTG9vcDsKLX0KLSNlbmRpZgotCi1zdHJ1Y3QgQ2xhc3NJbmZvOwot
c3RydWN0IEluc3RydWN0aW9uOwotc3RydWN0IE1ldGhvZFRhYmxlOwotCi10ZW1wbGF0ZSA8Y2xh
c3MgVD4gY2xhc3MgV3JpdGVCYXJyaWVyQmFzZTsKLQotZW51bSBQcmVmZXJyZWRQcmltaXRpdmVU
eXBlIHsgTm9QcmVmZXJlbmNlLCBQcmVmZXJOdW1iZXIsIFByZWZlclN0cmluZyB9OwotCi0KLXR5
cGVkZWYgaW50NjRfdCBFbmNvZGVkSlNWYWx1ZTsKLSAgICAKLXVuaW9uIEVuY29kZWRWYWx1ZURl
c2NyaXB0b3IgewotICAgIGludDY0X3QgYXNJbnQ2NDsKLSNpZiBVU0UoSlNWQUxVRTMyXzY0KQot
ICAgIGRvdWJsZSBhc0RvdWJsZTsKLSNlbGlmIFVTRShKU1ZBTFVFNjQpCi0gICAgSlNDZWxsKiBw
dHI7Ci0jZW5kaWYKLSAgICAgICAgCi0jaWYgQ1BVKEJJR19FTkRJQU4pCi0gICAgc3RydWN0IHsK
LSAgICAgICAgaW50MzJfdCB0YWc7Ci0gICAgICAgIGludDMyX3QgcGF5bG9hZDsKLSAgICB9IGFz
Qml0czsKLSNlbHNlCi0gICAgc3RydWN0IHsKLSAgICAgICAgaW50MzJfdCBwYXlsb2FkOwotICAg
ICAgICBpbnQzMl90IHRhZzsKLSAgICB9IGFzQml0czsKLSNlbmRpZgotfTsKLQotLy8gVGhpcyBp
bXBsZW1lbnRzIFRvSW50MzIsIGRlZmluZWQgaW4gRUNNQS0yNjIgOS41LgotSlNfRVhQT1JUX1BS
SVZBVEUgaW50MzJfdCB0b0ludDMyKGRvdWJsZSk7Ci0KLS8vIFRoaXMgaW1wbGVtZW50cyBUb1VJ
bnQzMiwgZGVmaW5lZCBpbiBFQ01BLTI2MiA5LjYuCi1pbmxpbmUgdWludDMyX3QgdG9VSW50MzIo
ZG91YmxlIG51bWJlcikKLXsKLSAgICAvLyBBcyBjb21tZW50ZWQgaW4gdGhlIHNwZWMsIHRoZSBv
cGVyYXRpb24gb2YgVG9JbnQzMiBhbmQgVG9VaW50MzIgb25seSBkaWZmZXIKLSAgICAvLyBpbiBo
b3cgdGhlIHJlc3VsdCBpcyBpbnRlcnByZXRlZDsgc2VlIE5PVEVzIGluIHNlY3Rpb25zIDkuNSBh
bmQgOS42LgotICAgIHJldHVybiB0b0ludDMyKG51bWJlcik7Ci19Ci0KLWNsYXNzIEpTVmFsdWUg
ewotICAgIGZyaWVuZCBzdHJ1Y3QgRW5jb2RlZEpTVmFsdWVIYXNoVHJhaXRzOwotICAgIGZyaWVu
ZCBjbGFzcyBKSVQ7Ci0gICAgZnJpZW5kIGNsYXNzIEpJVFN0dWJzOwotICAgIGZyaWVuZCBjbGFz
cyBKSVRTdHViQ2FsbDsKLSAgICBmcmllbmQgY2xhc3MgSlNJbnRlcmZhY2VKSVQ7Ci0gICAgZnJp
ZW5kIGNsYXNzIFNwZWNpYWxpemVkVGh1bmtKSVQ7Ci0jaWYgRU5BQkxFKERGR19KSVQpCi0gICAg
ZnJpZW5kIGNsYXNzIERGRzo6QXNzZW1ibHlIZWxwZXJzOwotICAgIGZyaWVuZCBjbGFzcyBERkc6
OkpJVENvbXBpbGVyOwotICAgIGZyaWVuZCBjbGFzcyBERkc6OkpJVENvZGVHZW5lcmF0b3I7Ci0g
ICAgZnJpZW5kIGNsYXNzIERGRzo6SlNWYWx1ZVNvdXJjZTsKLSAgICBmcmllbmQgY2xhc3MgREZH
OjpPU1JFeGl0Q29tcGlsZXI7Ci0gICAgZnJpZW5kIGNsYXNzIERGRzo6U3BlY3VsYXRpdmVKSVQ7
Ci0jZW5kaWYKLSNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQotICAgIGZyaWVuZCBjbGFzcyBMTElu
dDo6Q0xvb3A7Ci0jZW5kaWYKLQotcHVibGljOgotI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAg
ZW51bSB7IEludDMyVGFnID0gICAgICAgIDB4ZmZmZmZmZmYgfTsKLSAgICBlbnVtIHsgQm9vbGVh
blRhZyA9ICAgICAgMHhmZmZmZmZmZSB9OwotICAgIGVudW0geyBOdWxsVGFnID0gICAgICAgICAw
eGZmZmZmZmZkIH07Ci0gICAgZW51bSB7IFVuZGVmaW5lZFRhZyA9ICAgIDB4ZmZmZmZmZmMgfTsK
LSAgICBlbnVtIHsgQ2VsbFRhZyA9ICAgICAgICAgMHhmZmZmZmZmYiB9OwotICAgIGVudW0geyBF
bXB0eVZhbHVlVGFnID0gICAweGZmZmZmZmZhIH07Ci0gICAgZW51bSB7IERlbGV0ZWRWYWx1ZVRh
ZyA9IDB4ZmZmZmZmZjkgfTsKLQotICAgIGVudW0geyBMb3dlc3RUYWcgPSAgRGVsZXRlZFZhbHVl
VGFnIH07Ci0jZW5kaWYKLQotICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBlbmNvZGUoSlNWYWx1
ZSk7Ci0gICAgc3RhdGljIEpTVmFsdWUgZGVjb2RlKEVuY29kZWRKU1ZhbHVlKTsKLQotICAgIGVu
dW0gSlNOdWxsVGFnIHsgSlNOdWxsIH07Ci0gICAgZW51bSBKU1VuZGVmaW5lZFRhZyB7IEpTVW5k
ZWZpbmVkIH07Ci0gICAgZW51bSBKU1RydWVUYWcgeyBKU1RydWUgfTsKLSAgICBlbnVtIEpTRmFs
c2VUYWcgeyBKU0ZhbHNlIH07Ci0gICAgZW51bSBFbmNvZGVBc0RvdWJsZVRhZyB7IEVuY29kZUFz
RG91YmxlIH07Ci0KLSAgICBKU1ZhbHVlKCk7Ci0gICAgSlNWYWx1ZShKU051bGxUYWcpOwotICAg
IEpTVmFsdWUoSlNVbmRlZmluZWRUYWcpOwotICAgIEpTVmFsdWUoSlNUcnVlVGFnKTsKLSAgICBK
U1ZhbHVlKEpTRmFsc2VUYWcpOwotICAgIEpTVmFsdWUoSlNDZWxsKiBwdHIpOwotICAgIEpTVmFs
dWUoY29uc3QgSlNDZWxsKiBwdHIpOwotCi0gICAgLy8gTnVtYmVycwotICAgIEpTVmFsdWUoRW5j
b2RlQXNEb3VibGVUYWcsIGRvdWJsZSk7Ci0gICAgZXhwbGljaXQgSlNWYWx1ZShkb3VibGUpOwot
ICAgIGV4cGxpY2l0IEpTVmFsdWUoY2hhcik7Ci0gICAgZXhwbGljaXQgSlNWYWx1ZSh1bnNpZ25l
ZCBjaGFyKTsKLSAgICBleHBsaWNpdCBKU1ZhbHVlKHNob3J0KTsKLSAgICBleHBsaWNpdCBKU1Zh
bHVlKHVuc2lnbmVkIHNob3J0KTsKLSAgICBleHBsaWNpdCBKU1ZhbHVlKGludCk7Ci0gICAgZXhw
bGljaXQgSlNWYWx1ZSh1bnNpZ25lZCk7Ci0gICAgZXhwbGljaXQgSlNWYWx1ZShsb25nKTsKLSAg
ICBleHBsaWNpdCBKU1ZhbHVlKHVuc2lnbmVkIGxvbmcpOwotICAgIGV4cGxpY2l0IEpTVmFsdWUo
bG9uZyBsb25nKTsKLSAgICBleHBsaWNpdCBKU1ZhbHVlKHVuc2lnbmVkIGxvbmcgbG9uZyk7Ci0K
LSAgICBvcGVyYXRvciBib29sKCkgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEpT
VmFsdWUmIG90aGVyKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgSlNWYWx1ZSYg
b3RoZXIpIGNvbnN0OwotCi0gICAgYm9vbCBpc0ludDMyKCkgY29uc3Q7Ci0gICAgYm9vbCBpc1VJ
bnQzMigpIGNvbnN0OwotICAgIGJvb2wgaXNEb3VibGUoKSBjb25zdDsKLSAgICBib29sIGlzVHJ1
ZSgpIGNvbnN0OwotICAgIGJvb2wgaXNGYWxzZSgpIGNvbnN0OwotCi0gICAgaW50MzJfdCBhc0lu
dDMyKCkgY29uc3Q7Ci0gICAgdWludDMyX3QgYXNVSW50MzIoKSBjb25zdDsKLSAgICBkb3VibGUg
YXNEb3VibGUoKSBjb25zdDsKLSAgICBib29sIGFzQm9vbGVhbigpIGNvbnN0OwotICAgIGRvdWJs
ZSBhc051bWJlcigpIGNvbnN0OwotCi0gICAgLy8gUXVlcnlpbmcgdGhlIHR5cGUuCi0gICAgYm9v
bCBpc0VtcHR5KCkgY29uc3Q7Ci0gICAgYm9vbCBpc0Z1bmN0aW9uKCkgY29uc3Q7Ci0gICAgYm9v
bCBpc1VuZGVmaW5lZCgpIGNvbnN0OwotICAgIGJvb2wgaXNOdWxsKCkgY29uc3Q7Ci0gICAgYm9v
bCBpc1VuZGVmaW5lZE9yTnVsbCgpIGNvbnN0OwotICAgIGJvb2wgaXNCb29sZWFuKCkgY29uc3Q7
Ci0gICAgYm9vbCBpc051bWJlcigpIGNvbnN0OwotICAgIGJvb2wgaXNTdHJpbmcoKSBjb25zdDsK
LSAgICBib29sIGlzUHJpbWl0aXZlKCkgY29uc3Q7Ci0gICAgYm9vbCBpc0dldHRlclNldHRlcigp
IGNvbnN0OwotICAgIGJvb2wgaXNPYmplY3QoKSBjb25zdDsKLSAgICBib29sIGluaGVyaXRzKGNv
bnN0IENsYXNzSW5mbyopIGNvbnN0OwotICAgICAgICAKLSAgICAvLyBFeHRyYWN0aW5nIHRoZSB2
YWx1ZS4KLSAgICBib29sIGdldFN0cmluZyhFeGVjU3RhdGUqLCBXVEY6OlN0cmluZyYpIGNvbnN0
OwotICAgIFdURjo6U3RyaW5nIGdldFN0cmluZyhFeGVjU3RhdGUqKSBjb25zdDsgLy8gbnVsbCBz
dHJpbmcgaWYgbm90IGEgc3RyaW5nCi0gICAgSlNPYmplY3QqIGdldE9iamVjdCgpIGNvbnN0OyAv
LyAwIGlmIG5vdCBhbiBvYmplY3QKLQotICAgIC8vIEV4dHJhY3RpbmcgaW50ZWdlciB2YWx1ZXMu
Ci0gICAgYm9vbCBnZXRVSW50MzIodWludDMyX3QmKSBjb25zdDsKLSAgICAgICAgCi0gICAgLy8g
QmFzaWMgY29udmVyc2lvbnMuCi0gICAgSlNWYWx1ZSB0b1ByaW1pdGl2ZShFeGVjU3RhdGUqLCBQ
cmVmZXJyZWRQcmltaXRpdmVUeXBlID0gTm9QcmVmZXJlbmNlKSBjb25zdDsKLSAgICBib29sIGdl
dFByaW1pdGl2ZU51bWJlcihFeGVjU3RhdGUqLCBkb3VibGUmIG51bWJlciwgSlNWYWx1ZSYpOwot
Ci0gICAgYm9vbCB0b0Jvb2xlYW4oRXhlY1N0YXRlKikgY29uc3Q7Ci0KLSAgICAvLyB0b051bWJl
ciBjb252ZXJzaW9uIGlzIGV4cGVjdGVkIHRvIGJlIHNpZGUgZWZmZWN0IGZyZWUgaWYgYW4gZXhj
ZXB0aW9uIGhhcwotICAgIC8vIGJlZW4gc2V0IGluIHRoZSBFeGVjU3RhdGUgYWxyZWFkeS4KLSAg
ICBkb3VibGUgdG9OdW1iZXIoRXhlY1N0YXRlKikgY29uc3Q7Ci0gICAgSlNTdHJpbmcqIHRvU3Ry
aW5nKEV4ZWNTdGF0ZSopIGNvbnN0OwotICAgIFdURjo6U3RyaW5nIHRvV1RGU3RyaW5nKEV4ZWNT
dGF0ZSopIGNvbnN0OwotICAgIFdURjo6U3RyaW5nIHRvV1RGU3RyaW5nSW5saW5lKEV4ZWNTdGF0
ZSopIGNvbnN0OwotICAgIEpTT2JqZWN0KiB0b09iamVjdChFeGVjU3RhdGUqKSBjb25zdDsKLSAg
ICBKU09iamVjdCogdG9PYmplY3QoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqKSBjb25zdDsK
LQotICAgIC8vIEludGVnZXIgY29udmVyc2lvbnMuCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgZG91
YmxlIHRvSW50ZWdlcihFeGVjU3RhdGUqKSBjb25zdDsKLSAgICBkb3VibGUgdG9JbnRlZ2VyUHJl
c2VydmVOYU4oRXhlY1N0YXRlKikgY29uc3Q7Ci0gICAgaW50MzJfdCB0b0ludDMyKEV4ZWNTdGF0
ZSopIGNvbnN0OwotICAgIHVpbnQzMl90IHRvVUludDMyKEV4ZWNTdGF0ZSopIGNvbnN0OwotCi0g
ICAgLy8gRmxvYXRpbmcgcG9pbnQgY29udmVyc2lvbnMgKHRoaXMgaXMgYSBjb252ZW5pZW5jZSBt
ZXRob2QgZm9yIHdlYmNvcmU7Ci0gICAgLy8gc2lnbmxlIHByZWNpc2lvbiBmbG9hdCBpcyBub3Qg
YSByZXByZXNlbnRhdGlvbiB1c2VkIGluIEpTIG9yIEpTQykuCi0gICAgZmxvYXQgdG9GbG9hdChF
eGVjU3RhdGUqIGV4ZWMpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0Pih0b051bWJl
cihleGVjKSk7IH0KLQotICAgIC8vIE9iamVjdCBvcGVyYXRpb25zLCB3aXRoIHRoZSB0b09iamVj
dCBvcGVyYXRpb24gaW5jbHVkZWQuCi0gICAgSlNWYWx1ZSBnZXQoRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lKSBjb25zdDsKLSAgICBKU1ZhbHVlIGdldChFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYpIGNvbnN0OwotICAgIEpTVmFsdWUgZ2V0KEV4ZWNTdGF0ZSosIHVuc2ln
bmVkIHByb3BlcnR5TmFtZSkgY29uc3Q7Ci0gICAgSlNWYWx1ZSBnZXQoRXhlY1N0YXRlKiwgdW5z
aWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKSBjb25zdDsKLSAgICB2b2lkIHB1dChF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwotICAg
IHZvaWQgcHV0VG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmKTsKLSAgICB2b2lkIHB1dFRvUHJpbWl0aXZlQnlJbmRleChFeGVjU3Rh
dGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwot
ICAgIHZvaWQgcHV0QnlJbmRleChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwotCi0gICAgSlNPYmplY3QqIHRvVGhpc09iamVjdChF
eGVjU3RhdGUqKSBjb25zdDsKLQotICAgIHN0YXRpYyBib29sIGVxdWFsKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2Mik7Ci0gICAgc3RhdGljIGJvb2wgZXF1YWxTbG93Q2Fz
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpOwotICAgIHN0YXRpYyBi
b29sIGVxdWFsU2xvd0Nhc2VJbmxpbmUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHYxLCBKU1Zh
bHVlIHYyKTsKLSAgICBzdGF0aWMgYm9vbCBzdHJpY3RFcXVhbChFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgdjEsIEpTVmFsdWUgdjIpOwotICAgIHN0YXRpYyBib29sIHN0cmljdEVxdWFsU2xvd0Nh
c2UoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKTsKLSAgICBzdGF0aWMg
Ym9vbCBzdHJpY3RFcXVhbFNsb3dDYXNlSW5saW5lKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2
MSwgSlNWYWx1ZSB2Mik7Ci0KLSAgICBib29sIGlzQ2VsbCgpIGNvbnN0OwotICAgIEpTQ2VsbCog
YXNDZWxsKCkgY29uc3Q7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc1ZhbGlkQ2FsbGVl
KCk7Ci0gICAgICAgIAotICAgIEpTVmFsdWUgc3RydWN0dXJlT3JVbmRlZmluZWQoKSBjb25zdDsK
LQotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0Owot
Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHN5bnRoZXNpemVQcm90b3R5cGUoRXhl
Y1N0YXRlKikgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFQ+IEpTVmFs
dWUoV3JpdGVCYXJyaWVyQmFzZTxUPik7Ci0KLSAgICBlbnVtIEhhc2hUYWJsZURlbGV0ZWRWYWx1
ZVRhZyB7IEhhc2hUYWJsZURlbGV0ZWRWYWx1ZSB9OwotICAgIEpTVmFsdWUoSGFzaFRhYmxlRGVs
ZXRlZFZhbHVlVGFnKTsKLQotICAgIGlubGluZSBjb25zdCBKU1ZhbHVlIGFzVmFsdWUoKSBjb25z
dCB7IHJldHVybiAqdGhpczsgfQotICAgIEpTX0VYUE9SVF9QUklWQVRFIGRvdWJsZSB0b051bWJl
clNsb3dDYXNlKEV4ZWNTdGF0ZSopIGNvbnN0OwotICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTU3Ry
aW5nKiB0b1N0cmluZ1Nsb3dDYXNlKEV4ZWNTdGF0ZSopIGNvbnN0OwotICAgIEpTX0VYUE9SVF9Q
UklWQVRFIFdURjo6U3RyaW5nIHRvV1RGU3RyaW5nU2xvd0Nhc2UoRXhlY1N0YXRlKikgY29uc3Q7
Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRvT2JqZWN0U2xvd0Nhc2UoRXhlY1N0
YXRlKiwgSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBKU09i
amVjdCogdG9UaGlzT2JqZWN0U2xvd0Nhc2UoRXhlY1N0YXRlKikgY29uc3Q7Ci0KLSNpZiBVU0Uo
SlNWQUxVRTMyXzY0KQotICAgIC8qCi0gICAgICogT24gMzItYml0IHBsYXRmb3JtcyBVU0UoSlNW
QUxVRTMyXzY0KSBzaG91bGQgYmUgZGVmaW5lZCwgYW5kIHdlIHVzZSBhIE5hTi1lbmNvZGVkCi0g
ICAgICogZm9ybSBmb3IgaW1tZWRpYXRlcy4KLSAgICAgKgotICAgICAqIFRoZSBlbmNvZGluZyBt
YWtlcyB1c2Ugb2YgdW51c2VkIE5hTiBzcGFjZSBpbiB0aGUgSUVFRTc1NCByZXByZXNlbnRhdGlv
bi4gIEFueSB2YWx1ZQotICAgICAqIHdpdGggdGhlIHRvcCAxMyBiaXRzIHNldCByZXByZXNlbnRz
IGEgUU5hTiAod2l0aCB0aGUgc2lnbiBiaXQgc2V0KS4gIFFOYU4gdmFsdWVzCi0gICAgICogY2Fu
IGVuY29kZSBhIDUxLWJpdCBwYXlsb2FkLiAgSGFyZHdhcmUgcHJvZHVjZWQgYW5kIEMtbGlicmFy
eSBwYXlsb2FkcyB0eXBpY2FsbHkKLSAgICAgKiBoYXZlIGEgcGF5bG9hZCBvZiB6ZXJvLiAgV2Ug
YXNzdW1lIHRoYXQgbm9uLXplcm8gcGF5bG9hZHMgYXJlIGF2YWlsYWJsZSB0byBlbmNvZGUKLSAg
ICAgKiBwb2ludGVyIGFuZCBpbnRlZ2VyIHZhbHVlcy4gIFNpbmNlIGFueSA2NC1iaXQgYml0IHBh
dHRlcm4gd2hlcmUgdGhlIHRvcCAxNSBiaXRzIGFyZQotICAgICAqIGFsbCBzZXQgcmVwcmVzZW50
cyBhIE5hTiB3aXRoIGEgbm9uLXplcm8gcGF5bG9hZCwgd2UgY2FuIHVzZSB0aGlzIHNwYWNlIGlu
IHRoZSBOYU4KLSAgICAgKiByYW5nZXMgdG8gZW5jb2RlIG90aGVyIHZhbHVlcyAoaG93ZXZlciB0
aGVyZSBhcmUgYWxzbyBvdGhlciByYW5nZXMgb2YgTmFOIHNwYWNlIHRoYXQKLSAgICAgKiBjb3Vs
ZCBoYXZlIGJlZW4gc2VsZWN0ZWQpLgotICAgICAqCi0gICAgICogRm9yIEpTVmFsdWVzIHRoYXQg
ZG8gbm90IGNvbnRhaW4gYSBkb3VibGUgdmFsdWUsIHRoZSBoaWdoIDMyIGJpdHMgY29udGFpbiB0
aGUgdGFnCi0gICAgICogdmFsdWVzIGxpc3RlZCBpbiB0aGUgZW51bXMgYmVsb3csIHdoaWNoIGFs
bCBjb3JyZXNwb25kIHRvIE5hTi1zcGFjZS4gSW4gdGhlIGNhc2Ugb2YKLSAgICAgKiBjZWxsLCBp
bnRlZ2VyIGFuZCBib29sIHZhbHVlcyB0aGUgbG93ZXIgMzIgYml0cyAodGhlICdwYXlsb2FkJykg
Y29udGFpbiB0aGUgcG9pbnRlcgotICAgICAqIGludGVnZXIgb3IgYm9vbGVhbiB2YWx1ZTsgaW4g
dGhlIGNhc2Ugb2YgYWxsIG90aGVyIHRhZ3MgdGhlIHBheWxvYWQgaXMgMC4KLSAgICAgKi8KLSAg
ICB1aW50MzJfdCB0YWcoKSBjb25zdDsKLSAgICBpbnQzMl90IHBheWxvYWQoKSBjb25zdDsKLQot
I2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCi0gICAgLy8gVGhpcyBzaG91bGQgb25seSBiZSB1c2Vk
IGJ5IHRoZSBMTEludCBDIExvb3AgaW50ZXJwcmV0ZXIgd2hvIG5lZWRzCi0gICAgLy8gc3ludGhl
c2l6ZSBKU1ZhbHVlIGZyb20gaXRzICJyZWdpc3RlciJzIGhvbGRpbmcgdGFnIGFuZCBwYXlsb2Fk
Ci0gICAgLy8gdmFsdWVzLgotICAgIGV4cGxpY2l0IEpTVmFsdWUoaW50MzJfdCB0YWcsIGludDMy
X3QgcGF5bG9hZCk7Ci0jZW5kaWYKLQotI2VsaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAvKgotICAg
ICAqIE9uIDY0LWJpdCBwbGF0Zm9ybXMgVVNFKEpTVkFMVUU2NCkgc2hvdWxkIGJlIGRlZmluZWQs
IGFuZCB3ZSB1c2UgYSBOYU4tZW5jb2RlZAotICAgICAqIGZvcm0gZm9yIGltbWVkaWF0ZXMuCi0g
ICAgICoKLSAgICAgKiBUaGUgZW5jb2RpbmcgbWFrZXMgdXNlIG9mIHVudXNlZCBOYU4gc3BhY2Ug
aW4gdGhlIElFRUU3NTQgcmVwcmVzZW50YXRpb24uICBBbnkgdmFsdWUKLSAgICAgKiB3aXRoIHRo
ZSB0b3AgMTMgYml0cyBzZXQgcmVwcmVzZW50cyBhIFFOYU4gKHdpdGggdGhlIHNpZ24gYml0IHNl
dCkuICBRTmFOIHZhbHVlcwotICAgICAqIGNhbiBlbmNvZGUgYSA1MS1iaXQgcGF5bG9hZC4gIEhh
cmR3YXJlIHByb2R1Y2VkIGFuZCBDLWxpYnJhcnkgcGF5bG9hZHMgdHlwaWNhbGx5Ci0gICAgICog
aGF2ZSBhIHBheWxvYWQgb2YgemVyby4gIFdlIGFzc3VtZSB0aGF0IG5vbi16ZXJvIHBheWxvYWRz
IGFyZSBhdmFpbGFibGUgdG8gZW5jb2RlCi0gICAgICogcG9pbnRlciBhbmQgaW50ZWdlciB2YWx1
ZXMuICBTaW5jZSBhbnkgNjQtYml0IGJpdCBwYXR0ZXJuIHdoZXJlIHRoZSB0b3AgMTUgYml0cyBh
cmUKLSAgICAgKiBhbGwgc2V0IHJlcHJlc2VudHMgYSBOYU4gd2l0aCBhIG5vbi16ZXJvIHBheWxv
YWQsIHdlIGNhbiB1c2UgdGhpcyBzcGFjZSBpbiB0aGUgTmFOCi0gICAgICogcmFuZ2VzIHRvIGVu
Y29kZSBvdGhlciB2YWx1ZXMgKGhvd2V2ZXIgdGhlcmUgYXJlIGFsc28gb3RoZXIgcmFuZ2VzIG9m
IE5hTiBzcGFjZSB0aGF0Ci0gICAgICogY291bGQgaGF2ZSBiZWVuIHNlbGVjdGVkKS4KLSAgICAg
KgotICAgICAqIFRoaXMgcmFuZ2Ugb2YgTmFOIHNwYWNlIGlzIHJlcHJlc2VudGVkIGJ5IDY0LWJp
dCBudW1iZXJzIGJlZ2luaW5nIHdpdGggdGhlIDE2LWJpdAotICAgICAqIGhleCBwYXR0ZXJucyAw
eEZGRkUgYW5kIDB4RkZGRiAtIHdlIHJlbHkgb24gdGhlIGZhY3QgdGhhdCBubyB2YWxpZCBkb3Vi
bGUtcHJlY2lzaW9uCi0gICAgICogbnVtYmVycyB3aWxsIGJlZ2luIGZhbGwgaW4gdGhlc2UgcmFu
Z2VzLgotICAgICAqCi0gICAgICogVGhlIHRvcCAxNi1iaXRzIGRlbm90ZSB0aGUgdHlwZSBvZiB0
aGUgZW5jb2RlZCBKU1ZhbHVlOgotICAgICAqCi0gICAgICogICAgIFBvaW50ZXIgeyAgMDAwMDpQ
UFBQOlBQUFA6UFBQUAotICAgICAqICAgICAgICAgICAgICAvIDAwMDE6KioqKjoqKioqOioqKioK
LSAgICAgKiAgICAgRG91YmxlICB7ICAgICAgICAgLi4uCi0gICAgICogICAgICAgICAgICAgIFwg
RkZGRToqKioqOioqKio6KioqKgotICAgICAqICAgICBJbnRlZ2VyIHsgIEZGRkY6MDAwMDpJSUlJ
OklJSUkKLSAgICAgKgotICAgICAqIFRoZSBzY2hlbWUgd2UgaGF2ZSBpbXBsZW1lbnRlZCBlbmNv
ZGVzIGRvdWJsZSBwcmVjaXNpb24gdmFsdWVzIGJ5IHBlcmZvcm1pbmcgYQotICAgICAqIDY0LWJp
dCBpbnRlZ2VyIGFkZGl0aW9uIG9mIHRoZSB2YWx1ZSAyXjQ4IHRvIHRoZSBudW1iZXIuIEFmdGVy
IHRoaXMgbWFuaXB1bGF0aW9uCi0gICAgICogbm8gZW5jb2RlZCBkb3VibGUtcHJlY2lzaW9uIHZh
bHVlIHdpbGwgYmVnaW4gd2l0aCB0aGUgcGF0dGVybiAweDAwMDAgb3IgMHhGRkZGLgotICAgICAq
IFZhbHVlcyBtdXN0IGJlIGRlY29kZWQgYnkgcmV2ZXJzaW5nIHRoaXMgb3BlcmF0aW9uIGJlZm9y
ZSBzdWJzZXF1ZW50IGZsb2F0aW5nIHBvaW50Ci0gICAgICogb3BlcmF0aW9ucyBteSBiZSBwZWZv
cm1lZC4KLSAgICAgKgotICAgICAqIDMyLWJpdCBzaWduZWQgaW50ZWdlcnMgYXJlIG1hcmtlZCB3
aXRoIHRoZSAxNi1iaXQgdGFnIDB4RkZGRi4KLSAgICAgKgotICAgICAqIFRoZSB0YWcgMHgwMDAw
IGRlbm90ZXMgYSBwb2ludGVyLCBvciBhbm90aGVyIGZvcm0gb2YgdGFnZ2VkIGltbWVkaWF0ZS4g
Qm9vbGVhbiwKLSAgICAgKiBudWxsIGFuZCB1bmRlZmluZWQgdmFsdWVzIGFyZSByZXByZXNlbnRl
ZCBieSBzcGVjaWZpYywgaW52YWxpZCBwb2ludGVyIHZhbHVlczoKLSAgICAgKgotICAgICAqICAg
ICBGYWxzZTogICAgIDB4MDYKLSAgICAgKiAgICAgVHJ1ZTogICAgICAweDA3Ci0gICAgICogICAg
IFVuZGVmaW5lZDogMHgwYQotICAgICAqICAgICBOdWxsOiAgICAgIDB4MDIKLSAgICAgKgotICAg
ICAqIFRoZXNlIHZhbHVlcyBoYXZlIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczoKLSAgICAgKiAt
IEJpdCAxIChUYWdCaXRUeXBlT3RoZXIpIGlzIHNldCBmb3IgYWxsIGZvdXIgdmFsdWVzLCBhbGxv
d2luZyByZWFsIHBvaW50ZXJzIHRvIGJlCi0gICAgICogICBxdWlja2x5IGRpc3Rpbmd1aXNoZWQg
ZnJvbSBhbGwgaW1tZWRpYXRlIHZhbHVlcywgaW5jbHVkaW5nIHRoZXNlIGludmFsaWQgcG9pbnRl
cnMuCi0gICAgICogLSBXaXRoIGJpdCAzIGlzIG1hc2tlZCBvdXQgKFRhZ0JpdFVuZGVmaW5lZCkg
VW5kZWZpbmVkIGFuZCBOdWxsIHNoYXJlIHRoZQotICAgICAqICAgc2FtZSB2YWx1ZSwgYWxsb3dp
bmcgbnVsbCAmIHVuZGVmaW5lZCB0byBiZSBxdWlja2x5IGRldGVjdGVkLgotICAgICAqCi0gICAg
ICogTm8gdmFsaWQgSlNWYWx1ZSB3aWxsIGhhdmUgdGhlIGJpdCBwYXR0ZXJuIDB4MCwgdGhpcyBp
cyB1c2VkIHRvIHJlcHJlc2VudCBhcnJheQotICAgICAqIGhvbGVzLCBhbmQgYXMgYSBDKysgJ25v
IHZhbHVlJyByZXN1bHQgKGUuZy4gSlNWYWx1ZSgpIGhhcyBhbiBpbnRlcm5hbCB2YWx1ZSBvZiAw
KS4KLSAgICAgKi8KLQotICAgIC8vIFRoZXNlIHZhbHVlcyBhcmUgI2RlZmluZXMgc2luY2UgdXNp
bmcgc3RhdGljIGNvbnN0IGludGVnZXJzIGhlcmUgaXMgYSB+MSUgcmVncmVzc2lvbiEKLQotICAg
IC8vIFRoaXMgdmFsdWUgaXMgMl40OCwgdXNlZCB0byBlbmNvZGUgZG91YmxlcyBzdWNoIHRoYXQg
dGhlIGVuY29kZWQgdmFsdWUgd2lsbCBiZWdpbgotICAgIC8vIHdpdGggYSAxNi1iaXQgcGF0dGVy
biB3aXRoaW4gdGhlIHJhbmdlIDB4MDAwMS4uMHhGRkZFLgotICAgICNkZWZpbmUgRG91YmxlRW5j
b2RlT2Zmc2V0IDB4MTAwMDAwMDAwMDAwMGxsCi0gICAgLy8gSWYgYWxsIGJpdHMgaW4gdGhlIG1h
c2sgYXJlIHNldCwgdGhpcyBpbmRpY2F0ZXMgYW4gaW50ZWdlciBudW1iZXIsCi0gICAgLy8gaWYg
YW55IGJ1dCBub3QgYWxsIGFyZSBzZXQgdGhpcyB2YWx1ZSBpcyBhIGRvdWJsZSBwcmVjaXNpb24g
bnVtYmVyLgotICAgICNkZWZpbmUgVGFnVHlwZU51bWJlciAweGZmZmYwMDAwMDAwMDAwMDBsbAot
Ci0gICAgLy8gQWxsIG5vbi1udW1lcmljIChib29sLCBudWxsLCB1bmRlZmluZWQpIGltbWVkaWF0
ZXMgaGF2ZSBiaXQgMiBzZXQuCi0gICAgI2RlZmluZSBUYWdCaXRUeXBlT3RoZXIgMHgybGwKLSAg
ICAjZGVmaW5lIFRhZ0JpdEJvb2wgICAgICAweDRsbAotICAgICNkZWZpbmUgVGFnQml0VW5kZWZp
bmVkIDB4OGxsCi0gICAgLy8gQ29tYmluZWQgaW50ZWdlciB2YWx1ZSBmb3Igbm9uLW51bWVyaWMg
aW1tZWRpYXRlcy4KLSAgICAjZGVmaW5lIFZhbHVlRmFsc2UgICAgIChUYWdCaXRUeXBlT3RoZXIg
fCBUYWdCaXRCb29sIHwgZmFsc2UpCi0gICAgI2RlZmluZSBWYWx1ZVRydWUgICAgICAoVGFnQml0
VHlwZU90aGVyIHwgVGFnQml0Qm9vbCB8IHRydWUpCi0gICAgI2RlZmluZSBWYWx1ZVVuZGVmaW5l
ZCAoVGFnQml0VHlwZU90aGVyIHwgVGFnQml0VW5kZWZpbmVkKQotICAgICNkZWZpbmUgVmFsdWVO
dWxsICAgICAgKFRhZ0JpdFR5cGVPdGhlcikKLQotICAgIC8vIFRhZ01hc2sgaXMgdXNlZCB0byBj
aGVjayBmb3IgYWxsIHR5cGVzIG9mIGltbWVkaWF0ZSB2YWx1ZXMgKGVpdGhlciBudW1iZXIgb3Ig
J290aGVyJykuCi0gICAgI2RlZmluZSBUYWdNYXNrIChUYWdUeXBlTnVtYmVyIHwgVGFnQml0VHlw
ZU90aGVyKQotCi0gICAgLy8gVGhlc2Ugc3BlY2lhbCB2YWx1ZXMgYXJlIG5ldmVyIHZpc2libGUg
dG8gSmF2YVNjcmlwdCBjb2RlOyBFbXB0eSBpcyB1c2VkIHRvIHJlcHJlc2VudAotICAgIC8vIEFy
cmF5IGhvbGVzLCBhbmQgZm9yIHVuaW5pdGlhbGl6ZWQgSlNWYWx1ZXMuIERlbGV0ZWQgaXMgdXNl
ZCBpbiBoYXNoIHRhYmxlIGNvZGUuCi0gICAgLy8gVGhlc2UgdmFsdWVzIHdvdWxkIG1hcCB0byBj
ZWxsIHR5cGVzIGluIHRoZSBKU1ZhbHVlIGVuY29kaW5nLCBidXQgbm90IHZhbGlkIEdDIGNlbGwK
LSAgICAvLyBwb2ludGVyIHNob3VsZCBoYXZlIGVpdGhlciBvZiB0aGVzZSB2YWx1ZXMgKEVtcHR5
IGlzIG51bGwsIGRlbGV0ZWQgaXMgYXQgYW4gaW52YWxpZAotICAgIC8vIGFsaWdubWVudCBmb3Ig
YSBHQyBjZWxsLCBhbmQgaW4gdGhlIHplcm8gcGFnZSkuCi0gICAgI2RlZmluZSBWYWx1ZUVtcHR5
ICAgMHgwbGwKLSAgICAjZGVmaW5lIFZhbHVlRGVsZXRlZCAweDRsbAotI2VuZGlmCi0KLSAgICBF
bmNvZGVkVmFsdWVEZXNjcmlwdG9yIHU7Ci19OwotCi10eXBlZGVmIEludEhhc2g8RW5jb2RlZEpT
VmFsdWU+IEVuY29kZWRKU1ZhbHVlSGFzaDsKLQotI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi1zdHJ1
Y3QgRW5jb2RlZEpTVmFsdWVIYXNoVHJhaXRzIDogSGFzaFRyYWl0czxFbmNvZGVkSlNWYWx1ZT4g
ewotICAgIHN0YXRpYyBjb25zdCBib29sIGVtcHR5VmFsdWVJc1plcm8gPSBmYWxzZTsKLSAgICBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShKU1ZhbHVlKCkpOyB9Ci0gICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKEVu
Y29kZWRKU1ZhbHVlJiBzbG90KSB7IHNsb3QgPSBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShKU1Zh
bHVlOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpKTsgfQotICAgIHN0YXRpYyBib29sIGlzRGVsZXRl
ZFZhbHVlKEVuY29kZWRKU1ZhbHVlIHZhbHVlKSB7IHJldHVybiB2YWx1ZSA9PSBKU1ZhbHVlOjpl
bmNvZGUoSlNWYWx1ZShKU1ZhbHVlOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpKTsgfQotfTsKLSNl
bHNlCi1zdHJ1Y3QgRW5jb2RlZEpTVmFsdWVIYXNoVHJhaXRzIDogSGFzaFRyYWl0czxFbmNvZGVk
SlNWYWx1ZT4gewotICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShFbmNvZGVk
SlNWYWx1ZSYgc2xvdCkgeyBzbG90ID0gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoSlNWYWx1ZTo6
SGFzaFRhYmxlRGVsZXRlZFZhbHVlKSk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1
ZShFbmNvZGVkSlNWYWx1ZSB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPT0gSlNWYWx1ZTo6ZW5jb2Rl
KEpTVmFsdWUoSlNWYWx1ZTo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKSk7IH0KLX07Ci0jZW5kaWYK
LQotdHlwZWRlZiBIYXNoTWFwPEVuY29kZWRKU1ZhbHVlLCB1bnNpZ25lZCwgRW5jb2RlZEpTVmFs
dWVIYXNoLCBFbmNvZGVkSlNWYWx1ZUhhc2hUcmFpdHM+IEpTVmFsdWVNYXA7Ci0KLS8vIFN0YW5k
LWFsb25lIGhlbHBlciBmdW5jdGlvbnMuCi1pbmxpbmUgSlNWYWx1ZSBqc051bGwoKQotewotICAg
IHJldHVybiBKU1ZhbHVlKEpTVmFsdWU6OkpTTnVsbCk7Ci19Ci0KLWlubGluZSBKU1ZhbHVlIGpz
VW5kZWZpbmVkKCkKLXsKLSAgICByZXR1cm4gSlNWYWx1ZShKU1ZhbHVlOjpKU1VuZGVmaW5lZCk7
Ci19Ci0KLWlubGluZSBKU1ZhbHVlIGpzQm9vbGVhbihib29sIGIpCi17Ci0gICAgcmV0dXJuIGIg
PyBKU1ZhbHVlKEpTVmFsdWU6OkpTVHJ1ZSkgOiBKU1ZhbHVlKEpTVmFsdWU6OkpTRmFsc2UpOwot
fQotCi1BTFdBWVNfSU5MSU5FIEpTVmFsdWUganNEb3VibGVOdW1iZXIoZG91YmxlIGQpCi17Ci0g
ICAgQVNTRVJUKEpTVmFsdWUoSlNWYWx1ZTo6RW5jb2RlQXNEb3VibGUsIGQpLmlzTnVtYmVyKCkp
OwotICAgIHJldHVybiBKU1ZhbHVlKEpTVmFsdWU6OkVuY29kZUFzRG91YmxlLCBkKTsKLX0KLQot
QUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzTnVtYmVyKGRvdWJsZSBkKQotewotICAgIEFTU0VSVChK
U1ZhbHVlKGQpLmlzTnVtYmVyKCkpOwotICAgIHJldHVybiBKU1ZhbHVlKGQpOwotfQotCi1BTFdB
WVNfSU5MSU5FIEpTVmFsdWUganNOdW1iZXIoY2hhciBpKQotewotICAgIHJldHVybiBKU1ZhbHVl
KGkpOwotfQotCi1BTFdBWVNfSU5MSU5FIEpTVmFsdWUganNOdW1iZXIodW5zaWduZWQgY2hhciBp
KQotewotICAgIHJldHVybiBKU1ZhbHVlKGkpOwotfQotCi1BTFdBWVNfSU5MSU5FIEpTVmFsdWUg
anNOdW1iZXIoc2hvcnQgaSkKLXsKLSAgICByZXR1cm4gSlNWYWx1ZShpKTsKLX0KLQotQUxXQVlT
X0lOTElORSBKU1ZhbHVlIGpzTnVtYmVyKHVuc2lnbmVkIHNob3J0IGkpCi17Ci0gICAgcmV0dXJu
IEpTVmFsdWUoaSk7Ci19Ci0KLUFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc051bWJlcihpbnQgaSkK
LXsKLSAgICByZXR1cm4gSlNWYWx1ZShpKTsKLX0KLQotQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpz
TnVtYmVyKHVuc2lnbmVkIGkpCi17Ci0gICAgcmV0dXJuIEpTVmFsdWUoaSk7Ci19Ci0KLUFMV0FZ
U19JTkxJTkUgSlNWYWx1ZSBqc051bWJlcihsb25nIGkpCi17Ci0gICAgcmV0dXJuIEpTVmFsdWUo
aSk7Ci19Ci0KLUFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc051bWJlcih1bnNpZ25lZCBsb25nIGkp
Ci17Ci0gICAgcmV0dXJuIEpTVmFsdWUoaSk7Ci19Ci0KLUFMV0FZU19JTkxJTkUgSlNWYWx1ZSBq
c051bWJlcihsb25nIGxvbmcgaSkKLXsKLSAgICByZXR1cm4gSlNWYWx1ZShpKTsKLX0KLQotQUxX
QVlTX0lOTElORSBKU1ZhbHVlIGpzTnVtYmVyKHVuc2lnbmVkIGxvbmcgbG9uZyBpKQotewotICAg
IHJldHVybiBKU1ZhbHVlKGkpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEpT
VmFsdWUgYSwgY29uc3QgSlNDZWxsKiBiKSB7IHJldHVybiBhID09IEpTVmFsdWUoYik7IH0KLWlu
bGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgSlNDZWxsKiBhLCBjb25zdCBKU1ZhbHVlIGIpIHsg
cmV0dXJuIEpTVmFsdWUoYSkgPT0gYjsgfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IEpTVmFsdWUgYSwgY29uc3QgSlNDZWxsKiBiKSB7IHJldHVybiBhICE9IEpTVmFsdWUoYik7IH0K
LWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgSlNDZWxsKiBhLCBjb25zdCBKU1ZhbHVlIGIp
IHsgcmV0dXJuIEpTVmFsdWUoYSkgIT0gYjsgfQotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQotI2Vu
ZGlmIC8vIEpTVmFsdWVfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNW
YWx1ZUlubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1ZhbHVlSW5saW5lcy5oCShyZXZpc2lvbiAxNDAzNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1ZhbHVlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDc5OSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICov
Ci0KLSNpZm5kZWYgSlNWYWx1ZUlubGluZXNfaAotI2RlZmluZSBKU1ZhbHVlSW5saW5lc19oCi0K
LSNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCi0jaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5o
IgotI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKLSNpbmNsdWRlICJKU1ZhbHVlLmgiCi0KLW5hbWVz
cGFjZSBKU0MgewotCi1BTFdBWVNfSU5MSU5FIGludDMyX3QgSlNWYWx1ZTo6dG9JbnQzMihFeGVj
U3RhdGUqIGV4ZWMpIGNvbnN0Ci17Ci0gICAgaWYgKGlzSW50MzIoKSkKLSAgICAgICAgcmV0dXJu
IGFzSW50MzIoKTsKLSAgICByZXR1cm4gSlNDOjp0b0ludDMyKHRvTnVtYmVyKGV4ZWMpKTsKLX0K
LQotaW5saW5lIHVpbnQzMl90IEpTVmFsdWU6OnRvVUludDMyKEV4ZWNTdGF0ZSogZXhlYykgY29u
c3QKLXsKLSAgICAvLyBTZWUgY29tbWVudCBvbiBKU0M6OnRvVUludDMyLCBhYm92ZS4KLSAgICBy
ZXR1cm4gdG9JbnQzMihleGVjKTsKLX0KLQotaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNVSW50MzIo
KSBjb25zdAotewotICAgIHJldHVybiBpc0ludDMyKCkgJiYgYXNJbnQzMigpID49IDA7Ci19Ci0K
LWlubGluZSB1aW50MzJfdCBKU1ZhbHVlOjphc1VJbnQzMigpIGNvbnN0Ci17Ci0gICAgQVNTRVJU
KGlzVUludDMyKCkpOwotICAgIHJldHVybiBhc0ludDMyKCk7Ci19Ci0KLWlubGluZSBkb3VibGUg
SlNWYWx1ZTo6YXNOdW1iZXIoKSBjb25zdAotewotICAgIEFTU0VSVChpc051bWJlcigpKTsKLSAg
ICByZXR1cm4gaXNJbnQzMigpID8gYXNJbnQzMigpIDogYXNEb3VibGUoKTsKLX0KLQotaW5saW5l
IEpTVmFsdWUganNOYU4oKQotewotICAgIHJldHVybiBKU1ZhbHVlKFFOYU4pOwotfQotCi1pbmxp
bmUgSlNWYWx1ZTo6SlNWYWx1ZShjaGFyIGkpCi17Ci0gICAgKnRoaXMgPSBKU1ZhbHVlKHN0YXRp
Y19jYXN0PGludDMyX3Q+KGkpKTsKLX0KLQotaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUodW5zaWdu
ZWQgY2hhciBpKQotewotICAgICp0aGlzID0gSlNWYWx1ZShzdGF0aWNfY2FzdDxpbnQzMl90Pihp
KSk7Ci19Ci0KLWlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKHNob3J0IGkpCi17Ci0gICAgKnRoaXMg
PSBKU1ZhbHVlKHN0YXRpY19jYXN0PGludDMyX3Q+KGkpKTsKLX0KLQotaW5saW5lIEpTVmFsdWU6
OkpTVmFsdWUodW5zaWduZWQgc2hvcnQgaSkKLXsKLSAgICAqdGhpcyA9IEpTVmFsdWUoc3RhdGlj
X2Nhc3Q8aW50MzJfdD4oaSkpOwotfQotCi1pbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZSh1bnNpZ25l
ZCBpKQotewotICAgIGlmIChzdGF0aWNfY2FzdDxpbnQzMl90PihpKSA8IDApIHsKLSAgICAgICAg
KnRoaXMgPSBKU1ZhbHVlKEVuY29kZUFzRG91YmxlLCBzdGF0aWNfY2FzdDxkb3VibGU+KGkpKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAqdGhpcyA9IEpTVmFsdWUoc3RhdGljX2Nhc3Q8
aW50MzJfdD4oaSkpOwotfQotCi1pbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShsb25nIGkpCi17Ci0g
ICAgaWYgKHN0YXRpY19jYXN0PGludDMyX3Q+KGkpICE9IGkpIHsKLSAgICAgICAgKnRoaXMgPSBK
U1ZhbHVlKEVuY29kZUFzRG91YmxlLCBzdGF0aWNfY2FzdDxkb3VibGU+KGkpKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSAgICAqdGhpcyA9IEpTVmFsdWUoc3RhdGljX2Nhc3Q8aW50MzJfdD4o
aSkpOwotfQotCi1pbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZSh1bnNpZ25lZCBsb25nIGkpCi17Ci0g
ICAgaWYgKHN0YXRpY19jYXN0PHVpbnQzMl90PihpKSAhPSBpKSB7Ci0gICAgICAgICp0aGlzID0g
SlNWYWx1ZShFbmNvZGVBc0RvdWJsZSwgc3RhdGljX2Nhc3Q8ZG91YmxlPihpKSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0gICAgKnRoaXMgPSBKU1ZhbHVlKHN0YXRpY19jYXN0PHVpbnQzMl90
PihpKSk7Ci19Ci0KLWlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKGxvbmcgbG9uZyBpKQotewotICAg
IGlmIChzdGF0aWNfY2FzdDxpbnQzMl90PihpKSAhPSBpKSB7Ci0gICAgICAgICp0aGlzID0gSlNW
YWx1ZShFbmNvZGVBc0RvdWJsZSwgc3RhdGljX2Nhc3Q8ZG91YmxlPihpKSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgKnRoaXMgPSBKU1ZhbHVlKHN0YXRpY19jYXN0PGludDMyX3Q+KGkp
KTsKLX0KLQotaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUodW5zaWduZWQgbG9uZyBsb25nIGkpCi17
Ci0gICAgaWYgKHN0YXRpY19jYXN0PHVpbnQzMl90PihpKSAhPSBpKSB7Ci0gICAgICAgICp0aGlz
ID0gSlNWYWx1ZShFbmNvZGVBc0RvdWJsZSwgc3RhdGljX2Nhc3Q8ZG91YmxlPihpKSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgKnRoaXMgPSBKU1ZhbHVlKHN0YXRpY19jYXN0PHVpbnQz
Ml90PihpKSk7Ci19Ci0KLWlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKGRvdWJsZSBkKQotewotICAg
IGNvbnN0IGludDMyX3QgYXNJbnQzMiA9IHN0YXRpY19jYXN0PGludDMyX3Q+KGQpOwotICAgIGlm
IChhc0ludDMyICE9IGQgfHwgKCFhc0ludDMyICYmIHNpZ25iaXQoZCkpKSB7IC8vIHRydWUgZm9y
IC0wLjAKLSAgICAgICAgKnRoaXMgPSBKU1ZhbHVlKEVuY29kZUFzRG91YmxlLCBkKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSAgICAqdGhpcyA9IEpTVmFsdWUoc3RhdGljX2Nhc3Q8aW50MzJf
dD4oZCkpOwotfQotCi1pbmxpbmUgRW5jb2RlZEpTVmFsdWUgSlNWYWx1ZTo6ZW5jb2RlKEpTVmFs
dWUgdmFsdWUpCi17Ci0gICAgcmV0dXJuIHZhbHVlLnUuYXNJbnQ2NDsKLX0KLQotaW5saW5lIEpT
VmFsdWUgSlNWYWx1ZTo6ZGVjb2RlKEVuY29kZWRKU1ZhbHVlIGVuY29kZWRKU1ZhbHVlKQotewot
ICAgIEpTVmFsdWUgdjsKLSAgICB2LnUuYXNJbnQ2NCA9IGVuY29kZWRKU1ZhbHVlOwotICAgIHJl
dHVybiB2OwotfQotCi0jaWYgVVNFKEpTVkFMVUUzMl82NCkKLWlubGluZSBKU1ZhbHVlOjpKU1Zh
bHVlKCkKLXsKLSAgICB1LmFzQml0cy50YWcgPSBFbXB0eVZhbHVlVGFnOwotICAgIHUuYXNCaXRz
LnBheWxvYWQgPSAwOwotfQotCi1pbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShKU051bGxUYWcpCi17
Ci0gICAgdS5hc0JpdHMudGFnID0gTnVsbFRhZzsKLSAgICB1LmFzQml0cy5wYXlsb2FkID0gMDsK
LX0KLSAgICAKLWlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKEpTVW5kZWZpbmVkVGFnKQotewotICAg
IHUuYXNCaXRzLnRhZyA9IFVuZGVmaW5lZFRhZzsKLSAgICB1LmFzQml0cy5wYXlsb2FkID0gMDsK
LX0KLSAgICAKLWlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKEpTVHJ1ZVRhZykKLXsKLSAgICB1LmFz
Qml0cy50YWcgPSBCb29sZWFuVGFnOwotICAgIHUuYXNCaXRzLnBheWxvYWQgPSAxOwotfQotICAg
IAotaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoSlNGYWxzZVRhZykKLXsKLSAgICB1LmFzQml0cy50
YWcgPSBCb29sZWFuVGFnOwotICAgIHUuYXNCaXRzLnBheWxvYWQgPSAwOwotfQotCi1pbmxpbmUg
SlNWYWx1ZTo6SlNWYWx1ZShIYXNoVGFibGVEZWxldGVkVmFsdWVUYWcpCi17Ci0gICAgdS5hc0Jp
dHMudGFnID0gRGVsZXRlZFZhbHVlVGFnOwotICAgIHUuYXNCaXRzLnBheWxvYWQgPSAwOwotfQot
Ci1pbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShKU0NlbGwqIHB0cikKLXsKLSAgICBpZiAocHRyKQot
ICAgICAgICB1LmFzQml0cy50YWcgPSBDZWxsVGFnOwotICAgIGVsc2UKLSAgICAgICAgdS5hc0Jp
dHMudGFnID0gRW1wdHlWYWx1ZVRhZzsKLSAgICB1LmFzQml0cy5wYXlsb2FkID0gcmVpbnRlcnBy
ZXRfY2FzdDxpbnQzMl90PihwdHIpOwotfQotCi1pbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShjb25z
dCBKU0NlbGwqIHB0cikKLXsKLSAgICBpZiAocHRyKQotICAgICAgICB1LmFzQml0cy50YWcgPSBD
ZWxsVGFnOwotICAgIGVsc2UKLSAgICAgICAgdS5hc0JpdHMudGFnID0gRW1wdHlWYWx1ZVRhZzsK
LSAgICB1LmFzQml0cy5wYXlsb2FkID0gcmVpbnRlcnByZXRfY2FzdDxpbnQzMl90Pihjb25zdF9j
YXN0PEpTQ2VsbCo+KHB0cikpOwotfQotCi1pbmxpbmUgSlNWYWx1ZTo6b3BlcmF0b3IgYm9vbCgp
IGNvbnN0Ci17Ci0gICAgQVNTRVJUKHRhZygpICE9IERlbGV0ZWRWYWx1ZVRhZyk7Ci0gICAgcmV0
dXJuIHRhZygpICE9IEVtcHR5VmFsdWVUYWc7Ci19Ci0KLWlubGluZSBib29sIEpTVmFsdWU6Om9w
ZXJhdG9yPT0oY29uc3QgSlNWYWx1ZSYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHUuYXNJ
bnQ2NCA9PSBvdGhlci51LmFzSW50NjQ7Ci19Ci0KLWlubGluZSBib29sIEpTVmFsdWU6Om9wZXJh
dG9yIT0oY29uc3QgSlNWYWx1ZSYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHUuYXNJbnQ2
NCAhPSBvdGhlci51LmFzSW50NjQ7Ci19Ci0KLWlubGluZSBib29sIEpTVmFsdWU6OmlzRW1wdHko
KSBjb25zdAotewotICAgIHJldHVybiB0YWcoKSA9PSBFbXB0eVZhbHVlVGFnOwotfQotCi1pbmxp
bmUgYm9vbCBKU1ZhbHVlOjppc1VuZGVmaW5lZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHRhZygp
ID09IFVuZGVmaW5lZFRhZzsKLX0KLQotaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNOdWxsKCkgY29u
c3QKLXsKLSAgICByZXR1cm4gdGFnKCkgPT0gTnVsbFRhZzsKLX0KLQotaW5saW5lIGJvb2wgSlNW
YWx1ZTo6aXNVbmRlZmluZWRPck51bGwoKSBjb25zdAotewotICAgIHJldHVybiBpc1VuZGVmaW5l
ZCgpIHx8IGlzTnVsbCgpOwotfQotCi1pbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0NlbGwoKSBjb25z
dAotewotICAgIHJldHVybiB0YWcoKSA9PSBDZWxsVGFnOwotfQotCi1pbmxpbmUgYm9vbCBKU1Zh
bHVlOjppc0ludDMyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gdGFnKCkgPT0gSW50MzJUYWc7Ci19
Ci0KLWlubGluZSBib29sIEpTVmFsdWU6OmlzRG91YmxlKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
dGFnKCkgPCBMb3dlc3RUYWc7Ci19Ci0KLWlubGluZSBib29sIEpTVmFsdWU6OmlzVHJ1ZSgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIHRhZygpID09IEJvb2xlYW5UYWcgJiYgcGF5bG9hZCgpOwotfQot
Ci1pbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0ZhbHNlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gdGFn
KCkgPT0gQm9vbGVhblRhZyAmJiAhcGF5bG9hZCgpOwotfQotCi1pbmxpbmUgdWludDMyX3QgSlNW
YWx1ZTo6dGFnKCkgY29uc3QKLXsKLSAgICByZXR1cm4gdS5hc0JpdHMudGFnOwotfQotICAgIAot
aW5saW5lIGludDMyX3QgSlNWYWx1ZTo6cGF5bG9hZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHUu
YXNCaXRzLnBheWxvYWQ7Ci19Ci0gICAgCi1pbmxpbmUgaW50MzJfdCBKU1ZhbHVlOjphc0ludDMy
KCkgY29uc3QKLXsKLSAgICBBU1NFUlQoaXNJbnQzMigpKTsKLSAgICByZXR1cm4gdS5hc0JpdHMu
cGF5bG9hZDsKLX0KLSAgICAKLWlubGluZSBkb3VibGUgSlNWYWx1ZTo6YXNEb3VibGUoKSBjb25z
dAotewotICAgIEFTU0VSVChpc0RvdWJsZSgpKTsKLSAgICByZXR1cm4gdS5hc0RvdWJsZTsKLX0K
LSAgICAKLUFMV0FZU19JTkxJTkUgSlNDZWxsKiBKU1ZhbHVlOjphc0NlbGwoKSBjb25zdAotewot
ICAgIEFTU0VSVChpc0NlbGwoKSk7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SlNDZWxs
Kj4odS5hc0JpdHMucGF5bG9hZCk7Ci19Ci0KLUFMV0FZU19JTkxJTkUgSlNWYWx1ZTo6SlNWYWx1
ZShFbmNvZGVBc0RvdWJsZVRhZywgZG91YmxlIGQpCi17Ci0gICAgdS5hc0RvdWJsZSA9IGQ7Ci19
Ci0KLWlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKGludCBpKQotewotICAgIHUuYXNCaXRzLnRhZyA9
IEludDMyVGFnOwotICAgIHUuYXNCaXRzLnBheWxvYWQgPSBpOwotfQotCi0jaWYgRU5BQkxFKExM
SU5UX0NfTE9PUCkKLWlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKGludDMyX3QgdGFnLCBpbnQzMl90
IHBheWxvYWQpCi17Ci0gICAgdS5hc0JpdHMudGFnID0gdGFnOwotICAgIHUuYXNCaXRzLnBheWxv
YWQgPSBwYXlsb2FkOwotfQotI2VuZGlmCi0KLWlubGluZSBib29sIEpTVmFsdWU6OmlzTnVtYmVy
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gaXNJbnQzMigpIHx8IGlzRG91YmxlKCk7Ci19Ci0KLWlu
bGluZSBib29sIEpTVmFsdWU6OmlzQm9vbGVhbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGlzVHJ1
ZSgpIHx8IGlzRmFsc2UoKTsKLX0KLQotaW5saW5lIGJvb2wgSlNWYWx1ZTo6YXNCb29sZWFuKCkg
Y29uc3QKLXsKLSAgICBBU1NFUlQoaXNCb29sZWFuKCkpOwotICAgIHJldHVybiBwYXlsb2FkKCk7
Ci19Ci0KLSNlbHNlIC8vICFVU0UoSlNWQUxVRTMyXzY0KSBpLmUuIFVTRShKU1ZBTFVFNjQpCi0K
LS8vIDB4MCBjYW4gbmV2ZXIgb2NjdXIgbmF0dXJhbGx5IGJlY2F1c2UgaXQgaGFzIGEgdGFnIG9m
IDAwLCBpbmRpY2F0aW5nIGEgcG9pbnRlciB2YWx1ZSwgYnV0IGEgcGF5bG9hZCBvZiAweDAsIHdo
aWNoIGlzIGluIHRoZSAoaW52YWxpZCkgemVybyBwYWdlLgotaW5saW5lIEpTVmFsdWU6OkpTVmFs
dWUoKQotewotICAgIHUuYXNJbnQ2NCA9IFZhbHVlRW1wdHk7Ci19Ci0KLS8vIDB4NCBjYW4gbmV2
ZXIgb2NjdXIgbmF0dXJhbGx5IGJlY2F1c2UgaXQgaGFzIGEgdGFnIG9mIDAwLCBpbmRpY2F0aW5n
IGEgcG9pbnRlciB2YWx1ZSwgYnV0IGEgcGF5bG9hZCBvZiAweDQsIHdoaWNoIGlzIGluIHRoZSAo
aW52YWxpZCkgemVybyBwYWdlLgotaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoSGFzaFRhYmxlRGVs
ZXRlZFZhbHVlVGFnKQotewotICAgIHUuYXNJbnQ2NCA9IFZhbHVlRGVsZXRlZDsKLX0KLQotaW5s
aW5lIEpTVmFsdWU6OkpTVmFsdWUoSlNDZWxsKiBwdHIpCi17Ci0gICAgdS5hc0ludDY0ID0gcmVp
bnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHB0cik7Ci19Ci0KLWlubGluZSBKU1ZhbHVlOjpKU1Zh
bHVlKGNvbnN0IEpTQ2VsbCogcHRyKQotewotICAgIHUuYXNJbnQ2NCA9IHJlaW50ZXJwcmV0X2Nh
c3Q8dWludHB0cl90Pihjb25zdF9jYXN0PEpTQ2VsbCo+KHB0cikpOwotfQotCi1pbmxpbmUgSlNW
YWx1ZTo6b3BlcmF0b3IgYm9vbCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHUuYXNJbnQ2NDsKLX0K
LQotaW5saW5lIGJvb2wgSlNWYWx1ZTo6b3BlcmF0b3I9PShjb25zdCBKU1ZhbHVlJiBvdGhlcikg
Y29uc3QKLXsKLSAgICByZXR1cm4gdS5hc0ludDY0ID09IG90aGVyLnUuYXNJbnQ2NDsKLX0KLQot
aW5saW5lIGJvb2wgSlNWYWx1ZTo6b3BlcmF0b3IhPShjb25zdCBKU1ZhbHVlJiBvdGhlcikgY29u
c3QKLXsKLSAgICByZXR1cm4gdS5hc0ludDY0ICE9IG90aGVyLnUuYXNJbnQ2NDsKLX0KLQotaW5s
aW5lIGJvb2wgSlNWYWx1ZTo6aXNFbXB0eSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHUuYXNJbnQ2
NCA9PSBWYWx1ZUVtcHR5OwotfQotCi1pbmxpbmUgYm9vbCBKU1ZhbHVlOjppc1VuZGVmaW5lZCgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIGFzVmFsdWUoKSA9PSBKU1ZhbHVlKEpTVW5kZWZpbmVkKTsK
LX0KLQotaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNOdWxsKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
YXNWYWx1ZSgpID09IEpTVmFsdWUoSlNOdWxsKTsKLX0KLQotaW5saW5lIGJvb2wgSlNWYWx1ZTo6
aXNUcnVlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gYXNWYWx1ZSgpID09IEpTVmFsdWUoSlNUcnVl
KTsKLX0KLQotaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNGYWxzZSgpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIGFzVmFsdWUoKSA9PSBKU1ZhbHVlKEpTRmFsc2UpOwotfQotCi1pbmxpbmUgYm9vbCBKU1Zh
bHVlOjphc0Jvb2xlYW4oKSBjb25zdAotewotICAgIEFTU0VSVChpc0Jvb2xlYW4oKSk7Ci0gICAg
cmV0dXJuIGFzVmFsdWUoKSA9PSBKU1ZhbHVlKEpTVHJ1ZSk7Ci19Ci0KLWlubGluZSBpbnQzMl90
IEpTVmFsdWU6OmFzSW50MzIoKSBjb25zdAotewotICAgIEFTU0VSVChpc0ludDMyKCkpOwotICAg
IHJldHVybiBzdGF0aWNfY2FzdDxpbnQzMl90Pih1LmFzSW50NjQpOwotfQotCi1pbmxpbmUgYm9v
bCBKU1ZhbHVlOjppc0RvdWJsZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGlzTnVtYmVyKCkgJiYg
IWlzSW50MzIoKTsKLX0KLQotaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoSlNOdWxsVGFnKQotewot
ICAgIHUuYXNJbnQ2NCA9IFZhbHVlTnVsbDsKLX0KLSAgICAKLWlubGluZSBKU1ZhbHVlOjpKU1Zh
bHVlKEpTVW5kZWZpbmVkVGFnKQotewotICAgIHUuYXNJbnQ2NCA9IFZhbHVlVW5kZWZpbmVkOwot
fQotCi1pbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShKU1RydWVUYWcpCi17Ci0gICAgdS5hc0ludDY0
ID0gVmFsdWVUcnVlOwotfQotCi1pbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShKU0ZhbHNlVGFnKQot
ewotICAgIHUuYXNJbnQ2NCA9IFZhbHVlRmFsc2U7Ci19Ci0KLWlubGluZSBib29sIEpTVmFsdWU6
OmlzVW5kZWZpbmVkT3JOdWxsKCkgY29uc3QKLXsKLSAgICAvLyBVbmRlZmluZWQgYW5kIG51bGwg
c2hhcmUgdGhlIHNhbWUgdmFsdWUsIGJhciB0aGUgJ3VuZGVmaW5lZCcgYml0IGluIHRoZSBleHRl
bmRlZCB0YWcuCi0gICAgcmV0dXJuICh1LmFzSW50NjQgJiB+VGFnQml0VW5kZWZpbmVkKSA9PSBW
YWx1ZU51bGw7Ci19Ci0KLWlubGluZSBib29sIEpTVmFsdWU6OmlzQm9vbGVhbigpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuICh1LmFzSW50NjQgJiB+MSkgPT0gVmFsdWVGYWxzZTsKLX0KLQotaW5saW5l
IGJvb2wgSlNWYWx1ZTo6aXNDZWxsKCkgY29uc3QKLXsKLSAgICByZXR1cm4gISh1LmFzSW50NjQg
JiBUYWdNYXNrKTsKLX0KLQotaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNJbnQzMigpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuICh1LmFzSW50NjQgJiBUYWdUeXBlTnVtYmVyKSA9PSBUYWdUeXBlTnVtYmVy
OwotfQotCi1pbmxpbmUgaW50NjRfdCByZWludGVycHJldERvdWJsZVRvSW50NjQoZG91YmxlIHZh
bHVlKQotewotICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8aW50NjRfdD4odmFsdWUpOwotfQotaW5s
aW5lIGRvdWJsZSByZWludGVycHJldEludDY0VG9Eb3VibGUoaW50NjRfdCB2YWx1ZSkKLXsKLSAg
ICByZXR1cm4gYml0d2lzZV9jYXN0PGRvdWJsZT4odmFsdWUpOwotfQotCi1BTFdBWVNfSU5MSU5F
IEpTVmFsdWU6OkpTVmFsdWUoRW5jb2RlQXNEb3VibGVUYWcsIGRvdWJsZSBkKQotewotICAgIHUu
YXNJbnQ2NCA9IHJlaW50ZXJwcmV0RG91YmxlVG9JbnQ2NChkKSArIERvdWJsZUVuY29kZU9mZnNl
dDsKLX0KLQotaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoaW50IGkpCi17Ci0gICAgdS5hc0ludDY0
ID0gVGFnVHlwZU51bWJlciB8IHN0YXRpY19jYXN0PHVpbnQzMl90PihpKTsKLX0KLQotaW5saW5l
IGRvdWJsZSBKU1ZhbHVlOjphc0RvdWJsZSgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKGlzRG91Ymxl
KCkpOwotICAgIHJldHVybiByZWludGVycHJldEludDY0VG9Eb3VibGUodS5hc0ludDY0IC0gRG91
YmxlRW5jb2RlT2Zmc2V0KTsKLX0KLQotaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNOdW1iZXIoKSBj
b25zdAotewotICAgIHJldHVybiB1LmFzSW50NjQgJiBUYWdUeXBlTnVtYmVyOwotfQotCi1BTFdB
WVNfSU5MSU5FIEpTQ2VsbCogSlNWYWx1ZTo6YXNDZWxsKCkgY29uc3QKLXsKLSAgICBBU1NFUlQo
aXNDZWxsKCkpOwotICAgIHJldHVybiB1LnB0cjsKLX0KLQotI2VuZGlmIC8vIFVTRShKU1ZBTFVF
NjQpCi0KLWlubGluZSBib29sIEpTVmFsdWU6OmlzU3RyaW5nKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gaXNDZWxsKCkgJiYgYXNDZWxsKCktPmlzU3RyaW5nKCk7Ci19Ci0KLWlubGluZSBib29sIEpT
VmFsdWU6OmlzUHJpbWl0aXZlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gIWlzQ2VsbCgpIHx8IGFz
Q2VsbCgpLT5pc1N0cmluZygpOwotfQotCi1pbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0dldHRlclNl
dHRlcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGlzQ2VsbCgpICYmIGFzQ2VsbCgpLT5pc0dldHRl
clNldHRlcigpOwotfQotCi1pbmxpbmUgYm9vbCBKU1ZhbHVlOjppc09iamVjdCgpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIGlzQ2VsbCgpICYmIGFzQ2VsbCgpLT5pc09iamVjdCgpOwotfQotCi1pbmxp
bmUgYm9vbCBKU1ZhbHVlOjpnZXRTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBTdHJpbmcmIHMpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIGlzQ2VsbCgpICYmIGFzQ2VsbCgpLT5nZXRTdHJpbmcoZXhlYywg
cyk7Ci19Ci0KLWlubGluZSBTdHJpbmcgSlNWYWx1ZTo6Z2V0U3RyaW5nKEV4ZWNTdGF0ZSogZXhl
YykgY29uc3QKLXsKLSAgICByZXR1cm4gaXNDZWxsKCkgPyBhc0NlbGwoKS0+Z2V0U3RyaW5nKGV4
ZWMpIDogU3RyaW5nKCk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBCYXNlPiBTdHJpbmcgSGFu
ZGxlQ29udmVydGVyPEJhc2UsIFVua25vd24+OjpnZXRTdHJpbmcoRXhlY1N0YXRlKiBleGVjKSBj
b25zdAotewotICAgIHJldHVybiBqc1ZhbHVlKCkuZ2V0U3RyaW5nKGV4ZWMpOwotfQotCi1pbmxp
bmUgSlNPYmplY3QqIEpTVmFsdWU6OmdldE9iamVjdCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGlz
Q2VsbCgpID8gYXNDZWxsKCktPmdldE9iamVjdCgpIDogMDsKLX0KLQotQUxXQVlTX0lOTElORSBi
b29sIEpTVmFsdWU6OmdldFVJbnQzMih1aW50MzJfdCYgdikgY29uc3QKLXsKLSAgICBpZiAoaXNJ
bnQzMigpKSB7Ci0gICAgICAgIGludDMyX3QgaSA9IGFzSW50MzIoKTsKLSAgICAgICAgdiA9IHN0
YXRpY19jYXN0PHVpbnQzMl90PihpKTsKLSAgICAgICAgcmV0dXJuIGkgPj0gMDsKLSAgICB9Ci0g
ICAgaWYgKGlzRG91YmxlKCkpIHsKLSAgICAgICAgZG91YmxlIGQgPSBhc0RvdWJsZSgpOwotICAg
ICAgICB2ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGQpOwotICAgICAgICByZXR1cm4gdiA9PSBk
OwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWlubGluZSBKU1ZhbHVlIEpTVmFsdWU6
OnRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSogZXhlYywgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSBwcmVm
ZXJyZWRUeXBlKSBjb25zdAotewotICAgIHJldHVybiBpc0NlbGwoKSA/IGFzQ2VsbCgpLT50b1By
aW1pdGl2ZShleGVjLCBwcmVmZXJyZWRUeXBlKSA6IGFzVmFsdWUoKTsKLX0KLQotaW5saW5lIGJv
b2wgSlNWYWx1ZTo6Z2V0UHJpbWl0aXZlTnVtYmVyKEV4ZWNTdGF0ZSogZXhlYywgZG91YmxlJiBu
dW1iZXIsIEpTVmFsdWUmIHZhbHVlKQotewotICAgIGlmIChpc0ludDMyKCkpIHsKLSAgICAgICAg
bnVtYmVyID0gYXNJbnQzMigpOwotICAgICAgICB2YWx1ZSA9ICp0aGlzOwotICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICB9Ci0gICAgaWYgKGlzRG91YmxlKCkpIHsKLSAgICAgICAgbnVtYmVyID0g
YXNEb3VibGUoKTsKLSAgICAgICAgdmFsdWUgPSAqdGhpczsKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgfQotICAgIGlmIChpc0NlbGwoKSkKLSAgICAgICAgcmV0dXJuIGFzQ2VsbCgpLT5nZXRQ
cmltaXRpdmVOdW1iZXIoZXhlYywgbnVtYmVyLCB2YWx1ZSk7Ci0gICAgaWYgKGlzVHJ1ZSgpKSB7
Ci0gICAgICAgIG51bWJlciA9IDEuMDsKLSAgICAgICAgdmFsdWUgPSAqdGhpczsKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgfQotICAgIGlmIChpc0ZhbHNlKCkgfHwgaXNOdWxsKCkpIHsKLSAg
ICAgICAgbnVtYmVyID0gMC4wOwotICAgICAgICB2YWx1ZSA9ICp0aGlzOwotICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICB9Ci0gICAgQVNTRVJUKGlzVW5kZWZpbmVkKCkpOwotICAgIG51bWJlciA9
IFFOYU47Ci0gICAgdmFsdWUgPSAqdGhpczsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotQUxXQVlT
X0lOTElORSBkb3VibGUgSlNWYWx1ZTo6dG9OdW1iZXIoRXhlY1N0YXRlKiBleGVjKSBjb25zdAot
ewotICAgIGlmIChpc0ludDMyKCkpCi0gICAgICAgIHJldHVybiBhc0ludDMyKCk7Ci0gICAgaWYg
KGlzRG91YmxlKCkpCi0gICAgICAgIHJldHVybiBhc0RvdWJsZSgpOwotICAgIHJldHVybiB0b051
bWJlclNsb3dDYXNlKGV4ZWMpOwotfQotCi1pbmxpbmUgSlNPYmplY3QqIEpTVmFsdWU6OnRvT2Jq
ZWN0KEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKLXsKLSAgICByZXR1cm4gaXNDZWxsKCkgPyBhc0Nl
bGwoKS0+dG9PYmplY3QoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSA6IHRvT2Jq
ZWN0U2xvd0Nhc2UoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKLX0KLQotaW5s
aW5lIEpTT2JqZWN0KiBKU1ZhbHVlOjp0b09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGlzQ2VsbCgpID8gYXND
ZWxsKCktPnRvT2JqZWN0KGV4ZWMsIGdsb2JhbE9iamVjdCkgOiB0b09iamVjdFNsb3dDYXNlKGV4
ZWMsIGdsb2JhbE9iamVjdCk7Ci19Ci0KLWlubGluZSBib29sIEpTVmFsdWU6OmlzRnVuY3Rpb24o
KSBjb25zdAotewotICAgIHJldHVybiBpc0NlbGwoKSAmJiAoYXNDZWxsKCktPmluaGVyaXRzKCZK
U0Z1bmN0aW9uOjpzX2luZm8pIHx8IGFzQ2VsbCgpLT5pbmhlcml0cygmSW50ZXJuYWxGdW5jdGlv
bjo6c19pbmZvKSk7Ci19Ci0KLS8vIHRoaXMgbWV0aG9kIGlzIGhlcmUgdG8gYmUgYWZ0ZXIgdGhl
IGlubGluZSBkZWNsYXJhdGlvbiBvZiBKU0NlbGw6OmluaGVyaXRzCi1pbmxpbmUgYm9vbCBKU1Zh
bHVlOjppbmhlcml0cyhjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbykgY29uc3QKLXsKLSAgICBy
ZXR1cm4gaXNDZWxsKCkgJiYgYXNDZWxsKCktPmluaGVyaXRzKGNsYXNzSW5mbyk7Ci19Ci0KLWlu
bGluZSBKU09iamVjdCogSlNWYWx1ZTo6dG9UaGlzT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykgY29u
c3QKLXsKLSAgICByZXR1cm4gaXNDZWxsKCkgPyBhc0NlbGwoKS0+bWV0aG9kVGFibGUoKS0+dG9U
aGlzT2JqZWN0KGFzQ2VsbCgpLCBleGVjKSA6IHRvVGhpc09iamVjdFNsb3dDYXNlKGV4ZWMpOwot
fQotCi1pbmxpbmUgSlNWYWx1ZSBKU1ZhbHVlOjpnZXQoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdAotewotICAgIFByb3BlcnR5U2xvdCBzbG90KGFzVmFs
dWUoKSk7Ci0gICAgcmV0dXJuIGdldChleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwotfQotCi1p
bmxpbmUgSlNWYWx1ZSBKU1ZhbHVlOjpnZXQoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpIGNvbnN0Ci17Ci0gICAgaWYgKFVOTElL
RUxZKCFpc0NlbGwoKSkpIHsKLSAgICAgICAgSlNPYmplY3QqIHByb3RvdHlwZSA9IHN5bnRoZXNp
emVQcm90b3R5cGUoZXhlYyk7Ci0gICAgICAgIGlmICghcHJvdG90eXBlLT5nZXRQcm9wZXJ0eVNs
b3QoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KSkKLSAgICAgICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOwotICAgICAgICByZXR1cm4gc2xvdC5nZXRWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUp
OwotICAgIH0KLSAgICBKU0NlbGwqIGNlbGwgPSBhc0NlbGwoKTsKLSAgICB3aGlsZSAodHJ1ZSkg
ewotICAgICAgICBpZiAoY2VsbC0+ZmFzdEdldE93blByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0
eU5hbWUsIHNsb3QpKQotICAgICAgICAgICAgcmV0dXJuIHNsb3QuZ2V0VmFsdWUoZXhlYywgcHJv
cGVydHlOYW1lKTsKLSAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSBhc09iamVjdChjZWxsKS0+
cHJvdG90eXBlKCk7Ci0gICAgICAgIGlmICghcHJvdG90eXBlLmlzT2JqZWN0KCkpCi0gICAgICAg
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICAgICAgY2VsbCA9IGFzT2JqZWN0KHByb3Rv
dHlwZSk7Ci0gICAgfQotfQotCi1pbmxpbmUgSlNWYWx1ZSBKU1ZhbHVlOjpnZXQoRXhlY1N0YXRl
KiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpIGNvbnN0Ci17Ci0gICAgUHJvcGVydHlTbG90
IHNsb3QoYXNWYWx1ZSgpKTsKLSAgICByZXR1cm4gZ2V0KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xv
dCk7Ci19Ci0KLWlubGluZSBKU1ZhbHVlIEpTVmFsdWU6OmdldChFeGVjU3RhdGUqIGV4ZWMsIHVu
c2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KSBjb25zdAotewotICAgIGlm
IChVTkxJS0VMWSghaXNDZWxsKCkpKSB7Ci0gICAgICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSBz
eW50aGVzaXplUHJvdG90eXBlKGV4ZWMpOwotICAgICAgICBpZiAoIXByb3RvdHlwZS0+Z2V0UHJv
cGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCkpCi0gICAgICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKLSAgICAgICAgcmV0dXJuIHNsb3QuZ2V0VmFsdWUoZXhlYywgcHJvcGVy
dHlOYW1lKTsKLSAgICB9Ci0gICAgSlNDZWxsKiBjZWxsID0gY29uc3RfY2FzdDxKU0NlbGwqPihh
c0NlbGwoKSk7Ci0gICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgaWYgKGNlbGwtPm1ldGhvZFRh
YmxlKCktPmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1l
LCBzbG90KSkKLSAgICAgICAgICAgIHJldHVybiBzbG90LmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5
TmFtZSk7Ci0gICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gYXNPYmplY3QoY2VsbCktPnByb3Rv
dHlwZSgpOwotICAgICAgICBpZiAoIXByb3RvdHlwZS5pc09iamVjdCgpKQotICAgICAgICAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgICAgIGNlbGwgPSBwcm90b3R5cGUuYXNDZWxsKCk7
Ci0gICAgfQotfQotCi1pbmxpbmUgdm9pZCBKU1ZhbHVlOjpwdXQoRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
IHNsb3QpCi17Ci0gICAgaWYgKFVOTElLRUxZKCFpc0NlbGwoKSkpIHsKLSAgICAgICAgcHV0VG9Q
cmltaXRpdmUoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgYXNDZWxsKCktPm1ldGhvZFRhYmxlKCktPnB1dChhc0NlbGwoKSwgZXhl
YywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7Ci19Ci0KLWlubGluZSB2b2lkIEpTVmFsdWU6
OnB1dEJ5SW5kZXgoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCi17Ci0gICAgaWYgKFVOTElLRUxZKCFpc0NlbGwo
KSkpIHsKLSAgICAgICAgcHV0VG9QcmltaXRpdmVCeUluZGV4KGV4ZWMsIHByb3BlcnR5TmFtZSwg
dmFsdWUsIHNob3VsZFRocm93KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBhc0NlbGwo
KS0+bWV0aG9kVGFibGUoKS0+cHV0QnlJbmRleChhc0NlbGwoKSwgZXhlYywgcHJvcGVydHlOYW1l
LCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwotfQotCi1pbmxpbmUgSlNWYWx1ZSBKU1ZhbHVlOjpzdHJ1
Y3R1cmVPclVuZGVmaW5lZCgpIGNvbnN0Ci17Ci0gICAgaWYgKGlzQ2VsbCgpKQotICAgICAgICBy
ZXR1cm4gSlNWYWx1ZShhc0NlbGwoKS0+c3RydWN0dXJlKCkpOwotICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOwotfQotCi0vLyBFQ01BIDExLjkuMwotaW5saW5lIGJvb2wgSlNWYWx1ZTo6ZXF1YWwo
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQotewotICAgIGlmICh2MS5p
c0ludDMyKCkgJiYgdjIuaXNJbnQzMigpKQotICAgICAgICByZXR1cm4gdjEgPT0gdjI7Ci0KLSAg
ICByZXR1cm4gZXF1YWxTbG93Q2FzZShleGVjLCB2MSwgdjIpOwotfQotCi1BTFdBWVNfSU5MSU5F
IGJvb2wgSlNWYWx1ZTo6ZXF1YWxTbG93Q2FzZUlubGluZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgdjEsIEpTVmFsdWUgdjIpCi17Ci0gICAgZG8gewotICAgICAgICBpZiAodjEuaXNOdW1iZXIo
KSAmJiB2Mi5pc051bWJlcigpKQotICAgICAgICAgICAgcmV0dXJuIHYxLmFzTnVtYmVyKCkgPT0g
djIuYXNOdW1iZXIoKTsKLQotICAgICAgICBib29sIHMxID0gdjEuaXNTdHJpbmcoKTsKLSAgICAg
ICAgYm9vbCBzMiA9IHYyLmlzU3RyaW5nKCk7Ci0gICAgICAgIGlmIChzMSAmJiBzMikKLSAgICAg
ICAgICAgIHJldHVybiBhc1N0cmluZyh2MSktPnZhbHVlKGV4ZWMpID09IGFzU3RyaW5nKHYyKS0+
dmFsdWUoZXhlYyk7Ci0KLSAgICAgICAgaWYgKHYxLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKLSAg
ICAgICAgICAgIGlmICh2Mi5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgICAgICAgaWYgKCF2Mi5pc0NlbGwoKSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICByZXR1cm4gdjIuYXNDZWxsKCktPnN0cnVjdHVy
ZSgpLT5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkKGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7
Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAodjIuaXNVbmRlZmluZWRPck51bGwoKSkgewotICAg
ICAgICAgICAgaWYgKCF2MS5pc0NlbGwoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgICAgICByZXR1cm4gdjEuYXNDZWxsKCktPnN0cnVjdHVyZSgpLT5tYXNxdWVyYWRl
c0FzVW5kZWZpbmVkKGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7Ci0gICAgICAgIH0KLQot
ICAgICAgICBpZiAodjEuaXNPYmplY3QoKSkgewotICAgICAgICAgICAgaWYgKHYyLmlzT2JqZWN0
KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHYxID09IHYyOwotICAgICAgICAgICAgSlNWYWx1
ZSBwMSA9IHYxLnRvUHJpbWl0aXZlKGV4ZWMpOwotICAgICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIHYx
ID0gcDE7Ci0gICAgICAgICAgICBpZiAodjEuaXNJbnQzMigpICYmIHYyLmlzSW50MzIoKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gdjEgPT0gdjI7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgfQotCi0gICAgICAgIGlmICh2Mi5pc09iamVjdCgpKSB7Ci0gICAgICAgICAgICBKU1Zh
bHVlIHAyID0gdjIudG9QcmltaXRpdmUoZXhlYyk7Ci0gICAgICAgICAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAg
djIgPSBwMjsKLSAgICAgICAgICAgIGlmICh2MS5pc0ludDMyKCkgJiYgdjIuaXNJbnQzMigpKQot
ICAgICAgICAgICAgICAgIHJldHVybiB2MSA9PSB2MjsKLSAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHMxIHx8IHMyKSB7Ci0gICAgICAgICAgICBkb3VibGUg
ZDEgPSB2MS50b051bWJlcihleGVjKTsKLSAgICAgICAgICAgIGRvdWJsZSBkMiA9IHYyLnRvTnVt
YmVyKGV4ZWMpOwotICAgICAgICAgICAgcmV0dXJuIGQxID09IGQyOwotICAgICAgICB9Ci0KLSAg
ICAgICAgaWYgKHYxLmlzQm9vbGVhbigpKSB7Ci0gICAgICAgICAgICBpZiAodjIuaXNOdW1iZXIo
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPih2MS5hc0Jvb2xl
YW4oKSkgPT0gdjIuYXNOdW1iZXIoKTsKLSAgICAgICAgfSBlbHNlIGlmICh2Mi5pc0Jvb2xlYW4o
KSkgewotICAgICAgICAgICAgaWYgKHYxLmlzTnVtYmVyKCkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIHYxLmFzTnVtYmVyKCkgPT0gc3RhdGljX2Nhc3Q8ZG91YmxlPih2Mi5hc0Jvb2xlYW4oKSk7
Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gdjEgPT0gdjI7Ci0gICAgfSB3aGlsZSAodHJ1
ZSk7Ci19Ci0KLS8vIEVDTUEgMTEuOS4zCi1BTFdBWVNfSU5MSU5FIGJvb2wgSlNWYWx1ZTo6c3Ry
aWN0RXF1YWxTbG93Q2FzZUlubGluZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdjEsIEpTVmFs
dWUgdjIpCi17Ci0gICAgQVNTRVJUKHYxLmlzQ2VsbCgpICYmIHYyLmlzQ2VsbCgpKTsKLQotICAg
IGlmICh2MS5hc0NlbGwoKS0+aXNTdHJpbmcoKSAmJiB2Mi5hc0NlbGwoKS0+aXNTdHJpbmcoKSkK
LSAgICAgICAgcmV0dXJuIGFzU3RyaW5nKHYxKS0+dmFsdWUoZXhlYykgPT0gYXNTdHJpbmcodjIp
LT52YWx1ZShleGVjKTsKLQotICAgIHJldHVybiB2MSA9PSB2MjsKLX0KLQotaW5saW5lIGJvb2wg
SlNWYWx1ZTo6c3RyaWN0RXF1YWwoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHYxLCBKU1ZhbHVl
IHYyKQotewotICAgIGlmICh2MS5pc0ludDMyKCkgJiYgdjIuaXNJbnQzMigpKQotICAgICAgICBy
ZXR1cm4gdjEgPT0gdjI7Ci0KLSAgICBpZiAodjEuaXNOdW1iZXIoKSAmJiB2Mi5pc051bWJlcigp
KQotICAgICAgICByZXR1cm4gdjEuYXNOdW1iZXIoKSA9PSB2Mi5hc051bWJlcigpOwotCi0gICAg
aWYgKCF2MS5pc0NlbGwoKSB8fCAhdjIuaXNDZWxsKCkpCi0gICAgICAgIHJldHVybiB2MSA9PSB2
MjsKLQotICAgIHJldHVybiBzdHJpY3RFcXVhbFNsb3dDYXNlSW5saW5lKGV4ZWMsIHYxLCB2Mik7
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi0jZW5kaWYgLy8gSlNWYWx1ZUlubGluZXNfaAot
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5o
CShyZXZpc2lvbiAxNDAzNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRl
cmFsUGFyc2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDggKzI3LDggQEAKICNkZWZpbmUgTGl0
ZXJhbFBhcnNlcl9oCiAKICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiSlNDSlNW
YWx1ZS5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCi0jaW5jbHVkZSAi
SlNWYWx1ZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2Ug
SlNDIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgJ
KHJldmlzaW9uIDE0MDM0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJh
dGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsOSArMjQsOSBAQAogCiAjaW5jbHVkZSAiRXhj
ZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiSlND
SlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU1Byb3h5LmgiCiAjaW5jbHVkZSAiSlNTdHJp
bmcuaCIKLSNpbmNsdWRlICJKU1ZhbHVlSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlEZXNj
cmlwdG9yLmgJKHJldmlzaW9uIDE0MDM0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBA
CiAjaWZuZGVmIFByb3BlcnR5RGVzY3JpcHRvcl9oCiAjZGVmaW5lIFByb3BlcnR5RGVzY3JpcHRv
cl9oCiAKLSNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogCiBu
YW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBHZXR0ZXJTZXR0ZXI7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAkocmV2aXNpb24gMTQwMzQ2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIxLDcgKzIxLDcgQEAKICNpZm5kZWYgUHJvcGVydHlTbG90X2gKICNkZWZpbmUg
UHJvcGVydHlTbG90X2gKIAotI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0NKU1Zh
bHVlLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlOYW1lLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlPZmZz
ZXQuaCIKICNpbmNsdWRlICJSZWdpc3Rlci5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUHJvdGVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb3RlY3QuaAkocmV2aXNpb24gMTQwMzQ2KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJvdGVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAj
ZGVmaW5lIFByb3RlY3RfaAogCiAjaW5jbHVkZSAiSGVhcC5oIgotI2luY2x1ZGUgIkpTVmFsdWUu
aCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAJ
KHJldmlzaW9uIDE0MDM0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDExICsyNCwxMSBAQAogI2luY2x1
ZGUgIkFycmF5UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJKU0Fy
cmF5LmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIK
ICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCiAjaW5jbHVkZSAi
SlNTdHJpbmdCdWlsZGVyLmgiCi0jaW5jbHVkZSAiSlNWYWx1ZS5oIgogI2luY2x1ZGUgIk9iamVj
dFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJSZWdFeHBP
YmplY3QuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5o
CShyZXZpc2lvbiAxNDAzNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsOSArMjgsOSBAQAogCiAjaW5jbHVkZSAiQ2xh
c3NJbmZvLmgiCiAjaW5jbHVkZSAiSW5kZXhpbmdUeXBlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1
ZS5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTVHlwZS5oIgotI2luY2x1ZGUg
IkpTVmFsdWUuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU1hcEhhc2hUYWJsZS5oIgogI2luY2x1ZGUg
IlByb3BlcnR5TmFtZS5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxNDAzNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwzOSBAQAorMjAxMy0wMS0yMSAgTWFyayBIYWhuZW5iZXJn
ICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgorCisgICAgICAgIE9iamVjdGl2ZS1DIEFQSTogUmVu
YW1lIEpTVmFsdWUuaC9BUElKU1ZhbHVlLmggdG8gSlNDSlNWYWx1ZS5oL0pTVmFsdWUuaAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3MzI3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
LgorCisgICAgICAgIFdlJ3JlIHJlbmFtaW5nIHRoZXNlIHR3byBmaWxlcywgc28gd2UgaGF2ZSB0
byByZXBsYWNlIHRoZSBuYW1lcyBldmVyeXdoZXJlLgorCisgICAgICAgICogRm9yd2FyZGluZ0hl
YWRlcnMvcnVudGltZS9KU0NKU1ZhbHVlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL0Zv
cndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSlNWYWx1ZS5oLgorICAgICAgICAqIEZvcndhcmRpbmdI
ZWFkZXJzL3J1bnRpbWUvSlNWYWx1ZS5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQXJyYXlCdWZmZXJW
aWV3SGVscGVyLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2
ZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNw
cDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0ludGVudENvbnN0cnVjdG9yLmNwcDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmg6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSmF2
YVNjcmlwdENhbGxGcmFtZS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0
YWNrRmFjdG9yeS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuaDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKiBi
aW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaDoKKyAgICAgICAgKiBicmlkZ2Uv
Yy9jX3V0aWxpdHkuaDoKKyAgICAgICAgKiBicmlkZ2UvdGVzdGJpbmRpbmdzLmNwcDoKKyAgICAg
ICAgKiBicmlkZ2UvdGVzdGJpbmRpbmdzLm1tOgorICAgICAgICAqIGJyaWRnZS90ZXN0cXRiaW5k
aW5ncy5jcHA6CisgICAgICAgICogcGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKiBw
bHVnaW5zL2JsYWNrYmVycnkvUGx1Z2luVmlld0JsYWNrQmVycnkuY3BwOgorICAgICAgICAqIHBs
dWdpbnMvZ3RrL1BsdWdpblZpZXdHdGsuY3BwOgorICAgICAgICAqIHBsdWdpbnMvbWFjL1BsdWdp
blZpZXdNYWMubW06CisgICAgICAgICogcGx1Z2lucy9xdC9QbHVnaW5WaWV3UXQuY3BwOgorICAg
ICAgICAqIHBsdWdpbnMvd2luL1BsdWdpblZpZXdXaW4uY3BwOgorCiAyMDEzLTAxLTIxICBDaGFu
Z1Nlb2sgT2ggIDxzaGl2YW1pZG93QGdtYWlsLmNvbT4KIAogICAgICAgICBbVGV4bWFwXVtHVEtd
IFRoZSBwb3N0ZXItY2lyY2xlIGRvZXNuJ3QgYXBwZWFyLgpJbmRleDogU291cmNlL1dlYkNvcmUv
Rm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9KU0NKU1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9KU0NKU1ZhbHVlLmgJKHJldmlz
aW9uIDE0MDE5NikJKGZyb20gU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGlt
ZS9KU1ZhbHVlLmg6MTQwMTk2KQorKysgU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMv
cnVudGltZS9KU0NKU1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0IEBACisjaWZu
ZGVmIFdlYkNvcmVfRldEX0pTVmFsdWVfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9KU1ZhbHVlX2gK
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1ZhbHVlLmg+CisjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSlNDSlNWYWx1
ZS5oCShyZXZpc2lvbiAxNDAxOTYpCisrKyBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVy
cy9ydW50aW1lL0pTQ0pTVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLSNp
Zm5kZWYgV2ViQ29yZV9GV0RfSlNWYWx1ZV9oCi0jZGVmaW5lIFdlYkNvcmVfRldEX0pTVmFsdWVf
aAotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTVmFsdWUuaD4KKyNpZm5kZWYgV2ViQ29yZV9G
V0RfSlNDSlNWYWx1ZV9oCisjZGVmaW5lIFdlYkNvcmVfRldEX0pTQ0pTVmFsdWVfaAorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0pTVmFsdWUuaD4KICNlbmRpZgpJbmRleDogU291cmNlL1dl
YkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9KU1ZhbHVlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9KU1ZhbHVlLmgJKHJldmlz
aW9uIDE0MDM0NikKKysrIFNvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUv
SlNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzAsMCBAQAotI2lmbmRlZiBXZWJDb3Jl
X0ZXRF9KU1ZhbHVlX2gKLSNkZWZpbmUgV2ViQ29yZV9GV0RfSlNWYWx1ZV9oCi0jaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNWYWx1ZS5oPgotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gMTQwMzQ2KQorKysgU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkK
QEAgLTc0NzU3LDcgKzc0NzU3LDcgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQot
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXHJ1bnRpbWVcSlNWYWx1ZS5o
IgorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXHJ1bnRpbWVcSlNDSlNW
YWx1ZS5oIgogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0FycmF5QnVmZmVyVmlld0hlbHBlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXJyYXlCdWZmZXJWaWV3SGVscGVyLmgJKHJl
dmlzaW9uIDE0MDM0NikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXJyYXlCdWZm
ZXJWaWV3SGVscGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDggKzMzLDggQEAKICNpbmNsdWRl
IDxpbnRlcnByZXRlci9DYWxsRnJhbWUuaD4KICNpbmNsdWRlIDxydW50aW1lL0FyZ0xpc3QuaD4K
ICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVl
Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU09iamVjdC5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNW
YWx1ZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvT3BlcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9B
cnJheUJ1ZmZlclZpZXcuaD4KICNpbmNsdWRlIDx3dGYvVHlwZWRBcnJheUJhc2UuaD4KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVz
b2x2ZXIuaAkocmV2aXNpb24gMTQwMzQ2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBA
QAogI2luY2x1ZGUgIlhQYXRoTlNSZXNvbHZlci5oIgogI2luY2x1ZGUgPGhlYXAvU3Ryb25nLmg+
CiAjaW5jbHVkZSA8aGVhcC9TdHJvbmdJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU1Zh
bHVlLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlLmg+CiAjaW5jbHVkZSA8cnVudGlt
ZS9PcGVyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xs
ZWN0aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24gMTQwMzQ2KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJKU05vZGVMaXN0LmgiCiAj
aW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIlN0YXRpY05vZGVMaXN0LmgiCi0jaW5jbHVkZSA8
cnVudGltZS9KU1ZhbHVlLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlLmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ludGVudENvbnN0cnVjdG9yLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ludGVudENvbnN0
cnVjdG9yLmNwcAkocmV2aXNpb24gMTQwMzQ2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNJbnRlbnRDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyLDEwICsyMiwx
MCBAQAogCiAjaW5jbHVkZSAiRGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUu
aCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAj
aW5jbHVkZSAiSlNJbnRlbnQuaCIKICNpbmNsdWRlICJKU01lc3NhZ2VQb3J0Q3VzdG9tLmgiCi0j
aW5jbHVkZSAiSlNWYWx1ZS5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KICNpbmNsdWRl
IDx3dGYvQXJyYXlCdWZmZXIuaD4KIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNNZXNzYWdlUG9ydEN1c3RvbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uaAkocmV2aXNpb24gMTQwMzQ2KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMiw3ICszMiw3IEBACiAjZGVmaW5lIEpTTWVzc2FnZVBvcnRDdXN0b21faAogCiAjaW5j
bHVkZSAiTWVzc2FnZVBvcnQuaCIKLSNpbmNsdWRlIDxydW50aW1lL0pTVmFsdWUuaD4KKyNpbmNs
dWRlIDxydW50aW1lL0pTQ0pTVmFsdWUuaD4KICNpbmNsdWRlIDxydW50aW1lL09wZXJhdGlvbnMu
aD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU05vZGVGaWx0ZXJDb25kaXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDb25kaXRpb24uaAkocmV2aXNpb24gMTQwMzQ2
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIyLDcgKzIyLDcgQEAKIAogI2luY2x1ZGUgIk5vZGVGaWx0ZXJD
b25kaXRpb24uaCIKICNpbmNsdWRlIDxoZWFwL1dlYWsuaD4KLSNpbmNsdWRlIDxydW50aW1lL0pT
VmFsdWUuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWUuaD4KICNpbmNsdWRlIDxydW50
aW1lL09wZXJhdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KYXZhU2NyaXB0Q2FsbEZyYW1lLmNw
cAkocmV2aXNpb24gMTQwMzQ2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSmF2YVNj
cmlwdENhbGxGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEwICszMywxMCBAQAogI2lu
Y2x1ZGUgIkpTRE9NV2luZG93QmFzZS5oIgogI2luY2x1ZGUgPGRlYnVnZ2VyL0RlYnVnZ2VyQ2Fs
bEZyYW1lLmg+CiAjaW5jbHVkZSA8cnVudGltZS9Db21wbGV0aW9uLmg+CisjaW5jbHVkZSA8cnVu
dGltZS9KU0NKU1ZhbHVlLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0dsb2JhbE9iamVjdC5oPgog
I2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU09iamVjdC5o
PgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNWYWx1ZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAJKHJldmlzaW9u
IDE0MDM0NikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFja0Zh
Y3RvcnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw5ICs0Miw5IEBACiAjaW5jbHVkZSA8aW50
ZXJwcmV0ZXIvQ2FsbEZyYW1lLmg+CiAjaW5jbHVkZSA8aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
aD4KICNpbmNsdWRlIDxydW50aW1lL0FyZ0xpc3QuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTQ0pT
VmFsdWUuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTRnVuY3Rpb24uaD4KICNpbmNsdWRlIDxydW50
aW1lL0pTR2xvYmFsRGF0YS5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNWYWx1ZS5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5oCShyZXZpc2lvbiAxNDAzNDYp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRl
IDxoZWFwL1N0cm9uZy5oPgogI2luY2x1ZGUgPGhlYXAvU3Ryb25nSW5saW5lcy5oPgotI2luY2x1
ZGUgPHJ1bnRpbWUvSlNWYWx1ZS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZS5oPgog
I2luY2x1ZGUgPHJ1bnRpbWUvT3BlcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAkocmV2aXNpb24g
MTQwMzQ2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKIAogI2luY2x1ZGUgIlNjcmlw
dFN0YXRlLmgiCiAjaW5jbHVkZSA8aGVhcC9TdHJvbmcuaD4KLSNpbmNsdWRlIDxydW50aW1lL0pT
VmFsdWUuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWUuaD4KICNpbmNsdWRlIDx3dGYv
QXJyYXlCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL1dlYlNjcmlw
dE9iamVjdFByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9v
YmpjL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaAkocmV2aXNpb24gMTQwMzQ2KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICNkZWZpbmUgX1dFQl9TQ1JJUFRfT0JKRUNUX1BSSVZB
VEVfSF8KIAogI2ltcG9ydCAiV2ViU2NyaXB0T2JqZWN0LmgiCi0jaW1wb3J0IDxydW50aW1lL0pT
VmFsdWUuaD4KKyNpbXBvcnQgPHJ1bnRpbWUvSlNDSlNWYWx1ZS5oPgogI2ltcG9ydCA8d3RmL1Bh
c3NSZWZQdHIuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlk
Z2UvdGVzdGJpbmRpbmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
dGVzdGJpbmRpbmdzLmNwcAkocmV2aXNpb24gMTQwMzQ2KQorKysgU291cmNlL1dlYkNvcmUvYnJp
ZGdlL3Rlc3RiaW5kaW5ncy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxLDggKzIxLDggQEAKICNp
bmNsdWRlICJjb25maWcuaCIKIAogI2luY2x1ZGUgIkJyaWRnZUpTQy5oIgorI2luY2x1ZGUgIkpT
Q0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgotI2luY2x1ZGUgIkpTVmFsdWUuaCIK
ICNpbmNsdWRlICJpbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIm5wcnVudGltZV9pbnRlcm5hbC5o
IgogI2luY2x1ZGUgInJ1bnRpbWVfb2JqZWN0LmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlk
Z2UvdGVzdGJpbmRpbmdzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS90
ZXN0YmluZGluZ3MubW0JKHJldmlzaW9uIDE0MDM0NikKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRn
ZS90ZXN0YmluZGluZ3MubW0JKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKICNpbmNs
dWRlICJCcmlkZ2VKU0MuaCIKICNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KICNp
bmNsdWRlICJKU09iamVjdC5oIgotI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0NK
U1ZhbHVlLmgiCiAjaW1wb3J0IDxXZWJLaXQvV2ViU2NyaXB0T2JqZWN0Lmg+CiAjaW5jbHVkZSAi
aW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJydW50aW1lX29iamVjdC5oIgpJbmRleDogU291cmNl
L1dlYkNvcmUvYnJpZGdlL3Rlc3RxdGJpbmRpbmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvdGVzdHF0YmluZGluZ3MuY3BwCShyZXZpc2lvbiAxNDAzNDYpCisrKyBT
b3VyY2UvV2ViQ29yZS9icmlkZ2UvdGVzdHF0YmluZGluZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNSw4ICsyNSw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpbmNsdWRlICJCcmlkZ2VK
U0MuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKLSNp
bmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiaW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJx
ZGVidWcuaCIKICNpbmNsdWRlICJxb2JqZWN0LmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlk
Z2UvYy9jX3V0aWxpdHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9j
X3V0aWxpdHkuaAkocmV2aXNpb24gMTQwMzQ2KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL2Mv
Y191dGlsaXR5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKICNpZiBFTkFCTEUo
TkVUU0NBUEVfUExVR0lOX0FQSSkKIAogI2luY2x1ZGUgIm5wcnVudGltZV9pbnRlcm5hbC5oIgot
I2luY2x1ZGUgPHJ1bnRpbWUvSlNWYWx1ZS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1
ZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvT3BlcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcAkocmV2aXNp
b24gMTQwMzQ2KQorKysgU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzYsOCArNzYsOCBAQAogI2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCiAj
aW5jbHVkZSAiY19pbnN0YW5jZS5oIgogI2luY2x1ZGUgInJ1bnRpbWVfcm9vdC5oIgorI2luY2x1
ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+Ci0j
aW5jbHVkZSA8cnVudGltZS9KU1ZhbHVlLmg+CiAKIHVzaW5nIEpTQzo6RXhlY1N0YXRlOwogdXNp
bmcgSlNDOjpKU0xvY2s7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbHVnaW5zL2JsYWNrYmVycnkv
UGx1Z2luVmlld0JsYWNrQmVycnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
dWdpbnMvYmxhY2tiZXJyeS9QbHVnaW5WaWV3QmxhY2tCZXJyeS5jcHAJKHJldmlzaW9uIDE0MDM0
NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvYmxhY2tiZXJyeS9QbHVnaW5WaWV3QmxhY2tC
ZXJyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDggKzY3LDggQEAKICNpbmNsdWRlIDxCbGFj
a0JlcnJ5UGxhdGZvcm1JbnRSZWN0UmVnaW9uLmg+CiAjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRm
b3JtV2luZG93Lmg+CiAKKyNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWUuaD4KICNpbmNsdWRl
IDxydW50aW1lL0pTTG9jay5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNWYWx1ZS5oPgogI2luY2x1
ZGUgPHN5cy9rZXljb2Rlcy5oPgogI2luY2x1ZGUgPHZlY3Rvcj4KIApJbmRleDogU291cmNlL1dl
YkNvcmUvcGx1Z2lucy9ndGsvUGx1Z2luVmlld0d0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGx1Z2lucy9ndGsvUGx1Z2luVmlld0d0ay5jcHAJKHJldmlzaW9uIDE0MDM0NikK
KysrIFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvZ3RrL1BsdWdpblZpZXdHdGsuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02Miw4ICs2Miw4IEBACiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5j
bHVkZSAibnBydW50aW1lX2ltcGwuaCIKICNpbmNsdWRlICJydW50aW1lX3Jvb3QuaCIKKyNpbmNs
dWRlIDxydW50aW1lL0pTQ0pTVmFsdWUuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgot
I2luY2x1ZGUgPHJ1bnRpbWUvSlNWYWx1ZS5oPgogCiAjaWZkZWYgR1RLX0FQSV9WRVJTSU9OXzIK
ICNpbmNsdWRlIDxnZGtjb25maWcuaD4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvbWFj
L1BsdWdpblZpZXdNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGx1Z2lucy9t
YWMvUGx1Z2luVmlld01hYy5tbQkocmV2aXNpb24gMTQwMzQ2KQorKysgU291cmNlL1dlYkNvcmUv
cGx1Z2lucy9tYWMvUGx1Z2luVmlld01hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNjIsNyArNjIs
NyBAQAogI2luY2x1ZGUgIm5wcnVudGltZV9pbXBsLmgiCiAjaW5jbHVkZSAicnVudGltZV9yb290
LmgiCiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KLSNpbmNsdWRlIDxydW50aW1lL0pTVmFs
dWUuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWUuaD4KICNpbmNsdWRlIDx3dGYvUmV0
YWluUHRyLmg+CiAKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGx1Z2lucy9xdC9QbHVnaW5WaWV3
UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvcXQvUGx1Z2luVmll
d1F0LmNwcAkocmV2aXNpb24gMTQwMzQ2KQorKysgU291cmNlL1dlYkNvcmUvcGx1Z2lucy9xdC9Q
bHVnaW5WaWV3UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Niw4ICs3Niw4IEBACiAjZGVmaW5l
IFN0YXR1cyBpbnQKICNpbmNsdWRlIDxYMTEvZXh0ZW5zaW9ucy9YcmVuZGVyLmg+CiAjZW5kaWYK
KyNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWUuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTTG9j
ay5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNWYWx1ZS5oPgogCiAjaW5jbHVkZSAiUXRYMTFJbWFn
ZUNvbnZlcnNpb24uaCIKICNpbmNsdWRlIDxRR3VpQXBwbGljYXRpb24+CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbHVnaW5zL3dpbi9QbHVnaW5WaWV3V2luLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbHVnaW5zL3dpbi9QbHVnaW5WaWV3V2luLmNwcAkocmV2aXNpb24gMTQwMzQ2
KQorKysgU291cmNlL1dlYkNvcmUvcGx1Z2lucy93aW4vUGx1Z2luVmlld1dpbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTY2LDggKzY2LDggQEAKICNpbmNsdWRlICJjX2luc3RhbmNlLmgiCiAjaW5j
bHVkZSAibnBydW50aW1lX2ltcGwuaCIKICNpbmNsdWRlICJydW50aW1lX3Jvb3QuaCIKKyNpbmNs
dWRlIDxydW50aW1lL0pTQ0pTVmFsdWUuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgot
I2luY2x1ZGUgPHJ1bnRpbWUvSlNWYWx1ZS5oPgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlz
aW9uIDE0MDM0OSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE0IEBACisyMDEzLTAxLTIxICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVy
Z0BhcHBsZS5jb20+CisKKyAgICAgICAgT2JqZWN0aXZlLUMgQVBJOiBSZW5hbWUgSlNWYWx1ZS5o
L0FQSUpTVmFsdWUuaCB0byBKU0NKU1ZhbHVlLmgvSlNWYWx1ZS5oCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDczMjcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSdyZSByZW5hbWluZyB0aGVzZSB0d28g
ZmlsZXMsIHNvIHdlIGhhdmUgdG8gcmVwbGFjZSB0aGUgbmFtZXMgZXZlcnl3aGVyZS4KKworICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKwogMjAxMy0wMS0yMSAgSm9v
bmUgSHVyICA8am9vbmUuaHVyQGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXSBBUEkgdW5pdCB0
ZXN0cyBhcmUgcnVubmluZyBleHRyZW1lbHkgc2xvdyBvbiB0aGUgYm90cwpJbmRleDogU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMTQw
MzQ2KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjcsOCArMTI3LDggQEAKICNpbmNsdWRlIDxXZWJDb3JlL1RleHRJ
dGVyYXRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVmlzaWJsZVBvc2l0aW9uLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9tYXJrdXAuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWUuaD4KICNp
bmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNWYWx1ZS5oPgog
I2luY2x1ZGUgPHJ1bnRpbWUvT3BlcmF0aW9ucy5oPgogCiAjaWYgRU5BQkxFKE1IVE1MKQpJbmRl
eDogU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvZ3RrL0NoYW5nZUxvZwkocmV2aXNpb24gMTQwMzQ5KQorKysgU291cmNlL1dlYktpdC9ndGsv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTMtMDEtMjEgIE1h
cmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KKworICAgICAgICBPYmplY3Rp
dmUtQyBBUEk6IFJlbmFtZSBKU1ZhbHVlLmgvQVBJSlNWYWx1ZS5oIHRvIEpTQ0pTVmFsdWUuaC9K
U1ZhbHVlLmgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwNzMyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFdlJ3JlIHJlbmFtaW5nIHRoZXNlIHR3byBmaWxlcywgc28gd2UgaGF2ZSB0byByZXBsYWNlIHRo
ZSBuYW1lcyBldmVyeXdoZXJlLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0R3RrLmNwcDoKKwogMjAxMy0wMS0yMSAgT2xlZyBTbWlybm92ICA8b2xlZy5z
bWlybm92QGxnZS5jb20+CiAKICAgICAgICAgW0d0a10gRGlzcGF0Y2hpbmcgZXZlbnQgbGlzdCBp
bnRvIGlucHV0IGVsZW1lbnQuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAJKHJldmlz
aW9uIDE0MDM0NikKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5k
ZXJUcmVlU3VwcG9ydEd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDEzICs0NSwxMyBAQAog
I2luY2x1ZGUgIkdlb2xvY2F0aW9uUG9zaXRpb24uaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQuaCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1
ZS5oIgogI2luY2x1ZGUgIkpTQ1NTU3R5bGVEZWNsYXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9N
V2luZG93LmgiCiAjaW5jbHVkZSAiSlNEb2N1bWVudC5oIgogI2luY2x1ZGUgIkpTRWxlbWVudC5o
IgogI2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkpTTm9kZUxpc3QuaCIKLSNpbmNsdWRl
ICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNsdWRlICJNdXRhdGlv
bk9ic2VydmVyLmgiCiAjaW5jbHVkZSAiTm9kZUxpc3QuaCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDE0MDM0OSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDEzLTAxLTIxICBNYXJrIEhhaG5lbmJlcmcgIDxt
aGFobmVuYmVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgT2JqZWN0aXZlLUMgQVBJOiBSZW5hbWUg
SlNWYWx1ZS5oL0FQSUpTVmFsdWUuaCB0byBKU0NKU1ZhbHVlLmgvSlNWYWx1ZS5oCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDczMjcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSdyZSByZW5hbWluZyB0
aGVzZSB0d28gZmlsZXMsIHNvIHdlIGhhdmUgdG8gcmVwbGFjZSB0aGUgbmFtZXMgZXZlcnl3aGVy
ZS4KKworICAgICAgICAqIERPTS9XZWJET01PcGVyYXRpb25zLm1tOgorICAgICAgICAqIEZvcndh
cmRpbmdIZWFkZXJzL3J1bnRpbWUvSlNDSlNWYWx1ZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
S2l0L21hYy9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTVmFsdWUuaC4KKyAgICAgICAgKiBG
b3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTVmFsdWUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBX
ZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKwogMjAx
My0wMS0xOSAgUGhpbGlwIFJvZ2VycyAgPHBkckBnb29nbGUuY29tPgogCiAgICAgICAgIE1lcmdl
IFNWR1N0eWxhYmxlIGludG8gU1ZHU3R5bGVkRWxlbWVudApJbmRleDogU291cmNlL1dlYktpdC9t
YWMvRE9NL1dlYkRPTU9wZXJhdGlvbnMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9t
YWMvRE9NL1dlYkRPTU9wZXJhdGlvbnMubW0JKHJldmlzaW9uIDE0MDM0NikKKysrIFNvdXJjZS9X
ZWJLaXQvbWFjL0RPTS9XZWJET01PcGVyYXRpb25zLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3
ICs1MSw3IEBACiAjaW1wb3J0IDxXZWJLaXQvRE9NRXh0ZW5zaW9ucy5oPgogI2ltcG9ydCA8V2Vi
S2l0L0RPTUhUTUwuaD4KICNpbXBvcnQgPHJ1bnRpbWUvSlNMb2NrLmg+Ci0jaW1wb3J0IDxydW50
aW1lL0pTVmFsdWUuaD4KKyNpbXBvcnQgPHJ1bnRpbWUvSlNDSlNWYWx1ZS5oPgogI2ltcG9ydCA8
d3RmL0Fzc2VydGlvbnMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L21hYy9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTQ0pTVmFsdWUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pT
Q0pTVmFsdWUuaAkocmV2aXNpb24gMTQwMzQ2KQkoZnJvbSBTb3VyY2UvV2ViS2l0L21hYy9Gb3J3
YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTVmFsdWUuaDoxNDAzNDYpCisrKyBTb3VyY2UvV2ViS2l0
L21hYy9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTQ0pTVmFsdWUuaAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxIEBACisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU1ZhbHVlLmg+CkluZGV4
OiBTb3VyY2UvV2ViS2l0L21hYy9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTQ0pTVmFsdWUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9Gb3J3YXJkaW5nSGVhZGVycy9ydW50
aW1lL0pTQ0pTVmFsdWUuaAkocmV2aXNpb24gMTQwMzQ2KQorKysgU291cmNlL1dlYktpdC9tYWMv
Rm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9KU0NKU1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEgKzEgQEAKLSNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTVmFsdWUuaD4KKyNpbXBvcnQgPEph
dmFTY3JpcHRDb3JlL0pTQ0pTVmFsdWUuaD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0Zvcndh
cmRpbmdIZWFkZXJzL3J1bnRpbWUvSlNWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvbWFjL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSlNWYWx1ZS5oCShyZXZpc2lvbiAxNDAz
NDYpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTVmFs
dWUuaAkod29ya2luZyBjb3B5KQpAQCAtMSArMCwwIEBACi0jaW1wb3J0IDxKYXZhU2NyaXB0Q29y
ZS9KU1ZhbHVlLmg+CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0JKHJl
dmlzaW9uIDE0MDM0NikKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0J
KHdvcmtpbmcgY29weSkKQEAgLTk3LDcgKzk3LDcgQEAKICNpbXBvcnQgPFdlYktpdFN5c3RlbUlu
dGVyZmFjZS5oPgogI2ltcG9ydCA8cnVudGltZS9KU0xvY2suaD4KICNpbXBvcnQgPHJ1bnRpbWUv
SlNPYmplY3QuaD4KLSNpbXBvcnQgPHJ1bnRpbWUvSlNWYWx1ZS5oPgorI2ltcG9ydCA8cnVudGlt
ZS9KU0NKU1ZhbHVlLmg+CiAjaW1wb3J0IDx3dGYvQ3VycmVudFRpbWUuaD4KIAogdXNpbmcgbmFt
ZXNwYWNlIHN0ZDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlz
aW9uIDE0MDM0NikKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29y
a2luZyBjb3B5KQpAQCAtMTg4LDcgKzE4OCw3IEBACiAjaW1wb3J0IDxydW50aW1lL0RhdGVJbnN0
YW5jZS5oPgogI2ltcG9ydCA8cnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+CiAjaW1wb3J0
IDxydW50aW1lL0pTTG9jay5oPgotI2ltcG9ydCA8cnVudGltZS9KU1ZhbHVlLmg+CisjaW1wb3J0
IDxydW50aW1lL0pTQ0pTVmFsdWUuaD4KICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW1w
b3J0IDx3dGYvSGFzaFRyYWl0cy5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MDM0OSkKKysrIFNvdXJjZS9XZWJLaXQvd2luL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEzLTAxLTIxICBNYXJr
IEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgT2JqZWN0aXZl
LUMgQVBJOiBSZW5hbWUgSlNWYWx1ZS5oL0FQSUpTVmFsdWUuaCB0byBKU0NKU1ZhbHVlLmgvSlNW
YWx1ZS5oCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDczMjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBX
ZSdyZSByZW5hbWluZyB0aGVzZSB0d28gZmlsZXMsIHNvIHdlIGhhdmUgdG8gcmVwbGFjZSB0aGUg
bmFtZXMgZXZlcnl3aGVyZS4KKworICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKiBX
ZWJWaWV3LmNwcDoKKwogMjAxMy0wMS0xOCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeC4gUmVtb3ZlIGRlbGV0ZWQgc3ltYm9s
IGZyb20gd2luZG93cyBleHBvcnQgbGlzdC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkZy
YW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAJKHJl
dmlzaW9uIDE0MDM0NikKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTAwLDkgKzEwMCw5IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRWYWx1
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9BUElDYXN0Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSlNWYWx1
ZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTTG9jay5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTT2JqZWN0Lmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNWYWx1ZS5o
PgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKICNpZiBVU0UoQ0cpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dp
bi9XZWJWaWV3LmNwcAkocmV2aXNpb24gMTQwMzQ2KQorKysgU291cmNlL1dlYktpdC93aW4vV2Vi
Vmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDggKzY0LDggQEAKICNpbmNsdWRlICJyZXNv
dXJjZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQSUNhc3QuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNDSlNWYWx1ZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTTG9jay5oPgot
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTVmFsdWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0FY
T2JqZWN0Q2FjaGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+CkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwkocmV2
aXNpb24gMTQwMzQ5KQorKysgU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMy0wMS0yMSAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5l
bmJlcmdAYXBwbGUuY29tPgorCisgICAgICAgIE9iamVjdGl2ZS1DIEFQSTogUmVuYW1lIEpTVmFs
dWUuaC9BUElKU1ZhbHVlLmggdG8gSlNDSlNWYWx1ZS5oL0pTVmFsdWUuaAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3MzI3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UncmUgcmVuYW1pbmcgdGhlc2Ug
dHdvIGZpbGVzLCBzbyB3ZSBoYXZlIHRvIHJlcGxhY2UgdGhlIG5hbWVzIGV2ZXJ5d2hlcmUuCisK
KyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgICogV2ViVmlldy5jcHA6CisKIDIwMTMt
MDEtMDggIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZWQg
dGhlIG5lZWQgZm9yIHRoZSBQcm9wb3NlZERhdGFiYXNlIG1lY2hhbmlzbS4KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvd3gvV2ViRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd3gv
V2ViRnJhbWUuY3BwCShyZXZpc2lvbiAxNDAzNDYpCisrKyBTb3VyY2UvV2ViS2l0L3d4L1dlYkZy
YW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQAogI2luY2x1ZGUgIlRleHRF
bmNvZGluZy5oIgogCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0jaW5jbHVkZSA8cnVudGlt
ZS9KU1ZhbHVlLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L3d4L1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvd3gvV2ViVmlldy5jcHAJKHJldmlzaW9uIDE0MDM0NikKKysrIFNvdXJjZS9XZWJLaXQv
d3gvV2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAKICNpbmNsdWRl
ICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVk
ZSA8cnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU1Zh
bHVlLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlLmg+CiAjaW5jbHVkZSA8d3RmL01h
aW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>