<?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>180514</bug_id>
          
          <creation_ts>2017-12-06 17:29:48 -0800</creation_ts>
          <short_desc>Refactoring: Rename ScrambledPtr to Poisoned.</short_desc>
          <delta_ts>2017-12-07 11:06:42 -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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1378952</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-12-06 17:29:48 -0800</bug_when>
    <thetext>Let&apos;s switch our nomenclature to &quot;poisoning&quot; instead of &quot;scrambling&quot; pointers.  This allows us to use shorter names.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378960</commentid>
    <comment_count>1</comment_count>
      <attachid>328665</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-12-06 17:36:10 -0800</bug_when>
    <thetext>Created attachment 328665
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378962</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-12-06 17:40:40 -0800</bug_when>
    <thetext>Attachment 328665 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/JSCPoisonedPtr.cpp:31:  g_classInfoPoison is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/runtime/JSCPoisonedPtr.cpp:32:  g_masmPoison is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 2 in 26 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>1378970</commentid>
    <comment_count>3</comment_count>
      <attachid>328669</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-12-06 17:53:57 -0800</bug_when>
    <thetext>Created attachment 328669
patch for landing + cmake build fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378971</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-12-06 17:56:51 -0800</bug_when>
    <thetext>Attachment 328669 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/JSCPoisonedPtr.cpp:31:  g_classInfoPoison is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/runtime/JSCPoisonedPtr.cpp:32:  g_masmPoison is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 2 in 27 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>1378987</commentid>
    <comment_count>5</comment_count>
      <attachid>328672</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-12-06 19:37:46 -0800</bug_when>
    <thetext>Created attachment 328672
patch for landing + speculative fix for Windows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378988</commentid>
    <comment_count>6</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-12-06 19:39:19 -0800</bug_when>
    <thetext>Attachment 328672 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/JSCPoisonedPtr.cpp:31:  g_classInfoPoison is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/runtime/JSCPoisonedPtr.cpp:32:  g_masmPoison is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 2 in 27 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>1379006</commentid>
    <comment_count>7</comment_count>
      <attachid>328677</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-12-06 20:34:24 -0800</bug_when>
    <thetext>Created attachment 328677
patch for landing + 32-bit windows build fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379007</commentid>
    <comment_count>8</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-12-06 20:38:21 -0800</bug_when>
    <thetext>Attachment 328677 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/JSCPoisonedPtr.cpp:31:  g_classInfoPoison is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/runtime/JSCPoisonedPtr.cpp:32:  g_masmPoison is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 2 in 27 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>1379024</commentid>
    <comment_count>9</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-12-06 22:10:51 -0800</bug_when>
    <thetext>Thanks for the review.  Landed in r225620: &lt;http://trac.webkit.org/r225620&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379025</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-12-06 22:11:23 -0800</bug_when>
    <thetext>&lt;rdar://problem/35901694&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379112</commentid>
    <comment_count>11</comment_count>
      <attachid>328677</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-12-07 08:28:41 -0800</bug_when>
    <thetext>Comment on attachment 328677
patch for landing + 32-bit windows build fix.

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

&gt; Source/WTF/wtf/Poisoned.h:44
&gt; -template&lt;typename T, uintptr_t&amp; key, typename = std::enable_if_t&lt;std::is_pointer&lt;T&gt;::value&gt;&gt;
&gt; -class ScrambledPtr {
&gt; +template&lt;typename KeyType, KeyType key, typename T, typename = std::enable_if_t&lt;std::is_pointer&lt;T&gt;::value&gt;&gt;
&gt; +class PoisonedImpl {

Adding KeyType to the template parameters has broken the build with GCC 7. I don&apos;t know how to fix it, so I&apos;m going to roll it out... sorry. I guess GCC 6 works, because EWS and all the bots are fine.

In file included from ../../Source/JavaScriptCore/runtime/JSCPoisonedPtr.h:28:0,
                 from ../../Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h:29,
                 from ../../Source/JavaScriptCore/interpreter/AbstractPC.h:28,
                 from ../../Source/JavaScriptCore/interpreter/CallFrame.h:25,
                 from ../../Source/JavaScriptCore/runtime/ClassInfo.h:25,
                 from ../../Source/JavaScriptCore/runtime/Structure.h:28,
                 from ../../Source/JavaScriptCore/bytecode/ArrayProfile.h:29,
                 from ../../Source/JavaScriptCore/llint/LLIntOffsetsExtractor.cpp:28:
../../Source/WTF/wtf/Poisoned.h: In substitution of ‘template&lt;uintptr_t&amp; key, class T&gt; using Poisoned = WTF::PoisonedImpl&lt;const long unsigned int&amp;, ((const long unsigned int&amp;)key), T&gt; [with uintptr_t&amp; key = JSC::g_classInfoPoison; T = const JSC::ClassInfo*]’:
../../Source/JavaScriptCore/runtime/JSCPoisonedPtr.h:37:74:   required from here
../../Source/WTF/wtf/Poisoned.h:122:56: error: ‘(const long unsigned int&amp;)JSC::g_classInfoPoison’ is not a valid template argument for type ‘const long unsigned int&amp;’ because it is not an object with linkage
 using Poisoned = PoisonedImpl&lt;const uintptr_t&amp;, key, T&gt;;
                                                        ^</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379115</commentid>
    <comment_count>12</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-12-07 08:32:46 -0800</bug_when>
    <thetext>Committed r225629: &lt;https://trac.webkit.org/changeset/225629&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379116</commentid>
    <comment_count>13</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-12-07 08:33:00 -0800</bug_when>
    <thetext>Reopening</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379122</commentid>
    <comment_count>14</comment_count>
      <attachid>328677</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-12-07 09:08:50 -0800</bug_when>
    <thetext>Comment on attachment 328677
patch for landing + 32-bit windows build fix.

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

Here&apos;s a GCC 7 version without the bug: https://godbolt.org/g/zVx5fU

extern &quot;C&quot; const unsigned bar;

template&lt;typename KeyType, KeyType key&gt;
struct FooImpl {
    unsigned boo(unsigned v) { return v ^ key; }
};

template&lt;const unsigned&amp; key&gt;
using Foo = FooImpl&lt;const unsigned&amp;, key&gt;;

Foo&lt;bar&gt; foo;

Same thing with the bug: https://godbolt.org/g/a9UYxD

extern &quot;C&quot; unsigned bar;

template&lt;typename KeyType, KeyType key&gt;
struct FooImpl {
    unsigned boo(unsigned v) { return v ^ key; }
};

template&lt;unsigned&amp; key&gt;
using Foo = FooImpl&lt;const unsigned&amp;, key&gt;;

Foo&lt;bar&gt; foo;

&gt; Source/JavaScriptCore/runtime/JSCPoisonedPtr.h:33
&gt; +extern &quot;C&quot; JS_EXPORTDATA uintptr_t g_masmPoison;

And const here.

&gt; Source/WTF/wtf/Poisoned.h:121
&gt; +template&lt;uintptr_t&amp; key, typename T&gt;

key needs to be const here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379124</commentid>
    <comment_count>15</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-12-07 09:13:30 -0800</bug_when>
    <thetext>Or you can drop the const entirely. It&apos;ll generate the same code:

mov    0x0(%rip),%eax        # 0 is a relocation to &lt;bar&gt;
xor    %edi,%eax</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379137</commentid>
    <comment_count>16</comment_count>
      <attachid>328701</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-12-07 10:11:20 -0800</bug_when>
    <thetext>Created attachment 328701
patch for re-landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379138</commentid>
    <comment_count>17</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-12-07 10:13:14 -0800</bug_when>
    <thetext>Attachment 328701 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/JSCPoisonedPtr.cpp:31:  g_classInfoPoison is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/runtime/JSCPoisonedPtr.cpp:32:  g_masmPoison is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 2 in 27 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>1379140</commentid>
    <comment_count>18</comment_count>
      <attachid>328701</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-12-07 10:17:36 -0800</bug_when>
    <thetext>Comment on attachment 328701
patch for re-landing.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379162</commentid>
    <comment_count>19</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-12-07 10:50:38 -0800</bug_when>
    <thetext>Re-landed in r225632: &lt;http://trac.webkit.org/r225632&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379171</commentid>
    <comment_count>20</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-12-07 11:06:42 -0800</bug_when>
    <thetext>It works, thanks JF!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328665</attachid>
            <date>2017-12-06 17:36:10 -0800</date>
            <delta_ts>2017-12-06 17:53:57 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-180514.patch</filename>
            <type>text/plain</type>
            <size>77010</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjI1NjEzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY3IEBA
CisyMDE3LTEyLTA2ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZWZhY3RvcmluZzogUmVuYW1lIFNjcmFtYmxlZFB0ciB0byBQb2lzb25lZC4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDUxNAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmpl
Y3QuaDoKKyAgICAgICAgKiBBUEkvSlNPYmplY3RSZWYuY3BwOgorICAgICAgICAoY2xhc3NJbmZv
UHJpdmF0ZSk6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJDb2RlUmVmLmg6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uUHRyOjpGdW5jdGlvblB0
cik6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uUHRyOjp2YWx1ZSBjb25zdCk6CisgICAgICAgIChK
U0M6OkZ1bmN0aW9uUHRyOjpleGVjdXRhYmxlQWRkcmVzcyBjb25zdCk6CisgICAgICAgIChKU0M6
OlJldHVybkFkZHJlc3NQdHI6OlJldHVybkFkZHJlc3NQdHIpOgorICAgICAgICAoSlNDOjpSZXR1
cm5BZGRyZXNzUHRyOjp2YWx1ZSBjb25zdCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
Q29kZVB0cjo6TWFjcm9Bc3NlbWJsZXJDb2RlUHRyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyOjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MpOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OnBvaXNvbmVkUHRyIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjogY29uc3QpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlckNvZGVQdHI6Om9wZXJhdG9yISBjb25zdCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyQ29kZVB0cjo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyQ29kZVB0cjo6ZW1wdHlWYWx1ZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
Q29kZVB0cjo6ZGVsZXRlZFZhbHVlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyOjpzY3JhbWJsZWRQdHIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGIzL0IzTG93ZXJN
YWNyb3MuY3BwOgorICAgICAgICAqIGIzL3Rlc3RiMy5jcHA6CisgICAgICAgIChKU0M6OkIzOjp0
ZXN0SW50ZXJwcmV0ZXIpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNoZWNrQXJyYXkpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tTdWJDbGFzcyk6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdTdHJpbmdPYmplY3QpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoSW50SnVtcCk6CisgICAg
ICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVOZXdTdHJpbmdPYmplY3QpOgorICAgICAgICAoSlNDOjpGVEw6
OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2hlY2tTdWJDbGFzcyk6CisgICAgICAgICogaml0
L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRB
bGxvY2F0ZURlc3RydWN0aWJsZU9iamVjdCk6CisgICAgICAgICogaml0L1NwZWNpYWxpemVkVGh1
bmtKSVQuaDoKKyAgICAgICAgKEpTQzo6U3BlY2lhbGl6ZWRUaHVua0pJVDo6bG9hZEFyZ3VtZW50
V2l0aFNwZWNpZmljQ2xhc3MpOgorICAgICAgICAqIGppdC9UaHVua0dlbmVyYXRvcnMuY3BwOgor
ICAgICAgICAoSlNDOjp2aXJ0dWFsVGh1bmtGb3IpOgorICAgICAgICAoSlNDOjpib3VuZFRoaXNO
b0FyZ3NGdW5jdGlvbkNhbGxHZW5lcmF0b3IpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1Bh
dGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OmhhbmRsZUhvc3RDYWxsKToKKyAgICAgICAg
KEpTQzo6TExJbnQ6OnNldFVwQ2FsbCk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjY0LmFzbToKKyAgICAgICAgKiBydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwOgor
ICAgICAgICAoSlNDOjppbml0aWFsaXplVGhyZWFkaW5nKToKKyAgICAgICAgKiBydW50aW1lL0pT
Q1BvaXNvbmVkUHRyLmNwcDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDU2NyYW1ibGVkUHRyLmNwcC4KKyAgICAgICAgKEpTQzo6aW5pdGlhbGl6ZVBvaXNvbik6
CisgICAgICAgIChKU0M6OmluaXRpYWxpemVTY3JhbWJsZWRQdHJLZXlzKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBydW50aW1lL0pTQ1BvaXNvbmVkUHRyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ1NjcmFtYmxlZFB0ci5oLgorICAgICAgICAqIHJ1bnRpbWUv
SlNDU2NyYW1ibGVkUHRyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBydW50aW1lL0pTQ1NjcmFt
YmxlZFB0ci5oOiBSZW1vdmVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNEZXN0cnVjdGlibGVPYmpl
Y3QuaDoKKyAgICAgICAgKEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Q6OmNsYXNzSW5mbyBjb25z
dCk6CisgICAgICAgICogcnVudGltZS9KU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0Lmg6CisgICAg
ICAgIChKU0M6OkpTU2VnbWVudGVkVmFyaWFibGVPYmplY3Q6OmNsYXNzSW5mbyBjb25zdCk6Cisg
ICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisK
IDIwMTctMTItMDYgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAg
QVNTRVJUSU9OIEZBSUxFRDogdm0tPmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkgaW4g
dm9pZCBKU0M6OnNhbml0aXplU3RhY2tGb3JWTShKU0M6OlZNICopCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL1NvdXJjZXMudHh0CShyZXZpc2lvbiAyMjU1NzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTc3Miw3ICs3NzIsNyBAQCBydW50aW1l
L0pTQXN5bmNGdW5jdGlvbi5jcHAKIHJ1bnRpbWUvSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uLmNw
cAogcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCiBydW50aW1lL0pTQ0pTVmFsdWUuY3BwCi1y
dW50aW1lL0pTQ1NjcmFtYmxlZFB0ci5jcHAKK3J1bnRpbWUvSlNDUG9pc29uZWRQdHIuY3BwCiBy
dW50aW1lL0pTQ2FsbGVlLmNwcAogcnVudGltZS9KU0NlbGwuY3BwCiBydW50aW1lL0pTQ3VzdG9t
R2V0dGVyU2V0dGVyRnVuY3Rpb24uY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ2FsbGJhY2tPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ2FsbGJhY2tPYmplY3QuaAkocmV2aXNpb24gMjI1NTc2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcg
KzI3LDcgQEAKICNpZm5kZWYgSlNDYWxsYmFja09iamVjdF9oCiAjZGVmaW5lIEpTQ2FsbGJhY2tP
YmplY3RfaAogCi0jaW5jbHVkZSAiSlNDU2NyYW1ibGVkUHRyLmgiCisjaW5jbHVkZSAiSlNDUG9p
c29uZWRQdHIuaCIKICNpbmNsdWRlICJKU09iamVjdFJlZi5oIgogI2luY2x1ZGUgIkpTVmFsdWVS
ZWYuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgpAQCAtMjM0LDcgKzIzNCw3IEBAIHByaXZhdGU6
CiAgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIGNhbGxiYWNrR2V0dGVyKEV4ZWNTdGF0ZSosIEVu
Y29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEpTQ2Fs
bGJhY2tPYmplY3REYXRhPiBtX2NhbGxiYWNrT2JqZWN0RGF0YTsKLSAgICBDbGFzc0luZm9TY3Jh
bWJsZWRQdHIgbV9jbGFzc0luZm87CisgICAgUG9pc29uZWRDbGFzc0luZm9QdHIgbV9jbGFzc0lu
Zm87CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNPYmplY3RSZWYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNPYmplY3RSZWYuY3BwCShyZXZpc2lvbiAyMjU1NzYpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMxLDcgKzQz
MSw3IEBAIHN0YXRpYyBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mb1ByaXZhdGUKICAgICBpZiAo
dm0uY3VycmVudGx5RGVzdHJ1Y3RpbmdDYWxsYmFja09iamVjdCAhPSBqc09iamVjdCkKICAgICAg
ICAgcmV0dXJuIGpzT2JqZWN0LT5jbGFzc0luZm8odm0pOwogCi0gICAgcmV0dXJuIHZtLmN1cnJl
bnRseURlc3RydWN0aW5nQ2FsbGJhY2tPYmplY3RDbGFzc0luZm8uZGVzY3JhbWJsZWQoKTsKKyAg
ICByZXR1cm4gdm0uY3VycmVudGx5RGVzdHJ1Y3RpbmdDYWxsYmFja09iamVjdENsYXNzSW5mby51
bnBvaXNvbmVkKCk7CiB9CiAKIHZvaWQqIEpTT2JqZWN0R2V0UHJpdmF0ZShKU09iamVjdFJlZiBv
YmplY3QpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjI1NTc2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE3MjAsNyArMTcyMCw3IEBACiAJCUZFMUMw
RkZEMUIxOTNFOTgwMEI1M0ZDQSAvKiBFeGNlcHRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMUMwRkZDMUIxOTNFOTgwMEI1M0ZDQSAvKiBFeGNl
cHRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlGRTIwQ0U5RTE1RjA0QTk1MDBERjM0MzAgLyogTExJbnRDTG9vcC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUyMENFOUMxNUYwNEE5NTAwREYzNDMw
IC8qIExMSW50Q0xvb3AuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlGRTJBODc2MDFGMDIzODE2MDBFQjMxQjIgLyogTWluaW11bVJlc2VydmVkWm9u
ZVNpemUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZF
MkE4NzVGMUYwMjM4MTYwMEVCMzFCMiAvKiBNaW5pbXVtUmVzZXJ2ZWRab25lU2l6ZS5oICovOyB9
OwotCQlGRTJCMEI2OTFGRDIyN0UwMDA3NURBNUYgLyogSlNDU2NyYW1ibGVkUHRyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTJCMEI2NzFGRDBEMjk2
MDA3NURBNUYgLyogSlNDU2NyYW1ibGVkUHRyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkUyQjBCNjkxRkQyMjdFMDAwNzVEQTVGIC8qIEpTQ1Bv
aXNvbmVkUHRyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRTJCMEI2NzFGRDBEMjk2MDA3NURBNUYgLyogSlNDUG9pc29uZWRQdHIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTMwMjJEMzFFM0Q3M0E1
MDBCQUM0OTMgLyogU2lnaWxsQ3Jhc2hBbmFseXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzMDIyRDExRTNENzM5NjAwQkFDNDkzIC8qIFNpZ2ls
bENyYXNoQW5hbHl6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlGRTMwMjJENzFFNDI4NTczMDBCQUM0OTMgLyogVk1JbnNwZWN0b3IuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzAyMkQ1MUU0Mjg1
NjcwMEJBQzQ5MyAvKiBWTUluc3BlY3Rvci5oICovOyB9OwogCQlGRTMxOEZFMDFDQUM5ODJGMDBE
RkNDNTQgLyogRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzMThGREUxQ0FDOEM1MzAwREZDQzU0
IC8qIEVDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuaCAqLzsgfTsKQEAgLTQ1OTgsOCAr
NDU5OCw4IEBACiAJCUZFMjBDRTlCMTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENMb29wLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50Q0xvb3AuY3BwOyBwYXRo
ID0gbGxpbnQvTExJbnRDTG9vcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZF
MjBDRTlDMTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENMb29wLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IExMSW50Q0xvb3AuaDsgcGF0aCA9IGxsaW50L0xMSW50Q0xvb3AuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUyQTg3NUYxRjAyMzgxNjAwRUIzMUIyIC8q
IE1pbmltdW1SZXNlcnZlZFpvbmVTaXplLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1pbmltdW1SZXNlcnZl
ZFpvbmVTaXplLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUZFMkIwQjY3MUZEMEQy
OTYwMDc1REE1RiAvKiBKU0NTY3JhbWJsZWRQdHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNDU2NyYW1ibGVkUHRyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUZFMkIwQjY4MUZEMEQyOTcwMDc1REE1RiAvKiBKU0NTY3JhbWJsZWRQdHIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDU2NyYW1ibGVkUHRyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkUyQjBCNjcxRkQwRDI5NjAwNzVEQTVGIC8qIEpTQ1Bv
aXNvbmVkUHRyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ1BvaXNvbmVk
UHRyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMkIwQjY4MUZEMEQyOTcwMDc1
REE1RiAvKiBKU0NQb2lzb25lZFB0ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU0NQb2lzb25lZFB0ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUZFMkU2QTdBMUQ2RUE1RkUwMDYwRjg5NiAvKiBUaHJvd1Njb3BlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRocm93U2NvcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGRTMwMjJEMDFFM0Q3Mzk2MDBCQUM0OTMgLyogU2lnaWxsQ3Jhc2hBbmFs
eXplci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaWdpbGxDcmFz
aEFuYWx5emVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUzMDIyRDExRTNE
NzM5NjAwQkFDNDkzIC8qIFNpZ2lsbENyYXNoQW5hbHl6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU2lnaWxsQ3Jhc2hBbmFseXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtNjU0Myw4ICs2NTQzLDggQEAKIAkJCQlGNjkyQTg4NzAyNTU1OTdEMDFGRjYw
RjcgLyogSlNDSlNWYWx1ZS5jcHAgKi8sCiAJCQkJMTRBQkIzNkUwOTlDMDc2NDAwRTJBMjRGIC8q
IEpTQ0pTVmFsdWUuaCAqLywKIAkJCQk4NjVBMzBGMDEzNTAwN0UxMDBDREI0OUUgLyogSlNDSlNW
YWx1ZUlubGluZXMuaCAqLywKLQkJCQlGRTJCMEI2ODFGRDBEMjk3MDA3NURBNUYgLyogSlNDU2Ny
YW1ibGVkUHRyLmNwcCAqLywKLQkJCQlGRTJCMEI2NzFGRDBEMjk2MDA3NURBNUYgLyogSlNDU2Ny
YW1ibGVkUHRyLmggKi8sCisJCQkJRkUyQjBCNjgxRkQwRDI5NzAwNzVEQTVGIC8qIEpTQ1BvaXNv
bmVkUHRyLmNwcCAqLywKKwkJCQlGRTJCMEI2NzFGRDBEMjk2MDA3NURBNUYgLyogSlNDUG9pc29u
ZWRQdHIuaCAqLywKIAkJCQk3MkFBRjdDQjFEMEQzMThCMDA1RTYwQkUgLyogSlNDdXN0b21HZXR0
ZXJTZXR0ZXJGdW5jdGlvbi5jcHAgKi8sCiAJCQkJNzJBQUY3Q0MxRDBEMzE4QjAwNUU2MEJFIC8q
IEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uaCAqLywKIAkJCQkwRjJCNjZCRDE3QjZCNUFC
MDBBN0FFM0YgLyogSlNEYXRhVmlldy5jcHAgKi8sCkBAIC04MTU1LDcgKzgxNTUsNyBAQAogCQkJ
CTBGRUM4NTJBMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1BoYXNlU2NvcGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGMzczMDhEMUMwQkQyOTEwMDA1MkJGQSAvKiBCM1BoaUNoaWxkcmVuLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkVDODUyQzFCREFDREFDMDA4MEZGNzQgLyogQjNQcm9jZWR1cmUuaCBp
biBIZWFkZXJzICovLAotCQkJCUZFMkIwQjY5MUZEMjI3RTAwMDc1REE1RiAvKiBKU0NTY3JhbWJs
ZWRQdHIuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFMkIwQjY5MUZEMjI3RTAwMDc1REE1RiAvKiBK
U0NQb2lzb25lZFB0ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1MkQxQkRBQ0RBQzAwODBG
Rjc0IC8qIEIzUHJvY2VkdXJlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3MjVDQUEx
QzUwM0RFRDAwQUQ5NDNBIC8qIEIzUHVyZUNTRS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDM0MjJB
NjcxQzE2MjY3ODAwRTJFQjk4IC8qIEIzUmVkdWNlRG91YmxlVG9GbG9hdC5oIGluIEhlYWRlcnMg
Ki8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
Q29kZVJlZi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgJKHJldmlzaW9uIDIyNTU3NikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDcgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRXhlY3V0YWJs
ZUFsbG9jYXRvci5oIgotI2luY2x1ZGUgIkpTQ1NjcmFtYmxlZFB0ci5oIgorI2luY2x1ZGUgIkpT
Q1BvaXNvbmVkUHRyLmgiCiAjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KICNpbmNsdWRlIDx3dGYv
UHJpbnRTdHJlYW0uaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC02Nyw3ICs2Nyw3IEBA
IHB1YmxpYzoKICAgICBGdW5jdGlvblB0cihyZXR1cm5UeXBlKCp2YWx1ZSkoKSkKICAgICAgICAg
OiBtX3ZhbHVlKCh2b2lkKil2YWx1ZSkKICAgICB7Ci0gICAgICAgIE1hc21TY3JhbWJsZWRQdHI6
OmFzc2VydElzTm90U2NyYW1ibGVkKG1fdmFsdWUpOworICAgICAgICBQb2lzb25lZE1hc21QdHI6
OmFzc2VydElzTm90UG9pc29uZWQobV92YWx1ZSk7CiAgICAgICAgIEFTU0VSVF9WQUxJRF9DT0RF
X1BPSU5URVIobV92YWx1ZSk7CiAgICAgfQogCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAg
ICBGdW5jdGlvblB0cihyZXR1cm5UeXBlKCp2YWx1ZSkoYXJnVHlwZTEpKQogICAgICAgICA6IG1f
dmFsdWUoKHZvaWQqKXZhbHVlKQogICAgIHsKLSAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6YXNz
ZXJ0SXNOb3RTY3JhbWJsZWQobV92YWx1ZSk7CisgICAgICAgIFBvaXNvbmVkTWFzbVB0cjo6YXNz
ZXJ0SXNOb3RQb2lzb25lZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9J
TlRFUihtX3ZhbHVlKTsKICAgICB9CiAKQEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogICAgIEZ1
bmN0aW9uUHRyKHJldHVyblR5cGUoKnZhbHVlKShhcmdUeXBlMSwgYXJnVHlwZTIpKQogICAgICAg
ICA6IG1fdmFsdWUoKHZvaWQqKXZhbHVlKQogICAgIHsKLSAgICAgICAgTWFzbVNjcmFtYmxlZFB0
cjo6YXNzZXJ0SXNOb3RTY3JhbWJsZWQobV92YWx1ZSk7CisgICAgICAgIFBvaXNvbmVkTWFzbVB0
cjo6YXNzZXJ0SXNOb3RQb2lzb25lZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NP
REVfUE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CiAKQEAgLTkxLDcgKzkxLDcgQEAgcHVibGljOgog
ICAgIEZ1bmN0aW9uUHRyKHJldHVyblR5cGUoKnZhbHVlKShhcmdUeXBlMSwgYXJnVHlwZTIsIGFy
Z1R5cGUzKSkKICAgICAgICAgOiBtX3ZhbHVlKCh2b2lkKil2YWx1ZSkKICAgICB7Ci0gICAgICAg
IE1hc21TY3JhbWJsZWRQdHI6OmFzc2VydElzTm90U2NyYW1ibGVkKG1fdmFsdWUpOworICAgICAg
ICBQb2lzb25lZE1hc21QdHI6OmFzc2VydElzTm90UG9pc29uZWQobV92YWx1ZSk7CiAgICAgICAg
IEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7CiAgICAgfQogCkBAIC05OSw3ICs5
OSw3IEBAIHB1YmxpYzoKICAgICBGdW5jdGlvblB0cihyZXR1cm5UeXBlKCp2YWx1ZSkoYXJnVHlw
ZTEsIGFyZ1R5cGUyLCBhcmdUeXBlMywgYXJnVHlwZTQpKQogICAgICAgICA6IG1fdmFsdWUoKHZv
aWQqKXZhbHVlKQogICAgIHsKLSAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6YXNzZXJ0SXNOb3RT
Y3JhbWJsZWQobV92YWx1ZSk7CisgICAgICAgIFBvaXNvbmVkTWFzbVB0cjo6YXNzZXJ0SXNOb3RQ
b2lzb25lZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3Zh
bHVlKTsKICAgICB9CiAKQEAgLTEwNyw3ICsxMDcsNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rpb25Q
dHIocmV0dXJuVHlwZSgqdmFsdWUpKGFyZ1R5cGUxLCBhcmdUeXBlMiwgYXJnVHlwZTMsIGFyZ1R5
cGU0LCBhcmdUeXBlNSkpCiAgICAgICAgIDogbV92YWx1ZSgodm9pZCopdmFsdWUpCiAgICAgewot
ICAgICAgICBNYXNtU2NyYW1ibGVkUHRyOjphc3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsK
KyAgICAgICAgUG9pc29uZWRNYXNtUHRyOjphc3NlcnRJc05vdFBvaXNvbmVkKG1fdmFsdWUpOwog
ICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwogICAgIH0KIApAQCAt
MTE1LDcgKzExNSw3IEBAIHB1YmxpYzoKICAgICBGdW5jdGlvblB0cihyZXR1cm5UeXBlKCp2YWx1
ZSkoYXJnVHlwZTEsIGFyZ1R5cGUyLCBhcmdUeXBlMywgYXJnVHlwZTQsIGFyZ1R5cGU1LCBhcmdU
eXBlNikpCiAgICAgICAgIDogbV92YWx1ZSgodm9pZCopdmFsdWUpCiAgICAgewotICAgICAgICBN
YXNtU2NyYW1ibGVkUHRyOjphc3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsKKyAgICAgICAg
UG9pc29uZWRNYXNtUHRyOjphc3NlcnRJc05vdFBvaXNvbmVkKG1fdmFsdWUpOwogICAgICAgICBB
U1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwogICAgIH0KIC8vIE1TVkMgZG9lc24n
dCBzZWVtIHRvIHRyZWF0IGZ1bmN0aW9ucyB3aXRoIGRpZmZlcmVudCBjYWxsaW5nIGNvbnZlbnRp
b25zIGFzCkBAIC0xMjYsNyArMTI2LDcgQEAgcHVibGljOgogICAgIEZ1bmN0aW9uUHRyKHJldHVy
blR5cGUgKENERUNMICp2YWx1ZSkoKSkKICAgICAgICAgOiBtX3ZhbHVlKCh2b2lkKil2YWx1ZSkK
ICAgICB7Ci0gICAgICAgIE1hc21TY3JhbWJsZWRQdHI6OmFzc2VydElzTm90U2NyYW1ibGVkKG1f
dmFsdWUpOworICAgICAgICBQb2lzb25lZE1hc21QdHI6OmFzc2VydElzTm90UG9pc29uZWQobV92
YWx1ZSk7CiAgICAgICAgIEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7CiAgICAg
fQogCkBAIC0xMzQsNyArMTM0LDcgQEAgcHVibGljOgogICAgIEZ1bmN0aW9uUHRyKHJldHVyblR5
cGUgKENERUNMICp2YWx1ZSkoYXJnVHlwZTEpKQogICAgICAgICA6IG1fdmFsdWUoKHZvaWQqKXZh
bHVlKQogICAgIHsKLSAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6YXNzZXJ0SXNOb3RTY3JhbWJs
ZWQobV92YWx1ZSk7CisgICAgICAgIFBvaXNvbmVkTWFzbVB0cjo6YXNzZXJ0SXNOb3RQb2lzb25l
ZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVlKTsK
ICAgICB9CiAKQEAgLTE0Miw3ICsxNDIsNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rpb25QdHIocmV0
dXJuVHlwZSAoQ0RFQ0wgKnZhbHVlKShhcmdUeXBlMSwgYXJnVHlwZTIpKQogICAgICAgICA6IG1f
dmFsdWUoKHZvaWQqKXZhbHVlKQogICAgIHsKLSAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6YXNz
ZXJ0SXNOb3RTY3JhbWJsZWQobV92YWx1ZSk7CisgICAgICAgIFBvaXNvbmVkTWFzbVB0cjo6YXNz
ZXJ0SXNOb3RQb2lzb25lZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9J
TlRFUihtX3ZhbHVlKTsKICAgICB9CiAKQEAgLTE1MCw3ICsxNTAsNyBAQCBwdWJsaWM6CiAgICAg
RnVuY3Rpb25QdHIocmV0dXJuVHlwZSAoQ0RFQ0wgKnZhbHVlKShhcmdUeXBlMSwgYXJnVHlwZTIs
IGFyZ1R5cGUzKSkKICAgICAgICAgOiBtX3ZhbHVlKCh2b2lkKil2YWx1ZSkKICAgICB7Ci0gICAg
ICAgIE1hc21TY3JhbWJsZWRQdHI6OmFzc2VydElzTm90U2NyYW1ibGVkKG1fdmFsdWUpOworICAg
ICAgICBQb2lzb25lZE1hc21QdHI6OmFzc2VydElzTm90UG9pc29uZWQobV92YWx1ZSk7CiAgICAg
ICAgIEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7CiAgICAgfQogCkBAIC0xNTgs
NyArMTU4LDcgQEAgcHVibGljOgogICAgIEZ1bmN0aW9uUHRyKHJldHVyblR5cGUgKENERUNMICp2
YWx1ZSkoYXJnVHlwZTEsIGFyZ1R5cGUyLCBhcmdUeXBlMywgYXJnVHlwZTQpKQogICAgICAgICA6
IG1fdmFsdWUoKHZvaWQqKXZhbHVlKQogICAgIHsKLSAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6
YXNzZXJ0SXNOb3RTY3JhbWJsZWQobV92YWx1ZSk7CisgICAgICAgIFBvaXNvbmVkTWFzbVB0cjo6
YXNzZXJ0SXNOb3RQb2lzb25lZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVf
UE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CiAjZW5kaWYKQEAgLTE2OSw3ICsxNjksNyBAQCBwdWJs
aWM6CiAgICAgRnVuY3Rpb25QdHIocmV0dXJuVHlwZSAoRkFTVENBTEwgKnZhbHVlKSgpKQogICAg
ICAgICA6IG1fdmFsdWUoKHZvaWQqKXZhbHVlKQogICAgIHsKLSAgICAgICAgTWFzbVNjcmFtYmxl
ZFB0cjo6YXNzZXJ0SXNOb3RTY3JhbWJsZWQobV92YWx1ZSk7CisgICAgICAgIFBvaXNvbmVkTWFz
bVB0cjo6YXNzZXJ0SXNOb3RQb2lzb25lZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElE
X0NPREVfUE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CiAKQEAgLTE3Nyw3ICsxNzcsNyBAQCBwdWJs
aWM6CiAgICAgRnVuY3Rpb25QdHIocmV0dXJuVHlwZSAoRkFTVENBTEwgKnZhbHVlKShhcmdUeXBl
MSkpCiAgICAgICAgIDogbV92YWx1ZSgodm9pZCopdmFsdWUpCiAgICAgewotICAgICAgICBNYXNt
U2NyYW1ibGVkUHRyOjphc3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsKKyAgICAgICAgUG9p
c29uZWRNYXNtUHRyOjphc3NlcnRJc05vdFBvaXNvbmVkKG1fdmFsdWUpOwogICAgICAgICBBU1NF
UlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwogICAgIH0KIApAQCAtMTg1LDcgKzE4NSw3
IEBAIHB1YmxpYzoKICAgICBGdW5jdGlvblB0cihyZXR1cm5UeXBlIChGQVNUQ0FMTCAqdmFsdWUp
KGFyZ1R5cGUxLCBhcmdUeXBlMikpCiAgICAgICAgIDogbV92YWx1ZSgodm9pZCopdmFsdWUpCiAg
ICAgewotICAgICAgICBNYXNtU2NyYW1ibGVkUHRyOjphc3NlcnRJc05vdFNjcmFtYmxlZChtX3Zh
bHVlKTsKKyAgICAgICAgUG9pc29uZWRNYXNtUHRyOjphc3NlcnRJc05vdFBvaXNvbmVkKG1fdmFs
dWUpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwogICAgIH0K
IApAQCAtMTkzLDcgKzE5Myw3IEBAIHB1YmxpYzoKICAgICBGdW5jdGlvblB0cihyZXR1cm5UeXBl
IChGQVNUQ0FMTCAqdmFsdWUpKGFyZ1R5cGUxLCBhcmdUeXBlMiwgYXJnVHlwZTMpKQogICAgICAg
ICA6IG1fdmFsdWUoKHZvaWQqKXZhbHVlKQogICAgIHsKLSAgICAgICAgTWFzbVNjcmFtYmxlZFB0
cjo6YXNzZXJ0SXNOb3RTY3JhbWJsZWQobV92YWx1ZSk7CisgICAgICAgIFBvaXNvbmVkTWFzbVB0
cjo6YXNzZXJ0SXNOb3RQb2lzb25lZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NP
REVfUE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CiAKQEAgLTIwMSw3ICsyMDEsNyBAQCBwdWJsaWM6
CiAgICAgRnVuY3Rpb25QdHIocmV0dXJuVHlwZSAoRkFTVENBTEwgKnZhbHVlKShhcmdUeXBlMSwg
YXJnVHlwZTIsIGFyZ1R5cGUzLCBhcmdUeXBlNCkpCiAgICAgICAgIDogbV92YWx1ZSgodm9pZCop
dmFsdWUpCiAgICAgewotICAgICAgICBNYXNtU2NyYW1ibGVkUHRyOjphc3NlcnRJc05vdFNjcmFt
YmxlZChtX3ZhbHVlKTsKKyAgICAgICAgUG9pc29uZWRNYXNtUHRyOjphc3NlcnRJc05vdFBvaXNv
bmVkKG1fdmFsdWUpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUp
OwogICAgIH0KICNlbmRpZgpAQCAtMjEzLDcgKzIxMyw3IEBAIHB1YmxpYzoKICAgICAgICAgLy8g
KEkgZ3Vlc3Mgb24gUlZUQyBmdW5jdGlvbiBwb2ludGVycyBoYXZlIGEgZGlmZmVyZW50IGNvbnN0
bmVzcyB0byBHQ0MvTVNWQz8pCiAgICAgICAgIDogbV92YWx1ZSgodm9pZCopdmFsdWUpCiAgICAg
ewotICAgICAgICBNYXNtU2NyYW1ibGVkUHRyOjphc3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVl
KTsKKyAgICAgICAgUG9pc29uZWRNYXNtUHRyOjphc3NlcnRJc05vdFBvaXNvbmVkKG1fdmFsdWUp
OwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwogICAgIH0KIApA
QCAtMjIxLDEyICsyMjEsMTIgQEAgcHVibGljOgogCiAgICAgdm9pZCogdmFsdWUoKSBjb25zdAog
ICAgIHsKLSAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6YXNzZXJ0SXNOb3RTY3JhbWJsZWQobV92
YWx1ZSk7CisgICAgICAgIFBvaXNvbmVkTWFzbVB0cjo6YXNzZXJ0SXNOb3RQb2lzb25lZChtX3Zh
bHVlKTsKICAgICAgICAgcmV0dXJuIG1fdmFsdWU7CiAgICAgfQogICAgIHZvaWQqIGV4ZWN1dGFi
bGVBZGRyZXNzKCkgY29uc3QKICAgICB7Ci0gICAgICAgIE1hc21TY3JhbWJsZWRQdHI6OmFzc2Vy
dElzTm90U2NyYW1ibGVkKG1fdmFsdWUpOworICAgICAgICBQb2lzb25lZE1hc21QdHI6OmFzc2Vy
dElzTm90UG9pc29uZWQobV92YWx1ZSk7CiAgICAgICAgIHJldHVybiBtX3ZhbHVlOwogICAgIH0K
IApAQCAtMjQ3LDIwICsyNDcsMjAgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFJldHVybkFkZHJl
c3NQdHIodm9pZCogdmFsdWUpCiAgICAgICAgIDogbV92YWx1ZSh2YWx1ZSkKICAgICB7Ci0gICAg
ICAgIE1hc21TY3JhbWJsZWRQdHI6OmFzc2VydElzTm90U2NyYW1ibGVkKG1fdmFsdWUpOworICAg
ICAgICBQb2lzb25lZE1hc21QdHI6OmFzc2VydElzTm90UG9pc29uZWQobV92YWx1ZSk7CiAgICAg
ICAgIEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7CiAgICAgfQogCiAgICAgZXhw
bGljaXQgUmV0dXJuQWRkcmVzc1B0cihGdW5jdGlvblB0ciBmdW5jdGlvbikKICAgICAgICAgOiBt
X3ZhbHVlKGZ1bmN0aW9uLnZhbHVlKCkpCiAgICAgewotICAgICAgICBNYXNtU2NyYW1ibGVkUHRy
Ojphc3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsKKyAgICAgICAgUG9pc29uZWRNYXNtUHRy
Ojphc3NlcnRJc05vdFBvaXNvbmVkKG1fdmFsdWUpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09E
RV9QT0lOVEVSKG1fdmFsdWUpOwogICAgIH0KIAogICAgIHZvaWQqIHZhbHVlKCkgY29uc3QKICAg
ICB7Ci0gICAgICAgIE1hc21TY3JhbWJsZWRQdHI6OmFzc2VydElzTm90U2NyYW1ibGVkKG1fdmFs
dWUpOworICAgICAgICBQb2lzb25lZE1hc21QdHI6OmFzc2VydElzTm90UG9pc29uZWQobV92YWx1
ZSk7CiAgICAgICAgIHJldHVybiBtX3ZhbHVlOwogICAgIH0KICAgICAKQEAgLTI4OCw3ICsyODgs
NyBAQCBwdWJsaWM6CiAgICAgICAgIDogbV92YWx1ZSh2YWx1ZSkKICNlbmRpZgogICAgIHsKLSAg
ICAgICAgbV92YWx1ZS5hc3NlcnRJc1NjcmFtYmxlZCgpOworICAgICAgICBtX3ZhbHVlLmFzc2Vy
dElzUG9pc29uZWQoKTsKICAgICAgICAgQVNTRVJUKHZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZB
TElEX0NPREVfUE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CkBAIC0yOTgsOCArMjk4LDggQEAgcHVi
bGljOgogICAgICAgICBBU1NFUlQodmFsdWUpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9Q
T0lOVEVSKHZhbHVlKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHJlc3VsdDsKLSAg
ICAgICAgcmVzdWx0Lm1fdmFsdWUgPSBNYXNtU2NyYW1ibGVkUHRyKHZhbHVlKTsKLSAgICAgICAg
cmVzdWx0Lm1fdmFsdWUuYXNzZXJ0SXNTY3JhbWJsZWQoKTsKKyAgICAgICAgcmVzdWx0Lm1fdmFs
dWUgPSBQb2lzb25lZE1hc21QdHIodmFsdWUpOworICAgICAgICByZXN1bHQubV92YWx1ZS5hc3Nl
cnRJc1BvaXNvbmVkKCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCkBAIC0zMDks
NDIgKzMwOSw0MiBAQCBwdWJsaWM6CiAgICAgICAgIDogbV92YWx1ZShyYS52YWx1ZSgpKQogICAg
IHsKICAgICAgICAgQVNTRVJUKHJhLnZhbHVlKCkpOwotICAgICAgICBtX3ZhbHVlLmFzc2VydElz
U2NyYW1ibGVkKCk7CisgICAgICAgIG1fdmFsdWUuYXNzZXJ0SXNQb2lzb25lZCgpOwogICAgICAg
ICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwogICAgIH0KIAotICAgIE1hc21T
Y3JhbWJsZWRQdHIgc2NyYW1ibGVkUHRyKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQorICAg
IFBvaXNvbmVkTWFzbVB0ciBwb2lzb25lZFB0cigpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0K
IAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQgPSB2b2lkKj4KICAgICBUIGV4ZWN1dGFibGVBZGRy
ZXNzKCkgY29uc3QKICAgICB7Ci0gICAgICAgIG1fdmFsdWUuYXNzZXJ0SXNTY3JhbWJsZWQoKTsK
LSAgICAgICAgcmV0dXJuIG1fdmFsdWUgPyBtX3ZhbHVlLmRlc2NyYW1ibGVkPFQ+KCkgOiBzdGF0
aWNfY2FzdDxUPigwKTsKKyAgICAgICAgbV92YWx1ZS5hc3NlcnRJc1BvaXNvbmVkKCk7CisgICAg
ICAgIHJldHVybiBtX3ZhbHVlLnVucG9pc29uZWQ8VD4oKTsKICAgICB9CiAjaWYgQ1BVKEFSTV9U
SFVNQjIpCiAgICAgLy8gVG8gdXNlIHRoaXMgcG9pbnRlciBhcyBhIGRhdGEgYWRkcmVzcyByZW1v
dmUgdGhlIGRlY29yYXRpb24uCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCA9IHZvaWQqPgogICAg
IFQgZGF0YUxvY2F0aW9uKCkgY29uc3QKICAgICB7Ci0gICAgICAgIG1fdmFsdWUuYXNzZXJ0SXNT
Y3JhbWJsZWQoKTsKKyAgICAgICAgbV92YWx1ZS5hc3NlcnRJc1BvaXNvbmVkKCk7CiAgICAgICAg
IEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7Ci0gICAgICAgIHJldHVybiBiaXR3
aXNlX2Nhc3Q8VD4obV92YWx1ZSA/IG1fdmFsdWUuZGVzY3JhbWJsZWQ8Y2hhcio+KCkgLSAxIDog
bnVsbHB0cik7CisgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8VD4obV92YWx1ZSA/IG1fdmFs
dWUudW5wb2lzb25lZDxjaGFyKj4oKSAtIDEgOiBudWxscHRyKTsKICAgICB9CiAjZWxzZQogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQgPSB2b2lkKj4KICAgICBUIGRhdGFMb2NhdGlvbigpIGNvbnN0
CiAgICAgewotICAgICAgICBtX3ZhbHVlLmFzc2VydElzU2NyYW1ibGVkKCk7CisgICAgICAgIG1f
dmFsdWUuYXNzZXJ0SXNQb2lzb25lZCgpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lO
VEVSKG1fdmFsdWUpOwotICAgICAgICByZXR1cm4gbV92YWx1ZSA/IG1fdmFsdWUuZGVzY3JhbWJs
ZWQ8VD4oKSA6IHN0YXRpY19jYXN0PFQ+KDApOworICAgICAgICByZXR1cm4gbV92YWx1ZS51bnBv
aXNvbmVkPFQ+KCk7CiAgICAgfQogI2VuZGlmCiAKICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0
CiAgICAgewotI2lmIEVOQUJMRShTQ1JBTUJMRURfUFRSX0FTU0VSVFMpCisjaWYgRU5BQkxFKFBP
SVNPTl9BU1NFUlRTKQogICAgICAgICBpZiAoIWlzRW1wdHlWYWx1ZSgpICYmICFpc0RlbGV0ZWRW
YWx1ZSgpKQotICAgICAgICAgICAgbV92YWx1ZS5hc3NlcnRJc1NjcmFtYmxlZCgpOworICAgICAg
ICAgICAgbV92YWx1ZS5hc3NlcnRJc1BvaXNvbmVkKCk7CiAjZW5kaWYKICAgICAgICAgcmV0dXJu
ICFtX3ZhbHVlOwogICAgIH0KQEAgLTM1MiwxNyArMzUyLDE3IEBAIHB1YmxpYzoKICAgICAKICAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBvdGhlcikgY29u
c3QKICAgICB7Ci0jaWYgRU5BQkxFKFNDUkFNQkxFRF9QVFJfQVNTRVJUUykKKyNpZiBFTkFCTEUo
UE9JU09OX0FTU0VSVFMpCiAgICAgICAgIGlmICghaXNFbXB0eVZhbHVlKCkgJiYgIWlzRGVsZXRl
ZFZhbHVlKCkpCi0gICAgICAgICAgICBtX3ZhbHVlLmFzc2VydElzU2NyYW1ibGVkKCk7CisgICAg
ICAgICAgICBtX3ZhbHVlLmFzc2VydElzUG9pc29uZWQoKTsKICAgICAgICAgaWYgKCFvdGhlci5p
c0VtcHR5VmFsdWUoKSAmJiAhb3RoZXIuaXNEZWxldGVkVmFsdWUoKSkKLSAgICAgICAgICAgIG90
aGVyLm1fdmFsdWUuYXNzZXJ0SXNTY3JhbWJsZWQoKTsKKyAgICAgICAgICAgIG90aGVyLm1fdmFs
dWUuYXNzZXJ0SXNQb2lzb25lZCgpOwogI2VuZGlmCiAgICAgICAgIHJldHVybiBtX3ZhbHVlID09
IG90aGVyLm1fdmFsdWU7CiAgICAgfQogCiAgICAgLy8gRGlzYWxsb3cgYW55IGNhc3Rpbmcgb3Bl
cmF0aW9ucyAoZXhjZXB0IGZvciBib29sZWFucykuIEluc3RlYWQsIHRoZSBjbGllbnQKLSAgICAv
LyBzaG91bGQgYmUgYXNraW5nIGZvciBzY3JhbWJsZWRQdHIoKSBvciBleGVjdXRhYmxlQWRkcmVz
cygpIGV4cGxpY2l0bHkuCisgICAgLy8gc2hvdWxkIGJlIGFza2luZyBmb3IgcG9pc29uZWRQdHIo
KSBvciBleGVjdXRhYmxlQWRkcmVzcygpIGV4cGxpY2l0bHkuCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6OmlzX3NhbWU8VCwgYm9vbD46
OnZhbHVlPj4KICAgICBvcGVyYXRvciBUKCkgPSBkZWxldGU7CiAKQEAgLTM4OSwxMCArMzg5LDEw
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCk7CiAKIHByaXZhdGU6Ci0g
ICAgc3RhdGljIE1hc21TY3JhbWJsZWRQdHIgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIE1hc21TY3Jh
bWJsZWRQdHIoMSk7IH0KLSAgICBzdGF0aWMgTWFzbVNjcmFtYmxlZFB0ciBkZWxldGVkVmFsdWUo
KSB7IHJldHVybiBNYXNtU2NyYW1ibGVkUHRyKDIpOyB9CisgICAgc3RhdGljIFBvaXNvbmVkTWFz
bVB0ciBlbXB0eVZhbHVlKCkgeyByZXR1cm4gUG9pc29uZWRNYXNtUHRyKDEpOyB9CisgICAgc3Rh
dGljIFBvaXNvbmVkTWFzbVB0ciBkZWxldGVkVmFsdWUoKSB7IHJldHVybiBQb2lzb25lZE1hc21Q
dHIoMik7IH0KIAotICAgIE1hc21TY3JhbWJsZWRQdHIgbV92YWx1ZTsKKyAgICBQb2lzb25lZE1h
c21QdHIgbV92YWx1ZTsKIH07CiAKIHN0cnVjdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHJIYXNoIHsK
QEAgLTQ3OSw3ICs0NzksNyBAQCBwcml2YXRlOgogaW5saW5lIEZ1bmN0aW9uUHRyOjpGdW5jdGlv
blB0cihNYWNyb0Fzc2VtYmxlckNvZGVQdHIgcHRyKQogICAgIDogbV92YWx1ZShwdHIuZXhlY3V0
YWJsZUFkZHJlc3MoKSkKIHsKLSAgICBNYXNtU2NyYW1ibGVkUHRyOjphc3NlcnRJc05vdFNjcmFt
YmxlZChtX3ZhbHVlKTsKKyAgICBQb2lzb25lZE1hc21QdHI6OmFzc2VydElzTm90UG9pc29uZWQo
bV92YWx1ZSk7CiAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVlKTsKIH0KIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3MuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zLmNwcAkocmV2aXNp
b24gMjI1NTc2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3MuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01MDUsMTIgKzUwNSwxMiBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICBHUFJSZWcgaW5kZXggPSBw
YXJhbXNbMF0uZ3ByKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaCA9
IHBhcmFtcy5ncFNjcmF0Y2goMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBHUFJSZWcgZGVz
Y3JhbWJsZXJLZXkgPSBwYXJhbXMuZ3BTY3JhdGNoKDEpOworICAgICAgICAgICAgICAgICAgICAg
ICAgR1BSUmVnIHBvaXNvblNjcmF0Y2ggPSBwYXJhbXMuZ3BTY3JhdGNoKDEpOwogCi0gICAgICAg
ICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NChnX21h
c21TY3JhbWJsZWRQdHJLZXkpLCBkZXNjcmFtYmxlcktleSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NChnX21hc21Qb2lzb24pLCBw
b2lzb25TY3JhdGNoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbVB0cihqdW1wVGFibGUpLCBzY3JhdGNoKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGppdC5sb2FkNjQoQ0NhbGxIZWxwZXJzOjpCYXNlSW5kZXgoc2NyYXRjaCwgaW5k
ZXgsIENDYWxsSGVscGVyczo6dGltZXNQdHIoKSksIHNjcmF0Y2gpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgaml0LnhvcjY0KGRlc2NyYW1ibGVyS2V5LCBzY3JhdGNoKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGppdC54b3I2NChwb2lzb25TY3JhdGNoLCBzY3JhdGNoKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGppdC5qdW1wKHNjcmF0Y2gpOwogCiAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBUaGVzZSBsYWJlbHMgYXJlIGd1YXJhbnRlZWQgdG8gYmUgcG9wdWxhdGVkIGJlZm9y
ZSBlaXRoZXIgbGF0ZSBwYXRocyBvcgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rl
c3RiMy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5j
cHAJKHJldmlzaW9uIDIyNTU3NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAzMCwxMiArMTMwMzAsMTIgQEAgdm9pZCB0ZXN0SW50
ZXJwcmV0ZXIoKQogICAgICAgICAgICAgICAgIHBhcmFtcy5wcm9jKCkuYWRkRGF0YVNlY3Rpb24o
c2l6ZW9mKE1hY3JvQXNzZW1ibGVyQ29kZVB0cikgKiBsYWJlbHMuc2l6ZSgpKSk7CiAKICAgICAg
ICAgICAgIEdQUlJlZyBzY3JhdGNoID0gcGFyYW1zLmdwU2NyYXRjaCgwKTsKLSAgICAgICAgICAg
IEdQUlJlZyBkZXNjcmFtYmxlcktleSA9IHBhcmFtcy5ncFNjcmF0Y2goMSk7CisgICAgICAgICAg
ICBHUFJSZWcgcG9pc29uU2NyYXRjaCA9IHBhcmFtcy5ncFNjcmF0Y2goMSk7CiAKICAgICAgICAg
ICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihqdW1wVGFibGUpLCBzY3Jh
dGNoKTsKLSAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KGdf
bWFzbVNjcmFtYmxlZFB0cktleSksIGRlc2NyYW1ibGVyS2V5KTsKKyAgICAgICAgICAgIGppdC5t
b3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KGdfbWFzbVBvaXNvbiksIHBvaXNvblNjcmF0
Y2gpOwogICAgICAgICAgICAgaml0LmxvYWQ2NChDQ2FsbEhlbHBlcnM6OkJhc2VJbmRleChzY3Jh
dGNoLCBwYXJhbXNbMF0uZ3ByKCksIENDYWxsSGVscGVyczo6dGltZXNQdHIoKSksIHNjcmF0Y2gp
OwotICAgICAgICAgICAgaml0LnhvcjY0KGRlc2NyYW1ibGVyS2V5LCBzY3JhdGNoKTsKKyAgICAg
ICAgICAgIGppdC54b3I2NChwb2lzb25TY3JhdGNoLCBzY3JhdGNoKTsKICAgICAgICAgICAgIGpp
dC5qdW1wKHNjcmF0Y2gpOwogCiAgICAgICAgICAgICBqaXQuYWRkTGlua1Rhc2soCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2
aXNpb24gMjI1NTc2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2OCw3ICs4NjgsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjaGVja0FycmF5KE5vZGUqIG5vCiAgICAgICAgIG1faml0LmJyYW5jaFB0cigKICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIFN0cnVjdHVyZTo6Y2xhc3NJbmZvT2Zmc2V0KCkp
LAotICAgICAgICAgICAgVHJ1c3RlZEltbVB0cihDbGFzc0luZm9TY3JhbWJsZWRQdHIoZXhwZWN0
ZWRDbGFzc0luZm8pLmJpdHMoKSkpKTsKKyAgICAgICAgICAgIFRydXN0ZWRJbW1QdHIoUG9pc29u
ZWRDbGFzc0luZm9QdHIoZXhwZWN0ZWRDbGFzc0luZm8pLmJpdHMoKSkpKTsKIAogICAgIG5vUmVz
dWx0KG1fY3VycmVudE5vZGUpOwogfQpAQCAtODcwNiw3ICs4NzA2LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUNoZWNrU3ViQ2xhcwogICAgICAgICBtX2ppdC5lbWl0TG9hZFN0cnVj
dHVyZSgqbV9qaXQudm0oKSwgYmFzZUdQUiwgb3RoZXJHUFIsIHNwZWNpZmllZEdQUik7CiAgICAg
ICAgIG1faml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG90aGVyR1BSLCBTdHJ1Y3R1
cmU6OmNsYXNzSW5mb09mZnNldCgpKSwgb3RoZXJHUFIpOwogI2lmIFVTRShKU1ZBTFVFNjQpCi0g
ICAgICAgIG1faml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQoZ19jbGFzc0luZm9T
Y3JhbWJsZWRQdHJLZXkpLCBzcGVjaWZpZWRHUFIpOworICAgICAgICBtX2ppdC5tb3ZlKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTY0KGdfY2xhc3NJbmZvUG9pc29uKSwgc3BlY2lmaWVkR1BSKTsK
ICAgICAgICAgbV9qaXQueG9yNjQoc3BlY2lmaWVkR1BSLCBvdGhlckdQUik7CiAjZW5kaWYKICAg
ICAgICAgbV9qaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobm9kZS0+Y2xhc3NJ
bmZvKCkpLCBzcGVjaWZpZWRHUFIpOwpAQCAtOTAwMyw3ICs5MDAzLDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZU5ld1N0cmluZ09iagogICAgICAgICBzbG93UGF0aCk7CiAgICAgCiAg
ICAgbV9qaXQuc3RvcmVQdHIoCi0gICAgICAgIFRydXN0ZWRJbW1QdHIoQ2xhc3NJbmZvU2NyYW1i
bGVkUHRyKFN0cmluZ09iamVjdDo6aW5mbygpKS5iaXRzKCkpLAorICAgICAgICBUcnVzdGVkSW1t
UHRyKFBvaXNvbmVkQ2xhc3NJbmZvUHRyKFN0cmluZ09iamVjdDo6aW5mbygpKS5iaXRzKCkpLAog
ICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0OjpjbGFzc0luZm9PZmZzZXQoKSkpOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgbV9qaXQu
c3RvcmU2NCgKQEAgLTk3NzQsNyArOTc3NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1
bGF0ZShOb2RlKiwgRWQKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaEludEp1
bXAoCi0gICAgU3dpdGNoRGF0YSogZGF0YSwgR1BSUmVnIHZhbHVlLCBHUFJSZWcgc2NyYXRjaCwg
R1BSUmVnIGRlc2NyYW1ibGVyS2V5U2NyYXRjaCkKKyAgICBTd2l0Y2hEYXRhKiBkYXRhLCBHUFJS
ZWcgdmFsdWUsIEdQUlJlZyBzY3JhdGNoLCBHUFJSZWcgcG9pc29uU2NyYXRjaCkKIHsKICAgICBT
aW1wbGVKdW1wVGFibGUmIHRhYmxlID0gbV9qaXQuY29kZUJsb2NrKCktPnN3aXRjaEp1bXBUYWJs
ZShkYXRhLT5zd2l0Y2hUYWJsZUluZGV4KTsKICAgICB0YWJsZS5lbnN1cmVDVElUYWJsZSgpOwpA
QCAtOTc4MiwxNSArOTc4MiwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoSW50
SnVtcCgKICAgICBhZGRCcmFuY2goCiAgICAgICAgIG1faml0LmJyYW5jaDMyKEpJVENvbXBpbGVy
OjpBYm92ZU9yRXF1YWwsIHZhbHVlLCBJbW0zMih0YWJsZS5jdGlPZmZzZXRzLnNpemUoKSkpLAog
ICAgICAgICBkYXRhLT5mYWxsVGhyb3VnaC5ibG9jayk7Ci0gICAgVU5VU0VEX1BBUkFNKGRlc2Ny
YW1ibGVyS2V5U2NyYXRjaCk7IC8vIFBsYWNhdGUgdGhlIDMyLWJpdCBidWlsZC4KKyAgICBVTlVT
RURfUEFSQU0ocG9pc29uU2NyYXRjaCk7IC8vIFBsYWNhdGUgdGhlIDMyLWJpdCBidWlsZC4KICNp
ZiBVU0UoSlNWQUxVRTY0KQotICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTY0KGdfbWFzbVNjcmFt
YmxlZFB0cktleSksIGRlc2NyYW1ibGVyS2V5U2NyYXRjaCk7CisgICAgbV9qaXQubW92ZShUcnVz
dGVkSW1tNjQoZ19tYXNtUG9pc29uKSwgcG9pc29uU2NyYXRjaCk7CiAjZW5kaWYKICAgICBtX2pp
dC5tb3ZlKFRydXN0ZWRJbW1QdHIodGFibGUuY3RpT2Zmc2V0cy5iZWdpbigpKSwgc2NyYXRjaCk7
CiAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QmFzZUluZGV4KHNjcmF0Y2gsIHZhbHVl
LCBKSVRDb21waWxlcjo6dGltZXNQdHIoKSksIHNjcmF0Y2gpOwogICAgIAogI2lmIFVTRShKU1ZB
TFVFNjQpCi0gICAgbV9qaXQueG9yNjQoZGVzY3JhbWJsZXJLZXlTY3JhdGNoLCBzY3JhdGNoKTsK
KyAgICBtX2ppdC54b3I2NChwb2lzb25TY3JhdGNoLCBzY3JhdGNoKTsKICNlbmRpZgogICAgIG1f
aml0Lmp1bXAoc2NyYXRjaCk7CiAgICAgZGF0YS0+ZGlkVXNlSnVtcFRhYmxlID0gdHJ1ZTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJl
dmlzaW9uIDIyNTU3NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAxMCw3ICs1MDEwLDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5pbnNlcnROZXdCbG9ja3NCZWZvcmUo
c2xvd0Nhc2UpOwogCiAgICAgICAgIExWYWx1ZSBmYXN0UmVzdWx0VmFsdWUgPSBhbGxvY2F0ZU9i
amVjdDxTdHJpbmdPYmplY3Q+KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd0Nhc2Up
OwotICAgICAgICBtX291dC5zdG9yZVB0cihtX291dC5jb25zdEludFB0cihDbGFzc0luZm9TY3Jh
bWJsZWRQdHIoU3RyaW5nT2JqZWN0OjppbmZvKCkpLmJpdHMoKSksIGZhc3RSZXN1bHRWYWx1ZSwg
bV9oZWFwcy5KU0Rlc3RydWN0aWJsZU9iamVjdF9jbGFzc0luZm8pOworICAgICAgICBtX291dC5z
dG9yZVB0cihtX291dC5jb25zdEludFB0cihQb2lzb25lZENsYXNzSW5mb1B0cihTdHJpbmdPYmpl
Y3Q6OmluZm8oKSkuYml0cygpKSwgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0X2NsYXNzSW5mbyk7CiAgICAgICAgIG1fb3V0LnN0b3JlNjQoc3RyaW5nLCBmYXN0
UmVzdWx0VmFsdWUsIG1faGVhcHMuSlNXcmFwcGVyT2JqZWN0X2ludGVybmFsVmFsdWUpOwogICAg
ICAgICBtdXRhdG9yRmVuY2UoKTsKICAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9
IG1fb3V0LmFuY2hvcihmYXN0UmVzdWx0VmFsdWUpOwpAQCAtMTExNzAsOCArMTExNzAsOCBAQCBw
cml2YXRlOgogICAgICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3
QmxvY2soKTsKIAogICAgICAgICAgICAgTFZhbHVlIHN0cnVjdHVyZSA9IGxvYWRTdHJ1Y3R1cmUo
Y2VsbCk7Ci0gICAgICAgICAgICBMVmFsdWUgc2NyYW1ibGVkQ2xhc3NJbmZvID0gbV9vdXQubG9h
ZFB0cihzdHJ1Y3R1cmUsIG1faGVhcHMuU3RydWN0dXJlX2NsYXNzSW5mbyk7Ci0gICAgICAgICAg
ICBMVmFsdWUgY2xhc3NJbmZvID0gbV9vdXQuYml0WG9yKHNjcmFtYmxlZENsYXNzSW5mbywgbV9v
dXQuY29uc3RJbnQ2NChnX2NsYXNzSW5mb1NjcmFtYmxlZFB0cktleSkpOworICAgICAgICAgICAg
TFZhbHVlIHBvaXNvbmVkQ2xhc3NJbmZvID0gbV9vdXQubG9hZFB0cihzdHJ1Y3R1cmUsIG1faGVh
cHMuU3RydWN0dXJlX2NsYXNzSW5mbyk7CisgICAgICAgICAgICBMVmFsdWUgY2xhc3NJbmZvID0g
bV9vdXQuYml0WG9yKHBvaXNvbmVkQ2xhc3NJbmZvLCBtX291dC5jb25zdEludDY0KGdfY2xhc3NJ
bmZvUG9pc29uKSk7CiAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBvdGhlckF0U3RhcnQgPSBt
X291dC5hbmNob3IoY2xhc3NJbmZvKTsKICAgICAgICAgICAgIG1fb3V0Lmp1bXAobG9vcCk7CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkocmV2
aXNpb24gMjI1NTc2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBl
cnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTYyNSw3ICsxNjI1LDcgQEAgcHVibGljOgogICAgIHZv
aWQgZW1pdEFsbG9jYXRlRGVzdHJ1Y3RpYmxlT2JqZWN0KFZNJiB2bSwgR1BSUmVnIHJlc3VsdEdQ
UiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEdQUlJlZyBzY3JhdGNoR1BSMSwgR1BSUmVnIHNjcmF0
Y2hHUFIyLCBKdW1wTGlzdCYgc2xvd1BhdGgpCiAgICAgewogICAgICAgICBlbWl0QWxsb2NhdGVK
U09iamVjdDxDbGFzc1R5cGU+KHZtLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJl
KSwgVHJ1c3RlZEltbVB0cigwKSwgc2NyYXRjaEdQUjEsIHNjcmF0Y2hHUFIyLCBzbG93UGF0aCk7
Ci0gICAgICAgIHN0b3JlUHRyKFRydXN0ZWRJbW1QdHIoQ2xhc3NJbmZvU2NyYW1ibGVkUHRyKHN0
cnVjdHVyZS0+Y2xhc3NJbmZvKCkpLmJpdHMoKSksIEFkZHJlc3MocmVzdWx0R1BSLCBKU0Rlc3Ry
dWN0aWJsZU9iamVjdDo6Y2xhc3NJbmZvT2Zmc2V0KCkpKTsKKyAgICAgICAgc3RvcmVQdHIoVHJ1
c3RlZEltbVB0cihQb2lzb25lZENsYXNzSW5mb1B0cihzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpKS5i
aXRzKCkpLCBBZGRyZXNzKHJlc3VsdEdQUiwgSlNEZXN0cnVjdGlibGVPYmplY3Q6OmNsYXNzSW5m
b09mZnNldCgpKSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgZW1pdEluaXRpYWxpemVJbmxpbmVT
dG9yYWdlKEdQUlJlZyBiYXNlR1BSLCB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6ZWRUaHVua0pJVC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6ZWRUaHVua0pJVC5oCShyZXZp
c2lvbiAyMjU1NzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NwZWNpYWxpemVkVGh1
bmtKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtNzcsNyArNzcsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgewogICAgICAgICAgICAgbG9hZENlbGxBcmd1bWVudChhcmd1bWVudCwgZHN0KTsK
ICAgICAgICAgICAgIGVtaXRMb2FkU3RydWN0dXJlKCp2bSgpLCBkc3QsIHNjcmF0Y2gsIGRzdCk7
Ci0gICAgICAgICAgICBhcHBlbmRGYWlsdXJlKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhz
Y3JhdGNoLCBTdHJ1Y3R1cmU6OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihDbGFz
c0luZm9TY3JhbWJsZWRQdHIoY2xhc3NJbmZvKS5iaXRzKCkpKSk7CisgICAgICAgICAgICBhcHBl
bmRGYWlsdXJlKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhzY3JhdGNoLCBTdHJ1Y3R1cmU6
OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihQb2lzb25lZENsYXNzSW5mb1B0cihj
bGFzc0luZm8pLmJpdHMoKSkpKTsKICAgICAgICAgICAgIC8vIFdlIGhhdmUgdG8gcmVsb2FkIHRo
ZSBhcmd1bWVudCBzaW5jZSBlbWl0TG9hZFN0cnVjdHVyZSBjbG9iYmVyZWQgaXQuCiAgICAgICAg
ICAgICBsb2FkQ2VsbEFyZ3VtZW50KGFyZ3VtZW50LCBkc3QpOwogICAgICAgICB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCShyZXZpc2lv
biAyMjU1NzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNCw3ICsyMTQsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWYgdmlydHVhbFRodW5rRm9yKFZNCiAgICAgLy8gTm93IHdlIGtub3cgdGhhdCB3ZSBoYXZlIGEg
Q29kZUJsb2NrLCBhbmQgd2UncmUgY29tbWl0dGVkIHRvIG1ha2luZyBhIGZhc3QKICAgICAvLyBj
YWxsLgogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tNjQoZ19tYXNtU2NyYW1ibGVkUHRyS2V5KSwgR1BSSW5mbzo6cmVnVDEpOworICAgIGpp
dC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KGdfbWFzbVBvaXNvbiksIEdQUkluZm86
OnJlZ1QxKTsKICAgICBqaXQueG9yNjQoR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1Q0KTsK
ICNlbmRpZgogCkBAIC0xMTYzLDcgKzExNjMsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgYm91
bmRUaGlzTm9BcmdzRnVuCiAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG5vQ29kZSA9IGppdC5icmFu
Y2hUZXN0UHRyKENDYWxsSGVscGVyczo6WmVybywgR1BSSW5mbzo6cmVnVDApOwogICAgIAogI2lm
IFVTRShKU1ZBTFVFNjQpCi0gICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQo
Z19tYXNtU2NyYW1ibGVkUHRyS2V5KSwgR1BSSW5mbzo6cmVnVDEpOworICAgIGppdC5tb3ZlKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KGdfbWFzbVBvaXNvbiksIEdQUkluZm86OnJlZ1QxKTsK
ICAgICBqaXQueG9yNjQoR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1QwKTsKICNlbmRpZgog
ICAgIGVtaXRQb2ludGVyVmFsaWRhdGlvbihqaXQsIEdQUkluZm86OnJlZ1QwKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNp
b24gMjI1NTc2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMwMyw3ICsxMzAzLDcgQEAgc3RhdGljIFNsb3dQYXRo
UmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2FsbAogICAgICAgICAgICAgZXhlY0NhbGxlZS0+c2V0Q2Fs
bGVlKGFzT2JqZWN0KGNhbGxlZSkpOwogICAgICAgICAgICAgdm0uaG9zdENhbGxSZXR1cm5WYWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24oZXhlY0NhbGxlZSkp
OwogICAgICAgICAgICAgCi0gICAgICAgICAgICBNYXNtU2NyYW1ibGVkUHRyOjphc3NlcnRJc05v
dFNjcmFtYmxlZChMTEludDo6Z2V0Q29kZVB0cihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSk7Cisg
ICAgICAgICAgICBQb2lzb25lZE1hc21QdHI6OmFzc2VydElzTm90UG9pc29uZWQoTExJbnQ6Omdl
dENvZGVQdHIoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkpOwogICAgICAgICAgICAgTExJTlRfQ0FM
TF9SRVRVUk4oZXhlY0NhbGxlZSwgZXhlY0NhbGxlZSwgTExJbnQ6OmdldENvZGVQdHIoZ2V0SG9z
dENhbGxSZXR1cm5WYWx1ZSkpOwogICAgICAgICB9CiAgICAgICAgIApAQCAtMTMyNyw3ICsxMzI3
LDcgQEAgc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2FsbAogICAgICAgICBl
eGVjQ2FsbGVlLT5zZXRDYWxsZWUoYXNPYmplY3QoY2FsbGVlKSk7CiAgICAgICAgIHZtLmhvc3RD
YWxsUmV0dXJuVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoY29uc3RydWN0RGF0YS5uYXRpdmUuZnVu
Y3Rpb24oZXhlY0NhbGxlZSkpOwogCi0gICAgICAgIE1hc21TY3JhbWJsZWRQdHI6OmFzc2VydElz
Tm90U2NyYW1ibGVkKExMSW50OjpnZXRDb2RlUHRyKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpKTsK
KyAgICAgICAgUG9pc29uZWRNYXNtUHRyOjphc3NlcnRJc05vdFBvaXNvbmVkKExMSW50OjpnZXRD
b2RlUHRyKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpKTsKICAgICAgICAgTExJTlRfQ0FMTF9SRVRV
Uk4oZXhlY0NhbGxlZSwgZXhlY0NhbGxlZSwgTExJbnQ6OmdldENvZGVQdHIoZ2V0SG9zdENhbGxS
ZXR1cm5WYWx1ZSkpOwogICAgIH0KICAgICAKQEAgLTEzNjgsNyArMTM2OCw3IEBAIGlubGluZSBT
bG93UGF0aFJldHVyblR5cGUgc2V0VXBDYWxsKEV4ZWMKICAgICAgICAgICAgICAgICBjYWxsTGlu
a0luZm8tPm1hY2hpbmVDb2RlVGFyZ2V0ID0gY29kZVB0cjsKICAgICAgICAgICAgIH0KIAotICAg
ICAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6YXNzZXJ0SXNOb3RTY3JhbWJsZWQoY29kZVB0ci5l
eGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICAgICAgICAgIFBvaXNvbmVkTWFzbVB0cjo6YXNzZXJ0
SXNOb3RQb2lzb25lZChjb2RlUHRyLmV4ZWN1dGFibGVBZGRyZXNzKCkpOwogICAgICAgICAgICAg
TExJTlRfQ0FMTF9SRVRVUk4oZXhlYywgZXhlY0NhbGxlZSwgY29kZVB0ci5leGVjdXRhYmxlQWRk
cmVzcygpKTsKICAgICAgICAgfQogICAgICAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKQEAgLTE0
MTksNyArMTQxOSw3IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgc2V0VXBDYWxsKEV4ZWMK
ICAgICAgICAgICAgIGNvZGVCbG9jay0+bGlua0luY29taW5nQ2FsbChleGVjLCBjYWxsTGlua0lu
Zm8pOwogICAgIH0KIAotICAgIE1hc21TY3JhbWJsZWRQdHI6OmFzc2VydElzTm90U2NyYW1ibGVk
KGNvZGVQdHIuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisgICAgUG9pc29uZWRNYXNtUHRyOjphc3Nl
cnRJc05vdFBvaXNvbmVkKGNvZGVQdHIuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CiAgICAgTExJTlRf
Q0FMTF9SRVRVUk4oZXhlYywgZXhlY0NhbGxlZSwgY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygp
KTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXI2NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHJldmlzaW9uIDIyNTU3NikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkp
CkBAIC0xOTUwLDcgKzE5NTAsNyBAQCBtYWNybyBkb0NhbGwoc2xvd1BhdGgsIHByZXBhcmVDYWxs
KQogICAgICAgICBwcmVwYXJlQ2FsbChMTEludENhbGxMaW5rSW5mbzo6bWFjaGluZUNvZGVUYXJn
ZXRbdDFdLCB0MiwgdDMsIHQ0KQogICAgICAgICBjYWxsVGFyZ2V0RnVuY3Rpb24oTExJbnRDYWxs
TGlua0luZm86Om1hY2hpbmVDb2RlVGFyZ2V0W3QxXSkKICAgICBlbHNlCi0gICAgICAgIGxvYWRw
IF9nX21hc21TY3JhbWJsZWRQdHJLZXksIHQyCisgICAgICAgIGxvYWRwIF9nX21hc21Qb2lzb24s
IHQyCiAgICAgICAgIHhvcnAgTExJbnRDYWxsTGlua0luZm86Om1hY2hpbmVDb2RlVGFyZ2V0W3Qx
XSwgdDIKICAgICAgICAgcHJlcGFyZUNhbGwodDIsIHQxLCB0MywgdDQpCiAgICAgICAgIGNhbGxU
YXJnZXRGdW5jdGlvbih0MikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
aXRpYWxpemVUaHJlYWRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCShyZXZpc2lvbiAyMjU1NzYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTksNyArNTksNyBAQCB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKQog
CiAgICAgc3RkOjpjYWxsX29uY2UoaW5pdGlhbGl6ZVRocmVhZGluZ09uY2VGbGFnLCBbXXsKICAg
ICAgICAgV1RGOjppbml0aWFsaXplVGhyZWFkaW5nKCk7Ci0gICAgICAgIGluaXRpYWxpemVTY3Jh
bWJsZWRQdHJLZXlzKCk7CisgICAgICAgIGluaXRpYWxpemVQb2lzb24oKTsKICAgICAgICAgT3B0
aW9uczo6aW5pdGlhbGl6ZSgpOwogI2lmIEVOQUJMRShXUklURV9CQVJSSUVSX1BST0ZJTElORykK
ICAgICAgICAgV3JpdGVCYXJyaWVyQ291bnRlcnM6OmluaXRpYWxpemUoKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1BvaXNvbmVkUHRyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQb2lzb25lZFB0ci5jcHAJKHJldmlz
aW9uIDIyNTU3NikJKGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDU2NyYW1i
bGVkUHRyLmNwcDoyMjU1NzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQ
b2lzb25lZFB0ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJKU0NTY3JhbWJsZWRQdHIuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3VpbnRw
dHJfdCBnX2NsYXNzSW5mb1NjcmFtYmxlZFB0cktleTsKK3VpbnRwdHJfdCBnX21hc21TY3JhbWJs
ZWRQdHJLZXk7CisKK3ZvaWQgaW5pdGlhbGl6ZVNjcmFtYmxlZFB0cktleXMoKQoreworICAgIHN0
YXRpYyBzdGQ6Om9uY2VfZmxhZyBpbml0aWFsaXplT25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29u
Y2UoaW5pdGlhbGl6ZU9uY2VGbGFnLCBbXSB7CisgICAgICAgIGdfY2xhc3NJbmZvU2NyYW1ibGVk
UHRyS2V5ID0gbWFrZVNjcmFtYmxlZFB0cktleSgpOworICAgICAgICBnX21hc21TY3JhbWJsZWRQ
dHJLZXkgPSBtYWtlU2NyYW1ibGVkUHRyS2V5KCk7CisgICAgfSk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQb2lzb25l
ZFB0ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
UG9pc29uZWRQdHIuY3BwCShyZXZpc2lvbiAyMjU1NzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NQb2lzb25lZFB0ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDE5ICsy
NCwxOSBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJKU0NTY3JhbWJs
ZWRQdHIuaCIKKyNpbmNsdWRlICJKU0NQb2lzb25lZFB0ci5oIgogCiBuYW1lc3BhY2UgSlNDIHsK
IAotdWludHB0cl90IGdfY2xhc3NJbmZvU2NyYW1ibGVkUHRyS2V5OwotdWludHB0cl90IGdfbWFz
bVNjcmFtYmxlZFB0cktleTsKK3VpbnRwdHJfdCBnX2NsYXNzSW5mb1BvaXNvbjsKK3VpbnRwdHJf
dCBnX21hc21Qb2lzb247CiAKLXZvaWQgaW5pdGlhbGl6ZVNjcmFtYmxlZFB0cktleXMoKQordm9p
ZCBpbml0aWFsaXplUG9pc29uKCkKIHsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgaW5pdGlh
bGl6ZU9uY2VGbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNlKGluaXRpYWxpemVPbmNlRmxhZywgW10g
ewotICAgICAgICBnX2NsYXNzSW5mb1NjcmFtYmxlZFB0cktleSA9IG1ha2VTY3JhbWJsZWRQdHJL
ZXkoKTsKLSAgICAgICAgZ19tYXNtU2NyYW1ibGVkUHRyS2V5ID0gbWFrZVNjcmFtYmxlZFB0cktl
eSgpOworICAgICAgICBnX2NsYXNzSW5mb1BvaXNvbiA9IG1ha2VQb2lzb24oKTsKKyAgICAgICAg
Z19tYXNtUG9pc29uID0gbWFrZVBvaXNvbigpOwogICAgIH0pOwogfQogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQb2lzb25lZFB0ci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1BvaXNvbmVkUHRyLmgJKHJldmlzaW9uIDIy
NTU3NikJKGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDU2NyYW1ibGVkUHRy
Lmg6MjI1NTc2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDUG9pc29uZWRQ
dHIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYv
U2NyYW1ibGVkUHRyLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitleHRlcm4gIkMiIEpTX0VYUE9S
VERBVEEgdWludHB0cl90IGdfY2xhc3NJbmZvU2NyYW1ibGVkUHRyS2V5OworZXh0ZXJuICJDIiBK
U19FWFBPUlREQVRBIHVpbnRwdHJfdCBnX21hc21TY3JhbWJsZWRQdHJLZXk7CisKK3N0cnVjdCBD
bGFzc0luZm87CisKK3VzaW5nIENsYXNzSW5mb1NjcmFtYmxlZFB0ciA9IFNjcmFtYmxlZFB0cjxj
b25zdCBDbGFzc0luZm8qLCBnX2NsYXNzSW5mb1NjcmFtYmxlZFB0cktleT47Cit1c2luZyBNYXNt
U2NyYW1ibGVkUHRyID0gU2NyYW1ibGVkUHRyPHZvaWQqLCBnX21hc21TY3JhbWJsZWRQdHJLZXk+
OworCit2b2lkIGluaXRpYWxpemVTY3JhbWJsZWRQdHJLZXlzKCk7CisKK30gLy8gbmFtZXNwYWNl
IEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQb2lzb25lZFB0
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1BvaXNv
bmVkUHRyLmgJKHJldmlzaW9uIDIyNTU3NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ1BvaXNvbmVkUHRyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDE5ICsyNSwxOSBAQAog
CiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgPHd0Zi9TY3JhbWJsZWRQdHIuaD4KKyNpbmNsdWRl
IDx3dGYvUG9pc29uZWQuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKLWV4dGVybiAiQyIgSlNfRVhQ
T1JUREFUQSB1aW50cHRyX3QgZ19jbGFzc0luZm9TY3JhbWJsZWRQdHJLZXk7Ci1leHRlcm4gIkMi
IEpTX0VYUE9SVERBVEEgdWludHB0cl90IGdfbWFzbVNjcmFtYmxlZFB0cktleTsKK2V4dGVybiAi
QyIgSlNfRVhQT1JUREFUQSB1aW50cHRyX3QgZ19jbGFzc0luZm9Qb2lzb247CitleHRlcm4gIkMi
IEpTX0VYUE9SVERBVEEgdWludHB0cl90IGdfbWFzbVBvaXNvbjsKIAogc3RydWN0IENsYXNzSW5m
bzsKIAotdXNpbmcgQ2xhc3NJbmZvU2NyYW1ibGVkUHRyID0gU2NyYW1ibGVkUHRyPGNvbnN0IENs
YXNzSW5mbyosIGdfY2xhc3NJbmZvU2NyYW1ibGVkUHRyS2V5PjsKLXVzaW5nIE1hc21TY3JhbWJs
ZWRQdHIgPSBTY3JhbWJsZWRQdHI8dm9pZCosIGdfbWFzbVNjcmFtYmxlZFB0cktleT47Cit1c2lu
ZyBQb2lzb25lZENsYXNzSW5mb1B0ciA9IFBvaXNvbmVkPGdfY2xhc3NJbmZvUG9pc29uLCBjb25z
dCBDbGFzc0luZm8qPjsKK3VzaW5nIFBvaXNvbmVkTWFzbVB0ciA9IFBvaXNvbmVkPGdfbWFzbVBv
aXNvbiwgdm9pZCo+OwogCi12b2lkIGluaXRpYWxpemVTY3JhbWJsZWRQdHJLZXlzKCk7Cit2b2lk
IGluaXRpYWxpemVQb2lzb24oKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1NjcmFtYmxlZFB0ci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDU2NyYW1ibGVkUHRyLmNwcAkocmV2
aXNpb24gMjI1NTc2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDU2NyYW1i
bGVkUHRyLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiSlNDU2NyYW1ibGVkUHRyLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi11aW50cHRyX3Qg
Z19jbGFzc0luZm9TY3JhbWJsZWRQdHJLZXk7Ci11aW50cHRyX3QgZ19tYXNtU2NyYW1ibGVkUHRy
S2V5OwotCi12b2lkIGluaXRpYWxpemVTY3JhbWJsZWRQdHJLZXlzKCkKLXsKLSAgICBzdGF0aWMg
c3RkOjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZU9uY2VGbGFnOwotICAgIHN0ZDo6Y2FsbF9vbmNlKGlu
aXRpYWxpemVPbmNlRmxhZywgW10gewotICAgICAgICBnX2NsYXNzSW5mb1NjcmFtYmxlZFB0cktl
eSA9IG1ha2VTY3JhbWJsZWRQdHJLZXkoKTsKLSAgICAgICAgZ19tYXNtU2NyYW1ibGVkUHRyS2V5
ID0gbWFrZVNjcmFtYmxlZFB0cktleSgpOwotICAgIH0pOwotfQotCi19IC8vIG5hbWVzcGFjZSBK
U0MKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDU2NyYW1ibGVkUHRy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDU2NyYW1i
bGVkUHRyLmgJKHJldmlzaW9uIDIyNTU3NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ1NjcmFtYmxlZFB0ci5oCShub25leGlzdGVudCkKQEAgLTEsNDMgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaW5jbHVkZSA8d3RmL1NjcmFtYmxlZFB0ci5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLQotZXh0
ZXJuICJDIiBKU19FWFBPUlREQVRBIHVpbnRwdHJfdCBnX2NsYXNzSW5mb1NjcmFtYmxlZFB0cktl
eTsKLWV4dGVybiAiQyIgSlNfRVhQT1JUREFUQSB1aW50cHRyX3QgZ19tYXNtU2NyYW1ibGVkUHRy
S2V5OwotCi1zdHJ1Y3QgQ2xhc3NJbmZvOwotCi11c2luZyBDbGFzc0luZm9TY3JhbWJsZWRQdHIg
PSBTY3JhbWJsZWRQdHI8Y29uc3QgQ2xhc3NJbmZvKiwgZ19jbGFzc0luZm9TY3JhbWJsZWRQdHJL
ZXk+OwotdXNpbmcgTWFzbVNjcmFtYmxlZFB0ciA9IFNjcmFtYmxlZFB0cjx2b2lkKiwgZ19tYXNt
U2NyYW1ibGVkUHRyS2V5PjsKLQotdm9pZCBpbml0aWFsaXplU2NyYW1ibGVkUHRyS2V5cygpOwot
Ci19IC8vIG5hbWVzcGFjZSBKU0MKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNEZXN0cnVjdGlibGVPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Rlc3RydWN0aWJsZU9iamVjdC5oCShyZXZpc2lvbiAyMjU1NzYpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rlc3RydWN0aWJsZU9iamVjdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICZ2
bS5kZXN0cnVjdGlibGVPYmplY3RTcGFjZTsKICAgICB9CiAKLSAgICBjb25zdCBDbGFzc0luZm8q
IGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NJbmZvLmRlc2NyYW1ibGVkKCk7IH0K
KyAgICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NJ
bmZvLnVucG9pc29uZWQoKTsgfQogICAgIAogICAgIHN0YXRpYyBwdHJkaWZmX3QgY2xhc3NJbmZv
T2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBt
X2NsYXNzSW5mbyk7IH0KIApAQCAtNTYsNyArNTYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgfQogCiBw
cml2YXRlOgotICAgIENsYXNzSW5mb1NjcmFtYmxlZFB0ciBtX2NsYXNzSW5mbzsKKyAgICBQb2lz
b25lZENsYXNzSW5mb1B0ciBtX2NsYXNzSW5mbzsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZWdtZW50ZWRWYXJpYWJsZU9i
amVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2Vn
bWVudGVkVmFyaWFibGVPYmplY3QuaAkocmV2aXNpb24gMjI1NTc2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC05NCw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICZ2bS5zZWdtZW50
ZWRWYXJpYWJsZU9iamVjdFNwYWNlOwogICAgIH0KICAgICAKLSAgICBjb25zdCBDbGFzc0luZm8q
IGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NJbmZvLmRlc2NyYW1ibGVkKCk7IH0K
KyAgICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NJ
bmZvLnVucG9pc29uZWQoKTsgfQogICAgIAogcHJvdGVjdGVkOgogICAgIEpTU2VnbWVudGVkVmFy
aWFibGVPYmplY3QoVk0mLCBTdHJ1Y3R1cmUqLCBKU1Njb3BlKik7CkBAIC0xMDcsNyArMTA3LDcg
QEAgcHJpdmF0ZToKICAgICBTZWdtZW50ZWRWZWN0b3I8V3JpdGVCYXJyaWVyPFVua25vd24+LCAx
Nj4gbV92YXJpYWJsZXM7CiAgICAgQ29uY3VycmVudEpTTG9jayBtX2xvY2s7CiAgICAgYm9vbCBt
X2FscmVhZHlEZXN0cm95ZWQgeyBmYWxzZSB9OyAvLyBXZSB1c2UgdGhlc2UgYXNzZXJ0aW9ucyB0
byBjaGVjayB0aGF0IHdlIGFyZW4ndCBkb2luZyBhbmNpZW50IGhhY2tzIHRoYXQgcmVzdWx0IGlu
IHRoaXMgYmVpbmcgZGVzdHJveWVkIG1vcmUgdGhhbiBvbmNlLgotICAgIENsYXNzSW5mb1NjcmFt
YmxlZFB0ciBtX2NsYXNzSW5mbzsKKyAgICBQb2lzb25lZENsYXNzSW5mb1B0ciBtX2NsYXNzSW5m
bzsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlLmgJKHJldmlzaW9uIDIyNTU3NikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NjgsNyArNDY4
LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRPYmplY3RUb1N0cmluZ1ZhbHVlKEV4ZWNTdGF0
ZSosIFZNJiwgSlNTdHJpbmcqIHZhbHVlLCBQcm9wZXJ0eVNsb3QgdG9TdHJpbmdUYWdTeW1ib2xT
bG90KTsKIAotICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4g
bV9jbGFzc0luZm8uZGVzY3JhbWJsZWQoKTsgfQorICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJ
bmZvKCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc0luZm8udW5wb2lzb25lZCgpOyB9CiAKICAgICBz
dGF0aWMgcHRyZGlmZl90IHN0cnVjdHVyZUlET2Zmc2V0KCkKICAgICB7CkBAIC03OTgsNyArNzk4
LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4gbV9uYW1lSW5Q
cmV2aW91czsKIAotICAgIENsYXNzSW5mb1NjcmFtYmxlZFB0ciBtX2NsYXNzSW5mbzsKKyAgICBQ
b2lzb25lZENsYXNzSW5mb1B0ciBtX2NsYXNzSW5mbzsKIAogICAgIFN0cnVjdHVyZVRyYW5zaXRp
b25UYWJsZSBtX3RyYW5zaXRpb25UYWJsZTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5oCShyZXZpc2lvbiAyMjU1NzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MTQsNyArNDE0LDcgQEAgcHVibGljOgogICAgIHN0
ZDo6dW5pcXVlX3B0cjxQcm9taXNlRGVmZXJyZWRUaW1lcj4gcHJvbWlzZURlZmVycmVkVGltZXI7
CiAgICAgCiAgICAgSlNDZWxsKiBjdXJyZW50bHlEZXN0cnVjdGluZ0NhbGxiYWNrT2JqZWN0Owot
ICAgIENsYXNzSW5mb1NjcmFtYmxlZFB0ciBjdXJyZW50bHlEZXN0cnVjdGluZ0NhbGxiYWNrT2Jq
ZWN0Q2xhc3NJbmZvOworICAgIFBvaXNvbmVkQ2xhc3NJbmZvUHRyIGN1cnJlbnRseURlc3RydWN0
aW5nQ2FsbGJhY2tPYmplY3RDbGFzc0luZm87CiAKICAgICBBdG9taWNTdHJpbmdUYWJsZSogbV9h
dG9taWNTdHJpbmdUYWJsZTsKICAgICBXVEY6OlN5bWJvbFJlZ2lzdHJ5IG1fc3ltYm9sUmVnaXN0
cnk7CkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RG
L0NoYW5nZUxvZwkocmV2aXNpb24gMjI1NTc2KQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSw1MiBAQAorMjAxNy0xMi0wNiAgTWFyayBMYW0gIDxtYXJr
LmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVmYWN0b3Jpbmc6IFJlbmFtZSBTY3JhbWJsZWRQ
dHIgdG8gUG9pc29uZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODA1MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBXZSdyZSBzd2l0Y2hpbmcgb3VyIG5vbWVuY2xhdHVyZSB0byAicG9pc29uaW5nIiBp
bnN0ZWFkIG9mICJzY3JhbWJsaW5nIiBwb2ludGVycy4KKyAgICAgICAgVGhpcyBhbGxvd3MgdXMg
dG8gdXNlIHNob3J0ZXIgbmFtZXMuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpcyBhbG1vc3QgcHVy
ZWx5IHJlZmFjdG9yaW5nLCBleGNlcHQgZm9yIG9uZSBjaGFuZ2U6IHRoZSBQb2lzb25lZEltcGwK
KyAgICAgICAgdGVtcGxhdGUgY2xhc3MgKHByZXZpb3VzbHkgU2NyYW1ibGVkUHRyKSBoYXMgYmVl
biBtb2RpZmllZCB0byBhbGxvdyB1c2FnZSBvZgorICAgICAgICBhIGNvbnN0ZXhwciB1aW50MzJf
dCBwb2lzb24gdmFsdWUgKHNlZSBJbnQzMlBvaXNvbmVkKSBpbiBhZGRpdGlvbiB0byBhIHJ1bnRp
bWUKKyAgICAgICAgZGV0ZXJtaW5lZCB1aW50cHRyX3QgcG9pc29uIHZhbHVlIChzZWUgUG9pc29u
ZWQpLgorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogd3RmL1BvaXNvbmVkLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dURi93dGYvU2NyYW1ibGVk
UHRyLmNwcC4KKyAgICAgICAgKFdURjo6bWFrZVBvaXNvbik6CisgICAgICAgIChXVEY6Om1ha2VT
Y3JhbWJsZWRQdHJLZXkpOiBEZWxldGVkLgorICAgICAgICAqIHd0Zi9Qb2lzb25lZC5oOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV1RGL3d0Zi9TY3JhbWJsZWRQdHIuaC4KKyAgICAgICAgKFdURjo6UG9p
c29uZWRJbXBsOjpQb2lzb25lZEltcGwpOgorICAgICAgICAoV1RGOjpQb2lzb25lZEltcGw6OmFz
c2VydElzUG9pc29uZWQgY29uc3QpOgorICAgICAgICAoV1RGOjpQb2lzb25lZEltcGw6OmFzc2Vy
dElzTm90UG9pc29uZWQgY29uc3QpOgorICAgICAgICAoV1RGOjpQb2lzb25lZEltcGw6OnVucG9p
c29uZWQgY29uc3QpOgorICAgICAgICAoV1RGOjpQb2lzb25lZEltcGw6Om9wZXJhdG9yLT4gY29u
c3QpOgorICAgICAgICAoV1RGOjpQb2lzb25lZEltcGw6OmJpdHMgY29uc3QpOgorICAgICAgICAo
V1RGOjpQb2lzb25lZEltcGw6Om9wZXJhdG9yISBjb25zdCk6CisgICAgICAgIChXVEY6OlBvaXNv
bmVkSW1wbDo6b3BlcmF0b3IgYm9vbCBjb25zdCk6CisgICAgICAgIChXVEY6OlBvaXNvbmVkSW1w
bDo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXVEY6OlBvaXNvbmVkSW1wbDo6b3BlcmF0
b3I9PSk6CisgICAgICAgIChXVEY6OlBvaXNvbmVkSW1wbDo6b3BlcmF0b3I9KToKKyAgICAgICAg
KFdURjo6UG9pc29uZWRJbXBsOjpwb2lzb24pOgorICAgICAgICAoV1RGOjpQb2lzb25lZEltcGw6
OnVucG9pc29uKToKKyAgICAgICAgKFdURjo6U2NyYW1ibGVkUHRyOjpTY3JhbWJsZWRQdHIpOiBE
ZWxldGVkLgorICAgICAgICAoV1RGOjpTY3JhbWJsZWRQdHI6OmFzc2VydElzU2NyYW1ibGVkIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6U2NyYW1ibGVkUHRyOjphc3NlcnRJc05vdFNj
cmFtYmxlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlNjcmFtYmxlZFB0cjo6ZGVz
Y3JhbWJsZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTY3JhbWJsZWRQdHI6Om9w
ZXJhdG9yLT4gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTY3JhbWJsZWRQdHI6OmJp
dHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTY3JhbWJsZWRQdHI6Om9wZXJhdG9y
ISBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlNjcmFtYmxlZFB0cjo6b3BlcmF0b3Ig
Ym9vbCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlNjcmFtYmxlZFB0cjo6b3BlcmF0
b3I9PSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlNjcmFtYmxlZFB0cjo6b3BlcmF0
b3I9PSk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlNjcmFtYmxlZFB0cjo6b3BlcmF0b3I9KTog
RGVsZXRlZC4KKyAgICAgICAgKFdURjo6U2NyYW1ibGVkUHRyOjpzY3JhbWJsZSk6IERlbGV0ZWQu
CisgICAgICAgIChXVEY6OlNjcmFtYmxlZFB0cjo6ZGVzY3JhbWJsZSk6IERlbGV0ZWQuCisgICAg
ICAgICogd3RmL1NjcmFtYmxlZFB0ci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogd3RmL1NjcmFt
YmxlZFB0ci5oOiBSZW1vdmVkLgorCiAyMDE3LTEyLTA1ICBTdGVwaGFuIFN6YWJvICA8c3RlcGhh
bi5zemFib0Bzb255LmNvbT4KIAogICAgICAgICBTd2l0Y2ggd2luZG93cyBidWlsZCB0byBWaXN1
YWwgU3R1ZGlvIDIwMTcKSW5kZXg6IFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gMjI1NTc2KQorKysgU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTQ5LDcgKzE0OSw3IEBACiAJCUUzOEQ2RTI3
MUY1NTIyRTMwMEE3NUNDNCAvKiBTdHJpbmdCdWlsZGVySlNPTi5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzhENkUyNjFGNTUyMkUzMDBBNzVDQzQg
LyogU3RyaW5nQnVpbGRlckpTT04uY3BwICovOyB9OwogCQlFNEEwQUQzOTFBOTYyNDU1MDA1MzZE
RjYgLyogV29ya1F1ZXVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEU0QTBBRDM3MUE5NjI0NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuY3BwICovOyB9
OwogCQlFNEEwQUQzRDFBOTYyNTNDMDA1MzZERjYgLyogV29ya1F1ZXVlQ29jb2EuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRBMEFEM0MxQTk2MjUz
QzAwNTM2REY2IC8qIFdvcmtRdWV1ZUNvY29hLmNwcCAqLzsgfTsKLQkJRkU4NTQxNkUxRkJFMjg1
RDAwOERBNURBIC8qIFNjcmFtYmxlZFB0ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRTg1NDE2QzFGQkUyODVCMDA4REE1REEgLyogU2NyYW1ibGVk
UHRyLmNwcCAqLzsgfTsKKwkJRkU4NTQxNkUxRkJFMjg1RDAwOERBNURBIC8qIFBvaXNvbmVkLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODU0MTZD
MUZCRTI4NUIwMDhEQTVEQSAvKiBQb2lzb25lZC5jcHAgKi87IH07CiAJCUZFREFDRDNEMTYzMEY4
M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZFREFDRDNCMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRz
LmNwcCAqLzsgfTsKIC8qIEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwogCkBAIC02MTAsOCAr
NjEwLDggQEAKIAkJRUY3RDZDRDU5RDg2NDJBOEEwREE4NkFEIC8qIFN0YWNrVHJhY2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RhY2tUcmFjZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGNzJCQkRCMTA3RkE0MjQ4ODYxNzhCOUUgLyogU3ltYm9sSW1wbC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTeW1ib2xJbXBsLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU4MjI1MzAxQjJBMUU1QjAwQkE2OEZEIC8q
IE5ha2VkUHRyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ha2VkUHRyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUZFODU0MTZDMUZCRTI4NUIwMDhEQTVEQSAv
KiBTY3JhbWJsZWRQdHIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U2NyYW1ibGVkUHRyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkU4NTQxNkQx
RkJFMjg1QzAwOERBNURBIC8qIFNjcmFtYmxlZFB0ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTY3JhbWJsZWRQdHIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RkU4NTQxNkMxRkJFMjg1QjAwOERBNURBIC8qIFBvaXNvbmVkLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvaXNvbmVkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRkU4NTQxNkQxRkJFMjg1QzAwOERBNURBIC8qIFBvaXNvbmVkLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvaXNvbmVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUZFODZBODc0MUU1OTQ0MDIwMDExMUJCRiAvKiBGb3JiaWRIZWFwQWxsb2NhdGlv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb3JiaWRIZWFwQWxsb2NhdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTg5MjVBRjFEMDBEQUVDMDA0Njkw
N0UgLyogSW5kZW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5kZW50
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVEQUNEM0IxNjMwRjgzRjAwQzY5
NjM0IC8qIFN0YWNrU3RhdHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU3RhY2tTdGF0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05NjUsNiAr
OTY1LDggQEAKIAkJCQlBODc2REJENzE1MTgxNkU1MDBEQURCOTUgLyogUGxhdGZvcm0uaCAqLywK
IAkJCQlFMzIwMEFCNDFFOUE1MzZEMDAzQjU5RDIgLyogUGxhdGZvcm1SZWdpc3RlcnMuaCAqLywK
IAkJCQkwRkY4NjA5NDFCQ0NCRDc0MDA0NTEyN0YgLyogUG9pbnRlckNvbXBhcmlzb24uaCAqLywK
KwkJCQlGRTg1NDE2QzFGQkUyODVCMDA4REE1REEgLyogUG9pc29uZWQuY3BwICovLAorCQkJCUZF
ODU0MTZEMUZCRTI4NUMwMDhEQTVEQSAvKiBQb2lzb25lZC5oICovLAogCQkJCTBGOUQzMzVEMTY1
REJBNzMwMDVBRDM4NyAvKiBQcmludFN0cmVhbS5jcHAgKi8sCiAJCQkJMEY5RDMzNUUxNjVEQkE3
MzAwNUFEMzg3IC8qIFByaW50U3RyZWFtLmggKi8sCiAJCQkJNTNFQzI1M0MxRTk1QUQzMDAwMDgz
MUI5IC8qIFByaW9yaXR5UXVldWUuaCAqLywKQEAgLTEwMDEsOCArMTAwMyw2IEBACiAJCQkJMTQ2
OTQxOTUxNkVBQUZGODAwMjRFMTQ2IC8qIFNjaGVkdWxlUGFpck1hYy5tbSAqLywKIAkJCQkxQTM1
MjRBQTFENjNBMkZGMDAzMTcyOUIgLyogU2NvcGUuaCAqLywKIAkJCQkwRkVDODRCMDFCREFDRDM5
MDA4MEZGNzQgLyogU2NvcGVkTGFtYmRhLmggKi8sCi0JCQkJRkU4NTQxNkMxRkJFMjg1QjAwOERB
NURBIC8qIFNjcmFtYmxlZFB0ci5jcHAgKi8sCi0JCQkJRkU4NTQxNkQxRkJFMjg1QzAwOERBNURB
IC8qIFNjcmFtYmxlZFB0ci5oICovLAogCQkJCTBGNjZCMjg0MURDOTdCQUIwMDRBMUQzRiAvKiBT
ZWNvbmRzLmNwcCAqLywKIAkJCQkwRjY2QjI4NTFEQzk3QkFCMDA0QTFEM0YgLyogU2Vjb25kcy5o
ICovLAogCQkJCUE4QTQ3MzA2MTUxQTgyNUIwMDQxMjNGRiAvKiBTZWdtZW50ZWRWZWN0b3IuaCAq
LywKQEAgLTE0NjIsNyArMTQ2Miw3IEBACiAJCQkJMTQ2OTQxOTMxNkVBQUY2RDAwMjRFMTQ2IC8q
IFJ1bkxvb3BUaW1lckNGLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0Njk0MTk5MTZFQUIwNDEw
MDI0RTE0NiAvKiBTY2hlZHVsZVBhaXJDRi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDY5NDE5
NzE2RUFBRkY4MDAyNEUxNDYgLyogU2NoZWR1bGVQYWlyTWFjLm1tIGluIFNvdXJjZXMgKi8sCi0J
CQkJRkU4NTQxNkUxRkJFMjg1RDAwOERBNURBIC8qIFNjcmFtYmxlZFB0ci5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlGRTg1NDE2RTFGQkUyODVEMDA4REE1REEgLyogUG9pc29uZWQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEY2NkIyOEUxREM5N0JBQjAwNEExRDNGIC8qIFNlY29uZHMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0MjExNTFBODI1QjAwNDEyM0ZGIC8qIFNIQTEuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTMxMUJENTMxRUE3MUNBRDAwNTI1MjgxIC8qIFNpZ25hbHMuY3Bw
IGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9Qb2lzb25lZC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi93dGYvUG9pc29uZWQuY3BwCShyZXZpc2lvbiAyMjU1NzYpCShm
cm9tIFNvdXJjZS9XVEYvd3RmL1NjcmFtYmxlZFB0ci5jcHA6MjI1NTc2KQorKysgU291cmNlL1dU
Ri93dGYvUG9pc29uZWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiU2NyYW1ibGVkUHRyLmgiCisKKyNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3Jh
cGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3VpbnRwdHJfdCBt
YWtlU2NyYW1ibGVkUHRyS2V5KCkKK3sKKyAgICB1aW50cHRyX3Qga2V5ID0gY3J5cHRvZ3JhcGhp
Y2FsbHlSYW5kb21OdW1iZXIoKTsKKyNpZiBVU0UoSlNWQUxVRTY0KSAmJiAhT1MoV0lORE9XUykK
KyAgICBrZXkgPSAoa2V5IDw8IDMyKSBeIChzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KGNyeXB0b2dy
YXBoaWNhbGx5UmFuZG9tTnVtYmVyKCkpIDw8IDMpOworICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBz
Y3JhbWJsZWQgYml0cyAocG9pbnRlciBeIGtleSkgZG8gbm90IG1ha2UgYSB2YWxpZCBwb2ludGVy
IGFuZAorICAgIC8vIGNhbm5vdCBiZSAwLiBXZSBlbnN1cmUgdGhhdCBpdCBpcyB6ZXJvIHNvIHRo
YXQgdGhlIHNjcmFtYmxlZCBiaXRzIGNhbiBhbHNvIGJlCisgICAgLy8gdXNlZCBmb3IgYSBub3Rt
YWwgemVybyBjaGVjayB3aXRob3V0IG5lZWRpbmcgdG8gZGVzY3JhbWJsZSBmaXJzdC4KKyAgICBr
ZXkgfD0gKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMHgxKSA8PCA2Myk7CisjZWxzZQorICAgIGtl
eSA9IDA7IC8vIFNjcmFtYmxpbmcgaXMgbm90IHN1cHBvcnRlZCBvbiAzMi1iaXQgb3Igbm9uLWRh
cndpbiBwbGF0Zm9ybXMgeWV0LgorI2VuZGlmCisgICAgcmV0dXJuIGtleTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV1RGCisKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BvaXNvbmVkLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Qb2lzb25lZC5jcHAJKHJldmlzaW9uIDIyNTU3NikKKysr
IFNvdXJjZS9XVEYvd3RmL1BvaXNvbmVkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsMjMgKzI0
LDIzIEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNjcmFtYmxlZFB0
ci5oIgorI2luY2x1ZGUgIlBvaXNvbmVkLmgiCiAKICNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhp
Y2FsbHlSYW5kb21OdW1iZXIuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKLXVpbnRwdHJfdCBtYWtl
U2NyYW1ibGVkUHRyS2V5KCkKK3VpbnRwdHJfdCBtYWtlUG9pc29uKCkKIHsKICAgICB1aW50cHRy
X3Qga2V5ID0gY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIoKTsKICNpZiBVU0UoSlNWQUxV
RTY0KSAmJiAhT1MoV0lORE9XUykKICAgICBrZXkgPSAoa2V5IDw8IDMyKSBeIChzdGF0aWNfY2Fz
dDx1aW50cHRyX3Q+KGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyKCkpIDw8IDMpOwotICAg
IC8vIEVuc3VyZSB0aGF0IHRoZSBzY3JhbWJsZWQgYml0cyAocG9pbnRlciBeIGtleSkgZG8gbm90
IG1ha2UgYSB2YWxpZCBwb2ludGVyIGFuZAotICAgIC8vIGNhbm5vdCBiZSAwLiBXZSBlbnN1cmUg
dGhhdCBpdCBpcyB6ZXJvIHNvIHRoYXQgdGhlIHNjcmFtYmxlZCBiaXRzIGNhbiBhbHNvIGJlCi0g
ICAgLy8gdXNlZCBmb3IgYSBub3RtYWwgemVybyBjaGVjayB3aXRob3V0IG5lZWRpbmcgdG8gZGVz
Y3JhbWJsZSBmaXJzdC4KKyAgICAvLyBFbnN1cmUgdGhhdCB0aGUgcG9pc29uZWQgYml0cyAocG9p
bnRlciBeIGtleSkgZG8gbm90IG1ha2UgYSB2YWxpZCBwb2ludGVyIGFuZAorICAgIC8vIGNhbm5v
dCBiZSAwLiBXZSBlbnN1cmUgdGhhdCBpdCBpcyB6ZXJvIHNvIHRoYXQgdGhlIHBvaXNvbmVkIGJp
dHMgY2FuIGFsc28gYmUKKyAgICAvLyB1c2VkIGZvciBhIG5vdG1hbCB6ZXJvIGNoZWNrIHdpdGhv
dXQgbmVlZGluZyB0byBkZWNvZGVkIGZpcnN0LgogICAgIGtleSB8PSAoc3RhdGljX2Nhc3Q8dWlu
dHB0cl90PigweDEpIDw8IDYzKTsKICNlbHNlCi0gICAga2V5ID0gMDsgLy8gU2NyYW1ibGluZyBp
cyBub3Qgc3VwcG9ydGVkIG9uIDMyLWJpdCBvciBub24tZGFyd2luIHBsYXRmb3JtcyB5ZXQuCisg
ICAga2V5ID0gMDsgLy8gUG9pc29uaW5nIGlzIG5vdCBzdXBwb3J0ZWQgb24gMzItYml0IG9yIG5v
bi1kYXJ3aW4gcGxhdGZvcm1zIHlldC4KICNlbmRpZgogICAgIHJldHVybiBrZXk7CiB9CkluZGV4
OiBTb3VyY2UvV1RGL3d0Zi9Qb2lzb25lZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3Rm
L1BvaXNvbmVkLmgJKHJldmlzaW9uIDIyNTU3NikJKGZyb20gU291cmNlL1dURi93dGYvU2NyYW1i
bGVkUHRyLmg6MjI1NTc2KQorKysgU291cmNlL1dURi93dGYvUG9pc29uZWQuaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDEyOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4K
KworI2RlZmluZSBFTkFCTEVfU0NSQU1CTEVEX1BUUl9BU1NFUlRTIDAKKworLy8gTm90IGN1cnJl
bnRseSBzdXBwb3J0ZWQgZm9yIDMyLWJpdCBvciBPUyhXSU5ET1dTKSBidWlsZHMgKGJlY2F1c2Ug
b2YgbWlzc2luZyBsbGludCBzdXBwb3J0KS4KKy8vIE1ha2Ugc3VyZSBpdCdzIGRpc2FibGVkLgor
I2lmIFVTRShKU1ZBTFVFMzJfNjQpIHx8IE9TKFdJTkRPV1MpCisjdW5kZWYgRU5BQkxFX1NDUkFN
QkxFRF9QVFJfQVNTRVJUUworI2RlZmluZSBFTkFCTEVfU0NSQU1CTEVEX1BUUl9BU1NFUlRTIDAK
KyNlbmRpZgorCituYW1lc3BhY2UgV1RGIHsKKwordXNpbmcgU2NyYW1ibGVkUHRyQml0cyA9IHVp
bnRwdHJfdDsKKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgdWludHB0cl90JiBrZXksIHR5cGVuYW1l
ID0gc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX3BvaW50ZXI8VD46OnZhbHVlPj4KK2NsYXNzIFNj
cmFtYmxlZFB0ciB7CitwdWJsaWM6CisgICAgU2NyYW1ibGVkUHRyKCkgeyB9CisKKyAgICBleHBs
aWNpdCBTY3JhbWJsZWRQdHIoVCBwdHIpCisgICAgICAgIDogbV9zY3JhbWJsZWRCaXRzKHNjcmFt
YmxlKHB0cikpCisgICAgeworICAgICAgICBBU1NFUlQocHRyICYmIG1fc2NyYW1ibGVkQml0cyk7
CisgICAgfQorCisgICAgU2NyYW1ibGVkUHRyKGNvbnN0IFNjcmFtYmxlZFB0ciYpID0gZGVmYXVs
dDsKKworICAgIGV4cGxpY2l0IFNjcmFtYmxlZFB0cihTY3JhbWJsZWRQdHJCaXRzIHNjcmFtYmxl
ZEJpdHMpCisgICAgICAgIDogbV9zY3JhbWJsZWRCaXRzKHNjcmFtYmxlZEJpdHMpCisgICAgewor
ICAgICAgICBBU1NFUlQobV9zY3JhbWJsZWRCaXRzKTsKKyAgICB9CisKKyNpZiBFTkFCTEUoU0NS
QU1CTEVEX1BUUl9BU1NFUlRTKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSB2b2lkKj4KKyAg
ICBzdGF0aWMgYm9vbCBpc1NjcmFtYmxlZChVIHZhbHVlKSB7IHJldHVybiAhdmFsdWUgfHwgKHJl
aW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih2YWx1ZSkgJiAweGZmZmYwMDAwMDAwMDAwMDApOyB9
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IHZvaWQqPgorICAgIHN0YXRpYyB2b2lkIGFzc2Vy
dElzU2NyYW1ibGVkKFUgdmFsdWUpIHsgUkVMRUFTRV9BU1NFUlQoaXNTY3JhbWJsZWQodmFsdWUp
KTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSB2b2lkKj4KKyAgICBzdGF0aWMgdm9pZCBh
c3NlcnRJc05vdFNjcmFtYmxlZChVIHZhbHVlKSB7IFJFTEVBU0VfQVNTRVJUKCFpc1NjcmFtYmxl
ZCh2YWx1ZSkpOyB9CisjZWxzZQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSB2b2lkKj4gc3Rh
dGljIHZvaWQgYXNzZXJ0SXNTY3JhbWJsZWQoVSkgeyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VSA9IHZvaWQqPiBzdGF0aWMgdm9pZCBhc3NlcnRJc05vdFNjcmFtYmxlZChVKSB7IH0KKyNlbmRp
ZgorICAgIHZvaWQgYXNzZXJ0SXNTY3JhbWJsZWQoKSBjb25zdCB7IGFzc2VydElzU2NyYW1ibGVk
KG1fc2NyYW1ibGVkQml0cyk7IH0KKyAgICB2b2lkIGFzc2VydElzTm90U2NyYW1ibGVkKCkgY29u
c3QgeyBhc3NlcnRJc05vdFNjcmFtYmxlZChtX3NjcmFtYmxlZEJpdHMpOyB9CisKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBVID0gVD4KKyAgICBVIGRlc2NyYW1ibGVkKCkgY29uc3QgeyByZXR1cm4g
ZGVzY3JhbWJsZTxVPihtX3NjcmFtYmxlZEJpdHMpOyB9CisKKyAgICBBTFdBWVNfSU5MSU5FIFQg
b3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIGRlc2NyYW1ibGU8VD4obV9zY3JhbWJsZWRCaXRz
KTsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFNjcmFtYmxlZFB0ckJpdHM+CisgICAg
VSBiaXRzKCkgY29uc3QgeyByZXR1cm4gYml0d2lzZV9jYXN0PFU+KG1fc2NyYW1ibGVkQml0cyk7
IH0KKworICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fc2NyYW1ibGVkQml0
czsgfQorICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1fc2Ny
YW1ibGVkQml0czsgfQorCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNjcmFtYmxlZFB0ciYg
YikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3NjcmFtYmxlZEJpdHMgPT0gYi5tX3Nj
cmFtYmxlZEJpdHM7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUHRyVHlwZSA9IHZv
aWQqLCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfcG9pbnRlcjxQ
dHJUeXBlPjo6dmFsdWU+Ojp0eXBlPgorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQdHJUeXBl
IGIpCisgICAgeworICAgICAgICByZXR1cm4gZGVzY3JhbWJsZWQ8UHRyVHlwZT4oKSA9PSBiOwor
ICAgIH0KKworICAgIFNjcmFtYmxlZFB0ciYgb3BlcmF0b3I9KFQgcHRyKQorICAgIHsKKyAgICAg
ICAgbV9zY3JhbWJsZWRCaXRzID0gcHRyID8gc2NyYW1ibGUocHRyKSA6IDA7CisgICAgICAgIHJl
dHVybiAqdGhpczsKKyAgICB9CisgICAgU2NyYW1ibGVkUHRyJiBvcGVyYXRvcj0oY29uc3QgU2Ny
YW1ibGVkUHRyJikgPSBkZWZhdWx0OworCitwcml2YXRlOgorI2lmIFVTRShKU1ZBTFVFNjQpCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBTY3JhbWJs
ZWRQdHJCaXRzIHNjcmFtYmxlKFUgcHRyKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8U2NyYW1ibGVk
UHRyQml0cz4ocHRyKSBeIGtleTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+CisgICAgQUxX
QVlTX0lOTElORSBzdGF0aWMgVSBkZXNjcmFtYmxlKFNjcmFtYmxlZFB0ckJpdHMgc2NyYW1ibGVk
Qml0cykgeyByZXR1cm4gYml0d2lzZV9jYXN0PFU+KHNjcmFtYmxlZEJpdHMgXiBrZXkpOyB9Cisj
ZWxzZQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+CisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMg
U2NyYW1ibGVkUHRyQml0cyBzY3JhbWJsZShVIHB0cikgeyByZXR1cm4gYml0d2lzZV9jYXN0PFNj
cmFtYmxlZFB0ckJpdHM+KHB0cik7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgorICAgIEFM
V0FZU19JTkxJTkUgc3RhdGljIFUgZGVzY3JhbWJsZShTY3JhbWJsZWRQdHJCaXRzIHNjcmFtYmxl
ZEJpdHMpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxVPihzY3JhbWJsZWRCaXRzKTsgfQorI2VuZGlm
CisKKyAgICBTY3JhbWJsZWRQdHJCaXRzIG1fc2NyYW1ibGVkQml0cyB7IDAgfTsKK307CisKK3Zv
aWQgaW5pdGlhbGl6ZVNjcmFtYmxlZFB0cigpOworV1RGX0VYUE9SVF9QUklWQVRFIHVpbnRwdHJf
dCBtYWtlU2NyYW1ibGVkUHRyS2V5KCk7CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2luZyBX
VEY6OlNjcmFtYmxlZFB0cjsKK3VzaW5nIFdURjo6U2NyYW1ibGVkUHRyQml0czsKK3VzaW5nIFdU
Rjo6bWFrZVNjcmFtYmxlZFB0cktleTsKKwpJbmRleDogU291cmNlL1dURi93dGYvUG9pc29uZWQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Qb2lzb25lZC5oCShyZXZpc2lvbiAyMjU1
NzYpCisrKyBTb3VyY2UvV1RGL3d0Zi9Qb2lzb25lZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywx
MDMgKzI3LDEwOSBAQAogCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KIAotI2RlZmluZSBF
TkFCTEVfU0NSQU1CTEVEX1BUUl9BU1NFUlRTIDAKKyNkZWZpbmUgRU5BQkxFX1BPSVNPTl9BU1NF
UlRTIDAKIAogLy8gTm90IGN1cnJlbnRseSBzdXBwb3J0ZWQgZm9yIDMyLWJpdCBvciBPUyhXSU5E
T1dTKSBidWlsZHMgKGJlY2F1c2Ugb2YgbWlzc2luZyBsbGludCBzdXBwb3J0KS4KIC8vIE1ha2Ug
c3VyZSBpdCdzIGRpc2FibGVkLgogI2lmIFVTRShKU1ZBTFVFMzJfNjQpIHx8IE9TKFdJTkRPV1Mp
Ci0jdW5kZWYgRU5BQkxFX1NDUkFNQkxFRF9QVFJfQVNTRVJUUwotI2RlZmluZSBFTkFCTEVfU0NS
QU1CTEVEX1BUUl9BU1NFUlRTIDAKKyN1bmRlZiBFTkFCTEVfUE9JU09OX0FTU0VSVFMKKyNkZWZp
bmUgRU5BQkxFX1BPSVNPTl9BU1NFUlRTIDAKICNlbmRpZgogCiBuYW1lc3BhY2UgV1RGIHsKIAot
dXNpbmcgU2NyYW1ibGVkUHRyQml0cyA9IHVpbnRwdHJfdDsKK3VzaW5nIFBvaXNvbmVkQml0cyA9
IHVpbnRwdHJfdDsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdWludHB0cl90JiBrZXksIHR5cGVu
YW1lID0gc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX3BvaW50ZXI8VD46OnZhbHVlPj4KLWNsYXNz
IFNjcmFtYmxlZFB0ciB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlUeXBlLCBLZXlUeXBlIGtleSwg
dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfcG9pbnRlcjxU
Pjo6dmFsdWU+PgorY2xhc3MgUG9pc29uZWRJbXBsIHsKIHB1YmxpYzoKLSAgICBTY3JhbWJsZWRQ
dHIoKSB7IH0KKyAgICBQb2lzb25lZEltcGwoKSB7IH0KIAotICAgIGV4cGxpY2l0IFNjcmFtYmxl
ZFB0cihUIHB0cikKLSAgICAgICAgOiBtX3NjcmFtYmxlZEJpdHMoc2NyYW1ibGUocHRyKSkKKyAg
ICBleHBsaWNpdCBQb2lzb25lZEltcGwoVCBwdHIpCisgICAgICAgIDogbV9wb2lzb25lZEJpdHMo
cG9pc29uKHB0cikpCiAgICAgewotICAgICAgICBBU1NFUlQocHRyICYmIG1fc2NyYW1ibGVkQml0
cyk7CisgICAgICAgIEFTU0VSVChwdHIgJiYgbV9wb2lzb25lZEJpdHMpOwogICAgIH0KIAotICAg
IFNjcmFtYmxlZFB0cihjb25zdCBTY3JhbWJsZWRQdHImKSA9IGRlZmF1bHQ7CisgICAgUG9pc29u
ZWRJbXBsKGNvbnN0IFBvaXNvbmVkSW1wbCYpID0gZGVmYXVsdDsKIAotICAgIGV4cGxpY2l0IFNj
cmFtYmxlZFB0cihTY3JhbWJsZWRQdHJCaXRzIHNjcmFtYmxlZEJpdHMpCi0gICAgICAgIDogbV9z
Y3JhbWJsZWRCaXRzKHNjcmFtYmxlZEJpdHMpCisgICAgZXhwbGljaXQgUG9pc29uZWRJbXBsKFBv
aXNvbmVkQml0cyBwb2lzb25lZEJpdHMpCisgICAgICAgIDogbV9wb2lzb25lZEJpdHMocG9pc29u
ZWRCaXRzKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fc2NyYW1ibGVkQml0cyk7CisgICAgICAg
IEFTU0VSVChtX3BvaXNvbmVkQml0cyk7CiAgICAgfQogCi0jaWYgRU5BQkxFKFNDUkFNQkxFRF9Q
VFJfQVNTRVJUUykKKyNpZiBFTkFCTEUoUE9JU09OX0FTU0VSVFMpCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVSA9IHZvaWQqPgotICAgIHN0YXRpYyBib29sIGlzU2NyYW1ibGVkKFUgdmFsdWUpIHsg
cmV0dXJuICF2YWx1ZSB8fCAocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSAmIDB4
ZmZmZjAwMDAwMDAwMDAwMCk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc1BvaXNvbmVkKFUgdmFsdWUp
IHsgcmV0dXJuICF2YWx1ZSB8fCAocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSAm
IDB4ZmZmZjAwMDAwMDAwMDAwMCk7IH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gdm9pZCo+
Ci0gICAgc3RhdGljIHZvaWQgYXNzZXJ0SXNTY3JhbWJsZWQoVSB2YWx1ZSkgeyBSRUxFQVNFX0FT
U0VSVChpc1NjcmFtYmxlZCh2YWx1ZSkpOyB9CisgICAgc3RhdGljIHZvaWQgYXNzZXJ0SXNQb2lz
b25lZChVIHZhbHVlKSB7IFJFTEVBU0VfQVNTRVJUKGlzUG9pc29uZWQodmFsdWUpKTsgfQogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFUgPSB2b2lkKj4KLSAgICBzdGF0aWMgdm9pZCBhc3NlcnRJc05v
dFNjcmFtYmxlZChVIHZhbHVlKSB7IFJFTEVBU0VfQVNTRVJUKCFpc1NjcmFtYmxlZCh2YWx1ZSkp
OyB9CisgICAgc3RhdGljIHZvaWQgYXNzZXJ0SXNOb3RQb2lzb25lZChVIHZhbHVlKSB7IFJFTEVB
U0VfQVNTRVJUKCFpc1BvaXNvbmVkKHZhbHVlKSk7IH0KICNlbHNlCi0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVSA9IHZvaWQqPiBzdGF0aWMgdm9pZCBhc3NlcnRJc1NjcmFtYmxlZChVKSB7IH0KLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gdm9pZCo+IHN0YXRpYyB2b2lkIGFzc2VydElzTm90U2Ny
YW1ibGVkKFUpIHsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSB2b2lkKj4gc3RhdGljIHZv
aWQgYXNzZXJ0SXNQb2lzb25lZChVKSB7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gdm9p
ZCo+IHN0YXRpYyB2b2lkIGFzc2VydElzTm90UG9pc29uZWQoVSkgeyB9CiAjZW5kaWYKLSAgICB2
b2lkIGFzc2VydElzU2NyYW1ibGVkKCkgY29uc3QgeyBhc3NlcnRJc1NjcmFtYmxlZChtX3NjcmFt
YmxlZEJpdHMpOyB9Ci0gICAgdm9pZCBhc3NlcnRJc05vdFNjcmFtYmxlZCgpIGNvbnN0IHsgYXNz
ZXJ0SXNOb3RTY3JhbWJsZWQobV9zY3JhbWJsZWRCaXRzKTsgfQorICAgIHZvaWQgYXNzZXJ0SXNQ
b2lzb25lZCgpIGNvbnN0IHsgYXNzZXJ0SXNQb2lzb25lZChtX3BvaXNvbmVkQml0cyk7IH0KKyAg
ICB2b2lkIGFzc2VydElzTm90UG9pc29uZWQoKSBjb25zdCB7IGFzc2VydElzTm90UG9pc29uZWQo
bV9wb2lzb25lZEJpdHMpOyB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gVD4KLSAgICBV
IGRlc2NyYW1ibGVkKCkgY29uc3QgeyByZXR1cm4gZGVzY3JhbWJsZTxVPihtX3NjcmFtYmxlZEJp
dHMpOyB9CisgICAgVSB1bnBvaXNvbmVkKCkgY29uc3QgeyByZXR1cm4gdW5wb2lzb248VT4obV9w
b2lzb25lZEJpdHMpOyB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIFQgb3BlcmF0b3ItPigpIGNvbnN0
IHsgcmV0dXJuIGRlc2NyYW1ibGU8VD4obV9zY3JhbWJsZWRCaXRzKTsgfQorICAgIEFMV0FZU19J
TkxJTkUgVCBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gdW5wb2lzb248VD4obV9wb2lzb25l
ZEJpdHMpOyB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gU2NyYW1ibGVkUHRyQml0cz4K
LSAgICBVIGJpdHMoKSBjb25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8VT4obV9zY3JhbWJsZWRC
aXRzKTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBQb2lzb25lZEJpdHM+CisgICAgVSBi
aXRzKCkgY29uc3QgeyByZXR1cm4gYml0d2lzZV9jYXN0PFU+KG1fcG9pc29uZWRCaXRzKTsgfQog
Ci0gICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9zY3JhbWJsZWRCaXRzOyB9
Ci0gICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9zY3JhbWJs
ZWRCaXRzOyB9CisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9wb2lzb25l
ZEJpdHM7IH0KKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFt
X3BvaXNvbmVkQml0czsgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNjcmFtYmxlZFB0
ciYgYikgY29uc3QKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUG9pc29uZWRJbXBsJiBiKSBj
b25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fc2NyYW1ibGVkQml0cyA9PSBiLm1fc2NyYW1i
bGVkQml0czsKKyAgICAgICAgcmV0dXJuIG1fcG9pc29uZWRCaXRzID09IGIubV9wb2lzb25lZEJp
dHM7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUHRyVHlwZSA9IHZvaWQqLCB0eXBl
bmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfcG9pbnRlcjxQdHJUeXBlPjo6
dmFsdWU+Ojp0eXBlPgogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQdHJUeXBlIGIpCiAgICAg
ewotICAgICAgICByZXR1cm4gZGVzY3JhbWJsZWQ8UHRyVHlwZT4oKSA9PSBiOworICAgICAgICBy
ZXR1cm4gdW5wb2lzb25lZDxQdHJUeXBlPigpID09IGI7CiAgICAgfQogCi0gICAgU2NyYW1ibGVk
UHRyJiBvcGVyYXRvcj0oVCBwdHIpCisgICAgUG9pc29uZWRJbXBsJiBvcGVyYXRvcj0oVCBwdHIp
CiAgICAgewotICAgICAgICBtX3NjcmFtYmxlZEJpdHMgPSBwdHIgPyBzY3JhbWJsZShwdHIpIDog
MDsKKyAgICAgICAgbV9wb2lzb25lZEJpdHMgPSBwb2lzb24ocHRyKTsKICAgICAgICAgcmV0dXJu
ICp0aGlzOwogICAgIH0KLSAgICBTY3JhbWJsZWRQdHImIG9wZXJhdG9yPShjb25zdCBTY3JhbWJs
ZWRQdHImKSA9IGRlZmF1bHQ7CisgICAgUG9pc29uZWRJbXBsJiBvcGVyYXRvcj0oY29uc3QgUG9p
c29uZWRJbXBsJikgPSBkZWZhdWx0OwogCiBwcml2YXRlOgogI2lmIFVTRShKU1ZBTFVFNjQpCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBTY3JhbWJs
ZWRQdHJCaXRzIHNjcmFtYmxlKFUgcHRyKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8U2NyYW1ibGVk
UHRyQml0cz4ocHRyKSBeIGtleTsgfQorICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFBvaXNvbmVk
Qml0cyBwb2lzb24oVSBwdHIpIHsgcmV0dXJuIHB0ciA/IGJpdHdpc2VfY2FzdDxQb2lzb25lZEJp
dHM+KHB0cikgXiBrZXkgOiAwOyB9CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICBBTFdB
WVNfSU5MSU5FIHN0YXRpYyBVIGRlc2NyYW1ibGUoU2NyYW1ibGVkUHRyQml0cyBzY3JhbWJsZWRC
aXRzKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8VT4oc2NyYW1ibGVkQml0cyBeIGtleSk7IH0KKyAg
ICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBVIHVucG9pc29uKFBvaXNvbmVkQml0cyBwb2lzb25lZEJp
dHMpIHsgcmV0dXJuIHBvaXNvbmVkQml0cyA/IGJpdHdpc2VfY2FzdDxVPihwb2lzb25lZEJpdHMg
XiBrZXkpIDogYml0d2lzZV9jYXN0PFU+KDBsbCk7IH0KICNlbHNlCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVT4KLSAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBTY3JhbWJsZWRQdHJCaXRzIHNjcmFt
YmxlKFUgcHRyKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8U2NyYW1ibGVkUHRyQml0cz4ocHRyKTsg
fQorICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFBvaXNvbmVkQml0cyBwb2lzb24oVSBwdHIpIHsg
cmV0dXJuIGJpdHdpc2VfY2FzdDxQb2lzb25lZEJpdHM+KHB0cik7IH0KICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBVPgotICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFUgZGVzY3JhbWJsZShTY3JhbWJs
ZWRQdHJCaXRzIHNjcmFtYmxlZEJpdHMpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxVPihzY3JhbWJs
ZWRCaXRzKTsgfQorICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFUgdW5wb2lzb24oUG9pc29uZWRC
aXRzIHBvaXNvbmVkQml0cykgeyByZXR1cm4gYml0d2lzZV9jYXN0PFU+KHBvaXNvbmVkQml0cyk7
IH0KICNlbmRpZgogCi0gICAgU2NyYW1ibGVkUHRyQml0cyBtX3NjcmFtYmxlZEJpdHMgeyAwIH07
CisgICAgUG9pc29uZWRCaXRzIG1fcG9pc29uZWRCaXRzIHsgMCB9OwogfTsKIAotdm9pZCBpbml0
aWFsaXplU2NyYW1ibGVkUHRyKCk7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgdWludHB0cl90IG1ha2VT
Y3JhbWJsZWRQdHJLZXkoKTsKK3RlbXBsYXRlPHVpbnRwdHJfdCYga2V5LCB0eXBlbmFtZSBUPgor
dXNpbmcgUG9pc29uZWQgPSBQb2lzb25lZEltcGw8Y29uc3QgdWludHB0cl90Jiwga2V5LCBUPjsK
KwordGVtcGxhdGU8aW50MzJfdCBrZXksIHR5cGVuYW1lIFQ+Cit1c2luZyBJbnQzMlBvaXNvbmVk
ID0gUG9pc29uZWRJbXBsPHVpbnRwdHJfdCwgc3RhdGljX2Nhc3Q8dWludHB0cl90PihrZXkpIDw8
IDMyLCBUPjsKKworV1RGX0VYUE9SVF9QUklWQVRFIHVpbnRwdHJfdCBtYWtlUG9pc29uKCk7CiAK
IH0gLy8gbmFtZXNwYWNlIFdURgogCi11c2luZyBXVEY6OlNjcmFtYmxlZFB0cjsKLXVzaW5nIFdU
Rjo6U2NyYW1ibGVkUHRyQml0czsKLXVzaW5nIFdURjo6bWFrZVNjcmFtYmxlZFB0cktleTsKK3Vz
aW5nIFdURjo6SW50MzJQb2lzb25lZDsKK3VzaW5nIFdURjo6UG9pc29uZWQ7Cit1c2luZyBXVEY6
OlBvaXNvbmVkQml0czsKK3VzaW5nIFdURjo6bWFrZVBvaXNvbjsKIApJbmRleDogU291cmNlL1dU
Ri93dGYvU2NyYW1ibGVkUHRyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9TY3Jh
bWJsZWRQdHIuY3BwCShyZXZpc2lvbiAyMjU1NzYpCisrKyBTb3VyY2UvV1RGL3d0Zi9TY3JhbWJs
ZWRQdHIuY3BwCShub25leGlzdGVudCkKQEAgLTEsNDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJTY3JhbWJsZWRQdHIuaCIKLQotI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFwaGljYWxseVJh
bmRvbU51bWJlci5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLQotdWludHB0cl90IG1ha2VTY3JhbWJs
ZWRQdHJLZXkoKQotewotICAgIHVpbnRwdHJfdCBrZXkgPSBjcnlwdG9ncmFwaGljYWxseVJhbmRv
bU51bWJlcigpOwotI2lmIFVTRShKU1ZBTFVFNjQpICYmICFPUyhXSU5ET1dTKQotICAgIGtleSA9
IChrZXkgPDwgMzIpIF4gKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oY3J5cHRvZ3JhcGhpY2FsbHlS
YW5kb21OdW1iZXIoKSkgPDwgMyk7Ci0gICAgLy8gRW5zdXJlIHRoYXQgdGhlIHNjcmFtYmxlZCBi
aXRzIChwb2ludGVyIF4ga2V5KSBkbyBub3QgbWFrZSBhIHZhbGlkIHBvaW50ZXIgYW5kCi0gICAg
Ly8gY2Fubm90IGJlIDAuIFdlIGVuc3VyZSB0aGF0IGl0IGlzIHplcm8gc28gdGhhdCB0aGUgc2Ny
YW1ibGVkIGJpdHMgY2FuIGFsc28gYmUKLSAgICAvLyB1c2VkIGZvciBhIG5vdG1hbCB6ZXJvIGNo
ZWNrIHdpdGhvdXQgbmVlZGluZyB0byBkZXNjcmFtYmxlIGZpcnN0LgotICAgIGtleSB8PSAoc3Rh
dGljX2Nhc3Q8dWludHB0cl90PigweDEpIDw8IDYzKTsKLSNlbHNlCi0gICAga2V5ID0gMDsgLy8g
U2NyYW1ibGluZyBpcyBub3Qgc3VwcG9ydGVkIG9uIDMyLWJpdCBvciBub24tZGFyd2luIHBsYXRm
b3JtcyB5ZXQuCi0jZW5kaWYKLSAgICByZXR1cm4ga2V5OwotfQotCi19IC8vIG5hbWVzcGFjZSBX
VEYKLQpJbmRleDogU291cmNlL1dURi93dGYvU2NyYW1ibGVkUHRyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dURi93dGYvU2NyYW1ibGVkUHRyLmgJKHJldmlzaW9uIDIyNTU3NikKKysrIFNvdXJj
ZS9XVEYvd3RmL1NjcmFtYmxlZFB0ci5oCShub25leGlzdGVudCkKQEAgLTEsMTI5ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0KLSNkZWZpbmUgRU5BQkxFX1NDUkFN
QkxFRF9QVFJfQVNTRVJUUyAwCi0KLS8vIE5vdCBjdXJyZW50bHkgc3VwcG9ydGVkIGZvciAzMi1i
aXQgb3IgT1MoV0lORE9XUykgYnVpbGRzIChiZWNhdXNlIG9mIG1pc3NpbmcgbGxpbnQgc3VwcG9y
dCkuCi0vLyBNYWtlIHN1cmUgaXQncyBkaXNhYmxlZC4KLSNpZiBVU0UoSlNWQUxVRTMyXzY0KSB8
fCBPUyhXSU5ET1dTKQotI3VuZGVmIEVOQUJMRV9TQ1JBTUJMRURfUFRSX0FTU0VSVFMKLSNkZWZp
bmUgRU5BQkxFX1NDUkFNQkxFRF9QVFJfQVNTRVJUUyAwCi0jZW5kaWYKLQotbmFtZXNwYWNlIFdU
RiB7Ci0KLXVzaW5nIFNjcmFtYmxlZFB0ckJpdHMgPSB1aW50cHRyX3Q7Ci0KLXRlbXBsYXRlPHR5
cGVuYW1lIFQsIHVpbnRwdHJfdCYga2V5LCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8c3Rk
Ojppc19wb2ludGVyPFQ+Ojp2YWx1ZT4+Ci1jbGFzcyBTY3JhbWJsZWRQdHIgewotcHVibGljOgot
ICAgIFNjcmFtYmxlZFB0cigpIHsgfQotCi0gICAgZXhwbGljaXQgU2NyYW1ibGVkUHRyKFQgcHRy
KQotICAgICAgICA6IG1fc2NyYW1ibGVkQml0cyhzY3JhbWJsZShwdHIpKQotICAgIHsKLSAgICAg
ICAgQVNTRVJUKHB0ciAmJiBtX3NjcmFtYmxlZEJpdHMpOwotICAgIH0KLQotICAgIFNjcmFtYmxl
ZFB0cihjb25zdCBTY3JhbWJsZWRQdHImKSA9IGRlZmF1bHQ7Ci0KLSAgICBleHBsaWNpdCBTY3Jh
bWJsZWRQdHIoU2NyYW1ibGVkUHRyQml0cyBzY3JhbWJsZWRCaXRzKQotICAgICAgICA6IG1fc2Ny
YW1ibGVkQml0cyhzY3JhbWJsZWRCaXRzKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fc2NyYW1i
bGVkQml0cyk7Ci0gICAgfQotCi0jaWYgRU5BQkxFKFNDUkFNQkxFRF9QVFJfQVNTRVJUUykKLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gdm9pZCo+Ci0gICAgc3RhdGljIGJvb2wgaXNTY3JhbWJs
ZWQoVSB2YWx1ZSkgeyByZXR1cm4gIXZhbHVlIHx8IChyZWludGVycHJldF9jYXN0PHVpbnRwdHJf
dD4odmFsdWUpICYgMHhmZmZmMDAwMDAwMDAwMDAwKTsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFUgPSB2b2lkKj4KLSAgICBzdGF0aWMgdm9pZCBhc3NlcnRJc1NjcmFtYmxlZChVIHZhbHVlKSB7
IFJFTEVBU0VfQVNTRVJUKGlzU2NyYW1ibGVkKHZhbHVlKSk7IH0KLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBVID0gdm9pZCo+Ci0gICAgc3RhdGljIHZvaWQgYXNzZXJ0SXNOb3RTY3JhbWJsZWQoVSB2
YWx1ZSkgeyBSRUxFQVNFX0FTU0VSVCghaXNTY3JhbWJsZWQodmFsdWUpKTsgfQotI2Vsc2UKLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gdm9pZCo+IHN0YXRpYyB2b2lkIGFzc2VydElzU2NyYW1i
bGVkKFUpIHsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSB2b2lkKj4gc3RhdGljIHZvaWQg
YXNzZXJ0SXNOb3RTY3JhbWJsZWQoVSkgeyB9Ci0jZW5kaWYKLSAgICB2b2lkIGFzc2VydElzU2Ny
YW1ibGVkKCkgY29uc3QgeyBhc3NlcnRJc1NjcmFtYmxlZChtX3NjcmFtYmxlZEJpdHMpOyB9Ci0g
ICAgdm9pZCBhc3NlcnRJc05vdFNjcmFtYmxlZCgpIGNvbnN0IHsgYXNzZXJ0SXNOb3RTY3JhbWJs
ZWQobV9zY3JhbWJsZWRCaXRzKTsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQ+Ci0g
ICAgVSBkZXNjcmFtYmxlZCgpIGNvbnN0IHsgcmV0dXJuIGRlc2NyYW1ibGU8VT4obV9zY3JhbWJs
ZWRCaXRzKTsgfQotCi0gICAgQUxXQVlTX0lOTElORSBUIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJl
dHVybiBkZXNjcmFtYmxlPFQ+KG1fc2NyYW1ibGVkQml0cyk7IH0KLQotICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFUgPSBTY3JhbWJsZWRQdHJCaXRzPgotICAgIFUgYml0cygpIGNvbnN0IHsgcmV0dXJu
IGJpdHdpc2VfY2FzdDxVPihtX3NjcmFtYmxlZEJpdHMpOyB9Ci0KLSAgICBib29sIG9wZXJhdG9y
ISgpIGNvbnN0IHsgcmV0dXJuICFtX3NjcmFtYmxlZEJpdHM7IH0KLSAgICBleHBsaWNpdCBvcGVy
YXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX3NjcmFtYmxlZEJpdHM7IH0KLQotICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBTY3JhbWJsZWRQdHImIGIpIGNvbnN0Ci0gICAgewotICAgICAg
ICByZXR1cm4gbV9zY3JhbWJsZWRCaXRzID09IGIubV9zY3JhbWJsZWRCaXRzOwotICAgIH0KLQot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFB0clR5cGUgPSB2b2lkKiwgdHlwZW5hbWUgPSB0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3BvaW50ZXI8UHRyVHlwZT46OnZhbHVlPjo6dHlwZT4K
LSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUHRyVHlwZSBiKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIGRlc2NyYW1ibGVkPFB0clR5cGU+KCkgPT0gYjsKLSAgICB9Ci0KLSAgICBTY3JhbWJsZWRQ
dHImIG9wZXJhdG9yPShUIHB0cikKLSAgICB7Ci0gICAgICAgIG1fc2NyYW1ibGVkQml0cyA9IHB0
ciA/IHNjcmFtYmxlKHB0cikgOiAwOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotICAg
IFNjcmFtYmxlZFB0ciYgb3BlcmF0b3I9KGNvbnN0IFNjcmFtYmxlZFB0ciYpID0gZGVmYXVsdDsK
LQotcHJpdmF0ZToKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+
Ci0gICAgQUxXQVlTX0lOTElORSBzdGF0aWMgU2NyYW1ibGVkUHRyQml0cyBzY3JhbWJsZShVIHB0
cikgeyByZXR1cm4gYml0d2lzZV9jYXN0PFNjcmFtYmxlZFB0ckJpdHM+KHB0cikgXiBrZXk7IH0K
LSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFUgZGVz
Y3JhbWJsZShTY3JhbWJsZWRQdHJCaXRzIHNjcmFtYmxlZEJpdHMpIHsgcmV0dXJuIGJpdHdpc2Vf
Y2FzdDxVPihzY3JhbWJsZWRCaXRzIF4ga2V5KTsgfQotI2Vsc2UKLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBVPgotICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFNjcmFtYmxlZFB0ckJpdHMgc2NyYW1i
bGUoVSBwdHIpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxTY3JhbWJsZWRQdHJCaXRzPihwdHIpOyB9
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBVIGRl
c2NyYW1ibGUoU2NyYW1ibGVkUHRyQml0cyBzY3JhbWJsZWRCaXRzKSB7IHJldHVybiBiaXR3aXNl
X2Nhc3Q8VT4oc2NyYW1ibGVkQml0cyk7IH0KLSNlbmRpZgotCi0gICAgU2NyYW1ibGVkUHRyQml0
cyBtX3NjcmFtYmxlZEJpdHMgeyAwIH07Ci19OwotCi12b2lkIGluaXRpYWxpemVTY3JhbWJsZWRQ
dHIoKTsKLVdURl9FWFBPUlRfUFJJVkFURSB1aW50cHRyX3QgbWFrZVNjcmFtYmxlZFB0cktleSgp
OwotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotdXNpbmcgV1RGOjpTY3JhbWJsZWRQdHI7Ci11c2lu
ZyBXVEY6OlNjcmFtYmxlZFB0ckJpdHM7Ci11c2luZyBXVEY6Om1ha2VTY3JhbWJsZWRQdHJLZXk7
Ci0K
</data>
<flag name="review"
          id="347833"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328669</attachid>
            <date>2017-12-06 17:53:57 -0800</date>
            <delta_ts>2017-12-06 19:37:46 -0800</delta_ts>
            <desc>patch for landing + cmake build fix.</desc>
            <filename>bug-180514.patch</filename>
            <type>text/plain</type>
            <size>77956</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjI1NjEzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY3IEBA
CisyMDE3LTEyLTA2ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZWZhY3RvcmluZzogUmVuYW1lIFNjcmFtYmxlZFB0ciB0byBQb2lzb25lZC4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDUxNAorCisgICAgICAgIFJl
dmlld2VkIGJ5IFNhYW0gQmFyYXRpLgorCisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3Qu
aDoKKyAgICAgICAgKiBBUEkvSlNPYmplY3RSZWYuY3BwOgorICAgICAgICAoY2xhc3NJbmZvUHJp
dmF0ZSk6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmLmg6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uUHRyOjpGdW5jdGlvblB0cik6
CisgICAgICAgIChKU0M6OkZ1bmN0aW9uUHRyOjp2YWx1ZSBjb25zdCk6CisgICAgICAgIChKU0M6
OkZ1bmN0aW9uUHRyOjpleGVjdXRhYmxlQWRkcmVzcyBjb25zdCk6CisgICAgICAgIChKU0M6OlJl
dHVybkFkZHJlc3NQdHI6OlJldHVybkFkZHJlc3NQdHIpOgorICAgICAgICAoSlNDOjpSZXR1cm5B
ZGRyZXNzUHRyOjp2YWx1ZSBjb25zdCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQ29k
ZVB0cjo6TWFjcm9Bc3NlbWJsZXJDb2RlUHRyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyOjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MpOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlckNvZGVQdHI6OnBvaXNvbmVkUHRyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjogY29uc3QpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
YmxlckNvZGVQdHI6Om9wZXJhdG9yISBjb25zdCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyQ29kZVB0cjo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyQ29kZVB0cjo6ZW1wdHlWYWx1ZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQ29k
ZVB0cjo6ZGVsZXRlZFZhbHVlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUHRy
OjpzY3JhbWJsZWRQdHIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGIzL0IzTG93ZXJNYWNy
b3MuY3BwOgorICAgICAgICAqIGIzL3Rlc3RiMy5jcHA6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0
SW50ZXJwcmV0ZXIpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNoZWNrQXJyYXkpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tTdWJDbGFzcyk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdTdHJpbmdPYmplY3QpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoSW50SnVtcCk6CisgICAgICAg
ICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVOZXdTdHJpbmdPYmplY3QpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2hlY2tTdWJDbGFzcyk6CisgICAgICAgICogaml0L0Fz
c2VtYmx5SGVscGVycy5oOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRBbGxv
Y2F0ZURlc3RydWN0aWJsZU9iamVjdCk6CisgICAgICAgICogaml0L1NwZWNpYWxpemVkVGh1bmtK
SVQuaDoKKyAgICAgICAgKEpTQzo6U3BlY2lhbGl6ZWRUaHVua0pJVDo6bG9hZEFyZ3VtZW50V2l0
aFNwZWNpZmljQ2xhc3MpOgorICAgICAgICAqIGppdC9UaHVua0dlbmVyYXRvcnMuY3BwOgorICAg
ICAgICAoSlNDOjp2aXJ0dWFsVGh1bmtGb3IpOgorICAgICAgICAoSlNDOjpib3VuZFRoaXNOb0Fy
Z3NGdW5jdGlvbkNhbGxHZW5lcmF0b3IpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhz
LmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OmhhbmRsZUhvc3RDYWxsKToKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OnNldFVwQ2FsbCk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjY0LmFzbToKKyAgICAgICAgKiBydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwOgorICAg
ICAgICAoSlNDOjppbml0aWFsaXplVGhyZWFkaW5nKToKKyAgICAgICAgKiBydW50aW1lL0pTQ1Bv
aXNvbmVkUHRyLmNwcDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDU2NyYW1ibGVkUHRyLmNwcC4KKyAgICAgICAgKEpTQzo6aW5pdGlhbGl6ZVBvaXNvbik6Cisg
ICAgICAgIChKU0M6OmluaXRpYWxpemVTY3JhbWJsZWRQdHJLZXlzKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBydW50aW1lL0pTQ1BvaXNvbmVkUHRyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ1NjcmFtYmxlZFB0ci5oLgorICAgICAgICAqIHJ1bnRpbWUvSlND
U2NyYW1ibGVkUHRyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBydW50aW1lL0pTQ1NjcmFtYmxl
ZFB0ci5oOiBSZW1vdmVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNEZXN0cnVjdGlibGVPYmplY3Qu
aDoKKyAgICAgICAgKEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Q6OmNsYXNzSW5mbyBjb25zdCk6
CisgICAgICAgICogcnVudGltZS9KU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0Lmg6CisgICAgICAg
IChKU0M6OkpTU2VnbWVudGVkVmFyaWFibGVPYmplY3Q6OmNsYXNzSW5mbyBjb25zdCk6CisgICAg
ICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisKIDIw
MTctMTItMDYgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgQVNT
RVJUSU9OIEZBSUxFRDogdm0tPmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkgaW4gdm9p
ZCBKU0M6OnNhbml0aXplU3RhY2tGb3JWTShKU0M6OlZNICopCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NvdXJjZXMudHh0CShyZXZpc2lvbiAyMjU2MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
U291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTc3Miw3ICs3NzIsNyBAQCBydW50aW1lL0pT
QXN5bmNGdW5jdGlvbi5jcHAKIHJ1bnRpbWUvSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uLmNwcAog
cnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCiBydW50aW1lL0pTQ0pTVmFsdWUuY3BwCi1ydW50
aW1lL0pTQ1NjcmFtYmxlZFB0ci5jcHAKK3J1bnRpbWUvSlNDUG9pc29uZWRQdHIuY3BwCiBydW50
aW1lL0pTQ2FsbGVlLmNwcAogcnVudGltZS9KU0NlbGwuY3BwCiBydW50aW1lL0pTQ3VzdG9tR2V0
dGVyU2V0dGVyRnVuY3Rpb24uY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
Q2FsbGJhY2tPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ2FsbGJhY2tPYmplY3QuaAkocmV2aXNpb24gMjI1NjEzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3
LDcgQEAKICNpZm5kZWYgSlNDYWxsYmFja09iamVjdF9oCiAjZGVmaW5lIEpTQ2FsbGJhY2tPYmpl
Y3RfaAogCi0jaW5jbHVkZSAiSlNDU2NyYW1ibGVkUHRyLmgiCisjaW5jbHVkZSAiSlNDUG9pc29u
ZWRQdHIuaCIKICNpbmNsdWRlICJKU09iamVjdFJlZi5oIgogI2luY2x1ZGUgIkpTVmFsdWVSZWYu
aCIKICNpbmNsdWRlICJKU09iamVjdC5oIgpAQCAtMjM0LDcgKzIzNCw3IEBAIHByaXZhdGU6CiAg
ICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIGNhbGxiYWNrR2V0dGVyKEV4ZWNTdGF0ZSosIEVuY29k
ZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEpTQ2FsbGJh
Y2tPYmplY3REYXRhPiBtX2NhbGxiYWNrT2JqZWN0RGF0YTsKLSAgICBDbGFzc0luZm9TY3JhbWJs
ZWRQdHIgbV9jbGFzc0luZm87CisgICAgUG9pc29uZWRDbGFzc0luZm9QdHIgbV9jbGFzc0luZm87
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNPYmplY3RSZWYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNPYmplY3RSZWYuY3BwCShyZXZpc2lvbiAyMjU2MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMxLDcgKzQzMSw3
IEBAIHN0YXRpYyBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mb1ByaXZhdGUKICAgICBpZiAodm0u
Y3VycmVudGx5RGVzdHJ1Y3RpbmdDYWxsYmFja09iamVjdCAhPSBqc09iamVjdCkKICAgICAgICAg
cmV0dXJuIGpzT2JqZWN0LT5jbGFzc0luZm8odm0pOwogCi0gICAgcmV0dXJuIHZtLmN1cnJlbnRs
eURlc3RydWN0aW5nQ2FsbGJhY2tPYmplY3RDbGFzc0luZm8uZGVzY3JhbWJsZWQoKTsKKyAgICBy
ZXR1cm4gdm0uY3VycmVudGx5RGVzdHJ1Y3RpbmdDYWxsYmFja09iamVjdENsYXNzSW5mby51bnBv
aXNvbmVkKCk7CiB9CiAKIHZvaWQqIEpTT2JqZWN0R2V0UHJpdmF0ZShKU09iamVjdFJlZiBvYmpl
Y3QpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjI1NjEzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE3MjAsNyArMTcyMCw3IEBACiAJCUZFMUMwRkZE
MUIxOTNFOTgwMEI1M0ZDQSAvKiBFeGNlcHRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMUMwRkZDMUIxOTNFOTgwMEI1M0ZDQSAvKiBFeGNlcHRp
b24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlG
RTIwQ0U5RTE1RjA0QTk1MDBERjM0MzAgLyogTExJbnRDTG9vcC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUyMENFOUMxNUYwNEE5NTAwREYzNDMwIC8q
IExMSW50Q0xvb3AuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlGRTJBODc2MDFGMDIzODE2MDBFQjMxQjIgLyogTWluaW11bVJlc2VydmVkWm9uZVNp
emUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMkE4
NzVGMUYwMjM4MTYwMEVCMzFCMiAvKiBNaW5pbXVtUmVzZXJ2ZWRab25lU2l6ZS5oICovOyB9Owot
CQlGRTJCMEI2OTFGRDIyN0UwMDA3NURBNUYgLyogSlNDU2NyYW1ibGVkUHRyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTJCMEI2NzFGRDBEMjk2MDA3
NURBNUYgLyogSlNDU2NyYW1ibGVkUHRyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkUyQjBCNjkxRkQyMjdFMDAwNzVEQTVGIC8qIEpTQ1BvaXNv
bmVkUHRyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RTJCMEI2NzFGRDBEMjk2MDA3NURBNUYgLyogSlNDUG9pc29uZWRQdHIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTMwMjJEMzFFM0Q3M0E1MDBC
QUM0OTMgLyogU2lnaWxsQ3Jhc2hBbmFseXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzMDIyRDExRTNENzM5NjAwQkFDNDkzIC8qIFNpZ2lsbENy
YXNoQW5hbHl6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlGRTMwMjJENzFFNDI4NTczMDBCQUM0OTMgLyogVk1JbnNwZWN0b3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzAyMkQ1MUU0Mjg1Njcw
MEJBQzQ5MyAvKiBWTUluc3BlY3Rvci5oICovOyB9OwogCQlGRTMxOEZFMDFDQUM5ODJGMDBERkND
NTQgLyogRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzMThGREUxQ0FDOEM1MzAwREZDQzU0IC8q
IEVDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuaCAqLzsgfTsKQEAgLTQ1OTgsOCArNDU5
OCw4IEBACiAJCUZFMjBDRTlCMTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENMb29wLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50Q0xvb3AuY3BwOyBwYXRoID0g
bGxpbnQvTExJbnRDTG9vcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMjBD
RTlDMTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENMb29wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IExMSW50Q0xvb3AuaDsgcGF0aCA9IGxsaW50L0xMSW50Q0xvb3AuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUyQTg3NUYxRjAyMzgxNjAwRUIzMUIyIC8qIE1p
bmltdW1SZXNlcnZlZFpvbmVTaXplLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1pbmltdW1SZXNlcnZlZFpv
bmVTaXplLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUZFMkIwQjY3MUZEMEQyOTYw
MDc1REE1RiAvKiBKU0NTY3JhbWJsZWRQdHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNDU2NyYW1ibGVkUHRyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUZF
MkIwQjY4MUZEMEQyOTcwMDc1REE1RiAvKiBKU0NTY3JhbWJsZWRQdHIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDU2NyYW1ibGVkUHRyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkUyQjBCNjcxRkQwRDI5NjAwNzVEQTVGIC8qIEpTQ1BvaXNv
bmVkUHRyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ1BvaXNvbmVkUHRy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMkIwQjY4MUZEMEQyOTcwMDc1REE1
RiAvKiBKU0NQb2lzb25lZFB0ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU0NQb2lzb25lZFB0ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZF
MkU2QTdBMUQ2RUE1RkUwMDYwRjg5NiAvKiBUaHJvd1Njb3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRocm93U2NvcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGRTMwMjJEMDFFM0Q3Mzk2MDBCQUM0OTMgLyogU2lnaWxsQ3Jhc2hBbmFseXpl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaWdpbGxDcmFzaEFu
YWx5emVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUzMDIyRDExRTNENzM5
NjAwQkFDNDkzIC8qIFNpZ2lsbENyYXNoQW5hbHl6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU2lnaWxsQ3Jhc2hBbmFseXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNjU0Myw4ICs2NTQzLDggQEAKIAkJCQlGNjkyQTg4NzAyNTU1OTdEMDFGRjYwRjcg
LyogSlNDSlNWYWx1ZS5jcHAgKi8sCiAJCQkJMTRBQkIzNkUwOTlDMDc2NDAwRTJBMjRGIC8qIEpT
Q0pTVmFsdWUuaCAqLywKIAkJCQk4NjVBMzBGMDEzNTAwN0UxMDBDREI0OUUgLyogSlNDSlNWYWx1
ZUlubGluZXMuaCAqLywKLQkJCQlGRTJCMEI2ODFGRDBEMjk3MDA3NURBNUYgLyogSlNDU2NyYW1i
bGVkUHRyLmNwcCAqLywKLQkJCQlGRTJCMEI2NzFGRDBEMjk2MDA3NURBNUYgLyogSlNDU2NyYW1i
bGVkUHRyLmggKi8sCisJCQkJRkUyQjBCNjgxRkQwRDI5NzAwNzVEQTVGIC8qIEpTQ1BvaXNvbmVk
UHRyLmNwcCAqLywKKwkJCQlGRTJCMEI2NzFGRDBEMjk2MDA3NURBNUYgLyogSlNDUG9pc29uZWRQ
dHIuaCAqLywKIAkJCQk3MkFBRjdDQjFEMEQzMThCMDA1RTYwQkUgLyogSlNDdXN0b21HZXR0ZXJT
ZXR0ZXJGdW5jdGlvbi5jcHAgKi8sCiAJCQkJNzJBQUY3Q0MxRDBEMzE4QjAwNUU2MEJFIC8qIEpT
Q3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uaCAqLywKIAkJCQkwRjJCNjZCRDE3QjZCNUFCMDBB
N0FFM0YgLyogSlNEYXRhVmlldy5jcHAgKi8sCkBAIC04MTU1LDcgKzgxNTUsNyBAQAogCQkJCTBG
RUM4NTJBMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1BoYXNlU2NvcGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGMzczMDhEMUMwQkQyOTEwMDA1MkJGQSAvKiBCM1BoaUNoaWxkcmVuLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkVDODUyQzFCREFDREFDMDA4MEZGNzQgLyogQjNQcm9jZWR1cmUuaCBpbiBI
ZWFkZXJzICovLAotCQkJCUZFMkIwQjY5MUZEMjI3RTAwMDc1REE1RiAvKiBKU0NTY3JhbWJsZWRQ
dHIuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFMkIwQjY5MUZEMjI3RTAwMDc1REE1RiAvKiBKU0NQ
b2lzb25lZFB0ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1MkQxQkRBQ0RBQzAwODBGRjc0
IC8qIEIzUHJvY2VkdXJlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3MjVDQUExQzUw
M0RFRDAwQUQ5NDNBIC8qIEIzUHVyZUNTRS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDM0MjJBNjcx
QzE2MjY3ODAwRTJFQjk4IC8qIEIzUmVkdWNlRG91YmxlVG9GbG9hdC5oIGluIEhlYWRlcnMgKi8s
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29k
ZVJlZi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmLmgJKHJldmlzaW9uIDIyNTYxMykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDcgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRXhlY3V0YWJsZUFs
bG9jYXRvci5oIgotI2luY2x1ZGUgIkpTQ1NjcmFtYmxlZFB0ci5oIgorI2luY2x1ZGUgIkpTQ1Bv
aXNvbmVkUHRyLmgiCiAjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KICNpbmNsdWRlIDx3dGYvUHJp
bnRTdHJlYW0uaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC02Nyw3ICs2Nyw3IEBAIHB1
YmxpYzoKICAgICBGdW5jdGlvblB0cihyZXR1cm5UeXBlKCp2YWx1ZSkoKSkKICAgICAgICAgOiBt
X3ZhbHVlKCh2b2lkKil2YWx1ZSkKICAgICB7Ci0gICAgICAgIE1hc21TY3JhbWJsZWRQdHI6OmFz
c2VydElzTm90U2NyYW1ibGVkKG1fdmFsdWUpOworICAgICAgICBQb2lzb25lZE1hc21QdHI6OmFz
c2VydElzTm90UG9pc29uZWQobV92YWx1ZSk7CiAgICAgICAgIEFTU0VSVF9WQUxJRF9DT0RFX1BP
SU5URVIobV92YWx1ZSk7CiAgICAgfQogCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICBG
dW5jdGlvblB0cihyZXR1cm5UeXBlKCp2YWx1ZSkoYXJnVHlwZTEpKQogICAgICAgICA6IG1fdmFs
dWUoKHZvaWQqKXZhbHVlKQogICAgIHsKLSAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6YXNzZXJ0
SXNOb3RTY3JhbWJsZWQobV92YWx1ZSk7CisgICAgICAgIFBvaXNvbmVkTWFzbVB0cjo6YXNzZXJ0
SXNOb3RQb2lzb25lZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRF
UihtX3ZhbHVlKTsKICAgICB9CiAKQEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogICAgIEZ1bmN0
aW9uUHRyKHJldHVyblR5cGUoKnZhbHVlKShhcmdUeXBlMSwgYXJnVHlwZTIpKQogICAgICAgICA6
IG1fdmFsdWUoKHZvaWQqKXZhbHVlKQogICAgIHsKLSAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6
YXNzZXJ0SXNOb3RTY3JhbWJsZWQobV92YWx1ZSk7CisgICAgICAgIFBvaXNvbmVkTWFzbVB0cjo6
YXNzZXJ0SXNOb3RQb2lzb25lZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVf
UE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CiAKQEAgLTkxLDcgKzkxLDcgQEAgcHVibGljOgogICAg
IEZ1bmN0aW9uUHRyKHJldHVyblR5cGUoKnZhbHVlKShhcmdUeXBlMSwgYXJnVHlwZTIsIGFyZ1R5
cGUzKSkKICAgICAgICAgOiBtX3ZhbHVlKCh2b2lkKil2YWx1ZSkKICAgICB7Ci0gICAgICAgIE1h
c21TY3JhbWJsZWRQdHI6OmFzc2VydElzTm90U2NyYW1ibGVkKG1fdmFsdWUpOworICAgICAgICBQ
b2lzb25lZE1hc21QdHI6OmFzc2VydElzTm90UG9pc29uZWQobV92YWx1ZSk7CiAgICAgICAgIEFT
U0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7CiAgICAgfQogCkBAIC05OSw3ICs5OSw3
IEBAIHB1YmxpYzoKICAgICBGdW5jdGlvblB0cihyZXR1cm5UeXBlKCp2YWx1ZSkoYXJnVHlwZTEs
IGFyZ1R5cGUyLCBhcmdUeXBlMywgYXJnVHlwZTQpKQogICAgICAgICA6IG1fdmFsdWUoKHZvaWQq
KXZhbHVlKQogICAgIHsKLSAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6YXNzZXJ0SXNOb3RTY3Jh
bWJsZWQobV92YWx1ZSk7CisgICAgICAgIFBvaXNvbmVkTWFzbVB0cjo6YXNzZXJ0SXNOb3RQb2lz
b25lZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVl
KTsKICAgICB9CiAKQEAgLTEwNyw3ICsxMDcsNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rpb25QdHIo
cmV0dXJuVHlwZSgqdmFsdWUpKGFyZ1R5cGUxLCBhcmdUeXBlMiwgYXJnVHlwZTMsIGFyZ1R5cGU0
LCBhcmdUeXBlNSkpCiAgICAgICAgIDogbV92YWx1ZSgodm9pZCopdmFsdWUpCiAgICAgewotICAg
ICAgICBNYXNtU2NyYW1ibGVkUHRyOjphc3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsKKyAg
ICAgICAgUG9pc29uZWRNYXNtUHRyOjphc3NlcnRJc05vdFBvaXNvbmVkKG1fdmFsdWUpOwogICAg
ICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwogICAgIH0KIApAQCAtMTE1
LDcgKzExNSw3IEBAIHB1YmxpYzoKICAgICBGdW5jdGlvblB0cihyZXR1cm5UeXBlKCp2YWx1ZSko
YXJnVHlwZTEsIGFyZ1R5cGUyLCBhcmdUeXBlMywgYXJnVHlwZTQsIGFyZ1R5cGU1LCBhcmdUeXBl
NikpCiAgICAgICAgIDogbV92YWx1ZSgodm9pZCopdmFsdWUpCiAgICAgewotICAgICAgICBNYXNt
U2NyYW1ibGVkUHRyOjphc3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsKKyAgICAgICAgUG9p
c29uZWRNYXNtUHRyOjphc3NlcnRJc05vdFBvaXNvbmVkKG1fdmFsdWUpOwogICAgICAgICBBU1NF
UlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwogICAgIH0KIC8vIE1TVkMgZG9lc24ndCBz
ZWVtIHRvIHRyZWF0IGZ1bmN0aW9ucyB3aXRoIGRpZmZlcmVudCBjYWxsaW5nIGNvbnZlbnRpb25z
IGFzCkBAIC0xMjYsNyArMTI2LDcgQEAgcHVibGljOgogICAgIEZ1bmN0aW9uUHRyKHJldHVyblR5
cGUgKENERUNMICp2YWx1ZSkoKSkKICAgICAgICAgOiBtX3ZhbHVlKCh2b2lkKil2YWx1ZSkKICAg
ICB7Ci0gICAgICAgIE1hc21TY3JhbWJsZWRQdHI6OmFzc2VydElzTm90U2NyYW1ibGVkKG1fdmFs
dWUpOworICAgICAgICBQb2lzb25lZE1hc21QdHI6OmFzc2VydElzTm90UG9pc29uZWQobV92YWx1
ZSk7CiAgICAgICAgIEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7CiAgICAgfQog
CkBAIC0xMzQsNyArMTM0LDcgQEAgcHVibGljOgogICAgIEZ1bmN0aW9uUHRyKHJldHVyblR5cGUg
KENERUNMICp2YWx1ZSkoYXJnVHlwZTEpKQogICAgICAgICA6IG1fdmFsdWUoKHZvaWQqKXZhbHVl
KQogICAgIHsKLSAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6YXNzZXJ0SXNOb3RTY3JhbWJsZWQo
bV92YWx1ZSk7CisgICAgICAgIFBvaXNvbmVkTWFzbVB0cjo6YXNzZXJ0SXNOb3RQb2lzb25lZCht
X3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVlKTsKICAg
ICB9CiAKQEAgLTE0Miw3ICsxNDIsNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rpb25QdHIocmV0dXJu
VHlwZSAoQ0RFQ0wgKnZhbHVlKShhcmdUeXBlMSwgYXJnVHlwZTIpKQogICAgICAgICA6IG1fdmFs
dWUoKHZvaWQqKXZhbHVlKQogICAgIHsKLSAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6YXNzZXJ0
SXNOb3RTY3JhbWJsZWQobV92YWx1ZSk7CisgICAgICAgIFBvaXNvbmVkTWFzbVB0cjo6YXNzZXJ0
SXNOb3RQb2lzb25lZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRF
UihtX3ZhbHVlKTsKICAgICB9CiAKQEAgLTE1MCw3ICsxNTAsNyBAQCBwdWJsaWM6CiAgICAgRnVu
Y3Rpb25QdHIocmV0dXJuVHlwZSAoQ0RFQ0wgKnZhbHVlKShhcmdUeXBlMSwgYXJnVHlwZTIsIGFy
Z1R5cGUzKSkKICAgICAgICAgOiBtX3ZhbHVlKCh2b2lkKil2YWx1ZSkKICAgICB7Ci0gICAgICAg
IE1hc21TY3JhbWJsZWRQdHI6OmFzc2VydElzTm90U2NyYW1ibGVkKG1fdmFsdWUpOworICAgICAg
ICBQb2lzb25lZE1hc21QdHI6OmFzc2VydElzTm90UG9pc29uZWQobV92YWx1ZSk7CiAgICAgICAg
IEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7CiAgICAgfQogCkBAIC0xNTgsNyAr
MTU4LDcgQEAgcHVibGljOgogICAgIEZ1bmN0aW9uUHRyKHJldHVyblR5cGUgKENERUNMICp2YWx1
ZSkoYXJnVHlwZTEsIGFyZ1R5cGUyLCBhcmdUeXBlMywgYXJnVHlwZTQpKQogICAgICAgICA6IG1f
dmFsdWUoKHZvaWQqKXZhbHVlKQogICAgIHsKLSAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6YXNz
ZXJ0SXNOb3RTY3JhbWJsZWQobV92YWx1ZSk7CisgICAgICAgIFBvaXNvbmVkTWFzbVB0cjo6YXNz
ZXJ0SXNOb3RQb2lzb25lZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9J
TlRFUihtX3ZhbHVlKTsKICAgICB9CiAjZW5kaWYKQEAgLTE2OSw3ICsxNjksNyBAQCBwdWJsaWM6
CiAgICAgRnVuY3Rpb25QdHIocmV0dXJuVHlwZSAoRkFTVENBTEwgKnZhbHVlKSgpKQogICAgICAg
ICA6IG1fdmFsdWUoKHZvaWQqKXZhbHVlKQogICAgIHsKLSAgICAgICAgTWFzbVNjcmFtYmxlZFB0
cjo6YXNzZXJ0SXNOb3RTY3JhbWJsZWQobV92YWx1ZSk7CisgICAgICAgIFBvaXNvbmVkTWFzbVB0
cjo6YXNzZXJ0SXNOb3RQb2lzb25lZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NP
REVfUE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CiAKQEAgLTE3Nyw3ICsxNzcsNyBAQCBwdWJsaWM6
CiAgICAgRnVuY3Rpb25QdHIocmV0dXJuVHlwZSAoRkFTVENBTEwgKnZhbHVlKShhcmdUeXBlMSkp
CiAgICAgICAgIDogbV92YWx1ZSgodm9pZCopdmFsdWUpCiAgICAgewotICAgICAgICBNYXNtU2Ny
YW1ibGVkUHRyOjphc3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsKKyAgICAgICAgUG9pc29u
ZWRNYXNtUHRyOjphc3NlcnRJc05vdFBvaXNvbmVkKG1fdmFsdWUpOwogICAgICAgICBBU1NFUlRf
VkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwogICAgIH0KIApAQCAtMTg1LDcgKzE4NSw3IEBA
IHB1YmxpYzoKICAgICBGdW5jdGlvblB0cihyZXR1cm5UeXBlIChGQVNUQ0FMTCAqdmFsdWUpKGFy
Z1R5cGUxLCBhcmdUeXBlMikpCiAgICAgICAgIDogbV92YWx1ZSgodm9pZCopdmFsdWUpCiAgICAg
ewotICAgICAgICBNYXNtU2NyYW1ibGVkUHRyOjphc3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVl
KTsKKyAgICAgICAgUG9pc29uZWRNYXNtUHRyOjphc3NlcnRJc05vdFBvaXNvbmVkKG1fdmFsdWUp
OwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwogICAgIH0KIApA
QCAtMTkzLDcgKzE5Myw3IEBAIHB1YmxpYzoKICAgICBGdW5jdGlvblB0cihyZXR1cm5UeXBlIChG
QVNUQ0FMTCAqdmFsdWUpKGFyZ1R5cGUxLCBhcmdUeXBlMiwgYXJnVHlwZTMpKQogICAgICAgICA6
IG1fdmFsdWUoKHZvaWQqKXZhbHVlKQogICAgIHsKLSAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6
YXNzZXJ0SXNOb3RTY3JhbWJsZWQobV92YWx1ZSk7CisgICAgICAgIFBvaXNvbmVkTWFzbVB0cjo6
YXNzZXJ0SXNOb3RQb2lzb25lZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVf
UE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CiAKQEAgLTIwMSw3ICsyMDEsNyBAQCBwdWJsaWM6CiAg
ICAgRnVuY3Rpb25QdHIocmV0dXJuVHlwZSAoRkFTVENBTEwgKnZhbHVlKShhcmdUeXBlMSwgYXJn
VHlwZTIsIGFyZ1R5cGUzLCBhcmdUeXBlNCkpCiAgICAgICAgIDogbV92YWx1ZSgodm9pZCopdmFs
dWUpCiAgICAgewotICAgICAgICBNYXNtU2NyYW1ibGVkUHRyOjphc3NlcnRJc05vdFNjcmFtYmxl
ZChtX3ZhbHVlKTsKKyAgICAgICAgUG9pc29uZWRNYXNtUHRyOjphc3NlcnRJc05vdFBvaXNvbmVk
KG1fdmFsdWUpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwog
ICAgIH0KICNlbmRpZgpAQCAtMjEzLDcgKzIxMyw3IEBAIHB1YmxpYzoKICAgICAgICAgLy8gKEkg
Z3Vlc3Mgb24gUlZUQyBmdW5jdGlvbiBwb2ludGVycyBoYXZlIGEgZGlmZmVyZW50IGNvbnN0bmVz
cyB0byBHQ0MvTVNWQz8pCiAgICAgICAgIDogbV92YWx1ZSgodm9pZCopdmFsdWUpCiAgICAgewot
ICAgICAgICBNYXNtU2NyYW1ibGVkUHRyOjphc3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsK
KyAgICAgICAgUG9pc29uZWRNYXNtUHRyOjphc3NlcnRJc05vdFBvaXNvbmVkKG1fdmFsdWUpOwog
ICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwogICAgIH0KIApAQCAt
MjIxLDEyICsyMjEsMTIgQEAgcHVibGljOgogCiAgICAgdm9pZCogdmFsdWUoKSBjb25zdAogICAg
IHsKLSAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6YXNzZXJ0SXNOb3RTY3JhbWJsZWQobV92YWx1
ZSk7CisgICAgICAgIFBvaXNvbmVkTWFzbVB0cjo6YXNzZXJ0SXNOb3RQb2lzb25lZChtX3ZhbHVl
KTsKICAgICAgICAgcmV0dXJuIG1fdmFsdWU7CiAgICAgfQogICAgIHZvaWQqIGV4ZWN1dGFibGVB
ZGRyZXNzKCkgY29uc3QKICAgICB7Ci0gICAgICAgIE1hc21TY3JhbWJsZWRQdHI6OmFzc2VydElz
Tm90U2NyYW1ibGVkKG1fdmFsdWUpOworICAgICAgICBQb2lzb25lZE1hc21QdHI6OmFzc2VydElz
Tm90UG9pc29uZWQobV92YWx1ZSk7CiAgICAgICAgIHJldHVybiBtX3ZhbHVlOwogICAgIH0KIApA
QCAtMjQ3LDIwICsyNDcsMjAgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFJldHVybkFkZHJlc3NQ
dHIodm9pZCogdmFsdWUpCiAgICAgICAgIDogbV92YWx1ZSh2YWx1ZSkKICAgICB7Ci0gICAgICAg
IE1hc21TY3JhbWJsZWRQdHI6OmFzc2VydElzTm90U2NyYW1ibGVkKG1fdmFsdWUpOworICAgICAg
ICBQb2lzb25lZE1hc21QdHI6OmFzc2VydElzTm90UG9pc29uZWQobV92YWx1ZSk7CiAgICAgICAg
IEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7CiAgICAgfQogCiAgICAgZXhwbGlj
aXQgUmV0dXJuQWRkcmVzc1B0cihGdW5jdGlvblB0ciBmdW5jdGlvbikKICAgICAgICAgOiBtX3Zh
bHVlKGZ1bmN0aW9uLnZhbHVlKCkpCiAgICAgewotICAgICAgICBNYXNtU2NyYW1ibGVkUHRyOjph
c3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsKKyAgICAgICAgUG9pc29uZWRNYXNtUHRyOjph
c3NlcnRJc05vdFBvaXNvbmVkKG1fdmFsdWUpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9Q
T0lOVEVSKG1fdmFsdWUpOwogICAgIH0KIAogICAgIHZvaWQqIHZhbHVlKCkgY29uc3QKICAgICB7
Ci0gICAgICAgIE1hc21TY3JhbWJsZWRQdHI6OmFzc2VydElzTm90U2NyYW1ibGVkKG1fdmFsdWUp
OworICAgICAgICBQb2lzb25lZE1hc21QdHI6OmFzc2VydElzTm90UG9pc29uZWQobV92YWx1ZSk7
CiAgICAgICAgIHJldHVybiBtX3ZhbHVlOwogICAgIH0KICAgICAKQEAgLTI4OCw3ICsyODgsNyBA
QCBwdWJsaWM6CiAgICAgICAgIDogbV92YWx1ZSh2YWx1ZSkKICNlbmRpZgogICAgIHsKLSAgICAg
ICAgbV92YWx1ZS5hc3NlcnRJc1NjcmFtYmxlZCgpOworICAgICAgICBtX3ZhbHVlLmFzc2VydElz
UG9pc29uZWQoKTsKICAgICAgICAgQVNTRVJUKHZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElE
X0NPREVfUE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CkBAIC0yOTgsOCArMjk4LDggQEAgcHVibGlj
OgogICAgICAgICBBU1NFUlQodmFsdWUpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lO
VEVSKHZhbHVlKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHJlc3VsdDsKLSAgICAg
ICAgcmVzdWx0Lm1fdmFsdWUgPSBNYXNtU2NyYW1ibGVkUHRyKHZhbHVlKTsKLSAgICAgICAgcmVz
dWx0Lm1fdmFsdWUuYXNzZXJ0SXNTY3JhbWJsZWQoKTsKKyAgICAgICAgcmVzdWx0Lm1fdmFsdWUg
PSBQb2lzb25lZE1hc21QdHIodmFsdWUpOworICAgICAgICByZXN1bHQubV92YWx1ZS5hc3NlcnRJ
c1BvaXNvbmVkKCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCkBAIC0zMDksNDIg
KzMwOSw0MiBAQCBwdWJsaWM6CiAgICAgICAgIDogbV92YWx1ZShyYS52YWx1ZSgpKQogICAgIHsK
ICAgICAgICAgQVNTRVJUKHJhLnZhbHVlKCkpOwotICAgICAgICBtX3ZhbHVlLmFzc2VydElzU2Ny
YW1ibGVkKCk7CisgICAgICAgIG1fdmFsdWUuYXNzZXJ0SXNQb2lzb25lZCgpOwogICAgICAgICBB
U1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwogICAgIH0KIAotICAgIE1hc21TY3Jh
bWJsZWRQdHIgc2NyYW1ibGVkUHRyKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQorICAgIFBv
aXNvbmVkTWFzbVB0ciBwb2lzb25lZFB0cigpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQgPSB2b2lkKj4KICAgICBUIGV4ZWN1dGFibGVBZGRyZXNz
KCkgY29uc3QKICAgICB7Ci0gICAgICAgIG1fdmFsdWUuYXNzZXJ0SXNTY3JhbWJsZWQoKTsKLSAg
ICAgICAgcmV0dXJuIG1fdmFsdWUgPyBtX3ZhbHVlLmRlc2NyYW1ibGVkPFQ+KCkgOiBzdGF0aWNf
Y2FzdDxUPigwKTsKKyAgICAgICAgbV92YWx1ZS5hc3NlcnRJc1BvaXNvbmVkKCk7CisgICAgICAg
IHJldHVybiBtX3ZhbHVlLnVucG9pc29uZWQ8VD4oKTsKICAgICB9CiAjaWYgQ1BVKEFSTV9USFVN
QjIpCiAgICAgLy8gVG8gdXNlIHRoaXMgcG9pbnRlciBhcyBhIGRhdGEgYWRkcmVzcyByZW1vdmUg
dGhlIGRlY29yYXRpb24uCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCA9IHZvaWQqPgogICAgIFQg
ZGF0YUxvY2F0aW9uKCkgY29uc3QKICAgICB7Ci0gICAgICAgIG1fdmFsdWUuYXNzZXJ0SXNTY3Jh
bWJsZWQoKTsKKyAgICAgICAgbV92YWx1ZS5hc3NlcnRJc1BvaXNvbmVkKCk7CiAgICAgICAgIEFT
U0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7Ci0gICAgICAgIHJldHVybiBiaXR3aXNl
X2Nhc3Q8VD4obV92YWx1ZSA/IG1fdmFsdWUuZGVzY3JhbWJsZWQ8Y2hhcio+KCkgLSAxIDogbnVs
bHB0cik7CisgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8VD4obV92YWx1ZSA/IG1fdmFsdWUu
dW5wb2lzb25lZDxjaGFyKj4oKSAtIDEgOiBudWxscHRyKTsKICAgICB9CiAjZWxzZQogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQgPSB2b2lkKj4KICAgICBUIGRhdGFMb2NhdGlvbigpIGNvbnN0CiAg
ICAgewotICAgICAgICBtX3ZhbHVlLmFzc2VydElzU2NyYW1ibGVkKCk7CisgICAgICAgIG1fdmFs
dWUuYXNzZXJ0SXNQb2lzb25lZCgpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVS
KG1fdmFsdWUpOwotICAgICAgICByZXR1cm4gbV92YWx1ZSA/IG1fdmFsdWUuZGVzY3JhbWJsZWQ8
VD4oKSA6IHN0YXRpY19jYXN0PFQ+KDApOworICAgICAgICByZXR1cm4gbV92YWx1ZS51bnBvaXNv
bmVkPFQ+KCk7CiAgICAgfQogI2VuZGlmCiAKICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0CiAg
ICAgewotI2lmIEVOQUJMRShTQ1JBTUJMRURfUFRSX0FTU0VSVFMpCisjaWYgRU5BQkxFKFBPSVNP
Tl9BU1NFUlRTKQogICAgICAgICBpZiAoIWlzRW1wdHlWYWx1ZSgpICYmICFpc0RlbGV0ZWRWYWx1
ZSgpKQotICAgICAgICAgICAgbV92YWx1ZS5hc3NlcnRJc1NjcmFtYmxlZCgpOworICAgICAgICAg
ICAgbV92YWx1ZS5hc3NlcnRJc1BvaXNvbmVkKCk7CiAjZW5kaWYKICAgICAgICAgcmV0dXJuICFt
X3ZhbHVlOwogICAgIH0KQEAgLTM1MiwxNyArMzUyLDE3IEBAIHB1YmxpYzoKICAgICAKICAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBvdGhlcikgY29uc3QK
ICAgICB7Ci0jaWYgRU5BQkxFKFNDUkFNQkxFRF9QVFJfQVNTRVJUUykKKyNpZiBFTkFCTEUoUE9J
U09OX0FTU0VSVFMpCiAgICAgICAgIGlmICghaXNFbXB0eVZhbHVlKCkgJiYgIWlzRGVsZXRlZFZh
bHVlKCkpCi0gICAgICAgICAgICBtX3ZhbHVlLmFzc2VydElzU2NyYW1ibGVkKCk7CisgICAgICAg
ICAgICBtX3ZhbHVlLmFzc2VydElzUG9pc29uZWQoKTsKICAgICAgICAgaWYgKCFvdGhlci5pc0Vt
cHR5VmFsdWUoKSAmJiAhb3RoZXIuaXNEZWxldGVkVmFsdWUoKSkKLSAgICAgICAgICAgIG90aGVy
Lm1fdmFsdWUuYXNzZXJ0SXNTY3JhbWJsZWQoKTsKKyAgICAgICAgICAgIG90aGVyLm1fdmFsdWUu
YXNzZXJ0SXNQb2lzb25lZCgpOwogI2VuZGlmCiAgICAgICAgIHJldHVybiBtX3ZhbHVlID09IG90
aGVyLm1fdmFsdWU7CiAgICAgfQogCiAgICAgLy8gRGlzYWxsb3cgYW55IGNhc3Rpbmcgb3BlcmF0
aW9ucyAoZXhjZXB0IGZvciBib29sZWFucykuIEluc3RlYWQsIHRoZSBjbGllbnQKLSAgICAvLyBz
aG91bGQgYmUgYXNraW5nIGZvciBzY3JhbWJsZWRQdHIoKSBvciBleGVjdXRhYmxlQWRkcmVzcygp
IGV4cGxpY2l0bHkuCisgICAgLy8gc2hvdWxkIGJlIGFza2luZyBmb3IgcG9pc29uZWRQdHIoKSBv
ciBleGVjdXRhYmxlQWRkcmVzcygpIGV4cGxpY2l0bHkuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6OmlzX3NhbWU8VCwgYm9vbD46OnZh
bHVlPj4KICAgICBvcGVyYXRvciBUKCkgPSBkZWxldGU7CiAKQEAgLTM4OSwxMCArMzg5LDEwIEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCk7CiAKIHByaXZhdGU6Ci0gICAg
c3RhdGljIE1hc21TY3JhbWJsZWRQdHIgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIE1hc21TY3JhbWJs
ZWRQdHIoMSk7IH0KLSAgICBzdGF0aWMgTWFzbVNjcmFtYmxlZFB0ciBkZWxldGVkVmFsdWUoKSB7
IHJldHVybiBNYXNtU2NyYW1ibGVkUHRyKDIpOyB9CisgICAgc3RhdGljIFBvaXNvbmVkTWFzbVB0
ciBlbXB0eVZhbHVlKCkgeyByZXR1cm4gUG9pc29uZWRNYXNtUHRyKDEpOyB9CisgICAgc3RhdGlj
IFBvaXNvbmVkTWFzbVB0ciBkZWxldGVkVmFsdWUoKSB7IHJldHVybiBQb2lzb25lZE1hc21QdHIo
Mik7IH0KIAotICAgIE1hc21TY3JhbWJsZWRQdHIgbV92YWx1ZTsKKyAgICBQb2lzb25lZE1hc21Q
dHIgbV92YWx1ZTsKIH07CiAKIHN0cnVjdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHJIYXNoIHsKQEAg
LTQ3OSw3ICs0NzksNyBAQCBwcml2YXRlOgogaW5saW5lIEZ1bmN0aW9uUHRyOjpGdW5jdGlvblB0
cihNYWNyb0Fzc2VtYmxlckNvZGVQdHIgcHRyKQogICAgIDogbV92YWx1ZShwdHIuZXhlY3V0YWJs
ZUFkZHJlc3MoKSkKIHsKLSAgICBNYXNtU2NyYW1ibGVkUHRyOjphc3NlcnRJc05vdFNjcmFtYmxl
ZChtX3ZhbHVlKTsKKyAgICBQb2lzb25lZE1hc21QdHI6OmFzc2VydElzTm90UG9pc29uZWQobV92
YWx1ZSk7CiAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVlKTsKIH0KIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3MuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zLmNwcAkocmV2aXNpb24g
MjI1NjEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3MuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01MDUsMTIgKzUwNSwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICBHUFJSZWcgaW5kZXggPSBwYXJh
bXNbMF0uZ3ByKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaCA9IHBh
cmFtcy5ncFNjcmF0Y2goMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBHUFJSZWcgZGVzY3Jh
bWJsZXJLZXkgPSBwYXJhbXMuZ3BTY3JhdGNoKDEpOworICAgICAgICAgICAgICAgICAgICAgICAg
R1BSUmVnIHBvaXNvblNjcmF0Y2ggPSBwYXJhbXMuZ3BTY3JhdGNoKDEpOwogCi0gICAgICAgICAg
ICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NChnX21hc21T
Y3JhbWJsZWRQdHJLZXkpLCBkZXNjcmFtYmxlcktleSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NChnX21hc21Qb2lzb24pLCBwb2lz
b25TY3JhdGNoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cihqdW1wVGFibGUpLCBzY3JhdGNoKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIGppdC5sb2FkNjQoQ0NhbGxIZWxwZXJzOjpCYXNlSW5kZXgoc2NyYXRjaCwgaW5kZXgs
IENDYWxsSGVscGVyczo6dGltZXNQdHIoKSksIHNjcmF0Y2gpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgaml0LnhvcjY0KGRlc2NyYW1ibGVyS2V5LCBzY3JhdGNoKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGppdC54b3I2NChwb2lzb25TY3JhdGNoLCBzY3JhdGNoKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIGppdC5qdW1wKHNjcmF0Y2gpOwogCiAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBUaGVzZSBsYWJlbHMgYXJlIGd1YXJhbnRlZWQgdG8gYmUgcG9wdWxhdGVkIGJlZm9yZSBl
aXRoZXIgbGF0ZSBwYXRocyBvcgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3Ri
My5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAJ
KHJldmlzaW9uIDIyNTYxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzAzMCwxMiArMTMwMzAsMTIgQEAgdm9pZCB0ZXN0SW50ZXJw
cmV0ZXIoKQogICAgICAgICAgICAgICAgIHBhcmFtcy5wcm9jKCkuYWRkRGF0YVNlY3Rpb24oc2l6
ZW9mKE1hY3JvQXNzZW1ibGVyQ29kZVB0cikgKiBsYWJlbHMuc2l6ZSgpKSk7CiAKICAgICAgICAg
ICAgIEdQUlJlZyBzY3JhdGNoID0gcGFyYW1zLmdwU2NyYXRjaCgwKTsKLSAgICAgICAgICAgIEdQ
UlJlZyBkZXNjcmFtYmxlcktleSA9IHBhcmFtcy5ncFNjcmF0Y2goMSk7CisgICAgICAgICAgICBH
UFJSZWcgcG9pc29uU2NyYXRjaCA9IHBhcmFtcy5ncFNjcmF0Y2goMSk7CiAKICAgICAgICAgICAg
IGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihqdW1wVGFibGUpLCBzY3JhdGNo
KTsKLSAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KGdfbWFz
bVNjcmFtYmxlZFB0cktleSksIGRlc2NyYW1ibGVyS2V5KTsKKyAgICAgICAgICAgIGppdC5tb3Zl
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KGdfbWFzbVBvaXNvbiksIHBvaXNvblNjcmF0Y2gp
OwogICAgICAgICAgICAgaml0LmxvYWQ2NChDQ2FsbEhlbHBlcnM6OkJhc2VJbmRleChzY3JhdGNo
LCBwYXJhbXNbMF0uZ3ByKCksIENDYWxsSGVscGVyczo6dGltZXNQdHIoKSksIHNjcmF0Y2gpOwot
ICAgICAgICAgICAgaml0LnhvcjY0KGRlc2NyYW1ibGVyS2V5LCBzY3JhdGNoKTsKKyAgICAgICAg
ICAgIGppdC54b3I2NChwb2lzb25TY3JhdGNoLCBzY3JhdGNoKTsKICAgICAgICAgICAgIGppdC5q
dW1wKHNjcmF0Y2gpOwogCiAgICAgICAgICAgICBqaXQuYWRkTGlua1Rhc2soCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNp
b24gMjI1NjEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2OCw3ICs4NjgsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjaGVja0FycmF5KE5vZGUqIG5vCiAgICAgICAgIG1faml0LmJyYW5jaFB0cigKICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIFN0cnVjdHVyZTo6Y2xhc3NJbmZvT2Zmc2V0KCkpLAot
ICAgICAgICAgICAgVHJ1c3RlZEltbVB0cihDbGFzc0luZm9TY3JhbWJsZWRQdHIoZXhwZWN0ZWRD
bGFzc0luZm8pLmJpdHMoKSkpKTsKKyAgICAgICAgICAgIFRydXN0ZWRJbW1QdHIoUG9pc29uZWRD
bGFzc0luZm9QdHIoZXhwZWN0ZWRDbGFzc0luZm8pLmJpdHMoKSkpKTsKIAogICAgIG5vUmVzdWx0
KG1fY3VycmVudE5vZGUpOwogfQpAQCAtODcwNiw3ICs4NzA2LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUNoZWNrU3ViQ2xhcwogICAgICAgICBtX2ppdC5lbWl0TG9hZFN0cnVjdHVy
ZSgqbV9qaXQudm0oKSwgYmFzZUdQUiwgb3RoZXJHUFIsIHNwZWNpZmllZEdQUik7CiAgICAgICAg
IG1faml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG90aGVyR1BSLCBTdHJ1Y3R1cmU6
OmNsYXNzSW5mb09mZnNldCgpKSwgb3RoZXJHUFIpOwogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAg
ICAgIG1faml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQoZ19jbGFzc0luZm9TY3Jh
bWJsZWRQdHJLZXkpLCBzcGVjaWZpZWRHUFIpOworICAgICAgICBtX2ppdC5tb3ZlKENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbTY0KGdfY2xhc3NJbmZvUG9pc29uKSwgc3BlY2lmaWVkR1BSKTsKICAg
ICAgICAgbV9qaXQueG9yNjQoc3BlY2lmaWVkR1BSLCBvdGhlckdQUik7CiAjZW5kaWYKICAgICAg
ICAgbV9qaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobm9kZS0+Y2xhc3NJbmZv
KCkpLCBzcGVjaWZpZWRHUFIpOwpAQCAtOTAwMyw3ICs5MDAzLDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZU5ld1N0cmluZ09iagogICAgICAgICBzbG93UGF0aCk7CiAgICAgCiAgICAg
bV9qaXQuc3RvcmVQdHIoCi0gICAgICAgIFRydXN0ZWRJbW1QdHIoQ2xhc3NJbmZvU2NyYW1ibGVk
UHRyKFN0cmluZ09iamVjdDo6aW5mbygpKS5iaXRzKCkpLAorICAgICAgICBUcnVzdGVkSW1tUHRy
KFBvaXNvbmVkQ2xhc3NJbmZvUHRyKFN0cmluZ09iamVjdDo6aW5mbygpKS5iaXRzKCkpLAogICAg
ICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0
OjpjbGFzc0luZm9PZmZzZXQoKSkpOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgbV9qaXQuc3Rv
cmU2NCgKQEAgLTk3NzQsNyArOTc3NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0
ZShOb2RlKiwgRWQKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaEludEp1bXAo
Ci0gICAgU3dpdGNoRGF0YSogZGF0YSwgR1BSUmVnIHZhbHVlLCBHUFJSZWcgc2NyYXRjaCwgR1BS
UmVnIGRlc2NyYW1ibGVyS2V5U2NyYXRjaCkKKyAgICBTd2l0Y2hEYXRhKiBkYXRhLCBHUFJSZWcg
dmFsdWUsIEdQUlJlZyBzY3JhdGNoLCBHUFJSZWcgcG9pc29uU2NyYXRjaCkKIHsKICAgICBTaW1w
bGVKdW1wVGFibGUmIHRhYmxlID0gbV9qaXQuY29kZUJsb2NrKCktPnN3aXRjaEp1bXBUYWJsZShk
YXRhLT5zd2l0Y2hUYWJsZUluZGV4KTsKICAgICB0YWJsZS5lbnN1cmVDVElUYWJsZSgpOwpAQCAt
OTc4MiwxNSArOTc4MiwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoSW50SnVt
cCgKICAgICBhZGRCcmFuY2goCiAgICAgICAgIG1faml0LmJyYW5jaDMyKEpJVENvbXBpbGVyOjpB
Ym92ZU9yRXF1YWwsIHZhbHVlLCBJbW0zMih0YWJsZS5jdGlPZmZzZXRzLnNpemUoKSkpLAogICAg
ICAgICBkYXRhLT5mYWxsVGhyb3VnaC5ibG9jayk7Ci0gICAgVU5VU0VEX1BBUkFNKGRlc2NyYW1i
bGVyS2V5U2NyYXRjaCk7IC8vIFBsYWNhdGUgdGhlIDMyLWJpdCBidWlsZC4KKyAgICBVTlVTRURf
UEFSQU0ocG9pc29uU2NyYXRjaCk7IC8vIFBsYWNhdGUgdGhlIDMyLWJpdCBidWlsZC4KICNpZiBV
U0UoSlNWQUxVRTY0KQotICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTY0KGdfbWFzbVNjcmFtYmxl
ZFB0cktleSksIGRlc2NyYW1ibGVyS2V5U2NyYXRjaCk7CisgICAgbV9qaXQubW92ZShUcnVzdGVk
SW1tNjQoZ19tYXNtUG9pc29uKSwgcG9pc29uU2NyYXRjaCk7CiAjZW5kaWYKICAgICBtX2ppdC5t
b3ZlKFRydXN0ZWRJbW1QdHIodGFibGUuY3RpT2Zmc2V0cy5iZWdpbigpKSwgc2NyYXRjaCk7CiAg
ICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QmFzZUluZGV4KHNjcmF0Y2gsIHZhbHVlLCBK
SVRDb21waWxlcjo6dGltZXNQdHIoKSksIHNjcmF0Y2gpOwogICAgIAogI2lmIFVTRShKU1ZBTFVF
NjQpCi0gICAgbV9qaXQueG9yNjQoZGVzY3JhbWJsZXJLZXlTY3JhdGNoLCBzY3JhdGNoKTsKKyAg
ICBtX2ppdC54b3I2NChwb2lzb25TY3JhdGNoLCBzY3JhdGNoKTsKICNlbmRpZgogICAgIG1faml0
Lmp1bXAoc2NyYXRjaCk7CiAgICAgZGF0YS0+ZGlkVXNlSnVtcFRhYmxlID0gdHJ1ZTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlz
aW9uIDIyNTYxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAxMCw3ICs1MDEwLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5pbnNlcnROZXdCbG9ja3NCZWZvcmUoc2xv
d0Nhc2UpOwogCiAgICAgICAgIExWYWx1ZSBmYXN0UmVzdWx0VmFsdWUgPSBhbGxvY2F0ZU9iamVj
dDxTdHJpbmdPYmplY3Q+KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd0Nhc2UpOwot
ICAgICAgICBtX291dC5zdG9yZVB0cihtX291dC5jb25zdEludFB0cihDbGFzc0luZm9TY3JhbWJs
ZWRQdHIoU3RyaW5nT2JqZWN0OjppbmZvKCkpLmJpdHMoKSksIGZhc3RSZXN1bHRWYWx1ZSwgbV9o
ZWFwcy5KU0Rlc3RydWN0aWJsZU9iamVjdF9jbGFzc0luZm8pOworICAgICAgICBtX291dC5zdG9y
ZVB0cihtX291dC5jb25zdEludFB0cihQb2lzb25lZENsYXNzSW5mb1B0cihTdHJpbmdPYmplY3Q6
OmluZm8oKSkuYml0cygpKSwgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0X2NsYXNzSW5mbyk7CiAgICAgICAgIG1fb3V0LnN0b3JlNjQoc3RyaW5nLCBmYXN0UmVz
dWx0VmFsdWUsIG1faGVhcHMuSlNXcmFwcGVyT2JqZWN0X2ludGVybmFsVmFsdWUpOwogICAgICAg
ICBtdXRhdG9yRmVuY2UoKTsKICAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1f
b3V0LmFuY2hvcihmYXN0UmVzdWx0VmFsdWUpOwpAQCAtMTExNzAsOCArMTExNzAsOCBAQCBwcml2
YXRlOgogICAgICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3Qmxv
Y2soKTsKIAogICAgICAgICAgICAgTFZhbHVlIHN0cnVjdHVyZSA9IGxvYWRTdHJ1Y3R1cmUoY2Vs
bCk7Ci0gICAgICAgICAgICBMVmFsdWUgc2NyYW1ibGVkQ2xhc3NJbmZvID0gbV9vdXQubG9hZFB0
cihzdHJ1Y3R1cmUsIG1faGVhcHMuU3RydWN0dXJlX2NsYXNzSW5mbyk7Ci0gICAgICAgICAgICBM
VmFsdWUgY2xhc3NJbmZvID0gbV9vdXQuYml0WG9yKHNjcmFtYmxlZENsYXNzSW5mbywgbV9vdXQu
Y29uc3RJbnQ2NChnX2NsYXNzSW5mb1NjcmFtYmxlZFB0cktleSkpOworICAgICAgICAgICAgTFZh
bHVlIHBvaXNvbmVkQ2xhc3NJbmZvID0gbV9vdXQubG9hZFB0cihzdHJ1Y3R1cmUsIG1faGVhcHMu
U3RydWN0dXJlX2NsYXNzSW5mbyk7CisgICAgICAgICAgICBMVmFsdWUgY2xhc3NJbmZvID0gbV9v
dXQuYml0WG9yKHBvaXNvbmVkQ2xhc3NJbmZvLCBtX291dC5jb25zdEludDY0KGdfY2xhc3NJbmZv
UG9pc29uKSk7CiAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBvdGhlckF0U3RhcnQgPSBtX291
dC5hbmNob3IoY2xhc3NJbmZvKTsKICAgICAgICAgICAgIG1fb3V0Lmp1bXAobG9vcCk7CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkocmV2aXNp
b24gMjI1NjEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMu
aAkod29ya2luZyBjb3B5KQpAQCAtMTYyNSw3ICsxNjI1LDcgQEAgcHVibGljOgogICAgIHZvaWQg
ZW1pdEFsbG9jYXRlRGVzdHJ1Y3RpYmxlT2JqZWN0KFZNJiB2bSwgR1BSUmVnIHJlc3VsdEdQUiwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEdQUlJlZyBzY3JhdGNoR1BSMSwgR1BSUmVnIHNjcmF0Y2hH
UFIyLCBKdW1wTGlzdCYgc2xvd1BhdGgpCiAgICAgewogICAgICAgICBlbWl0QWxsb2NhdGVKU09i
amVjdDxDbGFzc1R5cGU+KHZtLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwg
VHJ1c3RlZEltbVB0cigwKSwgc2NyYXRjaEdQUjEsIHNjcmF0Y2hHUFIyLCBzbG93UGF0aCk7Ci0g
ICAgICAgIHN0b3JlUHRyKFRydXN0ZWRJbW1QdHIoQ2xhc3NJbmZvU2NyYW1ibGVkUHRyKHN0cnVj
dHVyZS0+Y2xhc3NJbmZvKCkpLmJpdHMoKSksIEFkZHJlc3MocmVzdWx0R1BSLCBKU0Rlc3RydWN0
aWJsZU9iamVjdDo6Y2xhc3NJbmZvT2Zmc2V0KCkpKTsKKyAgICAgICAgc3RvcmVQdHIoVHJ1c3Rl
ZEltbVB0cihQb2lzb25lZENsYXNzSW5mb1B0cihzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpKS5iaXRz
KCkpLCBBZGRyZXNzKHJlc3VsdEdQUiwgSlNEZXN0cnVjdGlibGVPYmplY3Q6OmNsYXNzSW5mb09m
ZnNldCgpKSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgZW1pdEluaXRpYWxpemVJbmxpbmVTdG9y
YWdlKEdQUlJlZyBiYXNlR1BSLCB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6ZWRUaHVua0pJVC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6ZWRUaHVua0pJVC5oCShyZXZpc2lv
biAyMjU2MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtK
SVQuaAkod29ya2luZyBjb3B5KQpAQCAtNzcsNyArNzcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgewogICAgICAgICAgICAgbG9hZENlbGxBcmd1bWVudChhcmd1bWVudCwgZHN0KTsKICAg
ICAgICAgICAgIGVtaXRMb2FkU3RydWN0dXJlKCp2bSgpLCBkc3QsIHNjcmF0Y2gsIGRzdCk7Ci0g
ICAgICAgICAgICBhcHBlbmRGYWlsdXJlKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhzY3Jh
dGNoLCBTdHJ1Y3R1cmU6OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihDbGFzc0lu
Zm9TY3JhbWJsZWRQdHIoY2xhc3NJbmZvKS5iaXRzKCkpKSk7CisgICAgICAgICAgICBhcHBlbmRG
YWlsdXJlKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhzY3JhdGNoLCBTdHJ1Y3R1cmU6OmNs
YXNzSW5mb09mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihQb2lzb25lZENsYXNzSW5mb1B0cihjbGFz
c0luZm8pLmJpdHMoKSkpKTsKICAgICAgICAgICAgIC8vIFdlIGhhdmUgdG8gcmVsb2FkIHRoZSBh
cmd1bWVudCBzaW5jZSBlbWl0TG9hZFN0cnVjdHVyZSBjbG9iYmVyZWQgaXQuCiAgICAgICAgICAg
ICBsb2FkQ2VsbEFyZ3VtZW50KGFyZ3VtZW50LCBkc3QpOwogICAgICAgICB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCShyZXZpc2lvbiAy
MjU2MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIxNCw3ICsyMTQsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYg
dmlydHVhbFRodW5rRm9yKFZNCiAgICAgLy8gTm93IHdlIGtub3cgdGhhdCB3ZSBoYXZlIGEgQ29k
ZUJsb2NrLCBhbmQgd2UncmUgY29tbWl0dGVkIHRvIG1ha2luZyBhIGZhc3QKICAgICAvLyBjYWxs
LgogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tNjQoZ19tYXNtU2NyYW1ibGVkUHRyS2V5KSwgR1BSSW5mbzo6cmVnVDEpOworICAgIGppdC5t
b3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KGdfbWFzbVBvaXNvbiksIEdQUkluZm86OnJl
Z1QxKTsKICAgICBqaXQueG9yNjQoR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1Q0KTsKICNl
bmRpZgogCkBAIC0xMTYzLDcgKzExNjMsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgYm91bmRU
aGlzTm9BcmdzRnVuCiAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG5vQ29kZSA9IGppdC5icmFuY2hU
ZXN0UHRyKENDYWxsSGVscGVyczo6WmVybywgR1BSSW5mbzo6cmVnVDApOwogICAgIAogI2lmIFVT
RShKU1ZBTFVFNjQpCi0gICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQoZ19t
YXNtU2NyYW1ibGVkUHRyS2V5KSwgR1BSSW5mbzo6cmVnVDEpOworICAgIGppdC5tb3ZlKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTY0KGdfbWFzbVBvaXNvbiksIEdQUkluZm86OnJlZ1QxKTsKICAg
ICBqaXQueG9yNjQoR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1QwKTsKICNlbmRpZgogICAg
IGVtaXRQb2ludGVyVmFsaWRhdGlvbihqaXQsIEdQUkluZm86OnJlZ1QwKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24g
MjI1NjEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTMwMyw3ICsxMzAzLDcgQEAgc3RhdGljIFNsb3dQYXRoUmV0
dXJuVHlwZSBoYW5kbGVIb3N0Q2FsbAogICAgICAgICAgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVl
KGFzT2JqZWN0KGNhbGxlZSkpOwogICAgICAgICAgICAgdm0uaG9zdENhbGxSZXR1cm5WYWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24oZXhlY0NhbGxlZSkpOwog
ICAgICAgICAgICAgCi0gICAgICAgICAgICBNYXNtU2NyYW1ibGVkUHRyOjphc3NlcnRJc05vdFNj
cmFtYmxlZChMTEludDo6Z2V0Q29kZVB0cihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSk7CisgICAg
ICAgICAgICBQb2lzb25lZE1hc21QdHI6OmFzc2VydElzTm90UG9pc29uZWQoTExJbnQ6OmdldENv
ZGVQdHIoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkpOwogICAgICAgICAgICAgTExJTlRfQ0FMTF9S
RVRVUk4oZXhlY0NhbGxlZSwgZXhlY0NhbGxlZSwgTExJbnQ6OmdldENvZGVQdHIoZ2V0SG9zdENh
bGxSZXR1cm5WYWx1ZSkpOwogICAgICAgICB9CiAgICAgICAgIApAQCAtMTMyNyw3ICsxMzI3LDcg
QEAgc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2FsbAogICAgICAgICBleGVj
Q2FsbGVlLT5zZXRDYWxsZWUoYXNPYmplY3QoY2FsbGVlKSk7CiAgICAgICAgIHZtLmhvc3RDYWxs
UmV0dXJuVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rp
b24oZXhlY0NhbGxlZSkpOwogCi0gICAgICAgIE1hc21TY3JhbWJsZWRQdHI6OmFzc2VydElzTm90
U2NyYW1ibGVkKExMSW50OjpnZXRDb2RlUHRyKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpKTsKKyAg
ICAgICAgUG9pc29uZWRNYXNtUHRyOjphc3NlcnRJc05vdFBvaXNvbmVkKExMSW50OjpnZXRDb2Rl
UHRyKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpKTsKICAgICAgICAgTExJTlRfQ0FMTF9SRVRVUk4o
ZXhlY0NhbGxlZSwgZXhlY0NhbGxlZSwgTExJbnQ6OmdldENvZGVQdHIoZ2V0SG9zdENhbGxSZXR1
cm5WYWx1ZSkpOwogICAgIH0KICAgICAKQEAgLTEzNjgsNyArMTM2OCw3IEBAIGlubGluZSBTbG93
UGF0aFJldHVyblR5cGUgc2V0VXBDYWxsKEV4ZWMKICAgICAgICAgICAgICAgICBjYWxsTGlua0lu
Zm8tPm1hY2hpbmVDb2RlVGFyZ2V0ID0gY29kZVB0cjsKICAgICAgICAgICAgIH0KIAotICAgICAg
ICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6YXNzZXJ0SXNOb3RTY3JhbWJsZWQoY29kZVB0ci5leGVj
dXRhYmxlQWRkcmVzcygpKTsKKyAgICAgICAgICAgIFBvaXNvbmVkTWFzbVB0cjo6YXNzZXJ0SXNO
b3RQb2lzb25lZChjb2RlUHRyLmV4ZWN1dGFibGVBZGRyZXNzKCkpOwogICAgICAgICAgICAgTExJ
TlRfQ0FMTF9SRVRVUk4oZXhlYywgZXhlY0NhbGxlZSwgY29kZVB0ci5leGVjdXRhYmxlQWRkcmVz
cygpKTsKICAgICAgICAgfQogICAgICAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKQEAgLTE0MTks
NyArMTQxOSw3IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgc2V0VXBDYWxsKEV4ZWMKICAg
ICAgICAgICAgIGNvZGVCbG9jay0+bGlua0luY29taW5nQ2FsbChleGVjLCBjYWxsTGlua0luZm8p
OwogICAgIH0KIAotICAgIE1hc21TY3JhbWJsZWRQdHI6OmFzc2VydElzTm90U2NyYW1ibGVkKGNv
ZGVQdHIuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisgICAgUG9pc29uZWRNYXNtUHRyOjphc3NlcnRJ
c05vdFBvaXNvbmVkKGNvZGVQdHIuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CiAgICAgTExJTlRfQ0FM
TF9SRVRVUk4oZXhlYywgZXhlY0NhbGxlZSwgY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpKTsK
IH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXI2NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXI2NC5hc20JKHJldmlzaW9uIDIyNTYxMykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBA
IC0xOTUwLDcgKzE5NTAsNyBAQCBtYWNybyBkb0NhbGwoc2xvd1BhdGgsIHByZXBhcmVDYWxsKQog
ICAgICAgICBwcmVwYXJlQ2FsbChMTEludENhbGxMaW5rSW5mbzo6bWFjaGluZUNvZGVUYXJnZXRb
dDFdLCB0MiwgdDMsIHQ0KQogICAgICAgICBjYWxsVGFyZ2V0RnVuY3Rpb24oTExJbnRDYWxsTGlu
a0luZm86Om1hY2hpbmVDb2RlVGFyZ2V0W3QxXSkKICAgICBlbHNlCi0gICAgICAgIGxvYWRwIF9n
X21hc21TY3JhbWJsZWRQdHJLZXksIHQyCisgICAgICAgIGxvYWRwIF9nX21hc21Qb2lzb24sIHQy
CiAgICAgICAgIHhvcnAgTExJbnRDYWxsTGlua0luZm86Om1hY2hpbmVDb2RlVGFyZ2V0W3QxXSwg
dDIKICAgICAgICAgcHJlcGFyZUNhbGwodDIsIHQxLCB0MywgdDQpCiAgICAgICAgIGNhbGxUYXJn
ZXRGdW5jdGlvbih0MikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRp
YWxpemVUaHJlYWRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCShyZXZpc2lvbiAyMjU2MTMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTksNyArNTksNyBAQCB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKQogCiAg
ICAgc3RkOjpjYWxsX29uY2UoaW5pdGlhbGl6ZVRocmVhZGluZ09uY2VGbGFnLCBbXXsKICAgICAg
ICAgV1RGOjppbml0aWFsaXplVGhyZWFkaW5nKCk7Ci0gICAgICAgIGluaXRpYWxpemVTY3JhbWJs
ZWRQdHJLZXlzKCk7CisgICAgICAgIGluaXRpYWxpemVQb2lzb24oKTsKICAgICAgICAgT3B0aW9u
czo6aW5pdGlhbGl6ZSgpOwogI2lmIEVOQUJMRShXUklURV9CQVJSSUVSX1BST0ZJTElORykKICAg
ICAgICAgV3JpdGVCYXJyaWVyQ291bnRlcnM6OmluaXRpYWxpemUoKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1BvaXNvbmVkUHRyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQb2lzb25lZFB0ci5jcHAJKHJldmlzaW9u
IDIyNTYxMykJKGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDU2NyYW1ibGVk
UHRyLmNwcDoyMjU2MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQb2lz
b25lZFB0ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJKU0NTY3JhbWJsZWRQdHIuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3VpbnRwdHJf
dCBnX2NsYXNzSW5mb1NjcmFtYmxlZFB0cktleTsKK3VpbnRwdHJfdCBnX21hc21TY3JhbWJsZWRQ
dHJLZXk7CisKK3ZvaWQgaW5pdGlhbGl6ZVNjcmFtYmxlZFB0cktleXMoKQoreworICAgIHN0YXRp
YyBzdGQ6Om9uY2VfZmxhZyBpbml0aWFsaXplT25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uo
aW5pdGlhbGl6ZU9uY2VGbGFnLCBbXSB7CisgICAgICAgIGdfY2xhc3NJbmZvU2NyYW1ibGVkUHRy
S2V5ID0gbWFrZVNjcmFtYmxlZFB0cktleSgpOworICAgICAgICBnX21hc21TY3JhbWJsZWRQdHJL
ZXkgPSBtYWtlU2NyYW1ibGVkUHRyS2V5KCk7CisgICAgfSk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQb2lzb25lZFB0
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDUG9p
c29uZWRQdHIuY3BwCShyZXZpc2lvbiAyMjU2MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NQb2lzb25lZFB0ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDE5ICsyNCwx
OSBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJKU0NTY3JhbWJsZWRQ
dHIuaCIKKyNpbmNsdWRlICJKU0NQb2lzb25lZFB0ci5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAot
dWludHB0cl90IGdfY2xhc3NJbmZvU2NyYW1ibGVkUHRyS2V5OwotdWludHB0cl90IGdfbWFzbVNj
cmFtYmxlZFB0cktleTsKK3VpbnRwdHJfdCBnX2NsYXNzSW5mb1BvaXNvbjsKK3VpbnRwdHJfdCBn
X21hc21Qb2lzb247CiAKLXZvaWQgaW5pdGlhbGl6ZVNjcmFtYmxlZFB0cktleXMoKQordm9pZCBp
bml0aWFsaXplUG9pc29uKCkKIHsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgaW5pdGlhbGl6
ZU9uY2VGbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNlKGluaXRpYWxpemVPbmNlRmxhZywgW10gewot
ICAgICAgICBnX2NsYXNzSW5mb1NjcmFtYmxlZFB0cktleSA9IG1ha2VTY3JhbWJsZWRQdHJLZXko
KTsKLSAgICAgICAgZ19tYXNtU2NyYW1ibGVkUHRyS2V5ID0gbWFrZVNjcmFtYmxlZFB0cktleSgp
OworICAgICAgICBnX2NsYXNzSW5mb1BvaXNvbiA9IG1ha2VQb2lzb24oKTsKKyAgICAgICAgZ19t
YXNtUG9pc29uID0gbWFrZVBvaXNvbigpOwogICAgIH0pOwogfQogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NQb2lzb25lZFB0ci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1BvaXNvbmVkUHRyLmgJKHJldmlzaW9uIDIyNTYx
MykJKGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDU2NyYW1ibGVkUHRyLmg6
MjI1NjEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDUG9pc29uZWRQdHIu
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvU2Ny
YW1ibGVkUHRyLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitleHRlcm4gIkMiIEpTX0VYUE9SVERB
VEEgdWludHB0cl90IGdfY2xhc3NJbmZvU2NyYW1ibGVkUHRyS2V5OworZXh0ZXJuICJDIiBKU19F
WFBPUlREQVRBIHVpbnRwdHJfdCBnX21hc21TY3JhbWJsZWRQdHJLZXk7CisKK3N0cnVjdCBDbGFz
c0luZm87CisKK3VzaW5nIENsYXNzSW5mb1NjcmFtYmxlZFB0ciA9IFNjcmFtYmxlZFB0cjxjb25z
dCBDbGFzc0luZm8qLCBnX2NsYXNzSW5mb1NjcmFtYmxlZFB0cktleT47Cit1c2luZyBNYXNtU2Ny
YW1ibGVkUHRyID0gU2NyYW1ibGVkUHRyPHZvaWQqLCBnX21hc21TY3JhbWJsZWRQdHJLZXk+Owor
Cit2b2lkIGluaXRpYWxpemVTY3JhbWJsZWRQdHJLZXlzKCk7CisKK30gLy8gbmFtZXNwYWNlIEpT
QworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQb2lzb25lZFB0ci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1BvaXNvbmVk
UHRyLmgJKHJldmlzaW9uIDIyNTYxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ1BvaXNvbmVkUHRyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDE5ICsyNSwxOSBAQAogCiAj
cHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgPHd0Zi9TY3JhbWJsZWRQdHIuaD4KKyNpbmNsdWRlIDx3
dGYvUG9pc29uZWQuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKLWV4dGVybiAiQyIgSlNfRVhQT1JU
REFUQSB1aW50cHRyX3QgZ19jbGFzc0luZm9TY3JhbWJsZWRQdHJLZXk7Ci1leHRlcm4gIkMiIEpT
X0VYUE9SVERBVEEgdWludHB0cl90IGdfbWFzbVNjcmFtYmxlZFB0cktleTsKK2V4dGVybiAiQyIg
SlNfRVhQT1JUREFUQSB1aW50cHRyX3QgZ19jbGFzc0luZm9Qb2lzb247CitleHRlcm4gIkMiIEpT
X0VYUE9SVERBVEEgdWludHB0cl90IGdfbWFzbVBvaXNvbjsKIAogc3RydWN0IENsYXNzSW5mbzsK
IAotdXNpbmcgQ2xhc3NJbmZvU2NyYW1ibGVkUHRyID0gU2NyYW1ibGVkUHRyPGNvbnN0IENsYXNz
SW5mbyosIGdfY2xhc3NJbmZvU2NyYW1ibGVkUHRyS2V5PjsKLXVzaW5nIE1hc21TY3JhbWJsZWRQ
dHIgPSBTY3JhbWJsZWRQdHI8dm9pZCosIGdfbWFzbVNjcmFtYmxlZFB0cktleT47Cit1c2luZyBQ
b2lzb25lZENsYXNzSW5mb1B0ciA9IFBvaXNvbmVkPGdfY2xhc3NJbmZvUG9pc29uLCBjb25zdCBD
bGFzc0luZm8qPjsKK3VzaW5nIFBvaXNvbmVkTWFzbVB0ciA9IFBvaXNvbmVkPGdfbWFzbVBvaXNv
biwgdm9pZCo+OwogCi12b2lkIGluaXRpYWxpemVTY3JhbWJsZWRQdHJLZXlzKCk7Cit2b2lkIGlu
aXRpYWxpemVQb2lzb24oKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1NjcmFtYmxlZFB0ci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDU2NyYW1ibGVkUHRyLmNwcAkocmV2aXNp
b24gMjI1NjEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDU2NyYW1ibGVk
UHRyLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiSlNDU2NyYW1ibGVkUHRyLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi11aW50cHRyX3QgZ19j
bGFzc0luZm9TY3JhbWJsZWRQdHJLZXk7Ci11aW50cHRyX3QgZ19tYXNtU2NyYW1ibGVkUHRyS2V5
OwotCi12b2lkIGluaXRpYWxpemVTY3JhbWJsZWRQdHJLZXlzKCkKLXsKLSAgICBzdGF0aWMgc3Rk
OjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZU9uY2VGbGFnOwotICAgIHN0ZDo6Y2FsbF9vbmNlKGluaXRp
YWxpemVPbmNlRmxhZywgW10gewotICAgICAgICBnX2NsYXNzSW5mb1NjcmFtYmxlZFB0cktleSA9
IG1ha2VTY3JhbWJsZWRQdHJLZXkoKTsKLSAgICAgICAgZ19tYXNtU2NyYW1ibGVkUHRyS2V5ID0g
bWFrZVNjcmFtYmxlZFB0cktleSgpOwotICAgIH0pOwotfQotCi19IC8vIG5hbWVzcGFjZSBKU0MK
LQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDU2NyYW1ibGVkUHRyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDU2NyYW1ibGVk
UHRyLmgJKHJldmlzaW9uIDIyNTYxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ1NjcmFtYmxlZFB0ci5oCShub25leGlzdGVudCkKQEAgLTEsNDMgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aW5jbHVkZSA8d3RmL1NjcmFtYmxlZFB0ci5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLQotZXh0ZXJu
ICJDIiBKU19FWFBPUlREQVRBIHVpbnRwdHJfdCBnX2NsYXNzSW5mb1NjcmFtYmxlZFB0cktleTsK
LWV4dGVybiAiQyIgSlNfRVhQT1JUREFUQSB1aW50cHRyX3QgZ19tYXNtU2NyYW1ibGVkUHRyS2V5
OwotCi1zdHJ1Y3QgQ2xhc3NJbmZvOwotCi11c2luZyBDbGFzc0luZm9TY3JhbWJsZWRQdHIgPSBT
Y3JhbWJsZWRQdHI8Y29uc3QgQ2xhc3NJbmZvKiwgZ19jbGFzc0luZm9TY3JhbWJsZWRQdHJLZXk+
OwotdXNpbmcgTWFzbVNjcmFtYmxlZFB0ciA9IFNjcmFtYmxlZFB0cjx2b2lkKiwgZ19tYXNtU2Ny
YW1ibGVkUHRyS2V5PjsKLQotdm9pZCBpbml0aWFsaXplU2NyYW1ibGVkUHRyS2V5cygpOwotCi19
IC8vIG5hbWVzcGFjZSBKU0MKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNEZXN0cnVjdGlibGVPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Rlc3RydWN0aWJsZU9iamVjdC5oCShyZXZpc2lvbiAyMjU2MTMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rlc3RydWN0aWJsZU9iamVjdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICZ2bS5k
ZXN0cnVjdGlibGVPYmplY3RTcGFjZTsKICAgICB9CiAKLSAgICBjb25zdCBDbGFzc0luZm8qIGNs
YXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NJbmZvLmRlc2NyYW1ibGVkKCk7IH0KKyAg
ICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NJbmZv
LnVucG9pc29uZWQoKTsgfQogICAgIAogICAgIHN0YXRpYyBwdHJkaWZmX3QgY2xhc3NJbmZvT2Zm
c2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBtX2Ns
YXNzSW5mbyk7IH0KIApAQCAtNTYsNyArNTYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgfQogCiBwcml2
YXRlOgotICAgIENsYXNzSW5mb1NjcmFtYmxlZFB0ciBtX2NsYXNzSW5mbzsKKyAgICBQb2lzb25l
ZENsYXNzSW5mb1B0ciBtX2NsYXNzSW5mbzsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVj
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2VnbWVu
dGVkVmFyaWFibGVPYmplY3QuaAkocmV2aXNpb24gMjI1NjEzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC05NCw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICZ2bS5zZWdtZW50ZWRW
YXJpYWJsZU9iamVjdFNwYWNlOwogICAgIH0KICAgICAKLSAgICBjb25zdCBDbGFzc0luZm8qIGNs
YXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NJbmZvLmRlc2NyYW1ibGVkKCk7IH0KKyAg
ICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NJbmZv
LnVucG9pc29uZWQoKTsgfQogICAgIAogcHJvdGVjdGVkOgogICAgIEpTU2VnbWVudGVkVmFyaWFi
bGVPYmplY3QoVk0mLCBTdHJ1Y3R1cmUqLCBKU1Njb3BlKik7CkBAIC0xMDcsNyArMTA3LDcgQEAg
cHJpdmF0ZToKICAgICBTZWdtZW50ZWRWZWN0b3I8V3JpdGVCYXJyaWVyPFVua25vd24+LCAxNj4g
bV92YXJpYWJsZXM7CiAgICAgQ29uY3VycmVudEpTTG9jayBtX2xvY2s7CiAgICAgYm9vbCBtX2Fs
cmVhZHlEZXN0cm95ZWQgeyBmYWxzZSB9OyAvLyBXZSB1c2UgdGhlc2UgYXNzZXJ0aW9ucyB0byBj
aGVjayB0aGF0IHdlIGFyZW4ndCBkb2luZyBhbmNpZW50IGhhY2tzIHRoYXQgcmVzdWx0IGluIHRo
aXMgYmVpbmcgZGVzdHJveWVkIG1vcmUgdGhhbiBvbmNlLgotICAgIENsYXNzSW5mb1NjcmFtYmxl
ZFB0ciBtX2NsYXNzSW5mbzsKKyAgICBQb2lzb25lZENsYXNzSW5mb1B0ciBtX2NsYXNzSW5mbzsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlLmgJKHJldmlzaW9uIDIyNTYxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NjgsNyArNDY4LDcg
QEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRPYmplY3RUb1N0cmluZ1ZhbHVlKEV4ZWNTdGF0ZSos
IFZNJiwgSlNTdHJpbmcqIHZhbHVlLCBQcm9wZXJ0eVNsb3QgdG9TdHJpbmdUYWdTeW1ib2xTbG90
KTsKIAotICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9j
bGFzc0luZm8uZGVzY3JhbWJsZWQoKTsgfQorICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZv
KCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc0luZm8udW5wb2lzb25lZCgpOyB9CiAKICAgICBzdGF0
aWMgcHRyZGlmZl90IHN0cnVjdHVyZUlET2Zmc2V0KCkKICAgICB7CkBAIC03OTgsNyArNzk4LDcg
QEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4gbV9uYW1lSW5QcmV2
aW91czsKIAotICAgIENsYXNzSW5mb1NjcmFtYmxlZFB0ciBtX2NsYXNzSW5mbzsKKyAgICBQb2lz
b25lZENsYXNzSW5mb1B0ciBtX2NsYXNzSW5mbzsKIAogICAgIFN0cnVjdHVyZVRyYW5zaXRpb25U
YWJsZSBtX3RyYW5zaXRpb25UYWJsZTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCShyZXZpc2lvbiAyMjU2MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MTQsNyArNDE0LDcgQEAgcHVibGljOgogICAgIHN0ZDo6
dW5pcXVlX3B0cjxQcm9taXNlRGVmZXJyZWRUaW1lcj4gcHJvbWlzZURlZmVycmVkVGltZXI7CiAg
ICAgCiAgICAgSlNDZWxsKiBjdXJyZW50bHlEZXN0cnVjdGluZ0NhbGxiYWNrT2JqZWN0OwotICAg
IENsYXNzSW5mb1NjcmFtYmxlZFB0ciBjdXJyZW50bHlEZXN0cnVjdGluZ0NhbGxiYWNrT2JqZWN0
Q2xhc3NJbmZvOworICAgIFBvaXNvbmVkQ2xhc3NJbmZvUHRyIGN1cnJlbnRseURlc3RydWN0aW5n
Q2FsbGJhY2tPYmplY3RDbGFzc0luZm87CiAKICAgICBBdG9taWNTdHJpbmdUYWJsZSogbV9hdG9t
aWNTdHJpbmdUYWJsZTsKICAgICBXVEY6OlN5bWJvbFJlZ2lzdHJ5IG1fc3ltYm9sUmVnaXN0cnk7
CkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0No
YW5nZUxvZwkocmV2aXNpb24gMjI1NjEzKQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSw1MyBAQAorMjAxNy0xMi0wNiAgTWFyayBMYW0gIDxtYXJrLmxh
bUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVmYWN0b3Jpbmc6IFJlbmFtZSBTY3JhbWJsZWRQdHIg
dG8gUG9pc29uZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODA1MTQKKworICAgICAgICBSZXZpZXdlZCBieSBTYWFtIEJhcmF0aS4KKworICAgICAg
ICBXZSdyZSBzd2l0Y2hpbmcgb3VyIG5vbWVuY2xhdHVyZSB0byAicG9pc29uaW5nIiBpbnN0ZWFk
IG9mICJzY3JhbWJsaW5nIiBwb2ludGVycy4KKyAgICAgICAgVGhpcyBhbGxvd3MgdXMgdG8gdXNl
IHNob3J0ZXIgbmFtZXMuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpcyBhbG1vc3QgcHVyZWx5IHJl
ZmFjdG9yaW5nLCBleGNlcHQgZm9yIG9uZSBjaGFuZ2U6IHRoZSBQb2lzb25lZEltcGwKKyAgICAg
ICAgdGVtcGxhdGUgY2xhc3MgKHByZXZpb3VzbHkgU2NyYW1ibGVkUHRyKSBoYXMgYmVlbiBtb2Rp
ZmllZCB0byBhbGxvdyB1c2FnZSBvZgorICAgICAgICBhIGNvbnN0ZXhwciB1aW50MzJfdCBwb2lz
b24gdmFsdWUgKHNlZSBJbnQzMlBvaXNvbmVkKSBpbiBhZGRpdGlvbiB0byBhIHJ1bnRpbWUKKyAg
ICAgICAgZGV0ZXJtaW5lZCB1aW50cHRyX3QgcG9pc29uIHZhbHVlIChzZWUgUG9pc29uZWQpLgor
CisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3Rm
L0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIHd0Zi9Qb2lzb25lZC5jcHA6IENvcGllZCBmcm9t
IFNvdXJjZS9XVEYvd3RmL1NjcmFtYmxlZFB0ci5jcHAuCisgICAgICAgIChXVEY6Om1ha2VQb2lz
b24pOgorICAgICAgICAoV1RGOjptYWtlU2NyYW1ibGVkUHRyS2V5KTogRGVsZXRlZC4KKyAgICAg
ICAgKiB3dGYvUG9pc29uZWQuaDogQ29waWVkIGZyb20gU291cmNlL1dURi93dGYvU2NyYW1ibGVk
UHRyLmguCisgICAgICAgIChXVEY6OlBvaXNvbmVkSW1wbDo6UG9pc29uZWRJbXBsKToKKyAgICAg
ICAgKFdURjo6UG9pc29uZWRJbXBsOjphc3NlcnRJc1BvaXNvbmVkIGNvbnN0KToKKyAgICAgICAg
KFdURjo6UG9pc29uZWRJbXBsOjphc3NlcnRJc05vdFBvaXNvbmVkIGNvbnN0KToKKyAgICAgICAg
KFdURjo6UG9pc29uZWRJbXBsOjp1bnBvaXNvbmVkIGNvbnN0KToKKyAgICAgICAgKFdURjo6UG9p
c29uZWRJbXBsOjpvcGVyYXRvci0+IGNvbnN0KToKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBs
OjpiaXRzIGNvbnN0KToKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpvcGVyYXRvciEgY29u
c3QpOgorICAgICAgICAoV1RGOjpQb2lzb25lZEltcGw6Om9wZXJhdG9yIGJvb2wgY29uc3QpOgor
ICAgICAgICAoV1RGOjpQb2lzb25lZEltcGw6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAo
V1RGOjpQb2lzb25lZEltcGw6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV1RGOjpQb2lzb25lZElt
cGw6Om9wZXJhdG9yPSk6CisgICAgICAgIChXVEY6OlBvaXNvbmVkSW1wbDo6cG9pc29uKToKKyAg
ICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjp1bnBvaXNvbik6CisgICAgICAgIChXVEY6OlNjcmFt
YmxlZFB0cjo6U2NyYW1ibGVkUHRyKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6U2NyYW1ibGVk
UHRyOjphc3NlcnRJc1NjcmFtYmxlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlNj
cmFtYmxlZFB0cjo6YXNzZXJ0SXNOb3RTY3JhbWJsZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV1RGOjpTY3JhbWJsZWRQdHI6OmRlc2NyYW1ibGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdURjo6U2NyYW1ibGVkUHRyOjpvcGVyYXRvci0+IGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdURjo6U2NyYW1ibGVkUHRyOjpiaXRzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdU
Rjo6U2NyYW1ibGVkUHRyOjpvcGVyYXRvciEgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV1RG
OjpTY3JhbWJsZWRQdHI6Om9wZXJhdG9yIGJvb2wgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V1RGOjpTY3JhbWJsZWRQdHI6Om9wZXJhdG9yPT0gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V1RGOjpTY3JhbWJsZWRQdHI6Om9wZXJhdG9yPT0pOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpT
Y3JhbWJsZWRQdHI6Om9wZXJhdG9yPSk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlNjcmFtYmxl
ZFB0cjo6c2NyYW1ibGUpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTY3JhbWJsZWRQdHI6OmRl
c2NyYW1ibGUpOiBEZWxldGVkLgorICAgICAgICAqIHd0Zi9TY3JhbWJsZWRQdHIuY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIHd0Zi9TY3JhbWJsZWRQdHIuaDogUmVtb3ZlZC4KKwogMjAxNy0xMi0w
NSAgU3RlcGhhbiBTemFibyAgPHN0ZXBoYW4uc3phYm9Ac29ueS5jb20+CiAKICAgICAgICAgU3dp
dGNoIHdpbmRvd3MgYnVpbGQgdG8gVmlzdWFsIFN0dWRpbyAyMDE3CkluZGV4OiBTb3VyY2UvV1RG
L1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
V1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIyNTYxMykKKysrIFNvdXJj
ZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE0
OSw3ICsxNDksNyBAQAogCQlFMzhENkUyNzFGNTUyMkUzMDBBNzVDQzQgLyogU3RyaW5nQnVpbGRl
ckpTT04uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTM4RDZFMjYxRjU1MjJFMzAwQTc1Q0M0IC8qIFN0cmluZ0J1aWxkZXJKU09OLmNwcCAqLzsgfTsK
IAkJRTRBMEFEMzkxQTk2MjQ1NTAwNTM2REY2IC8qIFdvcmtRdWV1ZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEEwQUQzNzFBOTYyNDU1MDA1MzZE
RjYgLyogV29ya1F1ZXVlLmNwcCAqLzsgfTsKIAkJRTRBMEFEM0QxQTk2MjUzQzAwNTM2REY2IC8q
IFdvcmtRdWV1ZUNvY29hLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEU0QTBBRDNDMUE5NjI1M0MwMDUzNkRGNiAvKiBXb3JrUXVldWVDb2NvYS5jcHAg
Ki87IH07Ci0JCUZFODU0MTZFMUZCRTI4NUQwMDhEQTVEQSAvKiBTY3JhbWJsZWRQdHIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4NTQxNkMxRkJF
Mjg1QjAwOERBNURBIC8qIFNjcmFtYmxlZFB0ci5jcHAgKi87IH07CisJCUZFODU0MTZFMUZCRTI4
NUQwMDhEQTVEQSAvKiBQb2lzb25lZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRTg1NDE2QzFGQkUyODVCMDA4REE1REEgLyogUG9pc29uZWQuY3Bw
ICovOyB9OwogCQlGRURBQ0QzRDE2MzBGODNGMDBDNjk2MzQgLyogU3RhY2tTdGF0cy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRURBQ0QzQjE2MzBG
ODNGMDBDNjk2MzQgLyogU3RhY2tTdGF0cy5jcHAgKi87IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxl
IHNlY3Rpb24gKi8KIApAQCAtNjEwLDggKzYxMCw4IEBACiAJCUVGN0Q2Q0Q1OUQ4NjQyQThBMERB
ODZBRCAvKiBTdGFja1RyYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0
YWNrVHJhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjcyQkJEQjEwN0ZBNDI0
ODg2MTc4QjlFIC8qIFN5bWJvbEltcGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU3ltYm9sSW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZF
ODIyNTMwMUIyQTFFNUIwMEJBNjhGRCAvKiBOYWtlZFB0ci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBOYWtlZFB0ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlG
RTg1NDE2QzFGQkUyODVCMDA4REE1REEgLyogU2NyYW1ibGVkUHRyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmFtYmxlZFB0ci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUZFODU0MTZEMUZCRTI4NUMwMDhEQTVEQSAvKiBTY3JhbWJsZWRQdHIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyYW1ibGVkUHRyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODU0MTZDMUZCRTI4NUIwMDhEQTVEQSAvKiBQb2lz
b25lZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb2lzb25lZC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODU0MTZEMUZCRTI4NUMwMDhEQTVE
QSAvKiBQb2lzb25lZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQb2lzb25l
ZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTg2QTg3NDFFNTk0NDAyMDAxMTFC
QkYgLyogRm9yYmlkSGVhcEFsbG9jYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRm9yYmlkSGVhcEFsbG9jYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRkU4OTI1QUYxRDAwREFFQzAwNDY5MDdFIC8qIEluZGVudGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEluZGVudGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUZFREFDRDNCMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0YWNrU3RhdHMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtOTY1LDYgKzk2NSw4IEBACiAJCQkJQTg3NkRCRDcxNTE4MTZFNTAw
REFEQjk1IC8qIFBsYXRmb3JtLmggKi8sCiAJCQkJRTMyMDBBQjQxRTlBNTM2RDAwM0I1OUQyIC8q
IFBsYXRmb3JtUmVnaXN0ZXJzLmggKi8sCiAJCQkJMEZGODYwOTQxQkNDQkQ3NDAwNDUxMjdGIC8q
IFBvaW50ZXJDb21wYXJpc29uLmggKi8sCisJCQkJRkU4NTQxNkMxRkJFMjg1QjAwOERBNURBIC8q
IFBvaXNvbmVkLmNwcCAqLywKKwkJCQlGRTg1NDE2RDFGQkUyODVDMDA4REE1REEgLyogUG9pc29u
ZWQuaCAqLywKIAkJCQkwRjlEMzM1RDE2NURCQTczMDA1QUQzODcgLyogUHJpbnRTdHJlYW0uY3Bw
ICovLAogCQkJCTBGOUQzMzVFMTY1REJBNzMwMDVBRDM4NyAvKiBQcmludFN0cmVhbS5oICovLAog
CQkJCTUzRUMyNTNDMUU5NUFEMzAwMDA4MzFCOSAvKiBQcmlvcml0eVF1ZXVlLmggKi8sCkBAIC0x
MDAxLDggKzEwMDMsNiBAQAogCQkJCTE0Njk0MTk1MTZFQUFGRjgwMDI0RTE0NiAvKiBTY2hlZHVs
ZVBhaXJNYWMubW0gKi8sCiAJCQkJMUEzNTI0QUExRDYzQTJGRjAwMzE3MjlCIC8qIFNjb3BlLmgg
Ki8sCiAJCQkJMEZFQzg0QjAxQkRBQ0QzOTAwODBGRjc0IC8qIFNjb3BlZExhbWJkYS5oICovLAot
CQkJCUZFODU0MTZDMUZCRTI4NUIwMDhEQTVEQSAvKiBTY3JhbWJsZWRQdHIuY3BwICovLAotCQkJ
CUZFODU0MTZEMUZCRTI4NUMwMDhEQTVEQSAvKiBTY3JhbWJsZWRQdHIuaCAqLywKIAkJCQkwRjY2
QjI4NDFEQzk3QkFCMDA0QTFEM0YgLyogU2Vjb25kcy5jcHAgKi8sCiAJCQkJMEY2NkIyODUxREM5
N0JBQjAwNEExRDNGIC8qIFNlY29uZHMuaCAqLywKIAkJCQlBOEE0NzMwNjE1MUE4MjVCMDA0MTIz
RkYgLyogU2VnbWVudGVkVmVjdG9yLmggKi8sCkBAIC0xNDYyLDcgKzE0NjIsNyBAQAogCQkJCTE0
Njk0MTkzMTZFQUFGNkQwMDI0RTE0NiAvKiBSdW5Mb29wVGltZXJDRi5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkxNDY5NDE5OTE2RUFCMDQxMDAyNEUxNDYgLyogU2NoZWR1bGVQYWlyQ0YuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMTQ2OTQxOTcxNkVBQUZGODAwMjRFMTQ2IC8qIFNjaGVkdWxlUGFp
ck1hYy5tbSBpbiBTb3VyY2VzICovLAotCQkJCUZFODU0MTZFMUZCRTI4NUQwMDhEQTVEQSAvKiBT
Y3JhbWJsZWRQdHIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkU4NTQxNkUxRkJFMjg1RDAwOERB
NURBIC8qIFBvaXNvbmVkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNjZCMjhFMURDOTdCQUIw
MDRBMUQzRiAvKiBTZWNvbmRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDIxMTUxQTgy
NUIwMDQxMjNGRiAvKiBTSEExLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzMTFCRDUzMUVBNzFD
QUQwMDUyNTI4MSAvKiBTaWduYWxzLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dU
Ri93dGYvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvQ01ha2VM
aXN0cy50eHQJKHJldmlzaW9uIDIyNTYxMykKKysrIFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsNiArMTA3LDcgQEAgc2V0KFdURl9IRUFERVJTCiAg
ICAgUGFya2luZ0xvdC5oCiAgICAgUGxhdGZvcm0uaAogICAgIFBsYXRmb3JtUmVnaXN0ZXJzLmgK
KyAgICBQb2lzb25lZC5oCiAgICAgUHJpbnRTdHJlYW0uaAogICAgIFByb2Nlc3NJRC5oCiAgICAg
UkFNU2l6ZS5oCkBAIC0xMzAsNyArMTMxLDYgQEAgc2V0KFdURl9IRUFERVJTCiAgICAgU2hhcmVk
VGFzay5oCiAgICAgU2F0dXJhdGVkQXJpdGhtZXRpYy5oCiAgICAgU2NvcGVkTGFtYmRhLmgKLSAg
ICBTY3JhbWJsZWRQdHIuaAogICAgIFNlY29uZHMuaAogICAgIFNlZ21lbnRlZFZlY3Rvci5oCiAg
ICAgU21hbGxQdHJTZXQuaApAQCAtMjU4LDYgKzI1OCw3IEBAIHNldChXVEZfU09VUkNFUwogICAg
IFBhcmFsbGVsSGVscGVyUG9vbC5jcHAKICAgICBQYXJhbGxlbEpvYnNHZW5lcmljLmNwcAogICAg
IFBhcmtpbmdMb3QuY3BwCisgICAgUG9pc29uZWQuY3BwCiAgICAgUHJpbnRTdHJlYW0uY3BwCiAg
ICAgUkFNU2l6ZS5jcHAKICAgICBSYW5kb21EZXZpY2UuY3BwCkBAIC0yNjYsNyArMjY3LDYgQEAg
c2V0KFdURl9TT1VSQ0VTCiAgICAgUmVmQ291bnRlZExlYWtDb3VudGVyLmNwcAogICAgIFJ1bkxv
b3AuY3BwCiAgICAgU0hBMS5jcHAKLSAgICBTY3JhbWJsZWRQdHIuY3BwCiAgICAgU2Vjb25kcy5j
cHAKICAgICBTaXhDaGFyYWN0ZXJIYXNoLmNwcAogICAgIFN0YWNrQm91bmRzLmNwcApJbmRleDog
U291cmNlL1dURi93dGYvUG9pc29uZWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3Rm
L1BvaXNvbmVkLmNwcAkocmV2aXNpb24gMjI1NjEzKQkoZnJvbSBTb3VyY2UvV1RGL3d0Zi9TY3Jh
bWJsZWRQdHIuY3BwOjIyNTYxMykKKysrIFNvdXJjZS9XVEYvd3RmL1BvaXNvbmVkLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNjcmFtYmxl
ZFB0ci5oIgorCisjaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmg+
CisKK25hbWVzcGFjZSBXVEYgeworCit1aW50cHRyX3QgbWFrZVNjcmFtYmxlZFB0cktleSgpCit7
CisgICAgdWludHB0cl90IGtleSA9IGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyKCk7Cisj
aWYgVVNFKEpTVkFMVUU2NCkgJiYgIU9TKFdJTkRPV1MpCisgICAga2V5ID0gKGtleSA8PCAzMikg
XiAoc3RhdGljX2Nhc3Q8dWludHB0cl90PihjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigp
KSA8PCAzKTsKKyAgICAvLyBFbnN1cmUgdGhhdCB0aGUgc2NyYW1ibGVkIGJpdHMgKHBvaW50ZXIg
XiBrZXkpIGRvIG5vdCBtYWtlIGEgdmFsaWQgcG9pbnRlciBhbmQKKyAgICAvLyBjYW5ub3QgYmUg
MC4gV2UgZW5zdXJlIHRoYXQgaXQgaXMgemVybyBzbyB0aGF0IHRoZSBzY3JhbWJsZWQgYml0cyBj
YW4gYWxzbyBiZQorICAgIC8vIHVzZWQgZm9yIGEgbm90bWFsIHplcm8gY2hlY2sgd2l0aG91dCBu
ZWVkaW5nIHRvIGRlc2NyYW1ibGUgZmlyc3QuCisgICAga2V5IHw9IChzdGF0aWNfY2FzdDx1aW50
cHRyX3Q+KDB4MSkgPDwgNjMpOworI2Vsc2UKKyAgICBrZXkgPSAwOyAvLyBTY3JhbWJsaW5nIGlz
IG5vdCBzdXBwb3J0ZWQgb24gMzItYml0IG9yIG5vbi1kYXJ3aW4gcGxhdGZvcm1zIHlldC4KKyNl
bmRpZgorICAgIHJldHVybiBrZXk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCkluZGV4OiBT
b3VyY2UvV1RGL3d0Zi9Qb2lzb25lZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYv
UG9pc29uZWQuY3BwCShyZXZpc2lvbiAyMjU2MTMpCisrKyBTb3VyY2UvV1RGL3d0Zi9Qb2lzb25l
ZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDIzICsyNCwyMyBAQAogICovCiAKICNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJTY3JhbWJsZWRQdHIuaCIKKyNpbmNsdWRlICJQb2lzb25l
ZC5oIgogCiAjaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmg+CiAK
IG5hbWVzcGFjZSBXVEYgewogCi11aW50cHRyX3QgbWFrZVNjcmFtYmxlZFB0cktleSgpCit1aW50
cHRyX3QgbWFrZVBvaXNvbigpCiB7CiAgICAgdWludHB0cl90IGtleSA9IGNyeXB0b2dyYXBoaWNh
bGx5UmFuZG9tTnVtYmVyKCk7CiAjaWYgVVNFKEpTVkFMVUU2NCkgJiYgIU9TKFdJTkRPV1MpCiAg
ICAga2V5ID0gKGtleSA8PCAzMikgXiAoc3RhdGljX2Nhc3Q8dWludHB0cl90PihjcnlwdG9ncmFw
aGljYWxseVJhbmRvbU51bWJlcigpKSA8PCAzKTsKLSAgICAvLyBFbnN1cmUgdGhhdCB0aGUgc2Ny
YW1ibGVkIGJpdHMgKHBvaW50ZXIgXiBrZXkpIGRvIG5vdCBtYWtlIGEgdmFsaWQgcG9pbnRlciBh
bmQKLSAgICAvLyBjYW5ub3QgYmUgMC4gV2UgZW5zdXJlIHRoYXQgaXQgaXMgemVybyBzbyB0aGF0
IHRoZSBzY3JhbWJsZWQgYml0cyBjYW4gYWxzbyBiZQotICAgIC8vIHVzZWQgZm9yIGEgbm90bWFs
IHplcm8gY2hlY2sgd2l0aG91dCBuZWVkaW5nIHRvIGRlc2NyYW1ibGUgZmlyc3QuCisgICAgLy8g
RW5zdXJlIHRoYXQgdGhlIHBvaXNvbmVkIGJpdHMgKHBvaW50ZXIgXiBrZXkpIGRvIG5vdCBtYWtl
IGEgdmFsaWQgcG9pbnRlciBhbmQKKyAgICAvLyBjYW5ub3QgYmUgMC4gV2UgZW5zdXJlIHRoYXQg
aXQgaXMgemVybyBzbyB0aGF0IHRoZSBwb2lzb25lZCBiaXRzIGNhbiBhbHNvIGJlCisgICAgLy8g
dXNlZCBmb3IgYSBub3RtYWwgemVybyBjaGVjayB3aXRob3V0IG5lZWRpbmcgdG8gZGVjb2RlZCBm
aXJzdC4KICAgICBrZXkgfD0gKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMHgxKSA8PCA2Myk7CiAj
ZWxzZQotICAgIGtleSA9IDA7IC8vIFNjcmFtYmxpbmcgaXMgbm90IHN1cHBvcnRlZCBvbiAzMi1i
aXQgb3Igbm9uLWRhcndpbiBwbGF0Zm9ybXMgeWV0LgorICAgIGtleSA9IDA7IC8vIFBvaXNvbmlu
ZyBpcyBub3Qgc3VwcG9ydGVkIG9uIDMyLWJpdCBvciBub24tZGFyd2luIHBsYXRmb3JtcyB5ZXQu
CiAjZW5kaWYKICAgICByZXR1cm4ga2V5OwogfQpJbmRleDogU291cmNlL1dURi93dGYvUG9pc29u
ZWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Qb2lzb25lZC5oCShyZXZpc2lvbiAy
MjU2MTMpCShmcm9tIFNvdXJjZS9XVEYvd3RmL1NjcmFtYmxlZFB0ci5oOjIyNTYxMykKKysrIFNv
dXJjZS9XVEYvd3RmL1BvaXNvbmVkLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMjkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisKKyNkZWZpbmUgRU5BQkxFX1NDUkFN
QkxFRF9QVFJfQVNTRVJUUyAwCisKKy8vIE5vdCBjdXJyZW50bHkgc3VwcG9ydGVkIGZvciAzMi1i
aXQgb3IgT1MoV0lORE9XUykgYnVpbGRzIChiZWNhdXNlIG9mIG1pc3NpbmcgbGxpbnQgc3VwcG9y
dCkuCisvLyBNYWtlIHN1cmUgaXQncyBkaXNhYmxlZC4KKyNpZiBVU0UoSlNWQUxVRTMyXzY0KSB8
fCBPUyhXSU5ET1dTKQorI3VuZGVmIEVOQUJMRV9TQ1JBTUJMRURfUFRSX0FTU0VSVFMKKyNkZWZp
bmUgRU5BQkxFX1NDUkFNQkxFRF9QVFJfQVNTRVJUUyAwCisjZW5kaWYKKworbmFtZXNwYWNlIFdU
RiB7CisKK3VzaW5nIFNjcmFtYmxlZFB0ckJpdHMgPSB1aW50cHRyX3Q7CisKK3RlbXBsYXRlPHR5
cGVuYW1lIFQsIHVpbnRwdHJfdCYga2V5LCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8c3Rk
Ojppc19wb2ludGVyPFQ+Ojp2YWx1ZT4+CitjbGFzcyBTY3JhbWJsZWRQdHIgeworcHVibGljOgor
ICAgIFNjcmFtYmxlZFB0cigpIHsgfQorCisgICAgZXhwbGljaXQgU2NyYW1ibGVkUHRyKFQgcHRy
KQorICAgICAgICA6IG1fc2NyYW1ibGVkQml0cyhzY3JhbWJsZShwdHIpKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKHB0ciAmJiBtX3NjcmFtYmxlZEJpdHMpOworICAgIH0KKworICAgIFNjcmFtYmxl
ZFB0cihjb25zdCBTY3JhbWJsZWRQdHImKSA9IGRlZmF1bHQ7CisKKyAgICBleHBsaWNpdCBTY3Jh
bWJsZWRQdHIoU2NyYW1ibGVkUHRyQml0cyBzY3JhbWJsZWRCaXRzKQorICAgICAgICA6IG1fc2Ny
YW1ibGVkQml0cyhzY3JhbWJsZWRCaXRzKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fc2NyYW1i
bGVkQml0cyk7CisgICAgfQorCisjaWYgRU5BQkxFKFNDUkFNQkxFRF9QVFJfQVNTRVJUUykKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gdm9pZCo+CisgICAgc3RhdGljIGJvb2wgaXNTY3JhbWJs
ZWQoVSB2YWx1ZSkgeyByZXR1cm4gIXZhbHVlIHx8IChyZWludGVycHJldF9jYXN0PHVpbnRwdHJf
dD4odmFsdWUpICYgMHhmZmZmMDAwMDAwMDAwMDAwKTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFUgPSB2b2lkKj4KKyAgICBzdGF0aWMgdm9pZCBhc3NlcnRJc1NjcmFtYmxlZChVIHZhbHVlKSB7
IFJFTEVBU0VfQVNTRVJUKGlzU2NyYW1ibGVkKHZhbHVlKSk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBVID0gdm9pZCo+CisgICAgc3RhdGljIHZvaWQgYXNzZXJ0SXNOb3RTY3JhbWJsZWQoVSB2
YWx1ZSkgeyBSRUxFQVNFX0FTU0VSVCghaXNTY3JhbWJsZWQodmFsdWUpKTsgfQorI2Vsc2UKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gdm9pZCo+IHN0YXRpYyB2b2lkIGFzc2VydElzU2NyYW1i
bGVkKFUpIHsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSB2b2lkKj4gc3RhdGljIHZvaWQg
YXNzZXJ0SXNOb3RTY3JhbWJsZWQoVSkgeyB9CisjZW5kaWYKKyAgICB2b2lkIGFzc2VydElzU2Ny
YW1ibGVkKCkgY29uc3QgeyBhc3NlcnRJc1NjcmFtYmxlZChtX3NjcmFtYmxlZEJpdHMpOyB9Cisg
ICAgdm9pZCBhc3NlcnRJc05vdFNjcmFtYmxlZCgpIGNvbnN0IHsgYXNzZXJ0SXNOb3RTY3JhbWJs
ZWQobV9zY3JhbWJsZWRCaXRzKTsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQ+Cisg
ICAgVSBkZXNjcmFtYmxlZCgpIGNvbnN0IHsgcmV0dXJuIGRlc2NyYW1ibGU8VT4obV9zY3JhbWJs
ZWRCaXRzKTsgfQorCisgICAgQUxXQVlTX0lOTElORSBUIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJl
dHVybiBkZXNjcmFtYmxlPFQ+KG1fc2NyYW1ibGVkQml0cyk7IH0KKworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFUgPSBTY3JhbWJsZWRQdHJCaXRzPgorICAgIFUgYml0cygpIGNvbnN0IHsgcmV0dXJu
IGJpdHdpc2VfY2FzdDxVPihtX3NjcmFtYmxlZEJpdHMpOyB9CisKKyAgICBib29sIG9wZXJhdG9y
ISgpIGNvbnN0IHsgcmV0dXJuICFtX3NjcmFtYmxlZEJpdHM7IH0KKyAgICBleHBsaWNpdCBvcGVy
YXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX3NjcmFtYmxlZEJpdHM7IH0KKworICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBTY3JhbWJsZWRQdHImIGIpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gbV9zY3JhbWJsZWRCaXRzID09IGIubV9zY3JhbWJsZWRCaXRzOworICAgIH0KKwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFB0clR5cGUgPSB2b2lkKiwgdHlwZW5hbWUgPSB0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3BvaW50ZXI8UHRyVHlwZT46OnZhbHVlPjo6dHlwZT4K
KyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUHRyVHlwZSBiKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGRlc2NyYW1ibGVkPFB0clR5cGU+KCkgPT0gYjsKKyAgICB9CisKKyAgICBTY3JhbWJsZWRQ
dHImIG9wZXJhdG9yPShUIHB0cikKKyAgICB7CisgICAgICAgIG1fc2NyYW1ibGVkQml0cyA9IHB0
ciA/IHNjcmFtYmxlKHB0cikgOiAwOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorICAg
IFNjcmFtYmxlZFB0ciYgb3BlcmF0b3I9KGNvbnN0IFNjcmFtYmxlZFB0ciYpID0gZGVmYXVsdDsK
KworcHJpdmF0ZToKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+
CisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgU2NyYW1ibGVkUHRyQml0cyBzY3JhbWJsZShVIHB0
cikgeyByZXR1cm4gYml0d2lzZV9jYXN0PFNjcmFtYmxlZFB0ckJpdHM+KHB0cikgXiBrZXk7IH0K
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgorICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFUgZGVz
Y3JhbWJsZShTY3JhbWJsZWRQdHJCaXRzIHNjcmFtYmxlZEJpdHMpIHsgcmV0dXJuIGJpdHdpc2Vf
Y2FzdDxVPihzY3JhbWJsZWRCaXRzIF4ga2V5KTsgfQorI2Vsc2UKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBVPgorICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFNjcmFtYmxlZFB0ckJpdHMgc2NyYW1i
bGUoVSBwdHIpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxTY3JhbWJsZWRQdHJCaXRzPihwdHIpOyB9
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBVIGRl
c2NyYW1ibGUoU2NyYW1ibGVkUHRyQml0cyBzY3JhbWJsZWRCaXRzKSB7IHJldHVybiBiaXR3aXNl
X2Nhc3Q8VT4oc2NyYW1ibGVkQml0cyk7IH0KKyNlbmRpZgorCisgICAgU2NyYW1ibGVkUHRyQml0
cyBtX3NjcmFtYmxlZEJpdHMgeyAwIH07Cit9OworCit2b2lkIGluaXRpYWxpemVTY3JhbWJsZWRQ
dHIoKTsKK1dURl9FWFBPUlRfUFJJVkFURSB1aW50cHRyX3QgbWFrZVNjcmFtYmxlZFB0cktleSgp
OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpTY3JhbWJsZWRQdHI7Cit1c2lu
ZyBXVEY6OlNjcmFtYmxlZFB0ckJpdHM7Cit1c2luZyBXVEY6Om1ha2VTY3JhbWJsZWRQdHJLZXk7
CisKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BvaXNvbmVkLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvUG9pc29uZWQuaAkocmV2aXNpb24gMjI1NjEzKQorKysgU291cmNlL1dURi93dGYv
UG9pc29uZWQuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTAzICsyNywxMDkgQEAKIAogI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAKLSNkZWZpbmUgRU5BQkxFX1NDUkFNQkxFRF9QVFJfQVNT
RVJUUyAwCisjZGVmaW5lIEVOQUJMRV9QT0lTT05fQVNTRVJUUyAwCiAKIC8vIE5vdCBjdXJyZW50
bHkgc3VwcG9ydGVkIGZvciAzMi1iaXQgb3IgT1MoV0lORE9XUykgYnVpbGRzIChiZWNhdXNlIG9m
IG1pc3NpbmcgbGxpbnQgc3VwcG9ydCkuCiAvLyBNYWtlIHN1cmUgaXQncyBkaXNhYmxlZC4KICNp
ZiBVU0UoSlNWQUxVRTMyXzY0KSB8fCBPUyhXSU5ET1dTKQotI3VuZGVmIEVOQUJMRV9TQ1JBTUJM
RURfUFRSX0FTU0VSVFMKLSNkZWZpbmUgRU5BQkxFX1NDUkFNQkxFRF9QVFJfQVNTRVJUUyAwCisj
dW5kZWYgRU5BQkxFX1BPSVNPTl9BU1NFUlRTCisjZGVmaW5lIEVOQUJMRV9QT0lTT05fQVNTRVJU
UyAwCiAjZW5kaWYKIAogbmFtZXNwYWNlIFdURiB7CiAKLXVzaW5nIFNjcmFtYmxlZFB0ckJpdHMg
PSB1aW50cHRyX3Q7Cit1c2luZyBQb2lzb25lZEJpdHMgPSB1aW50cHRyX3Q7CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIFQsIHVpbnRwdHJfdCYga2V5LCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8
c3RkOjppc19wb2ludGVyPFQ+Ojp2YWx1ZT4+Ci1jbGFzcyBTY3JhbWJsZWRQdHIgewordGVtcGxh
dGU8dHlwZW5hbWUgS2V5VHlwZSwgS2V5VHlwZSBrZXksIHR5cGVuYW1lIFQsIHR5cGVuYW1lID0g
c3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX3BvaW50ZXI8VD46OnZhbHVlPj4KK2NsYXNzIFBvaXNv
bmVkSW1wbCB7CiBwdWJsaWM6Ci0gICAgU2NyYW1ibGVkUHRyKCkgeyB9CisgICAgUG9pc29uZWRJ
bXBsKCkgeyB9CiAKLSAgICBleHBsaWNpdCBTY3JhbWJsZWRQdHIoVCBwdHIpCi0gICAgICAgIDog
bV9zY3JhbWJsZWRCaXRzKHNjcmFtYmxlKHB0cikpCisgICAgZXhwbGljaXQgUG9pc29uZWRJbXBs
KFQgcHRyKQorICAgICAgICA6IG1fcG9pc29uZWRCaXRzKHBvaXNvbihwdHIpKQogICAgIHsKLSAg
ICAgICAgQVNTRVJUKHB0ciAmJiBtX3NjcmFtYmxlZEJpdHMpOworICAgICAgICBBU1NFUlQocHRy
ICYmIG1fcG9pc29uZWRCaXRzKTsKICAgICB9CiAKLSAgICBTY3JhbWJsZWRQdHIoY29uc3QgU2Ny
YW1ibGVkUHRyJikgPSBkZWZhdWx0OworICAgIFBvaXNvbmVkSW1wbChjb25zdCBQb2lzb25lZElt
cGwmKSA9IGRlZmF1bHQ7CiAKLSAgICBleHBsaWNpdCBTY3JhbWJsZWRQdHIoU2NyYW1ibGVkUHRy
Qml0cyBzY3JhbWJsZWRCaXRzKQotICAgICAgICA6IG1fc2NyYW1ibGVkQml0cyhzY3JhbWJsZWRC
aXRzKQorICAgIGV4cGxpY2l0IFBvaXNvbmVkSW1wbChQb2lzb25lZEJpdHMgcG9pc29uZWRCaXRz
KQorICAgICAgICA6IG1fcG9pc29uZWRCaXRzKHBvaXNvbmVkQml0cykKICAgICB7Ci0gICAgICAg
IEFTU0VSVChtX3NjcmFtYmxlZEJpdHMpOworICAgICAgICBBU1NFUlQobV9wb2lzb25lZEJpdHMp
OwogICAgIH0KIAotI2lmIEVOQUJMRShTQ1JBTUJMRURfUFRSX0FTU0VSVFMpCisjaWYgRU5BQkxF
KFBPSVNPTl9BU1NFUlRTKQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSB2b2lkKj4KLSAgICBz
dGF0aWMgYm9vbCBpc1NjcmFtYmxlZChVIHZhbHVlKSB7IHJldHVybiAhdmFsdWUgfHwgKHJlaW50
ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih2YWx1ZSkgJiAweGZmZmYwMDAwMDAwMDAwMDApOyB9Cisg
ICAgc3RhdGljIGJvb2wgaXNQb2lzb25lZChVIHZhbHVlKSB7IHJldHVybiAhdmFsdWUgfHwgKHJl
aW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih2YWx1ZSkgJiAweGZmZmYwMDAwMDAwMDAwMDApOyB9
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IHZvaWQqPgotICAgIHN0YXRpYyB2b2lkIGFzc2Vy
dElzU2NyYW1ibGVkKFUgdmFsdWUpIHsgUkVMRUFTRV9BU1NFUlQoaXNTY3JhbWJsZWQodmFsdWUp
KTsgfQorICAgIHN0YXRpYyB2b2lkIGFzc2VydElzUG9pc29uZWQoVSB2YWx1ZSkgeyBSRUxFQVNF
X0FTU0VSVChpc1BvaXNvbmVkKHZhbHVlKSk7IH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0g
dm9pZCo+Ci0gICAgc3RhdGljIHZvaWQgYXNzZXJ0SXNOb3RTY3JhbWJsZWQoVSB2YWx1ZSkgeyBS
RUxFQVNFX0FTU0VSVCghaXNTY3JhbWJsZWQodmFsdWUpKTsgfQorICAgIHN0YXRpYyB2b2lkIGFz
c2VydElzTm90UG9pc29uZWQoVSB2YWx1ZSkgeyBSRUxFQVNFX0FTU0VSVCghaXNQb2lzb25lZCh2
YWx1ZSkpOyB9CiAjZWxzZQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSB2b2lkKj4gc3RhdGlj
IHZvaWQgYXNzZXJ0SXNTY3JhbWJsZWQoVSkgeyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9
IHZvaWQqPiBzdGF0aWMgdm9pZCBhc3NlcnRJc05vdFNjcmFtYmxlZChVKSB7IH0KKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBVID0gdm9pZCo+IHN0YXRpYyB2b2lkIGFzc2VydElzUG9pc29uZWQoVSkg
eyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IHZvaWQqPiBzdGF0aWMgdm9pZCBhc3NlcnRJ
c05vdFBvaXNvbmVkKFUpIHsgfQogI2VuZGlmCi0gICAgdm9pZCBhc3NlcnRJc1NjcmFtYmxlZCgp
IGNvbnN0IHsgYXNzZXJ0SXNTY3JhbWJsZWQobV9zY3JhbWJsZWRCaXRzKTsgfQotICAgIHZvaWQg
YXNzZXJ0SXNOb3RTY3JhbWJsZWQoKSBjb25zdCB7IGFzc2VydElzTm90U2NyYW1ibGVkKG1fc2Ny
YW1ibGVkQml0cyk7IH0KKyAgICB2b2lkIGFzc2VydElzUG9pc29uZWQoKSBjb25zdCB7IGFzc2Vy
dElzUG9pc29uZWQobV9wb2lzb25lZEJpdHMpOyB9CisgICAgdm9pZCBhc3NlcnRJc05vdFBvaXNv
bmVkKCkgY29uc3QgeyBhc3NlcnRJc05vdFBvaXNvbmVkKG1fcG9pc29uZWRCaXRzKTsgfQogCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQ+Ci0gICAgVSBkZXNjcmFtYmxlZCgpIGNvbnN0IHsg
cmV0dXJuIGRlc2NyYW1ibGU8VT4obV9zY3JhbWJsZWRCaXRzKTsgfQorICAgIFUgdW5wb2lzb25l
ZCgpIGNvbnN0IHsgcmV0dXJuIHVucG9pc29uPFU+KG1fcG9pc29uZWRCaXRzKTsgfQogCi0gICAg
QUxXQVlTX0lOTElORSBUIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBkZXNjcmFtYmxlPFQ+
KG1fc2NyYW1ibGVkQml0cyk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIFQgb3BlcmF0b3ItPigpIGNv
bnN0IHsgcmV0dXJuIHVucG9pc29uPFQ+KG1fcG9pc29uZWRCaXRzKTsgfQogCi0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgVSA9IFNjcmFtYmxlZFB0ckJpdHM+Ci0gICAgVSBiaXRzKCkgY29uc3QgeyBy
ZXR1cm4gYml0d2lzZV9jYXN0PFU+KG1fc2NyYW1ibGVkQml0cyk7IH0KKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBVID0gUG9pc29uZWRCaXRzPgorICAgIFUgYml0cygpIGNvbnN0IHsgcmV0dXJuIGJp
dHdpc2VfY2FzdDxVPihtX3BvaXNvbmVkQml0cyk7IH0KIAotICAgIGJvb2wgb3BlcmF0b3IhKCkg
Y29uc3QgeyByZXR1cm4gIW1fc2NyYW1ibGVkQml0czsgfQotICAgIGV4cGxpY2l0IG9wZXJhdG9y
IGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1fc2NyYW1ibGVkQml0czsgfQorICAgIGJvb2wgb3Bl
cmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fcG9pc29uZWRCaXRzOyB9CisgICAgZXhwbGljaXQg
b3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9wb2lzb25lZEJpdHM7IH0KIAotICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBTY3JhbWJsZWRQdHImIGIpIGNvbnN0CisgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFBvaXNvbmVkSW1wbCYgYikgY29uc3QKICAgICB7Ci0gICAgICAgIHJl
dHVybiBtX3NjcmFtYmxlZEJpdHMgPT0gYi5tX3NjcmFtYmxlZEJpdHM7CisgICAgICAgIHJldHVy
biBtX3BvaXNvbmVkQml0cyA9PSBiLm1fcG9pc29uZWRCaXRzOwogICAgIH0KIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFB0clR5cGUgPSB2b2lkKiwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVu
YWJsZV9pZjxzdGQ6OmlzX3BvaW50ZXI8UHRyVHlwZT46OnZhbHVlPjo6dHlwZT4KICAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgUHRyVHlwZSBiKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGRlc2Ny
YW1ibGVkPFB0clR5cGU+KCkgPT0gYjsKKyAgICAgICAgcmV0dXJuIHVucG9pc29uZWQ8UHRyVHlw
ZT4oKSA9PSBiOwogICAgIH0KIAotICAgIFNjcmFtYmxlZFB0ciYgb3BlcmF0b3I9KFQgcHRyKQor
ICAgIFBvaXNvbmVkSW1wbCYgb3BlcmF0b3I9KFQgcHRyKQogICAgIHsKLSAgICAgICAgbV9zY3Jh
bWJsZWRCaXRzID0gcHRyID8gc2NyYW1ibGUocHRyKSA6IDA7CisgICAgICAgIG1fcG9pc29uZWRC
aXRzID0gcG9pc29uKHB0cik7CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9Ci0gICAgU2Ny
YW1ibGVkUHRyJiBvcGVyYXRvcj0oY29uc3QgU2NyYW1ibGVkUHRyJikgPSBkZWZhdWx0OworICAg
IFBvaXNvbmVkSW1wbCYgb3BlcmF0b3I9KGNvbnN0IFBvaXNvbmVkSW1wbCYpID0gZGVmYXVsdDsK
IAogcHJpdmF0ZToKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+
Ci0gICAgQUxXQVlTX0lOTElORSBzdGF0aWMgU2NyYW1ibGVkUHRyQml0cyBzY3JhbWJsZShVIHB0
cikgeyByZXR1cm4gYml0d2lzZV9jYXN0PFNjcmFtYmxlZFB0ckJpdHM+KHB0cikgXiBrZXk7IH0K
KyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBQb2lzb25lZEJpdHMgcG9pc29uKFUgcHRyKSB7IHJl
dHVybiBwdHIgPyBiaXR3aXNlX2Nhc3Q8UG9pc29uZWRCaXRzPihwdHIpIF4ga2V5IDogMDsgfQog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgQUxXQVlTX0lOTElORSBzdGF0aWMgVSBkZXNj
cmFtYmxlKFNjcmFtYmxlZFB0ckJpdHMgc2NyYW1ibGVkQml0cykgeyByZXR1cm4gYml0d2lzZV9j
YXN0PFU+KHNjcmFtYmxlZEJpdHMgXiBrZXkpOyB9CisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMg
VSB1bnBvaXNvbihQb2lzb25lZEJpdHMgcG9pc29uZWRCaXRzKSB7IHJldHVybiBwb2lzb25lZEJp
dHMgPyBiaXR3aXNlX2Nhc3Q8VT4ocG9pc29uZWRCaXRzIF4ga2V5KSA6IGJpdHdpc2VfY2FzdDxV
PigwbGwpOyB9CiAjZWxzZQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgQUxXQVlTX0lO
TElORSBzdGF0aWMgU2NyYW1ibGVkUHRyQml0cyBzY3JhbWJsZShVIHB0cikgeyByZXR1cm4gYml0
d2lzZV9jYXN0PFNjcmFtYmxlZFB0ckJpdHM+KHB0cik7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHN0
YXRpYyBQb2lzb25lZEJpdHMgcG9pc29uKFUgcHRyKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8UG9p
c29uZWRCaXRzPihwdHIpOyB9CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICBBTFdBWVNf
SU5MSU5FIHN0YXRpYyBVIGRlc2NyYW1ibGUoU2NyYW1ibGVkUHRyQml0cyBzY3JhbWJsZWRCaXRz
KSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8VT4oc2NyYW1ibGVkQml0cyk7IH0KKyAgICBBTFdBWVNf
SU5MSU5FIHN0YXRpYyBVIHVucG9pc29uKFBvaXNvbmVkQml0cyBwb2lzb25lZEJpdHMpIHsgcmV0
dXJuIGJpdHdpc2VfY2FzdDxVPihwb2lzb25lZEJpdHMpOyB9CiAjZW5kaWYKIAotICAgIFNjcmFt
YmxlZFB0ckJpdHMgbV9zY3JhbWJsZWRCaXRzIHsgMCB9OworICAgIFBvaXNvbmVkQml0cyBtX3Bv
aXNvbmVkQml0cyB7IDAgfTsKIH07CiAKLXZvaWQgaW5pdGlhbGl6ZVNjcmFtYmxlZFB0cigpOwot
V1RGX0VYUE9SVF9QUklWQVRFIHVpbnRwdHJfdCBtYWtlU2NyYW1ibGVkUHRyS2V5KCk7Cit0ZW1w
bGF0ZTx1aW50cHRyX3QmIGtleSwgdHlwZW5hbWUgVD4KK3VzaW5nIFBvaXNvbmVkID0gUG9pc29u
ZWRJbXBsPGNvbnN0IHVpbnRwdHJfdCYsIGtleSwgVD47CisKK3RlbXBsYXRlPGludDMyX3Qga2V5
LCB0eXBlbmFtZSBUPgordXNpbmcgSW50MzJQb2lzb25lZCA9IFBvaXNvbmVkSW1wbDx1aW50cHRy
X3QsIHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oa2V5KSA8PCAzMiwgVD47CisKK1dURl9FWFBPUlRf
UFJJVkFURSB1aW50cHRyX3QgbWFrZVBvaXNvbigpOwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAot
dXNpbmcgV1RGOjpTY3JhbWJsZWRQdHI7Ci11c2luZyBXVEY6OlNjcmFtYmxlZFB0ckJpdHM7Ci11
c2luZyBXVEY6Om1ha2VTY3JhbWJsZWRQdHJLZXk7Cit1c2luZyBXVEY6OkludDMyUG9pc29uZWQ7
Cit1c2luZyBXVEY6OlBvaXNvbmVkOwordXNpbmcgV1RGOjpQb2lzb25lZEJpdHM7Cit1c2luZyBX
VEY6Om1ha2VQb2lzb247CiAKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1NjcmFtYmxlZFB0ci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU2NyYW1ibGVkUHRyLmNwcAkocmV2aXNpb24g
MjI1NjEzKQorKysgU291cmNlL1dURi93dGYvU2NyYW1ibGVkUHRyLmNwcAkobm9uZXhpc3RlbnQp
CkBAIC0xLDQ5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2NyYW1ibGVkUHRyLmgiCi0K
LSNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KLQotbmFtZXNw
YWNlIFdURiB7Ci0KLXVpbnRwdHJfdCBtYWtlU2NyYW1ibGVkUHRyS2V5KCkKLXsKLSAgICB1aW50
cHRyX3Qga2V5ID0gY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIoKTsKLSNpZiBVU0UoSlNW
QUxVRTY0KSAmJiAhT1MoV0lORE9XUykKLSAgICBrZXkgPSAoa2V5IDw8IDMyKSBeIChzdGF0aWNf
Y2FzdDx1aW50cHRyX3Q+KGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyKCkpIDw8IDMpOwot
ICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBzY3JhbWJsZWQgYml0cyAocG9pbnRlciBeIGtleSkgZG8g
bm90IG1ha2UgYSB2YWxpZCBwb2ludGVyIGFuZAotICAgIC8vIGNhbm5vdCBiZSAwLiBXZSBlbnN1
cmUgdGhhdCBpdCBpcyB6ZXJvIHNvIHRoYXQgdGhlIHNjcmFtYmxlZCBiaXRzIGNhbiBhbHNvIGJl
Ci0gICAgLy8gdXNlZCBmb3IgYSBub3RtYWwgemVybyBjaGVjayB3aXRob3V0IG5lZWRpbmcgdG8g
ZGVzY3JhbWJsZSBmaXJzdC4KLSAgICBrZXkgfD0gKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMHgx
KSA8PCA2Myk7Ci0jZWxzZQotICAgIGtleSA9IDA7IC8vIFNjcmFtYmxpbmcgaXMgbm90IHN1cHBv
cnRlZCBvbiAzMi1iaXQgb3Igbm9uLWRhcndpbiBwbGF0Zm9ybXMgeWV0LgotI2VuZGlmCi0gICAg
cmV0dXJuIGtleTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KSW5kZXg6IFNvdXJjZS9XVEYv
d3RmL1NjcmFtYmxlZFB0ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1NjcmFtYmxl
ZFB0ci5oCShyZXZpc2lvbiAyMjU2MTMpCisrKyBTb3VyY2UvV1RGL3d0Zi9TY3JhbWJsZWRQdHIu
aAkobm9uZXhpc3RlbnQpCkBAIC0xLDEyOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlIDx3dGYvQXNz
ZXJ0aW9ucy5oPgotCi0jZGVmaW5lIEVOQUJMRV9TQ1JBTUJMRURfUFRSX0FTU0VSVFMgMAotCi0v
LyBOb3QgY3VycmVudGx5IHN1cHBvcnRlZCBmb3IgMzItYml0IG9yIE9TKFdJTkRPV1MpIGJ1aWxk
cyAoYmVjYXVzZSBvZiBtaXNzaW5nIGxsaW50IHN1cHBvcnQpLgotLy8gTWFrZSBzdXJlIGl0J3Mg
ZGlzYWJsZWQuCi0jaWYgVVNFKEpTVkFMVUUzMl82NCkgfHwgT1MoV0lORE9XUykKLSN1bmRlZiBF
TkFCTEVfU0NSQU1CTEVEX1BUUl9BU1NFUlRTCi0jZGVmaW5lIEVOQUJMRV9TQ1JBTUJMRURfUFRS
X0FTU0VSVFMgMAotI2VuZGlmCi0KLW5hbWVzcGFjZSBXVEYgewotCi11c2luZyBTY3JhbWJsZWRQ
dHJCaXRzID0gdWludHB0cl90OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB1aW50cHRyX3QmIGtl
eSwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfcG9pbnRlcjxUPjo6dmFsdWU+
PgotY2xhc3MgU2NyYW1ibGVkUHRyIHsKLXB1YmxpYzoKLSAgICBTY3JhbWJsZWRQdHIoKSB7IH0K
LQotICAgIGV4cGxpY2l0IFNjcmFtYmxlZFB0cihUIHB0cikKLSAgICAgICAgOiBtX3NjcmFtYmxl
ZEJpdHMoc2NyYW1ibGUocHRyKSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChwdHIgJiYgbV9zY3Jh
bWJsZWRCaXRzKTsKLSAgICB9Ci0KLSAgICBTY3JhbWJsZWRQdHIoY29uc3QgU2NyYW1ibGVkUHRy
JikgPSBkZWZhdWx0OwotCi0gICAgZXhwbGljaXQgU2NyYW1ibGVkUHRyKFNjcmFtYmxlZFB0ckJp
dHMgc2NyYW1ibGVkQml0cykKLSAgICAgICAgOiBtX3NjcmFtYmxlZEJpdHMoc2NyYW1ibGVkQml0
cykKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3NjcmFtYmxlZEJpdHMpOwotICAgIH0KLQotI2lm
IEVOQUJMRShTQ1JBTUJMRURfUFRSX0FTU0VSVFMpCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9
IHZvaWQqPgotICAgIHN0YXRpYyBib29sIGlzU2NyYW1ibGVkKFUgdmFsdWUpIHsgcmV0dXJuICF2
YWx1ZSB8fCAocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSAmIDB4ZmZmZjAwMDAw
MDAwMDAwMCk7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gdm9pZCo+Ci0gICAgc3RhdGlj
IHZvaWQgYXNzZXJ0SXNTY3JhbWJsZWQoVSB2YWx1ZSkgeyBSRUxFQVNFX0FTU0VSVChpc1NjcmFt
YmxlZCh2YWx1ZSkpOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IHZvaWQqPgotICAgIHN0
YXRpYyB2b2lkIGFzc2VydElzTm90U2NyYW1ibGVkKFUgdmFsdWUpIHsgUkVMRUFTRV9BU1NFUlQo
IWlzU2NyYW1ibGVkKHZhbHVlKSk7IH0KLSNlbHNlCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9
IHZvaWQqPiBzdGF0aWMgdm9pZCBhc3NlcnRJc1NjcmFtYmxlZChVKSB7IH0KLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBVID0gdm9pZCo+IHN0YXRpYyB2b2lkIGFzc2VydElzTm90U2NyYW1ibGVkKFUp
IHsgfQotI2VuZGlmCi0gICAgdm9pZCBhc3NlcnRJc1NjcmFtYmxlZCgpIGNvbnN0IHsgYXNzZXJ0
SXNTY3JhbWJsZWQobV9zY3JhbWJsZWRCaXRzKTsgfQotICAgIHZvaWQgYXNzZXJ0SXNOb3RTY3Jh
bWJsZWQoKSBjb25zdCB7IGFzc2VydElzTm90U2NyYW1ibGVkKG1fc2NyYW1ibGVkQml0cyk7IH0K
LQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBUPgotICAgIFUgZGVzY3JhbWJsZWQoKSBjb25z
dCB7IHJldHVybiBkZXNjcmFtYmxlPFU+KG1fc2NyYW1ibGVkQml0cyk7IH0KLQotICAgIEFMV0FZ
U19JTkxJTkUgVCBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gZGVzY3JhbWJsZTxUPihtX3Nj
cmFtYmxlZEJpdHMpOyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gU2NyYW1ibGVkUHRy
Qml0cz4KLSAgICBVIGJpdHMoKSBjb25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8VT4obV9zY3Jh
bWJsZWRCaXRzKTsgfQotCi0gICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9z
Y3JhbWJsZWRCaXRzOyB9Ci0gICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0
dXJuICEhbV9zY3JhbWJsZWRCaXRzOyB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2Ny
YW1ibGVkUHRyJiBiKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fc2NyYW1ibGVkQml0
cyA9PSBiLm1fc2NyYW1ibGVkQml0czsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQ
dHJUeXBlID0gdm9pZCosIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjpp
c19wb2ludGVyPFB0clR5cGU+Ojp2YWx1ZT46OnR5cGU+Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFB0clR5cGUgYikKLSAgICB7Ci0gICAgICAgIHJldHVybiBkZXNjcmFtYmxlZDxQdHJUeXBl
PigpID09IGI7Ci0gICAgfQotCi0gICAgU2NyYW1ibGVkUHRyJiBvcGVyYXRvcj0oVCBwdHIpCi0g
ICAgewotICAgICAgICBtX3NjcmFtYmxlZEJpdHMgPSBwdHIgPyBzY3JhbWJsZShwdHIpIDogMDsK
LSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLSAgICBTY3JhbWJsZWRQdHImIG9wZXJhdG9y
PShjb25zdCBTY3JhbWJsZWRQdHImKSA9IGRlZmF1bHQ7Ci0KLXByaXZhdGU6Ci0jaWYgVVNFKEpT
VkFMVUU2NCkKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgIEFMV0FZU19JTkxJTkUgc3Rh
dGljIFNjcmFtYmxlZFB0ckJpdHMgc2NyYW1ibGUoVSBwdHIpIHsgcmV0dXJuIGJpdHdpc2VfY2Fz
dDxTY3JhbWJsZWRQdHJCaXRzPihwdHIpIF4ga2V5OyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
VT4KLSAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBVIGRlc2NyYW1ibGUoU2NyYW1ibGVkUHRyQml0
cyBzY3JhbWJsZWRCaXRzKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8VT4oc2NyYW1ibGVkQml0cyBe
IGtleSk7IH0KLSNlbHNlCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICBBTFdBWVNfSU5M
SU5FIHN0YXRpYyBTY3JhbWJsZWRQdHJCaXRzIHNjcmFtYmxlKFUgcHRyKSB7IHJldHVybiBiaXR3
aXNlX2Nhc3Q8U2NyYW1ibGVkUHRyQml0cz4ocHRyKTsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFU+Ci0gICAgQUxXQVlTX0lOTElORSBzdGF0aWMgVSBkZXNjcmFtYmxlKFNjcmFtYmxlZFB0ckJp
dHMgc2NyYW1ibGVkQml0cykgeyByZXR1cm4gYml0d2lzZV9jYXN0PFU+KHNjcmFtYmxlZEJpdHMp
OyB9Ci0jZW5kaWYKLQotICAgIFNjcmFtYmxlZFB0ckJpdHMgbV9zY3JhbWJsZWRCaXRzIHsgMCB9
OwotfTsKLQotdm9pZCBpbml0aWFsaXplU2NyYW1ibGVkUHRyKCk7Ci1XVEZfRVhQT1JUX1BSSVZB
VEUgdWludHB0cl90IG1ha2VTY3JhbWJsZWRQdHJLZXkoKTsKLQotfSAvLyBuYW1lc3BhY2UgV1RG
Ci0KLXVzaW5nIFdURjo6U2NyYW1ibGVkUHRyOwotdXNpbmcgV1RGOjpTY3JhbWJsZWRQdHJCaXRz
OwotdXNpbmcgV1RGOjptYWtlU2NyYW1ibGVkUHRyS2V5OwotCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328672</attachid>
            <date>2017-12-06 19:37:46 -0800</date>
            <delta_ts>2017-12-06 20:34:24 -0800</delta_ts>
            <desc>patch for landing + speculative fix for Windows.</desc>
            <filename>bug-180514.patch</filename>
            <type>text/plain</type>
            <size>77957</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjI1NjEzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY3IEBA
CisyMDE3LTEyLTA2ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZWZhY3RvcmluZzogUmVuYW1lIFNjcmFtYmxlZFB0ciB0byBQb2lzb25lZC4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDUxNAorCisgICAgICAgIFJl
dmlld2VkIGJ5IFNhYW0gQmFyYXRpLgorCisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3Qu
aDoKKyAgICAgICAgKiBBUEkvSlNPYmplY3RSZWYuY3BwOgorICAgICAgICAoY2xhc3NJbmZvUHJp
dmF0ZSk6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmLmg6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uUHRyOjpGdW5jdGlvblB0cik6
CisgICAgICAgIChKU0M6OkZ1bmN0aW9uUHRyOjp2YWx1ZSBjb25zdCk6CisgICAgICAgIChKU0M6
OkZ1bmN0aW9uUHRyOjpleGVjdXRhYmxlQWRkcmVzcyBjb25zdCk6CisgICAgICAgIChKU0M6OlJl
dHVybkFkZHJlc3NQdHI6OlJldHVybkFkZHJlc3NQdHIpOgorICAgICAgICAoSlNDOjpSZXR1cm5B
ZGRyZXNzUHRyOjp2YWx1ZSBjb25zdCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQ29k
ZVB0cjo6TWFjcm9Bc3NlbWJsZXJDb2RlUHRyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyOjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MpOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlckNvZGVQdHI6OnBvaXNvbmVkUHRyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjogY29uc3QpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
YmxlckNvZGVQdHI6Om9wZXJhdG9yISBjb25zdCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyQ29kZVB0cjo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyQ29kZVB0cjo6ZW1wdHlWYWx1ZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQ29k
ZVB0cjo6ZGVsZXRlZFZhbHVlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUHRy
OjpzY3JhbWJsZWRQdHIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGIzL0IzTG93ZXJNYWNy
b3MuY3BwOgorICAgICAgICAqIGIzL3Rlc3RiMy5jcHA6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0
SW50ZXJwcmV0ZXIpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNoZWNrQXJyYXkpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tTdWJDbGFzcyk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdTdHJpbmdPYmplY3QpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoSW50SnVtcCk6CisgICAgICAg
ICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVOZXdTdHJpbmdPYmplY3QpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2hlY2tTdWJDbGFzcyk6CisgICAgICAgICogaml0L0Fz
c2VtYmx5SGVscGVycy5oOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRBbGxv
Y2F0ZURlc3RydWN0aWJsZU9iamVjdCk6CisgICAgICAgICogaml0L1NwZWNpYWxpemVkVGh1bmtK
SVQuaDoKKyAgICAgICAgKEpTQzo6U3BlY2lhbGl6ZWRUaHVua0pJVDo6bG9hZEFyZ3VtZW50V2l0
aFNwZWNpZmljQ2xhc3MpOgorICAgICAgICAqIGppdC9UaHVua0dlbmVyYXRvcnMuY3BwOgorICAg
ICAgICAoSlNDOjp2aXJ0dWFsVGh1bmtGb3IpOgorICAgICAgICAoSlNDOjpib3VuZFRoaXNOb0Fy
Z3NGdW5jdGlvbkNhbGxHZW5lcmF0b3IpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhz
LmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OmhhbmRsZUhvc3RDYWxsKToKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OnNldFVwQ2FsbCk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjY0LmFzbToKKyAgICAgICAgKiBydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwOgorICAg
ICAgICAoSlNDOjppbml0aWFsaXplVGhyZWFkaW5nKToKKyAgICAgICAgKiBydW50aW1lL0pTQ1Bv
aXNvbmVkUHRyLmNwcDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDU2NyYW1ibGVkUHRyLmNwcC4KKyAgICAgICAgKEpTQzo6aW5pdGlhbGl6ZVBvaXNvbik6Cisg
ICAgICAgIChKU0M6OmluaXRpYWxpemVTY3JhbWJsZWRQdHJLZXlzKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBydW50aW1lL0pTQ1BvaXNvbmVkUHRyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ1NjcmFtYmxlZFB0ci5oLgorICAgICAgICAqIHJ1bnRpbWUvSlND
U2NyYW1ibGVkUHRyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBydW50aW1lL0pTQ1NjcmFtYmxl
ZFB0ci5oOiBSZW1vdmVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNEZXN0cnVjdGlibGVPYmplY3Qu
aDoKKyAgICAgICAgKEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Q6OmNsYXNzSW5mbyBjb25zdCk6
CisgICAgICAgICogcnVudGltZS9KU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0Lmg6CisgICAgICAg
IChKU0M6OkpTU2VnbWVudGVkVmFyaWFibGVPYmplY3Q6OmNsYXNzSW5mbyBjb25zdCk6CisgICAg
ICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisKIDIw
MTctMTItMDYgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgQVNT
RVJUSU9OIEZBSUxFRDogdm0tPmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkgaW4gdm9p
ZCBKU0M6OnNhbml0aXplU3RhY2tGb3JWTShKU0M6OlZNICopCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NvdXJjZXMudHh0CShyZXZpc2lvbiAyMjU2MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
U291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTc3Miw3ICs3NzIsNyBAQCBydW50aW1lL0pT
QXN5bmNGdW5jdGlvbi5jcHAKIHJ1bnRpbWUvSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uLmNwcAog
cnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCiBydW50aW1lL0pTQ0pTVmFsdWUuY3BwCi1ydW50
aW1lL0pTQ1NjcmFtYmxlZFB0ci5jcHAKK3J1bnRpbWUvSlNDUG9pc29uZWRQdHIuY3BwCiBydW50
aW1lL0pTQ2FsbGVlLmNwcAogcnVudGltZS9KU0NlbGwuY3BwCiBydW50aW1lL0pTQ3VzdG9tR2V0
dGVyU2V0dGVyRnVuY3Rpb24uY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
Q2FsbGJhY2tPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ2FsbGJhY2tPYmplY3QuaAkocmV2aXNpb24gMjI1NjEzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3
LDcgQEAKICNpZm5kZWYgSlNDYWxsYmFja09iamVjdF9oCiAjZGVmaW5lIEpTQ2FsbGJhY2tPYmpl
Y3RfaAogCi0jaW5jbHVkZSAiSlNDU2NyYW1ibGVkUHRyLmgiCisjaW5jbHVkZSAiSlNDUG9pc29u
ZWRQdHIuaCIKICNpbmNsdWRlICJKU09iamVjdFJlZi5oIgogI2luY2x1ZGUgIkpTVmFsdWVSZWYu
aCIKICNpbmNsdWRlICJKU09iamVjdC5oIgpAQCAtMjM0LDcgKzIzNCw3IEBAIHByaXZhdGU6CiAg
ICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIGNhbGxiYWNrR2V0dGVyKEV4ZWNTdGF0ZSosIEVuY29k
ZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEpTQ2FsbGJh
Y2tPYmplY3REYXRhPiBtX2NhbGxiYWNrT2JqZWN0RGF0YTsKLSAgICBDbGFzc0luZm9TY3JhbWJs
ZWRQdHIgbV9jbGFzc0luZm87CisgICAgUG9pc29uZWRDbGFzc0luZm9QdHIgbV9jbGFzc0luZm87
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNPYmplY3RSZWYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNPYmplY3RSZWYuY3BwCShyZXZpc2lvbiAyMjU2MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMxLDcgKzQzMSw3
IEBAIHN0YXRpYyBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mb1ByaXZhdGUKICAgICBpZiAodm0u
Y3VycmVudGx5RGVzdHJ1Y3RpbmdDYWxsYmFja09iamVjdCAhPSBqc09iamVjdCkKICAgICAgICAg
cmV0dXJuIGpzT2JqZWN0LT5jbGFzc0luZm8odm0pOwogCi0gICAgcmV0dXJuIHZtLmN1cnJlbnRs
eURlc3RydWN0aW5nQ2FsbGJhY2tPYmplY3RDbGFzc0luZm8uZGVzY3JhbWJsZWQoKTsKKyAgICBy
ZXR1cm4gdm0uY3VycmVudGx5RGVzdHJ1Y3RpbmdDYWxsYmFja09iamVjdENsYXNzSW5mby51bnBv
aXNvbmVkKCk7CiB9CiAKIHZvaWQqIEpTT2JqZWN0R2V0UHJpdmF0ZShKU09iamVjdFJlZiBvYmpl
Y3QpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjI1NjEzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE3MjAsNyArMTcyMCw3IEBACiAJCUZFMUMwRkZE
MUIxOTNFOTgwMEI1M0ZDQSAvKiBFeGNlcHRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMUMwRkZDMUIxOTNFOTgwMEI1M0ZDQSAvKiBFeGNlcHRp
b24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlG
RTIwQ0U5RTE1RjA0QTk1MDBERjM0MzAgLyogTExJbnRDTG9vcC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUyMENFOUMxNUYwNEE5NTAwREYzNDMwIC8q
IExMSW50Q0xvb3AuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlGRTJBODc2MDFGMDIzODE2MDBFQjMxQjIgLyogTWluaW11bVJlc2VydmVkWm9uZVNp
emUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMkE4
NzVGMUYwMjM4MTYwMEVCMzFCMiAvKiBNaW5pbXVtUmVzZXJ2ZWRab25lU2l6ZS5oICovOyB9Owot
CQlGRTJCMEI2OTFGRDIyN0UwMDA3NURBNUYgLyogSlNDU2NyYW1ibGVkUHRyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTJCMEI2NzFGRDBEMjk2MDA3
NURBNUYgLyogSlNDU2NyYW1ibGVkUHRyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkUyQjBCNjkxRkQyMjdFMDAwNzVEQTVGIC8qIEpTQ1BvaXNv
bmVkUHRyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RTJCMEI2NzFGRDBEMjk2MDA3NURBNUYgLyogSlNDUG9pc29uZWRQdHIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTMwMjJEMzFFM0Q3M0E1MDBC
QUM0OTMgLyogU2lnaWxsQ3Jhc2hBbmFseXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzMDIyRDExRTNENzM5NjAwQkFDNDkzIC8qIFNpZ2lsbENy
YXNoQW5hbHl6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlGRTMwMjJENzFFNDI4NTczMDBCQUM0OTMgLyogVk1JbnNwZWN0b3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzAyMkQ1MUU0Mjg1Njcw
MEJBQzQ5MyAvKiBWTUluc3BlY3Rvci5oICovOyB9OwogCQlGRTMxOEZFMDFDQUM5ODJGMDBERkND
NTQgLyogRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzMThGREUxQ0FDOEM1MzAwREZDQzU0IC8q
IEVDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuaCAqLzsgfTsKQEAgLTQ1OTgsOCArNDU5
OCw4IEBACiAJCUZFMjBDRTlCMTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENMb29wLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50Q0xvb3AuY3BwOyBwYXRoID0g
bGxpbnQvTExJbnRDTG9vcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMjBD
RTlDMTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENMb29wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IExMSW50Q0xvb3AuaDsgcGF0aCA9IGxsaW50L0xMSW50Q0xvb3AuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUyQTg3NUYxRjAyMzgxNjAwRUIzMUIyIC8qIE1p
bmltdW1SZXNlcnZlZFpvbmVTaXplLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1pbmltdW1SZXNlcnZlZFpv
bmVTaXplLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUZFMkIwQjY3MUZEMEQyOTYw
MDc1REE1RiAvKiBKU0NTY3JhbWJsZWRQdHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNDU2NyYW1ibGVkUHRyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUZF
MkIwQjY4MUZEMEQyOTcwMDc1REE1RiAvKiBKU0NTY3JhbWJsZWRQdHIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDU2NyYW1ibGVkUHRyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkUyQjBCNjcxRkQwRDI5NjAwNzVEQTVGIC8qIEpTQ1BvaXNv
bmVkUHRyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ1BvaXNvbmVkUHRy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMkIwQjY4MUZEMEQyOTcwMDc1REE1
RiAvKiBKU0NQb2lzb25lZFB0ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU0NQb2lzb25lZFB0ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZF
MkU2QTdBMUQ2RUE1RkUwMDYwRjg5NiAvKiBUaHJvd1Njb3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRocm93U2NvcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGRTMwMjJEMDFFM0Q3Mzk2MDBCQUM0OTMgLyogU2lnaWxsQ3Jhc2hBbmFseXpl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaWdpbGxDcmFzaEFu
YWx5emVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUzMDIyRDExRTNENzM5
NjAwQkFDNDkzIC8qIFNpZ2lsbENyYXNoQW5hbHl6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU2lnaWxsQ3Jhc2hBbmFseXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNjU0Myw4ICs2NTQzLDggQEAKIAkJCQlGNjkyQTg4NzAyNTU1OTdEMDFGRjYwRjcg
LyogSlNDSlNWYWx1ZS5jcHAgKi8sCiAJCQkJMTRBQkIzNkUwOTlDMDc2NDAwRTJBMjRGIC8qIEpT
Q0pTVmFsdWUuaCAqLywKIAkJCQk4NjVBMzBGMDEzNTAwN0UxMDBDREI0OUUgLyogSlNDSlNWYWx1
ZUlubGluZXMuaCAqLywKLQkJCQlGRTJCMEI2ODFGRDBEMjk3MDA3NURBNUYgLyogSlNDU2NyYW1i
bGVkUHRyLmNwcCAqLywKLQkJCQlGRTJCMEI2NzFGRDBEMjk2MDA3NURBNUYgLyogSlNDU2NyYW1i
bGVkUHRyLmggKi8sCisJCQkJRkUyQjBCNjgxRkQwRDI5NzAwNzVEQTVGIC8qIEpTQ1BvaXNvbmVk
UHRyLmNwcCAqLywKKwkJCQlGRTJCMEI2NzFGRDBEMjk2MDA3NURBNUYgLyogSlNDUG9pc29uZWRQ
dHIuaCAqLywKIAkJCQk3MkFBRjdDQjFEMEQzMThCMDA1RTYwQkUgLyogSlNDdXN0b21HZXR0ZXJT
ZXR0ZXJGdW5jdGlvbi5jcHAgKi8sCiAJCQkJNzJBQUY3Q0MxRDBEMzE4QjAwNUU2MEJFIC8qIEpT
Q3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uaCAqLywKIAkJCQkwRjJCNjZCRDE3QjZCNUFCMDBB
N0FFM0YgLyogSlNEYXRhVmlldy5jcHAgKi8sCkBAIC04MTU1LDcgKzgxNTUsNyBAQAogCQkJCTBG
RUM4NTJBMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1BoYXNlU2NvcGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGMzczMDhEMUMwQkQyOTEwMDA1MkJGQSAvKiBCM1BoaUNoaWxkcmVuLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkVDODUyQzFCREFDREFDMDA4MEZGNzQgLyogQjNQcm9jZWR1cmUuaCBpbiBI
ZWFkZXJzICovLAotCQkJCUZFMkIwQjY5MUZEMjI3RTAwMDc1REE1RiAvKiBKU0NTY3JhbWJsZWRQ
dHIuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFMkIwQjY5MUZEMjI3RTAwMDc1REE1RiAvKiBKU0NQ
b2lzb25lZFB0ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1MkQxQkRBQ0RBQzAwODBGRjc0
IC8qIEIzUHJvY2VkdXJlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3MjVDQUExQzUw
M0RFRDAwQUQ5NDNBIC8qIEIzUHVyZUNTRS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDM0MjJBNjcx
QzE2MjY3ODAwRTJFQjk4IC8qIEIzUmVkdWNlRG91YmxlVG9GbG9hdC5oIGluIEhlYWRlcnMgKi8s
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29k
ZVJlZi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmLmgJKHJldmlzaW9uIDIyNTYxMykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDcgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRXhlY3V0YWJsZUFs
bG9jYXRvci5oIgotI2luY2x1ZGUgIkpTQ1NjcmFtYmxlZFB0ci5oIgorI2luY2x1ZGUgIkpTQ1Bv
aXNvbmVkUHRyLmgiCiAjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KICNpbmNsdWRlIDx3dGYvUHJp
bnRTdHJlYW0uaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC02Nyw3ICs2Nyw3IEBAIHB1
YmxpYzoKICAgICBGdW5jdGlvblB0cihyZXR1cm5UeXBlKCp2YWx1ZSkoKSkKICAgICAgICAgOiBt
X3ZhbHVlKCh2b2lkKil2YWx1ZSkKICAgICB7Ci0gICAgICAgIE1hc21TY3JhbWJsZWRQdHI6OmFz
c2VydElzTm90U2NyYW1ibGVkKG1fdmFsdWUpOworICAgICAgICBQb2lzb25lZE1hc21QdHI6OmFz
c2VydElzTm90UG9pc29uZWQobV92YWx1ZSk7CiAgICAgICAgIEFTU0VSVF9WQUxJRF9DT0RFX1BP
SU5URVIobV92YWx1ZSk7CiAgICAgfQogCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICBG
dW5jdGlvblB0cihyZXR1cm5UeXBlKCp2YWx1ZSkoYXJnVHlwZTEpKQogICAgICAgICA6IG1fdmFs
dWUoKHZvaWQqKXZhbHVlKQogICAgIHsKLSAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6YXNzZXJ0
SXNOb3RTY3JhbWJsZWQobV92YWx1ZSk7CisgICAgICAgIFBvaXNvbmVkTWFzbVB0cjo6YXNzZXJ0
SXNOb3RQb2lzb25lZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRF
UihtX3ZhbHVlKTsKICAgICB9CiAKQEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogICAgIEZ1bmN0
aW9uUHRyKHJldHVyblR5cGUoKnZhbHVlKShhcmdUeXBlMSwgYXJnVHlwZTIpKQogICAgICAgICA6
IG1fdmFsdWUoKHZvaWQqKXZhbHVlKQogICAgIHsKLSAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6
YXNzZXJ0SXNOb3RTY3JhbWJsZWQobV92YWx1ZSk7CisgICAgICAgIFBvaXNvbmVkTWFzbVB0cjo6
YXNzZXJ0SXNOb3RQb2lzb25lZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVf
UE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CiAKQEAgLTkxLDcgKzkxLDcgQEAgcHVibGljOgogICAg
IEZ1bmN0aW9uUHRyKHJldHVyblR5cGUoKnZhbHVlKShhcmdUeXBlMSwgYXJnVHlwZTIsIGFyZ1R5
cGUzKSkKICAgICAgICAgOiBtX3ZhbHVlKCh2b2lkKil2YWx1ZSkKICAgICB7Ci0gICAgICAgIE1h
c21TY3JhbWJsZWRQdHI6OmFzc2VydElzTm90U2NyYW1ibGVkKG1fdmFsdWUpOworICAgICAgICBQ
b2lzb25lZE1hc21QdHI6OmFzc2VydElzTm90UG9pc29uZWQobV92YWx1ZSk7CiAgICAgICAgIEFT
U0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7CiAgICAgfQogCkBAIC05OSw3ICs5OSw3
IEBAIHB1YmxpYzoKICAgICBGdW5jdGlvblB0cihyZXR1cm5UeXBlKCp2YWx1ZSkoYXJnVHlwZTEs
IGFyZ1R5cGUyLCBhcmdUeXBlMywgYXJnVHlwZTQpKQogICAgICAgICA6IG1fdmFsdWUoKHZvaWQq
KXZhbHVlKQogICAgIHsKLSAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6YXNzZXJ0SXNOb3RTY3Jh
bWJsZWQobV92YWx1ZSk7CisgICAgICAgIFBvaXNvbmVkTWFzbVB0cjo6YXNzZXJ0SXNOb3RQb2lz
b25lZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVl
KTsKICAgICB9CiAKQEAgLTEwNyw3ICsxMDcsNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rpb25QdHIo
cmV0dXJuVHlwZSgqdmFsdWUpKGFyZ1R5cGUxLCBhcmdUeXBlMiwgYXJnVHlwZTMsIGFyZ1R5cGU0
LCBhcmdUeXBlNSkpCiAgICAgICAgIDogbV92YWx1ZSgodm9pZCopdmFsdWUpCiAgICAgewotICAg
ICAgICBNYXNtU2NyYW1ibGVkUHRyOjphc3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsKKyAg
ICAgICAgUG9pc29uZWRNYXNtUHRyOjphc3NlcnRJc05vdFBvaXNvbmVkKG1fdmFsdWUpOwogICAg
ICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwogICAgIH0KIApAQCAtMTE1
LDcgKzExNSw3IEBAIHB1YmxpYzoKICAgICBGdW5jdGlvblB0cihyZXR1cm5UeXBlKCp2YWx1ZSko
YXJnVHlwZTEsIGFyZ1R5cGUyLCBhcmdUeXBlMywgYXJnVHlwZTQsIGFyZ1R5cGU1LCBhcmdUeXBl
NikpCiAgICAgICAgIDogbV92YWx1ZSgodm9pZCopdmFsdWUpCiAgICAgewotICAgICAgICBNYXNt
U2NyYW1ibGVkUHRyOjphc3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsKKyAgICAgICAgUG9p
c29uZWRNYXNtUHRyOjphc3NlcnRJc05vdFBvaXNvbmVkKG1fdmFsdWUpOwogICAgICAgICBBU1NF
UlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwogICAgIH0KIC8vIE1TVkMgZG9lc24ndCBz
ZWVtIHRvIHRyZWF0IGZ1bmN0aW9ucyB3aXRoIGRpZmZlcmVudCBjYWxsaW5nIGNvbnZlbnRpb25z
IGFzCkBAIC0xMjYsNyArMTI2LDcgQEAgcHVibGljOgogICAgIEZ1bmN0aW9uUHRyKHJldHVyblR5
cGUgKENERUNMICp2YWx1ZSkoKSkKICAgICAgICAgOiBtX3ZhbHVlKCh2b2lkKil2YWx1ZSkKICAg
ICB7Ci0gICAgICAgIE1hc21TY3JhbWJsZWRQdHI6OmFzc2VydElzTm90U2NyYW1ibGVkKG1fdmFs
dWUpOworICAgICAgICBQb2lzb25lZE1hc21QdHI6OmFzc2VydElzTm90UG9pc29uZWQobV92YWx1
ZSk7CiAgICAgICAgIEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7CiAgICAgfQog
CkBAIC0xMzQsNyArMTM0LDcgQEAgcHVibGljOgogICAgIEZ1bmN0aW9uUHRyKHJldHVyblR5cGUg
KENERUNMICp2YWx1ZSkoYXJnVHlwZTEpKQogICAgICAgICA6IG1fdmFsdWUoKHZvaWQqKXZhbHVl
KQogICAgIHsKLSAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6YXNzZXJ0SXNOb3RTY3JhbWJsZWQo
bV92YWx1ZSk7CisgICAgICAgIFBvaXNvbmVkTWFzbVB0cjo6YXNzZXJ0SXNOb3RQb2lzb25lZCht
X3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVlKTsKICAg
ICB9CiAKQEAgLTE0Miw3ICsxNDIsNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rpb25QdHIocmV0dXJu
VHlwZSAoQ0RFQ0wgKnZhbHVlKShhcmdUeXBlMSwgYXJnVHlwZTIpKQogICAgICAgICA6IG1fdmFs
dWUoKHZvaWQqKXZhbHVlKQogICAgIHsKLSAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6YXNzZXJ0
SXNOb3RTY3JhbWJsZWQobV92YWx1ZSk7CisgICAgICAgIFBvaXNvbmVkTWFzbVB0cjo6YXNzZXJ0
SXNOb3RQb2lzb25lZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRF
UihtX3ZhbHVlKTsKICAgICB9CiAKQEAgLTE1MCw3ICsxNTAsNyBAQCBwdWJsaWM6CiAgICAgRnVu
Y3Rpb25QdHIocmV0dXJuVHlwZSAoQ0RFQ0wgKnZhbHVlKShhcmdUeXBlMSwgYXJnVHlwZTIsIGFy
Z1R5cGUzKSkKICAgICAgICAgOiBtX3ZhbHVlKCh2b2lkKil2YWx1ZSkKICAgICB7Ci0gICAgICAg
IE1hc21TY3JhbWJsZWRQdHI6OmFzc2VydElzTm90U2NyYW1ibGVkKG1fdmFsdWUpOworICAgICAg
ICBQb2lzb25lZE1hc21QdHI6OmFzc2VydElzTm90UG9pc29uZWQobV92YWx1ZSk7CiAgICAgICAg
IEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7CiAgICAgfQogCkBAIC0xNTgsNyAr
MTU4LDcgQEAgcHVibGljOgogICAgIEZ1bmN0aW9uUHRyKHJldHVyblR5cGUgKENERUNMICp2YWx1
ZSkoYXJnVHlwZTEsIGFyZ1R5cGUyLCBhcmdUeXBlMywgYXJnVHlwZTQpKQogICAgICAgICA6IG1f
dmFsdWUoKHZvaWQqKXZhbHVlKQogICAgIHsKLSAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6YXNz
ZXJ0SXNOb3RTY3JhbWJsZWQobV92YWx1ZSk7CisgICAgICAgIFBvaXNvbmVkTWFzbVB0cjo6YXNz
ZXJ0SXNOb3RQb2lzb25lZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9J
TlRFUihtX3ZhbHVlKTsKICAgICB9CiAjZW5kaWYKQEAgLTE2OSw3ICsxNjksNyBAQCBwdWJsaWM6
CiAgICAgRnVuY3Rpb25QdHIocmV0dXJuVHlwZSAoRkFTVENBTEwgKnZhbHVlKSgpKQogICAgICAg
ICA6IG1fdmFsdWUoKHZvaWQqKXZhbHVlKQogICAgIHsKLSAgICAgICAgTWFzbVNjcmFtYmxlZFB0
cjo6YXNzZXJ0SXNOb3RTY3JhbWJsZWQobV92YWx1ZSk7CisgICAgICAgIFBvaXNvbmVkTWFzbVB0
cjo6YXNzZXJ0SXNOb3RQb2lzb25lZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NP
REVfUE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CiAKQEAgLTE3Nyw3ICsxNzcsNyBAQCBwdWJsaWM6
CiAgICAgRnVuY3Rpb25QdHIocmV0dXJuVHlwZSAoRkFTVENBTEwgKnZhbHVlKShhcmdUeXBlMSkp
CiAgICAgICAgIDogbV92YWx1ZSgodm9pZCopdmFsdWUpCiAgICAgewotICAgICAgICBNYXNtU2Ny
YW1ibGVkUHRyOjphc3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsKKyAgICAgICAgUG9pc29u
ZWRNYXNtUHRyOjphc3NlcnRJc05vdFBvaXNvbmVkKG1fdmFsdWUpOwogICAgICAgICBBU1NFUlRf
VkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwogICAgIH0KIApAQCAtMTg1LDcgKzE4NSw3IEBA
IHB1YmxpYzoKICAgICBGdW5jdGlvblB0cihyZXR1cm5UeXBlIChGQVNUQ0FMTCAqdmFsdWUpKGFy
Z1R5cGUxLCBhcmdUeXBlMikpCiAgICAgICAgIDogbV92YWx1ZSgodm9pZCopdmFsdWUpCiAgICAg
ewotICAgICAgICBNYXNtU2NyYW1ibGVkUHRyOjphc3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVl
KTsKKyAgICAgICAgUG9pc29uZWRNYXNtUHRyOjphc3NlcnRJc05vdFBvaXNvbmVkKG1fdmFsdWUp
OwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwogICAgIH0KIApA
QCAtMTkzLDcgKzE5Myw3IEBAIHB1YmxpYzoKICAgICBGdW5jdGlvblB0cihyZXR1cm5UeXBlIChG
QVNUQ0FMTCAqdmFsdWUpKGFyZ1R5cGUxLCBhcmdUeXBlMiwgYXJnVHlwZTMpKQogICAgICAgICA6
IG1fdmFsdWUoKHZvaWQqKXZhbHVlKQogICAgIHsKLSAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6
YXNzZXJ0SXNOb3RTY3JhbWJsZWQobV92YWx1ZSk7CisgICAgICAgIFBvaXNvbmVkTWFzbVB0cjo6
YXNzZXJ0SXNOb3RQb2lzb25lZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVf
UE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CiAKQEAgLTIwMSw3ICsyMDEsNyBAQCBwdWJsaWM6CiAg
ICAgRnVuY3Rpb25QdHIocmV0dXJuVHlwZSAoRkFTVENBTEwgKnZhbHVlKShhcmdUeXBlMSwgYXJn
VHlwZTIsIGFyZ1R5cGUzLCBhcmdUeXBlNCkpCiAgICAgICAgIDogbV92YWx1ZSgodm9pZCopdmFs
dWUpCiAgICAgewotICAgICAgICBNYXNtU2NyYW1ibGVkUHRyOjphc3NlcnRJc05vdFNjcmFtYmxl
ZChtX3ZhbHVlKTsKKyAgICAgICAgUG9pc29uZWRNYXNtUHRyOjphc3NlcnRJc05vdFBvaXNvbmVk
KG1fdmFsdWUpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwog
ICAgIH0KICNlbmRpZgpAQCAtMjEzLDcgKzIxMyw3IEBAIHB1YmxpYzoKICAgICAgICAgLy8gKEkg
Z3Vlc3Mgb24gUlZUQyBmdW5jdGlvbiBwb2ludGVycyBoYXZlIGEgZGlmZmVyZW50IGNvbnN0bmVz
cyB0byBHQ0MvTVNWQz8pCiAgICAgICAgIDogbV92YWx1ZSgodm9pZCopdmFsdWUpCiAgICAgewot
ICAgICAgICBNYXNtU2NyYW1ibGVkUHRyOjphc3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsK
KyAgICAgICAgUG9pc29uZWRNYXNtUHRyOjphc3NlcnRJc05vdFBvaXNvbmVkKG1fdmFsdWUpOwog
ICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwogICAgIH0KIApAQCAt
MjIxLDEyICsyMjEsMTIgQEAgcHVibGljOgogCiAgICAgdm9pZCogdmFsdWUoKSBjb25zdAogICAg
IHsKLSAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6YXNzZXJ0SXNOb3RTY3JhbWJsZWQobV92YWx1
ZSk7CisgICAgICAgIFBvaXNvbmVkTWFzbVB0cjo6YXNzZXJ0SXNOb3RQb2lzb25lZChtX3ZhbHVl
KTsKICAgICAgICAgcmV0dXJuIG1fdmFsdWU7CiAgICAgfQogICAgIHZvaWQqIGV4ZWN1dGFibGVB
ZGRyZXNzKCkgY29uc3QKICAgICB7Ci0gICAgICAgIE1hc21TY3JhbWJsZWRQdHI6OmFzc2VydElz
Tm90U2NyYW1ibGVkKG1fdmFsdWUpOworICAgICAgICBQb2lzb25lZE1hc21QdHI6OmFzc2VydElz
Tm90UG9pc29uZWQobV92YWx1ZSk7CiAgICAgICAgIHJldHVybiBtX3ZhbHVlOwogICAgIH0KIApA
QCAtMjQ3LDIwICsyNDcsMjAgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFJldHVybkFkZHJlc3NQ
dHIodm9pZCogdmFsdWUpCiAgICAgICAgIDogbV92YWx1ZSh2YWx1ZSkKICAgICB7Ci0gICAgICAg
IE1hc21TY3JhbWJsZWRQdHI6OmFzc2VydElzTm90U2NyYW1ibGVkKG1fdmFsdWUpOworICAgICAg
ICBQb2lzb25lZE1hc21QdHI6OmFzc2VydElzTm90UG9pc29uZWQobV92YWx1ZSk7CiAgICAgICAg
IEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7CiAgICAgfQogCiAgICAgZXhwbGlj
aXQgUmV0dXJuQWRkcmVzc1B0cihGdW5jdGlvblB0ciBmdW5jdGlvbikKICAgICAgICAgOiBtX3Zh
bHVlKGZ1bmN0aW9uLnZhbHVlKCkpCiAgICAgewotICAgICAgICBNYXNtU2NyYW1ibGVkUHRyOjph
c3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsKKyAgICAgICAgUG9pc29uZWRNYXNtUHRyOjph
c3NlcnRJc05vdFBvaXNvbmVkKG1fdmFsdWUpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9Q
T0lOVEVSKG1fdmFsdWUpOwogICAgIH0KIAogICAgIHZvaWQqIHZhbHVlKCkgY29uc3QKICAgICB7
Ci0gICAgICAgIE1hc21TY3JhbWJsZWRQdHI6OmFzc2VydElzTm90U2NyYW1ibGVkKG1fdmFsdWUp
OworICAgICAgICBQb2lzb25lZE1hc21QdHI6OmFzc2VydElzTm90UG9pc29uZWQobV92YWx1ZSk7
CiAgICAgICAgIHJldHVybiBtX3ZhbHVlOwogICAgIH0KICAgICAKQEAgLTI4OCw3ICsyODgsNyBA
QCBwdWJsaWM6CiAgICAgICAgIDogbV92YWx1ZSh2YWx1ZSkKICNlbmRpZgogICAgIHsKLSAgICAg
ICAgbV92YWx1ZS5hc3NlcnRJc1NjcmFtYmxlZCgpOworICAgICAgICBtX3ZhbHVlLmFzc2VydElz
UG9pc29uZWQoKTsKICAgICAgICAgQVNTRVJUKHZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElE
X0NPREVfUE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CkBAIC0yOTgsOCArMjk4LDggQEAgcHVibGlj
OgogICAgICAgICBBU1NFUlQodmFsdWUpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lO
VEVSKHZhbHVlKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHJlc3VsdDsKLSAgICAg
ICAgcmVzdWx0Lm1fdmFsdWUgPSBNYXNtU2NyYW1ibGVkUHRyKHZhbHVlKTsKLSAgICAgICAgcmVz
dWx0Lm1fdmFsdWUuYXNzZXJ0SXNTY3JhbWJsZWQoKTsKKyAgICAgICAgcmVzdWx0Lm1fdmFsdWUg
PSBQb2lzb25lZE1hc21QdHIodmFsdWUpOworICAgICAgICByZXN1bHQubV92YWx1ZS5hc3NlcnRJ
c1BvaXNvbmVkKCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCkBAIC0zMDksNDIg
KzMwOSw0MiBAQCBwdWJsaWM6CiAgICAgICAgIDogbV92YWx1ZShyYS52YWx1ZSgpKQogICAgIHsK
ICAgICAgICAgQVNTRVJUKHJhLnZhbHVlKCkpOwotICAgICAgICBtX3ZhbHVlLmFzc2VydElzU2Ny
YW1ibGVkKCk7CisgICAgICAgIG1fdmFsdWUuYXNzZXJ0SXNQb2lzb25lZCgpOwogICAgICAgICBB
U1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwogICAgIH0KIAotICAgIE1hc21TY3Jh
bWJsZWRQdHIgc2NyYW1ibGVkUHRyKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQorICAgIFBv
aXNvbmVkTWFzbVB0ciBwb2lzb25lZFB0cigpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQgPSB2b2lkKj4KICAgICBUIGV4ZWN1dGFibGVBZGRyZXNz
KCkgY29uc3QKICAgICB7Ci0gICAgICAgIG1fdmFsdWUuYXNzZXJ0SXNTY3JhbWJsZWQoKTsKLSAg
ICAgICAgcmV0dXJuIG1fdmFsdWUgPyBtX3ZhbHVlLmRlc2NyYW1ibGVkPFQ+KCkgOiBzdGF0aWNf
Y2FzdDxUPigwKTsKKyAgICAgICAgbV92YWx1ZS5hc3NlcnRJc1BvaXNvbmVkKCk7CisgICAgICAg
IHJldHVybiBtX3ZhbHVlLnVucG9pc29uZWQ8VD4oKTsKICAgICB9CiAjaWYgQ1BVKEFSTV9USFVN
QjIpCiAgICAgLy8gVG8gdXNlIHRoaXMgcG9pbnRlciBhcyBhIGRhdGEgYWRkcmVzcyByZW1vdmUg
dGhlIGRlY29yYXRpb24uCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCA9IHZvaWQqPgogICAgIFQg
ZGF0YUxvY2F0aW9uKCkgY29uc3QKICAgICB7Ci0gICAgICAgIG1fdmFsdWUuYXNzZXJ0SXNTY3Jh
bWJsZWQoKTsKKyAgICAgICAgbV92YWx1ZS5hc3NlcnRJc1BvaXNvbmVkKCk7CiAgICAgICAgIEFT
U0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7Ci0gICAgICAgIHJldHVybiBiaXR3aXNl
X2Nhc3Q8VD4obV92YWx1ZSA/IG1fdmFsdWUuZGVzY3JhbWJsZWQ8Y2hhcio+KCkgLSAxIDogbnVs
bHB0cik7CisgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8VD4obV92YWx1ZSA/IG1fdmFsdWUu
dW5wb2lzb25lZDxjaGFyKj4oKSAtIDEgOiBudWxscHRyKTsKICAgICB9CiAjZWxzZQogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQgPSB2b2lkKj4KICAgICBUIGRhdGFMb2NhdGlvbigpIGNvbnN0CiAg
ICAgewotICAgICAgICBtX3ZhbHVlLmFzc2VydElzU2NyYW1ibGVkKCk7CisgICAgICAgIG1fdmFs
dWUuYXNzZXJ0SXNQb2lzb25lZCgpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVS
KG1fdmFsdWUpOwotICAgICAgICByZXR1cm4gbV92YWx1ZSA/IG1fdmFsdWUuZGVzY3JhbWJsZWQ8
VD4oKSA6IHN0YXRpY19jYXN0PFQ+KDApOworICAgICAgICByZXR1cm4gbV92YWx1ZS51bnBvaXNv
bmVkPFQ+KCk7CiAgICAgfQogI2VuZGlmCiAKICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0CiAg
ICAgewotI2lmIEVOQUJMRShTQ1JBTUJMRURfUFRSX0FTU0VSVFMpCisjaWYgRU5BQkxFKFBPSVNP
Tl9BU1NFUlRTKQogICAgICAgICBpZiAoIWlzRW1wdHlWYWx1ZSgpICYmICFpc0RlbGV0ZWRWYWx1
ZSgpKQotICAgICAgICAgICAgbV92YWx1ZS5hc3NlcnRJc1NjcmFtYmxlZCgpOworICAgICAgICAg
ICAgbV92YWx1ZS5hc3NlcnRJc1BvaXNvbmVkKCk7CiAjZW5kaWYKICAgICAgICAgcmV0dXJuICFt
X3ZhbHVlOwogICAgIH0KQEAgLTM1MiwxNyArMzUyLDE3IEBAIHB1YmxpYzoKICAgICAKICAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBvdGhlcikgY29uc3QK
ICAgICB7Ci0jaWYgRU5BQkxFKFNDUkFNQkxFRF9QVFJfQVNTRVJUUykKKyNpZiBFTkFCTEUoUE9J
U09OX0FTU0VSVFMpCiAgICAgICAgIGlmICghaXNFbXB0eVZhbHVlKCkgJiYgIWlzRGVsZXRlZFZh
bHVlKCkpCi0gICAgICAgICAgICBtX3ZhbHVlLmFzc2VydElzU2NyYW1ibGVkKCk7CisgICAgICAg
ICAgICBtX3ZhbHVlLmFzc2VydElzUG9pc29uZWQoKTsKICAgICAgICAgaWYgKCFvdGhlci5pc0Vt
cHR5VmFsdWUoKSAmJiAhb3RoZXIuaXNEZWxldGVkVmFsdWUoKSkKLSAgICAgICAgICAgIG90aGVy
Lm1fdmFsdWUuYXNzZXJ0SXNTY3JhbWJsZWQoKTsKKyAgICAgICAgICAgIG90aGVyLm1fdmFsdWUu
YXNzZXJ0SXNQb2lzb25lZCgpOwogI2VuZGlmCiAgICAgICAgIHJldHVybiBtX3ZhbHVlID09IG90
aGVyLm1fdmFsdWU7CiAgICAgfQogCiAgICAgLy8gRGlzYWxsb3cgYW55IGNhc3Rpbmcgb3BlcmF0
aW9ucyAoZXhjZXB0IGZvciBib29sZWFucykuIEluc3RlYWQsIHRoZSBjbGllbnQKLSAgICAvLyBz
aG91bGQgYmUgYXNraW5nIGZvciBzY3JhbWJsZWRQdHIoKSBvciBleGVjdXRhYmxlQWRkcmVzcygp
IGV4cGxpY2l0bHkuCisgICAgLy8gc2hvdWxkIGJlIGFza2luZyBmb3IgcG9pc29uZWRQdHIoKSBv
ciBleGVjdXRhYmxlQWRkcmVzcygpIGV4cGxpY2l0bHkuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6OmlzX3NhbWU8VCwgYm9vbD46OnZh
bHVlPj4KICAgICBvcGVyYXRvciBUKCkgPSBkZWxldGU7CiAKQEAgLTM4OSwxMCArMzg5LDEwIEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCk7CiAKIHByaXZhdGU6Ci0gICAg
c3RhdGljIE1hc21TY3JhbWJsZWRQdHIgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIE1hc21TY3JhbWJs
ZWRQdHIoMSk7IH0KLSAgICBzdGF0aWMgTWFzbVNjcmFtYmxlZFB0ciBkZWxldGVkVmFsdWUoKSB7
IHJldHVybiBNYXNtU2NyYW1ibGVkUHRyKDIpOyB9CisgICAgc3RhdGljIFBvaXNvbmVkTWFzbVB0
ciBlbXB0eVZhbHVlKCkgeyByZXR1cm4gUG9pc29uZWRNYXNtUHRyKDEpOyB9CisgICAgc3RhdGlj
IFBvaXNvbmVkTWFzbVB0ciBkZWxldGVkVmFsdWUoKSB7IHJldHVybiBQb2lzb25lZE1hc21QdHIo
Mik7IH0KIAotICAgIE1hc21TY3JhbWJsZWRQdHIgbV92YWx1ZTsKKyAgICBQb2lzb25lZE1hc21Q
dHIgbV92YWx1ZTsKIH07CiAKIHN0cnVjdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHJIYXNoIHsKQEAg
LTQ3OSw3ICs0NzksNyBAQCBwcml2YXRlOgogaW5saW5lIEZ1bmN0aW9uUHRyOjpGdW5jdGlvblB0
cihNYWNyb0Fzc2VtYmxlckNvZGVQdHIgcHRyKQogICAgIDogbV92YWx1ZShwdHIuZXhlY3V0YWJs
ZUFkZHJlc3MoKSkKIHsKLSAgICBNYXNtU2NyYW1ibGVkUHRyOjphc3NlcnRJc05vdFNjcmFtYmxl
ZChtX3ZhbHVlKTsKKyAgICBQb2lzb25lZE1hc21QdHI6OmFzc2VydElzTm90UG9pc29uZWQobV92
YWx1ZSk7CiAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVlKTsKIH0KIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3MuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zLmNwcAkocmV2aXNpb24g
MjI1NjEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3MuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01MDUsMTIgKzUwNSwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICBHUFJSZWcgaW5kZXggPSBwYXJh
bXNbMF0uZ3ByKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaCA9IHBh
cmFtcy5ncFNjcmF0Y2goMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBHUFJSZWcgZGVzY3Jh
bWJsZXJLZXkgPSBwYXJhbXMuZ3BTY3JhdGNoKDEpOworICAgICAgICAgICAgICAgICAgICAgICAg
R1BSUmVnIHBvaXNvblNjcmF0Y2ggPSBwYXJhbXMuZ3BTY3JhdGNoKDEpOwogCi0gICAgICAgICAg
ICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NChnX21hc21T
Y3JhbWJsZWRQdHJLZXkpLCBkZXNjcmFtYmxlcktleSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NChnX21hc21Qb2lzb24pLCBwb2lz
b25TY3JhdGNoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cihqdW1wVGFibGUpLCBzY3JhdGNoKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIGppdC5sb2FkNjQoQ0NhbGxIZWxwZXJzOjpCYXNlSW5kZXgoc2NyYXRjaCwgaW5kZXgs
IENDYWxsSGVscGVyczo6dGltZXNQdHIoKSksIHNjcmF0Y2gpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgaml0LnhvcjY0KGRlc2NyYW1ibGVyS2V5LCBzY3JhdGNoKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGppdC54b3I2NChwb2lzb25TY3JhdGNoLCBzY3JhdGNoKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIGppdC5qdW1wKHNjcmF0Y2gpOwogCiAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBUaGVzZSBsYWJlbHMgYXJlIGd1YXJhbnRlZWQgdG8gYmUgcG9wdWxhdGVkIGJlZm9yZSBl
aXRoZXIgbGF0ZSBwYXRocyBvcgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3Ri
My5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAJ
KHJldmlzaW9uIDIyNTYxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzAzMCwxMiArMTMwMzAsMTIgQEAgdm9pZCB0ZXN0SW50ZXJw
cmV0ZXIoKQogICAgICAgICAgICAgICAgIHBhcmFtcy5wcm9jKCkuYWRkRGF0YVNlY3Rpb24oc2l6
ZW9mKE1hY3JvQXNzZW1ibGVyQ29kZVB0cikgKiBsYWJlbHMuc2l6ZSgpKSk7CiAKICAgICAgICAg
ICAgIEdQUlJlZyBzY3JhdGNoID0gcGFyYW1zLmdwU2NyYXRjaCgwKTsKLSAgICAgICAgICAgIEdQ
UlJlZyBkZXNjcmFtYmxlcktleSA9IHBhcmFtcy5ncFNjcmF0Y2goMSk7CisgICAgICAgICAgICBH
UFJSZWcgcG9pc29uU2NyYXRjaCA9IHBhcmFtcy5ncFNjcmF0Y2goMSk7CiAKICAgICAgICAgICAg
IGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihqdW1wVGFibGUpLCBzY3JhdGNo
KTsKLSAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KGdfbWFz
bVNjcmFtYmxlZFB0cktleSksIGRlc2NyYW1ibGVyS2V5KTsKKyAgICAgICAgICAgIGppdC5tb3Zl
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KGdfbWFzbVBvaXNvbiksIHBvaXNvblNjcmF0Y2gp
OwogICAgICAgICAgICAgaml0LmxvYWQ2NChDQ2FsbEhlbHBlcnM6OkJhc2VJbmRleChzY3JhdGNo
LCBwYXJhbXNbMF0uZ3ByKCksIENDYWxsSGVscGVyczo6dGltZXNQdHIoKSksIHNjcmF0Y2gpOwot
ICAgICAgICAgICAgaml0LnhvcjY0KGRlc2NyYW1ibGVyS2V5LCBzY3JhdGNoKTsKKyAgICAgICAg
ICAgIGppdC54b3I2NChwb2lzb25TY3JhdGNoLCBzY3JhdGNoKTsKICAgICAgICAgICAgIGppdC5q
dW1wKHNjcmF0Y2gpOwogCiAgICAgICAgICAgICBqaXQuYWRkTGlua1Rhc2soCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNp
b24gMjI1NjEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2OCw3ICs4NjgsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjaGVja0FycmF5KE5vZGUqIG5vCiAgICAgICAgIG1faml0LmJyYW5jaFB0cigKICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIFN0cnVjdHVyZTo6Y2xhc3NJbmZvT2Zmc2V0KCkpLAot
ICAgICAgICAgICAgVHJ1c3RlZEltbVB0cihDbGFzc0luZm9TY3JhbWJsZWRQdHIoZXhwZWN0ZWRD
bGFzc0luZm8pLmJpdHMoKSkpKTsKKyAgICAgICAgICAgIFRydXN0ZWRJbW1QdHIoUG9pc29uZWRD
bGFzc0luZm9QdHIoZXhwZWN0ZWRDbGFzc0luZm8pLmJpdHMoKSkpKTsKIAogICAgIG5vUmVzdWx0
KG1fY3VycmVudE5vZGUpOwogfQpAQCAtODcwNiw3ICs4NzA2LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUNoZWNrU3ViQ2xhcwogICAgICAgICBtX2ppdC5lbWl0TG9hZFN0cnVjdHVy
ZSgqbV9qaXQudm0oKSwgYmFzZUdQUiwgb3RoZXJHUFIsIHNwZWNpZmllZEdQUik7CiAgICAgICAg
IG1faml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG90aGVyR1BSLCBTdHJ1Y3R1cmU6
OmNsYXNzSW5mb09mZnNldCgpKSwgb3RoZXJHUFIpOwogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAg
ICAgIG1faml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQoZ19jbGFzc0luZm9TY3Jh
bWJsZWRQdHJLZXkpLCBzcGVjaWZpZWRHUFIpOworICAgICAgICBtX2ppdC5tb3ZlKENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbTY0KGdfY2xhc3NJbmZvUG9pc29uKSwgc3BlY2lmaWVkR1BSKTsKICAg
ICAgICAgbV9qaXQueG9yNjQoc3BlY2lmaWVkR1BSLCBvdGhlckdQUik7CiAjZW5kaWYKICAgICAg
ICAgbV9qaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobm9kZS0+Y2xhc3NJbmZv
KCkpLCBzcGVjaWZpZWRHUFIpOwpAQCAtOTAwMyw3ICs5MDAzLDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZU5ld1N0cmluZ09iagogICAgICAgICBzbG93UGF0aCk7CiAgICAgCiAgICAg
bV9qaXQuc3RvcmVQdHIoCi0gICAgICAgIFRydXN0ZWRJbW1QdHIoQ2xhc3NJbmZvU2NyYW1ibGVk
UHRyKFN0cmluZ09iamVjdDo6aW5mbygpKS5iaXRzKCkpLAorICAgICAgICBUcnVzdGVkSW1tUHRy
KFBvaXNvbmVkQ2xhc3NJbmZvUHRyKFN0cmluZ09iamVjdDo6aW5mbygpKS5iaXRzKCkpLAogICAg
ICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0
OjpjbGFzc0luZm9PZmZzZXQoKSkpOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgbV9qaXQuc3Rv
cmU2NCgKQEAgLTk3NzQsNyArOTc3NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0
ZShOb2RlKiwgRWQKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaEludEp1bXAo
Ci0gICAgU3dpdGNoRGF0YSogZGF0YSwgR1BSUmVnIHZhbHVlLCBHUFJSZWcgc2NyYXRjaCwgR1BS
UmVnIGRlc2NyYW1ibGVyS2V5U2NyYXRjaCkKKyAgICBTd2l0Y2hEYXRhKiBkYXRhLCBHUFJSZWcg
dmFsdWUsIEdQUlJlZyBzY3JhdGNoLCBHUFJSZWcgcG9pc29uU2NyYXRjaCkKIHsKICAgICBTaW1w
bGVKdW1wVGFibGUmIHRhYmxlID0gbV9qaXQuY29kZUJsb2NrKCktPnN3aXRjaEp1bXBUYWJsZShk
YXRhLT5zd2l0Y2hUYWJsZUluZGV4KTsKICAgICB0YWJsZS5lbnN1cmVDVElUYWJsZSgpOwpAQCAt
OTc4MiwxNSArOTc4MiwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoSW50SnVt
cCgKICAgICBhZGRCcmFuY2goCiAgICAgICAgIG1faml0LmJyYW5jaDMyKEpJVENvbXBpbGVyOjpB
Ym92ZU9yRXF1YWwsIHZhbHVlLCBJbW0zMih0YWJsZS5jdGlPZmZzZXRzLnNpemUoKSkpLAogICAg
ICAgICBkYXRhLT5mYWxsVGhyb3VnaC5ibG9jayk7Ci0gICAgVU5VU0VEX1BBUkFNKGRlc2NyYW1i
bGVyS2V5U2NyYXRjaCk7IC8vIFBsYWNhdGUgdGhlIDMyLWJpdCBidWlsZC4KKyAgICBVTlVTRURf
UEFSQU0ocG9pc29uU2NyYXRjaCk7IC8vIFBsYWNhdGUgdGhlIDMyLWJpdCBidWlsZC4KICNpZiBV
U0UoSlNWQUxVRTY0KQotICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTY0KGdfbWFzbVNjcmFtYmxl
ZFB0cktleSksIGRlc2NyYW1ibGVyS2V5U2NyYXRjaCk7CisgICAgbV9qaXQubW92ZShUcnVzdGVk
SW1tNjQoZ19tYXNtUG9pc29uKSwgcG9pc29uU2NyYXRjaCk7CiAjZW5kaWYKICAgICBtX2ppdC5t
b3ZlKFRydXN0ZWRJbW1QdHIodGFibGUuY3RpT2Zmc2V0cy5iZWdpbigpKSwgc2NyYXRjaCk7CiAg
ICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QmFzZUluZGV4KHNjcmF0Y2gsIHZhbHVlLCBK
SVRDb21waWxlcjo6dGltZXNQdHIoKSksIHNjcmF0Y2gpOwogICAgIAogI2lmIFVTRShKU1ZBTFVF
NjQpCi0gICAgbV9qaXQueG9yNjQoZGVzY3JhbWJsZXJLZXlTY3JhdGNoLCBzY3JhdGNoKTsKKyAg
ICBtX2ppdC54b3I2NChwb2lzb25TY3JhdGNoLCBzY3JhdGNoKTsKICNlbmRpZgogICAgIG1faml0
Lmp1bXAoc2NyYXRjaCk7CiAgICAgZGF0YS0+ZGlkVXNlSnVtcFRhYmxlID0gdHJ1ZTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlz
aW9uIDIyNTYxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAxMCw3ICs1MDEwLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5pbnNlcnROZXdCbG9ja3NCZWZvcmUoc2xv
d0Nhc2UpOwogCiAgICAgICAgIExWYWx1ZSBmYXN0UmVzdWx0VmFsdWUgPSBhbGxvY2F0ZU9iamVj
dDxTdHJpbmdPYmplY3Q+KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd0Nhc2UpOwot
ICAgICAgICBtX291dC5zdG9yZVB0cihtX291dC5jb25zdEludFB0cihDbGFzc0luZm9TY3JhbWJs
ZWRQdHIoU3RyaW5nT2JqZWN0OjppbmZvKCkpLmJpdHMoKSksIGZhc3RSZXN1bHRWYWx1ZSwgbV9o
ZWFwcy5KU0Rlc3RydWN0aWJsZU9iamVjdF9jbGFzc0luZm8pOworICAgICAgICBtX291dC5zdG9y
ZVB0cihtX291dC5jb25zdEludFB0cihQb2lzb25lZENsYXNzSW5mb1B0cihTdHJpbmdPYmplY3Q6
OmluZm8oKSkuYml0cygpKSwgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0X2NsYXNzSW5mbyk7CiAgICAgICAgIG1fb3V0LnN0b3JlNjQoc3RyaW5nLCBmYXN0UmVz
dWx0VmFsdWUsIG1faGVhcHMuSlNXcmFwcGVyT2JqZWN0X2ludGVybmFsVmFsdWUpOwogICAgICAg
ICBtdXRhdG9yRmVuY2UoKTsKICAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1f
b3V0LmFuY2hvcihmYXN0UmVzdWx0VmFsdWUpOwpAQCAtMTExNzAsOCArMTExNzAsOCBAQCBwcml2
YXRlOgogICAgICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3Qmxv
Y2soKTsKIAogICAgICAgICAgICAgTFZhbHVlIHN0cnVjdHVyZSA9IGxvYWRTdHJ1Y3R1cmUoY2Vs
bCk7Ci0gICAgICAgICAgICBMVmFsdWUgc2NyYW1ibGVkQ2xhc3NJbmZvID0gbV9vdXQubG9hZFB0
cihzdHJ1Y3R1cmUsIG1faGVhcHMuU3RydWN0dXJlX2NsYXNzSW5mbyk7Ci0gICAgICAgICAgICBM
VmFsdWUgY2xhc3NJbmZvID0gbV9vdXQuYml0WG9yKHNjcmFtYmxlZENsYXNzSW5mbywgbV9vdXQu
Y29uc3RJbnQ2NChnX2NsYXNzSW5mb1NjcmFtYmxlZFB0cktleSkpOworICAgICAgICAgICAgTFZh
bHVlIHBvaXNvbmVkQ2xhc3NJbmZvID0gbV9vdXQubG9hZFB0cihzdHJ1Y3R1cmUsIG1faGVhcHMu
U3RydWN0dXJlX2NsYXNzSW5mbyk7CisgICAgICAgICAgICBMVmFsdWUgY2xhc3NJbmZvID0gbV9v
dXQuYml0WG9yKHBvaXNvbmVkQ2xhc3NJbmZvLCBtX291dC5jb25zdEludDY0KGdfY2xhc3NJbmZv
UG9pc29uKSk7CiAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBvdGhlckF0U3RhcnQgPSBtX291
dC5hbmNob3IoY2xhc3NJbmZvKTsKICAgICAgICAgICAgIG1fb3V0Lmp1bXAobG9vcCk7CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkocmV2aXNp
b24gMjI1NjEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMu
aAkod29ya2luZyBjb3B5KQpAQCAtMTYyNSw3ICsxNjI1LDcgQEAgcHVibGljOgogICAgIHZvaWQg
ZW1pdEFsbG9jYXRlRGVzdHJ1Y3RpYmxlT2JqZWN0KFZNJiB2bSwgR1BSUmVnIHJlc3VsdEdQUiwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEdQUlJlZyBzY3JhdGNoR1BSMSwgR1BSUmVnIHNjcmF0Y2hH
UFIyLCBKdW1wTGlzdCYgc2xvd1BhdGgpCiAgICAgewogICAgICAgICBlbWl0QWxsb2NhdGVKU09i
amVjdDxDbGFzc1R5cGU+KHZtLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwg
VHJ1c3RlZEltbVB0cigwKSwgc2NyYXRjaEdQUjEsIHNjcmF0Y2hHUFIyLCBzbG93UGF0aCk7Ci0g
ICAgICAgIHN0b3JlUHRyKFRydXN0ZWRJbW1QdHIoQ2xhc3NJbmZvU2NyYW1ibGVkUHRyKHN0cnVj
dHVyZS0+Y2xhc3NJbmZvKCkpLmJpdHMoKSksIEFkZHJlc3MocmVzdWx0R1BSLCBKU0Rlc3RydWN0
aWJsZU9iamVjdDo6Y2xhc3NJbmZvT2Zmc2V0KCkpKTsKKyAgICAgICAgc3RvcmVQdHIoVHJ1c3Rl
ZEltbVB0cihQb2lzb25lZENsYXNzSW5mb1B0cihzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpKS5iaXRz
KCkpLCBBZGRyZXNzKHJlc3VsdEdQUiwgSlNEZXN0cnVjdGlibGVPYmplY3Q6OmNsYXNzSW5mb09m
ZnNldCgpKSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgZW1pdEluaXRpYWxpemVJbmxpbmVTdG9y
YWdlKEdQUlJlZyBiYXNlR1BSLCB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6ZWRUaHVua0pJVC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6ZWRUaHVua0pJVC5oCShyZXZpc2lv
biAyMjU2MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtK
SVQuaAkod29ya2luZyBjb3B5KQpAQCAtNzcsNyArNzcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgewogICAgICAgICAgICAgbG9hZENlbGxBcmd1bWVudChhcmd1bWVudCwgZHN0KTsKICAg
ICAgICAgICAgIGVtaXRMb2FkU3RydWN0dXJlKCp2bSgpLCBkc3QsIHNjcmF0Y2gsIGRzdCk7Ci0g
ICAgICAgICAgICBhcHBlbmRGYWlsdXJlKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhzY3Jh
dGNoLCBTdHJ1Y3R1cmU6OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihDbGFzc0lu
Zm9TY3JhbWJsZWRQdHIoY2xhc3NJbmZvKS5iaXRzKCkpKSk7CisgICAgICAgICAgICBhcHBlbmRG
YWlsdXJlKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhzY3JhdGNoLCBTdHJ1Y3R1cmU6OmNs
YXNzSW5mb09mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihQb2lzb25lZENsYXNzSW5mb1B0cihjbGFz
c0luZm8pLmJpdHMoKSkpKTsKICAgICAgICAgICAgIC8vIFdlIGhhdmUgdG8gcmVsb2FkIHRoZSBh
cmd1bWVudCBzaW5jZSBlbWl0TG9hZFN0cnVjdHVyZSBjbG9iYmVyZWQgaXQuCiAgICAgICAgICAg
ICBsb2FkQ2VsbEFyZ3VtZW50KGFyZ3VtZW50LCBkc3QpOwogICAgICAgICB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCShyZXZpc2lvbiAy
MjU2MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIxNCw3ICsyMTQsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYg
dmlydHVhbFRodW5rRm9yKFZNCiAgICAgLy8gTm93IHdlIGtub3cgdGhhdCB3ZSBoYXZlIGEgQ29k
ZUJsb2NrLCBhbmQgd2UncmUgY29tbWl0dGVkIHRvIG1ha2luZyBhIGZhc3QKICAgICAvLyBjYWxs
LgogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tNjQoZ19tYXNtU2NyYW1ibGVkUHRyS2V5KSwgR1BSSW5mbzo6cmVnVDEpOworICAgIGppdC5t
b3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KGdfbWFzbVBvaXNvbiksIEdQUkluZm86OnJl
Z1QxKTsKICAgICBqaXQueG9yNjQoR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1Q0KTsKICNl
bmRpZgogCkBAIC0xMTYzLDcgKzExNjMsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgYm91bmRU
aGlzTm9BcmdzRnVuCiAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG5vQ29kZSA9IGppdC5icmFuY2hU
ZXN0UHRyKENDYWxsSGVscGVyczo6WmVybywgR1BSSW5mbzo6cmVnVDApOwogICAgIAogI2lmIFVT
RShKU1ZBTFVFNjQpCi0gICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQoZ19t
YXNtU2NyYW1ibGVkUHRyS2V5KSwgR1BSSW5mbzo6cmVnVDEpOworICAgIGppdC5tb3ZlKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTY0KGdfbWFzbVBvaXNvbiksIEdQUkluZm86OnJlZ1QxKTsKICAg
ICBqaXQueG9yNjQoR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1QwKTsKICNlbmRpZgogICAg
IGVtaXRQb2ludGVyVmFsaWRhdGlvbihqaXQsIEdQUkluZm86OnJlZ1QwKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24g
MjI1NjEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTMwMyw3ICsxMzAzLDcgQEAgc3RhdGljIFNsb3dQYXRoUmV0
dXJuVHlwZSBoYW5kbGVIb3N0Q2FsbAogICAgICAgICAgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVl
KGFzT2JqZWN0KGNhbGxlZSkpOwogICAgICAgICAgICAgdm0uaG9zdENhbGxSZXR1cm5WYWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24oZXhlY0NhbGxlZSkpOwog
ICAgICAgICAgICAgCi0gICAgICAgICAgICBNYXNtU2NyYW1ibGVkUHRyOjphc3NlcnRJc05vdFNj
cmFtYmxlZChMTEludDo6Z2V0Q29kZVB0cihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSk7CisgICAg
ICAgICAgICBQb2lzb25lZE1hc21QdHI6OmFzc2VydElzTm90UG9pc29uZWQoTExJbnQ6OmdldENv
ZGVQdHIoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkpOwogICAgICAgICAgICAgTExJTlRfQ0FMTF9S
RVRVUk4oZXhlY0NhbGxlZSwgZXhlY0NhbGxlZSwgTExJbnQ6OmdldENvZGVQdHIoZ2V0SG9zdENh
bGxSZXR1cm5WYWx1ZSkpOwogICAgICAgICB9CiAgICAgICAgIApAQCAtMTMyNyw3ICsxMzI3LDcg
QEAgc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2FsbAogICAgICAgICBleGVj
Q2FsbGVlLT5zZXRDYWxsZWUoYXNPYmplY3QoY2FsbGVlKSk7CiAgICAgICAgIHZtLmhvc3RDYWxs
UmV0dXJuVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rp
b24oZXhlY0NhbGxlZSkpOwogCi0gICAgICAgIE1hc21TY3JhbWJsZWRQdHI6OmFzc2VydElzTm90
U2NyYW1ibGVkKExMSW50OjpnZXRDb2RlUHRyKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpKTsKKyAg
ICAgICAgUG9pc29uZWRNYXNtUHRyOjphc3NlcnRJc05vdFBvaXNvbmVkKExMSW50OjpnZXRDb2Rl
UHRyKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpKTsKICAgICAgICAgTExJTlRfQ0FMTF9SRVRVUk4o
ZXhlY0NhbGxlZSwgZXhlY0NhbGxlZSwgTExJbnQ6OmdldENvZGVQdHIoZ2V0SG9zdENhbGxSZXR1
cm5WYWx1ZSkpOwogICAgIH0KICAgICAKQEAgLTEzNjgsNyArMTM2OCw3IEBAIGlubGluZSBTbG93
UGF0aFJldHVyblR5cGUgc2V0VXBDYWxsKEV4ZWMKICAgICAgICAgICAgICAgICBjYWxsTGlua0lu
Zm8tPm1hY2hpbmVDb2RlVGFyZ2V0ID0gY29kZVB0cjsKICAgICAgICAgICAgIH0KIAotICAgICAg
ICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6YXNzZXJ0SXNOb3RTY3JhbWJsZWQoY29kZVB0ci5leGVj
dXRhYmxlQWRkcmVzcygpKTsKKyAgICAgICAgICAgIFBvaXNvbmVkTWFzbVB0cjo6YXNzZXJ0SXNO
b3RQb2lzb25lZChjb2RlUHRyLmV4ZWN1dGFibGVBZGRyZXNzKCkpOwogICAgICAgICAgICAgTExJ
TlRfQ0FMTF9SRVRVUk4oZXhlYywgZXhlY0NhbGxlZSwgY29kZVB0ci5leGVjdXRhYmxlQWRkcmVz
cygpKTsKICAgICAgICAgfQogICAgICAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKQEAgLTE0MTks
NyArMTQxOSw3IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgc2V0VXBDYWxsKEV4ZWMKICAg
ICAgICAgICAgIGNvZGVCbG9jay0+bGlua0luY29taW5nQ2FsbChleGVjLCBjYWxsTGlua0luZm8p
OwogICAgIH0KIAotICAgIE1hc21TY3JhbWJsZWRQdHI6OmFzc2VydElzTm90U2NyYW1ibGVkKGNv
ZGVQdHIuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisgICAgUG9pc29uZWRNYXNtUHRyOjphc3NlcnRJ
c05vdFBvaXNvbmVkKGNvZGVQdHIuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CiAgICAgTExJTlRfQ0FM
TF9SRVRVUk4oZXhlYywgZXhlY0NhbGxlZSwgY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpKTsK
IH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXI2NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXI2NC5hc20JKHJldmlzaW9uIDIyNTYxMykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBA
IC0xOTUwLDcgKzE5NTAsNyBAQCBtYWNybyBkb0NhbGwoc2xvd1BhdGgsIHByZXBhcmVDYWxsKQog
ICAgICAgICBwcmVwYXJlQ2FsbChMTEludENhbGxMaW5rSW5mbzo6bWFjaGluZUNvZGVUYXJnZXRb
dDFdLCB0MiwgdDMsIHQ0KQogICAgICAgICBjYWxsVGFyZ2V0RnVuY3Rpb24oTExJbnRDYWxsTGlu
a0luZm86Om1hY2hpbmVDb2RlVGFyZ2V0W3QxXSkKICAgICBlbHNlCi0gICAgICAgIGxvYWRwIF9n
X21hc21TY3JhbWJsZWRQdHJLZXksIHQyCisgICAgICAgIGxvYWRwIF9nX21hc21Qb2lzb24sIHQy
CiAgICAgICAgIHhvcnAgTExJbnRDYWxsTGlua0luZm86Om1hY2hpbmVDb2RlVGFyZ2V0W3QxXSwg
dDIKICAgICAgICAgcHJlcGFyZUNhbGwodDIsIHQxLCB0MywgdDQpCiAgICAgICAgIGNhbGxUYXJn
ZXRGdW5jdGlvbih0MikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRp
YWxpemVUaHJlYWRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCShyZXZpc2lvbiAyMjU2MTMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTksNyArNTksNyBAQCB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKQogCiAg
ICAgc3RkOjpjYWxsX29uY2UoaW5pdGlhbGl6ZVRocmVhZGluZ09uY2VGbGFnLCBbXXsKICAgICAg
ICAgV1RGOjppbml0aWFsaXplVGhyZWFkaW5nKCk7Ci0gICAgICAgIGluaXRpYWxpemVTY3JhbWJs
ZWRQdHJLZXlzKCk7CisgICAgICAgIGluaXRpYWxpemVQb2lzb24oKTsKICAgICAgICAgT3B0aW9u
czo6aW5pdGlhbGl6ZSgpOwogI2lmIEVOQUJMRShXUklURV9CQVJSSUVSX1BST0ZJTElORykKICAg
ICAgICAgV3JpdGVCYXJyaWVyQ291bnRlcnM6OmluaXRpYWxpemUoKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1BvaXNvbmVkUHRyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQb2lzb25lZFB0ci5jcHAJKHJldmlzaW9u
IDIyNTYxMykJKGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDU2NyYW1ibGVk
UHRyLmNwcDoyMjU2MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQb2lz
b25lZFB0ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJKU0NTY3JhbWJsZWRQdHIuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3VpbnRwdHJf
dCBnX2NsYXNzSW5mb1NjcmFtYmxlZFB0cktleTsKK3VpbnRwdHJfdCBnX21hc21TY3JhbWJsZWRQ
dHJLZXk7CisKK3ZvaWQgaW5pdGlhbGl6ZVNjcmFtYmxlZFB0cktleXMoKQoreworICAgIHN0YXRp
YyBzdGQ6Om9uY2VfZmxhZyBpbml0aWFsaXplT25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uo
aW5pdGlhbGl6ZU9uY2VGbGFnLCBbXSB7CisgICAgICAgIGdfY2xhc3NJbmZvU2NyYW1ibGVkUHRy
S2V5ID0gbWFrZVNjcmFtYmxlZFB0cktleSgpOworICAgICAgICBnX21hc21TY3JhbWJsZWRQdHJL
ZXkgPSBtYWtlU2NyYW1ibGVkUHRyS2V5KCk7CisgICAgfSk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQb2lzb25lZFB0
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDUG9p
c29uZWRQdHIuY3BwCShyZXZpc2lvbiAyMjU2MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NQb2lzb25lZFB0ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDE5ICsyNCwx
OSBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJKU0NTY3JhbWJsZWRQ
dHIuaCIKKyNpbmNsdWRlICJKU0NQb2lzb25lZFB0ci5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAot
dWludHB0cl90IGdfY2xhc3NJbmZvU2NyYW1ibGVkUHRyS2V5OwotdWludHB0cl90IGdfbWFzbVNj
cmFtYmxlZFB0cktleTsKK3VpbnRwdHJfdCBnX2NsYXNzSW5mb1BvaXNvbjsKK3VpbnRwdHJfdCBn
X21hc21Qb2lzb247CiAKLXZvaWQgaW5pdGlhbGl6ZVNjcmFtYmxlZFB0cktleXMoKQordm9pZCBp
bml0aWFsaXplUG9pc29uKCkKIHsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgaW5pdGlhbGl6
ZU9uY2VGbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNlKGluaXRpYWxpemVPbmNlRmxhZywgW10gewot
ICAgICAgICBnX2NsYXNzSW5mb1NjcmFtYmxlZFB0cktleSA9IG1ha2VTY3JhbWJsZWRQdHJLZXko
KTsKLSAgICAgICAgZ19tYXNtU2NyYW1ibGVkUHRyS2V5ID0gbWFrZVNjcmFtYmxlZFB0cktleSgp
OworICAgICAgICBnX2NsYXNzSW5mb1BvaXNvbiA9IG1ha2VQb2lzb24oKTsKKyAgICAgICAgZ19t
YXNtUG9pc29uID0gbWFrZVBvaXNvbigpOwogICAgIH0pOwogfQogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NQb2lzb25lZFB0ci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1BvaXNvbmVkUHRyLmgJKHJldmlzaW9uIDIyNTYx
MykJKGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDU2NyYW1ibGVkUHRyLmg6
MjI1NjEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDUG9pc29uZWRQdHIu
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvU2Ny
YW1ibGVkUHRyLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitleHRlcm4gIkMiIEpTX0VYUE9SVERB
VEEgdWludHB0cl90IGdfY2xhc3NJbmZvU2NyYW1ibGVkUHRyS2V5OworZXh0ZXJuICJDIiBKU19F
WFBPUlREQVRBIHVpbnRwdHJfdCBnX21hc21TY3JhbWJsZWRQdHJLZXk7CisKK3N0cnVjdCBDbGFz
c0luZm87CisKK3VzaW5nIENsYXNzSW5mb1NjcmFtYmxlZFB0ciA9IFNjcmFtYmxlZFB0cjxjb25z
dCBDbGFzc0luZm8qLCBnX2NsYXNzSW5mb1NjcmFtYmxlZFB0cktleT47Cit1c2luZyBNYXNtU2Ny
YW1ibGVkUHRyID0gU2NyYW1ibGVkUHRyPHZvaWQqLCBnX21hc21TY3JhbWJsZWRQdHJLZXk+Owor
Cit2b2lkIGluaXRpYWxpemVTY3JhbWJsZWRQdHJLZXlzKCk7CisKK30gLy8gbmFtZXNwYWNlIEpT
QworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQb2lzb25lZFB0ci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1BvaXNvbmVk
UHRyLmgJKHJldmlzaW9uIDIyNTYxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ1BvaXNvbmVkUHRyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDE5ICsyNSwxOSBAQAogCiAj
cHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgPHd0Zi9TY3JhbWJsZWRQdHIuaD4KKyNpbmNsdWRlIDx3
dGYvUG9pc29uZWQuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKLWV4dGVybiAiQyIgSlNfRVhQT1JU
REFUQSB1aW50cHRyX3QgZ19jbGFzc0luZm9TY3JhbWJsZWRQdHJLZXk7Ci1leHRlcm4gIkMiIEpT
X0VYUE9SVERBVEEgdWludHB0cl90IGdfbWFzbVNjcmFtYmxlZFB0cktleTsKK2V4dGVybiAiQyIg
SlNfRVhQT1JUREFUQSB1aW50cHRyX3QgZ19jbGFzc0luZm9Qb2lzb247CitleHRlcm4gIkMiIEpT
X0VYUE9SVERBVEEgdWludHB0cl90IGdfbWFzbVBvaXNvbjsKIAogc3RydWN0IENsYXNzSW5mbzsK
IAotdXNpbmcgQ2xhc3NJbmZvU2NyYW1ibGVkUHRyID0gU2NyYW1ibGVkUHRyPGNvbnN0IENsYXNz
SW5mbyosIGdfY2xhc3NJbmZvU2NyYW1ibGVkUHRyS2V5PjsKLXVzaW5nIE1hc21TY3JhbWJsZWRQ
dHIgPSBTY3JhbWJsZWRQdHI8dm9pZCosIGdfbWFzbVNjcmFtYmxlZFB0cktleT47Cit1c2luZyBQ
b2lzb25lZENsYXNzSW5mb1B0ciA9IFBvaXNvbmVkPGdfY2xhc3NJbmZvUG9pc29uLCBjb25zdCBD
bGFzc0luZm8qPjsKK3VzaW5nIFBvaXNvbmVkTWFzbVB0ciA9IFBvaXNvbmVkPGdfbWFzbVBvaXNv
biwgdm9pZCo+OwogCi12b2lkIGluaXRpYWxpemVTY3JhbWJsZWRQdHJLZXlzKCk7Cit2b2lkIGlu
aXRpYWxpemVQb2lzb24oKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1NjcmFtYmxlZFB0ci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDU2NyYW1ibGVkUHRyLmNwcAkocmV2aXNp
b24gMjI1NjEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDU2NyYW1ibGVk
UHRyLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiSlNDU2NyYW1ibGVkUHRyLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi11aW50cHRyX3QgZ19j
bGFzc0luZm9TY3JhbWJsZWRQdHJLZXk7Ci11aW50cHRyX3QgZ19tYXNtU2NyYW1ibGVkUHRyS2V5
OwotCi12b2lkIGluaXRpYWxpemVTY3JhbWJsZWRQdHJLZXlzKCkKLXsKLSAgICBzdGF0aWMgc3Rk
OjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZU9uY2VGbGFnOwotICAgIHN0ZDo6Y2FsbF9vbmNlKGluaXRp
YWxpemVPbmNlRmxhZywgW10gewotICAgICAgICBnX2NsYXNzSW5mb1NjcmFtYmxlZFB0cktleSA9
IG1ha2VTY3JhbWJsZWRQdHJLZXkoKTsKLSAgICAgICAgZ19tYXNtU2NyYW1ibGVkUHRyS2V5ID0g
bWFrZVNjcmFtYmxlZFB0cktleSgpOwotICAgIH0pOwotfQotCi19IC8vIG5hbWVzcGFjZSBKU0MK
LQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDU2NyYW1ibGVkUHRyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDU2NyYW1ibGVk
UHRyLmgJKHJldmlzaW9uIDIyNTYxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ1NjcmFtYmxlZFB0ci5oCShub25leGlzdGVudCkKQEAgLTEsNDMgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aW5jbHVkZSA8d3RmL1NjcmFtYmxlZFB0ci5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLQotZXh0ZXJu
ICJDIiBKU19FWFBPUlREQVRBIHVpbnRwdHJfdCBnX2NsYXNzSW5mb1NjcmFtYmxlZFB0cktleTsK
LWV4dGVybiAiQyIgSlNfRVhQT1JUREFUQSB1aW50cHRyX3QgZ19tYXNtU2NyYW1ibGVkUHRyS2V5
OwotCi1zdHJ1Y3QgQ2xhc3NJbmZvOwotCi11c2luZyBDbGFzc0luZm9TY3JhbWJsZWRQdHIgPSBT
Y3JhbWJsZWRQdHI8Y29uc3QgQ2xhc3NJbmZvKiwgZ19jbGFzc0luZm9TY3JhbWJsZWRQdHJLZXk+
OwotdXNpbmcgTWFzbVNjcmFtYmxlZFB0ciA9IFNjcmFtYmxlZFB0cjx2b2lkKiwgZ19tYXNtU2Ny
YW1ibGVkUHRyS2V5PjsKLQotdm9pZCBpbml0aWFsaXplU2NyYW1ibGVkUHRyS2V5cygpOwotCi19
IC8vIG5hbWVzcGFjZSBKU0MKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNEZXN0cnVjdGlibGVPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Rlc3RydWN0aWJsZU9iamVjdC5oCShyZXZpc2lvbiAyMjU2MTMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rlc3RydWN0aWJsZU9iamVjdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICZ2bS5k
ZXN0cnVjdGlibGVPYmplY3RTcGFjZTsKICAgICB9CiAKLSAgICBjb25zdCBDbGFzc0luZm8qIGNs
YXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NJbmZvLmRlc2NyYW1ibGVkKCk7IH0KKyAg
ICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NJbmZv
LnVucG9pc29uZWQoKTsgfQogICAgIAogICAgIHN0YXRpYyBwdHJkaWZmX3QgY2xhc3NJbmZvT2Zm
c2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBtX2Ns
YXNzSW5mbyk7IH0KIApAQCAtNTYsNyArNTYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgfQogCiBwcml2
YXRlOgotICAgIENsYXNzSW5mb1NjcmFtYmxlZFB0ciBtX2NsYXNzSW5mbzsKKyAgICBQb2lzb25l
ZENsYXNzSW5mb1B0ciBtX2NsYXNzSW5mbzsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVj
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2VnbWVu
dGVkVmFyaWFibGVPYmplY3QuaAkocmV2aXNpb24gMjI1NjEzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC05NCw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICZ2bS5zZWdtZW50ZWRW
YXJpYWJsZU9iamVjdFNwYWNlOwogICAgIH0KICAgICAKLSAgICBjb25zdCBDbGFzc0luZm8qIGNs
YXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NJbmZvLmRlc2NyYW1ibGVkKCk7IH0KKyAg
ICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NJbmZv
LnVucG9pc29uZWQoKTsgfQogICAgIAogcHJvdGVjdGVkOgogICAgIEpTU2VnbWVudGVkVmFyaWFi
bGVPYmplY3QoVk0mLCBTdHJ1Y3R1cmUqLCBKU1Njb3BlKik7CkBAIC0xMDcsNyArMTA3LDcgQEAg
cHJpdmF0ZToKICAgICBTZWdtZW50ZWRWZWN0b3I8V3JpdGVCYXJyaWVyPFVua25vd24+LCAxNj4g
bV92YXJpYWJsZXM7CiAgICAgQ29uY3VycmVudEpTTG9jayBtX2xvY2s7CiAgICAgYm9vbCBtX2Fs
cmVhZHlEZXN0cm95ZWQgeyBmYWxzZSB9OyAvLyBXZSB1c2UgdGhlc2UgYXNzZXJ0aW9ucyB0byBj
aGVjayB0aGF0IHdlIGFyZW4ndCBkb2luZyBhbmNpZW50IGhhY2tzIHRoYXQgcmVzdWx0IGluIHRo
aXMgYmVpbmcgZGVzdHJveWVkIG1vcmUgdGhhbiBvbmNlLgotICAgIENsYXNzSW5mb1NjcmFtYmxl
ZFB0ciBtX2NsYXNzSW5mbzsKKyAgICBQb2lzb25lZENsYXNzSW5mb1B0ciBtX2NsYXNzSW5mbzsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlLmgJKHJldmlzaW9uIDIyNTYxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NjgsNyArNDY4LDcg
QEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRPYmplY3RUb1N0cmluZ1ZhbHVlKEV4ZWNTdGF0ZSos
IFZNJiwgSlNTdHJpbmcqIHZhbHVlLCBQcm9wZXJ0eVNsb3QgdG9TdHJpbmdUYWdTeW1ib2xTbG90
KTsKIAotICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9j
bGFzc0luZm8uZGVzY3JhbWJsZWQoKTsgfQorICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZv
KCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc0luZm8udW5wb2lzb25lZCgpOyB9CiAKICAgICBzdGF0
aWMgcHRyZGlmZl90IHN0cnVjdHVyZUlET2Zmc2V0KCkKICAgICB7CkBAIC03OTgsNyArNzk4LDcg
QEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4gbV9uYW1lSW5QcmV2
aW91czsKIAotICAgIENsYXNzSW5mb1NjcmFtYmxlZFB0ciBtX2NsYXNzSW5mbzsKKyAgICBQb2lz
b25lZENsYXNzSW5mb1B0ciBtX2NsYXNzSW5mbzsKIAogICAgIFN0cnVjdHVyZVRyYW5zaXRpb25U
YWJsZSBtX3RyYW5zaXRpb25UYWJsZTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCShyZXZpc2lvbiAyMjU2MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MTQsNyArNDE0LDcgQEAgcHVibGljOgogICAgIHN0ZDo6
dW5pcXVlX3B0cjxQcm9taXNlRGVmZXJyZWRUaW1lcj4gcHJvbWlzZURlZmVycmVkVGltZXI7CiAg
ICAgCiAgICAgSlNDZWxsKiBjdXJyZW50bHlEZXN0cnVjdGluZ0NhbGxiYWNrT2JqZWN0OwotICAg
IENsYXNzSW5mb1NjcmFtYmxlZFB0ciBjdXJyZW50bHlEZXN0cnVjdGluZ0NhbGxiYWNrT2JqZWN0
Q2xhc3NJbmZvOworICAgIFBvaXNvbmVkQ2xhc3NJbmZvUHRyIGN1cnJlbnRseURlc3RydWN0aW5n
Q2FsbGJhY2tPYmplY3RDbGFzc0luZm87CiAKICAgICBBdG9taWNTdHJpbmdUYWJsZSogbV9hdG9t
aWNTdHJpbmdUYWJsZTsKICAgICBXVEY6OlN5bWJvbFJlZ2lzdHJ5IG1fc3ltYm9sUmVnaXN0cnk7
CkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0No
YW5nZUxvZwkocmV2aXNpb24gMjI1NjEzKQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSw1MyBAQAorMjAxNy0xMi0wNiAgTWFyayBMYW0gIDxtYXJrLmxh
bUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVmYWN0b3Jpbmc6IFJlbmFtZSBTY3JhbWJsZWRQdHIg
dG8gUG9pc29uZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODA1MTQKKworICAgICAgICBSZXZpZXdlZCBieSBTYWFtIEJhcmF0aS4KKworICAgICAg
ICBXZSdyZSBzd2l0Y2hpbmcgb3VyIG5vbWVuY2xhdHVyZSB0byAicG9pc29uaW5nIiBpbnN0ZWFk
IG9mICJzY3JhbWJsaW5nIiBwb2ludGVycy4KKyAgICAgICAgVGhpcyBhbGxvd3MgdXMgdG8gdXNl
IHNob3J0ZXIgbmFtZXMuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpcyBhbG1vc3QgcHVyZWx5IHJl
ZmFjdG9yaW5nLCBleGNlcHQgZm9yIG9uZSBjaGFuZ2U6IHRoZSBQb2lzb25lZEltcGwKKyAgICAg
ICAgdGVtcGxhdGUgY2xhc3MgKHByZXZpb3VzbHkgU2NyYW1ibGVkUHRyKSBoYXMgYmVlbiBtb2Rp
ZmllZCB0byBhbGxvdyB1c2FnZSBvZgorICAgICAgICBhIGNvbnN0ZXhwciB1aW50MzJfdCBwb2lz
b24gdmFsdWUgKHNlZSBJbnQzMlBvaXNvbmVkKSBpbiBhZGRpdGlvbiB0byBhIHJ1bnRpbWUKKyAg
ICAgICAgZGV0ZXJtaW5lZCB1aW50cHRyX3QgcG9pc29uIHZhbHVlIChzZWUgUG9pc29uZWQpLgor
CisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3Rm
L0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIHd0Zi9Qb2lzb25lZC5jcHA6IENvcGllZCBmcm9t
IFNvdXJjZS9XVEYvd3RmL1NjcmFtYmxlZFB0ci5jcHAuCisgICAgICAgIChXVEY6Om1ha2VQb2lz
b24pOgorICAgICAgICAoV1RGOjptYWtlU2NyYW1ibGVkUHRyS2V5KTogRGVsZXRlZC4KKyAgICAg
ICAgKiB3dGYvUG9pc29uZWQuaDogQ29waWVkIGZyb20gU291cmNlL1dURi93dGYvU2NyYW1ibGVk
UHRyLmguCisgICAgICAgIChXVEY6OlBvaXNvbmVkSW1wbDo6UG9pc29uZWRJbXBsKToKKyAgICAg
ICAgKFdURjo6UG9pc29uZWRJbXBsOjphc3NlcnRJc1BvaXNvbmVkIGNvbnN0KToKKyAgICAgICAg
KFdURjo6UG9pc29uZWRJbXBsOjphc3NlcnRJc05vdFBvaXNvbmVkIGNvbnN0KToKKyAgICAgICAg
KFdURjo6UG9pc29uZWRJbXBsOjp1bnBvaXNvbmVkIGNvbnN0KToKKyAgICAgICAgKFdURjo6UG9p
c29uZWRJbXBsOjpvcGVyYXRvci0+IGNvbnN0KToKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBs
OjpiaXRzIGNvbnN0KToKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpvcGVyYXRvciEgY29u
c3QpOgorICAgICAgICAoV1RGOjpQb2lzb25lZEltcGw6Om9wZXJhdG9yIGJvb2wgY29uc3QpOgor
ICAgICAgICAoV1RGOjpQb2lzb25lZEltcGw6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAo
V1RGOjpQb2lzb25lZEltcGw6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV1RGOjpQb2lzb25lZElt
cGw6Om9wZXJhdG9yPSk6CisgICAgICAgIChXVEY6OlBvaXNvbmVkSW1wbDo6cG9pc29uKToKKyAg
ICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjp1bnBvaXNvbik6CisgICAgICAgIChXVEY6OlNjcmFt
YmxlZFB0cjo6U2NyYW1ibGVkUHRyKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6U2NyYW1ibGVk
UHRyOjphc3NlcnRJc1NjcmFtYmxlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlNj
cmFtYmxlZFB0cjo6YXNzZXJ0SXNOb3RTY3JhbWJsZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV1RGOjpTY3JhbWJsZWRQdHI6OmRlc2NyYW1ibGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdURjo6U2NyYW1ibGVkUHRyOjpvcGVyYXRvci0+IGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdURjo6U2NyYW1ibGVkUHRyOjpiaXRzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdU
Rjo6U2NyYW1ibGVkUHRyOjpvcGVyYXRvciEgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV1RG
OjpTY3JhbWJsZWRQdHI6Om9wZXJhdG9yIGJvb2wgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V1RGOjpTY3JhbWJsZWRQdHI6Om9wZXJhdG9yPT0gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V1RGOjpTY3JhbWJsZWRQdHI6Om9wZXJhdG9yPT0pOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpT
Y3JhbWJsZWRQdHI6Om9wZXJhdG9yPSk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlNjcmFtYmxl
ZFB0cjo6c2NyYW1ibGUpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTY3JhbWJsZWRQdHI6OmRl
c2NyYW1ibGUpOiBEZWxldGVkLgorICAgICAgICAqIHd0Zi9TY3JhbWJsZWRQdHIuY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIHd0Zi9TY3JhbWJsZWRQdHIuaDogUmVtb3ZlZC4KKwogMjAxNy0xMi0w
NSAgU3RlcGhhbiBTemFibyAgPHN0ZXBoYW4uc3phYm9Ac29ueS5jb20+CiAKICAgICAgICAgU3dp
dGNoIHdpbmRvd3MgYnVpbGQgdG8gVmlzdWFsIFN0dWRpbyAyMDE3CkluZGV4OiBTb3VyY2UvV1RG
L1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
V1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIyNTYxMykKKysrIFNvdXJj
ZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE0
OSw3ICsxNDksNyBAQAogCQlFMzhENkUyNzFGNTUyMkUzMDBBNzVDQzQgLyogU3RyaW5nQnVpbGRl
ckpTT04uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTM4RDZFMjYxRjU1MjJFMzAwQTc1Q0M0IC8qIFN0cmluZ0J1aWxkZXJKU09OLmNwcCAqLzsgfTsK
IAkJRTRBMEFEMzkxQTk2MjQ1NTAwNTM2REY2IC8qIFdvcmtRdWV1ZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEEwQUQzNzFBOTYyNDU1MDA1MzZE
RjYgLyogV29ya1F1ZXVlLmNwcCAqLzsgfTsKIAkJRTRBMEFEM0QxQTk2MjUzQzAwNTM2REY2IC8q
IFdvcmtRdWV1ZUNvY29hLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEU0QTBBRDNDMUE5NjI1M0MwMDUzNkRGNiAvKiBXb3JrUXVldWVDb2NvYS5jcHAg
Ki87IH07Ci0JCUZFODU0MTZFMUZCRTI4NUQwMDhEQTVEQSAvKiBTY3JhbWJsZWRQdHIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4NTQxNkMxRkJF
Mjg1QjAwOERBNURBIC8qIFNjcmFtYmxlZFB0ci5jcHAgKi87IH07CisJCUZFODU0MTZFMUZCRTI4
NUQwMDhEQTVEQSAvKiBQb2lzb25lZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRTg1NDE2QzFGQkUyODVCMDA4REE1REEgLyogUG9pc29uZWQuY3Bw
ICovOyB9OwogCQlGRURBQ0QzRDE2MzBGODNGMDBDNjk2MzQgLyogU3RhY2tTdGF0cy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRURBQ0QzQjE2MzBG
ODNGMDBDNjk2MzQgLyogU3RhY2tTdGF0cy5jcHAgKi87IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxl
IHNlY3Rpb24gKi8KIApAQCAtNjEwLDggKzYxMCw4IEBACiAJCUVGN0Q2Q0Q1OUQ4NjQyQThBMERB
ODZBRCAvKiBTdGFja1RyYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0
YWNrVHJhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjcyQkJEQjEwN0ZBNDI0
ODg2MTc4QjlFIC8qIFN5bWJvbEltcGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU3ltYm9sSW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZF
ODIyNTMwMUIyQTFFNUIwMEJBNjhGRCAvKiBOYWtlZFB0ci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBOYWtlZFB0ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlG
RTg1NDE2QzFGQkUyODVCMDA4REE1REEgLyogU2NyYW1ibGVkUHRyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmFtYmxlZFB0ci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUZFODU0MTZEMUZCRTI4NUMwMDhEQTVEQSAvKiBTY3JhbWJsZWRQdHIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyYW1ibGVkUHRyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODU0MTZDMUZCRTI4NUIwMDhEQTVEQSAvKiBQb2lz
b25lZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb2lzb25lZC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODU0MTZEMUZCRTI4NUMwMDhEQTVE
QSAvKiBQb2lzb25lZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQb2lzb25l
ZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTg2QTg3NDFFNTk0NDAyMDAxMTFC
QkYgLyogRm9yYmlkSGVhcEFsbG9jYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRm9yYmlkSGVhcEFsbG9jYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRkU4OTI1QUYxRDAwREFFQzAwNDY5MDdFIC8qIEluZGVudGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEluZGVudGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUZFREFDRDNCMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0YWNrU3RhdHMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtOTY1LDYgKzk2NSw4IEBACiAJCQkJQTg3NkRCRDcxNTE4MTZFNTAw
REFEQjk1IC8qIFBsYXRmb3JtLmggKi8sCiAJCQkJRTMyMDBBQjQxRTlBNTM2RDAwM0I1OUQyIC8q
IFBsYXRmb3JtUmVnaXN0ZXJzLmggKi8sCiAJCQkJMEZGODYwOTQxQkNDQkQ3NDAwNDUxMjdGIC8q
IFBvaW50ZXJDb21wYXJpc29uLmggKi8sCisJCQkJRkU4NTQxNkMxRkJFMjg1QjAwOERBNURBIC8q
IFBvaXNvbmVkLmNwcCAqLywKKwkJCQlGRTg1NDE2RDFGQkUyODVDMDA4REE1REEgLyogUG9pc29u
ZWQuaCAqLywKIAkJCQkwRjlEMzM1RDE2NURCQTczMDA1QUQzODcgLyogUHJpbnRTdHJlYW0uY3Bw
ICovLAogCQkJCTBGOUQzMzVFMTY1REJBNzMwMDVBRDM4NyAvKiBQcmludFN0cmVhbS5oICovLAog
CQkJCTUzRUMyNTNDMUU5NUFEMzAwMDA4MzFCOSAvKiBQcmlvcml0eVF1ZXVlLmggKi8sCkBAIC0x
MDAxLDggKzEwMDMsNiBAQAogCQkJCTE0Njk0MTk1MTZFQUFGRjgwMDI0RTE0NiAvKiBTY2hlZHVs
ZVBhaXJNYWMubW0gKi8sCiAJCQkJMUEzNTI0QUExRDYzQTJGRjAwMzE3MjlCIC8qIFNjb3BlLmgg
Ki8sCiAJCQkJMEZFQzg0QjAxQkRBQ0QzOTAwODBGRjc0IC8qIFNjb3BlZExhbWJkYS5oICovLAot
CQkJCUZFODU0MTZDMUZCRTI4NUIwMDhEQTVEQSAvKiBTY3JhbWJsZWRQdHIuY3BwICovLAotCQkJ
CUZFODU0MTZEMUZCRTI4NUMwMDhEQTVEQSAvKiBTY3JhbWJsZWRQdHIuaCAqLywKIAkJCQkwRjY2
QjI4NDFEQzk3QkFCMDA0QTFEM0YgLyogU2Vjb25kcy5jcHAgKi8sCiAJCQkJMEY2NkIyODUxREM5
N0JBQjAwNEExRDNGIC8qIFNlY29uZHMuaCAqLywKIAkJCQlBOEE0NzMwNjE1MUE4MjVCMDA0MTIz
RkYgLyogU2VnbWVudGVkVmVjdG9yLmggKi8sCkBAIC0xNDYyLDcgKzE0NjIsNyBAQAogCQkJCTE0
Njk0MTkzMTZFQUFGNkQwMDI0RTE0NiAvKiBSdW5Mb29wVGltZXJDRi5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkxNDY5NDE5OTE2RUFCMDQxMDAyNEUxNDYgLyogU2NoZWR1bGVQYWlyQ0YuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMTQ2OTQxOTcxNkVBQUZGODAwMjRFMTQ2IC8qIFNjaGVkdWxlUGFp
ck1hYy5tbSBpbiBTb3VyY2VzICovLAotCQkJCUZFODU0MTZFMUZCRTI4NUQwMDhEQTVEQSAvKiBT
Y3JhbWJsZWRQdHIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkU4NTQxNkUxRkJFMjg1RDAwOERB
NURBIC8qIFBvaXNvbmVkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNjZCMjhFMURDOTdCQUIw
MDRBMUQzRiAvKiBTZWNvbmRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDIxMTUxQTgy
NUIwMDQxMjNGRiAvKiBTSEExLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzMTFCRDUzMUVBNzFD
QUQwMDUyNTI4MSAvKiBTaWduYWxzLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dU
Ri93dGYvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvQ01ha2VM
aXN0cy50eHQJKHJldmlzaW9uIDIyNTYxMykKKysrIFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsNiArMTA3LDcgQEAgc2V0KFdURl9IRUFERVJTCiAg
ICAgUGFya2luZ0xvdC5oCiAgICAgUGxhdGZvcm0uaAogICAgIFBsYXRmb3JtUmVnaXN0ZXJzLmgK
KyAgICBQb2lzb25lZC5oCiAgICAgUHJpbnRTdHJlYW0uaAogICAgIFByb2Nlc3NJRC5oCiAgICAg
UkFNU2l6ZS5oCkBAIC0xMzAsNyArMTMxLDYgQEAgc2V0KFdURl9IRUFERVJTCiAgICAgU2hhcmVk
VGFzay5oCiAgICAgU2F0dXJhdGVkQXJpdGhtZXRpYy5oCiAgICAgU2NvcGVkTGFtYmRhLmgKLSAg
ICBTY3JhbWJsZWRQdHIuaAogICAgIFNlY29uZHMuaAogICAgIFNlZ21lbnRlZFZlY3Rvci5oCiAg
ICAgU21hbGxQdHJTZXQuaApAQCAtMjU4LDYgKzI1OCw3IEBAIHNldChXVEZfU09VUkNFUwogICAg
IFBhcmFsbGVsSGVscGVyUG9vbC5jcHAKICAgICBQYXJhbGxlbEpvYnNHZW5lcmljLmNwcAogICAg
IFBhcmtpbmdMb3QuY3BwCisgICAgUG9pc29uZWQuY3BwCiAgICAgUHJpbnRTdHJlYW0uY3BwCiAg
ICAgUkFNU2l6ZS5jcHAKICAgICBSYW5kb21EZXZpY2UuY3BwCkBAIC0yNjYsNyArMjY3LDYgQEAg
c2V0KFdURl9TT1VSQ0VTCiAgICAgUmVmQ291bnRlZExlYWtDb3VudGVyLmNwcAogICAgIFJ1bkxv
b3AuY3BwCiAgICAgU0hBMS5jcHAKLSAgICBTY3JhbWJsZWRQdHIuY3BwCiAgICAgU2Vjb25kcy5j
cHAKICAgICBTaXhDaGFyYWN0ZXJIYXNoLmNwcAogICAgIFN0YWNrQm91bmRzLmNwcApJbmRleDog
U291cmNlL1dURi93dGYvUG9pc29uZWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3Rm
L1BvaXNvbmVkLmNwcAkocmV2aXNpb24gMjI1NjEzKQkoZnJvbSBTb3VyY2UvV1RGL3d0Zi9TY3Jh
bWJsZWRQdHIuY3BwOjIyNTYxMykKKysrIFNvdXJjZS9XVEYvd3RmL1BvaXNvbmVkLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNjcmFtYmxl
ZFB0ci5oIgorCisjaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmg+
CisKK25hbWVzcGFjZSBXVEYgeworCit1aW50cHRyX3QgbWFrZVNjcmFtYmxlZFB0cktleSgpCit7
CisgICAgdWludHB0cl90IGtleSA9IGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyKCk7Cisj
aWYgVVNFKEpTVkFMVUU2NCkgJiYgIU9TKFdJTkRPV1MpCisgICAga2V5ID0gKGtleSA8PCAzMikg
XiAoc3RhdGljX2Nhc3Q8dWludHB0cl90PihjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigp
KSA8PCAzKTsKKyAgICAvLyBFbnN1cmUgdGhhdCB0aGUgc2NyYW1ibGVkIGJpdHMgKHBvaW50ZXIg
XiBrZXkpIGRvIG5vdCBtYWtlIGEgdmFsaWQgcG9pbnRlciBhbmQKKyAgICAvLyBjYW5ub3QgYmUg
MC4gV2UgZW5zdXJlIHRoYXQgaXQgaXMgemVybyBzbyB0aGF0IHRoZSBzY3JhbWJsZWQgYml0cyBj
YW4gYWxzbyBiZQorICAgIC8vIHVzZWQgZm9yIGEgbm90bWFsIHplcm8gY2hlY2sgd2l0aG91dCBu
ZWVkaW5nIHRvIGRlc2NyYW1ibGUgZmlyc3QuCisgICAga2V5IHw9IChzdGF0aWNfY2FzdDx1aW50
cHRyX3Q+KDB4MSkgPDwgNjMpOworI2Vsc2UKKyAgICBrZXkgPSAwOyAvLyBTY3JhbWJsaW5nIGlz
IG5vdCBzdXBwb3J0ZWQgb24gMzItYml0IG9yIG5vbi1kYXJ3aW4gcGxhdGZvcm1zIHlldC4KKyNl
bmRpZgorICAgIHJldHVybiBrZXk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCkluZGV4OiBT
b3VyY2UvV1RGL3d0Zi9Qb2lzb25lZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYv
UG9pc29uZWQuY3BwCShyZXZpc2lvbiAyMjU2MTMpCisrKyBTb3VyY2UvV1RGL3d0Zi9Qb2lzb25l
ZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDIzICsyNCwyMyBAQAogICovCiAKICNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJTY3JhbWJsZWRQdHIuaCIKKyNpbmNsdWRlICJQb2lzb25l
ZC5oIgogCiAjaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmg+CiAK
IG5hbWVzcGFjZSBXVEYgewogCi11aW50cHRyX3QgbWFrZVNjcmFtYmxlZFB0cktleSgpCit1aW50
cHRyX3QgbWFrZVBvaXNvbigpCiB7CiAgICAgdWludHB0cl90IGtleSA9IGNyeXB0b2dyYXBoaWNh
bGx5UmFuZG9tTnVtYmVyKCk7CiAjaWYgVVNFKEpTVkFMVUU2NCkgJiYgIU9TKFdJTkRPV1MpCiAg
ICAga2V5ID0gKGtleSA8PCAzMikgXiAoc3RhdGljX2Nhc3Q8dWludHB0cl90PihjcnlwdG9ncmFw
aGljYWxseVJhbmRvbU51bWJlcigpKSA8PCAzKTsKLSAgICAvLyBFbnN1cmUgdGhhdCB0aGUgc2Ny
YW1ibGVkIGJpdHMgKHBvaW50ZXIgXiBrZXkpIGRvIG5vdCBtYWtlIGEgdmFsaWQgcG9pbnRlciBh
bmQKLSAgICAvLyBjYW5ub3QgYmUgMC4gV2UgZW5zdXJlIHRoYXQgaXQgaXMgemVybyBzbyB0aGF0
IHRoZSBzY3JhbWJsZWQgYml0cyBjYW4gYWxzbyBiZQotICAgIC8vIHVzZWQgZm9yIGEgbm90bWFs
IHplcm8gY2hlY2sgd2l0aG91dCBuZWVkaW5nIHRvIGRlc2NyYW1ibGUgZmlyc3QuCisgICAgLy8g
RW5zdXJlIHRoYXQgdGhlIHBvaXNvbmVkIGJpdHMgKHBvaW50ZXIgXiBrZXkpIGRvIG5vdCBtYWtl
IGEgdmFsaWQgcG9pbnRlciBhbmQKKyAgICAvLyBjYW5ub3QgYmUgMC4gV2UgZW5zdXJlIHRoYXQg
aXQgaXMgemVybyBzbyB0aGF0IHRoZSBwb2lzb25lZCBiaXRzIGNhbiBhbHNvIGJlCisgICAgLy8g
dXNlZCBmb3IgYSBub3RtYWwgemVybyBjaGVjayB3aXRob3V0IG5lZWRpbmcgdG8gZGVjb2RlZCBm
aXJzdC4KICAgICBrZXkgfD0gKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMHgxKSA8PCA2Myk7CiAj
ZWxzZQotICAgIGtleSA9IDA7IC8vIFNjcmFtYmxpbmcgaXMgbm90IHN1cHBvcnRlZCBvbiAzMi1i
aXQgb3Igbm9uLWRhcndpbiBwbGF0Zm9ybXMgeWV0LgorICAgIGtleSA9IDA7IC8vIFBvaXNvbmlu
ZyBpcyBub3Qgc3VwcG9ydGVkIG9uIDMyLWJpdCBvciBub24tZGFyd2luIHBsYXRmb3JtcyB5ZXQu
CiAjZW5kaWYKICAgICByZXR1cm4ga2V5OwogfQpJbmRleDogU291cmNlL1dURi93dGYvUG9pc29u
ZWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Qb2lzb25lZC5oCShyZXZpc2lvbiAy
MjU2MTMpCShmcm9tIFNvdXJjZS9XVEYvd3RmL1NjcmFtYmxlZFB0ci5oOjIyNTYxMykKKysrIFNv
dXJjZS9XVEYvd3RmL1BvaXNvbmVkLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMjkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisKKyNkZWZpbmUgRU5BQkxFX1NDUkFN
QkxFRF9QVFJfQVNTRVJUUyAwCisKKy8vIE5vdCBjdXJyZW50bHkgc3VwcG9ydGVkIGZvciAzMi1i
aXQgb3IgT1MoV0lORE9XUykgYnVpbGRzIChiZWNhdXNlIG9mIG1pc3NpbmcgbGxpbnQgc3VwcG9y
dCkuCisvLyBNYWtlIHN1cmUgaXQncyBkaXNhYmxlZC4KKyNpZiBVU0UoSlNWQUxVRTMyXzY0KSB8
fCBPUyhXSU5ET1dTKQorI3VuZGVmIEVOQUJMRV9TQ1JBTUJMRURfUFRSX0FTU0VSVFMKKyNkZWZp
bmUgRU5BQkxFX1NDUkFNQkxFRF9QVFJfQVNTRVJUUyAwCisjZW5kaWYKKworbmFtZXNwYWNlIFdU
RiB7CisKK3VzaW5nIFNjcmFtYmxlZFB0ckJpdHMgPSB1aW50cHRyX3Q7CisKK3RlbXBsYXRlPHR5
cGVuYW1lIFQsIHVpbnRwdHJfdCYga2V5LCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8c3Rk
Ojppc19wb2ludGVyPFQ+Ojp2YWx1ZT4+CitjbGFzcyBTY3JhbWJsZWRQdHIgeworcHVibGljOgor
ICAgIFNjcmFtYmxlZFB0cigpIHsgfQorCisgICAgZXhwbGljaXQgU2NyYW1ibGVkUHRyKFQgcHRy
KQorICAgICAgICA6IG1fc2NyYW1ibGVkQml0cyhzY3JhbWJsZShwdHIpKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKHB0ciAmJiBtX3NjcmFtYmxlZEJpdHMpOworICAgIH0KKworICAgIFNjcmFtYmxl
ZFB0cihjb25zdCBTY3JhbWJsZWRQdHImKSA9IGRlZmF1bHQ7CisKKyAgICBleHBsaWNpdCBTY3Jh
bWJsZWRQdHIoU2NyYW1ibGVkUHRyQml0cyBzY3JhbWJsZWRCaXRzKQorICAgICAgICA6IG1fc2Ny
YW1ibGVkQml0cyhzY3JhbWJsZWRCaXRzKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fc2NyYW1i
bGVkQml0cyk7CisgICAgfQorCisjaWYgRU5BQkxFKFNDUkFNQkxFRF9QVFJfQVNTRVJUUykKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gdm9pZCo+CisgICAgc3RhdGljIGJvb2wgaXNTY3JhbWJs
ZWQoVSB2YWx1ZSkgeyByZXR1cm4gIXZhbHVlIHx8IChyZWludGVycHJldF9jYXN0PHVpbnRwdHJf
dD4odmFsdWUpICYgMHhmZmZmMDAwMDAwMDAwMDAwKTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFUgPSB2b2lkKj4KKyAgICBzdGF0aWMgdm9pZCBhc3NlcnRJc1NjcmFtYmxlZChVIHZhbHVlKSB7
IFJFTEVBU0VfQVNTRVJUKGlzU2NyYW1ibGVkKHZhbHVlKSk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBVID0gdm9pZCo+CisgICAgc3RhdGljIHZvaWQgYXNzZXJ0SXNOb3RTY3JhbWJsZWQoVSB2
YWx1ZSkgeyBSRUxFQVNFX0FTU0VSVCghaXNTY3JhbWJsZWQodmFsdWUpKTsgfQorI2Vsc2UKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gdm9pZCo+IHN0YXRpYyB2b2lkIGFzc2VydElzU2NyYW1i
bGVkKFUpIHsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSB2b2lkKj4gc3RhdGljIHZvaWQg
YXNzZXJ0SXNOb3RTY3JhbWJsZWQoVSkgeyB9CisjZW5kaWYKKyAgICB2b2lkIGFzc2VydElzU2Ny
YW1ibGVkKCkgY29uc3QgeyBhc3NlcnRJc1NjcmFtYmxlZChtX3NjcmFtYmxlZEJpdHMpOyB9Cisg
ICAgdm9pZCBhc3NlcnRJc05vdFNjcmFtYmxlZCgpIGNvbnN0IHsgYXNzZXJ0SXNOb3RTY3JhbWJs
ZWQobV9zY3JhbWJsZWRCaXRzKTsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQ+Cisg
ICAgVSBkZXNjcmFtYmxlZCgpIGNvbnN0IHsgcmV0dXJuIGRlc2NyYW1ibGU8VT4obV9zY3JhbWJs
ZWRCaXRzKTsgfQorCisgICAgQUxXQVlTX0lOTElORSBUIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJl
dHVybiBkZXNjcmFtYmxlPFQ+KG1fc2NyYW1ibGVkQml0cyk7IH0KKworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFUgPSBTY3JhbWJsZWRQdHJCaXRzPgorICAgIFUgYml0cygpIGNvbnN0IHsgcmV0dXJu
IGJpdHdpc2VfY2FzdDxVPihtX3NjcmFtYmxlZEJpdHMpOyB9CisKKyAgICBib29sIG9wZXJhdG9y
ISgpIGNvbnN0IHsgcmV0dXJuICFtX3NjcmFtYmxlZEJpdHM7IH0KKyAgICBleHBsaWNpdCBvcGVy
YXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX3NjcmFtYmxlZEJpdHM7IH0KKworICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBTY3JhbWJsZWRQdHImIGIpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gbV9zY3JhbWJsZWRCaXRzID09IGIubV9zY3JhbWJsZWRCaXRzOworICAgIH0KKwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFB0clR5cGUgPSB2b2lkKiwgdHlwZW5hbWUgPSB0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3BvaW50ZXI8UHRyVHlwZT46OnZhbHVlPjo6dHlwZT4K
KyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUHRyVHlwZSBiKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGRlc2NyYW1ibGVkPFB0clR5cGU+KCkgPT0gYjsKKyAgICB9CisKKyAgICBTY3JhbWJsZWRQ
dHImIG9wZXJhdG9yPShUIHB0cikKKyAgICB7CisgICAgICAgIG1fc2NyYW1ibGVkQml0cyA9IHB0
ciA/IHNjcmFtYmxlKHB0cikgOiAwOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorICAg
IFNjcmFtYmxlZFB0ciYgb3BlcmF0b3I9KGNvbnN0IFNjcmFtYmxlZFB0ciYpID0gZGVmYXVsdDsK
KworcHJpdmF0ZToKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+
CisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgU2NyYW1ibGVkUHRyQml0cyBzY3JhbWJsZShVIHB0
cikgeyByZXR1cm4gYml0d2lzZV9jYXN0PFNjcmFtYmxlZFB0ckJpdHM+KHB0cikgXiBrZXk7IH0K
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgorICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFUgZGVz
Y3JhbWJsZShTY3JhbWJsZWRQdHJCaXRzIHNjcmFtYmxlZEJpdHMpIHsgcmV0dXJuIGJpdHdpc2Vf
Y2FzdDxVPihzY3JhbWJsZWRCaXRzIF4ga2V5KTsgfQorI2Vsc2UKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBVPgorICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFNjcmFtYmxlZFB0ckJpdHMgc2NyYW1i
bGUoVSBwdHIpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxTY3JhbWJsZWRQdHJCaXRzPihwdHIpOyB9
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBVIGRl
c2NyYW1ibGUoU2NyYW1ibGVkUHRyQml0cyBzY3JhbWJsZWRCaXRzKSB7IHJldHVybiBiaXR3aXNl
X2Nhc3Q8VT4oc2NyYW1ibGVkQml0cyk7IH0KKyNlbmRpZgorCisgICAgU2NyYW1ibGVkUHRyQml0
cyBtX3NjcmFtYmxlZEJpdHMgeyAwIH07Cit9OworCit2b2lkIGluaXRpYWxpemVTY3JhbWJsZWRQ
dHIoKTsKK1dURl9FWFBPUlRfUFJJVkFURSB1aW50cHRyX3QgbWFrZVNjcmFtYmxlZFB0cktleSgp
OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpTY3JhbWJsZWRQdHI7Cit1c2lu
ZyBXVEY6OlNjcmFtYmxlZFB0ckJpdHM7Cit1c2luZyBXVEY6Om1ha2VTY3JhbWJsZWRQdHJLZXk7
CisKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BvaXNvbmVkLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvUG9pc29uZWQuaAkocmV2aXNpb24gMjI1NjEzKQorKysgU291cmNlL1dURi93dGYv
UG9pc29uZWQuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTAzICsyNywxMDkgQEAKIAogI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAKLSNkZWZpbmUgRU5BQkxFX1NDUkFNQkxFRF9QVFJfQVNT
RVJUUyAwCisjZGVmaW5lIEVOQUJMRV9QT0lTT05fQVNTRVJUUyAwCiAKIC8vIE5vdCBjdXJyZW50
bHkgc3VwcG9ydGVkIGZvciAzMi1iaXQgb3IgT1MoV0lORE9XUykgYnVpbGRzIChiZWNhdXNlIG9m
IG1pc3NpbmcgbGxpbnQgc3VwcG9ydCkuCiAvLyBNYWtlIHN1cmUgaXQncyBkaXNhYmxlZC4KICNp
ZiBVU0UoSlNWQUxVRTMyXzY0KSB8fCBPUyhXSU5ET1dTKQotI3VuZGVmIEVOQUJMRV9TQ1JBTUJM
RURfUFRSX0FTU0VSVFMKLSNkZWZpbmUgRU5BQkxFX1NDUkFNQkxFRF9QVFJfQVNTRVJUUyAwCisj
dW5kZWYgRU5BQkxFX1BPSVNPTl9BU1NFUlRTCisjZGVmaW5lIEVOQUJMRV9QT0lTT05fQVNTRVJU
UyAwCiAjZW5kaWYKIAogbmFtZXNwYWNlIFdURiB7CiAKLXVzaW5nIFNjcmFtYmxlZFB0ckJpdHMg
PSB1aW50cHRyX3Q7Cit1c2luZyBQb2lzb25lZEJpdHMgPSB1aW50cHRyX3Q7CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIFQsIHVpbnRwdHJfdCYga2V5LCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8
c3RkOjppc19wb2ludGVyPFQ+Ojp2YWx1ZT4+Ci1jbGFzcyBTY3JhbWJsZWRQdHIgewordGVtcGxh
dGU8dHlwZW5hbWUgS2V5VHlwZSwgS2V5VHlwZSBrZXksIHR5cGVuYW1lIFQsIHR5cGVuYW1lID0g
c3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX3BvaW50ZXI8VD46OnZhbHVlPj4KK2NsYXNzIFBvaXNv
bmVkSW1wbCB7CiBwdWJsaWM6Ci0gICAgU2NyYW1ibGVkUHRyKCkgeyB9CisgICAgUG9pc29uZWRJ
bXBsKCkgeyB9CiAKLSAgICBleHBsaWNpdCBTY3JhbWJsZWRQdHIoVCBwdHIpCi0gICAgICAgIDog
bV9zY3JhbWJsZWRCaXRzKHNjcmFtYmxlKHB0cikpCisgICAgZXhwbGljaXQgUG9pc29uZWRJbXBs
KFQgcHRyKQorICAgICAgICA6IG1fcG9pc29uZWRCaXRzKHBvaXNvbihwdHIpKQogICAgIHsKLSAg
ICAgICAgQVNTRVJUKHB0ciAmJiBtX3NjcmFtYmxlZEJpdHMpOworICAgICAgICBBU1NFUlQocHRy
ICYmIG1fcG9pc29uZWRCaXRzKTsKICAgICB9CiAKLSAgICBTY3JhbWJsZWRQdHIoY29uc3QgU2Ny
YW1ibGVkUHRyJikgPSBkZWZhdWx0OworICAgIFBvaXNvbmVkSW1wbChjb25zdCBQb2lzb25lZElt
cGwmKSA9IGRlZmF1bHQ7CiAKLSAgICBleHBsaWNpdCBTY3JhbWJsZWRQdHIoU2NyYW1ibGVkUHRy
Qml0cyBzY3JhbWJsZWRCaXRzKQotICAgICAgICA6IG1fc2NyYW1ibGVkQml0cyhzY3JhbWJsZWRC
aXRzKQorICAgIGV4cGxpY2l0IFBvaXNvbmVkSW1wbChQb2lzb25lZEJpdHMgcG9pc29uZWRCaXRz
KQorICAgICAgICA6IG1fcG9pc29uZWRCaXRzKHBvaXNvbmVkQml0cykKICAgICB7Ci0gICAgICAg
IEFTU0VSVChtX3NjcmFtYmxlZEJpdHMpOworICAgICAgICBBU1NFUlQobV9wb2lzb25lZEJpdHMp
OwogICAgIH0KIAotI2lmIEVOQUJMRShTQ1JBTUJMRURfUFRSX0FTU0VSVFMpCisjaWYgRU5BQkxF
KFBPSVNPTl9BU1NFUlRTKQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSB2b2lkKj4KLSAgICBz
dGF0aWMgYm9vbCBpc1NjcmFtYmxlZChVIHZhbHVlKSB7IHJldHVybiAhdmFsdWUgfHwgKHJlaW50
ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih2YWx1ZSkgJiAweGZmZmYwMDAwMDAwMDAwMDApOyB9Cisg
ICAgc3RhdGljIGJvb2wgaXNQb2lzb25lZChVIHZhbHVlKSB7IHJldHVybiAhdmFsdWUgfHwgKHJl
aW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih2YWx1ZSkgJiAweGZmZmYwMDAwMDAwMDAwMDApOyB9
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IHZvaWQqPgotICAgIHN0YXRpYyB2b2lkIGFzc2Vy
dElzU2NyYW1ibGVkKFUgdmFsdWUpIHsgUkVMRUFTRV9BU1NFUlQoaXNTY3JhbWJsZWQodmFsdWUp
KTsgfQorICAgIHN0YXRpYyB2b2lkIGFzc2VydElzUG9pc29uZWQoVSB2YWx1ZSkgeyBSRUxFQVNF
X0FTU0VSVChpc1BvaXNvbmVkKHZhbHVlKSk7IH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0g
dm9pZCo+Ci0gICAgc3RhdGljIHZvaWQgYXNzZXJ0SXNOb3RTY3JhbWJsZWQoVSB2YWx1ZSkgeyBS
RUxFQVNFX0FTU0VSVCghaXNTY3JhbWJsZWQodmFsdWUpKTsgfQorICAgIHN0YXRpYyB2b2lkIGFz
c2VydElzTm90UG9pc29uZWQoVSB2YWx1ZSkgeyBSRUxFQVNFX0FTU0VSVCghaXNQb2lzb25lZCh2
YWx1ZSkpOyB9CiAjZWxzZQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSB2b2lkKj4gc3RhdGlj
IHZvaWQgYXNzZXJ0SXNTY3JhbWJsZWQoVSkgeyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9
IHZvaWQqPiBzdGF0aWMgdm9pZCBhc3NlcnRJc05vdFNjcmFtYmxlZChVKSB7IH0KKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBVID0gdm9pZCo+IHN0YXRpYyB2b2lkIGFzc2VydElzUG9pc29uZWQoVSkg
eyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IHZvaWQqPiBzdGF0aWMgdm9pZCBhc3NlcnRJ
c05vdFBvaXNvbmVkKFUpIHsgfQogI2VuZGlmCi0gICAgdm9pZCBhc3NlcnRJc1NjcmFtYmxlZCgp
IGNvbnN0IHsgYXNzZXJ0SXNTY3JhbWJsZWQobV9zY3JhbWJsZWRCaXRzKTsgfQotICAgIHZvaWQg
YXNzZXJ0SXNOb3RTY3JhbWJsZWQoKSBjb25zdCB7IGFzc2VydElzTm90U2NyYW1ibGVkKG1fc2Ny
YW1ibGVkQml0cyk7IH0KKyAgICB2b2lkIGFzc2VydElzUG9pc29uZWQoKSBjb25zdCB7IGFzc2Vy
dElzUG9pc29uZWQobV9wb2lzb25lZEJpdHMpOyB9CisgICAgdm9pZCBhc3NlcnRJc05vdFBvaXNv
bmVkKCkgY29uc3QgeyBhc3NlcnRJc05vdFBvaXNvbmVkKG1fcG9pc29uZWRCaXRzKTsgfQogCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQ+Ci0gICAgVSBkZXNjcmFtYmxlZCgpIGNvbnN0IHsg
cmV0dXJuIGRlc2NyYW1ibGU8VT4obV9zY3JhbWJsZWRCaXRzKTsgfQorICAgIFUgdW5wb2lzb25l
ZCgpIGNvbnN0IHsgcmV0dXJuIHVucG9pc29uPFU+KG1fcG9pc29uZWRCaXRzKTsgfQogCi0gICAg
QUxXQVlTX0lOTElORSBUIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBkZXNjcmFtYmxlPFQ+
KG1fc2NyYW1ibGVkQml0cyk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIFQgb3BlcmF0b3ItPigpIGNv
bnN0IHsgcmV0dXJuIHVucG9pc29uPFQ+KG1fcG9pc29uZWRCaXRzKTsgfQogCi0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgVSA9IFNjcmFtYmxlZFB0ckJpdHM+Ci0gICAgVSBiaXRzKCkgY29uc3QgeyBy
ZXR1cm4gYml0d2lzZV9jYXN0PFU+KG1fc2NyYW1ibGVkQml0cyk7IH0KKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBVID0gUG9pc29uZWRCaXRzPgorICAgIFUgYml0cygpIGNvbnN0IHsgcmV0dXJuIGJp
dHdpc2VfY2FzdDxVPihtX3BvaXNvbmVkQml0cyk7IH0KIAotICAgIGJvb2wgb3BlcmF0b3IhKCkg
Y29uc3QgeyByZXR1cm4gIW1fc2NyYW1ibGVkQml0czsgfQotICAgIGV4cGxpY2l0IG9wZXJhdG9y
IGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1fc2NyYW1ibGVkQml0czsgfQorICAgIGJvb2wgb3Bl
cmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fcG9pc29uZWRCaXRzOyB9CisgICAgZXhwbGljaXQg
b3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9wb2lzb25lZEJpdHM7IH0KIAotICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBTY3JhbWJsZWRQdHImIGIpIGNvbnN0CisgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFBvaXNvbmVkSW1wbCYgYikgY29uc3QKICAgICB7Ci0gICAgICAgIHJl
dHVybiBtX3NjcmFtYmxlZEJpdHMgPT0gYi5tX3NjcmFtYmxlZEJpdHM7CisgICAgICAgIHJldHVy
biBtX3BvaXNvbmVkQml0cyA9PSBiLm1fcG9pc29uZWRCaXRzOwogICAgIH0KIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFB0clR5cGUgPSB2b2lkKiwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVu
YWJsZV9pZjxzdGQ6OmlzX3BvaW50ZXI8UHRyVHlwZT46OnZhbHVlPjo6dHlwZT4KICAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgUHRyVHlwZSBiKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGRlc2Ny
YW1ibGVkPFB0clR5cGU+KCkgPT0gYjsKKyAgICAgICAgcmV0dXJuIHVucG9pc29uZWQ8UHRyVHlw
ZT4oKSA9PSBiOwogICAgIH0KIAotICAgIFNjcmFtYmxlZFB0ciYgb3BlcmF0b3I9KFQgcHRyKQor
ICAgIFBvaXNvbmVkSW1wbCYgb3BlcmF0b3I9KFQgcHRyKQogICAgIHsKLSAgICAgICAgbV9zY3Jh
bWJsZWRCaXRzID0gcHRyID8gc2NyYW1ibGUocHRyKSA6IDA7CisgICAgICAgIG1fcG9pc29uZWRC
aXRzID0gcG9pc29uKHB0cik7CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9Ci0gICAgU2Ny
YW1ibGVkUHRyJiBvcGVyYXRvcj0oY29uc3QgU2NyYW1ibGVkUHRyJikgPSBkZWZhdWx0OworICAg
IFBvaXNvbmVkSW1wbCYgb3BlcmF0b3I9KGNvbnN0IFBvaXNvbmVkSW1wbCYpID0gZGVmYXVsdDsK
IAogcHJpdmF0ZToKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+
Ci0gICAgQUxXQVlTX0lOTElORSBzdGF0aWMgU2NyYW1ibGVkUHRyQml0cyBzY3JhbWJsZShVIHB0
cikgeyByZXR1cm4gYml0d2lzZV9jYXN0PFNjcmFtYmxlZFB0ckJpdHM+KHB0cikgXiBrZXk7IH0K
KyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBQb2lzb25lZEJpdHMgcG9pc29uKFUgcHRyKSB7IHJl
dHVybiBwdHIgPyBiaXR3aXNlX2Nhc3Q8UG9pc29uZWRCaXRzPihwdHIpIF4ga2V5IDogMDsgfQog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgQUxXQVlTX0lOTElORSBzdGF0aWMgVSBkZXNj
cmFtYmxlKFNjcmFtYmxlZFB0ckJpdHMgc2NyYW1ibGVkQml0cykgeyByZXR1cm4gYml0d2lzZV9j
YXN0PFU+KHNjcmFtYmxlZEJpdHMgXiBrZXkpOyB9CisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMg
VSB1bnBvaXNvbihQb2lzb25lZEJpdHMgcG9pc29uZWRCaXRzKSB7IHJldHVybiBwb2lzb25lZEJp
dHMgPyBiaXR3aXNlX2Nhc3Q8VT4ocG9pc29uZWRCaXRzIF4ga2V5KSA6IGJpdHdpc2VfY2FzdDxV
PigwbGwpOyB9CiAjZWxzZQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgQUxXQVlTX0lO
TElORSBzdGF0aWMgU2NyYW1ibGVkUHRyQml0cyBzY3JhbWJsZShVIHB0cikgeyByZXR1cm4gYml0
d2lzZV9jYXN0PFNjcmFtYmxlZFB0ckJpdHM+KHB0cik7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHN0
YXRpYyBQb2lzb25lZEJpdHMgcG9pc29uKFUgcHRyKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8UG9p
c29uZWRCaXRzPihwdHIpOyB9CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICBBTFdBWVNf
SU5MSU5FIHN0YXRpYyBVIGRlc2NyYW1ibGUoU2NyYW1ibGVkUHRyQml0cyBzY3JhbWJsZWRCaXRz
KSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8VT4oc2NyYW1ibGVkQml0cyk7IH0KKyAgICBBTFdBWVNf
SU5MSU5FIHN0YXRpYyBVIHVucG9pc29uKFBvaXNvbmVkQml0cyBwb2lzb25lZEJpdHMpIHsgcmV0
dXJuIGJpdHdpc2VfY2FzdDxVPihwb2lzb25lZEJpdHMpOyB9CiAjZW5kaWYKIAotICAgIFNjcmFt
YmxlZFB0ckJpdHMgbV9zY3JhbWJsZWRCaXRzIHsgMCB9OworICAgIFBvaXNvbmVkQml0cyBtX3Bv
aXNvbmVkQml0cyB7IDAgfTsKIH07CiAKLXZvaWQgaW5pdGlhbGl6ZVNjcmFtYmxlZFB0cigpOwot
V1RGX0VYUE9SVF9QUklWQVRFIHVpbnRwdHJfdCBtYWtlU2NyYW1ibGVkUHRyS2V5KCk7Cit0ZW1w
bGF0ZTx1aW50cHRyX3QmIGtleSwgdHlwZW5hbWUgVD4KK3VzaW5nIFBvaXNvbmVkID0gUG9pc29u
ZWRJbXBsPGNvbnN0IHVpbnRwdHJfdCYsIGtleSwgVD47CisKK3RlbXBsYXRlPHVpbnQzMl90IGtl
eSwgdHlwZW5hbWUgVD4KK3VzaW5nIEludDMyUG9pc29uZWQgPSBQb2lzb25lZEltcGw8dWludHB0
cl90LCBzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KGtleSkgPDwgMzIsIFQ+OworCitXVEZfRVhQT1JU
X1BSSVZBVEUgdWludHB0cl90IG1ha2VQb2lzb24oKTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAK
LXVzaW5nIFdURjo6U2NyYW1ibGVkUHRyOwotdXNpbmcgV1RGOjpTY3JhbWJsZWRQdHJCaXRzOwot
dXNpbmcgV1RGOjptYWtlU2NyYW1ibGVkUHRyS2V5OwordXNpbmcgV1RGOjpJbnQzMlBvaXNvbmVk
OwordXNpbmcgV1RGOjpQb2lzb25lZDsKK3VzaW5nIFdURjo6UG9pc29uZWRCaXRzOwordXNpbmcg
V1RGOjptYWtlUG9pc29uOwogCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9TY3JhbWJsZWRQdHIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1NjcmFtYmxlZFB0ci5jcHAJKHJldmlzaW9u
IDIyNTYxMykKKysrIFNvdXJjZS9XVEYvd3RmL1NjcmFtYmxlZFB0ci5jcHAJKG5vbmV4aXN0ZW50
KQpAQCAtMSw0OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNjcmFtYmxlZFB0ci5oIgot
Ci0jaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmg+Ci0KLW5hbWVz
cGFjZSBXVEYgewotCi11aW50cHRyX3QgbWFrZVNjcmFtYmxlZFB0cktleSgpCi17Ci0gICAgdWlu
dHB0cl90IGtleSA9IGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyKCk7Ci0jaWYgVVNFKEpT
VkFMVUU2NCkgJiYgIU9TKFdJTkRPV1MpCi0gICAga2V5ID0gKGtleSA8PCAzMikgXiAoc3RhdGlj
X2Nhc3Q8dWludHB0cl90PihjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpKSA8PCAzKTsK
LSAgICAvLyBFbnN1cmUgdGhhdCB0aGUgc2NyYW1ibGVkIGJpdHMgKHBvaW50ZXIgXiBrZXkpIGRv
IG5vdCBtYWtlIGEgdmFsaWQgcG9pbnRlciBhbmQKLSAgICAvLyBjYW5ub3QgYmUgMC4gV2UgZW5z
dXJlIHRoYXQgaXQgaXMgemVybyBzbyB0aGF0IHRoZSBzY3JhbWJsZWQgYml0cyBjYW4gYWxzbyBi
ZQotICAgIC8vIHVzZWQgZm9yIGEgbm90bWFsIHplcm8gY2hlY2sgd2l0aG91dCBuZWVkaW5nIHRv
IGRlc2NyYW1ibGUgZmlyc3QuCi0gICAga2V5IHw9IChzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDB4
MSkgPDwgNjMpOwotI2Vsc2UKLSAgICBrZXkgPSAwOyAvLyBTY3JhbWJsaW5nIGlzIG5vdCBzdXBw
b3J0ZWQgb24gMzItYml0IG9yIG5vbi1kYXJ3aW4gcGxhdGZvcm1zIHlldC4KLSNlbmRpZgotICAg
IHJldHVybiBrZXk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCkluZGV4OiBTb3VyY2UvV1RG
L3d0Zi9TY3JhbWJsZWRQdHIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9TY3JhbWJs
ZWRQdHIuaAkocmV2aXNpb24gMjI1NjEzKQorKysgU291cmNlL1dURi93dGYvU2NyYW1ibGVkUHRy
LmgJKG5vbmV4aXN0ZW50KQpAQCAtMSwxMjkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSA8d3RmL0Fz
c2VydGlvbnMuaD4KLQotI2RlZmluZSBFTkFCTEVfU0NSQU1CTEVEX1BUUl9BU1NFUlRTIDAKLQot
Ly8gTm90IGN1cnJlbnRseSBzdXBwb3J0ZWQgZm9yIDMyLWJpdCBvciBPUyhXSU5ET1dTKSBidWls
ZHMgKGJlY2F1c2Ugb2YgbWlzc2luZyBsbGludCBzdXBwb3J0KS4KLS8vIE1ha2Ugc3VyZSBpdCdz
IGRpc2FibGVkLgotI2lmIFVTRShKU1ZBTFVFMzJfNjQpIHx8IE9TKFdJTkRPV1MpCi0jdW5kZWYg
RU5BQkxFX1NDUkFNQkxFRF9QVFJfQVNTRVJUUwotI2RlZmluZSBFTkFCTEVfU0NSQU1CTEVEX1BU
Ul9BU1NFUlRTIDAKLSNlbmRpZgotCi1uYW1lc3BhY2UgV1RGIHsKLQotdXNpbmcgU2NyYW1ibGVk
UHRyQml0cyA9IHVpbnRwdHJfdDsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdWludHB0cl90JiBr
ZXksIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX3BvaW50ZXI8VD46OnZhbHVl
Pj4KLWNsYXNzIFNjcmFtYmxlZFB0ciB7Ci1wdWJsaWM6Ci0gICAgU2NyYW1ibGVkUHRyKCkgeyB9
Ci0KLSAgICBleHBsaWNpdCBTY3JhbWJsZWRQdHIoVCBwdHIpCi0gICAgICAgIDogbV9zY3JhbWJs
ZWRCaXRzKHNjcmFtYmxlKHB0cikpCi0gICAgewotICAgICAgICBBU1NFUlQocHRyICYmIG1fc2Ny
YW1ibGVkQml0cyk7Ci0gICAgfQotCi0gICAgU2NyYW1ibGVkUHRyKGNvbnN0IFNjcmFtYmxlZFB0
ciYpID0gZGVmYXVsdDsKLQotICAgIGV4cGxpY2l0IFNjcmFtYmxlZFB0cihTY3JhbWJsZWRQdHJC
aXRzIHNjcmFtYmxlZEJpdHMpCi0gICAgICAgIDogbV9zY3JhbWJsZWRCaXRzKHNjcmFtYmxlZEJp
dHMpCi0gICAgewotICAgICAgICBBU1NFUlQobV9zY3JhbWJsZWRCaXRzKTsKLSAgICB9Ci0KLSNp
ZiBFTkFCTEUoU0NSQU1CTEVEX1BUUl9BU1NFUlRTKQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUg
PSB2b2lkKj4KLSAgICBzdGF0aWMgYm9vbCBpc1NjcmFtYmxlZChVIHZhbHVlKSB7IHJldHVybiAh
dmFsdWUgfHwgKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih2YWx1ZSkgJiAweGZmZmYwMDAw
MDAwMDAwMDApOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IHZvaWQqPgotICAgIHN0YXRp
YyB2b2lkIGFzc2VydElzU2NyYW1ibGVkKFUgdmFsdWUpIHsgUkVMRUFTRV9BU1NFUlQoaXNTY3Jh
bWJsZWQodmFsdWUpKTsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSB2b2lkKj4KLSAgICBz
dGF0aWMgdm9pZCBhc3NlcnRJc05vdFNjcmFtYmxlZChVIHZhbHVlKSB7IFJFTEVBU0VfQVNTRVJU
KCFpc1NjcmFtYmxlZCh2YWx1ZSkpOyB9Ci0jZWxzZQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUg
PSB2b2lkKj4gc3RhdGljIHZvaWQgYXNzZXJ0SXNTY3JhbWJsZWQoVSkgeyB9Ci0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgVSA9IHZvaWQqPiBzdGF0aWMgdm9pZCBhc3NlcnRJc05vdFNjcmFtYmxlZChV
KSB7IH0KLSNlbmRpZgotICAgIHZvaWQgYXNzZXJ0SXNTY3JhbWJsZWQoKSBjb25zdCB7IGFzc2Vy
dElzU2NyYW1ibGVkKG1fc2NyYW1ibGVkQml0cyk7IH0KLSAgICB2b2lkIGFzc2VydElzTm90U2Ny
YW1ibGVkKCkgY29uc3QgeyBhc3NlcnRJc05vdFNjcmFtYmxlZChtX3NjcmFtYmxlZEJpdHMpOyB9
Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gVD4KLSAgICBVIGRlc2NyYW1ibGVkKCkgY29u
c3QgeyByZXR1cm4gZGVzY3JhbWJsZTxVPihtX3NjcmFtYmxlZEJpdHMpOyB9Ci0KLSAgICBBTFdB
WVNfSU5MSU5FIFQgb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIGRlc2NyYW1ibGU8VD4obV9z
Y3JhbWJsZWRCaXRzKTsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFNjcmFtYmxlZFB0
ckJpdHM+Ci0gICAgVSBiaXRzKCkgY29uc3QgeyByZXR1cm4gYml0d2lzZV9jYXN0PFU+KG1fc2Ny
YW1ibGVkQml0cyk7IH0KLQotICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1f
c2NyYW1ibGVkQml0czsgfQotICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJl
dHVybiAhIW1fc2NyYW1ibGVkQml0czsgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNj
cmFtYmxlZFB0ciYgYikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3NjcmFtYmxlZEJp
dHMgPT0gYi5tX3NjcmFtYmxlZEJpdHM7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
UHRyVHlwZSA9IHZvaWQqLCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6
aXNfcG9pbnRlcjxQdHJUeXBlPjo6dmFsdWU+Ojp0eXBlPgotICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBQdHJUeXBlIGIpCi0gICAgewotICAgICAgICByZXR1cm4gZGVzY3JhbWJsZWQ8UHRyVHlw
ZT4oKSA9PSBiOwotICAgIH0KLQotICAgIFNjcmFtYmxlZFB0ciYgb3BlcmF0b3I9KFQgcHRyKQot
ICAgIHsKLSAgICAgICAgbV9zY3JhbWJsZWRCaXRzID0gcHRyID8gc2NyYW1ibGUocHRyKSA6IDA7
Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0gICAgU2NyYW1ibGVkUHRyJiBvcGVyYXRv
cj0oY29uc3QgU2NyYW1ibGVkUHRyJikgPSBkZWZhdWx0OwotCi1wcml2YXRlOgotI2lmIFVTRShK
U1ZBTFVFNjQpCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICBBTFdBWVNfSU5MSU5FIHN0
YXRpYyBTY3JhbWJsZWRQdHJCaXRzIHNjcmFtYmxlKFUgcHRyKSB7IHJldHVybiBiaXR3aXNlX2Nh
c3Q8U2NyYW1ibGVkUHRyQml0cz4ocHRyKSBeIGtleTsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFU+Ci0gICAgQUxXQVlTX0lOTElORSBzdGF0aWMgVSBkZXNjcmFtYmxlKFNjcmFtYmxlZFB0ckJp
dHMgc2NyYW1ibGVkQml0cykgeyByZXR1cm4gYml0d2lzZV9jYXN0PFU+KHNjcmFtYmxlZEJpdHMg
XiBrZXkpOyB9Ci0jZWxzZQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgQUxXQVlTX0lO
TElORSBzdGF0aWMgU2NyYW1ibGVkUHRyQml0cyBzY3JhbWJsZShVIHB0cikgeyByZXR1cm4gYml0
d2lzZV9jYXN0PFNjcmFtYmxlZFB0ckJpdHM+KHB0cik7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBVPgotICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFUgZGVzY3JhbWJsZShTY3JhbWJsZWRQdHJC
aXRzIHNjcmFtYmxlZEJpdHMpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxVPihzY3JhbWJsZWRCaXRz
KTsgfQotI2VuZGlmCi0KLSAgICBTY3JhbWJsZWRQdHJCaXRzIG1fc2NyYW1ibGVkQml0cyB7IDAg
fTsKLX07Ci0KLXZvaWQgaW5pdGlhbGl6ZVNjcmFtYmxlZFB0cigpOwotV1RGX0VYUE9SVF9QUklW
QVRFIHVpbnRwdHJfdCBtYWtlU2NyYW1ibGVkUHRyS2V5KCk7Ci0KLX0gLy8gbmFtZXNwYWNlIFdU
RgotCi11c2luZyBXVEY6OlNjcmFtYmxlZFB0cjsKLXVzaW5nIFdURjo6U2NyYW1ibGVkUHRyQml0
czsKLXVzaW5nIFdURjo6bWFrZVNjcmFtYmxlZFB0cktleTsKLQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328677</attachid>
            <date>2017-12-06 20:34:24 -0800</date>
            <delta_ts>2017-12-06 20:34:24 -0800</delta_ts>
            <desc>patch for landing + 32-bit windows build fix.</desc>
            <filename>bug-180514.patch</filename>
            <type>text/plain</type>
            <size>78078</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjI1NjEzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY3IEBA
CisyMDE3LTEyLTA2ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZWZhY3RvcmluZzogUmVuYW1lIFNjcmFtYmxlZFB0ciB0byBQb2lzb25lZC4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDUxNAorCisgICAgICAgIFJl
dmlld2VkIGJ5IFNhYW0gQmFyYXRpLgorCisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3Qu
aDoKKyAgICAgICAgKiBBUEkvSlNPYmplY3RSZWYuY3BwOgorICAgICAgICAoY2xhc3NJbmZvUHJp
dmF0ZSk6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmLmg6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uUHRyOjpGdW5jdGlvblB0cik6
CisgICAgICAgIChKU0M6OkZ1bmN0aW9uUHRyOjp2YWx1ZSBjb25zdCk6CisgICAgICAgIChKU0M6
OkZ1bmN0aW9uUHRyOjpleGVjdXRhYmxlQWRkcmVzcyBjb25zdCk6CisgICAgICAgIChKU0M6OlJl
dHVybkFkZHJlc3NQdHI6OlJldHVybkFkZHJlc3NQdHIpOgorICAgICAgICAoSlNDOjpSZXR1cm5B
ZGRyZXNzUHRyOjp2YWx1ZSBjb25zdCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQ29k
ZVB0cjo6TWFjcm9Bc3NlbWJsZXJDb2RlUHRyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyOjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MpOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlckNvZGVQdHI6OnBvaXNvbmVkUHRyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjogY29uc3QpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
YmxlckNvZGVQdHI6Om9wZXJhdG9yISBjb25zdCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyQ29kZVB0cjo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyQ29kZVB0cjo6ZW1wdHlWYWx1ZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQ29k
ZVB0cjo6ZGVsZXRlZFZhbHVlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUHRy
OjpzY3JhbWJsZWRQdHIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGIzL0IzTG93ZXJNYWNy
b3MuY3BwOgorICAgICAgICAqIGIzL3Rlc3RiMy5jcHA6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0
SW50ZXJwcmV0ZXIpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNoZWNrQXJyYXkpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tTdWJDbGFzcyk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdTdHJpbmdPYmplY3QpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoSW50SnVtcCk6CisgICAgICAg
ICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVOZXdTdHJpbmdPYmplY3QpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2hlY2tTdWJDbGFzcyk6CisgICAgICAgICogaml0L0Fz
c2VtYmx5SGVscGVycy5oOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRBbGxv
Y2F0ZURlc3RydWN0aWJsZU9iamVjdCk6CisgICAgICAgICogaml0L1NwZWNpYWxpemVkVGh1bmtK
SVQuaDoKKyAgICAgICAgKEpTQzo6U3BlY2lhbGl6ZWRUaHVua0pJVDo6bG9hZEFyZ3VtZW50V2l0
aFNwZWNpZmljQ2xhc3MpOgorICAgICAgICAqIGppdC9UaHVua0dlbmVyYXRvcnMuY3BwOgorICAg
ICAgICAoSlNDOjp2aXJ0dWFsVGh1bmtGb3IpOgorICAgICAgICAoSlNDOjpib3VuZFRoaXNOb0Fy
Z3NGdW5jdGlvbkNhbGxHZW5lcmF0b3IpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhz
LmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OmhhbmRsZUhvc3RDYWxsKToKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OnNldFVwQ2FsbCk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjY0LmFzbToKKyAgICAgICAgKiBydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwOgorICAg
ICAgICAoSlNDOjppbml0aWFsaXplVGhyZWFkaW5nKToKKyAgICAgICAgKiBydW50aW1lL0pTQ1Bv
aXNvbmVkUHRyLmNwcDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDU2NyYW1ibGVkUHRyLmNwcC4KKyAgICAgICAgKEpTQzo6aW5pdGlhbGl6ZVBvaXNvbik6Cisg
ICAgICAgIChKU0M6OmluaXRpYWxpemVTY3JhbWJsZWRQdHJLZXlzKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBydW50aW1lL0pTQ1BvaXNvbmVkUHRyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ1NjcmFtYmxlZFB0ci5oLgorICAgICAgICAqIHJ1bnRpbWUvSlND
U2NyYW1ibGVkUHRyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBydW50aW1lL0pTQ1NjcmFtYmxl
ZFB0ci5oOiBSZW1vdmVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNEZXN0cnVjdGlibGVPYmplY3Qu
aDoKKyAgICAgICAgKEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Q6OmNsYXNzSW5mbyBjb25zdCk6
CisgICAgICAgICogcnVudGltZS9KU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0Lmg6CisgICAgICAg
IChKU0M6OkpTU2VnbWVudGVkVmFyaWFibGVPYmplY3Q6OmNsYXNzSW5mbyBjb25zdCk6CisgICAg
ICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisKIDIw
MTctMTItMDYgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgQVNT
RVJUSU9OIEZBSUxFRDogdm0tPmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkgaW4gdm9p
ZCBKU0M6OnNhbml0aXplU3RhY2tGb3JWTShKU0M6OlZNICopCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NvdXJjZXMudHh0CShyZXZpc2lvbiAyMjU2MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
U291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTc3Miw3ICs3NzIsNyBAQCBydW50aW1lL0pT
QXN5bmNGdW5jdGlvbi5jcHAKIHJ1bnRpbWUvSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uLmNwcAog
cnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCiBydW50aW1lL0pTQ0pTVmFsdWUuY3BwCi1ydW50
aW1lL0pTQ1NjcmFtYmxlZFB0ci5jcHAKK3J1bnRpbWUvSlNDUG9pc29uZWRQdHIuY3BwCiBydW50
aW1lL0pTQ2FsbGVlLmNwcAogcnVudGltZS9KU0NlbGwuY3BwCiBydW50aW1lL0pTQ3VzdG9tR2V0
dGVyU2V0dGVyRnVuY3Rpb24uY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
Q2FsbGJhY2tPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ2FsbGJhY2tPYmplY3QuaAkocmV2aXNpb24gMjI1NjEzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3
LDcgQEAKICNpZm5kZWYgSlNDYWxsYmFja09iamVjdF9oCiAjZGVmaW5lIEpTQ2FsbGJhY2tPYmpl
Y3RfaAogCi0jaW5jbHVkZSAiSlNDU2NyYW1ibGVkUHRyLmgiCisjaW5jbHVkZSAiSlNDUG9pc29u
ZWRQdHIuaCIKICNpbmNsdWRlICJKU09iamVjdFJlZi5oIgogI2luY2x1ZGUgIkpTVmFsdWVSZWYu
aCIKICNpbmNsdWRlICJKU09iamVjdC5oIgpAQCAtMjM0LDcgKzIzNCw3IEBAIHByaXZhdGU6CiAg
ICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIGNhbGxiYWNrR2V0dGVyKEV4ZWNTdGF0ZSosIEVuY29k
ZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEpTQ2FsbGJh
Y2tPYmplY3REYXRhPiBtX2NhbGxiYWNrT2JqZWN0RGF0YTsKLSAgICBDbGFzc0luZm9TY3JhbWJs
ZWRQdHIgbV9jbGFzc0luZm87CisgICAgUG9pc29uZWRDbGFzc0luZm9QdHIgbV9jbGFzc0luZm87
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNPYmplY3RSZWYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNPYmplY3RSZWYuY3BwCShyZXZpc2lvbiAyMjU2MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMxLDcgKzQzMSw3
IEBAIHN0YXRpYyBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mb1ByaXZhdGUKICAgICBpZiAodm0u
Y3VycmVudGx5RGVzdHJ1Y3RpbmdDYWxsYmFja09iamVjdCAhPSBqc09iamVjdCkKICAgICAgICAg
cmV0dXJuIGpzT2JqZWN0LT5jbGFzc0luZm8odm0pOwogCi0gICAgcmV0dXJuIHZtLmN1cnJlbnRs
eURlc3RydWN0aW5nQ2FsbGJhY2tPYmplY3RDbGFzc0luZm8uZGVzY3JhbWJsZWQoKTsKKyAgICBy
ZXR1cm4gdm0uY3VycmVudGx5RGVzdHJ1Y3RpbmdDYWxsYmFja09iamVjdENsYXNzSW5mby51bnBv
aXNvbmVkKCk7CiB9CiAKIHZvaWQqIEpTT2JqZWN0R2V0UHJpdmF0ZShKU09iamVjdFJlZiBvYmpl
Y3QpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjI1NjEzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE3MjAsNyArMTcyMCw3IEBACiAJCUZFMUMwRkZE
MUIxOTNFOTgwMEI1M0ZDQSAvKiBFeGNlcHRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMUMwRkZDMUIxOTNFOTgwMEI1M0ZDQSAvKiBFeGNlcHRp
b24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlG
RTIwQ0U5RTE1RjA0QTk1MDBERjM0MzAgLyogTExJbnRDTG9vcC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUyMENFOUMxNUYwNEE5NTAwREYzNDMwIC8q
IExMSW50Q0xvb3AuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlGRTJBODc2MDFGMDIzODE2MDBFQjMxQjIgLyogTWluaW11bVJlc2VydmVkWm9uZVNp
emUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMkE4
NzVGMUYwMjM4MTYwMEVCMzFCMiAvKiBNaW5pbXVtUmVzZXJ2ZWRab25lU2l6ZS5oICovOyB9Owot
CQlGRTJCMEI2OTFGRDIyN0UwMDA3NURBNUYgLyogSlNDU2NyYW1ibGVkUHRyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTJCMEI2NzFGRDBEMjk2MDA3
NURBNUYgLyogSlNDU2NyYW1ibGVkUHRyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkUyQjBCNjkxRkQyMjdFMDAwNzVEQTVGIC8qIEpTQ1BvaXNv
bmVkUHRyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RTJCMEI2NzFGRDBEMjk2MDA3NURBNUYgLyogSlNDUG9pc29uZWRQdHIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTMwMjJEMzFFM0Q3M0E1MDBC
QUM0OTMgLyogU2lnaWxsQ3Jhc2hBbmFseXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzMDIyRDExRTNENzM5NjAwQkFDNDkzIC8qIFNpZ2lsbENy
YXNoQW5hbHl6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlGRTMwMjJENzFFNDI4NTczMDBCQUM0OTMgLyogVk1JbnNwZWN0b3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzAyMkQ1MUU0Mjg1Njcw
MEJBQzQ5MyAvKiBWTUluc3BlY3Rvci5oICovOyB9OwogCQlGRTMxOEZFMDFDQUM5ODJGMDBERkND
NTQgLyogRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzMThGREUxQ0FDOEM1MzAwREZDQzU0IC8q
IEVDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuaCAqLzsgfTsKQEAgLTQ1OTgsOCArNDU5
OCw4IEBACiAJCUZFMjBDRTlCMTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENMb29wLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50Q0xvb3AuY3BwOyBwYXRoID0g
bGxpbnQvTExJbnRDTG9vcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMjBD
RTlDMTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENMb29wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IExMSW50Q0xvb3AuaDsgcGF0aCA9IGxsaW50L0xMSW50Q0xvb3AuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUyQTg3NUYxRjAyMzgxNjAwRUIzMUIyIC8qIE1p
bmltdW1SZXNlcnZlZFpvbmVTaXplLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1pbmltdW1SZXNlcnZlZFpv
bmVTaXplLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUZFMkIwQjY3MUZEMEQyOTYw
MDc1REE1RiAvKiBKU0NTY3JhbWJsZWRQdHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNDU2NyYW1ibGVkUHRyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUZF
MkIwQjY4MUZEMEQyOTcwMDc1REE1RiAvKiBKU0NTY3JhbWJsZWRQdHIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDU2NyYW1ibGVkUHRyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkUyQjBCNjcxRkQwRDI5NjAwNzVEQTVGIC8qIEpTQ1BvaXNv
bmVkUHRyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ1BvaXNvbmVkUHRy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMkIwQjY4MUZEMEQyOTcwMDc1REE1
RiAvKiBKU0NQb2lzb25lZFB0ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU0NQb2lzb25lZFB0ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZF
MkU2QTdBMUQ2RUE1RkUwMDYwRjg5NiAvKiBUaHJvd1Njb3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRocm93U2NvcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGRTMwMjJEMDFFM0Q3Mzk2MDBCQUM0OTMgLyogU2lnaWxsQ3Jhc2hBbmFseXpl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaWdpbGxDcmFzaEFu
YWx5emVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUzMDIyRDExRTNENzM5
NjAwQkFDNDkzIC8qIFNpZ2lsbENyYXNoQW5hbHl6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU2lnaWxsQ3Jhc2hBbmFseXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNjU0Myw4ICs2NTQzLDggQEAKIAkJCQlGNjkyQTg4NzAyNTU1OTdEMDFGRjYwRjcg
LyogSlNDSlNWYWx1ZS5jcHAgKi8sCiAJCQkJMTRBQkIzNkUwOTlDMDc2NDAwRTJBMjRGIC8qIEpT
Q0pTVmFsdWUuaCAqLywKIAkJCQk4NjVBMzBGMDEzNTAwN0UxMDBDREI0OUUgLyogSlNDSlNWYWx1
ZUlubGluZXMuaCAqLywKLQkJCQlGRTJCMEI2ODFGRDBEMjk3MDA3NURBNUYgLyogSlNDU2NyYW1i
bGVkUHRyLmNwcCAqLywKLQkJCQlGRTJCMEI2NzFGRDBEMjk2MDA3NURBNUYgLyogSlNDU2NyYW1i
bGVkUHRyLmggKi8sCisJCQkJRkUyQjBCNjgxRkQwRDI5NzAwNzVEQTVGIC8qIEpTQ1BvaXNvbmVk
UHRyLmNwcCAqLywKKwkJCQlGRTJCMEI2NzFGRDBEMjk2MDA3NURBNUYgLyogSlNDUG9pc29uZWRQ
dHIuaCAqLywKIAkJCQk3MkFBRjdDQjFEMEQzMThCMDA1RTYwQkUgLyogSlNDdXN0b21HZXR0ZXJT
ZXR0ZXJGdW5jdGlvbi5jcHAgKi8sCiAJCQkJNzJBQUY3Q0MxRDBEMzE4QjAwNUU2MEJFIC8qIEpT
Q3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uaCAqLywKIAkJCQkwRjJCNjZCRDE3QjZCNUFCMDBB
N0FFM0YgLyogSlNEYXRhVmlldy5jcHAgKi8sCkBAIC04MTU1LDcgKzgxNTUsNyBAQAogCQkJCTBG
RUM4NTJBMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1BoYXNlU2NvcGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGMzczMDhEMUMwQkQyOTEwMDA1MkJGQSAvKiBCM1BoaUNoaWxkcmVuLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkVDODUyQzFCREFDREFDMDA4MEZGNzQgLyogQjNQcm9jZWR1cmUuaCBpbiBI
ZWFkZXJzICovLAotCQkJCUZFMkIwQjY5MUZEMjI3RTAwMDc1REE1RiAvKiBKU0NTY3JhbWJsZWRQ
dHIuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFMkIwQjY5MUZEMjI3RTAwMDc1REE1RiAvKiBKU0NQ
b2lzb25lZFB0ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1MkQxQkRBQ0RBQzAwODBGRjc0
IC8qIEIzUHJvY2VkdXJlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3MjVDQUExQzUw
M0RFRDAwQUQ5NDNBIC8qIEIzUHVyZUNTRS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDM0MjJBNjcx
QzE2MjY3ODAwRTJFQjk4IC8qIEIzUmVkdWNlRG91YmxlVG9GbG9hdC5oIGluIEhlYWRlcnMgKi8s
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29k
ZVJlZi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmLmgJKHJldmlzaW9uIDIyNTYxMykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDcgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRXhlY3V0YWJsZUFs
bG9jYXRvci5oIgotI2luY2x1ZGUgIkpTQ1NjcmFtYmxlZFB0ci5oIgorI2luY2x1ZGUgIkpTQ1Bv
aXNvbmVkUHRyLmgiCiAjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KICNpbmNsdWRlIDx3dGYvUHJp
bnRTdHJlYW0uaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC02Nyw3ICs2Nyw3IEBAIHB1
YmxpYzoKICAgICBGdW5jdGlvblB0cihyZXR1cm5UeXBlKCp2YWx1ZSkoKSkKICAgICAgICAgOiBt
X3ZhbHVlKCh2b2lkKil2YWx1ZSkKICAgICB7Ci0gICAgICAgIE1hc21TY3JhbWJsZWRQdHI6OmFz
c2VydElzTm90U2NyYW1ibGVkKG1fdmFsdWUpOworICAgICAgICBQb2lzb25lZE1hc21QdHI6OmFz
c2VydElzTm90UG9pc29uZWQobV92YWx1ZSk7CiAgICAgICAgIEFTU0VSVF9WQUxJRF9DT0RFX1BP
SU5URVIobV92YWx1ZSk7CiAgICAgfQogCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICBG
dW5jdGlvblB0cihyZXR1cm5UeXBlKCp2YWx1ZSkoYXJnVHlwZTEpKQogICAgICAgICA6IG1fdmFs
dWUoKHZvaWQqKXZhbHVlKQogICAgIHsKLSAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6YXNzZXJ0
SXNOb3RTY3JhbWJsZWQobV92YWx1ZSk7CisgICAgICAgIFBvaXNvbmVkTWFzbVB0cjo6YXNzZXJ0
SXNOb3RQb2lzb25lZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRF
UihtX3ZhbHVlKTsKICAgICB9CiAKQEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogICAgIEZ1bmN0
aW9uUHRyKHJldHVyblR5cGUoKnZhbHVlKShhcmdUeXBlMSwgYXJnVHlwZTIpKQogICAgICAgICA6
IG1fdmFsdWUoKHZvaWQqKXZhbHVlKQogICAgIHsKLSAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6
YXNzZXJ0SXNOb3RTY3JhbWJsZWQobV92YWx1ZSk7CisgICAgICAgIFBvaXNvbmVkTWFzbVB0cjo6
YXNzZXJ0SXNOb3RQb2lzb25lZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVf
UE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CiAKQEAgLTkxLDcgKzkxLDcgQEAgcHVibGljOgogICAg
IEZ1bmN0aW9uUHRyKHJldHVyblR5cGUoKnZhbHVlKShhcmdUeXBlMSwgYXJnVHlwZTIsIGFyZ1R5
cGUzKSkKICAgICAgICAgOiBtX3ZhbHVlKCh2b2lkKil2YWx1ZSkKICAgICB7Ci0gICAgICAgIE1h
c21TY3JhbWJsZWRQdHI6OmFzc2VydElzTm90U2NyYW1ibGVkKG1fdmFsdWUpOworICAgICAgICBQ
b2lzb25lZE1hc21QdHI6OmFzc2VydElzTm90UG9pc29uZWQobV92YWx1ZSk7CiAgICAgICAgIEFT
U0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7CiAgICAgfQogCkBAIC05OSw3ICs5OSw3
IEBAIHB1YmxpYzoKICAgICBGdW5jdGlvblB0cihyZXR1cm5UeXBlKCp2YWx1ZSkoYXJnVHlwZTEs
IGFyZ1R5cGUyLCBhcmdUeXBlMywgYXJnVHlwZTQpKQogICAgICAgICA6IG1fdmFsdWUoKHZvaWQq
KXZhbHVlKQogICAgIHsKLSAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6YXNzZXJ0SXNOb3RTY3Jh
bWJsZWQobV92YWx1ZSk7CisgICAgICAgIFBvaXNvbmVkTWFzbVB0cjo6YXNzZXJ0SXNOb3RQb2lz
b25lZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVl
KTsKICAgICB9CiAKQEAgLTEwNyw3ICsxMDcsNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rpb25QdHIo
cmV0dXJuVHlwZSgqdmFsdWUpKGFyZ1R5cGUxLCBhcmdUeXBlMiwgYXJnVHlwZTMsIGFyZ1R5cGU0
LCBhcmdUeXBlNSkpCiAgICAgICAgIDogbV92YWx1ZSgodm9pZCopdmFsdWUpCiAgICAgewotICAg
ICAgICBNYXNtU2NyYW1ibGVkUHRyOjphc3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsKKyAg
ICAgICAgUG9pc29uZWRNYXNtUHRyOjphc3NlcnRJc05vdFBvaXNvbmVkKG1fdmFsdWUpOwogICAg
ICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwogICAgIH0KIApAQCAtMTE1
LDcgKzExNSw3IEBAIHB1YmxpYzoKICAgICBGdW5jdGlvblB0cihyZXR1cm5UeXBlKCp2YWx1ZSko
YXJnVHlwZTEsIGFyZ1R5cGUyLCBhcmdUeXBlMywgYXJnVHlwZTQsIGFyZ1R5cGU1LCBhcmdUeXBl
NikpCiAgICAgICAgIDogbV92YWx1ZSgodm9pZCopdmFsdWUpCiAgICAgewotICAgICAgICBNYXNt
U2NyYW1ibGVkUHRyOjphc3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsKKyAgICAgICAgUG9p
c29uZWRNYXNtUHRyOjphc3NlcnRJc05vdFBvaXNvbmVkKG1fdmFsdWUpOwogICAgICAgICBBU1NF
UlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwogICAgIH0KIC8vIE1TVkMgZG9lc24ndCBz
ZWVtIHRvIHRyZWF0IGZ1bmN0aW9ucyB3aXRoIGRpZmZlcmVudCBjYWxsaW5nIGNvbnZlbnRpb25z
IGFzCkBAIC0xMjYsNyArMTI2LDcgQEAgcHVibGljOgogICAgIEZ1bmN0aW9uUHRyKHJldHVyblR5
cGUgKENERUNMICp2YWx1ZSkoKSkKICAgICAgICAgOiBtX3ZhbHVlKCh2b2lkKil2YWx1ZSkKICAg
ICB7Ci0gICAgICAgIE1hc21TY3JhbWJsZWRQdHI6OmFzc2VydElzTm90U2NyYW1ibGVkKG1fdmFs
dWUpOworICAgICAgICBQb2lzb25lZE1hc21QdHI6OmFzc2VydElzTm90UG9pc29uZWQobV92YWx1
ZSk7CiAgICAgICAgIEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7CiAgICAgfQog
CkBAIC0xMzQsNyArMTM0LDcgQEAgcHVibGljOgogICAgIEZ1bmN0aW9uUHRyKHJldHVyblR5cGUg
KENERUNMICp2YWx1ZSkoYXJnVHlwZTEpKQogICAgICAgICA6IG1fdmFsdWUoKHZvaWQqKXZhbHVl
KQogICAgIHsKLSAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6YXNzZXJ0SXNOb3RTY3JhbWJsZWQo
bV92YWx1ZSk7CisgICAgICAgIFBvaXNvbmVkTWFzbVB0cjo6YXNzZXJ0SXNOb3RQb2lzb25lZCht
X3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVlKTsKICAg
ICB9CiAKQEAgLTE0Miw3ICsxNDIsNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rpb25QdHIocmV0dXJu
VHlwZSAoQ0RFQ0wgKnZhbHVlKShhcmdUeXBlMSwgYXJnVHlwZTIpKQogICAgICAgICA6IG1fdmFs
dWUoKHZvaWQqKXZhbHVlKQogICAgIHsKLSAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6YXNzZXJ0
SXNOb3RTY3JhbWJsZWQobV92YWx1ZSk7CisgICAgICAgIFBvaXNvbmVkTWFzbVB0cjo6YXNzZXJ0
SXNOb3RQb2lzb25lZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRF
UihtX3ZhbHVlKTsKICAgICB9CiAKQEAgLTE1MCw3ICsxNTAsNyBAQCBwdWJsaWM6CiAgICAgRnVu
Y3Rpb25QdHIocmV0dXJuVHlwZSAoQ0RFQ0wgKnZhbHVlKShhcmdUeXBlMSwgYXJnVHlwZTIsIGFy
Z1R5cGUzKSkKICAgICAgICAgOiBtX3ZhbHVlKCh2b2lkKil2YWx1ZSkKICAgICB7Ci0gICAgICAg
IE1hc21TY3JhbWJsZWRQdHI6OmFzc2VydElzTm90U2NyYW1ibGVkKG1fdmFsdWUpOworICAgICAg
ICBQb2lzb25lZE1hc21QdHI6OmFzc2VydElzTm90UG9pc29uZWQobV92YWx1ZSk7CiAgICAgICAg
IEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7CiAgICAgfQogCkBAIC0xNTgsNyAr
MTU4LDcgQEAgcHVibGljOgogICAgIEZ1bmN0aW9uUHRyKHJldHVyblR5cGUgKENERUNMICp2YWx1
ZSkoYXJnVHlwZTEsIGFyZ1R5cGUyLCBhcmdUeXBlMywgYXJnVHlwZTQpKQogICAgICAgICA6IG1f
dmFsdWUoKHZvaWQqKXZhbHVlKQogICAgIHsKLSAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6YXNz
ZXJ0SXNOb3RTY3JhbWJsZWQobV92YWx1ZSk7CisgICAgICAgIFBvaXNvbmVkTWFzbVB0cjo6YXNz
ZXJ0SXNOb3RQb2lzb25lZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9J
TlRFUihtX3ZhbHVlKTsKICAgICB9CiAjZW5kaWYKQEAgLTE2OSw3ICsxNjksNyBAQCBwdWJsaWM6
CiAgICAgRnVuY3Rpb25QdHIocmV0dXJuVHlwZSAoRkFTVENBTEwgKnZhbHVlKSgpKQogICAgICAg
ICA6IG1fdmFsdWUoKHZvaWQqKXZhbHVlKQogICAgIHsKLSAgICAgICAgTWFzbVNjcmFtYmxlZFB0
cjo6YXNzZXJ0SXNOb3RTY3JhbWJsZWQobV92YWx1ZSk7CisgICAgICAgIFBvaXNvbmVkTWFzbVB0
cjo6YXNzZXJ0SXNOb3RQb2lzb25lZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NP
REVfUE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CiAKQEAgLTE3Nyw3ICsxNzcsNyBAQCBwdWJsaWM6
CiAgICAgRnVuY3Rpb25QdHIocmV0dXJuVHlwZSAoRkFTVENBTEwgKnZhbHVlKShhcmdUeXBlMSkp
CiAgICAgICAgIDogbV92YWx1ZSgodm9pZCopdmFsdWUpCiAgICAgewotICAgICAgICBNYXNtU2Ny
YW1ibGVkUHRyOjphc3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsKKyAgICAgICAgUG9pc29u
ZWRNYXNtUHRyOjphc3NlcnRJc05vdFBvaXNvbmVkKG1fdmFsdWUpOwogICAgICAgICBBU1NFUlRf
VkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwogICAgIH0KIApAQCAtMTg1LDcgKzE4NSw3IEBA
IHB1YmxpYzoKICAgICBGdW5jdGlvblB0cihyZXR1cm5UeXBlIChGQVNUQ0FMTCAqdmFsdWUpKGFy
Z1R5cGUxLCBhcmdUeXBlMikpCiAgICAgICAgIDogbV92YWx1ZSgodm9pZCopdmFsdWUpCiAgICAg
ewotICAgICAgICBNYXNtU2NyYW1ibGVkUHRyOjphc3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVl
KTsKKyAgICAgICAgUG9pc29uZWRNYXNtUHRyOjphc3NlcnRJc05vdFBvaXNvbmVkKG1fdmFsdWUp
OwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwogICAgIH0KIApA
QCAtMTkzLDcgKzE5Myw3IEBAIHB1YmxpYzoKICAgICBGdW5jdGlvblB0cihyZXR1cm5UeXBlIChG
QVNUQ0FMTCAqdmFsdWUpKGFyZ1R5cGUxLCBhcmdUeXBlMiwgYXJnVHlwZTMpKQogICAgICAgICA6
IG1fdmFsdWUoKHZvaWQqKXZhbHVlKQogICAgIHsKLSAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6
YXNzZXJ0SXNOb3RTY3JhbWJsZWQobV92YWx1ZSk7CisgICAgICAgIFBvaXNvbmVkTWFzbVB0cjo6
YXNzZXJ0SXNOb3RQb2lzb25lZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVf
UE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CiAKQEAgLTIwMSw3ICsyMDEsNyBAQCBwdWJsaWM6CiAg
ICAgRnVuY3Rpb25QdHIocmV0dXJuVHlwZSAoRkFTVENBTEwgKnZhbHVlKShhcmdUeXBlMSwgYXJn
VHlwZTIsIGFyZ1R5cGUzLCBhcmdUeXBlNCkpCiAgICAgICAgIDogbV92YWx1ZSgodm9pZCopdmFs
dWUpCiAgICAgewotICAgICAgICBNYXNtU2NyYW1ibGVkUHRyOjphc3NlcnRJc05vdFNjcmFtYmxl
ZChtX3ZhbHVlKTsKKyAgICAgICAgUG9pc29uZWRNYXNtUHRyOjphc3NlcnRJc05vdFBvaXNvbmVk
KG1fdmFsdWUpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwog
ICAgIH0KICNlbmRpZgpAQCAtMjEzLDcgKzIxMyw3IEBAIHB1YmxpYzoKICAgICAgICAgLy8gKEkg
Z3Vlc3Mgb24gUlZUQyBmdW5jdGlvbiBwb2ludGVycyBoYXZlIGEgZGlmZmVyZW50IGNvbnN0bmVz
cyB0byBHQ0MvTVNWQz8pCiAgICAgICAgIDogbV92YWx1ZSgodm9pZCopdmFsdWUpCiAgICAgewot
ICAgICAgICBNYXNtU2NyYW1ibGVkUHRyOjphc3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsK
KyAgICAgICAgUG9pc29uZWRNYXNtUHRyOjphc3NlcnRJc05vdFBvaXNvbmVkKG1fdmFsdWUpOwog
ICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwogICAgIH0KIApAQCAt
MjIxLDEyICsyMjEsMTIgQEAgcHVibGljOgogCiAgICAgdm9pZCogdmFsdWUoKSBjb25zdAogICAg
IHsKLSAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6YXNzZXJ0SXNOb3RTY3JhbWJsZWQobV92YWx1
ZSk7CisgICAgICAgIFBvaXNvbmVkTWFzbVB0cjo6YXNzZXJ0SXNOb3RQb2lzb25lZChtX3ZhbHVl
KTsKICAgICAgICAgcmV0dXJuIG1fdmFsdWU7CiAgICAgfQogICAgIHZvaWQqIGV4ZWN1dGFibGVB
ZGRyZXNzKCkgY29uc3QKICAgICB7Ci0gICAgICAgIE1hc21TY3JhbWJsZWRQdHI6OmFzc2VydElz
Tm90U2NyYW1ibGVkKG1fdmFsdWUpOworICAgICAgICBQb2lzb25lZE1hc21QdHI6OmFzc2VydElz
Tm90UG9pc29uZWQobV92YWx1ZSk7CiAgICAgICAgIHJldHVybiBtX3ZhbHVlOwogICAgIH0KIApA
QCAtMjQ3LDIwICsyNDcsMjAgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFJldHVybkFkZHJlc3NQ
dHIodm9pZCogdmFsdWUpCiAgICAgICAgIDogbV92YWx1ZSh2YWx1ZSkKICAgICB7Ci0gICAgICAg
IE1hc21TY3JhbWJsZWRQdHI6OmFzc2VydElzTm90U2NyYW1ibGVkKG1fdmFsdWUpOworICAgICAg
ICBQb2lzb25lZE1hc21QdHI6OmFzc2VydElzTm90UG9pc29uZWQobV92YWx1ZSk7CiAgICAgICAg
IEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7CiAgICAgfQogCiAgICAgZXhwbGlj
aXQgUmV0dXJuQWRkcmVzc1B0cihGdW5jdGlvblB0ciBmdW5jdGlvbikKICAgICAgICAgOiBtX3Zh
bHVlKGZ1bmN0aW9uLnZhbHVlKCkpCiAgICAgewotICAgICAgICBNYXNtU2NyYW1ibGVkUHRyOjph
c3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsKKyAgICAgICAgUG9pc29uZWRNYXNtUHRyOjph
c3NlcnRJc05vdFBvaXNvbmVkKG1fdmFsdWUpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9Q
T0lOVEVSKG1fdmFsdWUpOwogICAgIH0KIAogICAgIHZvaWQqIHZhbHVlKCkgY29uc3QKICAgICB7
Ci0gICAgICAgIE1hc21TY3JhbWJsZWRQdHI6OmFzc2VydElzTm90U2NyYW1ibGVkKG1fdmFsdWUp
OworICAgICAgICBQb2lzb25lZE1hc21QdHI6OmFzc2VydElzTm90UG9pc29uZWQobV92YWx1ZSk7
CiAgICAgICAgIHJldHVybiBtX3ZhbHVlOwogICAgIH0KICAgICAKQEAgLTI4OCw3ICsyODgsNyBA
QCBwdWJsaWM6CiAgICAgICAgIDogbV92YWx1ZSh2YWx1ZSkKICNlbmRpZgogICAgIHsKLSAgICAg
ICAgbV92YWx1ZS5hc3NlcnRJc1NjcmFtYmxlZCgpOworICAgICAgICBtX3ZhbHVlLmFzc2VydElz
UG9pc29uZWQoKTsKICAgICAgICAgQVNTRVJUKHZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElE
X0NPREVfUE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CkBAIC0yOTgsOCArMjk4LDggQEAgcHVibGlj
OgogICAgICAgICBBU1NFUlQodmFsdWUpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lO
VEVSKHZhbHVlKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHJlc3VsdDsKLSAgICAg
ICAgcmVzdWx0Lm1fdmFsdWUgPSBNYXNtU2NyYW1ibGVkUHRyKHZhbHVlKTsKLSAgICAgICAgcmVz
dWx0Lm1fdmFsdWUuYXNzZXJ0SXNTY3JhbWJsZWQoKTsKKyAgICAgICAgcmVzdWx0Lm1fdmFsdWUg
PSBQb2lzb25lZE1hc21QdHIodmFsdWUpOworICAgICAgICByZXN1bHQubV92YWx1ZS5hc3NlcnRJ
c1BvaXNvbmVkKCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCkBAIC0zMDksNDIg
KzMwOSw0MiBAQCBwdWJsaWM6CiAgICAgICAgIDogbV92YWx1ZShyYS52YWx1ZSgpKQogICAgIHsK
ICAgICAgICAgQVNTRVJUKHJhLnZhbHVlKCkpOwotICAgICAgICBtX3ZhbHVlLmFzc2VydElzU2Ny
YW1ibGVkKCk7CisgICAgICAgIG1fdmFsdWUuYXNzZXJ0SXNQb2lzb25lZCgpOwogICAgICAgICBB
U1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwogICAgIH0KIAotICAgIE1hc21TY3Jh
bWJsZWRQdHIgc2NyYW1ibGVkUHRyKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQorICAgIFBv
aXNvbmVkTWFzbVB0ciBwb2lzb25lZFB0cigpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQgPSB2b2lkKj4KICAgICBUIGV4ZWN1dGFibGVBZGRyZXNz
KCkgY29uc3QKICAgICB7Ci0gICAgICAgIG1fdmFsdWUuYXNzZXJ0SXNTY3JhbWJsZWQoKTsKLSAg
ICAgICAgcmV0dXJuIG1fdmFsdWUgPyBtX3ZhbHVlLmRlc2NyYW1ibGVkPFQ+KCkgOiBzdGF0aWNf
Y2FzdDxUPigwKTsKKyAgICAgICAgbV92YWx1ZS5hc3NlcnRJc1BvaXNvbmVkKCk7CisgICAgICAg
IHJldHVybiBtX3ZhbHVlLnVucG9pc29uZWQ8VD4oKTsKICAgICB9CiAjaWYgQ1BVKEFSTV9USFVN
QjIpCiAgICAgLy8gVG8gdXNlIHRoaXMgcG9pbnRlciBhcyBhIGRhdGEgYWRkcmVzcyByZW1vdmUg
dGhlIGRlY29yYXRpb24uCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCA9IHZvaWQqPgogICAgIFQg
ZGF0YUxvY2F0aW9uKCkgY29uc3QKICAgICB7Ci0gICAgICAgIG1fdmFsdWUuYXNzZXJ0SXNTY3Jh
bWJsZWQoKTsKKyAgICAgICAgbV92YWx1ZS5hc3NlcnRJc1BvaXNvbmVkKCk7CiAgICAgICAgIEFT
U0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7Ci0gICAgICAgIHJldHVybiBiaXR3aXNl
X2Nhc3Q8VD4obV92YWx1ZSA/IG1fdmFsdWUuZGVzY3JhbWJsZWQ8Y2hhcio+KCkgLSAxIDogbnVs
bHB0cik7CisgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8VD4obV92YWx1ZSA/IG1fdmFsdWUu
dW5wb2lzb25lZDxjaGFyKj4oKSAtIDEgOiBudWxscHRyKTsKICAgICB9CiAjZWxzZQogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQgPSB2b2lkKj4KICAgICBUIGRhdGFMb2NhdGlvbigpIGNvbnN0CiAg
ICAgewotICAgICAgICBtX3ZhbHVlLmFzc2VydElzU2NyYW1ibGVkKCk7CisgICAgICAgIG1fdmFs
dWUuYXNzZXJ0SXNQb2lzb25lZCgpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVS
KG1fdmFsdWUpOwotICAgICAgICByZXR1cm4gbV92YWx1ZSA/IG1fdmFsdWUuZGVzY3JhbWJsZWQ8
VD4oKSA6IHN0YXRpY19jYXN0PFQ+KDApOworICAgICAgICByZXR1cm4gbV92YWx1ZS51bnBvaXNv
bmVkPFQ+KCk7CiAgICAgfQogI2VuZGlmCiAKICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0CiAg
ICAgewotI2lmIEVOQUJMRShTQ1JBTUJMRURfUFRSX0FTU0VSVFMpCisjaWYgRU5BQkxFKFBPSVNP
Tl9BU1NFUlRTKQogICAgICAgICBpZiAoIWlzRW1wdHlWYWx1ZSgpICYmICFpc0RlbGV0ZWRWYWx1
ZSgpKQotICAgICAgICAgICAgbV92YWx1ZS5hc3NlcnRJc1NjcmFtYmxlZCgpOworICAgICAgICAg
ICAgbV92YWx1ZS5hc3NlcnRJc1BvaXNvbmVkKCk7CiAjZW5kaWYKICAgICAgICAgcmV0dXJuICFt
X3ZhbHVlOwogICAgIH0KQEAgLTM1MiwxNyArMzUyLDE3IEBAIHB1YmxpYzoKICAgICAKICAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBvdGhlcikgY29uc3QK
ICAgICB7Ci0jaWYgRU5BQkxFKFNDUkFNQkxFRF9QVFJfQVNTRVJUUykKKyNpZiBFTkFCTEUoUE9J
U09OX0FTU0VSVFMpCiAgICAgICAgIGlmICghaXNFbXB0eVZhbHVlKCkgJiYgIWlzRGVsZXRlZFZh
bHVlKCkpCi0gICAgICAgICAgICBtX3ZhbHVlLmFzc2VydElzU2NyYW1ibGVkKCk7CisgICAgICAg
ICAgICBtX3ZhbHVlLmFzc2VydElzUG9pc29uZWQoKTsKICAgICAgICAgaWYgKCFvdGhlci5pc0Vt
cHR5VmFsdWUoKSAmJiAhb3RoZXIuaXNEZWxldGVkVmFsdWUoKSkKLSAgICAgICAgICAgIG90aGVy
Lm1fdmFsdWUuYXNzZXJ0SXNTY3JhbWJsZWQoKTsKKyAgICAgICAgICAgIG90aGVyLm1fdmFsdWUu
YXNzZXJ0SXNQb2lzb25lZCgpOwogI2VuZGlmCiAgICAgICAgIHJldHVybiBtX3ZhbHVlID09IG90
aGVyLm1fdmFsdWU7CiAgICAgfQogCiAgICAgLy8gRGlzYWxsb3cgYW55IGNhc3Rpbmcgb3BlcmF0
aW9ucyAoZXhjZXB0IGZvciBib29sZWFucykuIEluc3RlYWQsIHRoZSBjbGllbnQKLSAgICAvLyBz
aG91bGQgYmUgYXNraW5nIGZvciBzY3JhbWJsZWRQdHIoKSBvciBleGVjdXRhYmxlQWRkcmVzcygp
IGV4cGxpY2l0bHkuCisgICAgLy8gc2hvdWxkIGJlIGFza2luZyBmb3IgcG9pc29uZWRQdHIoKSBv
ciBleGVjdXRhYmxlQWRkcmVzcygpIGV4cGxpY2l0bHkuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6OmlzX3NhbWU8VCwgYm9vbD46OnZh
bHVlPj4KICAgICBvcGVyYXRvciBUKCkgPSBkZWxldGU7CiAKQEAgLTM4OSwxMCArMzg5LDEwIEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCk7CiAKIHByaXZhdGU6Ci0gICAg
c3RhdGljIE1hc21TY3JhbWJsZWRQdHIgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIE1hc21TY3JhbWJs
ZWRQdHIoMSk7IH0KLSAgICBzdGF0aWMgTWFzbVNjcmFtYmxlZFB0ciBkZWxldGVkVmFsdWUoKSB7
IHJldHVybiBNYXNtU2NyYW1ibGVkUHRyKDIpOyB9CisgICAgc3RhdGljIFBvaXNvbmVkTWFzbVB0
ciBlbXB0eVZhbHVlKCkgeyByZXR1cm4gUG9pc29uZWRNYXNtUHRyKDEpOyB9CisgICAgc3RhdGlj
IFBvaXNvbmVkTWFzbVB0ciBkZWxldGVkVmFsdWUoKSB7IHJldHVybiBQb2lzb25lZE1hc21QdHIo
Mik7IH0KIAotICAgIE1hc21TY3JhbWJsZWRQdHIgbV92YWx1ZTsKKyAgICBQb2lzb25lZE1hc21Q
dHIgbV92YWx1ZTsKIH07CiAKIHN0cnVjdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHJIYXNoIHsKQEAg
LTQ3OSw3ICs0NzksNyBAQCBwcml2YXRlOgogaW5saW5lIEZ1bmN0aW9uUHRyOjpGdW5jdGlvblB0
cihNYWNyb0Fzc2VtYmxlckNvZGVQdHIgcHRyKQogICAgIDogbV92YWx1ZShwdHIuZXhlY3V0YWJs
ZUFkZHJlc3MoKSkKIHsKLSAgICBNYXNtU2NyYW1ibGVkUHRyOjphc3NlcnRJc05vdFNjcmFtYmxl
ZChtX3ZhbHVlKTsKKyAgICBQb2lzb25lZE1hc21QdHI6OmFzc2VydElzTm90UG9pc29uZWQobV92
YWx1ZSk7CiAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVlKTsKIH0KIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3MuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zLmNwcAkocmV2aXNpb24g
MjI1NjEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3MuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01MDUsMTIgKzUwNSwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICBHUFJSZWcgaW5kZXggPSBwYXJh
bXNbMF0uZ3ByKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaCA9IHBh
cmFtcy5ncFNjcmF0Y2goMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBHUFJSZWcgZGVzY3Jh
bWJsZXJLZXkgPSBwYXJhbXMuZ3BTY3JhdGNoKDEpOworICAgICAgICAgICAgICAgICAgICAgICAg
R1BSUmVnIHBvaXNvblNjcmF0Y2ggPSBwYXJhbXMuZ3BTY3JhdGNoKDEpOwogCi0gICAgICAgICAg
ICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NChnX21hc21T
Y3JhbWJsZWRQdHJLZXkpLCBkZXNjcmFtYmxlcktleSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NChnX21hc21Qb2lzb24pLCBwb2lz
b25TY3JhdGNoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cihqdW1wVGFibGUpLCBzY3JhdGNoKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIGppdC5sb2FkNjQoQ0NhbGxIZWxwZXJzOjpCYXNlSW5kZXgoc2NyYXRjaCwgaW5kZXgs
IENDYWxsSGVscGVyczo6dGltZXNQdHIoKSksIHNjcmF0Y2gpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgaml0LnhvcjY0KGRlc2NyYW1ibGVyS2V5LCBzY3JhdGNoKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGppdC54b3I2NChwb2lzb25TY3JhdGNoLCBzY3JhdGNoKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIGppdC5qdW1wKHNjcmF0Y2gpOwogCiAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBUaGVzZSBsYWJlbHMgYXJlIGd1YXJhbnRlZWQgdG8gYmUgcG9wdWxhdGVkIGJlZm9yZSBl
aXRoZXIgbGF0ZSBwYXRocyBvcgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3Ri
My5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAJ
KHJldmlzaW9uIDIyNTYxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzAzMCwxMiArMTMwMzAsMTIgQEAgdm9pZCB0ZXN0SW50ZXJw
cmV0ZXIoKQogICAgICAgICAgICAgICAgIHBhcmFtcy5wcm9jKCkuYWRkRGF0YVNlY3Rpb24oc2l6
ZW9mKE1hY3JvQXNzZW1ibGVyQ29kZVB0cikgKiBsYWJlbHMuc2l6ZSgpKSk7CiAKICAgICAgICAg
ICAgIEdQUlJlZyBzY3JhdGNoID0gcGFyYW1zLmdwU2NyYXRjaCgwKTsKLSAgICAgICAgICAgIEdQ
UlJlZyBkZXNjcmFtYmxlcktleSA9IHBhcmFtcy5ncFNjcmF0Y2goMSk7CisgICAgICAgICAgICBH
UFJSZWcgcG9pc29uU2NyYXRjaCA9IHBhcmFtcy5ncFNjcmF0Y2goMSk7CiAKICAgICAgICAgICAg
IGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihqdW1wVGFibGUpLCBzY3JhdGNo
KTsKLSAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KGdfbWFz
bVNjcmFtYmxlZFB0cktleSksIGRlc2NyYW1ibGVyS2V5KTsKKyAgICAgICAgICAgIGppdC5tb3Zl
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KGdfbWFzbVBvaXNvbiksIHBvaXNvblNjcmF0Y2gp
OwogICAgICAgICAgICAgaml0LmxvYWQ2NChDQ2FsbEhlbHBlcnM6OkJhc2VJbmRleChzY3JhdGNo
LCBwYXJhbXNbMF0uZ3ByKCksIENDYWxsSGVscGVyczo6dGltZXNQdHIoKSksIHNjcmF0Y2gpOwot
ICAgICAgICAgICAgaml0LnhvcjY0KGRlc2NyYW1ibGVyS2V5LCBzY3JhdGNoKTsKKyAgICAgICAg
ICAgIGppdC54b3I2NChwb2lzb25TY3JhdGNoLCBzY3JhdGNoKTsKICAgICAgICAgICAgIGppdC5q
dW1wKHNjcmF0Y2gpOwogCiAgICAgICAgICAgICBqaXQuYWRkTGlua1Rhc2soCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNp
b24gMjI1NjEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2OCw3ICs4NjgsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjaGVja0FycmF5KE5vZGUqIG5vCiAgICAgICAgIG1faml0LmJyYW5jaFB0cigKICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIFN0cnVjdHVyZTo6Y2xhc3NJbmZvT2Zmc2V0KCkpLAot
ICAgICAgICAgICAgVHJ1c3RlZEltbVB0cihDbGFzc0luZm9TY3JhbWJsZWRQdHIoZXhwZWN0ZWRD
bGFzc0luZm8pLmJpdHMoKSkpKTsKKyAgICAgICAgICAgIFRydXN0ZWRJbW1QdHIoUG9pc29uZWRD
bGFzc0luZm9QdHIoZXhwZWN0ZWRDbGFzc0luZm8pLmJpdHMoKSkpKTsKIAogICAgIG5vUmVzdWx0
KG1fY3VycmVudE5vZGUpOwogfQpAQCAtODcwNiw3ICs4NzA2LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUNoZWNrU3ViQ2xhcwogICAgICAgICBtX2ppdC5lbWl0TG9hZFN0cnVjdHVy
ZSgqbV9qaXQudm0oKSwgYmFzZUdQUiwgb3RoZXJHUFIsIHNwZWNpZmllZEdQUik7CiAgICAgICAg
IG1faml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG90aGVyR1BSLCBTdHJ1Y3R1cmU6
OmNsYXNzSW5mb09mZnNldCgpKSwgb3RoZXJHUFIpOwogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAg
ICAgIG1faml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQoZ19jbGFzc0luZm9TY3Jh
bWJsZWRQdHJLZXkpLCBzcGVjaWZpZWRHUFIpOworICAgICAgICBtX2ppdC5tb3ZlKENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbTY0KGdfY2xhc3NJbmZvUG9pc29uKSwgc3BlY2lmaWVkR1BSKTsKICAg
ICAgICAgbV9qaXQueG9yNjQoc3BlY2lmaWVkR1BSLCBvdGhlckdQUik7CiAjZW5kaWYKICAgICAg
ICAgbV9qaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobm9kZS0+Y2xhc3NJbmZv
KCkpLCBzcGVjaWZpZWRHUFIpOwpAQCAtOTAwMyw3ICs5MDAzLDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZU5ld1N0cmluZ09iagogICAgICAgICBzbG93UGF0aCk7CiAgICAgCiAgICAg
bV9qaXQuc3RvcmVQdHIoCi0gICAgICAgIFRydXN0ZWRJbW1QdHIoQ2xhc3NJbmZvU2NyYW1ibGVk
UHRyKFN0cmluZ09iamVjdDo6aW5mbygpKS5iaXRzKCkpLAorICAgICAgICBUcnVzdGVkSW1tUHRy
KFBvaXNvbmVkQ2xhc3NJbmZvUHRyKFN0cmluZ09iamVjdDo6aW5mbygpKS5iaXRzKCkpLAogICAg
ICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0
OjpjbGFzc0luZm9PZmZzZXQoKSkpOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgbV9qaXQuc3Rv
cmU2NCgKQEAgLTk3NzQsNyArOTc3NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0
ZShOb2RlKiwgRWQKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaEludEp1bXAo
Ci0gICAgU3dpdGNoRGF0YSogZGF0YSwgR1BSUmVnIHZhbHVlLCBHUFJSZWcgc2NyYXRjaCwgR1BS
UmVnIGRlc2NyYW1ibGVyS2V5U2NyYXRjaCkKKyAgICBTd2l0Y2hEYXRhKiBkYXRhLCBHUFJSZWcg
dmFsdWUsIEdQUlJlZyBzY3JhdGNoLCBHUFJSZWcgcG9pc29uU2NyYXRjaCkKIHsKICAgICBTaW1w
bGVKdW1wVGFibGUmIHRhYmxlID0gbV9qaXQuY29kZUJsb2NrKCktPnN3aXRjaEp1bXBUYWJsZShk
YXRhLT5zd2l0Y2hUYWJsZUluZGV4KTsKICAgICB0YWJsZS5lbnN1cmVDVElUYWJsZSgpOwpAQCAt
OTc4MiwxNSArOTc4MiwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoSW50SnVt
cCgKICAgICBhZGRCcmFuY2goCiAgICAgICAgIG1faml0LmJyYW5jaDMyKEpJVENvbXBpbGVyOjpB
Ym92ZU9yRXF1YWwsIHZhbHVlLCBJbW0zMih0YWJsZS5jdGlPZmZzZXRzLnNpemUoKSkpLAogICAg
ICAgICBkYXRhLT5mYWxsVGhyb3VnaC5ibG9jayk7Ci0gICAgVU5VU0VEX1BBUkFNKGRlc2NyYW1i
bGVyS2V5U2NyYXRjaCk7IC8vIFBsYWNhdGUgdGhlIDMyLWJpdCBidWlsZC4KKyAgICBVTlVTRURf
UEFSQU0ocG9pc29uU2NyYXRjaCk7IC8vIFBsYWNhdGUgdGhlIDMyLWJpdCBidWlsZC4KICNpZiBV
U0UoSlNWQUxVRTY0KQotICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTY0KGdfbWFzbVNjcmFtYmxl
ZFB0cktleSksIGRlc2NyYW1ibGVyS2V5U2NyYXRjaCk7CisgICAgbV9qaXQubW92ZShUcnVzdGVk
SW1tNjQoZ19tYXNtUG9pc29uKSwgcG9pc29uU2NyYXRjaCk7CiAjZW5kaWYKICAgICBtX2ppdC5t
b3ZlKFRydXN0ZWRJbW1QdHIodGFibGUuY3RpT2Zmc2V0cy5iZWdpbigpKSwgc2NyYXRjaCk7CiAg
ICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QmFzZUluZGV4KHNjcmF0Y2gsIHZhbHVlLCBK
SVRDb21waWxlcjo6dGltZXNQdHIoKSksIHNjcmF0Y2gpOwogICAgIAogI2lmIFVTRShKU1ZBTFVF
NjQpCi0gICAgbV9qaXQueG9yNjQoZGVzY3JhbWJsZXJLZXlTY3JhdGNoLCBzY3JhdGNoKTsKKyAg
ICBtX2ppdC54b3I2NChwb2lzb25TY3JhdGNoLCBzY3JhdGNoKTsKICNlbmRpZgogICAgIG1faml0
Lmp1bXAoc2NyYXRjaCk7CiAgICAgZGF0YS0+ZGlkVXNlSnVtcFRhYmxlID0gdHJ1ZTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlz
aW9uIDIyNTYxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAxMCw3ICs1MDEwLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5pbnNlcnROZXdCbG9ja3NCZWZvcmUoc2xv
d0Nhc2UpOwogCiAgICAgICAgIExWYWx1ZSBmYXN0UmVzdWx0VmFsdWUgPSBhbGxvY2F0ZU9iamVj
dDxTdHJpbmdPYmplY3Q+KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd0Nhc2UpOwot
ICAgICAgICBtX291dC5zdG9yZVB0cihtX291dC5jb25zdEludFB0cihDbGFzc0luZm9TY3JhbWJs
ZWRQdHIoU3RyaW5nT2JqZWN0OjppbmZvKCkpLmJpdHMoKSksIGZhc3RSZXN1bHRWYWx1ZSwgbV9o
ZWFwcy5KU0Rlc3RydWN0aWJsZU9iamVjdF9jbGFzc0luZm8pOworICAgICAgICBtX291dC5zdG9y
ZVB0cihtX291dC5jb25zdEludFB0cihQb2lzb25lZENsYXNzSW5mb1B0cihTdHJpbmdPYmplY3Q6
OmluZm8oKSkuYml0cygpKSwgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0X2NsYXNzSW5mbyk7CiAgICAgICAgIG1fb3V0LnN0b3JlNjQoc3RyaW5nLCBmYXN0UmVz
dWx0VmFsdWUsIG1faGVhcHMuSlNXcmFwcGVyT2JqZWN0X2ludGVybmFsVmFsdWUpOwogICAgICAg
ICBtdXRhdG9yRmVuY2UoKTsKICAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1f
b3V0LmFuY2hvcihmYXN0UmVzdWx0VmFsdWUpOwpAQCAtMTExNzAsOCArMTExNzAsOCBAQCBwcml2
YXRlOgogICAgICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3Qmxv
Y2soKTsKIAogICAgICAgICAgICAgTFZhbHVlIHN0cnVjdHVyZSA9IGxvYWRTdHJ1Y3R1cmUoY2Vs
bCk7Ci0gICAgICAgICAgICBMVmFsdWUgc2NyYW1ibGVkQ2xhc3NJbmZvID0gbV9vdXQubG9hZFB0
cihzdHJ1Y3R1cmUsIG1faGVhcHMuU3RydWN0dXJlX2NsYXNzSW5mbyk7Ci0gICAgICAgICAgICBM
VmFsdWUgY2xhc3NJbmZvID0gbV9vdXQuYml0WG9yKHNjcmFtYmxlZENsYXNzSW5mbywgbV9vdXQu
Y29uc3RJbnQ2NChnX2NsYXNzSW5mb1NjcmFtYmxlZFB0cktleSkpOworICAgICAgICAgICAgTFZh
bHVlIHBvaXNvbmVkQ2xhc3NJbmZvID0gbV9vdXQubG9hZFB0cihzdHJ1Y3R1cmUsIG1faGVhcHMu
U3RydWN0dXJlX2NsYXNzSW5mbyk7CisgICAgICAgICAgICBMVmFsdWUgY2xhc3NJbmZvID0gbV9v
dXQuYml0WG9yKHBvaXNvbmVkQ2xhc3NJbmZvLCBtX291dC5jb25zdEludDY0KGdfY2xhc3NJbmZv
UG9pc29uKSk7CiAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBvdGhlckF0U3RhcnQgPSBtX291
dC5hbmNob3IoY2xhc3NJbmZvKTsKICAgICAgICAgICAgIG1fb3V0Lmp1bXAobG9vcCk7CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkocmV2aXNp
b24gMjI1NjEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMu
aAkod29ya2luZyBjb3B5KQpAQCAtMTYyNSw3ICsxNjI1LDcgQEAgcHVibGljOgogICAgIHZvaWQg
ZW1pdEFsbG9jYXRlRGVzdHJ1Y3RpYmxlT2JqZWN0KFZNJiB2bSwgR1BSUmVnIHJlc3VsdEdQUiwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEdQUlJlZyBzY3JhdGNoR1BSMSwgR1BSUmVnIHNjcmF0Y2hH
UFIyLCBKdW1wTGlzdCYgc2xvd1BhdGgpCiAgICAgewogICAgICAgICBlbWl0QWxsb2NhdGVKU09i
amVjdDxDbGFzc1R5cGU+KHZtLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwg
VHJ1c3RlZEltbVB0cigwKSwgc2NyYXRjaEdQUjEsIHNjcmF0Y2hHUFIyLCBzbG93UGF0aCk7Ci0g
ICAgICAgIHN0b3JlUHRyKFRydXN0ZWRJbW1QdHIoQ2xhc3NJbmZvU2NyYW1ibGVkUHRyKHN0cnVj
dHVyZS0+Y2xhc3NJbmZvKCkpLmJpdHMoKSksIEFkZHJlc3MocmVzdWx0R1BSLCBKU0Rlc3RydWN0
aWJsZU9iamVjdDo6Y2xhc3NJbmZvT2Zmc2V0KCkpKTsKKyAgICAgICAgc3RvcmVQdHIoVHJ1c3Rl
ZEltbVB0cihQb2lzb25lZENsYXNzSW5mb1B0cihzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpKS5iaXRz
KCkpLCBBZGRyZXNzKHJlc3VsdEdQUiwgSlNEZXN0cnVjdGlibGVPYmplY3Q6OmNsYXNzSW5mb09m
ZnNldCgpKSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgZW1pdEluaXRpYWxpemVJbmxpbmVTdG9y
YWdlKEdQUlJlZyBiYXNlR1BSLCB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6ZWRUaHVua0pJVC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6ZWRUaHVua0pJVC5oCShyZXZpc2lv
biAyMjU2MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtK
SVQuaAkod29ya2luZyBjb3B5KQpAQCAtNzcsNyArNzcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgewogICAgICAgICAgICAgbG9hZENlbGxBcmd1bWVudChhcmd1bWVudCwgZHN0KTsKICAg
ICAgICAgICAgIGVtaXRMb2FkU3RydWN0dXJlKCp2bSgpLCBkc3QsIHNjcmF0Y2gsIGRzdCk7Ci0g
ICAgICAgICAgICBhcHBlbmRGYWlsdXJlKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhzY3Jh
dGNoLCBTdHJ1Y3R1cmU6OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihDbGFzc0lu
Zm9TY3JhbWJsZWRQdHIoY2xhc3NJbmZvKS5iaXRzKCkpKSk7CisgICAgICAgICAgICBhcHBlbmRG
YWlsdXJlKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhzY3JhdGNoLCBTdHJ1Y3R1cmU6OmNs
YXNzSW5mb09mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihQb2lzb25lZENsYXNzSW5mb1B0cihjbGFz
c0luZm8pLmJpdHMoKSkpKTsKICAgICAgICAgICAgIC8vIFdlIGhhdmUgdG8gcmVsb2FkIHRoZSBh
cmd1bWVudCBzaW5jZSBlbWl0TG9hZFN0cnVjdHVyZSBjbG9iYmVyZWQgaXQuCiAgICAgICAgICAg
ICBsb2FkQ2VsbEFyZ3VtZW50KGFyZ3VtZW50LCBkc3QpOwogICAgICAgICB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCShyZXZpc2lvbiAy
MjU2MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIxNCw3ICsyMTQsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYg
dmlydHVhbFRodW5rRm9yKFZNCiAgICAgLy8gTm93IHdlIGtub3cgdGhhdCB3ZSBoYXZlIGEgQ29k
ZUJsb2NrLCBhbmQgd2UncmUgY29tbWl0dGVkIHRvIG1ha2luZyBhIGZhc3QKICAgICAvLyBjYWxs
LgogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tNjQoZ19tYXNtU2NyYW1ibGVkUHRyS2V5KSwgR1BSSW5mbzo6cmVnVDEpOworICAgIGppdC5t
b3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KGdfbWFzbVBvaXNvbiksIEdQUkluZm86OnJl
Z1QxKTsKICAgICBqaXQueG9yNjQoR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1Q0KTsKICNl
bmRpZgogCkBAIC0xMTYzLDcgKzExNjMsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgYm91bmRU
aGlzTm9BcmdzRnVuCiAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG5vQ29kZSA9IGppdC5icmFuY2hU
ZXN0UHRyKENDYWxsSGVscGVyczo6WmVybywgR1BSSW5mbzo6cmVnVDApOwogICAgIAogI2lmIFVT
RShKU1ZBTFVFNjQpCi0gICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQoZ19t
YXNtU2NyYW1ibGVkUHRyS2V5KSwgR1BSSW5mbzo6cmVnVDEpOworICAgIGppdC5tb3ZlKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTY0KGdfbWFzbVBvaXNvbiksIEdQUkluZm86OnJlZ1QxKTsKICAg
ICBqaXQueG9yNjQoR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1QwKTsKICNlbmRpZgogICAg
IGVtaXRQb2ludGVyVmFsaWRhdGlvbihqaXQsIEdQUkluZm86OnJlZ1QwKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24g
MjI1NjEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTMwMyw3ICsxMzAzLDcgQEAgc3RhdGljIFNsb3dQYXRoUmV0
dXJuVHlwZSBoYW5kbGVIb3N0Q2FsbAogICAgICAgICAgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVl
KGFzT2JqZWN0KGNhbGxlZSkpOwogICAgICAgICAgICAgdm0uaG9zdENhbGxSZXR1cm5WYWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24oZXhlY0NhbGxlZSkpOwog
ICAgICAgICAgICAgCi0gICAgICAgICAgICBNYXNtU2NyYW1ibGVkUHRyOjphc3NlcnRJc05vdFNj
cmFtYmxlZChMTEludDo6Z2V0Q29kZVB0cihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSk7CisgICAg
ICAgICAgICBQb2lzb25lZE1hc21QdHI6OmFzc2VydElzTm90UG9pc29uZWQoTExJbnQ6OmdldENv
ZGVQdHIoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkpOwogICAgICAgICAgICAgTExJTlRfQ0FMTF9S
RVRVUk4oZXhlY0NhbGxlZSwgZXhlY0NhbGxlZSwgTExJbnQ6OmdldENvZGVQdHIoZ2V0SG9zdENh
bGxSZXR1cm5WYWx1ZSkpOwogICAgICAgICB9CiAgICAgICAgIApAQCAtMTMyNyw3ICsxMzI3LDcg
QEAgc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2FsbAogICAgICAgICBleGVj
Q2FsbGVlLT5zZXRDYWxsZWUoYXNPYmplY3QoY2FsbGVlKSk7CiAgICAgICAgIHZtLmhvc3RDYWxs
UmV0dXJuVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rp
b24oZXhlY0NhbGxlZSkpOwogCi0gICAgICAgIE1hc21TY3JhbWJsZWRQdHI6OmFzc2VydElzTm90
U2NyYW1ibGVkKExMSW50OjpnZXRDb2RlUHRyKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpKTsKKyAg
ICAgICAgUG9pc29uZWRNYXNtUHRyOjphc3NlcnRJc05vdFBvaXNvbmVkKExMSW50OjpnZXRDb2Rl
UHRyKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpKTsKICAgICAgICAgTExJTlRfQ0FMTF9SRVRVUk4o
ZXhlY0NhbGxlZSwgZXhlY0NhbGxlZSwgTExJbnQ6OmdldENvZGVQdHIoZ2V0SG9zdENhbGxSZXR1
cm5WYWx1ZSkpOwogICAgIH0KICAgICAKQEAgLTEzNjgsNyArMTM2OCw3IEBAIGlubGluZSBTbG93
UGF0aFJldHVyblR5cGUgc2V0VXBDYWxsKEV4ZWMKICAgICAgICAgICAgICAgICBjYWxsTGlua0lu
Zm8tPm1hY2hpbmVDb2RlVGFyZ2V0ID0gY29kZVB0cjsKICAgICAgICAgICAgIH0KIAotICAgICAg
ICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6YXNzZXJ0SXNOb3RTY3JhbWJsZWQoY29kZVB0ci5leGVj
dXRhYmxlQWRkcmVzcygpKTsKKyAgICAgICAgICAgIFBvaXNvbmVkTWFzbVB0cjo6YXNzZXJ0SXNO
b3RQb2lzb25lZChjb2RlUHRyLmV4ZWN1dGFibGVBZGRyZXNzKCkpOwogICAgICAgICAgICAgTExJ
TlRfQ0FMTF9SRVRVUk4oZXhlYywgZXhlY0NhbGxlZSwgY29kZVB0ci5leGVjdXRhYmxlQWRkcmVz
cygpKTsKICAgICAgICAgfQogICAgICAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKQEAgLTE0MTks
NyArMTQxOSw3IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgc2V0VXBDYWxsKEV4ZWMKICAg
ICAgICAgICAgIGNvZGVCbG9jay0+bGlua0luY29taW5nQ2FsbChleGVjLCBjYWxsTGlua0luZm8p
OwogICAgIH0KIAotICAgIE1hc21TY3JhbWJsZWRQdHI6OmFzc2VydElzTm90U2NyYW1ibGVkKGNv
ZGVQdHIuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisgICAgUG9pc29uZWRNYXNtUHRyOjphc3NlcnRJ
c05vdFBvaXNvbmVkKGNvZGVQdHIuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CiAgICAgTExJTlRfQ0FM
TF9SRVRVUk4oZXhlYywgZXhlY0NhbGxlZSwgY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpKTsK
IH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXI2NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXI2NC5hc20JKHJldmlzaW9uIDIyNTYxMykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBA
IC0xOTUwLDcgKzE5NTAsNyBAQCBtYWNybyBkb0NhbGwoc2xvd1BhdGgsIHByZXBhcmVDYWxsKQog
ICAgICAgICBwcmVwYXJlQ2FsbChMTEludENhbGxMaW5rSW5mbzo6bWFjaGluZUNvZGVUYXJnZXRb
dDFdLCB0MiwgdDMsIHQ0KQogICAgICAgICBjYWxsVGFyZ2V0RnVuY3Rpb24oTExJbnRDYWxsTGlu
a0luZm86Om1hY2hpbmVDb2RlVGFyZ2V0W3QxXSkKICAgICBlbHNlCi0gICAgICAgIGxvYWRwIF9n
X21hc21TY3JhbWJsZWRQdHJLZXksIHQyCisgICAgICAgIGxvYWRwIF9nX21hc21Qb2lzb24sIHQy
CiAgICAgICAgIHhvcnAgTExJbnRDYWxsTGlua0luZm86Om1hY2hpbmVDb2RlVGFyZ2V0W3QxXSwg
dDIKICAgICAgICAgcHJlcGFyZUNhbGwodDIsIHQxLCB0MywgdDQpCiAgICAgICAgIGNhbGxUYXJn
ZXRGdW5jdGlvbih0MikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRp
YWxpemVUaHJlYWRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCShyZXZpc2lvbiAyMjU2MTMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTksNyArNTksNyBAQCB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKQogCiAg
ICAgc3RkOjpjYWxsX29uY2UoaW5pdGlhbGl6ZVRocmVhZGluZ09uY2VGbGFnLCBbXXsKICAgICAg
ICAgV1RGOjppbml0aWFsaXplVGhyZWFkaW5nKCk7Ci0gICAgICAgIGluaXRpYWxpemVTY3JhbWJs
ZWRQdHJLZXlzKCk7CisgICAgICAgIGluaXRpYWxpemVQb2lzb24oKTsKICAgICAgICAgT3B0aW9u
czo6aW5pdGlhbGl6ZSgpOwogI2lmIEVOQUJMRShXUklURV9CQVJSSUVSX1BST0ZJTElORykKICAg
ICAgICAgV3JpdGVCYXJyaWVyQ291bnRlcnM6OmluaXRpYWxpemUoKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1BvaXNvbmVkUHRyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQb2lzb25lZFB0ci5jcHAJKHJldmlzaW9u
IDIyNTYxMykJKGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDU2NyYW1ibGVk
UHRyLmNwcDoyMjU2MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQb2lz
b25lZFB0ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJKU0NTY3JhbWJsZWRQdHIuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3VpbnRwdHJf
dCBnX2NsYXNzSW5mb1NjcmFtYmxlZFB0cktleTsKK3VpbnRwdHJfdCBnX21hc21TY3JhbWJsZWRQ
dHJLZXk7CisKK3ZvaWQgaW5pdGlhbGl6ZVNjcmFtYmxlZFB0cktleXMoKQoreworICAgIHN0YXRp
YyBzdGQ6Om9uY2VfZmxhZyBpbml0aWFsaXplT25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uo
aW5pdGlhbGl6ZU9uY2VGbGFnLCBbXSB7CisgICAgICAgIGdfY2xhc3NJbmZvU2NyYW1ibGVkUHRy
S2V5ID0gbWFrZVNjcmFtYmxlZFB0cktleSgpOworICAgICAgICBnX21hc21TY3JhbWJsZWRQdHJL
ZXkgPSBtYWtlU2NyYW1ibGVkUHRyS2V5KCk7CisgICAgfSk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQb2lzb25lZFB0
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDUG9p
c29uZWRQdHIuY3BwCShyZXZpc2lvbiAyMjU2MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NQb2lzb25lZFB0ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDE5ICsyNCwx
OSBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJKU0NTY3JhbWJsZWRQ
dHIuaCIKKyNpbmNsdWRlICJKU0NQb2lzb25lZFB0ci5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAot
dWludHB0cl90IGdfY2xhc3NJbmZvU2NyYW1ibGVkUHRyS2V5OwotdWludHB0cl90IGdfbWFzbVNj
cmFtYmxlZFB0cktleTsKK3VpbnRwdHJfdCBnX2NsYXNzSW5mb1BvaXNvbjsKK3VpbnRwdHJfdCBn
X21hc21Qb2lzb247CiAKLXZvaWQgaW5pdGlhbGl6ZVNjcmFtYmxlZFB0cktleXMoKQordm9pZCBp
bml0aWFsaXplUG9pc29uKCkKIHsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgaW5pdGlhbGl6
ZU9uY2VGbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNlKGluaXRpYWxpemVPbmNlRmxhZywgW10gewot
ICAgICAgICBnX2NsYXNzSW5mb1NjcmFtYmxlZFB0cktleSA9IG1ha2VTY3JhbWJsZWRQdHJLZXko
KTsKLSAgICAgICAgZ19tYXNtU2NyYW1ibGVkUHRyS2V5ID0gbWFrZVNjcmFtYmxlZFB0cktleSgp
OworICAgICAgICBnX2NsYXNzSW5mb1BvaXNvbiA9IG1ha2VQb2lzb24oKTsKKyAgICAgICAgZ19t
YXNtUG9pc29uID0gbWFrZVBvaXNvbigpOwogICAgIH0pOwogfQogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NQb2lzb25lZFB0ci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1BvaXNvbmVkUHRyLmgJKHJldmlzaW9uIDIyNTYx
MykJKGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDU2NyYW1ibGVkUHRyLmg6
MjI1NjEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDUG9pc29uZWRQdHIu
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvU2Ny
YW1ibGVkUHRyLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitleHRlcm4gIkMiIEpTX0VYUE9SVERB
VEEgdWludHB0cl90IGdfY2xhc3NJbmZvU2NyYW1ibGVkUHRyS2V5OworZXh0ZXJuICJDIiBKU19F
WFBPUlREQVRBIHVpbnRwdHJfdCBnX21hc21TY3JhbWJsZWRQdHJLZXk7CisKK3N0cnVjdCBDbGFz
c0luZm87CisKK3VzaW5nIENsYXNzSW5mb1NjcmFtYmxlZFB0ciA9IFNjcmFtYmxlZFB0cjxjb25z
dCBDbGFzc0luZm8qLCBnX2NsYXNzSW5mb1NjcmFtYmxlZFB0cktleT47Cit1c2luZyBNYXNtU2Ny
YW1ibGVkUHRyID0gU2NyYW1ibGVkUHRyPHZvaWQqLCBnX21hc21TY3JhbWJsZWRQdHJLZXk+Owor
Cit2b2lkIGluaXRpYWxpemVTY3JhbWJsZWRQdHJLZXlzKCk7CisKK30gLy8gbmFtZXNwYWNlIEpT
QworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQb2lzb25lZFB0ci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1BvaXNvbmVk
UHRyLmgJKHJldmlzaW9uIDIyNTYxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ1BvaXNvbmVkUHRyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDE5ICsyNSwxOSBAQAogCiAj
cHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgPHd0Zi9TY3JhbWJsZWRQdHIuaD4KKyNpbmNsdWRlIDx3
dGYvUG9pc29uZWQuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKLWV4dGVybiAiQyIgSlNfRVhQT1JU
REFUQSB1aW50cHRyX3QgZ19jbGFzc0luZm9TY3JhbWJsZWRQdHJLZXk7Ci1leHRlcm4gIkMiIEpT
X0VYUE9SVERBVEEgdWludHB0cl90IGdfbWFzbVNjcmFtYmxlZFB0cktleTsKK2V4dGVybiAiQyIg
SlNfRVhQT1JUREFUQSB1aW50cHRyX3QgZ19jbGFzc0luZm9Qb2lzb247CitleHRlcm4gIkMiIEpT
X0VYUE9SVERBVEEgdWludHB0cl90IGdfbWFzbVBvaXNvbjsKIAogc3RydWN0IENsYXNzSW5mbzsK
IAotdXNpbmcgQ2xhc3NJbmZvU2NyYW1ibGVkUHRyID0gU2NyYW1ibGVkUHRyPGNvbnN0IENsYXNz
SW5mbyosIGdfY2xhc3NJbmZvU2NyYW1ibGVkUHRyS2V5PjsKLXVzaW5nIE1hc21TY3JhbWJsZWRQ
dHIgPSBTY3JhbWJsZWRQdHI8dm9pZCosIGdfbWFzbVNjcmFtYmxlZFB0cktleT47Cit1c2luZyBQ
b2lzb25lZENsYXNzSW5mb1B0ciA9IFBvaXNvbmVkPGdfY2xhc3NJbmZvUG9pc29uLCBjb25zdCBD
bGFzc0luZm8qPjsKK3VzaW5nIFBvaXNvbmVkTWFzbVB0ciA9IFBvaXNvbmVkPGdfbWFzbVBvaXNv
biwgdm9pZCo+OwogCi12b2lkIGluaXRpYWxpemVTY3JhbWJsZWRQdHJLZXlzKCk7Cit2b2lkIGlu
aXRpYWxpemVQb2lzb24oKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1NjcmFtYmxlZFB0ci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDU2NyYW1ibGVkUHRyLmNwcAkocmV2aXNp
b24gMjI1NjEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDU2NyYW1ibGVk
UHRyLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiSlNDU2NyYW1ibGVkUHRyLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi11aW50cHRyX3QgZ19j
bGFzc0luZm9TY3JhbWJsZWRQdHJLZXk7Ci11aW50cHRyX3QgZ19tYXNtU2NyYW1ibGVkUHRyS2V5
OwotCi12b2lkIGluaXRpYWxpemVTY3JhbWJsZWRQdHJLZXlzKCkKLXsKLSAgICBzdGF0aWMgc3Rk
OjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZU9uY2VGbGFnOwotICAgIHN0ZDo6Y2FsbF9vbmNlKGluaXRp
YWxpemVPbmNlRmxhZywgW10gewotICAgICAgICBnX2NsYXNzSW5mb1NjcmFtYmxlZFB0cktleSA9
IG1ha2VTY3JhbWJsZWRQdHJLZXkoKTsKLSAgICAgICAgZ19tYXNtU2NyYW1ibGVkUHRyS2V5ID0g
bWFrZVNjcmFtYmxlZFB0cktleSgpOwotICAgIH0pOwotfQotCi19IC8vIG5hbWVzcGFjZSBKU0MK
LQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDU2NyYW1ibGVkUHRyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDU2NyYW1ibGVk
UHRyLmgJKHJldmlzaW9uIDIyNTYxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ1NjcmFtYmxlZFB0ci5oCShub25leGlzdGVudCkKQEAgLTEsNDMgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aW5jbHVkZSA8d3RmL1NjcmFtYmxlZFB0ci5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLQotZXh0ZXJu
ICJDIiBKU19FWFBPUlREQVRBIHVpbnRwdHJfdCBnX2NsYXNzSW5mb1NjcmFtYmxlZFB0cktleTsK
LWV4dGVybiAiQyIgSlNfRVhQT1JUREFUQSB1aW50cHRyX3QgZ19tYXNtU2NyYW1ibGVkUHRyS2V5
OwotCi1zdHJ1Y3QgQ2xhc3NJbmZvOwotCi11c2luZyBDbGFzc0luZm9TY3JhbWJsZWRQdHIgPSBT
Y3JhbWJsZWRQdHI8Y29uc3QgQ2xhc3NJbmZvKiwgZ19jbGFzc0luZm9TY3JhbWJsZWRQdHJLZXk+
OwotdXNpbmcgTWFzbVNjcmFtYmxlZFB0ciA9IFNjcmFtYmxlZFB0cjx2b2lkKiwgZ19tYXNtU2Ny
YW1ibGVkUHRyS2V5PjsKLQotdm9pZCBpbml0aWFsaXplU2NyYW1ibGVkUHRyS2V5cygpOwotCi19
IC8vIG5hbWVzcGFjZSBKU0MKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNEZXN0cnVjdGlibGVPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Rlc3RydWN0aWJsZU9iamVjdC5oCShyZXZpc2lvbiAyMjU2MTMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rlc3RydWN0aWJsZU9iamVjdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICZ2bS5k
ZXN0cnVjdGlibGVPYmplY3RTcGFjZTsKICAgICB9CiAKLSAgICBjb25zdCBDbGFzc0luZm8qIGNs
YXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NJbmZvLmRlc2NyYW1ibGVkKCk7IH0KKyAg
ICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NJbmZv
LnVucG9pc29uZWQoKTsgfQogICAgIAogICAgIHN0YXRpYyBwdHJkaWZmX3QgY2xhc3NJbmZvT2Zm
c2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBtX2Ns
YXNzSW5mbyk7IH0KIApAQCAtNTYsNyArNTYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgfQogCiBwcml2
YXRlOgotICAgIENsYXNzSW5mb1NjcmFtYmxlZFB0ciBtX2NsYXNzSW5mbzsKKyAgICBQb2lzb25l
ZENsYXNzSW5mb1B0ciBtX2NsYXNzSW5mbzsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVj
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2VnbWVu
dGVkVmFyaWFibGVPYmplY3QuaAkocmV2aXNpb24gMjI1NjEzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC05NCw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICZ2bS5zZWdtZW50ZWRW
YXJpYWJsZU9iamVjdFNwYWNlOwogICAgIH0KICAgICAKLSAgICBjb25zdCBDbGFzc0luZm8qIGNs
YXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NJbmZvLmRlc2NyYW1ibGVkKCk7IH0KKyAg
ICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NJbmZv
LnVucG9pc29uZWQoKTsgfQogICAgIAogcHJvdGVjdGVkOgogICAgIEpTU2VnbWVudGVkVmFyaWFi
bGVPYmplY3QoVk0mLCBTdHJ1Y3R1cmUqLCBKU1Njb3BlKik7CkBAIC0xMDcsNyArMTA3LDcgQEAg
cHJpdmF0ZToKICAgICBTZWdtZW50ZWRWZWN0b3I8V3JpdGVCYXJyaWVyPFVua25vd24+LCAxNj4g
bV92YXJpYWJsZXM7CiAgICAgQ29uY3VycmVudEpTTG9jayBtX2xvY2s7CiAgICAgYm9vbCBtX2Fs
cmVhZHlEZXN0cm95ZWQgeyBmYWxzZSB9OyAvLyBXZSB1c2UgdGhlc2UgYXNzZXJ0aW9ucyB0byBj
aGVjayB0aGF0IHdlIGFyZW4ndCBkb2luZyBhbmNpZW50IGhhY2tzIHRoYXQgcmVzdWx0IGluIHRo
aXMgYmVpbmcgZGVzdHJveWVkIG1vcmUgdGhhbiBvbmNlLgotICAgIENsYXNzSW5mb1NjcmFtYmxl
ZFB0ciBtX2NsYXNzSW5mbzsKKyAgICBQb2lzb25lZENsYXNzSW5mb1B0ciBtX2NsYXNzSW5mbzsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlLmgJKHJldmlzaW9uIDIyNTYxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NjgsNyArNDY4LDcg
QEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRPYmplY3RUb1N0cmluZ1ZhbHVlKEV4ZWNTdGF0ZSos
IFZNJiwgSlNTdHJpbmcqIHZhbHVlLCBQcm9wZXJ0eVNsb3QgdG9TdHJpbmdUYWdTeW1ib2xTbG90
KTsKIAotICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9j
bGFzc0luZm8uZGVzY3JhbWJsZWQoKTsgfQorICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZv
KCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc0luZm8udW5wb2lzb25lZCgpOyB9CiAKICAgICBzdGF0
aWMgcHRyZGlmZl90IHN0cnVjdHVyZUlET2Zmc2V0KCkKICAgICB7CkBAIC03OTgsNyArNzk4LDcg
QEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4gbV9uYW1lSW5QcmV2
aW91czsKIAotICAgIENsYXNzSW5mb1NjcmFtYmxlZFB0ciBtX2NsYXNzSW5mbzsKKyAgICBQb2lz
b25lZENsYXNzSW5mb1B0ciBtX2NsYXNzSW5mbzsKIAogICAgIFN0cnVjdHVyZVRyYW5zaXRpb25U
YWJsZSBtX3RyYW5zaXRpb25UYWJsZTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCShyZXZpc2lvbiAyMjU2MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MTQsNyArNDE0LDcgQEAgcHVibGljOgogICAgIHN0ZDo6
dW5pcXVlX3B0cjxQcm9taXNlRGVmZXJyZWRUaW1lcj4gcHJvbWlzZURlZmVycmVkVGltZXI7CiAg
ICAgCiAgICAgSlNDZWxsKiBjdXJyZW50bHlEZXN0cnVjdGluZ0NhbGxiYWNrT2JqZWN0OwotICAg
IENsYXNzSW5mb1NjcmFtYmxlZFB0ciBjdXJyZW50bHlEZXN0cnVjdGluZ0NhbGxiYWNrT2JqZWN0
Q2xhc3NJbmZvOworICAgIFBvaXNvbmVkQ2xhc3NJbmZvUHRyIGN1cnJlbnRseURlc3RydWN0aW5n
Q2FsbGJhY2tPYmplY3RDbGFzc0luZm87CiAKICAgICBBdG9taWNTdHJpbmdUYWJsZSogbV9hdG9t
aWNTdHJpbmdUYWJsZTsKICAgICBXVEY6OlN5bWJvbFJlZ2lzdHJ5IG1fc3ltYm9sUmVnaXN0cnk7
CkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0No
YW5nZUxvZwkocmV2aXNpb24gMjI1NjEzKQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSw1MyBAQAorMjAxNy0xMi0wNiAgTWFyayBMYW0gIDxtYXJrLmxh
bUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVmYWN0b3Jpbmc6IFJlbmFtZSBTY3JhbWJsZWRQdHIg
dG8gUG9pc29uZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODA1MTQKKworICAgICAgICBSZXZpZXdlZCBieSBTYWFtIEJhcmF0aS4KKworICAgICAg
ICBXZSdyZSBzd2l0Y2hpbmcgb3VyIG5vbWVuY2xhdHVyZSB0byAicG9pc29uaW5nIiBpbnN0ZWFk
IG9mICJzY3JhbWJsaW5nIiBwb2ludGVycy4KKyAgICAgICAgVGhpcyBhbGxvd3MgdXMgdG8gdXNl
IHNob3J0ZXIgbmFtZXMuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpcyBhbG1vc3QgcHVyZWx5IHJl
ZmFjdG9yaW5nLCBleGNlcHQgZm9yIG9uZSBjaGFuZ2U6IHRoZSBQb2lzb25lZEltcGwKKyAgICAg
ICAgdGVtcGxhdGUgY2xhc3MgKHByZXZpb3VzbHkgU2NyYW1ibGVkUHRyKSBoYXMgYmVlbiBtb2Rp
ZmllZCB0byBhbGxvdyB1c2FnZSBvZgorICAgICAgICBhIGNvbnN0ZXhwciB1aW50MzJfdCBwb2lz
b24gdmFsdWUgKHNlZSBJbnQzMlBvaXNvbmVkKSBpbiBhZGRpdGlvbiB0byBhIHJ1bnRpbWUKKyAg
ICAgICAgZGV0ZXJtaW5lZCB1aW50cHRyX3QgcG9pc29uIHZhbHVlIChzZWUgUG9pc29uZWQpLgor
CisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3Rm
L0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIHd0Zi9Qb2lzb25lZC5jcHA6IENvcGllZCBmcm9t
IFNvdXJjZS9XVEYvd3RmL1NjcmFtYmxlZFB0ci5jcHAuCisgICAgICAgIChXVEY6Om1ha2VQb2lz
b24pOgorICAgICAgICAoV1RGOjptYWtlU2NyYW1ibGVkUHRyS2V5KTogRGVsZXRlZC4KKyAgICAg
ICAgKiB3dGYvUG9pc29uZWQuaDogQ29waWVkIGZyb20gU291cmNlL1dURi93dGYvU2NyYW1ibGVk
UHRyLmguCisgICAgICAgIChXVEY6OlBvaXNvbmVkSW1wbDo6UG9pc29uZWRJbXBsKToKKyAgICAg
ICAgKFdURjo6UG9pc29uZWRJbXBsOjphc3NlcnRJc1BvaXNvbmVkIGNvbnN0KToKKyAgICAgICAg
KFdURjo6UG9pc29uZWRJbXBsOjphc3NlcnRJc05vdFBvaXNvbmVkIGNvbnN0KToKKyAgICAgICAg
KFdURjo6UG9pc29uZWRJbXBsOjp1bnBvaXNvbmVkIGNvbnN0KToKKyAgICAgICAgKFdURjo6UG9p
c29uZWRJbXBsOjpvcGVyYXRvci0+IGNvbnN0KToKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBs
OjpiaXRzIGNvbnN0KToKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpvcGVyYXRvciEgY29u
c3QpOgorICAgICAgICAoV1RGOjpQb2lzb25lZEltcGw6Om9wZXJhdG9yIGJvb2wgY29uc3QpOgor
ICAgICAgICAoV1RGOjpQb2lzb25lZEltcGw6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAo
V1RGOjpQb2lzb25lZEltcGw6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV1RGOjpQb2lzb25lZElt
cGw6Om9wZXJhdG9yPSk6CisgICAgICAgIChXVEY6OlBvaXNvbmVkSW1wbDo6cG9pc29uKToKKyAg
ICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjp1bnBvaXNvbik6CisgICAgICAgIChXVEY6OlNjcmFt
YmxlZFB0cjo6U2NyYW1ibGVkUHRyKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6U2NyYW1ibGVk
UHRyOjphc3NlcnRJc1NjcmFtYmxlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlNj
cmFtYmxlZFB0cjo6YXNzZXJ0SXNOb3RTY3JhbWJsZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV1RGOjpTY3JhbWJsZWRQdHI6OmRlc2NyYW1ibGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdURjo6U2NyYW1ibGVkUHRyOjpvcGVyYXRvci0+IGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdURjo6U2NyYW1ibGVkUHRyOjpiaXRzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdU
Rjo6U2NyYW1ibGVkUHRyOjpvcGVyYXRvciEgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV1RG
OjpTY3JhbWJsZWRQdHI6Om9wZXJhdG9yIGJvb2wgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V1RGOjpTY3JhbWJsZWRQdHI6Om9wZXJhdG9yPT0gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V1RGOjpTY3JhbWJsZWRQdHI6Om9wZXJhdG9yPT0pOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpT
Y3JhbWJsZWRQdHI6Om9wZXJhdG9yPSk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlNjcmFtYmxl
ZFB0cjo6c2NyYW1ibGUpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTY3JhbWJsZWRQdHI6OmRl
c2NyYW1ibGUpOiBEZWxldGVkLgorICAgICAgICAqIHd0Zi9TY3JhbWJsZWRQdHIuY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIHd0Zi9TY3JhbWJsZWRQdHIuaDogUmVtb3ZlZC4KKwogMjAxNy0xMi0w
NSAgU3RlcGhhbiBTemFibyAgPHN0ZXBoYW4uc3phYm9Ac29ueS5jb20+CiAKICAgICAgICAgU3dp
dGNoIHdpbmRvd3MgYnVpbGQgdG8gVmlzdWFsIFN0dWRpbyAyMDE3CkluZGV4OiBTb3VyY2UvV1RG
L1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
V1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIyNTYxMykKKysrIFNvdXJj
ZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE0
OSw3ICsxNDksNyBAQAogCQlFMzhENkUyNzFGNTUyMkUzMDBBNzVDQzQgLyogU3RyaW5nQnVpbGRl
ckpTT04uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTM4RDZFMjYxRjU1MjJFMzAwQTc1Q0M0IC8qIFN0cmluZ0J1aWxkZXJKU09OLmNwcCAqLzsgfTsK
IAkJRTRBMEFEMzkxQTk2MjQ1NTAwNTM2REY2IC8qIFdvcmtRdWV1ZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEEwQUQzNzFBOTYyNDU1MDA1MzZE
RjYgLyogV29ya1F1ZXVlLmNwcCAqLzsgfTsKIAkJRTRBMEFEM0QxQTk2MjUzQzAwNTM2REY2IC8q
IFdvcmtRdWV1ZUNvY29hLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEU0QTBBRDNDMUE5NjI1M0MwMDUzNkRGNiAvKiBXb3JrUXVldWVDb2NvYS5jcHAg
Ki87IH07Ci0JCUZFODU0MTZFMUZCRTI4NUQwMDhEQTVEQSAvKiBTY3JhbWJsZWRQdHIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4NTQxNkMxRkJF
Mjg1QjAwOERBNURBIC8qIFNjcmFtYmxlZFB0ci5jcHAgKi87IH07CisJCUZFODU0MTZFMUZCRTI4
NUQwMDhEQTVEQSAvKiBQb2lzb25lZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRTg1NDE2QzFGQkUyODVCMDA4REE1REEgLyogUG9pc29uZWQuY3Bw
ICovOyB9OwogCQlGRURBQ0QzRDE2MzBGODNGMDBDNjk2MzQgLyogU3RhY2tTdGF0cy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRURBQ0QzQjE2MzBG
ODNGMDBDNjk2MzQgLyogU3RhY2tTdGF0cy5jcHAgKi87IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxl
IHNlY3Rpb24gKi8KIApAQCAtNjEwLDggKzYxMCw4IEBACiAJCUVGN0Q2Q0Q1OUQ4NjQyQThBMERB
ODZBRCAvKiBTdGFja1RyYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0
YWNrVHJhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjcyQkJEQjEwN0ZBNDI0
ODg2MTc4QjlFIC8qIFN5bWJvbEltcGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU3ltYm9sSW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZF
ODIyNTMwMUIyQTFFNUIwMEJBNjhGRCAvKiBOYWtlZFB0ci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBOYWtlZFB0ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlG
RTg1NDE2QzFGQkUyODVCMDA4REE1REEgLyogU2NyYW1ibGVkUHRyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmFtYmxlZFB0ci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUZFODU0MTZEMUZCRTI4NUMwMDhEQTVEQSAvKiBTY3JhbWJsZWRQdHIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyYW1ibGVkUHRyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODU0MTZDMUZCRTI4NUIwMDhEQTVEQSAvKiBQb2lz
b25lZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb2lzb25lZC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODU0MTZEMUZCRTI4NUMwMDhEQTVE
QSAvKiBQb2lzb25lZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQb2lzb25l
ZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTg2QTg3NDFFNTk0NDAyMDAxMTFC
QkYgLyogRm9yYmlkSGVhcEFsbG9jYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRm9yYmlkSGVhcEFsbG9jYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRkU4OTI1QUYxRDAwREFFQzAwNDY5MDdFIC8qIEluZGVudGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEluZGVudGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUZFREFDRDNCMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0YWNrU3RhdHMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtOTY1LDYgKzk2NSw4IEBACiAJCQkJQTg3NkRCRDcxNTE4MTZFNTAw
REFEQjk1IC8qIFBsYXRmb3JtLmggKi8sCiAJCQkJRTMyMDBBQjQxRTlBNTM2RDAwM0I1OUQyIC8q
IFBsYXRmb3JtUmVnaXN0ZXJzLmggKi8sCiAJCQkJMEZGODYwOTQxQkNDQkQ3NDAwNDUxMjdGIC8q
IFBvaW50ZXJDb21wYXJpc29uLmggKi8sCisJCQkJRkU4NTQxNkMxRkJFMjg1QjAwOERBNURBIC8q
IFBvaXNvbmVkLmNwcCAqLywKKwkJCQlGRTg1NDE2RDFGQkUyODVDMDA4REE1REEgLyogUG9pc29u
ZWQuaCAqLywKIAkJCQkwRjlEMzM1RDE2NURCQTczMDA1QUQzODcgLyogUHJpbnRTdHJlYW0uY3Bw
ICovLAogCQkJCTBGOUQzMzVFMTY1REJBNzMwMDVBRDM4NyAvKiBQcmludFN0cmVhbS5oICovLAog
CQkJCTUzRUMyNTNDMUU5NUFEMzAwMDA4MzFCOSAvKiBQcmlvcml0eVF1ZXVlLmggKi8sCkBAIC0x
MDAxLDggKzEwMDMsNiBAQAogCQkJCTE0Njk0MTk1MTZFQUFGRjgwMDI0RTE0NiAvKiBTY2hlZHVs
ZVBhaXJNYWMubW0gKi8sCiAJCQkJMUEzNTI0QUExRDYzQTJGRjAwMzE3MjlCIC8qIFNjb3BlLmgg
Ki8sCiAJCQkJMEZFQzg0QjAxQkRBQ0QzOTAwODBGRjc0IC8qIFNjb3BlZExhbWJkYS5oICovLAot
CQkJCUZFODU0MTZDMUZCRTI4NUIwMDhEQTVEQSAvKiBTY3JhbWJsZWRQdHIuY3BwICovLAotCQkJ
CUZFODU0MTZEMUZCRTI4NUMwMDhEQTVEQSAvKiBTY3JhbWJsZWRQdHIuaCAqLywKIAkJCQkwRjY2
QjI4NDFEQzk3QkFCMDA0QTFEM0YgLyogU2Vjb25kcy5jcHAgKi8sCiAJCQkJMEY2NkIyODUxREM5
N0JBQjAwNEExRDNGIC8qIFNlY29uZHMuaCAqLywKIAkJCQlBOEE0NzMwNjE1MUE4MjVCMDA0MTIz
RkYgLyogU2VnbWVudGVkVmVjdG9yLmggKi8sCkBAIC0xNDYyLDcgKzE0NjIsNyBAQAogCQkJCTE0
Njk0MTkzMTZFQUFGNkQwMDI0RTE0NiAvKiBSdW5Mb29wVGltZXJDRi5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkxNDY5NDE5OTE2RUFCMDQxMDAyNEUxNDYgLyogU2NoZWR1bGVQYWlyQ0YuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMTQ2OTQxOTcxNkVBQUZGODAwMjRFMTQ2IC8qIFNjaGVkdWxlUGFp
ck1hYy5tbSBpbiBTb3VyY2VzICovLAotCQkJCUZFODU0MTZFMUZCRTI4NUQwMDhEQTVEQSAvKiBT
Y3JhbWJsZWRQdHIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkU4NTQxNkUxRkJFMjg1RDAwOERB
NURBIC8qIFBvaXNvbmVkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNjZCMjhFMURDOTdCQUIw
MDRBMUQzRiAvKiBTZWNvbmRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDIxMTUxQTgy
NUIwMDQxMjNGRiAvKiBTSEExLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzMTFCRDUzMUVBNzFD
QUQwMDUyNTI4MSAvKiBTaWduYWxzLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dU
Ri93dGYvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvQ01ha2VM
aXN0cy50eHQJKHJldmlzaW9uIDIyNTYxMykKKysrIFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsNiArMTA3LDcgQEAgc2V0KFdURl9IRUFERVJTCiAg
ICAgUGFya2luZ0xvdC5oCiAgICAgUGxhdGZvcm0uaAogICAgIFBsYXRmb3JtUmVnaXN0ZXJzLmgK
KyAgICBQb2lzb25lZC5oCiAgICAgUHJpbnRTdHJlYW0uaAogICAgIFByb2Nlc3NJRC5oCiAgICAg
UkFNU2l6ZS5oCkBAIC0xMzAsNyArMTMxLDYgQEAgc2V0KFdURl9IRUFERVJTCiAgICAgU2hhcmVk
VGFzay5oCiAgICAgU2F0dXJhdGVkQXJpdGhtZXRpYy5oCiAgICAgU2NvcGVkTGFtYmRhLmgKLSAg
ICBTY3JhbWJsZWRQdHIuaAogICAgIFNlY29uZHMuaAogICAgIFNlZ21lbnRlZFZlY3Rvci5oCiAg
ICAgU21hbGxQdHJTZXQuaApAQCAtMjU4LDYgKzI1OCw3IEBAIHNldChXVEZfU09VUkNFUwogICAg
IFBhcmFsbGVsSGVscGVyUG9vbC5jcHAKICAgICBQYXJhbGxlbEpvYnNHZW5lcmljLmNwcAogICAg
IFBhcmtpbmdMb3QuY3BwCisgICAgUG9pc29uZWQuY3BwCiAgICAgUHJpbnRTdHJlYW0uY3BwCiAg
ICAgUkFNU2l6ZS5jcHAKICAgICBSYW5kb21EZXZpY2UuY3BwCkBAIC0yNjYsNyArMjY3LDYgQEAg
c2V0KFdURl9TT1VSQ0VTCiAgICAgUmVmQ291bnRlZExlYWtDb3VudGVyLmNwcAogICAgIFJ1bkxv
b3AuY3BwCiAgICAgU0hBMS5jcHAKLSAgICBTY3JhbWJsZWRQdHIuY3BwCiAgICAgU2Vjb25kcy5j
cHAKICAgICBTaXhDaGFyYWN0ZXJIYXNoLmNwcAogICAgIFN0YWNrQm91bmRzLmNwcApJbmRleDog
U291cmNlL1dURi93dGYvUG9pc29uZWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3Rm
L1BvaXNvbmVkLmNwcAkocmV2aXNpb24gMjI1NjEzKQkoZnJvbSBTb3VyY2UvV1RGL3d0Zi9TY3Jh
bWJsZWRQdHIuY3BwOjIyNTYxMykKKysrIFNvdXJjZS9XVEYvd3RmL1BvaXNvbmVkLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNjcmFtYmxl
ZFB0ci5oIgorCisjaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmg+
CisKK25hbWVzcGFjZSBXVEYgeworCit1aW50cHRyX3QgbWFrZVNjcmFtYmxlZFB0cktleSgpCit7
CisgICAgdWludHB0cl90IGtleSA9IGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyKCk7Cisj
aWYgVVNFKEpTVkFMVUU2NCkgJiYgIU9TKFdJTkRPV1MpCisgICAga2V5ID0gKGtleSA8PCAzMikg
XiAoc3RhdGljX2Nhc3Q8dWludHB0cl90PihjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigp
KSA8PCAzKTsKKyAgICAvLyBFbnN1cmUgdGhhdCB0aGUgc2NyYW1ibGVkIGJpdHMgKHBvaW50ZXIg
XiBrZXkpIGRvIG5vdCBtYWtlIGEgdmFsaWQgcG9pbnRlciBhbmQKKyAgICAvLyBjYW5ub3QgYmUg
MC4gV2UgZW5zdXJlIHRoYXQgaXQgaXMgemVybyBzbyB0aGF0IHRoZSBzY3JhbWJsZWQgYml0cyBj
YW4gYWxzbyBiZQorICAgIC8vIHVzZWQgZm9yIGEgbm90bWFsIHplcm8gY2hlY2sgd2l0aG91dCBu
ZWVkaW5nIHRvIGRlc2NyYW1ibGUgZmlyc3QuCisgICAga2V5IHw9IChzdGF0aWNfY2FzdDx1aW50
cHRyX3Q+KDB4MSkgPDwgNjMpOworI2Vsc2UKKyAgICBrZXkgPSAwOyAvLyBTY3JhbWJsaW5nIGlz
IG5vdCBzdXBwb3J0ZWQgb24gMzItYml0IG9yIG5vbi1kYXJ3aW4gcGxhdGZvcm1zIHlldC4KKyNl
bmRpZgorICAgIHJldHVybiBrZXk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCkluZGV4OiBT
b3VyY2UvV1RGL3d0Zi9Qb2lzb25lZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYv
UG9pc29uZWQuY3BwCShyZXZpc2lvbiAyMjU2MTMpCisrKyBTb3VyY2UvV1RGL3d0Zi9Qb2lzb25l
ZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDIzICsyNCwyMyBAQAogICovCiAKICNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJTY3JhbWJsZWRQdHIuaCIKKyNpbmNsdWRlICJQb2lzb25l
ZC5oIgogCiAjaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmg+CiAK
IG5hbWVzcGFjZSBXVEYgewogCi11aW50cHRyX3QgbWFrZVNjcmFtYmxlZFB0cktleSgpCit1aW50
cHRyX3QgbWFrZVBvaXNvbigpCiB7CiAgICAgdWludHB0cl90IGtleSA9IGNyeXB0b2dyYXBoaWNh
bGx5UmFuZG9tTnVtYmVyKCk7CiAjaWYgVVNFKEpTVkFMVUU2NCkgJiYgIU9TKFdJTkRPV1MpCiAg
ICAga2V5ID0gKGtleSA8PCAzMikgXiAoc3RhdGljX2Nhc3Q8dWludHB0cl90PihjcnlwdG9ncmFw
aGljYWxseVJhbmRvbU51bWJlcigpKSA8PCAzKTsKLSAgICAvLyBFbnN1cmUgdGhhdCB0aGUgc2Ny
YW1ibGVkIGJpdHMgKHBvaW50ZXIgXiBrZXkpIGRvIG5vdCBtYWtlIGEgdmFsaWQgcG9pbnRlciBh
bmQKLSAgICAvLyBjYW5ub3QgYmUgMC4gV2UgZW5zdXJlIHRoYXQgaXQgaXMgemVybyBzbyB0aGF0
IHRoZSBzY3JhbWJsZWQgYml0cyBjYW4gYWxzbyBiZQotICAgIC8vIHVzZWQgZm9yIGEgbm90bWFs
IHplcm8gY2hlY2sgd2l0aG91dCBuZWVkaW5nIHRvIGRlc2NyYW1ibGUgZmlyc3QuCisgICAgLy8g
RW5zdXJlIHRoYXQgdGhlIHBvaXNvbmVkIGJpdHMgKHBvaW50ZXIgXiBrZXkpIGRvIG5vdCBtYWtl
IGEgdmFsaWQgcG9pbnRlciBhbmQKKyAgICAvLyBjYW5ub3QgYmUgMC4gV2UgZW5zdXJlIHRoYXQg
aXQgaXMgemVybyBzbyB0aGF0IHRoZSBwb2lzb25lZCBiaXRzIGNhbiBhbHNvIGJlCisgICAgLy8g
dXNlZCBmb3IgYSBub3RtYWwgemVybyBjaGVjayB3aXRob3V0IG5lZWRpbmcgdG8gZGVjb2RlZCBm
aXJzdC4KICAgICBrZXkgfD0gKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMHgxKSA8PCA2Myk7CiAj
ZWxzZQotICAgIGtleSA9IDA7IC8vIFNjcmFtYmxpbmcgaXMgbm90IHN1cHBvcnRlZCBvbiAzMi1i
aXQgb3Igbm9uLWRhcndpbiBwbGF0Zm9ybXMgeWV0LgorICAgIGtleSA9IDA7IC8vIFBvaXNvbmlu
ZyBpcyBub3Qgc3VwcG9ydGVkIG9uIDMyLWJpdCBvciBub24tZGFyd2luIHBsYXRmb3JtcyB5ZXQu
CiAjZW5kaWYKICAgICByZXR1cm4ga2V5OwogfQpJbmRleDogU291cmNlL1dURi93dGYvUG9pc29u
ZWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Qb2lzb25lZC5oCShyZXZpc2lvbiAy
MjU2MTMpCShmcm9tIFNvdXJjZS9XVEYvd3RmL1NjcmFtYmxlZFB0ci5oOjIyNTYxMykKKysrIFNv
dXJjZS9XVEYvd3RmL1BvaXNvbmVkLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMjkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisKKyNkZWZpbmUgRU5BQkxFX1NDUkFN
QkxFRF9QVFJfQVNTRVJUUyAwCisKKy8vIE5vdCBjdXJyZW50bHkgc3VwcG9ydGVkIGZvciAzMi1i
aXQgb3IgT1MoV0lORE9XUykgYnVpbGRzIChiZWNhdXNlIG9mIG1pc3NpbmcgbGxpbnQgc3VwcG9y
dCkuCisvLyBNYWtlIHN1cmUgaXQncyBkaXNhYmxlZC4KKyNpZiBVU0UoSlNWQUxVRTMyXzY0KSB8
fCBPUyhXSU5ET1dTKQorI3VuZGVmIEVOQUJMRV9TQ1JBTUJMRURfUFRSX0FTU0VSVFMKKyNkZWZp
bmUgRU5BQkxFX1NDUkFNQkxFRF9QVFJfQVNTRVJUUyAwCisjZW5kaWYKKworbmFtZXNwYWNlIFdU
RiB7CisKK3VzaW5nIFNjcmFtYmxlZFB0ckJpdHMgPSB1aW50cHRyX3Q7CisKK3RlbXBsYXRlPHR5
cGVuYW1lIFQsIHVpbnRwdHJfdCYga2V5LCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8c3Rk
Ojppc19wb2ludGVyPFQ+Ojp2YWx1ZT4+CitjbGFzcyBTY3JhbWJsZWRQdHIgeworcHVibGljOgor
ICAgIFNjcmFtYmxlZFB0cigpIHsgfQorCisgICAgZXhwbGljaXQgU2NyYW1ibGVkUHRyKFQgcHRy
KQorICAgICAgICA6IG1fc2NyYW1ibGVkQml0cyhzY3JhbWJsZShwdHIpKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKHB0ciAmJiBtX3NjcmFtYmxlZEJpdHMpOworICAgIH0KKworICAgIFNjcmFtYmxl
ZFB0cihjb25zdCBTY3JhbWJsZWRQdHImKSA9IGRlZmF1bHQ7CisKKyAgICBleHBsaWNpdCBTY3Jh
bWJsZWRQdHIoU2NyYW1ibGVkUHRyQml0cyBzY3JhbWJsZWRCaXRzKQorICAgICAgICA6IG1fc2Ny
YW1ibGVkQml0cyhzY3JhbWJsZWRCaXRzKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fc2NyYW1i
bGVkQml0cyk7CisgICAgfQorCisjaWYgRU5BQkxFKFNDUkFNQkxFRF9QVFJfQVNTRVJUUykKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gdm9pZCo+CisgICAgc3RhdGljIGJvb2wgaXNTY3JhbWJs
ZWQoVSB2YWx1ZSkgeyByZXR1cm4gIXZhbHVlIHx8IChyZWludGVycHJldF9jYXN0PHVpbnRwdHJf
dD4odmFsdWUpICYgMHhmZmZmMDAwMDAwMDAwMDAwKTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFUgPSB2b2lkKj4KKyAgICBzdGF0aWMgdm9pZCBhc3NlcnRJc1NjcmFtYmxlZChVIHZhbHVlKSB7
IFJFTEVBU0VfQVNTRVJUKGlzU2NyYW1ibGVkKHZhbHVlKSk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBVID0gdm9pZCo+CisgICAgc3RhdGljIHZvaWQgYXNzZXJ0SXNOb3RTY3JhbWJsZWQoVSB2
YWx1ZSkgeyBSRUxFQVNFX0FTU0VSVCghaXNTY3JhbWJsZWQodmFsdWUpKTsgfQorI2Vsc2UKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gdm9pZCo+IHN0YXRpYyB2b2lkIGFzc2VydElzU2NyYW1i
bGVkKFUpIHsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSB2b2lkKj4gc3RhdGljIHZvaWQg
YXNzZXJ0SXNOb3RTY3JhbWJsZWQoVSkgeyB9CisjZW5kaWYKKyAgICB2b2lkIGFzc2VydElzU2Ny
YW1ibGVkKCkgY29uc3QgeyBhc3NlcnRJc1NjcmFtYmxlZChtX3NjcmFtYmxlZEJpdHMpOyB9Cisg
ICAgdm9pZCBhc3NlcnRJc05vdFNjcmFtYmxlZCgpIGNvbnN0IHsgYXNzZXJ0SXNOb3RTY3JhbWJs
ZWQobV9zY3JhbWJsZWRCaXRzKTsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQ+Cisg
ICAgVSBkZXNjcmFtYmxlZCgpIGNvbnN0IHsgcmV0dXJuIGRlc2NyYW1ibGU8VT4obV9zY3JhbWJs
ZWRCaXRzKTsgfQorCisgICAgQUxXQVlTX0lOTElORSBUIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJl
dHVybiBkZXNjcmFtYmxlPFQ+KG1fc2NyYW1ibGVkQml0cyk7IH0KKworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFUgPSBTY3JhbWJsZWRQdHJCaXRzPgorICAgIFUgYml0cygpIGNvbnN0IHsgcmV0dXJu
IGJpdHdpc2VfY2FzdDxVPihtX3NjcmFtYmxlZEJpdHMpOyB9CisKKyAgICBib29sIG9wZXJhdG9y
ISgpIGNvbnN0IHsgcmV0dXJuICFtX3NjcmFtYmxlZEJpdHM7IH0KKyAgICBleHBsaWNpdCBvcGVy
YXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX3NjcmFtYmxlZEJpdHM7IH0KKworICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBTY3JhbWJsZWRQdHImIGIpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gbV9zY3JhbWJsZWRCaXRzID09IGIubV9zY3JhbWJsZWRCaXRzOworICAgIH0KKwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFB0clR5cGUgPSB2b2lkKiwgdHlwZW5hbWUgPSB0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3BvaW50ZXI8UHRyVHlwZT46OnZhbHVlPjo6dHlwZT4K
KyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUHRyVHlwZSBiKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGRlc2NyYW1ibGVkPFB0clR5cGU+KCkgPT0gYjsKKyAgICB9CisKKyAgICBTY3JhbWJsZWRQ
dHImIG9wZXJhdG9yPShUIHB0cikKKyAgICB7CisgICAgICAgIG1fc2NyYW1ibGVkQml0cyA9IHB0
ciA/IHNjcmFtYmxlKHB0cikgOiAwOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorICAg
IFNjcmFtYmxlZFB0ciYgb3BlcmF0b3I9KGNvbnN0IFNjcmFtYmxlZFB0ciYpID0gZGVmYXVsdDsK
KworcHJpdmF0ZToKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+
CisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgU2NyYW1ibGVkUHRyQml0cyBzY3JhbWJsZShVIHB0
cikgeyByZXR1cm4gYml0d2lzZV9jYXN0PFNjcmFtYmxlZFB0ckJpdHM+KHB0cikgXiBrZXk7IH0K
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgorICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFUgZGVz
Y3JhbWJsZShTY3JhbWJsZWRQdHJCaXRzIHNjcmFtYmxlZEJpdHMpIHsgcmV0dXJuIGJpdHdpc2Vf
Y2FzdDxVPihzY3JhbWJsZWRCaXRzIF4ga2V5KTsgfQorI2Vsc2UKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBVPgorICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFNjcmFtYmxlZFB0ckJpdHMgc2NyYW1i
bGUoVSBwdHIpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxTY3JhbWJsZWRQdHJCaXRzPihwdHIpOyB9
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBVIGRl
c2NyYW1ibGUoU2NyYW1ibGVkUHRyQml0cyBzY3JhbWJsZWRCaXRzKSB7IHJldHVybiBiaXR3aXNl
X2Nhc3Q8VT4oc2NyYW1ibGVkQml0cyk7IH0KKyNlbmRpZgorCisgICAgU2NyYW1ibGVkUHRyQml0
cyBtX3NjcmFtYmxlZEJpdHMgeyAwIH07Cit9OworCit2b2lkIGluaXRpYWxpemVTY3JhbWJsZWRQ
dHIoKTsKK1dURl9FWFBPUlRfUFJJVkFURSB1aW50cHRyX3QgbWFrZVNjcmFtYmxlZFB0cktleSgp
OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpTY3JhbWJsZWRQdHI7Cit1c2lu
ZyBXVEY6OlNjcmFtYmxlZFB0ckJpdHM7Cit1c2luZyBXVEY6Om1ha2VTY3JhbWJsZWRQdHJLZXk7
CisKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BvaXNvbmVkLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvUG9pc29uZWQuaAkocmV2aXNpb24gMjI1NjEzKQorKysgU291cmNlL1dURi93dGYv
UG9pc29uZWQuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTAzICsyNywxMTQgQEAKIAogI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAKLSNkZWZpbmUgRU5BQkxFX1NDUkFNQkxFRF9QVFJfQVNT
RVJUUyAwCisjZGVmaW5lIEVOQUJMRV9QT0lTT05fQVNTRVJUUyAwCiAKIC8vIE5vdCBjdXJyZW50
bHkgc3VwcG9ydGVkIGZvciAzMi1iaXQgb3IgT1MoV0lORE9XUykgYnVpbGRzIChiZWNhdXNlIG9m
IG1pc3NpbmcgbGxpbnQgc3VwcG9ydCkuCiAvLyBNYWtlIHN1cmUgaXQncyBkaXNhYmxlZC4KICNp
ZiBVU0UoSlNWQUxVRTMyXzY0KSB8fCBPUyhXSU5ET1dTKQotI3VuZGVmIEVOQUJMRV9TQ1JBTUJM
RURfUFRSX0FTU0VSVFMKLSNkZWZpbmUgRU5BQkxFX1NDUkFNQkxFRF9QVFJfQVNTRVJUUyAwCisj
dW5kZWYgRU5BQkxFX1BPSVNPTl9BU1NFUlRTCisjZGVmaW5lIEVOQUJMRV9QT0lTT05fQVNTRVJU
UyAwCiAjZW5kaWYKIAogbmFtZXNwYWNlIFdURiB7CiAKLXVzaW5nIFNjcmFtYmxlZFB0ckJpdHMg
PSB1aW50cHRyX3Q7Cit1c2luZyBQb2lzb25lZEJpdHMgPSB1aW50cHRyX3Q7CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIFQsIHVpbnRwdHJfdCYga2V5LCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8
c3RkOjppc19wb2ludGVyPFQ+Ojp2YWx1ZT4+Ci1jbGFzcyBTY3JhbWJsZWRQdHIgewordGVtcGxh
dGU8dHlwZW5hbWUgS2V5VHlwZSwgS2V5VHlwZSBrZXksIHR5cGVuYW1lIFQsIHR5cGVuYW1lID0g
c3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX3BvaW50ZXI8VD46OnZhbHVlPj4KK2NsYXNzIFBvaXNv
bmVkSW1wbCB7CiBwdWJsaWM6Ci0gICAgU2NyYW1ibGVkUHRyKCkgeyB9CisgICAgUG9pc29uZWRJ
bXBsKCkgeyB9CiAKLSAgICBleHBsaWNpdCBTY3JhbWJsZWRQdHIoVCBwdHIpCi0gICAgICAgIDog
bV9zY3JhbWJsZWRCaXRzKHNjcmFtYmxlKHB0cikpCisgICAgZXhwbGljaXQgUG9pc29uZWRJbXBs
KFQgcHRyKQorICAgICAgICA6IG1fcG9pc29uZWRCaXRzKHBvaXNvbihwdHIpKQogICAgIHsKLSAg
ICAgICAgQVNTRVJUKHB0ciAmJiBtX3NjcmFtYmxlZEJpdHMpOworICAgICAgICBBU1NFUlQocHRy
ICYmIG1fcG9pc29uZWRCaXRzKTsKICAgICB9CiAKLSAgICBTY3JhbWJsZWRQdHIoY29uc3QgU2Ny
YW1ibGVkUHRyJikgPSBkZWZhdWx0OworICAgIFBvaXNvbmVkSW1wbChjb25zdCBQb2lzb25lZElt
cGwmKSA9IGRlZmF1bHQ7CiAKLSAgICBleHBsaWNpdCBTY3JhbWJsZWRQdHIoU2NyYW1ibGVkUHRy
Qml0cyBzY3JhbWJsZWRCaXRzKQotICAgICAgICA6IG1fc2NyYW1ibGVkQml0cyhzY3JhbWJsZWRC
aXRzKQorICAgIGV4cGxpY2l0IFBvaXNvbmVkSW1wbChQb2lzb25lZEJpdHMgcG9pc29uZWRCaXRz
KQorICAgICAgICA6IG1fcG9pc29uZWRCaXRzKHBvaXNvbmVkQml0cykKICAgICB7Ci0gICAgICAg
IEFTU0VSVChtX3NjcmFtYmxlZEJpdHMpOworICAgICAgICBBU1NFUlQobV9wb2lzb25lZEJpdHMp
OwogICAgIH0KIAotI2lmIEVOQUJMRShTQ1JBTUJMRURfUFRSX0FTU0VSVFMpCisjaWYgRU5BQkxF
KFBPSVNPTl9BU1NFUlRTKQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSB2b2lkKj4KLSAgICBz
dGF0aWMgYm9vbCBpc1NjcmFtYmxlZChVIHZhbHVlKSB7IHJldHVybiAhdmFsdWUgfHwgKHJlaW50
ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih2YWx1ZSkgJiAweGZmZmYwMDAwMDAwMDAwMDApOyB9Cisg
ICAgc3RhdGljIGJvb2wgaXNQb2lzb25lZChVIHZhbHVlKSB7IHJldHVybiAhdmFsdWUgfHwgKHJl
aW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih2YWx1ZSkgJiAweGZmZmYwMDAwMDAwMDAwMDApOyB9
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IHZvaWQqPgotICAgIHN0YXRpYyB2b2lkIGFzc2Vy
dElzU2NyYW1ibGVkKFUgdmFsdWUpIHsgUkVMRUFTRV9BU1NFUlQoaXNTY3JhbWJsZWQodmFsdWUp
KTsgfQorICAgIHN0YXRpYyB2b2lkIGFzc2VydElzUG9pc29uZWQoVSB2YWx1ZSkgeyBSRUxFQVNF
X0FTU0VSVChpc1BvaXNvbmVkKHZhbHVlKSk7IH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0g
dm9pZCo+Ci0gICAgc3RhdGljIHZvaWQgYXNzZXJ0SXNOb3RTY3JhbWJsZWQoVSB2YWx1ZSkgeyBS
RUxFQVNFX0FTU0VSVCghaXNTY3JhbWJsZWQodmFsdWUpKTsgfQorICAgIHN0YXRpYyB2b2lkIGFz
c2VydElzTm90UG9pc29uZWQoVSB2YWx1ZSkgeyBSRUxFQVNFX0FTU0VSVCghaXNQb2lzb25lZCh2
YWx1ZSkpOyB9CiAjZWxzZQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSB2b2lkKj4gc3RhdGlj
IHZvaWQgYXNzZXJ0SXNTY3JhbWJsZWQoVSkgeyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9
IHZvaWQqPiBzdGF0aWMgdm9pZCBhc3NlcnRJc05vdFNjcmFtYmxlZChVKSB7IH0KKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBVID0gdm9pZCo+IHN0YXRpYyB2b2lkIGFzc2VydElzUG9pc29uZWQoVSkg
eyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IHZvaWQqPiBzdGF0aWMgdm9pZCBhc3NlcnRJ
c05vdFBvaXNvbmVkKFUpIHsgfQogI2VuZGlmCi0gICAgdm9pZCBhc3NlcnRJc1NjcmFtYmxlZCgp
IGNvbnN0IHsgYXNzZXJ0SXNTY3JhbWJsZWQobV9zY3JhbWJsZWRCaXRzKTsgfQotICAgIHZvaWQg
YXNzZXJ0SXNOb3RTY3JhbWJsZWQoKSBjb25zdCB7IGFzc2VydElzTm90U2NyYW1ibGVkKG1fc2Ny
YW1ibGVkQml0cyk7IH0KKyAgICB2b2lkIGFzc2VydElzUG9pc29uZWQoKSBjb25zdCB7IGFzc2Vy
dElzUG9pc29uZWQobV9wb2lzb25lZEJpdHMpOyB9CisgICAgdm9pZCBhc3NlcnRJc05vdFBvaXNv
bmVkKCkgY29uc3QgeyBhc3NlcnRJc05vdFBvaXNvbmVkKG1fcG9pc29uZWRCaXRzKTsgfQogCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQ+Ci0gICAgVSBkZXNjcmFtYmxlZCgpIGNvbnN0IHsg
cmV0dXJuIGRlc2NyYW1ibGU8VT4obV9zY3JhbWJsZWRCaXRzKTsgfQorICAgIFUgdW5wb2lzb25l
ZCgpIGNvbnN0IHsgcmV0dXJuIHVucG9pc29uPFU+KG1fcG9pc29uZWRCaXRzKTsgfQogCi0gICAg
QUxXQVlTX0lOTElORSBUIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBkZXNjcmFtYmxlPFQ+
KG1fc2NyYW1ibGVkQml0cyk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIFQgb3BlcmF0b3ItPigpIGNv
bnN0IHsgcmV0dXJuIHVucG9pc29uPFQ+KG1fcG9pc29uZWRCaXRzKTsgfQogCi0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgVSA9IFNjcmFtYmxlZFB0ckJpdHM+Ci0gICAgVSBiaXRzKCkgY29uc3QgeyBy
ZXR1cm4gYml0d2lzZV9jYXN0PFU+KG1fc2NyYW1ibGVkQml0cyk7IH0KKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBVID0gUG9pc29uZWRCaXRzPgorICAgIFUgYml0cygpIGNvbnN0IHsgcmV0dXJuIGJp
dHdpc2VfY2FzdDxVPihtX3BvaXNvbmVkQml0cyk7IH0KIAotICAgIGJvb2wgb3BlcmF0b3IhKCkg
Y29uc3QgeyByZXR1cm4gIW1fc2NyYW1ibGVkQml0czsgfQotICAgIGV4cGxpY2l0IG9wZXJhdG9y
IGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1fc2NyYW1ibGVkQml0czsgfQorICAgIGJvb2wgb3Bl
cmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fcG9pc29uZWRCaXRzOyB9CisgICAgZXhwbGljaXQg
b3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9wb2lzb25lZEJpdHM7IH0KIAotICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBTY3JhbWJsZWRQdHImIGIpIGNvbnN0CisgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFBvaXNvbmVkSW1wbCYgYikgY29uc3QKICAgICB7Ci0gICAgICAgIHJl
dHVybiBtX3NjcmFtYmxlZEJpdHMgPT0gYi5tX3NjcmFtYmxlZEJpdHM7CisgICAgICAgIHJldHVy
biBtX3BvaXNvbmVkQml0cyA9PSBiLm1fcG9pc29uZWRCaXRzOwogICAgIH0KIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFB0clR5cGUgPSB2b2lkKiwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVu
YWJsZV9pZjxzdGQ6OmlzX3BvaW50ZXI8UHRyVHlwZT46OnZhbHVlPjo6dHlwZT4KICAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgUHRyVHlwZSBiKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGRlc2Ny
YW1ibGVkPFB0clR5cGU+KCkgPT0gYjsKKyAgICAgICAgcmV0dXJuIHVucG9pc29uZWQ8UHRyVHlw
ZT4oKSA9PSBiOwogICAgIH0KIAotICAgIFNjcmFtYmxlZFB0ciYgb3BlcmF0b3I9KFQgcHRyKQor
ICAgIFBvaXNvbmVkSW1wbCYgb3BlcmF0b3I9KFQgcHRyKQogICAgIHsKLSAgICAgICAgbV9zY3Jh
bWJsZWRCaXRzID0gcHRyID8gc2NyYW1ibGUocHRyKSA6IDA7CisgICAgICAgIG1fcG9pc29uZWRC
aXRzID0gcG9pc29uKHB0cik7CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9Ci0gICAgU2Ny
YW1ibGVkUHRyJiBvcGVyYXRvcj0oY29uc3QgU2NyYW1ibGVkUHRyJikgPSBkZWZhdWx0OworICAg
IFBvaXNvbmVkSW1wbCYgb3BlcmF0b3I9KGNvbnN0IFBvaXNvbmVkSW1wbCYpID0gZGVmYXVsdDsK
IAogcHJpdmF0ZToKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+
Ci0gICAgQUxXQVlTX0lOTElORSBzdGF0aWMgU2NyYW1ibGVkUHRyQml0cyBzY3JhbWJsZShVIHB0
cikgeyByZXR1cm4gYml0d2lzZV9jYXN0PFNjcmFtYmxlZFB0ckJpdHM+KHB0cikgXiBrZXk7IH0K
KyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBQb2lzb25lZEJpdHMgcG9pc29uKFUgcHRyKSB7IHJl
dHVybiBwdHIgPyBiaXR3aXNlX2Nhc3Q8UG9pc29uZWRCaXRzPihwdHIpIF4ga2V5IDogMDsgfQog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgQUxXQVlTX0lOTElORSBzdGF0aWMgVSBkZXNj
cmFtYmxlKFNjcmFtYmxlZFB0ckJpdHMgc2NyYW1ibGVkQml0cykgeyByZXR1cm4gYml0d2lzZV9j
YXN0PFU+KHNjcmFtYmxlZEJpdHMgXiBrZXkpOyB9CisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMg
VSB1bnBvaXNvbihQb2lzb25lZEJpdHMgcG9pc29uZWRCaXRzKSB7IHJldHVybiBwb2lzb25lZEJp
dHMgPyBiaXR3aXNlX2Nhc3Q8VT4ocG9pc29uZWRCaXRzIF4ga2V5KSA6IGJpdHdpc2VfY2FzdDxV
PigwbGwpOyB9CiAjZWxzZQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgQUxXQVlTX0lO
TElORSBzdGF0aWMgU2NyYW1ibGVkUHRyQml0cyBzY3JhbWJsZShVIHB0cikgeyByZXR1cm4gYml0
d2lzZV9jYXN0PFNjcmFtYmxlZFB0ckJpdHM+KHB0cik7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHN0
YXRpYyBQb2lzb25lZEJpdHMgcG9pc29uKFUgcHRyKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8UG9p
c29uZWRCaXRzPihwdHIpOyB9CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICBBTFdBWVNf
SU5MSU5FIHN0YXRpYyBVIGRlc2NyYW1ibGUoU2NyYW1ibGVkUHRyQml0cyBzY3JhbWJsZWRCaXRz
KSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8VT4oc2NyYW1ibGVkQml0cyk7IH0KKyAgICBBTFdBWVNf
SU5MSU5FIHN0YXRpYyBVIHVucG9pc29uKFBvaXNvbmVkQml0cyBwb2lzb25lZEJpdHMpIHsgcmV0
dXJuIGJpdHdpc2VfY2FzdDxVPihwb2lzb25lZEJpdHMpOyB9CiAjZW5kaWYKIAotICAgIFNjcmFt
YmxlZFB0ckJpdHMgbV9zY3JhbWJsZWRCaXRzIHsgMCB9OworICAgIFBvaXNvbmVkQml0cyBtX3Bv
aXNvbmVkQml0cyB7IDAgfTsKIH07CiAKLXZvaWQgaW5pdGlhbGl6ZVNjcmFtYmxlZFB0cigpOwot
V1RGX0VYUE9SVF9QUklWQVRFIHVpbnRwdHJfdCBtYWtlU2NyYW1ibGVkUHRyS2V5KCk7Cit0ZW1w
bGF0ZTx1aW50cHRyX3QmIGtleSwgdHlwZW5hbWUgVD4KK3VzaW5nIFBvaXNvbmVkID0gUG9pc29u
ZWRJbXBsPGNvbnN0IHVpbnRwdHJfdCYsIGtleSwgVD47CisKKyNpZiBVU0UoSlNWQUxVRTY0KQor
dGVtcGxhdGU8dWludDMyX3Qga2V5LCB0eXBlbmFtZSBUPgordXNpbmcgSW50MzJQb2lzb25lZCA9
IFBvaXNvbmVkSW1wbDx1aW50cHRyX3QsIHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oa2V5KSA8PCAz
MiwgVD47CisjZWxzZQordGVtcGxhdGU8dWludDMyX3QsIHR5cGVuYW1lIFQ+Cit1c2luZyBJbnQz
MlBvaXNvbmVkID0gUG9pc29uZWRJbXBsPHVpbnRwdHJfdCwgMCwgVD47CisjZW5kaWYKKworV1RG
X0VYUE9SVF9QUklWQVRFIHVpbnRwdHJfdCBtYWtlUG9pc29uKCk7CiAKIH0gLy8gbmFtZXNwYWNl
IFdURgogCi11c2luZyBXVEY6OlNjcmFtYmxlZFB0cjsKLXVzaW5nIFdURjo6U2NyYW1ibGVkUHRy
Qml0czsKLXVzaW5nIFdURjo6bWFrZVNjcmFtYmxlZFB0cktleTsKK3VzaW5nIFdURjo6SW50MzJQ
b2lzb25lZDsKK3VzaW5nIFdURjo6UG9pc29uZWQ7Cit1c2luZyBXVEY6OlBvaXNvbmVkQml0czsK
K3VzaW5nIFdURjo6bWFrZVBvaXNvbjsKIApJbmRleDogU291cmNlL1dURi93dGYvU2NyYW1ibGVk
UHRyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9TY3JhbWJsZWRQdHIuY3BwCShy
ZXZpc2lvbiAyMjU2MTMpCisrKyBTb3VyY2UvV1RGL3d0Zi9TY3JhbWJsZWRQdHIuY3BwCShub25l
eGlzdGVudCkKQEAgLTEsNDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTY3JhbWJsZWRQ
dHIuaCIKLQotI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5oPgot
Ci1uYW1lc3BhY2UgV1RGIHsKLQotdWludHB0cl90IG1ha2VTY3JhbWJsZWRQdHJLZXkoKQotewot
ICAgIHVpbnRwdHJfdCBrZXkgPSBjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpOwotI2lm
IFVTRShKU1ZBTFVFNjQpICYmICFPUyhXSU5ET1dTKQotICAgIGtleSA9IChrZXkgPDwgMzIpIF4g
KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIoKSkg
PDwgMyk7Ci0gICAgLy8gRW5zdXJlIHRoYXQgdGhlIHNjcmFtYmxlZCBiaXRzIChwb2ludGVyIF4g
a2V5KSBkbyBub3QgbWFrZSBhIHZhbGlkIHBvaW50ZXIgYW5kCi0gICAgLy8gY2Fubm90IGJlIDAu
IFdlIGVuc3VyZSB0aGF0IGl0IGlzIHplcm8gc28gdGhhdCB0aGUgc2NyYW1ibGVkIGJpdHMgY2Fu
IGFsc28gYmUKLSAgICAvLyB1c2VkIGZvciBhIG5vdG1hbCB6ZXJvIGNoZWNrIHdpdGhvdXQgbmVl
ZGluZyB0byBkZXNjcmFtYmxlIGZpcnN0LgotICAgIGtleSB8PSAoc3RhdGljX2Nhc3Q8dWludHB0
cl90PigweDEpIDw8IDYzKTsKLSNlbHNlCi0gICAga2V5ID0gMDsgLy8gU2NyYW1ibGluZyBpcyBu
b3Qgc3VwcG9ydGVkIG9uIDMyLWJpdCBvciBub24tZGFyd2luIHBsYXRmb3JtcyB5ZXQuCi0jZW5k
aWYKLSAgICByZXR1cm4ga2V5OwotfQotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQpJbmRleDogU291
cmNlL1dURi93dGYvU2NyYW1ibGVkUHRyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYv
U2NyYW1ibGVkUHRyLmgJKHJldmlzaW9uIDIyNTYxMykKKysrIFNvdXJjZS9XVEYvd3RmL1NjcmFt
YmxlZFB0ci5oCShub25leGlzdGVudCkKQEAgLTEsMTI5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUg
PHd0Zi9Bc3NlcnRpb25zLmg+Ci0KLSNkZWZpbmUgRU5BQkxFX1NDUkFNQkxFRF9QVFJfQVNTRVJU
UyAwCi0KLS8vIE5vdCBjdXJyZW50bHkgc3VwcG9ydGVkIGZvciAzMi1iaXQgb3IgT1MoV0lORE9X
UykgYnVpbGRzIChiZWNhdXNlIG9mIG1pc3NpbmcgbGxpbnQgc3VwcG9ydCkuCi0vLyBNYWtlIHN1
cmUgaXQncyBkaXNhYmxlZC4KLSNpZiBVU0UoSlNWQUxVRTMyXzY0KSB8fCBPUyhXSU5ET1dTKQot
I3VuZGVmIEVOQUJMRV9TQ1JBTUJMRURfUFRSX0FTU0VSVFMKLSNkZWZpbmUgRU5BQkxFX1NDUkFN
QkxFRF9QVFJfQVNTRVJUUyAwCi0jZW5kaWYKLQotbmFtZXNwYWNlIFdURiB7Ci0KLXVzaW5nIFNj
cmFtYmxlZFB0ckJpdHMgPSB1aW50cHRyX3Q7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHVpbnRw
dHJfdCYga2V5LCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19wb2ludGVyPFQ+
Ojp2YWx1ZT4+Ci1jbGFzcyBTY3JhbWJsZWRQdHIgewotcHVibGljOgotICAgIFNjcmFtYmxlZFB0
cigpIHsgfQotCi0gICAgZXhwbGljaXQgU2NyYW1ibGVkUHRyKFQgcHRyKQotICAgICAgICA6IG1f
c2NyYW1ibGVkQml0cyhzY3JhbWJsZShwdHIpKQotICAgIHsKLSAgICAgICAgQVNTRVJUKHB0ciAm
JiBtX3NjcmFtYmxlZEJpdHMpOwotICAgIH0KLQotICAgIFNjcmFtYmxlZFB0cihjb25zdCBTY3Jh
bWJsZWRQdHImKSA9IGRlZmF1bHQ7Ci0KLSAgICBleHBsaWNpdCBTY3JhbWJsZWRQdHIoU2NyYW1i
bGVkUHRyQml0cyBzY3JhbWJsZWRCaXRzKQotICAgICAgICA6IG1fc2NyYW1ibGVkQml0cyhzY3Jh
bWJsZWRCaXRzKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fc2NyYW1ibGVkQml0cyk7Ci0gICAg
fQotCi0jaWYgRU5BQkxFKFNDUkFNQkxFRF9QVFJfQVNTRVJUUykKLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBVID0gdm9pZCo+Ci0gICAgc3RhdGljIGJvb2wgaXNTY3JhbWJsZWQoVSB2YWx1ZSkgeyBy
ZXR1cm4gIXZhbHVlIHx8IChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odmFsdWUpICYgMHhm
ZmZmMDAwMDAwMDAwMDAwKTsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSB2b2lkKj4KLSAg
ICBzdGF0aWMgdm9pZCBhc3NlcnRJc1NjcmFtYmxlZChVIHZhbHVlKSB7IFJFTEVBU0VfQVNTRVJU
KGlzU2NyYW1ibGVkKHZhbHVlKSk7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gdm9pZCo+
Ci0gICAgc3RhdGljIHZvaWQgYXNzZXJ0SXNOb3RTY3JhbWJsZWQoVSB2YWx1ZSkgeyBSRUxFQVNF
X0FTU0VSVCghaXNTY3JhbWJsZWQodmFsdWUpKTsgfQotI2Vsc2UKLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBVID0gdm9pZCo+IHN0YXRpYyB2b2lkIGFzc2VydElzU2NyYW1ibGVkKFUpIHsgfQotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFUgPSB2b2lkKj4gc3RhdGljIHZvaWQgYXNzZXJ0SXNOb3RTY3Jh
bWJsZWQoVSkgeyB9Ci0jZW5kaWYKLSAgICB2b2lkIGFzc2VydElzU2NyYW1ibGVkKCkgY29uc3Qg
eyBhc3NlcnRJc1NjcmFtYmxlZChtX3NjcmFtYmxlZEJpdHMpOyB9Ci0gICAgdm9pZCBhc3NlcnRJ
c05vdFNjcmFtYmxlZCgpIGNvbnN0IHsgYXNzZXJ0SXNOb3RTY3JhbWJsZWQobV9zY3JhbWJsZWRC
aXRzKTsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQ+Ci0gICAgVSBkZXNjcmFtYmxl
ZCgpIGNvbnN0IHsgcmV0dXJuIGRlc2NyYW1ibGU8VT4obV9zY3JhbWJsZWRCaXRzKTsgfQotCi0g
ICAgQUxXQVlTX0lOTElORSBUIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBkZXNjcmFtYmxl
PFQ+KG1fc2NyYW1ibGVkQml0cyk7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBTY3Jh
bWJsZWRQdHJCaXRzPgotICAgIFUgYml0cygpIGNvbnN0IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxV
PihtX3NjcmFtYmxlZEJpdHMpOyB9Ci0KLSAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0
dXJuICFtX3NjcmFtYmxlZEJpdHM7IH0KLSAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29u
c3QgeyByZXR1cm4gISFtX3NjcmFtYmxlZEJpdHM7IH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBTY3JhbWJsZWRQdHImIGIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9zY3Jh
bWJsZWRCaXRzID09IGIubV9zY3JhbWJsZWRCaXRzOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFB0clR5cGUgPSB2b2lkKiwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9p
ZjxzdGQ6OmlzX3BvaW50ZXI8UHRyVHlwZT46OnZhbHVlPjo6dHlwZT4KLSAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgUHRyVHlwZSBiKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGRlc2NyYW1ibGVk
PFB0clR5cGU+KCkgPT0gYjsKLSAgICB9Ci0KLSAgICBTY3JhbWJsZWRQdHImIG9wZXJhdG9yPShU
IHB0cikKLSAgICB7Ci0gICAgICAgIG1fc2NyYW1ibGVkQml0cyA9IHB0ciA/IHNjcmFtYmxlKHB0
cikgOiAwOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotICAgIFNjcmFtYmxlZFB0ciYg
b3BlcmF0b3I9KGNvbnN0IFNjcmFtYmxlZFB0ciYpID0gZGVmYXVsdDsKLQotcHJpdmF0ZToKLSNp
ZiBVU0UoSlNWQUxVRTY0KQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgQUxXQVlTX0lO
TElORSBzdGF0aWMgU2NyYW1ibGVkUHRyQml0cyBzY3JhbWJsZShVIHB0cikgeyByZXR1cm4gYml0
d2lzZV9jYXN0PFNjcmFtYmxlZFB0ckJpdHM+KHB0cikgXiBrZXk7IH0KLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBVPgotICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFUgZGVzY3JhbWJsZShTY3JhbWJs
ZWRQdHJCaXRzIHNjcmFtYmxlZEJpdHMpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxVPihzY3JhbWJs
ZWRCaXRzIF4ga2V5KTsgfQotI2Vsc2UKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgIEFM
V0FZU19JTkxJTkUgc3RhdGljIFNjcmFtYmxlZFB0ckJpdHMgc2NyYW1ibGUoVSBwdHIpIHsgcmV0
dXJuIGJpdHdpc2VfY2FzdDxTY3JhbWJsZWRQdHJCaXRzPihwdHIpOyB9Ci0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgVT4KLSAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBVIGRlc2NyYW1ibGUoU2NyYW1i
bGVkUHRyQml0cyBzY3JhbWJsZWRCaXRzKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8VT4oc2NyYW1i
bGVkQml0cyk7IH0KLSNlbmRpZgotCi0gICAgU2NyYW1ibGVkUHRyQml0cyBtX3NjcmFtYmxlZEJp
dHMgeyAwIH07Ci19OwotCi12b2lkIGluaXRpYWxpemVTY3JhbWJsZWRQdHIoKTsKLVdURl9FWFBP
UlRfUFJJVkFURSB1aW50cHRyX3QgbWFrZVNjcmFtYmxlZFB0cktleSgpOwotCi19IC8vIG5hbWVz
cGFjZSBXVEYKLQotdXNpbmcgV1RGOjpTY3JhbWJsZWRQdHI7Ci11c2luZyBXVEY6OlNjcmFtYmxl
ZFB0ckJpdHM7Ci11c2luZyBXVEY6Om1ha2VTY3JhbWJsZWRQdHJLZXk7Ci0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328701</attachid>
            <date>2017-12-07 10:11:20 -0800</date>
            <delta_ts>2017-12-07 10:17:36 -0800</delta_ts>
            <desc>patch for re-landing.</desc>
            <filename>bug-180514b.patch</filename>
            <type>text/plain</type>
            <size>77745</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjI1NjMwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY5IEBA
CisyMDE3LTEyLTA3ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBb
UmUtbGFuZGluZyByMjI1NjIwXSBSZWZhY3RvcmluZzogUmVuYW1lIFNjcmFtYmxlZFB0ciB0byBQ
b2lzb25lZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4MDUxNAorCisgICAgICAgIFByZXZpb3VzbHkgcmV2aWV3ZWQgYnkgU2FhbSBCYXJhdGkuCisK
KyAgICAgICAgUmUtbGFuZGluZyByMjI1NjIwIHdpdGggc3BlY3VsYXRpdmUgYnVpbGQgZml4IGZv
ciBHQ0MgNy4KKworICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0Lmg6CisgICAgICAgICog
QVBJL0pTT2JqZWN0UmVmLmNwcDoKKyAgICAgICAgKGNsYXNzSW5mb1ByaXZhdGUpOgorICAgICAg
ICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
U291cmNlcy50eHQ6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5o
OgorICAgICAgICAoSlNDOjpGdW5jdGlvblB0cjo6RnVuY3Rpb25QdHIpOgorICAgICAgICAoSlND
OjpGdW5jdGlvblB0cjo6dmFsdWUgY29uc3QpOgorICAgICAgICAoSlNDOjpGdW5jdGlvblB0cjo6
ZXhlY3V0YWJsZUFkZHJlc3MgY29uc3QpOgorICAgICAgICAoSlNDOjpSZXR1cm5BZGRyZXNzUHRy
OjpSZXR1cm5BZGRyZXNzUHRyKToKKyAgICAgICAgKEpTQzo6UmV0dXJuQWRkcmVzc1B0cjo6dmFs
dWUgY29uc3QpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVQdHI6Ok1hY3JvQXNz
ZW1ibGVyQ29kZVB0cik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3Jl
YXRlRnJvbUV4ZWN1dGFibGVBZGRyZXNzKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJD
b2RlUHRyOjpwb2lzb25lZFB0ciBjb25zdCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
Q29kZVB0cjo6IGNvbnN0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpv
cGVyYXRvciEgY29uc3QpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVQdHI6Om9w
ZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmVt
cHR5VmFsdWUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmRlbGV0ZWRW
YWx1ZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6c2NyYW1ibGVkUHRy
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBiMy9CM0xvd2VyTWFjcm9zLmNwcDoKKyAgICAg
ICAgKiBiMy90ZXN0YjMuY3BwOgorICAgICAgICAoSlNDOjpCMzo6dGVzdEludGVycHJldGVyKToK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjaGVja0FycmF5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUNoZWNrU3ViQ2xhc3MpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlTmV3U3RyaW5nT2JqZWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaEludEp1bXApOgorICAgICAgICAqIGZ0bC9GVExMb3dl
ckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21w
aWxlTmV3U3RyaW5nT2JqZWN0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6Y29tcGlsZUNoZWNrU3ViQ2xhc3MpOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMu
aDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0QWxsb2NhdGVEZXN0cnVjdGli
bGVPYmplY3QpOgorICAgICAgICAqIGppdC9TcGVjaWFsaXplZFRodW5rSklULmg6CisgICAgICAg
IChKU0M6OlNwZWNpYWxpemVkVGh1bmtKSVQ6OmxvYWRBcmd1bWVudFdpdGhTcGVjaWZpY0NsYXNz
KToKKyAgICAgICAgKiBqaXQvVGh1bmtHZW5lcmF0b3JzLmNwcDoKKyAgICAgICAgKEpTQzo6dmly
dHVhbFRodW5rRm9yKToKKyAgICAgICAgKEpTQzo6Ym91bmRUaGlzTm9BcmdzRnVuY3Rpb25DYWxs
R2VuZXJhdG9yKToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAg
IChKU0M6OkxMSW50OjpoYW5kbGVIb3N0Q2FsbCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXRV
cENhbGwpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAg
ICAgICogcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6aW5p
dGlhbGl6ZVRocmVhZGluZyk6CisgICAgICAgICogcnVudGltZS9KU0NQb2lzb25lZFB0ci5jcHA6
IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1NjcmFtYmxlZFB0
ci5jcHAuCisgICAgICAgIChKU0M6OmluaXRpYWxpemVQb2lzb24pOgorICAgICAgICAoSlNDOjpp
bml0aWFsaXplU2NyYW1ibGVkUHRyS2V5cyk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9K
U0NQb2lzb25lZFB0ci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NTY3JhbWJsZWRQdHIuaC4KKyAgICAgICAgKiBydW50aW1lL0pTQ1NjcmFtYmxlZFB0ci5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogcnVudGltZS9KU0NTY3JhbWJsZWRQdHIuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBydW50aW1lL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0Lmg6CisgICAgICAgIChK
U0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0OjpjbGFzc0luZm8gY29uc3QpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU1NlZ21l
bnRlZFZhcmlhYmxlT2JqZWN0OjpjbGFzc0luZm8gY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUv
U3RydWN0dXJlLmg6CisgICAgICAgICogcnVudGltZS9WTS5oOgorCiAyMDE3LTEyLTA3ICBNaWNo
YWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmll
d2VkLCByb2xsaW5nIG91dCByMjI1NjIwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU291
cmNlcy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0
CShyZXZpc2lvbiAyMjU2MzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTc3Miw3ICs3NzIsNyBAQCBydW50aW1lL0pTQXN5bmNGdW5jdGlv
bi5jcHAKIHJ1bnRpbWUvSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uLmNwcAogcnVudGltZS9KU0Jv
dW5kRnVuY3Rpb24uY3BwCiBydW50aW1lL0pTQ0pTVmFsdWUuY3BwCi1ydW50aW1lL0pTQ1NjcmFt
YmxlZFB0ci5jcHAKK3J1bnRpbWUvSlNDUG9pc29uZWRQdHIuY3BwCiBydW50aW1lL0pTQ2FsbGVl
LmNwcAogcnVudGltZS9KU0NlbGwuY3BwCiBydW50aW1lL0pTQ3VzdG9tR2V0dGVyU2V0dGVyRnVu
Y3Rpb24uY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmpl
Y3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tP
YmplY3QuaAkocmV2aXNpb24gMjI1NjMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0NhbGxiYWNrT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICNpZm5k
ZWYgSlNDYWxsYmFja09iamVjdF9oCiAjZGVmaW5lIEpTQ2FsbGJhY2tPYmplY3RfaAogCi0jaW5j
bHVkZSAiSlNDU2NyYW1ibGVkUHRyLmgiCisjaW5jbHVkZSAiSlNDUG9pc29uZWRQdHIuaCIKICNp
bmNsdWRlICJKU09iamVjdFJlZi5oIgogI2luY2x1ZGUgIkpTVmFsdWVSZWYuaCIKICNpbmNsdWRl
ICJKU09iamVjdC5oIgpAQCAtMjM0LDcgKzIzNCw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIGNhbGxiYWNrR2V0dGVyKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEpTQ2FsbGJhY2tPYmplY3REYXRh
PiBtX2NhbGxiYWNrT2JqZWN0RGF0YTsKLSAgICBDbGFzc0luZm9TY3JhbWJsZWRQdHIgbV9jbGFz
c0luZm87CisgICAgUG9pc29uZWRDbGFzc0luZm9QdHIgbV9jbGFzc0luZm87CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RS
ZWYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RS
ZWYuY3BwCShyZXZpc2lvbiAyMjU2MzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
T2JqZWN0UmVmLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMxLDcgKzQzMSw3IEBAIHN0YXRpYyBj
b25zdCBDbGFzc0luZm8qIGNsYXNzSW5mb1ByaXZhdGUKICAgICBpZiAodm0uY3VycmVudGx5RGVz
dHJ1Y3RpbmdDYWxsYmFja09iamVjdCAhPSBqc09iamVjdCkKICAgICAgICAgcmV0dXJuIGpzT2Jq
ZWN0LT5jbGFzc0luZm8odm0pOwogCi0gICAgcmV0dXJuIHZtLmN1cnJlbnRseURlc3RydWN0aW5n
Q2FsbGJhY2tPYmplY3RDbGFzc0luZm8uZGVzY3JhbWJsZWQoKTsKKyAgICByZXR1cm4gdm0uY3Vy
cmVudGx5RGVzdHJ1Y3RpbmdDYWxsYmFja09iamVjdENsYXNzSW5mby51bnBvaXNvbmVkKCk7CiB9
CiAKIHZvaWQqIEpTT2JqZWN0R2V0UHJpdmF0ZShKU09iamVjdFJlZiBvYmplY3QpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjI1NjMwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTE3MjAsNyArMTcyMCw3IEBACiAJCUZFMUMwRkZEMUIxOTNFOTgwMEI1
M0ZDQSAvKiBFeGNlcHRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZFMUMwRkZDMUIxOTNFOTgwMEI1M0ZDQSAvKiBFeGNlcHRpb24uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTIwQ0U5RTE1RjA0
QTk1MDBERjM0MzAgLyogTExJbnRDTG9vcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkUyMENFOUMxNUYwNEE5NTAwREYzNDMwIC8qIExMSW50Q0xvb3Au
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTJB
ODc2MDFGMDIzODE2MDBFQjMxQjIgLyogTWluaW11bVJlc2VydmVkWm9uZVNpemUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMkE4NzVGMUYwMjM4MTYw
MEVCMzFCMiAvKiBNaW5pbXVtUmVzZXJ2ZWRab25lU2l6ZS5oICovOyB9OwotCQlGRTJCMEI2OTFG
RDIyN0UwMDA3NURBNUYgLyogSlNDU2NyYW1ibGVkUHRyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTJCMEI2NzFGRDBEMjk2MDA3NURBNUYgLyogSlND
U2NyYW1ibGVkUHRyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJRkUyQjBCNjkxRkQyMjdFMDAwNzVEQTVGIC8qIEpTQ1BvaXNvbmVkUHRyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTJCMEI2NzFGRDBE
Mjk2MDA3NURBNUYgLyogSlNDUG9pc29uZWRQdHIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTMwMjJEMzFFM0Q3M0E1MDBCQUM0OTMgLyogU2ln
aWxsQ3Jhc2hBbmFseXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkUzMDIyRDExRTNENzM5NjAwQkFDNDkzIC8qIFNpZ2lsbENyYXNoQW5hbHl6ZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTMw
MjJENzFFNDI4NTczMDBCQUM0OTMgLyogVk1JbnNwZWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzAyMkQ1MUU0Mjg1NjcwMEJBQzQ5MyAvKiBW
TUluc3BlY3Rvci5oICovOyB9OwogCQlGRTMxOEZFMDFDQUM5ODJGMDBERkNDNTQgLyogRUNNQVNj
cmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkUzMThGREUxQ0FDOEM1MzAwREZDQzU0IC8qIEVDTUFTY3JpcHRT
cGVjSW50ZXJuYWxGdW5jdGlvbnMuaCAqLzsgfTsKQEAgLTQ1OTgsOCArNDU5OCw4IEBACiAJCUZF
MjBDRTlCMTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENMb29wLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50Q0xvb3AuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRD
TG9vcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMjBDRTlDMTVGMDRBOTUw
MERGMzQzMCAvKiBMTEludENMb29wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IExMSW50Q0xvb3AuaDsgcGF0aCA9IGxsaW50L0xMSW50Q0xvb3AuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRkUyQTg3NUYxRjAyMzgxNjAwRUIzMUIyIC8qIE1pbmltdW1SZXNlcnZl
ZFpvbmVTaXplLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1pbmltdW1SZXNlcnZlZFpvbmVTaXplLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUZFMkIwQjY3MUZEMEQyOTYwMDc1REE1RiAvKiBK
U0NTY3JhbWJsZWRQdHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDU2Ny
YW1ibGVkUHRyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUZFMkIwQjY4MUZEMEQy
OTcwMDc1REE1RiAvKiBKU0NTY3JhbWJsZWRQdHIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNDU2NyYW1ibGVkUHRyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRkUyQjBCNjcxRkQwRDI5NjAwNzVEQTVGIC8qIEpTQ1BvaXNvbmVkUHRyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ1BvaXNvbmVkUHRyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMkIwQjY4MUZEMEQyOTcwMDc1REE1RiAvKiBKU0NQb2lz
b25lZFB0ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NQb2lz
b25lZFB0ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMkU2QTdBMUQ2RUE1
RkUwMDYwRjg5NiAvKiBUaHJvd1Njb3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFRocm93U2NvcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
RTMwMjJEMDFFM0Q3Mzk2MDBCQUM0OTMgLyogU2lnaWxsQ3Jhc2hBbmFseXplci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaWdpbGxDcmFzaEFuYWx5emVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUzMDIyRDExRTNENzM5NjAwQkFDNDkzIC8q
IFNpZ2lsbENyYXNoQW5hbHl6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U2lnaWxsQ3Jhc2hBbmFseXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjU0
Myw4ICs2NTQzLDggQEAKIAkJCQlGNjkyQTg4NzAyNTU1OTdEMDFGRjYwRjcgLyogSlNDSlNWYWx1
ZS5jcHAgKi8sCiAJCQkJMTRBQkIzNkUwOTlDMDc2NDAwRTJBMjRGIC8qIEpTQ0pTVmFsdWUuaCAq
LywKIAkJCQk4NjVBMzBGMDEzNTAwN0UxMDBDREI0OUUgLyogSlNDSlNWYWx1ZUlubGluZXMuaCAq
LywKLQkJCQlGRTJCMEI2ODFGRDBEMjk3MDA3NURBNUYgLyogSlNDU2NyYW1ibGVkUHRyLmNwcCAq
LywKLQkJCQlGRTJCMEI2NzFGRDBEMjk2MDA3NURBNUYgLyogSlNDU2NyYW1ibGVkUHRyLmggKi8s
CisJCQkJRkUyQjBCNjgxRkQwRDI5NzAwNzVEQTVGIC8qIEpTQ1BvaXNvbmVkUHRyLmNwcCAqLywK
KwkJCQlGRTJCMEI2NzFGRDBEMjk2MDA3NURBNUYgLyogSlNDUG9pc29uZWRQdHIuaCAqLywKIAkJ
CQk3MkFBRjdDQjFEMEQzMThCMDA1RTYwQkUgLyogSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlv
bi5jcHAgKi8sCiAJCQkJNzJBQUY3Q0MxRDBEMzE4QjAwNUU2MEJFIC8qIEpTQ3VzdG9tR2V0dGVy
U2V0dGVyRnVuY3Rpb24uaCAqLywKIAkJCQkwRjJCNjZCRDE3QjZCNUFCMDBBN0FFM0YgLyogSlNE
YXRhVmlldy5jcHAgKi8sCkBAIC04MTU1LDcgKzgxNTUsNyBAQAogCQkJCTBGRUM4NTJBMUJEQUNE
QUMwMDgwRkY3NCAvKiBCM1BoYXNlU2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMzczMDhE
MUMwQkQyOTEwMDA1MkJGQSAvKiBCM1BoaUNoaWxkcmVuLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkVDODUyQzFCREFDREFDMDA4MEZGNzQgLyogQjNQcm9jZWR1cmUuaCBpbiBIZWFkZXJzICovLAot
CQkJCUZFMkIwQjY5MUZEMjI3RTAwMDc1REE1RiAvKiBKU0NTY3JhbWJsZWRQdHIuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUZFMkIwQjY5MUZEMjI3RTAwMDc1REE1RiAvKiBKU0NQb2lzb25lZFB0ci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1MkQxQkRBQ0RBQzAwODBGRjc0IC8qIEIzUHJvY2Vk
dXJlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3MjVDQUExQzUwM0RFRDAwQUQ5NDNB
IC8qIEIzUHVyZUNTRS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDM0MjJBNjcxQzE2MjY3ODAwRTJF
Qjk4IC8qIEIzUmVkdWNlRG91YmxlVG9GbG9hdC5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmLmgJKHJldmlzaW9uIDIyNTYzMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2
LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRXhlY3V0YWJsZUFsbG9jYXRvci5oIgot
I2luY2x1ZGUgIkpTQ1NjcmFtYmxlZFB0ci5oIgorI2luY2x1ZGUgIkpTQ1BvaXNvbmVkUHRyLmgi
CiAjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4K
ICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC02Nyw3ICs2Nyw3IEBAIHB1YmxpYzoKICAgICBG
dW5jdGlvblB0cihyZXR1cm5UeXBlKCp2YWx1ZSkoKSkKICAgICAgICAgOiBtX3ZhbHVlKCh2b2lk
Kil2YWx1ZSkKICAgICB7Ci0gICAgICAgIE1hc21TY3JhbWJsZWRQdHI6OmFzc2VydElzTm90U2Ny
YW1ibGVkKG1fdmFsdWUpOworICAgICAgICBQb2lzb25lZE1hc21QdHI6OmFzc2VydElzTm90UG9p
c29uZWQobV92YWx1ZSk7CiAgICAgICAgIEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1
ZSk7CiAgICAgfQogCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICBGdW5jdGlvblB0cihy
ZXR1cm5UeXBlKCp2YWx1ZSkoYXJnVHlwZTEpKQogICAgICAgICA6IG1fdmFsdWUoKHZvaWQqKXZh
bHVlKQogICAgIHsKLSAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6YXNzZXJ0SXNOb3RTY3JhbWJs
ZWQobV92YWx1ZSk7CisgICAgICAgIFBvaXNvbmVkTWFzbVB0cjo6YXNzZXJ0SXNOb3RQb2lzb25l
ZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVlKTsK
ICAgICB9CiAKQEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogICAgIEZ1bmN0aW9uUHRyKHJldHVy
blR5cGUoKnZhbHVlKShhcmdUeXBlMSwgYXJnVHlwZTIpKQogICAgICAgICA6IG1fdmFsdWUoKHZv
aWQqKXZhbHVlKQogICAgIHsKLSAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6YXNzZXJ0SXNOb3RT
Y3JhbWJsZWQobV92YWx1ZSk7CisgICAgICAgIFBvaXNvbmVkTWFzbVB0cjo6YXNzZXJ0SXNOb3RQ
b2lzb25lZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3Zh
bHVlKTsKICAgICB9CiAKQEAgLTkxLDcgKzkxLDcgQEAgcHVibGljOgogICAgIEZ1bmN0aW9uUHRy
KHJldHVyblR5cGUoKnZhbHVlKShhcmdUeXBlMSwgYXJnVHlwZTIsIGFyZ1R5cGUzKSkKICAgICAg
ICAgOiBtX3ZhbHVlKCh2b2lkKil2YWx1ZSkKICAgICB7Ci0gICAgICAgIE1hc21TY3JhbWJsZWRQ
dHI6OmFzc2VydElzTm90U2NyYW1ibGVkKG1fdmFsdWUpOworICAgICAgICBQb2lzb25lZE1hc21Q
dHI6OmFzc2VydElzTm90UG9pc29uZWQobV92YWx1ZSk7CiAgICAgICAgIEFTU0VSVF9WQUxJRF9D
T0RFX1BPSU5URVIobV92YWx1ZSk7CiAgICAgfQogCkBAIC05OSw3ICs5OSw3IEBAIHB1YmxpYzoK
ICAgICBGdW5jdGlvblB0cihyZXR1cm5UeXBlKCp2YWx1ZSkoYXJnVHlwZTEsIGFyZ1R5cGUyLCBh
cmdUeXBlMywgYXJnVHlwZTQpKQogICAgICAgICA6IG1fdmFsdWUoKHZvaWQqKXZhbHVlKQogICAg
IHsKLSAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6YXNzZXJ0SXNOb3RTY3JhbWJsZWQobV92YWx1
ZSk7CisgICAgICAgIFBvaXNvbmVkTWFzbVB0cjo6YXNzZXJ0SXNOb3RQb2lzb25lZChtX3ZhbHVl
KTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CiAK
QEAgLTEwNyw3ICsxMDcsNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rpb25QdHIocmV0dXJuVHlwZSgq
dmFsdWUpKGFyZ1R5cGUxLCBhcmdUeXBlMiwgYXJnVHlwZTMsIGFyZ1R5cGU0LCBhcmdUeXBlNSkp
CiAgICAgICAgIDogbV92YWx1ZSgodm9pZCopdmFsdWUpCiAgICAgewotICAgICAgICBNYXNtU2Ny
YW1ibGVkUHRyOjphc3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsKKyAgICAgICAgUG9pc29u
ZWRNYXNtUHRyOjphc3NlcnRJc05vdFBvaXNvbmVkKG1fdmFsdWUpOwogICAgICAgICBBU1NFUlRf
VkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwogICAgIH0KIApAQCAtMTE1LDcgKzExNSw3IEBA
IHB1YmxpYzoKICAgICBGdW5jdGlvblB0cihyZXR1cm5UeXBlKCp2YWx1ZSkoYXJnVHlwZTEsIGFy
Z1R5cGUyLCBhcmdUeXBlMywgYXJnVHlwZTQsIGFyZ1R5cGU1LCBhcmdUeXBlNikpCiAgICAgICAg
IDogbV92YWx1ZSgodm9pZCopdmFsdWUpCiAgICAgewotICAgICAgICBNYXNtU2NyYW1ibGVkUHRy
Ojphc3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsKKyAgICAgICAgUG9pc29uZWRNYXNtUHRy
Ojphc3NlcnRJc05vdFBvaXNvbmVkKG1fdmFsdWUpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09E
RV9QT0lOVEVSKG1fdmFsdWUpOwogICAgIH0KIC8vIE1TVkMgZG9lc24ndCBzZWVtIHRvIHRyZWF0
IGZ1bmN0aW9ucyB3aXRoIGRpZmZlcmVudCBjYWxsaW5nIGNvbnZlbnRpb25zIGFzCkBAIC0xMjYs
NyArMTI2LDcgQEAgcHVibGljOgogICAgIEZ1bmN0aW9uUHRyKHJldHVyblR5cGUgKENERUNMICp2
YWx1ZSkoKSkKICAgICAgICAgOiBtX3ZhbHVlKCh2b2lkKil2YWx1ZSkKICAgICB7Ci0gICAgICAg
IE1hc21TY3JhbWJsZWRQdHI6OmFzc2VydElzTm90U2NyYW1ibGVkKG1fdmFsdWUpOworICAgICAg
ICBQb2lzb25lZE1hc21QdHI6OmFzc2VydElzTm90UG9pc29uZWQobV92YWx1ZSk7CiAgICAgICAg
IEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7CiAgICAgfQogCkBAIC0xMzQsNyAr
MTM0LDcgQEAgcHVibGljOgogICAgIEZ1bmN0aW9uUHRyKHJldHVyblR5cGUgKENERUNMICp2YWx1
ZSkoYXJnVHlwZTEpKQogICAgICAgICA6IG1fdmFsdWUoKHZvaWQqKXZhbHVlKQogICAgIHsKLSAg
ICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6YXNzZXJ0SXNOb3RTY3JhbWJsZWQobV92YWx1ZSk7Cisg
ICAgICAgIFBvaXNvbmVkTWFzbVB0cjo6YXNzZXJ0SXNOb3RQb2lzb25lZChtX3ZhbHVlKTsKICAg
ICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CiAKQEAgLTE0
Miw3ICsxNDIsNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rpb25QdHIocmV0dXJuVHlwZSAoQ0RFQ0wg
KnZhbHVlKShhcmdUeXBlMSwgYXJnVHlwZTIpKQogICAgICAgICA6IG1fdmFsdWUoKHZvaWQqKXZh
bHVlKQogICAgIHsKLSAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6YXNzZXJ0SXNOb3RTY3JhbWJs
ZWQobV92YWx1ZSk7CisgICAgICAgIFBvaXNvbmVkTWFzbVB0cjo6YXNzZXJ0SXNOb3RQb2lzb25l
ZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVlKTsK
ICAgICB9CiAKQEAgLTE1MCw3ICsxNTAsNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rpb25QdHIocmV0
dXJuVHlwZSAoQ0RFQ0wgKnZhbHVlKShhcmdUeXBlMSwgYXJnVHlwZTIsIGFyZ1R5cGUzKSkKICAg
ICAgICAgOiBtX3ZhbHVlKCh2b2lkKil2YWx1ZSkKICAgICB7Ci0gICAgICAgIE1hc21TY3JhbWJs
ZWRQdHI6OmFzc2VydElzTm90U2NyYW1ibGVkKG1fdmFsdWUpOworICAgICAgICBQb2lzb25lZE1h
c21QdHI6OmFzc2VydElzTm90UG9pc29uZWQobV92YWx1ZSk7CiAgICAgICAgIEFTU0VSVF9WQUxJ
RF9DT0RFX1BPSU5URVIobV92YWx1ZSk7CiAgICAgfQogCkBAIC0xNTgsNyArMTU4LDcgQEAgcHVi
bGljOgogICAgIEZ1bmN0aW9uUHRyKHJldHVyblR5cGUgKENERUNMICp2YWx1ZSkoYXJnVHlwZTEs
IGFyZ1R5cGUyLCBhcmdUeXBlMywgYXJnVHlwZTQpKQogICAgICAgICA6IG1fdmFsdWUoKHZvaWQq
KXZhbHVlKQogICAgIHsKLSAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6YXNzZXJ0SXNOb3RTY3Jh
bWJsZWQobV92YWx1ZSk7CisgICAgICAgIFBvaXNvbmVkTWFzbVB0cjo6YXNzZXJ0SXNOb3RQb2lz
b25lZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVl
KTsKICAgICB9CiAjZW5kaWYKQEAgLTE2OSw3ICsxNjksNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rp
b25QdHIocmV0dXJuVHlwZSAoRkFTVENBTEwgKnZhbHVlKSgpKQogICAgICAgICA6IG1fdmFsdWUo
KHZvaWQqKXZhbHVlKQogICAgIHsKLSAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6YXNzZXJ0SXNO
b3RTY3JhbWJsZWQobV92YWx1ZSk7CisgICAgICAgIFBvaXNvbmVkTWFzbVB0cjo6YXNzZXJ0SXNO
b3RQb2lzb25lZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUiht
X3ZhbHVlKTsKICAgICB9CiAKQEAgLTE3Nyw3ICsxNzcsNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rp
b25QdHIocmV0dXJuVHlwZSAoRkFTVENBTEwgKnZhbHVlKShhcmdUeXBlMSkpCiAgICAgICAgIDog
bV92YWx1ZSgodm9pZCopdmFsdWUpCiAgICAgewotICAgICAgICBNYXNtU2NyYW1ibGVkUHRyOjph
c3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsKKyAgICAgICAgUG9pc29uZWRNYXNtUHRyOjph
c3NlcnRJc05vdFBvaXNvbmVkKG1fdmFsdWUpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9Q
T0lOVEVSKG1fdmFsdWUpOwogICAgIH0KIApAQCAtMTg1LDcgKzE4NSw3IEBAIHB1YmxpYzoKICAg
ICBGdW5jdGlvblB0cihyZXR1cm5UeXBlIChGQVNUQ0FMTCAqdmFsdWUpKGFyZ1R5cGUxLCBhcmdU
eXBlMikpCiAgICAgICAgIDogbV92YWx1ZSgodm9pZCopdmFsdWUpCiAgICAgewotICAgICAgICBN
YXNtU2NyYW1ibGVkUHRyOjphc3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsKKyAgICAgICAg
UG9pc29uZWRNYXNtUHRyOjphc3NlcnRJc05vdFBvaXNvbmVkKG1fdmFsdWUpOwogICAgICAgICBB
U1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwogICAgIH0KIApAQCAtMTkzLDcgKzE5
Myw3IEBAIHB1YmxpYzoKICAgICBGdW5jdGlvblB0cihyZXR1cm5UeXBlIChGQVNUQ0FMTCAqdmFs
dWUpKGFyZ1R5cGUxLCBhcmdUeXBlMiwgYXJnVHlwZTMpKQogICAgICAgICA6IG1fdmFsdWUoKHZv
aWQqKXZhbHVlKQogICAgIHsKLSAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6YXNzZXJ0SXNOb3RT
Y3JhbWJsZWQobV92YWx1ZSk7CisgICAgICAgIFBvaXNvbmVkTWFzbVB0cjo6YXNzZXJ0SXNOb3RQ
b2lzb25lZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3Zh
bHVlKTsKICAgICB9CiAKQEAgLTIwMSw3ICsyMDEsNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rpb25Q
dHIocmV0dXJuVHlwZSAoRkFTVENBTEwgKnZhbHVlKShhcmdUeXBlMSwgYXJnVHlwZTIsIGFyZ1R5
cGUzLCBhcmdUeXBlNCkpCiAgICAgICAgIDogbV92YWx1ZSgodm9pZCopdmFsdWUpCiAgICAgewot
ICAgICAgICBNYXNtU2NyYW1ibGVkUHRyOjphc3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsK
KyAgICAgICAgUG9pc29uZWRNYXNtUHRyOjphc3NlcnRJc05vdFBvaXNvbmVkKG1fdmFsdWUpOwog
ICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwogICAgIH0KICNlbmRp
ZgpAQCAtMjEzLDcgKzIxMyw3IEBAIHB1YmxpYzoKICAgICAgICAgLy8gKEkgZ3Vlc3Mgb24gUlZU
QyBmdW5jdGlvbiBwb2ludGVycyBoYXZlIGEgZGlmZmVyZW50IGNvbnN0bmVzcyB0byBHQ0MvTVNW
Qz8pCiAgICAgICAgIDogbV92YWx1ZSgodm9pZCopdmFsdWUpCiAgICAgewotICAgICAgICBNYXNt
U2NyYW1ibGVkUHRyOjphc3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsKKyAgICAgICAgUG9p
c29uZWRNYXNtUHRyOjphc3NlcnRJc05vdFBvaXNvbmVkKG1fdmFsdWUpOwogICAgICAgICBBU1NF
UlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwogICAgIH0KIApAQCAtMjIxLDEyICsyMjEs
MTIgQEAgcHVibGljOgogCiAgICAgdm9pZCogdmFsdWUoKSBjb25zdAogICAgIHsKLSAgICAgICAg
TWFzbVNjcmFtYmxlZFB0cjo6YXNzZXJ0SXNOb3RTY3JhbWJsZWQobV92YWx1ZSk7CisgICAgICAg
IFBvaXNvbmVkTWFzbVB0cjo6YXNzZXJ0SXNOb3RQb2lzb25lZChtX3ZhbHVlKTsKICAgICAgICAg
cmV0dXJuIG1fdmFsdWU7CiAgICAgfQogICAgIHZvaWQqIGV4ZWN1dGFibGVBZGRyZXNzKCkgY29u
c3QKICAgICB7Ci0gICAgICAgIE1hc21TY3JhbWJsZWRQdHI6OmFzc2VydElzTm90U2NyYW1ibGVk
KG1fdmFsdWUpOworICAgICAgICBQb2lzb25lZE1hc21QdHI6OmFzc2VydElzTm90UG9pc29uZWQo
bV92YWx1ZSk7CiAgICAgICAgIHJldHVybiBtX3ZhbHVlOwogICAgIH0KIApAQCAtMjQ3LDIwICsy
NDcsMjAgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFJldHVybkFkZHJlc3NQdHIodm9pZCogdmFs
dWUpCiAgICAgICAgIDogbV92YWx1ZSh2YWx1ZSkKICAgICB7Ci0gICAgICAgIE1hc21TY3JhbWJs
ZWRQdHI6OmFzc2VydElzTm90U2NyYW1ibGVkKG1fdmFsdWUpOworICAgICAgICBQb2lzb25lZE1h
c21QdHI6OmFzc2VydElzTm90UG9pc29uZWQobV92YWx1ZSk7CiAgICAgICAgIEFTU0VSVF9WQUxJ
RF9DT0RFX1BPSU5URVIobV92YWx1ZSk7CiAgICAgfQogCiAgICAgZXhwbGljaXQgUmV0dXJuQWRk
cmVzc1B0cihGdW5jdGlvblB0ciBmdW5jdGlvbikKICAgICAgICAgOiBtX3ZhbHVlKGZ1bmN0aW9u
LnZhbHVlKCkpCiAgICAgewotICAgICAgICBNYXNtU2NyYW1ibGVkUHRyOjphc3NlcnRJc05vdFNj
cmFtYmxlZChtX3ZhbHVlKTsKKyAgICAgICAgUG9pc29uZWRNYXNtUHRyOjphc3NlcnRJc05vdFBv
aXNvbmVkKG1fdmFsdWUpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFs
dWUpOwogICAgIH0KIAogICAgIHZvaWQqIHZhbHVlKCkgY29uc3QKICAgICB7Ci0gICAgICAgIE1h
c21TY3JhbWJsZWRQdHI6OmFzc2VydElzTm90U2NyYW1ibGVkKG1fdmFsdWUpOworICAgICAgICBQ
b2lzb25lZE1hc21QdHI6OmFzc2VydElzTm90UG9pc29uZWQobV92YWx1ZSk7CiAgICAgICAgIHJl
dHVybiBtX3ZhbHVlOwogICAgIH0KICAgICAKQEAgLTI4OCw3ICsyODgsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIDogbV92YWx1ZSh2YWx1ZSkKICNlbmRpZgogICAgIHsKLSAgICAgICAgbV92YWx1ZS5h
c3NlcnRJc1NjcmFtYmxlZCgpOworICAgICAgICBtX3ZhbHVlLmFzc2VydElzUG9pc29uZWQoKTsK
ICAgICAgICAgQVNTRVJUKHZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRF
UihtX3ZhbHVlKTsKICAgICB9CkBAIC0yOTgsOCArMjk4LDggQEAgcHVibGljOgogICAgICAgICBB
U1NFUlQodmFsdWUpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKHZhbHVlKTsK
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHJlc3VsdDsKLSAgICAgICAgcmVzdWx0Lm1f
dmFsdWUgPSBNYXNtU2NyYW1ibGVkUHRyKHZhbHVlKTsKLSAgICAgICAgcmVzdWx0Lm1fdmFsdWUu
YXNzZXJ0SXNTY3JhbWJsZWQoKTsKKyAgICAgICAgcmVzdWx0Lm1fdmFsdWUgPSBQb2lzb25lZE1h
c21QdHIodmFsdWUpOworICAgICAgICByZXN1bHQubV92YWx1ZS5hc3NlcnRJc1BvaXNvbmVkKCk7
CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCkBAIC0zMDksNDIgKzMwOSw0MiBAQCBw
dWJsaWM6CiAgICAgICAgIDogbV92YWx1ZShyYS52YWx1ZSgpKQogICAgIHsKICAgICAgICAgQVNT
RVJUKHJhLnZhbHVlKCkpOwotICAgICAgICBtX3ZhbHVlLmFzc2VydElzU2NyYW1ibGVkKCk7Cisg
ICAgICAgIG1fdmFsdWUuYXNzZXJ0SXNQb2lzb25lZCgpOwogICAgICAgICBBU1NFUlRfVkFMSURf
Q09ERV9QT0lOVEVSKG1fdmFsdWUpOwogICAgIH0KIAotICAgIE1hc21TY3JhbWJsZWRQdHIgc2Ny
YW1ibGVkUHRyKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQorICAgIFBvaXNvbmVkTWFzbVB0
ciBwb2lzb25lZFB0cigpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQgPSB2b2lkKj4KICAgICBUIGV4ZWN1dGFibGVBZGRyZXNzKCkgY29uc3QKICAg
ICB7Ci0gICAgICAgIG1fdmFsdWUuYXNzZXJ0SXNTY3JhbWJsZWQoKTsKLSAgICAgICAgcmV0dXJu
IG1fdmFsdWUgPyBtX3ZhbHVlLmRlc2NyYW1ibGVkPFQ+KCkgOiBzdGF0aWNfY2FzdDxUPigwKTsK
KyAgICAgICAgbV92YWx1ZS5hc3NlcnRJc1BvaXNvbmVkKCk7CisgICAgICAgIHJldHVybiBtX3Zh
bHVlLnVucG9pc29uZWQ8VD4oKTsKICAgICB9CiAjaWYgQ1BVKEFSTV9USFVNQjIpCiAgICAgLy8g
VG8gdXNlIHRoaXMgcG9pbnRlciBhcyBhIGRhdGEgYWRkcmVzcyByZW1vdmUgdGhlIGRlY29yYXRp
b24uCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCA9IHZvaWQqPgogICAgIFQgZGF0YUxvY2F0aW9u
KCkgY29uc3QKICAgICB7Ci0gICAgICAgIG1fdmFsdWUuYXNzZXJ0SXNTY3JhbWJsZWQoKTsKKyAg
ICAgICAgbV92YWx1ZS5hc3NlcnRJc1BvaXNvbmVkKCk7CiAgICAgICAgIEFTU0VSVF9WQUxJRF9D
T0RFX1BPSU5URVIobV92YWx1ZSk7Ci0gICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8VD4obV92
YWx1ZSA/IG1fdmFsdWUuZGVzY3JhbWJsZWQ8Y2hhcio+KCkgLSAxIDogbnVsbHB0cik7CisgICAg
ICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8VD4obV92YWx1ZSA/IG1fdmFsdWUudW5wb2lzb25lZDxj
aGFyKj4oKSAtIDEgOiBudWxscHRyKTsKICAgICB9CiAjZWxzZQogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQgPSB2b2lkKj4KICAgICBUIGRhdGFMb2NhdGlvbigpIGNvbnN0CiAgICAgewotICAgICAg
ICBtX3ZhbHVlLmFzc2VydElzU2NyYW1ibGVkKCk7CisgICAgICAgIG1fdmFsdWUuYXNzZXJ0SXNQ
b2lzb25lZCgpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwot
ICAgICAgICByZXR1cm4gbV92YWx1ZSA/IG1fdmFsdWUuZGVzY3JhbWJsZWQ8VD4oKSA6IHN0YXRp
Y19jYXN0PFQ+KDApOworICAgICAgICByZXR1cm4gbV92YWx1ZS51bnBvaXNvbmVkPFQ+KCk7CiAg
ICAgfQogI2VuZGlmCiAKICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0CiAgICAgewotI2lmIEVO
QUJMRShTQ1JBTUJMRURfUFRSX0FTU0VSVFMpCisjaWYgRU5BQkxFKFBPSVNPTl9BU1NFUlRTKQog
ICAgICAgICBpZiAoIWlzRW1wdHlWYWx1ZSgpICYmICFpc0RlbGV0ZWRWYWx1ZSgpKQotICAgICAg
ICAgICAgbV92YWx1ZS5hc3NlcnRJc1NjcmFtYmxlZCgpOworICAgICAgICAgICAgbV92YWx1ZS5h
c3NlcnRJc1BvaXNvbmVkKCk7CiAjZW5kaWYKICAgICAgICAgcmV0dXJuICFtX3ZhbHVlOwogICAg
IH0KQEAgLTM1MiwxNyArMzUyLDE3IEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBvdGhlcikgY29uc3QKICAgICB7Ci0jaWYg
RU5BQkxFKFNDUkFNQkxFRF9QVFJfQVNTRVJUUykKKyNpZiBFTkFCTEUoUE9JU09OX0FTU0VSVFMp
CiAgICAgICAgIGlmICghaXNFbXB0eVZhbHVlKCkgJiYgIWlzRGVsZXRlZFZhbHVlKCkpCi0gICAg
ICAgICAgICBtX3ZhbHVlLmFzc2VydElzU2NyYW1ibGVkKCk7CisgICAgICAgICAgICBtX3ZhbHVl
LmFzc2VydElzUG9pc29uZWQoKTsKICAgICAgICAgaWYgKCFvdGhlci5pc0VtcHR5VmFsdWUoKSAm
JiAhb3RoZXIuaXNEZWxldGVkVmFsdWUoKSkKLSAgICAgICAgICAgIG90aGVyLm1fdmFsdWUuYXNz
ZXJ0SXNTY3JhbWJsZWQoKTsKKyAgICAgICAgICAgIG90aGVyLm1fdmFsdWUuYXNzZXJ0SXNQb2lz
b25lZCgpOwogI2VuZGlmCiAgICAgICAgIHJldHVybiBtX3ZhbHVlID09IG90aGVyLm1fdmFsdWU7
CiAgICAgfQogCiAgICAgLy8gRGlzYWxsb3cgYW55IGNhc3Rpbmcgb3BlcmF0aW9ucyAoZXhjZXB0
IGZvciBib29sZWFucykuIEluc3RlYWQsIHRoZSBjbGllbnQKLSAgICAvLyBzaG91bGQgYmUgYXNr
aW5nIGZvciBzY3JhbWJsZWRQdHIoKSBvciBleGVjdXRhYmxlQWRkcmVzcygpIGV4cGxpY2l0bHku
CisgICAgLy8gc2hvdWxkIGJlIGFza2luZyBmb3IgcG9pc29uZWRQdHIoKSBvciBleGVjdXRhYmxl
QWRkcmVzcygpIGV4cGxpY2l0bHkuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
PSBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6OmlzX3NhbWU8VCwgYm9vbD46OnZhbHVlPj4KICAgICBv
cGVyYXRvciBUKCkgPSBkZWxldGU7CiAKQEAgLTM4OSwxMCArMzg5LDEwIEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCk7CiAKIHByaXZhdGU6Ci0gICAgc3RhdGljIE1hc21T
Y3JhbWJsZWRQdHIgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIE1hc21TY3JhbWJsZWRQdHIoMSk7IH0K
LSAgICBzdGF0aWMgTWFzbVNjcmFtYmxlZFB0ciBkZWxldGVkVmFsdWUoKSB7IHJldHVybiBNYXNt
U2NyYW1ibGVkUHRyKDIpOyB9CisgICAgc3RhdGljIFBvaXNvbmVkTWFzbVB0ciBlbXB0eVZhbHVl
KCkgeyByZXR1cm4gUG9pc29uZWRNYXNtUHRyKDEpOyB9CisgICAgc3RhdGljIFBvaXNvbmVkTWFz
bVB0ciBkZWxldGVkVmFsdWUoKSB7IHJldHVybiBQb2lzb25lZE1hc21QdHIoMik7IH0KIAotICAg
IE1hc21TY3JhbWJsZWRQdHIgbV92YWx1ZTsKKyAgICBQb2lzb25lZE1hc21QdHIgbV92YWx1ZTsK
IH07CiAKIHN0cnVjdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHJIYXNoIHsKQEAgLTQ3OSw3ICs0Nzks
NyBAQCBwcml2YXRlOgogaW5saW5lIEZ1bmN0aW9uUHRyOjpGdW5jdGlvblB0cihNYWNyb0Fzc2Vt
YmxlckNvZGVQdHIgcHRyKQogICAgIDogbV92YWx1ZShwdHIuZXhlY3V0YWJsZUFkZHJlc3MoKSkK
IHsKLSAgICBNYXNtU2NyYW1ibGVkUHRyOjphc3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsK
KyAgICBQb2lzb25lZE1hc21QdHI6OmFzc2VydElzTm90UG9pc29uZWQobV92YWx1ZSk7CiAgICAg
QVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVlKTsKIH0KIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zLmNwcAkocmV2aXNpb24gMjI1NjMwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3MuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01MDUsMTIgKzUwNSwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgICAgICAgICBHUFJSZWcgaW5kZXggPSBwYXJhbXNbMF0uZ3ByKCk7
CiAgICAgICAgICAgICAgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaCA9IHBhcmFtcy5ncFNjcmF0
Y2goMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBHUFJSZWcgZGVzY3JhbWJsZXJLZXkgPSBw
YXJhbXMuZ3BTY3JhdGNoKDEpOworICAgICAgICAgICAgICAgICAgICAgICAgR1BSUmVnIHBvaXNv
blNjcmF0Y2ggPSBwYXJhbXMuZ3BTY3JhdGNoKDEpOwogCi0gICAgICAgICAgICAgICAgICAgICAg
ICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NChnX21hc21TY3JhbWJsZWRQdHJL
ZXkpLCBkZXNjcmFtYmxlcktleSk7CisgICAgICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NChnX21hc21Qb2lzb24pLCBwb2lzb25TY3JhdGNoKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cihqdW1wVGFibGUpLCBzY3JhdGNoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5s
b2FkNjQoQ0NhbGxIZWxwZXJzOjpCYXNlSW5kZXgoc2NyYXRjaCwgaW5kZXgsIENDYWxsSGVscGVy
czo6dGltZXNQdHIoKSksIHNjcmF0Y2gpOwotICAgICAgICAgICAgICAgICAgICAgICAgaml0Lnhv
cjY0KGRlc2NyYW1ibGVyS2V5LCBzY3JhdGNoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGpp
dC54b3I2NChwb2lzb25TY3JhdGNoLCBzY3JhdGNoKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IGppdC5qdW1wKHNjcmF0Y2gpOwogCiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGVzZSBs
YWJlbHMgYXJlIGd1YXJhbnRlZWQgdG8gYmUgcG9wdWxhdGVkIGJlZm9yZSBlaXRoZXIgbGF0ZSBw
YXRocyBvcgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAJKHJldmlzaW9uIDIy
NTYzMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzAzMCwxMiArMTMwMzAsMTIgQEAgdm9pZCB0ZXN0SW50ZXJwcmV0ZXIoKQogICAg
ICAgICAgICAgICAgIHBhcmFtcy5wcm9jKCkuYWRkRGF0YVNlY3Rpb24oc2l6ZW9mKE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cikgKiBsYWJlbHMuc2l6ZSgpKSk7CiAKICAgICAgICAgICAgIEdQUlJlZyBz
Y3JhdGNoID0gcGFyYW1zLmdwU2NyYXRjaCgwKTsKLSAgICAgICAgICAgIEdQUlJlZyBkZXNjcmFt
YmxlcktleSA9IHBhcmFtcy5ncFNjcmF0Y2goMSk7CisgICAgICAgICAgICBHUFJSZWcgcG9pc29u
U2NyYXRjaCA9IHBhcmFtcy5ncFNjcmF0Y2goMSk7CiAKICAgICAgICAgICAgIGppdC5tb3ZlKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihqdW1wVGFibGUpLCBzY3JhdGNoKTsKLSAgICAgICAg
ICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KGdfbWFzbVNjcmFtYmxlZFB0
cktleSksIGRlc2NyYW1ibGVyS2V5KTsKKyAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbTY0KGdfbWFzbVBvaXNvbiksIHBvaXNvblNjcmF0Y2gpOwogICAgICAgICAg
ICAgaml0LmxvYWQ2NChDQ2FsbEhlbHBlcnM6OkJhc2VJbmRleChzY3JhdGNoLCBwYXJhbXNbMF0u
Z3ByKCksIENDYWxsSGVscGVyczo6dGltZXNQdHIoKSksIHNjcmF0Y2gpOwotICAgICAgICAgICAg
aml0LnhvcjY0KGRlc2NyYW1ibGVyS2V5LCBzY3JhdGNoKTsKKyAgICAgICAgICAgIGppdC54b3I2
NChwb2lzb25TY3JhdGNoLCBzY3JhdGNoKTsKICAgICAgICAgICAgIGppdC5qdW1wKHNjcmF0Y2gp
OwogCiAgICAgICAgICAgICBqaXQuYWRkTGlua1Rhc2soCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMjI1NjMwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTg2OCw3ICs4NjgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjaGVja0Fy
cmF5KE5vZGUqIG5vCiAgICAgICAgIG1faml0LmJyYW5jaFB0cigKICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpOb3RFcXVhbCwKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KHRlbXAuZ3ByKCksIFN0cnVjdHVyZTo6Y2xhc3NJbmZvT2Zmc2V0KCkpLAotICAgICAgICAgICAg
VHJ1c3RlZEltbVB0cihDbGFzc0luZm9TY3JhbWJsZWRQdHIoZXhwZWN0ZWRDbGFzc0luZm8pLmJp
dHMoKSkpKTsKKyAgICAgICAgICAgIFRydXN0ZWRJbW1QdHIoUG9pc29uZWRDbGFzc0luZm9QdHIo
ZXhwZWN0ZWRDbGFzc0luZm8pLmJpdHMoKSkpKTsKIAogICAgIG5vUmVzdWx0KG1fY3VycmVudE5v
ZGUpOwogfQpAQCAtODcwNiw3ICs4NzA2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUNoZWNrU3ViQ2xhcwogICAgICAgICBtX2ppdC5lbWl0TG9hZFN0cnVjdHVyZSgqbV9qaXQudm0o
KSwgYmFzZUdQUiwgb3RoZXJHUFIsIHNwZWNpZmllZEdQUik7CiAgICAgICAgIG1faml0LmxvYWRQ
dHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG90aGVyR1BSLCBTdHJ1Y3R1cmU6OmNsYXNzSW5mb09m
ZnNldCgpKSwgb3RoZXJHUFIpOwogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIG1faml0Lm1v
dmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQoZ19jbGFzc0luZm9TY3JhbWJsZWRQdHJLZXkp
LCBzcGVjaWZpZWRHUFIpOworICAgICAgICBtX2ppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbTY0KGdfY2xhc3NJbmZvUG9pc29uKSwgc3BlY2lmaWVkR1BSKTsKICAgICAgICAgbV9qaXQu
eG9yNjQoc3BlY2lmaWVkR1BSLCBvdGhlckdQUik7CiAjZW5kaWYKICAgICAgICAgbV9qaXQubW92
ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobm9kZS0+Y2xhc3NJbmZvKCkpLCBzcGVjaWZp
ZWRHUFIpOwpAQCAtOTAwMyw3ICs5MDAzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZU5ld1N0cmluZ09iagogICAgICAgICBzbG93UGF0aCk7CiAgICAgCiAgICAgbV9qaXQuc3RvcmVQ
dHIoCi0gICAgICAgIFRydXN0ZWRJbW1QdHIoQ2xhc3NJbmZvU2NyYW1ibGVkUHRyKFN0cmluZ09i
amVjdDo6aW5mbygpKS5iaXRzKCkpLAorICAgICAgICBUcnVzdGVkSW1tUHRyKFBvaXNvbmVkQ2xh
c3NJbmZvUHRyKFN0cmluZ09iamVjdDo6aW5mbygpKS5iaXRzKCkpLAogICAgICAgICBKSVRDb21w
aWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0OjpjbGFzc0luZm9P
ZmZzZXQoKSkpOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgbV9qaXQuc3RvcmU2NCgKQEAgLTk3
NzQsNyArOTc3NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZShOb2RlKiwgRWQK
IH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaEludEp1bXAoCi0gICAgU3dpdGNo
RGF0YSogZGF0YSwgR1BSUmVnIHZhbHVlLCBHUFJSZWcgc2NyYXRjaCwgR1BSUmVnIGRlc2NyYW1i
bGVyS2V5U2NyYXRjaCkKKyAgICBTd2l0Y2hEYXRhKiBkYXRhLCBHUFJSZWcgdmFsdWUsIEdQUlJl
ZyBzY3JhdGNoLCBHUFJSZWcgcG9pc29uU2NyYXRjaCkKIHsKICAgICBTaW1wbGVKdW1wVGFibGUm
IHRhYmxlID0gbV9qaXQuY29kZUJsb2NrKCktPnN3aXRjaEp1bXBUYWJsZShkYXRhLT5zd2l0Y2hU
YWJsZUluZGV4KTsKICAgICB0YWJsZS5lbnN1cmVDVElUYWJsZSgpOwpAQCAtOTc4MiwxNSArOTc4
MiwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoSW50SnVtcCgKICAgICBhZGRC
cmFuY2goCiAgICAgICAgIG1faml0LmJyYW5jaDMyKEpJVENvbXBpbGVyOjpBYm92ZU9yRXF1YWws
IHZhbHVlLCBJbW0zMih0YWJsZS5jdGlPZmZzZXRzLnNpemUoKSkpLAogICAgICAgICBkYXRhLT5m
YWxsVGhyb3VnaC5ibG9jayk7Ci0gICAgVU5VU0VEX1BBUkFNKGRlc2NyYW1ibGVyS2V5U2NyYXRj
aCk7IC8vIFBsYWNhdGUgdGhlIDMyLWJpdCBidWlsZC4KKyAgICBVTlVTRURfUEFSQU0ocG9pc29u
U2NyYXRjaCk7IC8vIFBsYWNhdGUgdGhlIDMyLWJpdCBidWlsZC4KICNpZiBVU0UoSlNWQUxVRTY0
KQotICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTY0KGdfbWFzbVNjcmFtYmxlZFB0cktleSksIGRl
c2NyYW1ibGVyS2V5U2NyYXRjaCk7CisgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tNjQoZ19tYXNt
UG9pc29uKSwgcG9pc29uU2NyYXRjaCk7CiAjZW5kaWYKICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJ
bW1QdHIodGFibGUuY3RpT2Zmc2V0cy5iZWdpbigpKSwgc2NyYXRjaCk7CiAgICAgbV9qaXQubG9h
ZFB0cihKSVRDb21waWxlcjo6QmFzZUluZGV4KHNjcmF0Y2gsIHZhbHVlLCBKSVRDb21waWxlcjo6
dGltZXNQdHIoKSksIHNjcmF0Y2gpOwogICAgIAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgbV9q
aXQueG9yNjQoZGVzY3JhbWJsZXJLZXlTY3JhdGNoLCBzY3JhdGNoKTsKKyAgICBtX2ppdC54b3I2
NChwb2lzb25TY3JhdGNoLCBzY3JhdGNoKTsKICNlbmRpZgogICAgIG1faml0Lmp1bXAoc2NyYXRj
aCk7CiAgICAgZGF0YS0+ZGlkVXNlSnVtcFRhYmxlID0gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDIyNTYzMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTAxMCw3ICs1MDEwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgTEJhc2ljQmxv
Y2sgbGFzdE5leHQgPSBtX291dC5pbnNlcnROZXdCbG9ja3NCZWZvcmUoc2xvd0Nhc2UpOwogCiAg
ICAgICAgIExWYWx1ZSBmYXN0UmVzdWx0VmFsdWUgPSBhbGxvY2F0ZU9iamVjdDxTdHJpbmdPYmpl
Y3Q+KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd0Nhc2UpOwotICAgICAgICBtX291
dC5zdG9yZVB0cihtX291dC5jb25zdEludFB0cihDbGFzc0luZm9TY3JhbWJsZWRQdHIoU3RyaW5n
T2JqZWN0OjppbmZvKCkpLmJpdHMoKSksIGZhc3RSZXN1bHRWYWx1ZSwgbV9oZWFwcy5KU0Rlc3Ry
dWN0aWJsZU9iamVjdF9jbGFzc0luZm8pOworICAgICAgICBtX291dC5zdG9yZVB0cihtX291dC5j
b25zdEludFB0cihQb2lzb25lZENsYXNzSW5mb1B0cihTdHJpbmdPYmplY3Q6OmluZm8oKSkuYml0
cygpKSwgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTRGVzdHJ1Y3RpYmxlT2JqZWN0X2NsYXNz
SW5mbyk7CiAgICAgICAgIG1fb3V0LnN0b3JlNjQoc3RyaW5nLCBmYXN0UmVzdWx0VmFsdWUsIG1f
aGVhcHMuSlNXcmFwcGVyT2JqZWN0X2ludGVybmFsVmFsdWUpOwogICAgICAgICBtdXRhdG9yRmVu
Y2UoKTsKICAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFuY2hvcihm
YXN0UmVzdWx0VmFsdWUpOwpAQCAtMTExNzAsOCArMTExNzAsOCBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKIAogICAg
ICAgICAgICAgTFZhbHVlIHN0cnVjdHVyZSA9IGxvYWRTdHJ1Y3R1cmUoY2VsbCk7Ci0gICAgICAg
ICAgICBMVmFsdWUgc2NyYW1ibGVkQ2xhc3NJbmZvID0gbV9vdXQubG9hZFB0cihzdHJ1Y3R1cmUs
IG1faGVhcHMuU3RydWN0dXJlX2NsYXNzSW5mbyk7Ci0gICAgICAgICAgICBMVmFsdWUgY2xhc3NJ
bmZvID0gbV9vdXQuYml0WG9yKHNjcmFtYmxlZENsYXNzSW5mbywgbV9vdXQuY29uc3RJbnQ2NChn
X2NsYXNzSW5mb1NjcmFtYmxlZFB0cktleSkpOworICAgICAgICAgICAgTFZhbHVlIHBvaXNvbmVk
Q2xhc3NJbmZvID0gbV9vdXQubG9hZFB0cihzdHJ1Y3R1cmUsIG1faGVhcHMuU3RydWN0dXJlX2Ns
YXNzSW5mbyk7CisgICAgICAgICAgICBMVmFsdWUgY2xhc3NJbmZvID0gbV9vdXQuYml0WG9yKHBv
aXNvbmVkQ2xhc3NJbmZvLCBtX291dC5jb25zdEludDY0KGdfY2xhc3NJbmZvUG9pc29uKSk7CiAg
ICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBvdGhlckF0U3RhcnQgPSBtX291dC5hbmNob3IoY2xh
c3NJbmZvKTsKICAgICAgICAgICAgIG1fb3V0Lmp1bXAobG9vcCk7CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkocmV2aXNpb24gMjI1NjMwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkod29ya2luZyBj
b3B5KQpAQCAtMTYyNSw3ICsxNjI1LDcgQEAgcHVibGljOgogICAgIHZvaWQgZW1pdEFsbG9jYXRl
RGVzdHJ1Y3RpYmxlT2JqZWN0KFZNJiB2bSwgR1BSUmVnIHJlc3VsdEdQUiwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIEdQUlJlZyBzY3JhdGNoR1BSMSwgR1BSUmVnIHNjcmF0Y2hHUFIyLCBKdW1wTGlz
dCYgc2xvd1BhdGgpCiAgICAgewogICAgICAgICBlbWl0QWxsb2NhdGVKU09iamVjdDxDbGFzc1R5
cGU+KHZtLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgVHJ1c3RlZEltbVB0
cigwKSwgc2NyYXRjaEdQUjEsIHNjcmF0Y2hHUFIyLCBzbG93UGF0aCk7Ci0gICAgICAgIHN0b3Jl
UHRyKFRydXN0ZWRJbW1QdHIoQ2xhc3NJbmZvU2NyYW1ibGVkUHRyKHN0cnVjdHVyZS0+Y2xhc3NJ
bmZvKCkpLmJpdHMoKSksIEFkZHJlc3MocmVzdWx0R1BSLCBKU0Rlc3RydWN0aWJsZU9iamVjdDo6
Y2xhc3NJbmZvT2Zmc2V0KCkpKTsKKyAgICAgICAgc3RvcmVQdHIoVHJ1c3RlZEltbVB0cihQb2lz
b25lZENsYXNzSW5mb1B0cihzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpKS5iaXRzKCkpLCBBZGRyZXNz
KHJlc3VsdEdQUiwgSlNEZXN0cnVjdGlibGVPYmplY3Q6OmNsYXNzSW5mb09mZnNldCgpKSk7CiAg
ICAgfQogICAgIAogICAgIHZvaWQgZW1pdEluaXRpYWxpemVJbmxpbmVTdG9yYWdlKEdQUlJlZyBi
YXNlR1BSLCB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvU3BlY2lhbGl6ZWRUaHVua0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6ZWRUaHVua0pJVC5oCShyZXZpc2lvbiAyMjU2MzApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNzcsNyArNzcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAg
ICAgICAgICAgbG9hZENlbGxBcmd1bWVudChhcmd1bWVudCwgZHN0KTsKICAgICAgICAgICAgIGVt
aXRMb2FkU3RydWN0dXJlKCp2bSgpLCBkc3QsIHNjcmF0Y2gsIGRzdCk7Ci0gICAgICAgICAgICBh
cHBlbmRGYWlsdXJlKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhzY3JhdGNoLCBTdHJ1Y3R1
cmU6OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihDbGFzc0luZm9TY3JhbWJsZWRQ
dHIoY2xhc3NJbmZvKS5iaXRzKCkpKSk7CisgICAgICAgICAgICBhcHBlbmRGYWlsdXJlKGJyYW5j
aFB0cihOb3RFcXVhbCwgQWRkcmVzcyhzY3JhdGNoLCBTdHJ1Y3R1cmU6OmNsYXNzSW5mb09mZnNl
dCgpKSwgVHJ1c3RlZEltbVB0cihQb2lzb25lZENsYXNzSW5mb1B0cihjbGFzc0luZm8pLmJpdHMo
KSkpKTsKICAgICAgICAgICAgIC8vIFdlIGhhdmUgdG8gcmVsb2FkIHRoZSBhcmd1bWVudCBzaW5j
ZSBlbWl0TG9hZFN0cnVjdHVyZSBjbG9iYmVyZWQgaXQuCiAgICAgICAgICAgICBsb2FkQ2VsbEFy
Z3VtZW50KGFyZ3VtZW50LCBkc3QpOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCShyZXZpc2lvbiAyMjU2MzApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIxNCw3ICsyMTQsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgdmlydHVhbFRodW5r
Rm9yKFZNCiAgICAgLy8gTm93IHdlIGtub3cgdGhhdCB3ZSBoYXZlIGEgQ29kZUJsb2NrLCBhbmQg
d2UncmUgY29tbWl0dGVkIHRvIG1ha2luZyBhIGZhc3QKICAgICAvLyBjYWxsLgogI2lmIFVTRShK
U1ZBTFVFNjQpCi0gICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQoZ19tYXNt
U2NyYW1ibGVkUHRyS2V5KSwgR1BSSW5mbzo6cmVnVDEpOworICAgIGppdC5tb3ZlKENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbTY0KGdfbWFzbVBvaXNvbiksIEdQUkluZm86OnJlZ1QxKTsKICAgICBq
aXQueG9yNjQoR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1Q0KTsKICNlbmRpZgogCkBAIC0x
MTYzLDcgKzExNjMsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgYm91bmRUaGlzTm9BcmdzRnVu
CiAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG5vQ29kZSA9IGppdC5icmFuY2hUZXN0UHRyKENDYWxs
SGVscGVyczo6WmVybywgR1BSSW5mbzo6cmVnVDApOwogICAgIAogI2lmIFVTRShKU1ZBTFVFNjQp
Ci0gICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQoZ19tYXNtU2NyYW1ibGVk
UHRyS2V5KSwgR1BSSW5mbzo6cmVnVDEpOworICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbTY0KGdfbWFzbVBvaXNvbiksIEdQUkluZm86OnJlZ1QxKTsKICAgICBqaXQueG9yNjQo
R1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1QwKTsKICNlbmRpZgogICAgIGVtaXRQb2ludGVy
VmFsaWRhdGlvbihqaXQsIEdQUkluZm86OnJlZ1QwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMjI1NjMwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTMwMyw3ICsxMzAzLDcgQEAgc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBoYW5k
bGVIb3N0Q2FsbAogICAgICAgICAgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVlKGFzT2JqZWN0KGNh
bGxlZSkpOwogICAgICAgICAgICAgdm0uaG9zdENhbGxSZXR1cm5WYWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24oZXhlY0NhbGxlZSkpOwogICAgICAgICAgICAg
Ci0gICAgICAgICAgICBNYXNtU2NyYW1ibGVkUHRyOjphc3NlcnRJc05vdFNjcmFtYmxlZChMTElu
dDo6Z2V0Q29kZVB0cihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSk7CisgICAgICAgICAgICBQb2lz
b25lZE1hc21QdHI6OmFzc2VydElzTm90UG9pc29uZWQoTExJbnQ6OmdldENvZGVQdHIoZ2V0SG9z
dENhbGxSZXR1cm5WYWx1ZSkpOwogICAgICAgICAgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0Nh
bGxlZSwgZXhlY0NhbGxlZSwgTExJbnQ6OmdldENvZGVQdHIoZ2V0SG9zdENhbGxSZXR1cm5WYWx1
ZSkpOwogICAgICAgICB9CiAgICAgICAgIApAQCAtMTMyNyw3ICsxMzI3LDcgQEAgc3RhdGljIFNs
b3dQYXRoUmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2FsbAogICAgICAgICBleGVjQ2FsbGVlLT5zZXRD
YWxsZWUoYXNPYmplY3QoY2FsbGVlKSk7CiAgICAgICAgIHZtLmhvc3RDYWxsUmV0dXJuVmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24oZXhlY0NhbGxl
ZSkpOwogCi0gICAgICAgIE1hc21TY3JhbWJsZWRQdHI6OmFzc2VydElzTm90U2NyYW1ibGVkKExM
SW50OjpnZXRDb2RlUHRyKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpKTsKKyAgICAgICAgUG9pc29u
ZWRNYXNtUHRyOjphc3NlcnRJc05vdFBvaXNvbmVkKExMSW50OjpnZXRDb2RlUHRyKGdldEhvc3RD
YWxsUmV0dXJuVmFsdWUpKTsKICAgICAgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwg
ZXhlY0NhbGxlZSwgTExJbnQ6OmdldENvZGVQdHIoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkpOwog
ICAgIH0KICAgICAKQEAgLTEzNjgsNyArMTM2OCw3IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5
cGUgc2V0VXBDYWxsKEV4ZWMKICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPm1hY2hpbmVD
b2RlVGFyZ2V0ID0gY29kZVB0cjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgTWFzbVNj
cmFtYmxlZFB0cjo6YXNzZXJ0SXNOb3RTY3JhbWJsZWQoY29kZVB0ci5leGVjdXRhYmxlQWRkcmVz
cygpKTsKKyAgICAgICAgICAgIFBvaXNvbmVkTWFzbVB0cjo6YXNzZXJ0SXNOb3RQb2lzb25lZChj
b2RlUHRyLmV4ZWN1dGFibGVBZGRyZXNzKCkpOwogICAgICAgICAgICAgTExJTlRfQ0FMTF9SRVRV
Uk4oZXhlYywgZXhlY0NhbGxlZSwgY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpKTsKICAgICAg
ICAgfQogICAgICAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKQEAgLTE0MTksNyArMTQxOSw3IEBA
IGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgc2V0VXBDYWxsKEV4ZWMKICAgICAgICAgICAgIGNv
ZGVCbG9jay0+bGlua0luY29taW5nQ2FsbChleGVjLCBjYWxsTGlua0luZm8pOwogICAgIH0KIAot
ICAgIE1hc21TY3JhbWJsZWRQdHI6OmFzc2VydElzTm90U2NyYW1ibGVkKGNvZGVQdHIuZXhlY3V0
YWJsZUFkZHJlc3MoKSk7CisgICAgUG9pc29uZWRNYXNtUHRyOjphc3NlcnRJc05vdFBvaXNvbmVk
KGNvZGVQdHIuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CiAgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhl
YywgZXhlY0NhbGxlZSwgY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpKTsKIH0KIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXI2NC5hc20JKHJldmlzaW9uIDIyNTYzMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0xOTUwLDcgKzE5
NTAsNyBAQCBtYWNybyBkb0NhbGwoc2xvd1BhdGgsIHByZXBhcmVDYWxsKQogICAgICAgICBwcmVw
YXJlQ2FsbChMTEludENhbGxMaW5rSW5mbzo6bWFjaGluZUNvZGVUYXJnZXRbdDFdLCB0MiwgdDMs
IHQ0KQogICAgICAgICBjYWxsVGFyZ2V0RnVuY3Rpb24oTExJbnRDYWxsTGlua0luZm86Om1hY2hp
bmVDb2RlVGFyZ2V0W3QxXSkKICAgICBlbHNlCi0gICAgICAgIGxvYWRwIF9nX21hc21TY3JhbWJs
ZWRQdHJLZXksIHQyCisgICAgICAgIGxvYWRwIF9nX21hc21Qb2lzb24sIHQyCiAgICAgICAgIHhv
cnAgTExJbnRDYWxsTGlua0luZm86Om1hY2hpbmVDb2RlVGFyZ2V0W3QxXSwgdDIKICAgICAgICAg
cHJlcGFyZUNhbGwodDIsIHQxLCB0MywgdDQpCiAgICAgICAgIGNhbGxUYXJnZXRGdW5jdGlvbih0
MikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRp
bmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRp
YWxpemVUaHJlYWRpbmcuY3BwCShyZXZpc2lvbiAyMjU2MzApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTksNyArNTksNyBAQCB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKQogCiAgICAgc3RkOjpjYWxs
X29uY2UoaW5pdGlhbGl6ZVRocmVhZGluZ09uY2VGbGFnLCBbXXsKICAgICAgICAgV1RGOjppbml0
aWFsaXplVGhyZWFkaW5nKCk7Ci0gICAgICAgIGluaXRpYWxpemVTY3JhbWJsZWRQdHJLZXlzKCk7
CisgICAgICAgIGluaXRpYWxpemVQb2lzb24oKTsKICAgICAgICAgT3B0aW9uczo6aW5pdGlhbGl6
ZSgpOwogI2lmIEVOQUJMRShXUklURV9CQVJSSUVSX1BST0ZJTElORykKICAgICAgICAgV3JpdGVC
YXJyaWVyQ291bnRlcnM6OmluaXRpYWxpemUoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ1BvaXNvbmVkUHRyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NQb2lzb25lZFB0ci5jcHAJKHJldmlzaW9uIDIyNTYzMCkJKGZy
b20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDU2NyYW1ibGVkUHRyLmNwcDoyMjU2
MzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQb2lzb25lZFB0ci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0NT
Y3JhbWJsZWRQdHIuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3VpbnRwdHJfdCBnX2NsYXNzSW5m
b1NjcmFtYmxlZFB0cktleTsKK3VpbnRwdHJfdCBnX21hc21TY3JhbWJsZWRQdHJLZXk7CisKK3Zv
aWQgaW5pdGlhbGl6ZVNjcmFtYmxlZFB0cktleXMoKQoreworICAgIHN0YXRpYyBzdGQ6Om9uY2Vf
ZmxhZyBpbml0aWFsaXplT25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2UoaW5pdGlhbGl6ZU9u
Y2VGbGFnLCBbXSB7CisgICAgICAgIGdfY2xhc3NJbmZvU2NyYW1ibGVkUHRyS2V5ID0gbWFrZVNj
cmFtYmxlZFB0cktleSgpOworICAgICAgICBnX21hc21TY3JhbWJsZWRQdHJLZXkgPSBtYWtlU2Ny
YW1ibGVkUHRyS2V5KCk7CisgICAgfSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQb2lzb25lZFB0ci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDUG9pc29uZWRQdHIuY3Bw
CShyZXZpc2lvbiAyMjU2MzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQ
b2lzb25lZFB0ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDE5ICsyNCwxOSBAQAogICovCiAK
ICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJKU0NTY3JhbWJsZWRQdHIuaCIKKyNpbmNs
dWRlICJKU0NQb2lzb25lZFB0ci5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAotdWludHB0cl90IGdf
Y2xhc3NJbmZvU2NyYW1ibGVkUHRyS2V5OwotdWludHB0cl90IGdfbWFzbVNjcmFtYmxlZFB0cktl
eTsKK3VpbnRwdHJfdCBnX2NsYXNzSW5mb1BvaXNvbjsKK3VpbnRwdHJfdCBnX21hc21Qb2lzb247
CiAKLXZvaWQgaW5pdGlhbGl6ZVNjcmFtYmxlZFB0cktleXMoKQordm9pZCBpbml0aWFsaXplUG9p
c29uKCkKIHsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZU9uY2VGbGFnOwog
ICAgIHN0ZDo6Y2FsbF9vbmNlKGluaXRpYWxpemVPbmNlRmxhZywgW10gewotICAgICAgICBnX2Ns
YXNzSW5mb1NjcmFtYmxlZFB0cktleSA9IG1ha2VTY3JhbWJsZWRQdHJLZXkoKTsKLSAgICAgICAg
Z19tYXNtU2NyYW1ibGVkUHRyS2V5ID0gbWFrZVNjcmFtYmxlZFB0cktleSgpOworICAgICAgICBn
X2NsYXNzSW5mb1BvaXNvbiA9IG1ha2VQb2lzb24oKTsKKyAgICAgICAgZ19tYXNtUG9pc29uID0g
bWFrZVBvaXNvbigpOwogICAgIH0pOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NQb2lzb25lZFB0ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ1BvaXNvbmVkUHRyLmgJKHJldmlzaW9uIDIyNTYzMCkJKGZyb20gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDU2NyYW1ibGVkUHRyLmg6MjI1NjMwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDUG9pc29uZWRQdHIuaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvU2NyYW1ibGVkUHRyLmg+
CisKK25hbWVzcGFjZSBKU0MgeworCitleHRlcm4gIkMiIEpTX0VYUE9SVERBVEEgdWludHB0cl90
IGdfY2xhc3NJbmZvU2NyYW1ibGVkUHRyS2V5OworZXh0ZXJuICJDIiBKU19FWFBPUlREQVRBIHVp
bnRwdHJfdCBnX21hc21TY3JhbWJsZWRQdHJLZXk7CisKK3N0cnVjdCBDbGFzc0luZm87CisKK3Vz
aW5nIENsYXNzSW5mb1NjcmFtYmxlZFB0ciA9IFNjcmFtYmxlZFB0cjxjb25zdCBDbGFzc0luZm8q
LCBnX2NsYXNzSW5mb1NjcmFtYmxlZFB0cktleT47Cit1c2luZyBNYXNtU2NyYW1ibGVkUHRyID0g
U2NyYW1ibGVkUHRyPHZvaWQqLCBnX21hc21TY3JhbWJsZWRQdHJLZXk+OworCit2b2lkIGluaXRp
YWxpemVTY3JhbWJsZWRQdHJLZXlzKCk7CisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQb2lzb25lZFB0ci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1BvaXNvbmVkUHRyLmgJKHJldmlz
aW9uIDIyNTYzMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1BvaXNvbmVk
UHRyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDE5ICsyNSwxOSBAQAogCiAjcHJhZ21hIG9uY2UK
IAotI2luY2x1ZGUgPHd0Zi9TY3JhbWJsZWRQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUG9pc29uZWQu
aD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKLWV4dGVybiAiQyIgSlNfRVhQT1JUREFUQSB1aW50cHRy
X3QgZ19jbGFzc0luZm9TY3JhbWJsZWRQdHJLZXk7Ci1leHRlcm4gIkMiIEpTX0VYUE9SVERBVEEg
dWludHB0cl90IGdfbWFzbVNjcmFtYmxlZFB0cktleTsKK2V4dGVybiAiQyIgSlNfRVhQT1JUREFU
QSB1aW50cHRyX3QgZ19jbGFzc0luZm9Qb2lzb247CitleHRlcm4gIkMiIEpTX0VYUE9SVERBVEEg
dWludHB0cl90IGdfbWFzbVBvaXNvbjsKIAogc3RydWN0IENsYXNzSW5mbzsKIAotdXNpbmcgQ2xh
c3NJbmZvU2NyYW1ibGVkUHRyID0gU2NyYW1ibGVkUHRyPGNvbnN0IENsYXNzSW5mbyosIGdfY2xh
c3NJbmZvU2NyYW1ibGVkUHRyS2V5PjsKLXVzaW5nIE1hc21TY3JhbWJsZWRQdHIgPSBTY3JhbWJs
ZWRQdHI8dm9pZCosIGdfbWFzbVNjcmFtYmxlZFB0cktleT47Cit1c2luZyBQb2lzb25lZENsYXNz
SW5mb1B0ciA9IFBvaXNvbmVkPGdfY2xhc3NJbmZvUG9pc29uLCBjb25zdCBDbGFzc0luZm8qPjsK
K3VzaW5nIFBvaXNvbmVkTWFzbVB0ciA9IFBvaXNvbmVkPGdfbWFzbVBvaXNvbiwgdm9pZCo+Owog
Ci12b2lkIGluaXRpYWxpemVTY3JhbWJsZWRQdHJLZXlzKCk7Cit2b2lkIGluaXRpYWxpemVQb2lz
b24oKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ1NjcmFtYmxlZFB0ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDU2NyYW1ibGVkUHRyLmNwcAkocmV2aXNpb24gMjI1NjMwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDU2NyYW1ibGVkUHRyLmNwcAkobm9u
ZXhpc3RlbnQpCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSlNDU2NyYW1i
bGVkUHRyLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi11aW50cHRyX3QgZ19jbGFzc0luZm9TY3Jh
bWJsZWRQdHJLZXk7Ci11aW50cHRyX3QgZ19tYXNtU2NyYW1ibGVkUHRyS2V5OwotCi12b2lkIGlu
aXRpYWxpemVTY3JhbWJsZWRQdHJLZXlzKCkKLXsKLSAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcg
aW5pdGlhbGl6ZU9uY2VGbGFnOwotICAgIHN0ZDo6Y2FsbF9vbmNlKGluaXRpYWxpemVPbmNlRmxh
ZywgW10gewotICAgICAgICBnX2NsYXNzSW5mb1NjcmFtYmxlZFB0cktleSA9IG1ha2VTY3JhbWJs
ZWRQdHJLZXkoKTsKLSAgICAgICAgZ19tYXNtU2NyYW1ibGVkUHRyS2V5ID0gbWFrZVNjcmFtYmxl
ZFB0cktleSgpOwotICAgIH0pOwotfQotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDU2NyYW1ibGVkUHRyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDU2NyYW1ibGVkUHRyLmgJKHJldmlz
aW9uIDIyNTYzMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1NjcmFtYmxl
ZFB0ci5oCShub25leGlzdGVudCkKQEAgLTEsNDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSA8d3Rm
L1NjcmFtYmxlZFB0ci5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLQotZXh0ZXJuICJDIiBKU19FWFBP
UlREQVRBIHVpbnRwdHJfdCBnX2NsYXNzSW5mb1NjcmFtYmxlZFB0cktleTsKLWV4dGVybiAiQyIg
SlNfRVhQT1JUREFUQSB1aW50cHRyX3QgZ19tYXNtU2NyYW1ibGVkUHRyS2V5OwotCi1zdHJ1Y3Qg
Q2xhc3NJbmZvOwotCi11c2luZyBDbGFzc0luZm9TY3JhbWJsZWRQdHIgPSBTY3JhbWJsZWRQdHI8
Y29uc3QgQ2xhc3NJbmZvKiwgZ19jbGFzc0luZm9TY3JhbWJsZWRQdHJLZXk+OwotdXNpbmcgTWFz
bVNjcmFtYmxlZFB0ciA9IFNjcmFtYmxlZFB0cjx2b2lkKiwgZ19tYXNtU2NyYW1ibGVkUHRyS2V5
PjsKLQotdm9pZCBpbml0aWFsaXplU2NyYW1ibGVkUHRyS2V5cygpOwotCi19IC8vIG5hbWVzcGFj
ZSBKU0MKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEZXN0cnVjdGli
bGVPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0Rlc3RydWN0aWJsZU9iamVjdC5oCShyZXZpc2lvbiAyMjU2MzApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0Rlc3RydWN0aWJsZU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICZ2bS5kZXN0cnVjdGlibGVP
YmplY3RTcGFjZTsKICAgICB9CiAKLSAgICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNv
bnN0IHsgcmV0dXJuIG1fY2xhc3NJbmZvLmRlc2NyYW1ibGVkKCk7IH0KKyAgICBjb25zdCBDbGFz
c0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NJbmZvLnVucG9pc29uZWQo
KTsgfQogICAgIAogICAgIHN0YXRpYyBwdHJkaWZmX3QgY2xhc3NJbmZvT2Zmc2V0KCkgeyByZXR1
cm4gT0JKRUNUX09GRlNFVE9GKEpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBtX2NsYXNzSW5mbyk7IH0K
IApAQCAtNTYsNyArNTYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgfQogCiBwcml2YXRlOgotICAgIENs
YXNzSW5mb1NjcmFtYmxlZFB0ciBtX2NsYXNzSW5mbzsKKyAgICBQb2lzb25lZENsYXNzSW5mb1B0
ciBtX2NsYXNzSW5mbzsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2VnbWVudGVkVmFyaWFibGVP
YmplY3QuaAkocmV2aXNpb24gMjI1NjMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC05NCw3ICs5
NCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICZ2bS5zZWdtZW50ZWRWYXJpYWJsZU9iamVj
dFNwYWNlOwogICAgIH0KICAgICAKLSAgICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNv
bnN0IHsgcmV0dXJuIG1fY2xhc3NJbmZvLmRlc2NyYW1ibGVkKCk7IH0KKyAgICBjb25zdCBDbGFz
c0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NJbmZvLnVucG9pc29uZWQo
KTsgfQogICAgIAogcHJvdGVjdGVkOgogICAgIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QoVk0m
LCBTdHJ1Y3R1cmUqLCBKU1Njb3BlKik7CkBAIC0xMDcsNyArMTA3LDcgQEAgcHJpdmF0ZToKICAg
ICBTZWdtZW50ZWRWZWN0b3I8V3JpdGVCYXJyaWVyPFVua25vd24+LCAxNj4gbV92YXJpYWJsZXM7
CiAgICAgQ29uY3VycmVudEpTTG9jayBtX2xvY2s7CiAgICAgYm9vbCBtX2FscmVhZHlEZXN0cm95
ZWQgeyBmYWxzZSB9OyAvLyBXZSB1c2UgdGhlc2UgYXNzZXJ0aW9ucyB0byBjaGVjayB0aGF0IHdl
IGFyZW4ndCBkb2luZyBhbmNpZW50IGhhY2tzIHRoYXQgcmVzdWx0IGluIHRoaXMgYmVpbmcgZGVz
dHJveWVkIG1vcmUgdGhhbiBvbmNlLgotICAgIENsYXNzSW5mb1NjcmFtYmxlZFB0ciBtX2NsYXNz
SW5mbzsKKyAgICBQb2lzb25lZENsYXNzSW5mb1B0ciBtX2NsYXNzSW5mbzsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlLmgJKHJldmlzaW9uIDIyNTYzMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NjgsNyArNDY4LDcgQEAgcHVibGljOgog
CiAgICAgdm9pZCBzZXRPYmplY3RUb1N0cmluZ1ZhbHVlKEV4ZWNTdGF0ZSosIFZNJiwgSlNTdHJp
bmcqIHZhbHVlLCBQcm9wZXJ0eVNsb3QgdG9TdHJpbmdUYWdTeW1ib2xTbG90KTsKIAotICAgIGNv
bnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc0luZm8uZGVz
Y3JhbWJsZWQoKTsgfQorICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3QgeyBy
ZXR1cm4gbV9jbGFzc0luZm8udW5wb2lzb25lZCgpOyB9CiAKICAgICBzdGF0aWMgcHRyZGlmZl90
IHN0cnVjdHVyZUlET2Zmc2V0KCkKICAgICB7CkBAIC03OTgsNyArNzk4LDcgQEAgcHJpdmF0ZToK
IAogICAgIFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4gbV9uYW1lSW5QcmV2aW91czsKIAotICAg
IENsYXNzSW5mb1NjcmFtYmxlZFB0ciBtX2NsYXNzSW5mbzsKKyAgICBQb2lzb25lZENsYXNzSW5m
b1B0ciBtX2NsYXNzSW5mbzsKIAogICAgIFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZSBtX3RyYW5z
aXRpb25UYWJsZTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCShyZXZpc2lv
biAyMjU2MzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCSh3b3JraW5n
IGNvcHkpCkBAIC00MTQsNyArNDE0LDcgQEAgcHVibGljOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxQ
cm9taXNlRGVmZXJyZWRUaW1lcj4gcHJvbWlzZURlZmVycmVkVGltZXI7CiAgICAgCiAgICAgSlND
ZWxsKiBjdXJyZW50bHlEZXN0cnVjdGluZ0NhbGxiYWNrT2JqZWN0OwotICAgIENsYXNzSW5mb1Nj
cmFtYmxlZFB0ciBjdXJyZW50bHlEZXN0cnVjdGluZ0NhbGxiYWNrT2JqZWN0Q2xhc3NJbmZvOwor
ICAgIFBvaXNvbmVkQ2xhc3NJbmZvUHRyIGN1cnJlbnRseURlc3RydWN0aW5nQ2FsbGJhY2tPYmpl
Y3RDbGFzc0luZm87CiAKICAgICBBdG9taWNTdHJpbmdUYWJsZSogbV9hdG9taWNTdHJpbmdUYWJs
ZTsKICAgICBXVEY6OlN5bWJvbFJlZ2lzdHJ5IG1fc3ltYm9sUmVnaXN0cnk7CkluZGV4OiBTb3Vy
Y2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2
aXNpb24gMjI1NjMwKQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSw0NyBAQAorMjAxNy0xMi0wNyAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+
CisKKyAgICAgICAgW1JlLWxhbmRpbmcgcjIyNTYyMF0gUmVmYWN0b3Jpbmc6IFJlbmFtZSBTY3Jh
bWJsZWRQdHIgdG8gUG9pc29uZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xODA1MTQKKworICAgICAgICBQcmV2aW91c2x5IHJldmlld2VkIGJ5IFNh
YW0gQmFyYXRpLgorCisgICAgICAgIFJlLWxhbmRpbmcgcjIyNTYyMCB3aXRoIHNwZWN1bGF0aXZl
IGJ1aWxkIGZpeCBmb3IgR0NDIDcuCisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogd3RmL1Bv
aXNvbmVkLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dURi93dGYvU2NyYW1ibGVkUHRyLmNwcC4K
KyAgICAgICAgKFdURjo6bWFrZVBvaXNvbik6CisgICAgICAgIChXVEY6Om1ha2VTY3JhbWJsZWRQ
dHJLZXkpOiBEZWxldGVkLgorICAgICAgICAqIHd0Zi9Qb2lzb25lZC5oOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV1RGL3d0Zi9TY3JhbWJsZWRQdHIuaC4KKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBs
OjpQb2lzb25lZEltcGwpOgorICAgICAgICAoV1RGOjpQb2lzb25lZEltcGw6OmFzc2VydElzUG9p
c29uZWQgY29uc3QpOgorICAgICAgICAoV1RGOjpQb2lzb25lZEltcGw6OmFzc2VydElzTm90UG9p
c29uZWQgY29uc3QpOgorICAgICAgICAoV1RGOjpQb2lzb25lZEltcGw6OnVucG9pc29uZWQgY29u
c3QpOgorICAgICAgICAoV1RGOjpQb2lzb25lZEltcGw6Om9wZXJhdG9yLT4gY29uc3QpOgorICAg
ICAgICAoV1RGOjpQb2lzb25lZEltcGw6OmJpdHMgY29uc3QpOgorICAgICAgICAoV1RGOjpQb2lz
b25lZEltcGw6Om9wZXJhdG9yISBjb25zdCk6CisgICAgICAgIChXVEY6OlBvaXNvbmVkSW1wbDo6
b3BlcmF0b3IgYm9vbCBjb25zdCk6CisgICAgICAgIChXVEY6OlBvaXNvbmVkSW1wbDo6b3BlcmF0
b3I9PSBjb25zdCk6CisgICAgICAgIChXVEY6OlBvaXNvbmVkSW1wbDo6b3BlcmF0b3I9PSk6Cisg
ICAgICAgIChXVEY6OlBvaXNvbmVkSW1wbDo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdURjo6UG9p
c29uZWRJbXBsOjpwb2lzb24pOgorICAgICAgICAoV1RGOjpQb2lzb25lZEltcGw6OnVucG9pc29u
KToKKyAgICAgICAgKFdURjo6U2NyYW1ibGVkUHRyOjpTY3JhbWJsZWRQdHIpOiBEZWxldGVkLgor
ICAgICAgICAoV1RGOjpTY3JhbWJsZWRQdHI6OmFzc2VydElzU2NyYW1ibGVkIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdURjo6U2NyYW1ibGVkUHRyOjphc3NlcnRJc05vdFNjcmFtYmxlZCBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlNjcmFtYmxlZFB0cjo6ZGVzY3JhbWJsZWQg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTY3JhbWJsZWRQdHI6Om9wZXJhdG9yLT4g
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTY3JhbWJsZWRQdHI6OmJpdHMgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTY3JhbWJsZWRQdHI6Om9wZXJhdG9yISBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlNjcmFtYmxlZFB0cjo6b3BlcmF0b3IgYm9vbCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlNjcmFtYmxlZFB0cjo6b3BlcmF0b3I9PSBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlNjcmFtYmxlZFB0cjo6b3BlcmF0b3I9PSk6IERl
bGV0ZWQuCisgICAgICAgIChXVEY6OlNjcmFtYmxlZFB0cjo6b3BlcmF0b3I9KTogRGVsZXRlZC4K
KyAgICAgICAgKFdURjo6U2NyYW1ibGVkUHRyOjpzY3JhbWJsZSk6IERlbGV0ZWQuCisgICAgICAg
IChXVEY6OlNjcmFtYmxlZFB0cjo6ZGVzY3JhbWJsZSk6IERlbGV0ZWQuCisgICAgICAgICogd3Rm
L1NjcmFtYmxlZFB0ci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogd3RmL1NjcmFtYmxlZFB0ci5o
OiBSZW1vdmVkLgorCiAyMDE3LTEyLTA3ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9A
aWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjI1NjIwCklu
ZGV4OiBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIy
NTYzMCkKKysrIFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtp
bmcgY29weSkKQEAgLTE0OSw3ICsxNDksNyBAQAogCQlFMzhENkUyNzFGNTUyMkUzMDBBNzVDQzQg
LyogU3RyaW5nQnVpbGRlckpTT04uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTM4RDZFMjYxRjU1MjJFMzAwQTc1Q0M0IC8qIFN0cmluZ0J1aWxkZXJK
U09OLmNwcCAqLzsgfTsKIAkJRTRBMEFEMzkxQTk2MjQ1NTAwNTM2REY2IC8qIFdvcmtRdWV1ZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEEwQUQz
NzFBOTYyNDU1MDA1MzZERjYgLyogV29ya1F1ZXVlLmNwcCAqLzsgfTsKIAkJRTRBMEFEM0QxQTk2
MjUzQzAwNTM2REY2IC8qIFdvcmtRdWV1ZUNvY29hLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QTBBRDNDMUE5NjI1M0MwMDUzNkRGNiAvKiBXb3Jr
UXVldWVDb2NvYS5jcHAgKi87IH07Ci0JCUZFODU0MTZFMUZCRTI4NUQwMDhEQTVEQSAvKiBTY3Jh
bWJsZWRQdHIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkU4NTQxNkMxRkJFMjg1QjAwOERBNURBIC8qIFNjcmFtYmxlZFB0ci5jcHAgKi87IH07CisJ
CUZFODU0MTZFMUZCRTI4NUQwMDhEQTVEQSAvKiBQb2lzb25lZC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTg1NDE2QzFGQkUyODVCMDA4REE1REEg
LyogUG9pc29uZWQuY3BwICovOyB9OwogCQlGRURBQ0QzRDE2MzBGODNGMDBDNjk2MzQgLyogU3Rh
Y2tTdGF0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRURBQ0QzQjE2MzBGODNGMDBDNjk2MzQgLyogU3RhY2tTdGF0cy5jcHAgKi87IH07CiAvKiBF
bmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIApAQCAtNjEwLDggKzYxMCw4IEBACiAJCUVGN0Q2
Q0Q1OUQ4NjQyQThBMERBODZBRCAvKiBTdGFja1RyYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFN0YWNrVHJhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RjcyQkJEQjEwN0ZBNDI0ODg2MTc4QjlFIC8qIFN5bWJvbEltcGwuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3ltYm9sSW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUZFODIyNTMwMUIyQTFFNUIwMEJBNjhGRCAvKiBOYWtlZFB0ci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOYWtlZFB0ci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlGRTg1NDE2QzFGQkUyODVCMDA4REE1REEgLyogU2NyYW1ibGVkUHRyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmFtYmxlZFB0ci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUZFODU0MTZEMUZCRTI4NUMwMDhEQTVEQSAv
KiBTY3JhbWJsZWRQdHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyYW1i
bGVkUHRyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODU0MTZDMUZCRTI4NUIw
MDhEQTVEQSAvKiBQb2lzb25lZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBQb2lzb25lZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODU0MTZE
MUZCRTI4NUMwMDhEQTVEQSAvKiBQb2lzb25lZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBQb2lzb25lZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTg2QTg3
NDFFNTk0NDAyMDAxMTFCQkYgLyogRm9yYmlkSGVhcEFsbG9jYXRpb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRm9yYmlkSGVhcEFsbG9jYXRpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRkU4OTI1QUYxRDAwREFFQzAwNDY5MDdFIC8qIEluZGVudGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluZGVudGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUZFREFDRDNCMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0YWNrU3RhdHMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTY1LDYgKzk2NSw4IEBACiAJCQkJQTg3
NkRCRDcxNTE4MTZFNTAwREFEQjk1IC8qIFBsYXRmb3JtLmggKi8sCiAJCQkJRTMyMDBBQjQxRTlB
NTM2RDAwM0I1OUQyIC8qIFBsYXRmb3JtUmVnaXN0ZXJzLmggKi8sCiAJCQkJMEZGODYwOTQxQkND
QkQ3NDAwNDUxMjdGIC8qIFBvaW50ZXJDb21wYXJpc29uLmggKi8sCisJCQkJRkU4NTQxNkMxRkJF
Mjg1QjAwOERBNURBIC8qIFBvaXNvbmVkLmNwcCAqLywKKwkJCQlGRTg1NDE2RDFGQkUyODVDMDA4
REE1REEgLyogUG9pc29uZWQuaCAqLywKIAkJCQkwRjlEMzM1RDE2NURCQTczMDA1QUQzODcgLyog
UHJpbnRTdHJlYW0uY3BwICovLAogCQkJCTBGOUQzMzVFMTY1REJBNzMwMDVBRDM4NyAvKiBQcmlu
dFN0cmVhbS5oICovLAogCQkJCTUzRUMyNTNDMUU5NUFEMzAwMDA4MzFCOSAvKiBQcmlvcml0eVF1
ZXVlLmggKi8sCkBAIC0xMDAxLDggKzEwMDMsNiBAQAogCQkJCTE0Njk0MTk1MTZFQUFGRjgwMDI0
RTE0NiAvKiBTY2hlZHVsZVBhaXJNYWMubW0gKi8sCiAJCQkJMUEzNTI0QUExRDYzQTJGRjAwMzE3
MjlCIC8qIFNjb3BlLmggKi8sCiAJCQkJMEZFQzg0QjAxQkRBQ0QzOTAwODBGRjc0IC8qIFNjb3Bl
ZExhbWJkYS5oICovLAotCQkJCUZFODU0MTZDMUZCRTI4NUIwMDhEQTVEQSAvKiBTY3JhbWJsZWRQ
dHIuY3BwICovLAotCQkJCUZFODU0MTZEMUZCRTI4NUMwMDhEQTVEQSAvKiBTY3JhbWJsZWRQdHIu
aCAqLywKIAkJCQkwRjY2QjI4NDFEQzk3QkFCMDA0QTFEM0YgLyogU2Vjb25kcy5jcHAgKi8sCiAJ
CQkJMEY2NkIyODUxREM5N0JBQjAwNEExRDNGIC8qIFNlY29uZHMuaCAqLywKIAkJCQlBOEE0NzMw
NjE1MUE4MjVCMDA0MTIzRkYgLyogU2VnbWVudGVkVmVjdG9yLmggKi8sCkBAIC0xNDYyLDcgKzE0
NjIsNyBAQAogCQkJCTE0Njk0MTkzMTZFQUFGNkQwMDI0RTE0NiAvKiBSdW5Mb29wVGltZXJDRi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDY5NDE5OTE2RUFCMDQxMDAyNEUxNDYgLyogU2NoZWR1
bGVQYWlyQ0YuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ2OTQxOTcxNkVBQUZGODAwMjRFMTQ2
IC8qIFNjaGVkdWxlUGFpck1hYy5tbSBpbiBTb3VyY2VzICovLAotCQkJCUZFODU0MTZFMUZCRTI4
NUQwMDhEQTVEQSAvKiBTY3JhbWJsZWRQdHIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkU4NTQx
NkUxRkJFMjg1RDAwOERBNURBIC8qIFBvaXNvbmVkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
NjZCMjhFMURDOTdCQUIwMDRBMUQzRiAvKiBTZWNvbmRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE4QTQ3NDIxMTUxQTgyNUIwMDQxMjNGRiAvKiBTSEExLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTUzMTFCRDUzMUVBNzFDQUQwMDUyNTI4MSAvKiBTaWduYWxzLmNwcCBpbiBTb3VyY2VzICovLApJ
bmRleDogU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIyNTYzMCkKKysrIFNvdXJjZS9XVEYv
d3RmL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsNiArMTA3LDcgQEAgc2V0
KFdURl9IRUFERVJTCiAgICAgUGFya2luZ0xvdC5oCiAgICAgUGxhdGZvcm0uaAogICAgIFBsYXRm
b3JtUmVnaXN0ZXJzLmgKKyAgICBQb2lzb25lZC5oCiAgICAgUHJpbnRTdHJlYW0uaAogICAgIFBy
b2Nlc3NJRC5oCiAgICAgUkFNU2l6ZS5oCkBAIC0xMzAsNyArMTMxLDYgQEAgc2V0KFdURl9IRUFE
RVJTCiAgICAgU2hhcmVkVGFzay5oCiAgICAgU2F0dXJhdGVkQXJpdGhtZXRpYy5oCiAgICAgU2Nv
cGVkTGFtYmRhLmgKLSAgICBTY3JhbWJsZWRQdHIuaAogICAgIFNlY29uZHMuaAogICAgIFNlZ21l
bnRlZFZlY3Rvci5oCiAgICAgU21hbGxQdHJTZXQuaApAQCAtMjU4LDYgKzI1OCw3IEBAIHNldChX
VEZfU09VUkNFUwogICAgIFBhcmFsbGVsSGVscGVyUG9vbC5jcHAKICAgICBQYXJhbGxlbEpvYnNH
ZW5lcmljLmNwcAogICAgIFBhcmtpbmdMb3QuY3BwCisgICAgUG9pc29uZWQuY3BwCiAgICAgUHJp
bnRTdHJlYW0uY3BwCiAgICAgUkFNU2l6ZS5jcHAKICAgICBSYW5kb21EZXZpY2UuY3BwCkBAIC0y
NjYsNyArMjY3LDYgQEAgc2V0KFdURl9TT1VSQ0VTCiAgICAgUmVmQ291bnRlZExlYWtDb3VudGVy
LmNwcAogICAgIFJ1bkxvb3AuY3BwCiAgICAgU0hBMS5jcHAKLSAgICBTY3JhbWJsZWRQdHIuY3Bw
CiAgICAgU2Vjb25kcy5jcHAKICAgICBTaXhDaGFyYWN0ZXJIYXNoLmNwcAogICAgIFN0YWNrQm91
bmRzLmNwcApJbmRleDogU291cmNlL1dURi93dGYvUG9pc29uZWQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL1BvaXNvbmVkLmNwcAkocmV2aXNpb24gMjI1NjMwKQkoZnJvbSBTb3Vy
Y2UvV1RGL3d0Zi9TY3JhbWJsZWRQdHIuY3BwOjIyNTYzMCkKKysrIFNvdXJjZS9XVEYvd3RmL1Bv
aXNvbmVkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlNjcmFtYmxlZFB0ci5oIgorCisjaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNhbGx5
UmFuZG9tTnVtYmVyLmg+CisKK25hbWVzcGFjZSBXVEYgeworCit1aW50cHRyX3QgbWFrZVNjcmFt
YmxlZFB0cktleSgpCit7CisgICAgdWludHB0cl90IGtleSA9IGNyeXB0b2dyYXBoaWNhbGx5UmFu
ZG9tTnVtYmVyKCk7CisjaWYgVVNFKEpTVkFMVUU2NCkgJiYgIU9TKFdJTkRPV1MpCisgICAga2V5
ID0gKGtleSA8PCAzMikgXiAoc3RhdGljX2Nhc3Q8dWludHB0cl90PihjcnlwdG9ncmFwaGljYWxs
eVJhbmRvbU51bWJlcigpKSA8PCAzKTsKKyAgICAvLyBFbnN1cmUgdGhhdCB0aGUgc2NyYW1ibGVk
IGJpdHMgKHBvaW50ZXIgXiBrZXkpIGRvIG5vdCBtYWtlIGEgdmFsaWQgcG9pbnRlciBhbmQKKyAg
ICAvLyBjYW5ub3QgYmUgMC4gV2UgZW5zdXJlIHRoYXQgaXQgaXMgemVybyBzbyB0aGF0IHRoZSBz
Y3JhbWJsZWQgYml0cyBjYW4gYWxzbyBiZQorICAgIC8vIHVzZWQgZm9yIGEgbm90bWFsIHplcm8g
Y2hlY2sgd2l0aG91dCBuZWVkaW5nIHRvIGRlc2NyYW1ibGUgZmlyc3QuCisgICAga2V5IHw9IChz
dGF0aWNfY2FzdDx1aW50cHRyX3Q+KDB4MSkgPDwgNjMpOworI2Vsc2UKKyAgICBrZXkgPSAwOyAv
LyBTY3JhbWJsaW5nIGlzIG5vdCBzdXBwb3J0ZWQgb24gMzItYml0IG9yIG5vbi1kYXJ3aW4gcGxh
dGZvcm1zIHlldC4KKyNlbmRpZgorICAgIHJldHVybiBrZXk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdURgorCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9Qb2lzb25lZC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dURi93dGYvUG9pc29uZWQuY3BwCShyZXZpc2lvbiAyMjU2MzApCisrKyBTb3VyY2Uv
V1RGL3d0Zi9Qb2lzb25lZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDIzICsyNCwyMyBAQAog
ICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTY3JhbWJsZWRQdHIuaCIKKyNp
bmNsdWRlICJQb2lzb25lZC5oIgogCiAjaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFu
ZG9tTnVtYmVyLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogCi11aW50cHRyX3QgbWFrZVNjcmFtYmxl
ZFB0cktleSgpCit1aW50cHRyX3QgbWFrZVBvaXNvbigpCiB7CiAgICAgdWludHB0cl90IGtleSA9
IGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyKCk7CiAjaWYgVVNFKEpTVkFMVUU2NCkgJiYg
IU9TKFdJTkRPV1MpCiAgICAga2V5ID0gKGtleSA8PCAzMikgXiAoc3RhdGljX2Nhc3Q8dWludHB0
cl90PihjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpKSA8PCAzKTsKLSAgICAvLyBFbnN1
cmUgdGhhdCB0aGUgc2NyYW1ibGVkIGJpdHMgKHBvaW50ZXIgXiBrZXkpIGRvIG5vdCBtYWtlIGEg
dmFsaWQgcG9pbnRlciBhbmQKLSAgICAvLyBjYW5ub3QgYmUgMC4gV2UgZW5zdXJlIHRoYXQgaXQg
aXMgemVybyBzbyB0aGF0IHRoZSBzY3JhbWJsZWQgYml0cyBjYW4gYWxzbyBiZQotICAgIC8vIHVz
ZWQgZm9yIGEgbm90bWFsIHplcm8gY2hlY2sgd2l0aG91dCBuZWVkaW5nIHRvIGRlc2NyYW1ibGUg
Zmlyc3QuCisgICAgLy8gRW5zdXJlIHRoYXQgdGhlIHBvaXNvbmVkIGJpdHMgKHBvaW50ZXIgXiBr
ZXkpIGRvIG5vdCBtYWtlIGEgdmFsaWQgcG9pbnRlciBhbmQKKyAgICAvLyBjYW5ub3QgYmUgMC4g
V2UgZW5zdXJlIHRoYXQgaXQgaXMgemVybyBzbyB0aGF0IHRoZSBwb2lzb25lZCBiaXRzIGNhbiBh
bHNvIGJlCisgICAgLy8gdXNlZCBmb3IgYSBub3RtYWwgemVybyBjaGVjayB3aXRob3V0IG5lZWRp
bmcgdG8gZGVjb2RlZCBmaXJzdC4KICAgICBrZXkgfD0gKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4o
MHgxKSA8PCA2Myk7CiAjZWxzZQotICAgIGtleSA9IDA7IC8vIFNjcmFtYmxpbmcgaXMgbm90IHN1
cHBvcnRlZCBvbiAzMi1iaXQgb3Igbm9uLWRhcndpbiBwbGF0Zm9ybXMgeWV0LgorICAgIGtleSA9
IDA7IC8vIFBvaXNvbmluZyBpcyBub3Qgc3VwcG9ydGVkIG9uIDMyLWJpdCBvciBub24tZGFyd2lu
IHBsYXRmb3JtcyB5ZXQuCiAjZW5kaWYKICAgICByZXR1cm4ga2V5OwogfQpJbmRleDogU291cmNl
L1dURi93dGYvUG9pc29uZWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Qb2lzb25l
ZC5oCShyZXZpc2lvbiAyMjU2MzApCShmcm9tIFNvdXJjZS9XVEYvd3RmL1NjcmFtYmxlZFB0ci5o
OjIyNTYzMCkKKysrIFNvdXJjZS9XVEYvd3RmL1BvaXNvbmVkLmgJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxMjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisKKyNkZWZp
bmUgRU5BQkxFX1NDUkFNQkxFRF9QVFJfQVNTRVJUUyAwCisKKy8vIE5vdCBjdXJyZW50bHkgc3Vw
cG9ydGVkIGZvciAzMi1iaXQgb3IgT1MoV0lORE9XUykgYnVpbGRzIChiZWNhdXNlIG9mIG1pc3Np
bmcgbGxpbnQgc3VwcG9ydCkuCisvLyBNYWtlIHN1cmUgaXQncyBkaXNhYmxlZC4KKyNpZiBVU0Uo
SlNWQUxVRTMyXzY0KSB8fCBPUyhXSU5ET1dTKQorI3VuZGVmIEVOQUJMRV9TQ1JBTUJMRURfUFRS
X0FTU0VSVFMKKyNkZWZpbmUgRU5BQkxFX1NDUkFNQkxFRF9QVFJfQVNTRVJUUyAwCisjZW5kaWYK
KworbmFtZXNwYWNlIFdURiB7CisKK3VzaW5nIFNjcmFtYmxlZFB0ckJpdHMgPSB1aW50cHRyX3Q7
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHVpbnRwdHJfdCYga2V5LCB0eXBlbmFtZSA9IHN0ZDo6
ZW5hYmxlX2lmX3Q8c3RkOjppc19wb2ludGVyPFQ+Ojp2YWx1ZT4+CitjbGFzcyBTY3JhbWJsZWRQ
dHIgeworcHVibGljOgorICAgIFNjcmFtYmxlZFB0cigpIHsgfQorCisgICAgZXhwbGljaXQgU2Ny
YW1ibGVkUHRyKFQgcHRyKQorICAgICAgICA6IG1fc2NyYW1ibGVkQml0cyhzY3JhbWJsZShwdHIp
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKHB0ciAmJiBtX3NjcmFtYmxlZEJpdHMpOworICAgIH0K
KworICAgIFNjcmFtYmxlZFB0cihjb25zdCBTY3JhbWJsZWRQdHImKSA9IGRlZmF1bHQ7CisKKyAg
ICBleHBsaWNpdCBTY3JhbWJsZWRQdHIoU2NyYW1ibGVkUHRyQml0cyBzY3JhbWJsZWRCaXRzKQor
ICAgICAgICA6IG1fc2NyYW1ibGVkQml0cyhzY3JhbWJsZWRCaXRzKQorICAgIHsKKyAgICAgICAg
QVNTRVJUKG1fc2NyYW1ibGVkQml0cyk7CisgICAgfQorCisjaWYgRU5BQkxFKFNDUkFNQkxFRF9Q
VFJfQVNTRVJUUykKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gdm9pZCo+CisgICAgc3RhdGlj
IGJvb2wgaXNTY3JhbWJsZWQoVSB2YWx1ZSkgeyByZXR1cm4gIXZhbHVlIHx8IChyZWludGVycHJl
dF9jYXN0PHVpbnRwdHJfdD4odmFsdWUpICYgMHhmZmZmMDAwMDAwMDAwMDAwKTsgfQorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFUgPSB2b2lkKj4KKyAgICBzdGF0aWMgdm9pZCBhc3NlcnRJc1NjcmFt
YmxlZChVIHZhbHVlKSB7IFJFTEVBU0VfQVNTRVJUKGlzU2NyYW1ibGVkKHZhbHVlKSk7IH0KKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gdm9pZCo+CisgICAgc3RhdGljIHZvaWQgYXNzZXJ0SXNO
b3RTY3JhbWJsZWQoVSB2YWx1ZSkgeyBSRUxFQVNFX0FTU0VSVCghaXNTY3JhbWJsZWQodmFsdWUp
KTsgfQorI2Vsc2UKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gdm9pZCo+IHN0YXRpYyB2b2lk
IGFzc2VydElzU2NyYW1ibGVkKFUpIHsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSB2b2lk
Kj4gc3RhdGljIHZvaWQgYXNzZXJ0SXNOb3RTY3JhbWJsZWQoVSkgeyB9CisjZW5kaWYKKyAgICB2
b2lkIGFzc2VydElzU2NyYW1ibGVkKCkgY29uc3QgeyBhc3NlcnRJc1NjcmFtYmxlZChtX3NjcmFt
YmxlZEJpdHMpOyB9CisgICAgdm9pZCBhc3NlcnRJc05vdFNjcmFtYmxlZCgpIGNvbnN0IHsgYXNz
ZXJ0SXNOb3RTY3JhbWJsZWQobV9zY3JhbWJsZWRCaXRzKTsgfQorCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVSA9IFQ+CisgICAgVSBkZXNjcmFtYmxlZCgpIGNvbnN0IHsgcmV0dXJuIGRlc2NyYW1i
bGU8VT4obV9zY3JhbWJsZWRCaXRzKTsgfQorCisgICAgQUxXQVlTX0lOTElORSBUIG9wZXJhdG9y
LT4oKSBjb25zdCB7IHJldHVybiBkZXNjcmFtYmxlPFQ+KG1fc2NyYW1ibGVkQml0cyk7IH0KKwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBTY3JhbWJsZWRQdHJCaXRzPgorICAgIFUgYml0cygp
IGNvbnN0IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxVPihtX3NjcmFtYmxlZEJpdHMpOyB9CisKKyAg
ICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX3NjcmFtYmxlZEJpdHM7IH0KKyAg
ICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX3NjcmFtYmxlZEJp
dHM7IH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTY3JhbWJsZWRQdHImIGIpIGNvbnN0
CisgICAgeworICAgICAgICByZXR1cm4gbV9zY3JhbWJsZWRCaXRzID09IGIubV9zY3JhbWJsZWRC
aXRzOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFB0clR5cGUgPSB2b2lkKiwgdHlw
ZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3BvaW50ZXI8UHRyVHlwZT46
OnZhbHVlPjo6dHlwZT4KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUHRyVHlwZSBiKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGRlc2NyYW1ibGVkPFB0clR5cGU+KCkgPT0gYjsKKyAgICB9CisK
KyAgICBTY3JhbWJsZWRQdHImIG9wZXJhdG9yPShUIHB0cikKKyAgICB7CisgICAgICAgIG1fc2Ny
YW1ibGVkQml0cyA9IHB0ciA/IHNjcmFtYmxlKHB0cikgOiAwOworICAgICAgICByZXR1cm4gKnRo
aXM7CisgICAgfQorICAgIFNjcmFtYmxlZFB0ciYgb3BlcmF0b3I9KGNvbnN0IFNjcmFtYmxlZFB0
ciYpID0gZGVmYXVsdDsKKworcHJpdmF0ZToKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFU+CisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgU2NyYW1ibGVkUHRyQml0
cyBzY3JhbWJsZShVIHB0cikgeyByZXR1cm4gYml0d2lzZV9jYXN0PFNjcmFtYmxlZFB0ckJpdHM+
KHB0cikgXiBrZXk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgorICAgIEFMV0FZU19JTkxJ
TkUgc3RhdGljIFUgZGVzY3JhbWJsZShTY3JhbWJsZWRQdHJCaXRzIHNjcmFtYmxlZEJpdHMpIHsg
cmV0dXJuIGJpdHdpc2VfY2FzdDxVPihzY3JhbWJsZWRCaXRzIF4ga2V5KTsgfQorI2Vsc2UKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgorICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFNjcmFtYmxl
ZFB0ckJpdHMgc2NyYW1ibGUoVSBwdHIpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxTY3JhbWJsZWRQ
dHJCaXRzPihwdHIpOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KKyAgICBBTFdBWVNfSU5M
SU5FIHN0YXRpYyBVIGRlc2NyYW1ibGUoU2NyYW1ibGVkUHRyQml0cyBzY3JhbWJsZWRCaXRzKSB7
IHJldHVybiBiaXR3aXNlX2Nhc3Q8VT4oc2NyYW1ibGVkQml0cyk7IH0KKyNlbmRpZgorCisgICAg
U2NyYW1ibGVkUHRyQml0cyBtX3NjcmFtYmxlZEJpdHMgeyAwIH07Cit9OworCit2b2lkIGluaXRp
YWxpemVTY3JhbWJsZWRQdHIoKTsKK1dURl9FWFBPUlRfUFJJVkFURSB1aW50cHRyX3QgbWFrZVNj
cmFtYmxlZFB0cktleSgpOworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpTY3Jh
bWJsZWRQdHI7Cit1c2luZyBXVEY6OlNjcmFtYmxlZFB0ckJpdHM7Cit1c2luZyBXVEY6Om1ha2VT
Y3JhbWJsZWRQdHJLZXk7CisKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BvaXNvbmVkLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi93dGYvUG9pc29uZWQuaAkocmV2aXNpb24gMjI1NjMwKQorKysg
U291cmNlL1dURi93dGYvUG9pc29uZWQuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTAzICsyNywx
MTQgQEAKIAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAKLSNkZWZpbmUgRU5BQkxFX1ND
UkFNQkxFRF9QVFJfQVNTRVJUUyAwCisjZGVmaW5lIEVOQUJMRV9QT0lTT05fQVNTRVJUUyAwCiAK
IC8vIE5vdCBjdXJyZW50bHkgc3VwcG9ydGVkIGZvciAzMi1iaXQgb3IgT1MoV0lORE9XUykgYnVp
bGRzIChiZWNhdXNlIG9mIG1pc3NpbmcgbGxpbnQgc3VwcG9ydCkuCiAvLyBNYWtlIHN1cmUgaXQn
cyBkaXNhYmxlZC4KICNpZiBVU0UoSlNWQUxVRTMyXzY0KSB8fCBPUyhXSU5ET1dTKQotI3VuZGVm
IEVOQUJMRV9TQ1JBTUJMRURfUFRSX0FTU0VSVFMKLSNkZWZpbmUgRU5BQkxFX1NDUkFNQkxFRF9Q
VFJfQVNTRVJUUyAwCisjdW5kZWYgRU5BQkxFX1BPSVNPTl9BU1NFUlRTCisjZGVmaW5lIEVOQUJM
RV9QT0lTT05fQVNTRVJUUyAwCiAjZW5kaWYKIAogbmFtZXNwYWNlIFdURiB7CiAKLXVzaW5nIFNj
cmFtYmxlZFB0ckJpdHMgPSB1aW50cHRyX3Q7Cit1c2luZyBQb2lzb25lZEJpdHMgPSB1aW50cHRy
X3Q7CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHVpbnRwdHJfdCYga2V5LCB0eXBlbmFtZSA9IHN0
ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19wb2ludGVyPFQ+Ojp2YWx1ZT4+Ci1jbGFzcyBTY3JhbWJs
ZWRQdHIgewordGVtcGxhdGU8dHlwZW5hbWUgS2V5VHlwZSwgS2V5VHlwZSBrZXksIHR5cGVuYW1l
IFQsIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX3BvaW50ZXI8VD46OnZhbHVl
Pj4KK2NsYXNzIFBvaXNvbmVkSW1wbCB7CiBwdWJsaWM6Ci0gICAgU2NyYW1ibGVkUHRyKCkgeyB9
CisgICAgUG9pc29uZWRJbXBsKCkgeyB9CiAKLSAgICBleHBsaWNpdCBTY3JhbWJsZWRQdHIoVCBw
dHIpCi0gICAgICAgIDogbV9zY3JhbWJsZWRCaXRzKHNjcmFtYmxlKHB0cikpCisgICAgZXhwbGlj
aXQgUG9pc29uZWRJbXBsKFQgcHRyKQorICAgICAgICA6IG1fcG9pc29uZWRCaXRzKHBvaXNvbihw
dHIpKQogICAgIHsKLSAgICAgICAgQVNTRVJUKHB0ciAmJiBtX3NjcmFtYmxlZEJpdHMpOworICAg
ICAgICBBU1NFUlQocHRyICYmIG1fcG9pc29uZWRCaXRzKTsKICAgICB9CiAKLSAgICBTY3JhbWJs
ZWRQdHIoY29uc3QgU2NyYW1ibGVkUHRyJikgPSBkZWZhdWx0OworICAgIFBvaXNvbmVkSW1wbChj
b25zdCBQb2lzb25lZEltcGwmKSA9IGRlZmF1bHQ7CiAKLSAgICBleHBsaWNpdCBTY3JhbWJsZWRQ
dHIoU2NyYW1ibGVkUHRyQml0cyBzY3JhbWJsZWRCaXRzKQotICAgICAgICA6IG1fc2NyYW1ibGVk
Qml0cyhzY3JhbWJsZWRCaXRzKQorICAgIGV4cGxpY2l0IFBvaXNvbmVkSW1wbChQb2lzb25lZEJp
dHMgcG9pc29uZWRCaXRzKQorICAgICAgICA6IG1fcG9pc29uZWRCaXRzKHBvaXNvbmVkQml0cykK
ICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3NjcmFtYmxlZEJpdHMpOworICAgICAgICBBU1NFUlQo
bV9wb2lzb25lZEJpdHMpOwogICAgIH0KIAotI2lmIEVOQUJMRShTQ1JBTUJMRURfUFRSX0FTU0VS
VFMpCisjaWYgRU5BQkxFKFBPSVNPTl9BU1NFUlRTKQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUg
PSB2b2lkKj4KLSAgICBzdGF0aWMgYm9vbCBpc1NjcmFtYmxlZChVIHZhbHVlKSB7IHJldHVybiAh
dmFsdWUgfHwgKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih2YWx1ZSkgJiAweGZmZmYwMDAw
MDAwMDAwMDApOyB9CisgICAgc3RhdGljIGJvb2wgaXNQb2lzb25lZChVIHZhbHVlKSB7IHJldHVy
biAhdmFsdWUgfHwgKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih2YWx1ZSkgJiAweGZmZmYw
MDAwMDAwMDAwMDApOyB9CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IHZvaWQqPgotICAgIHN0
YXRpYyB2b2lkIGFzc2VydElzU2NyYW1ibGVkKFUgdmFsdWUpIHsgUkVMRUFTRV9BU1NFUlQoaXNT
Y3JhbWJsZWQodmFsdWUpKTsgfQorICAgIHN0YXRpYyB2b2lkIGFzc2VydElzUG9pc29uZWQoVSB2
YWx1ZSkgeyBSRUxFQVNFX0FTU0VSVChpc1BvaXNvbmVkKHZhbHVlKSk7IH0KICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBVID0gdm9pZCo+Ci0gICAgc3RhdGljIHZvaWQgYXNzZXJ0SXNOb3RTY3JhbWJs
ZWQoVSB2YWx1ZSkgeyBSRUxFQVNFX0FTU0VSVCghaXNTY3JhbWJsZWQodmFsdWUpKTsgfQorICAg
IHN0YXRpYyB2b2lkIGFzc2VydElzTm90UG9pc29uZWQoVSB2YWx1ZSkgeyBSRUxFQVNFX0FTU0VS
VCghaXNQb2lzb25lZCh2YWx1ZSkpOyB9CiAjZWxzZQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUg
PSB2b2lkKj4gc3RhdGljIHZvaWQgYXNzZXJ0SXNTY3JhbWJsZWQoVSkgeyB9Ci0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgVSA9IHZvaWQqPiBzdGF0aWMgdm9pZCBhc3NlcnRJc05vdFNjcmFtYmxlZChV
KSB7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gdm9pZCo+IHN0YXRpYyB2b2lkIGFzc2Vy
dElzUG9pc29uZWQoVSkgeyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IHZvaWQqPiBzdGF0
aWMgdm9pZCBhc3NlcnRJc05vdFBvaXNvbmVkKFUpIHsgfQogI2VuZGlmCi0gICAgdm9pZCBhc3Nl
cnRJc1NjcmFtYmxlZCgpIGNvbnN0IHsgYXNzZXJ0SXNTY3JhbWJsZWQobV9zY3JhbWJsZWRCaXRz
KTsgfQotICAgIHZvaWQgYXNzZXJ0SXNOb3RTY3JhbWJsZWQoKSBjb25zdCB7IGFzc2VydElzTm90
U2NyYW1ibGVkKG1fc2NyYW1ibGVkQml0cyk7IH0KKyAgICB2b2lkIGFzc2VydElzUG9pc29uZWQo
KSBjb25zdCB7IGFzc2VydElzUG9pc29uZWQobV9wb2lzb25lZEJpdHMpOyB9CisgICAgdm9pZCBh
c3NlcnRJc05vdFBvaXNvbmVkKCkgY29uc3QgeyBhc3NlcnRJc05vdFBvaXNvbmVkKG1fcG9pc29u
ZWRCaXRzKTsgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQ+Ci0gICAgVSBkZXNjcmFt
YmxlZCgpIGNvbnN0IHsgcmV0dXJuIGRlc2NyYW1ibGU8VT4obV9zY3JhbWJsZWRCaXRzKTsgfQor
ICAgIFUgdW5wb2lzb25lZCgpIGNvbnN0IHsgcmV0dXJuIHVucG9pc29uPFU+KG1fcG9pc29uZWRC
aXRzKTsgfQogCi0gICAgQUxXQVlTX0lOTElORSBUIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVy
biBkZXNjcmFtYmxlPFQ+KG1fc2NyYW1ibGVkQml0cyk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIFQg
b3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIHVucG9pc29uPFQ+KG1fcG9pc29uZWRCaXRzKTsg
fQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFNjcmFtYmxlZFB0ckJpdHM+Ci0gICAgVSBi
aXRzKCkgY29uc3QgeyByZXR1cm4gYml0d2lzZV9jYXN0PFU+KG1fc2NyYW1ibGVkQml0cyk7IH0K
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gUG9pc29uZWRCaXRzPgorICAgIFUgYml0cygpIGNv
bnN0IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxVPihtX3BvaXNvbmVkQml0cyk7IH0KIAotICAgIGJv
b2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fc2NyYW1ibGVkQml0czsgfQotICAgIGV4
cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1fc2NyYW1ibGVkQml0czsg
fQorICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fcG9pc29uZWRCaXRzOyB9
CisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9wb2lzb25l
ZEJpdHM7IH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTY3JhbWJsZWRQdHImIGIpIGNv
bnN0CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBvaXNvbmVkSW1wbCYgYikgY29uc3QKICAg
ICB7Ci0gICAgICAgIHJldHVybiBtX3NjcmFtYmxlZEJpdHMgPT0gYi5tX3NjcmFtYmxlZEJpdHM7
CisgICAgICAgIHJldHVybiBtX3BvaXNvbmVkQml0cyA9PSBiLm1fcG9pc29uZWRCaXRzOwogICAg
IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFB0clR5cGUgPSB2b2lkKiwgdHlwZW5hbWUgPSB0
eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3BvaW50ZXI8UHRyVHlwZT46OnZhbHVlPjo6
dHlwZT4KICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUHRyVHlwZSBiKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGRlc2NyYW1ibGVkPFB0clR5cGU+KCkgPT0gYjsKKyAgICAgICAgcmV0dXJuIHVu
cG9pc29uZWQ8UHRyVHlwZT4oKSA9PSBiOwogICAgIH0KIAotICAgIFNjcmFtYmxlZFB0ciYgb3Bl
cmF0b3I9KFQgcHRyKQorICAgIFBvaXNvbmVkSW1wbCYgb3BlcmF0b3I9KFQgcHRyKQogICAgIHsK
LSAgICAgICAgbV9zY3JhbWJsZWRCaXRzID0gcHRyID8gc2NyYW1ibGUocHRyKSA6IDA7CisgICAg
ICAgIG1fcG9pc29uZWRCaXRzID0gcG9pc29uKHB0cik7CiAgICAgICAgIHJldHVybiAqdGhpczsK
ICAgICB9Ci0gICAgU2NyYW1ibGVkUHRyJiBvcGVyYXRvcj0oY29uc3QgU2NyYW1ibGVkUHRyJikg
PSBkZWZhdWx0OworICAgIFBvaXNvbmVkSW1wbCYgb3BlcmF0b3I9KGNvbnN0IFBvaXNvbmVkSW1w
bCYpID0gZGVmYXVsdDsKIAogcHJpdmF0ZToKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFU+Ci0gICAgQUxXQVlTX0lOTElORSBzdGF0aWMgU2NyYW1ibGVkUHRyQml0
cyBzY3JhbWJsZShVIHB0cikgeyByZXR1cm4gYml0d2lzZV9jYXN0PFNjcmFtYmxlZFB0ckJpdHM+
KHB0cikgXiBrZXk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBQb2lzb25lZEJpdHMgcG9p
c29uKFUgcHRyKSB7IHJldHVybiBwdHIgPyBiaXR3aXNlX2Nhc3Q8UG9pc29uZWRCaXRzPihwdHIp
IF4ga2V5IDogMDsgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgQUxXQVlTX0lOTElO
RSBzdGF0aWMgVSBkZXNjcmFtYmxlKFNjcmFtYmxlZFB0ckJpdHMgc2NyYW1ibGVkQml0cykgeyBy
ZXR1cm4gYml0d2lzZV9jYXN0PFU+KHNjcmFtYmxlZEJpdHMgXiBrZXkpOyB9CisgICAgQUxXQVlT
X0lOTElORSBzdGF0aWMgVSB1bnBvaXNvbihQb2lzb25lZEJpdHMgcG9pc29uZWRCaXRzKSB7IHJl
dHVybiBwb2lzb25lZEJpdHMgPyBiaXR3aXNlX2Nhc3Q8VT4ocG9pc29uZWRCaXRzIF4ga2V5KSA6
IGJpdHdpc2VfY2FzdDxVPigwbGwpOyB9CiAjZWxzZQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+
Ci0gICAgQUxXQVlTX0lOTElORSBzdGF0aWMgU2NyYW1ibGVkUHRyQml0cyBzY3JhbWJsZShVIHB0
cikgeyByZXR1cm4gYml0d2lzZV9jYXN0PFNjcmFtYmxlZFB0ckJpdHM+KHB0cik7IH0KKyAgICBB
TFdBWVNfSU5MSU5FIHN0YXRpYyBQb2lzb25lZEJpdHMgcG9pc29uKFUgcHRyKSB7IHJldHVybiBi
aXR3aXNlX2Nhc3Q8UG9pc29uZWRCaXRzPihwdHIpOyB9CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VT4KLSAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBVIGRlc2NyYW1ibGUoU2NyYW1ibGVkUHRyQml0
cyBzY3JhbWJsZWRCaXRzKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8VT4oc2NyYW1ibGVkQml0cyk7
IH0KKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBVIHVucG9pc29uKFBvaXNvbmVkQml0cyBwb2lz
b25lZEJpdHMpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxVPihwb2lzb25lZEJpdHMpOyB9CiAjZW5k
aWYKIAotICAgIFNjcmFtYmxlZFB0ckJpdHMgbV9zY3JhbWJsZWRCaXRzIHsgMCB9OworICAgIFBv
aXNvbmVkQml0cyBtX3BvaXNvbmVkQml0cyB7IDAgfTsKIH07CiAKLXZvaWQgaW5pdGlhbGl6ZVNj
cmFtYmxlZFB0cigpOwotV1RGX0VYUE9SVF9QUklWQVRFIHVpbnRwdHJfdCBtYWtlU2NyYW1ibGVk
UHRyS2V5KCk7Cit0ZW1wbGF0ZTx1aW50cHRyX3QmIGtleSwgdHlwZW5hbWUgVD4KK3VzaW5nIFBv
aXNvbmVkID0gUG9pc29uZWRJbXBsPHVpbnRwdHJfdCYsIGtleSwgVD47CisKKyNpZiBVU0UoSlNW
QUxVRTY0KQordGVtcGxhdGU8dWludDMyX3Qga2V5LCB0eXBlbmFtZSBUPgordXNpbmcgSW50MzJQ
b2lzb25lZCA9IFBvaXNvbmVkSW1wbDx1aW50cHRyX3QsIHN0YXRpY19jYXN0PHVpbnRwdHJfdD4o
a2V5KSA8PCAzMiwgVD47CisjZWxzZQordGVtcGxhdGU8dWludDMyX3QsIHR5cGVuYW1lIFQ+Cit1
c2luZyBJbnQzMlBvaXNvbmVkID0gUG9pc29uZWRJbXBsPHVpbnRwdHJfdCwgMCwgVD47CisjZW5k
aWYKKworV1RGX0VYUE9SVF9QUklWQVRFIHVpbnRwdHJfdCBtYWtlUG9pc29uKCk7CiAKIH0gLy8g
bmFtZXNwYWNlIFdURgogCi11c2luZyBXVEY6OlNjcmFtYmxlZFB0cjsKLXVzaW5nIFdURjo6U2Ny
YW1ibGVkUHRyQml0czsKLXVzaW5nIFdURjo6bWFrZVNjcmFtYmxlZFB0cktleTsKK3VzaW5nIFdU
Rjo6SW50MzJQb2lzb25lZDsKK3VzaW5nIFdURjo6UG9pc29uZWQ7Cit1c2luZyBXVEY6OlBvaXNv
bmVkQml0czsKK3VzaW5nIFdURjo6bWFrZVBvaXNvbjsKIApJbmRleDogU291cmNlL1dURi93dGYv
U2NyYW1ibGVkUHRyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9TY3JhbWJsZWRQ
dHIuY3BwCShyZXZpc2lvbiAyMjU2MzApCisrKyBTb3VyY2UvV1RGL3d0Zi9TY3JhbWJsZWRQdHIu
Y3BwCShub25leGlzdGVudCkKQEAgLTEsNDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJT
Y3JhbWJsZWRQdHIuaCIKLQotI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51
bWJlci5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLQotdWludHB0cl90IG1ha2VTY3JhbWJsZWRQdHJL
ZXkoKQotewotICAgIHVpbnRwdHJfdCBrZXkgPSBjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJl
cigpOwotI2lmIFVTRShKU1ZBTFVFNjQpICYmICFPUyhXSU5ET1dTKQotICAgIGtleSA9IChrZXkg
PDwgMzIpIF4gKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21O
dW1iZXIoKSkgPDwgMyk7Ci0gICAgLy8gRW5zdXJlIHRoYXQgdGhlIHNjcmFtYmxlZCBiaXRzIChw
b2ludGVyIF4ga2V5KSBkbyBub3QgbWFrZSBhIHZhbGlkIHBvaW50ZXIgYW5kCi0gICAgLy8gY2Fu
bm90IGJlIDAuIFdlIGVuc3VyZSB0aGF0IGl0IGlzIHplcm8gc28gdGhhdCB0aGUgc2NyYW1ibGVk
IGJpdHMgY2FuIGFsc28gYmUKLSAgICAvLyB1c2VkIGZvciBhIG5vdG1hbCB6ZXJvIGNoZWNrIHdp
dGhvdXQgbmVlZGluZyB0byBkZXNjcmFtYmxlIGZpcnN0LgotICAgIGtleSB8PSAoc3RhdGljX2Nh
c3Q8dWludHB0cl90PigweDEpIDw8IDYzKTsKLSNlbHNlCi0gICAga2V5ID0gMDsgLy8gU2NyYW1i
bGluZyBpcyBub3Qgc3VwcG9ydGVkIG9uIDMyLWJpdCBvciBub24tZGFyd2luIHBsYXRmb3JtcyB5
ZXQuCi0jZW5kaWYKLSAgICByZXR1cm4ga2V5OwotfQotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQpJ
bmRleDogU291cmNlL1dURi93dGYvU2NyYW1ibGVkUHRyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvU2NyYW1ibGVkUHRyLmgJKHJldmlzaW9uIDIyNTYzMCkKKysrIFNvdXJjZS9XVEYv
d3RmL1NjcmFtYmxlZFB0ci5oCShub25leGlzdGVudCkKQEAgLTEsMTI5ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0KLSNkZWZpbmUgRU5BQkxFX1NDUkFNQkxFRF9Q
VFJfQVNTRVJUUyAwCi0KLS8vIE5vdCBjdXJyZW50bHkgc3VwcG9ydGVkIGZvciAzMi1iaXQgb3Ig
T1MoV0lORE9XUykgYnVpbGRzIChiZWNhdXNlIG9mIG1pc3NpbmcgbGxpbnQgc3VwcG9ydCkuCi0v
LyBNYWtlIHN1cmUgaXQncyBkaXNhYmxlZC4KLSNpZiBVU0UoSlNWQUxVRTMyXzY0KSB8fCBPUyhX
SU5ET1dTKQotI3VuZGVmIEVOQUJMRV9TQ1JBTUJMRURfUFRSX0FTU0VSVFMKLSNkZWZpbmUgRU5B
QkxFX1NDUkFNQkxFRF9QVFJfQVNTRVJUUyAwCi0jZW5kaWYKLQotbmFtZXNwYWNlIFdURiB7Ci0K
LXVzaW5nIFNjcmFtYmxlZFB0ckJpdHMgPSB1aW50cHRyX3Q7Ci0KLXRlbXBsYXRlPHR5cGVuYW1l
IFQsIHVpbnRwdHJfdCYga2V5LCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19w
b2ludGVyPFQ+Ojp2YWx1ZT4+Ci1jbGFzcyBTY3JhbWJsZWRQdHIgewotcHVibGljOgotICAgIFNj
cmFtYmxlZFB0cigpIHsgfQotCi0gICAgZXhwbGljaXQgU2NyYW1ibGVkUHRyKFQgcHRyKQotICAg
ICAgICA6IG1fc2NyYW1ibGVkQml0cyhzY3JhbWJsZShwdHIpKQotICAgIHsKLSAgICAgICAgQVNT
RVJUKHB0ciAmJiBtX3NjcmFtYmxlZEJpdHMpOwotICAgIH0KLQotICAgIFNjcmFtYmxlZFB0cihj
b25zdCBTY3JhbWJsZWRQdHImKSA9IGRlZmF1bHQ7Ci0KLSAgICBleHBsaWNpdCBTY3JhbWJsZWRQ
dHIoU2NyYW1ibGVkUHRyQml0cyBzY3JhbWJsZWRCaXRzKQotICAgICAgICA6IG1fc2NyYW1ibGVk
Qml0cyhzY3JhbWJsZWRCaXRzKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fc2NyYW1ibGVkQml0
cyk7Ci0gICAgfQotCi0jaWYgRU5BQkxFKFNDUkFNQkxFRF9QVFJfQVNTRVJUUykKLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBVID0gdm9pZCo+Ci0gICAgc3RhdGljIGJvb2wgaXNTY3JhbWJsZWQoVSB2
YWx1ZSkgeyByZXR1cm4gIXZhbHVlIHx8IChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odmFs
dWUpICYgMHhmZmZmMDAwMDAwMDAwMDAwKTsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSB2
b2lkKj4KLSAgICBzdGF0aWMgdm9pZCBhc3NlcnRJc1NjcmFtYmxlZChVIHZhbHVlKSB7IFJFTEVB
U0VfQVNTRVJUKGlzU2NyYW1ibGVkKHZhbHVlKSk7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBV
ID0gdm9pZCo+Ci0gICAgc3RhdGljIHZvaWQgYXNzZXJ0SXNOb3RTY3JhbWJsZWQoVSB2YWx1ZSkg
eyBSRUxFQVNFX0FTU0VSVCghaXNTY3JhbWJsZWQodmFsdWUpKTsgfQotI2Vsc2UKLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBVID0gdm9pZCo+IHN0YXRpYyB2b2lkIGFzc2VydElzU2NyYW1ibGVkKFUp
IHsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSB2b2lkKj4gc3RhdGljIHZvaWQgYXNzZXJ0
SXNOb3RTY3JhbWJsZWQoVSkgeyB9Ci0jZW5kaWYKLSAgICB2b2lkIGFzc2VydElzU2NyYW1ibGVk
KCkgY29uc3QgeyBhc3NlcnRJc1NjcmFtYmxlZChtX3NjcmFtYmxlZEJpdHMpOyB9Ci0gICAgdm9p
ZCBhc3NlcnRJc05vdFNjcmFtYmxlZCgpIGNvbnN0IHsgYXNzZXJ0SXNOb3RTY3JhbWJsZWQobV9z
Y3JhbWJsZWRCaXRzKTsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQ+Ci0gICAgVSBk
ZXNjcmFtYmxlZCgpIGNvbnN0IHsgcmV0dXJuIGRlc2NyYW1ibGU8VT4obV9zY3JhbWJsZWRCaXRz
KTsgfQotCi0gICAgQUxXQVlTX0lOTElORSBUIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBk
ZXNjcmFtYmxlPFQ+KG1fc2NyYW1ibGVkQml0cyk7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFUgPSBTY3JhbWJsZWRQdHJCaXRzPgotICAgIFUgYml0cygpIGNvbnN0IHsgcmV0dXJuIGJpdHdp
c2VfY2FzdDxVPihtX3NjcmFtYmxlZEJpdHMpOyB9Ci0KLSAgICBib29sIG9wZXJhdG9yISgpIGNv
bnN0IHsgcmV0dXJuICFtX3NjcmFtYmxlZEJpdHM7IH0KLSAgICBleHBsaWNpdCBvcGVyYXRvciBi
b29sKCkgY29uc3QgeyByZXR1cm4gISFtX3NjcmFtYmxlZEJpdHM7IH0KLQotICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBTY3JhbWJsZWRQdHImIGIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gbV9zY3JhbWJsZWRCaXRzID09IGIubV9zY3JhbWJsZWRCaXRzOwotICAgIH0KLQotICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFB0clR5cGUgPSB2b2lkKiwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6
OmVuYWJsZV9pZjxzdGQ6OmlzX3BvaW50ZXI8UHRyVHlwZT46OnZhbHVlPjo6dHlwZT4KLSAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgUHRyVHlwZSBiKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGRl
c2NyYW1ibGVkPFB0clR5cGU+KCkgPT0gYjsKLSAgICB9Ci0KLSAgICBTY3JhbWJsZWRQdHImIG9w
ZXJhdG9yPShUIHB0cikKLSAgICB7Ci0gICAgICAgIG1fc2NyYW1ibGVkQml0cyA9IHB0ciA/IHNj
cmFtYmxlKHB0cikgOiAwOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotICAgIFNjcmFt
YmxlZFB0ciYgb3BlcmF0b3I9KGNvbnN0IFNjcmFtYmxlZFB0ciYpID0gZGVmYXVsdDsKLQotcHJp
dmF0ZToKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAg
QUxXQVlTX0lOTElORSBzdGF0aWMgU2NyYW1ibGVkUHRyQml0cyBzY3JhbWJsZShVIHB0cikgeyBy
ZXR1cm4gYml0d2lzZV9jYXN0PFNjcmFtYmxlZFB0ckJpdHM+KHB0cikgXiBrZXk7IH0KLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFUgZGVzY3JhbWJs
ZShTY3JhbWJsZWRQdHJCaXRzIHNjcmFtYmxlZEJpdHMpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxV
PihzY3JhbWJsZWRCaXRzIF4ga2V5KTsgfQotI2Vsc2UKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBV
PgotICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFNjcmFtYmxlZFB0ckJpdHMgc2NyYW1ibGUoVSBw
dHIpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxTY3JhbWJsZWRQdHJCaXRzPihwdHIpOyB9Ci0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBVIGRlc2NyYW1i
bGUoU2NyYW1ibGVkUHRyQml0cyBzY3JhbWJsZWRCaXRzKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8
VT4oc2NyYW1ibGVkQml0cyk7IH0KLSNlbmRpZgotCi0gICAgU2NyYW1ibGVkUHRyQml0cyBtX3Nj
cmFtYmxlZEJpdHMgeyAwIH07Ci19OwotCi12b2lkIGluaXRpYWxpemVTY3JhbWJsZWRQdHIoKTsK
LVdURl9FWFBPUlRfUFJJVkFURSB1aW50cHRyX3QgbWFrZVNjcmFtYmxlZFB0cktleSgpOwotCi19
IC8vIG5hbWVzcGFjZSBXVEYKLQotdXNpbmcgV1RGOjpTY3JhbWJsZWRQdHI7Ci11c2luZyBXVEY6
OlNjcmFtYmxlZFB0ckJpdHM7Ci11c2luZyBXVEY6Om1ha2VTY3JhbWJsZWRQdHJLZXk7Ci0K
</data>
<flag name="review"
          id="347869"
          type_id="1"
          status="+"
          setter="jfbastien"
    />
          </attachment>
      

    </bug>

</bugzilla>